{"version":3,"file":"ui/thirdparty/npm.awesome-cordova-plugins.f39ef7ec9f136e840930.js","mappings":"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","sources":["webpack://apps/./node_modules/@awesome-cordova-plugins/core/decorators/common.js","webpack://apps/./node_modules/@awesome-cordova-plugins/core/awesome-cordova-plugin.js","webpack://apps/./node_modules/@awesome-cordova-plugins/core/util.js","webpack://apps/./node_modules/@awesome-cordova-plugins/core/decorators/cordova.js","webpack://apps/./node_modules/@awesome-cordova-plugins/core/decorators/cordova-property.js","webpack://apps/./node_modules/@awesome-cordova-plugins/core/bootstrap.js","webpack://apps/./node_modules/@awesome-cordova-plugins/core/index.js","webpack://apps/./node_modules/@awesome-cordova-plugins/diagnostic/index.js"],"sourcesContent":["import { fromEvent, Observable } from 'rxjs';\nexport var ERR_CORDOVA_NOT_AVAILABLE = { error: 'cordova_not_available' };\nexport var ERR_PLUGIN_NOT_INSTALLED = { error: 'plugin_not_installed' };\n/**\n * @param callback\n */\nexport function getPromise(callback) {\n var tryNativePromise = function () {\n if (Promise) {\n return new Promise(function (resolve, reject) {\n callback(resolve, reject);\n });\n }\n else {\n console.error('No Promise support or polyfill found. To enable Ionic Native support, please add the es6-promise polyfill before this script, or run with a library like Angular or on a recent browser.');\n }\n };\n if (typeof window !== 'undefined' && window.angular) {\n var doc = window.document;\n var injector = window.angular.element(doc.querySelector('[ng-app]') || doc.body).injector();\n if (injector) {\n var $q = injector.get('$q');\n return $q(function (resolve, reject) {\n callback(resolve, reject);\n });\n }\n console.warn(\"Angular 1 was detected but $q couldn't be retrieved. This is usually when the app is not bootstrapped on the html or body tag. Falling back to native promises which won't trigger an automatic digest when promises resolve.\");\n }\n return tryNativePromise();\n}\n/**\n * @param pluginObj\n * @param methodName\n * @param args\n * @param opts\n */\nexport function wrapPromise(pluginObj, methodName, args, opts) {\n if (opts === void 0) { opts = {}; }\n var pluginResult, rej;\n var p = getPromise(function (resolve, reject) {\n if (opts.destruct) {\n pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts, function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return resolve(args);\n }, function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return reject(args);\n });\n }\n else {\n pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts, resolve, reject);\n }\n rej = reject;\n });\n // Angular throws an error on unhandled rejection, but in this case we have already printed\n // a warning that Cordova is undefined or the plugin is uninstalled, so there is no reason\n // to error\n if (pluginResult && pluginResult.error) {\n p.catch(function () { });\n typeof rej === 'function' && rej(pluginResult.error);\n }\n return p;\n}\n/**\n * @param pluginObj\n * @param methodName\n * @param args\n * @param opts\n */\nfunction wrapOtherPromise(pluginObj, methodName, args, opts) {\n if (opts === void 0) { opts = {}; }\n return getPromise(function (resolve, reject) {\n var pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts);\n if (pluginResult) {\n if (pluginResult.error) {\n reject(pluginResult.error);\n }\n else if (pluginResult.then) {\n pluginResult.then(resolve).catch(reject);\n }\n }\n else {\n reject({ error: 'unexpected_error' });\n }\n });\n}\n/**\n * @param pluginObj\n * @param methodName\n * @param args\n * @param opts\n */\nfunction wrapObservable(pluginObj, methodName, args, opts) {\n if (opts === void 0) { opts = {}; }\n return new Observable(function (observer) {\n var pluginResult;\n if (opts.destruct) {\n pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts, function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return observer.next(args);\n }, function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return observer.error(args);\n });\n }\n else {\n pluginResult = callCordovaPlugin(pluginObj, methodName, args, opts, observer.next.bind(observer), observer.error.bind(observer));\n }\n if (pluginResult && pluginResult.error) {\n observer.error(pluginResult.error);\n observer.complete();\n }\n return function () {\n try {\n if (opts.clearFunction) {\n if (opts.clearWithArgs) {\n return callCordovaPlugin(pluginObj, opts.clearFunction, args, opts, observer.next.bind(observer), observer.error.bind(observer));\n }\n return callCordovaPlugin(pluginObj, opts.clearFunction, []);\n }\n }\n catch (e) {\n console.warn('Unable to clear the previous observable watch for', pluginObj.constructor.getPluginName(), methodName);\n console.warn(e);\n }\n };\n });\n}\n/**\n * Wrap the event with an observable\n *\n * @private\n * @param event event name\n * @param element The element to attach the event listener to\n * @returns {Observable}\n */\nfunction wrapEventObservable(event, element) {\n element =\n typeof window !== 'undefined' && element\n ? get(window, element)\n : element || (typeof window !== 'undefined' ? window : {});\n return fromEvent(element, event);\n}\n/**\n * @param plugin\n * @param methodName\n * @param pluginName\n */\nexport function checkAvailability(plugin, methodName, pluginName) {\n var pluginRef, pluginPackage;\n if (typeof plugin === 'string') {\n pluginRef = plugin;\n }\n else {\n pluginRef = plugin.constructor.getPluginRef();\n pluginName = plugin.constructor.getPluginName();\n pluginPackage = plugin.constructor.getPluginInstallName();\n }\n var pluginInstance = getPlugin(pluginRef);\n if (!pluginInstance || (!!methodName && typeof pluginInstance[methodName] === 'undefined')) {\n if (typeof window === 'undefined' || !window.cordova) {\n cordovaWarn(pluginName, methodName);\n return ERR_CORDOVA_NOT_AVAILABLE;\n }\n pluginWarn(pluginName, pluginPackage, methodName);\n return ERR_PLUGIN_NOT_INSTALLED;\n }\n return true;\n}\n/**\n * Checks if _objectInstance exists and has the method/property\n *\n * @param pluginObj\n * @param methodName\n * @private\n */\nexport function instanceAvailability(pluginObj, methodName) {\n return pluginObj._objectInstance && (!methodName || typeof pluginObj._objectInstance[methodName] !== 'undefined');\n}\n/**\n * @param args\n * @param opts\n * @param resolve\n * @param reject\n */\nexport function setIndex(args, opts, resolve, reject) {\n if (opts === void 0) { opts = {}; }\n // ignore resolve and reject in case sync\n if (opts.sync) {\n return args;\n }\n // If the plugin method expects myMethod(success, err, options)\n if (opts.callbackOrder === 'reverse') {\n // Get those arguments in the order [resolve, reject, ...restOfArgs]\n args.unshift(reject);\n args.unshift(resolve);\n }\n else if (opts.callbackStyle === 'node') {\n args.push(function (err, result) {\n if (err) {\n reject(err);\n }\n else {\n resolve(result);\n }\n });\n }\n else if (opts.callbackStyle === 'object' && opts.successName && opts.errorName) {\n var obj = {};\n obj[opts.successName] = resolve;\n obj[opts.errorName] = reject;\n args.push(obj);\n }\n else if (typeof opts.successIndex !== 'undefined' || typeof opts.errorIndex !== 'undefined') {\n var setSuccessIndex = function () {\n // If we've specified a success/error index\n if (opts.successIndex > args.length) {\n args[opts.successIndex] = resolve;\n }\n else {\n args.splice(opts.successIndex, 0, resolve);\n }\n };\n var setErrorIndex = function () {\n // We don't want that the reject cb gets spliced into the position of an optional argument that has not been\n // defined and thus causing non expected behavior.\n if (opts.errorIndex > args.length) {\n args[opts.errorIndex] = reject; // insert the reject fn at the correct specific index\n }\n else {\n args.splice(opts.errorIndex, 0, reject); // otherwise just splice it into the array\n }\n };\n if (opts.successIndex > opts.errorIndex) {\n setErrorIndex();\n setSuccessIndex();\n }\n else {\n setSuccessIndex();\n setErrorIndex();\n }\n }\n else {\n // Otherwise, let's tack them on to the end of the argument list\n // which is 90% of cases\n args.push(resolve);\n args.push(reject);\n }\n return args;\n}\n/**\n * @param pluginObj\n * @param methodName\n * @param args\n * @param opts\n * @param resolve\n * @param reject\n */\nexport function callCordovaPlugin(pluginObj, methodName, args, opts, resolve, reject) {\n if (opts === void 0) { opts = {}; }\n // Try to figure out where the success/error callbacks need to be bound\n // to our promise resolve/reject handlers.\n args = setIndex(args, opts, resolve, reject);\n var availabilityCheck = checkAvailability(pluginObj, methodName);\n if (availabilityCheck === true) {\n var pluginInstance = getPlugin(pluginObj.constructor.getPluginRef());\n // eslint-disable-next-line prefer-spread\n return pluginInstance[methodName].apply(pluginInstance, args);\n }\n else {\n return availabilityCheck;\n }\n}\n/**\n * @param pluginObj\n * @param methodName\n * @param args\n * @param opts\n * @param resolve\n * @param reject\n */\nexport function callInstance(pluginObj, methodName, args, opts, resolve, reject) {\n if (opts === void 0) { opts = {}; }\n args = setIndex(args, opts, resolve, reject);\n if (instanceAvailability(pluginObj, methodName)) {\n // eslint-disable-next-line prefer-spread\n return pluginObj._objectInstance[methodName].apply(pluginObj._objectInstance, args);\n }\n}\n/**\n * @param pluginRef\n */\nexport function getPlugin(pluginRef) {\n if (typeof window !== 'undefined') {\n return get(window, pluginRef);\n }\n return null;\n}\n/**\n * @param element\n * @param path\n */\nexport function get(element, path) {\n var paths = path.split('.');\n var obj = element;\n for (var i = 0; i < paths.length; i++) {\n if (!obj) {\n return null;\n }\n obj = obj[paths[i]];\n }\n return obj;\n}\n/**\n * @param pluginName\n * @param plugin\n * @param method\n */\nexport function pluginWarn(pluginName, plugin, method) {\n if (method) {\n console.warn('Native: tried calling ' + pluginName + '.' + method + ', but the ' + pluginName + ' plugin is not installed.');\n }\n else {\n console.warn(\"Native: tried accessing the \" + pluginName + \" plugin but it's not installed.\");\n }\n if (plugin) {\n console.warn(\"Install the \" + pluginName + \" plugin: 'ionic cordova plugin add \" + plugin + \"'\");\n }\n}\n/**\n * @private\n * @param pluginName\n * @param method\n */\nexport function cordovaWarn(pluginName, method) {\n if (typeof process === 'undefined') {\n if (method) {\n console.warn('Native: tried calling ' +\n pluginName +\n '.' +\n method +\n ', but Cordova is not available. Make sure to include cordova.js or run in a device/simulator');\n }\n else {\n console.warn('Native: tried accessing the ' +\n pluginName +\n ' plugin but Cordova is not available. Make sure to include cordova.js or run in a device/simulator');\n }\n }\n}\n/**\n * @param pluginObj\n * @param methodName\n * @param opts\n * @private\n */\nexport var wrap = function (pluginObj, methodName, opts) {\n if (opts === void 0) { opts = {}; }\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (opts.sync) {\n // Sync doesn't wrap the plugin with a promise or observable, it returns the result as-is\n return callCordovaPlugin(pluginObj, methodName, args, opts);\n }\n else if (opts.observable) {\n return wrapObservable(pluginObj, methodName, args, opts);\n }\n else if (opts.eventObservable && opts.event) {\n return wrapEventObservable(opts.event, opts.element);\n }\n else if (opts.otherPromise) {\n return wrapOtherPromise(pluginObj, methodName, args, opts);\n }\n else {\n return wrapPromise(pluginObj, methodName, args, opts);\n }\n };\n};\n/**\n * @param pluginObj\n * @param methodName\n * @param opts\n * @private\n */\nexport function wrapInstance(pluginObj, methodName, opts) {\n if (opts === void 0) { opts = {}; }\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n if (opts.sync) {\n return callInstance(pluginObj, methodName, args, opts);\n }\n else if (opts.observable) {\n return new Observable(function (observer) {\n var pluginResult;\n if (opts.destruct) {\n pluginResult = callInstance(pluginObj, methodName, args, opts, function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return observer.next(args);\n }, function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return observer.error(args);\n });\n }\n else {\n pluginResult = callInstance(pluginObj, methodName, args, opts, observer.next.bind(observer), observer.error.bind(observer));\n }\n if (pluginResult && pluginResult.error) {\n observer.error(pluginResult.error);\n }\n return function () {\n try {\n if (opts.clearWithArgs) {\n return callInstance(pluginObj, opts.clearFunction, args, opts, observer.next.bind(observer), observer.error.bind(observer));\n }\n return callInstance(pluginObj, opts.clearFunction, []);\n }\n catch (e) {\n console.warn('Unable to clear the previous observable watch for', pluginObj.constructor.getPluginName(), methodName);\n console.warn(e);\n }\n };\n });\n }\n else if (opts.otherPromise) {\n return getPromise(function (resolve, reject) {\n var result;\n if (opts.destruct) {\n result = callInstance(pluginObj, methodName, args, opts, function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return resolve(args);\n }, function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return reject(args);\n });\n }\n else {\n result = callInstance(pluginObj, methodName, args, opts, resolve, reject);\n }\n if (result && result.then) {\n result.then(resolve, reject);\n }\n else {\n reject();\n }\n });\n }\n else {\n var pluginResult_1, rej_1;\n var p = getPromise(function (resolve, reject) {\n if (opts.destruct) {\n pluginResult_1 = callInstance(pluginObj, methodName, args, opts, function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return resolve(args);\n }, function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return reject(args);\n });\n }\n else {\n pluginResult_1 = callInstance(pluginObj, methodName, args, opts, resolve, reject);\n }\n rej_1 = reject;\n });\n // Angular throws an error on unhandled rejection, but in this case we have already printed\n // a warning that Cordova is undefined or the plugin is uninstalled, so there is no reason\n // to error\n if (pluginResult_1 && pluginResult_1.error) {\n p.catch(function () { });\n typeof rej_1 === 'function' && rej_1(pluginResult_1.error);\n }\n return p;\n }\n };\n}\n//# sourceMappingURL=common.js.map","import { checkAvailability } from './decorators/common';\nimport { get } from './util';\nvar AwesomeCordovaNativePlugin = /** @class */ (function () {\n function AwesomeCordovaNativePlugin() {\n }\n /**\n * Returns a boolean that indicates whether the plugin is installed\n *\n * @returns {boolean}\n */\n AwesomeCordovaNativePlugin.installed = function () {\n var isAvailable = checkAvailability(this.pluginRef) === true;\n return isAvailable;\n };\n /**\n * Returns the original plugin object\n */\n AwesomeCordovaNativePlugin.getPlugin = function () {\n if (typeof window !== 'undefined') {\n return get(window, this.pluginRef);\n }\n return null;\n };\n /**\n * Returns the plugin's name\n */\n AwesomeCordovaNativePlugin.getPluginName = function () {\n var pluginName = this.pluginName;\n return pluginName;\n };\n /**\n * Returns the plugin's reference\n */\n AwesomeCordovaNativePlugin.getPluginRef = function () {\n var pluginRef = this.pluginRef;\n return pluginRef;\n };\n /**\n * Returns the plugin's install name\n */\n AwesomeCordovaNativePlugin.getPluginInstallName = function () {\n var plugin = this.plugin;\n return plugin;\n };\n /**\n * Returns the plugin's supported platforms\n */\n AwesomeCordovaNativePlugin.getSupportedPlatforms = function () {\n var platform = this.platforms;\n return platform;\n };\n AwesomeCordovaNativePlugin.pluginName = '';\n AwesomeCordovaNativePlugin.pluginRef = '';\n AwesomeCordovaNativePlugin.plugin = '';\n AwesomeCordovaNativePlugin.repo = '';\n AwesomeCordovaNativePlugin.platforms = [];\n AwesomeCordovaNativePlugin.install = '';\n return AwesomeCordovaNativePlugin;\n}());\nexport { AwesomeCordovaNativePlugin };\n//# sourceMappingURL=awesome-cordova-plugin.js.map","/**\n * @param element\n * @param path\n * @private\n */\nexport function get(element, path) {\n var paths = path.split('.');\n var obj = element;\n for (var i = 0; i < paths.length; i++) {\n if (!obj) {\n return null;\n }\n obj = obj[paths[i]];\n }\n return obj;\n}\n/**\n * @param callback\n * @private\n */\nexport function getPromise(callback) {\n if (callback === void 0) { callback = function () { }; }\n var tryNativePromise = function () {\n if (typeof Promise === 'function' || (typeof window !== 'undefined' && window.Promise)) {\n return new Promise(function (resolve, reject) {\n callback(resolve, reject);\n });\n }\n else {\n console.error('No Promise support or polyfill found. To enable Ionic Native support, please add the es6-promise polyfill before this script, or run with a library like Angular or on a recent browser.');\n }\n };\n return tryNativePromise();\n}\n//# sourceMappingURL=util.js.map","import { wrap } from './common';\n/**\n * @param pluginObj\n * @param methodName\n * @param config\n * @param args\n */\nexport function cordova(pluginObj, methodName, config, args) {\n return wrap(pluginObj, methodName, config).apply(this, args);\n}\n//# sourceMappingURL=cordova.js.map","import { checkAvailability, getPlugin } from './common';\n/**\n * @param pluginObj\n * @param key\n */\nexport function cordovaPropertyGet(pluginObj, key) {\n if (checkAvailability(pluginObj, key) === true) {\n return getPlugin(pluginObj.constructor.getPluginRef())[key];\n }\n return null;\n}\n/**\n * @param pluginObj\n * @param key\n * @param value\n */\nexport function cordovaPropertySet(pluginObj, key, value) {\n if (checkAvailability(pluginObj, key) === true) {\n getPlugin(pluginObj.constructor.getPluginRef())[key] = value;\n }\n}\n//# sourceMappingURL=cordova-property.js.map","/**\n *\n */\nexport function checkReady() {\n if (typeof process === 'undefined') {\n var win_1 = typeof window !== 'undefined' ? window : {};\n var DEVICE_READY_TIMEOUT_1 = 5000;\n // To help developers using cordova, we listen for the device ready event and\n // log an error if it didn't fire in a reasonable amount of time. Generally,\n // when this happens, developers should remove and reinstall plugins, since\n // an inconsistent plugin is often the culprit.\n var before_1 = Date.now();\n var didFireReady_1 = false;\n win_1.document.addEventListener('deviceready', function () {\n console.log(\"Ionic Native: deviceready event fired after \" + (Date.now() - before_1) + \" ms\");\n didFireReady_1 = true;\n });\n setTimeout(function () {\n if (!didFireReady_1 && win_1.cordova) {\n console.warn(\"Ionic Native: deviceready did not fire within \" + DEVICE_READY_TIMEOUT_1 + \"ms. This can happen when plugins are in an inconsistent state. Try removing plugins from plugins/ and reinstalling them.\");\n }\n }, DEVICE_READY_TIMEOUT_1);\n }\n}\n//# sourceMappingURL=bootstrap.js.map","import { checkReady } from './bootstrap';\nexport { AwesomeCordovaNativePlugin } from './awesome-cordova-plugin';\n// Decorators\nexport { checkAvailability, instanceAvailability, wrap, getPromise } from './decorators/common';\nexport * from './decorators/cordova';\nexport * from './decorators/cordova-function-override';\nexport * from './decorators/cordova-instance';\nexport * from './decorators/cordova-property';\nexport * from './decorators/instance-property';\nexport * from './decorators/interfaces';\ncheckReady();\n//# sourceMappingURL=index.js.map","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { AwesomeCordovaNativePlugin, cordova, cordovaPropertyGet, cordovaPropertySet } from '@awesome-cordova-plugins/core';\nvar DiagnosticOriginal = /** @class */ (function (_super) {\n __extends(DiagnosticOriginal, _super);\n function DiagnosticOriginal() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.permission = {\n READ_CALENDAR: 'READ_CALENDAR',\n WRITE_CALENDAR: 'WRITE_CALENDAR',\n CAMERA: 'CAMERA',\n READ_CONTACTS: 'READ_CONTACTS',\n WRITE_CONTACTS: 'WRITE_CONTACTS',\n GET_ACCOUNTS: 'GET_ACCOUNTS',\n ACCESS_FINE_LOCATION: 'ACCESS_FINE_LOCATION',\n ACCESS_COARSE_LOCATION: 'ACCESS_COARSE_LOCATION',\n RECORD_AUDIO: 'RECORD_AUDIO',\n READ_PHONE_STATE: 'READ_PHONE_STATE',\n CALL_PHONE: 'CALL_PHONE',\n ADD_VOICEMAIL: 'ADD_VOICEMAIL',\n USE_SIP: 'USE_SIP',\n PROCESS_OUTGOING_CALLS: 'PROCESS_OUTGOING_CALLS',\n READ_CALL_LOG: 'READ_CALL_LOG',\n WRITE_CALL_LOG: 'WRITE_CALL_LOG',\n SEND_SMS: 'SEND_SMS',\n RECEIVE_SMS: 'RECEIVE_SMS',\n READ_SMS: 'READ_SMS',\n RECEIVE_WAP_PUSH: 'RECEIVE_WAP_PUSH',\n RECEIVE_MMS: 'RECEIVE_MMS',\n WRITE_EXTERNAL_STORAGE: 'WRITE_EXTERNAL_STORAGE',\n READ_EXTERNAL_STORAGE: 'READ_EXTERNAL_STORAGE',\n BODY_SENSORS: 'BODY_SENSORS',\n BLUETOOTH_ADVERTISE: \"BLUETOOTH_ADVERTISE\",\n BLUETOOTH_SCAN: \"BLUETOOTH_SCAN\",\n BLUETOOTH_CONNECT: \"BLUETOOTH_CONNECT\",\n };\n _this.locationAuthorizationMode = {\n ALWAYS: 'always',\n WHEN_IN_USE: 'when_in_use',\n };\n /**\n * Location accuracy authorization\n */\n _this.locationAccuracyAuthorization = {\n FULL: 'full',\n REDUCED: 'reduced',\n };\n _this.permissionGroups = {\n CALENDAR: ['READ_CALENDAR', 'WRITE_CALENDAR'],\n CAMERA: ['CAMERA'],\n CONTACTS: ['READ_CONTACTS', 'WRITE_CONTACTS', 'GET_ACCOUNTS'],\n LOCATION: ['ACCESS_FINE_LOCATION', 'ACCESS_COARSE_LOCATION'],\n MICROPHONE: ['RECORD_AUDIO'],\n PHONE: [\n 'READ_PHONE_STATE',\n 'CALL_PHONE',\n 'ADD_VOICEMAIL',\n 'USE_SIP',\n 'PROCESS_OUTGOING_CALLS',\n 'READ_CALL_LOG',\n 'WRITE_CALL_LOG',\n ],\n SENSORS: ['BODY_SENSORS'],\n SMS: ['SEND_SMS', 'RECEIVE_SMS', 'READ_SMS', 'RECEIVE_WAP_PUSH', 'RECEIVE_MMS'],\n STORAGE: ['READ_EXTERNAL_STORAGE', 'WRITE_EXTERNAL_STORAGE'],\n NEARBY_DEVICES: [\"BLUETOOTH_ADVERTISE\", \"BLUETOOTH_SCAN\", \"BLUETOOTH_CONNECT\"],\n };\n _this.locationMode = {\n HIGH_ACCURACY: 'high_accuracy',\n DEVICE_ONLY: 'device_only',\n BATTERY_SAVING: 'battery_saving',\n LOCATION_OFF: 'location_off',\n };\n _this.bluetoothState = {\n UNKNOWN: 'unknown',\n RESETTING: 'resetting',\n UNSUPPORTED: 'unsupported',\n UNAUTHORIZED: 'unauthorized',\n POWERED_OFF: 'powered_off',\n POWERED_ON: 'powered_on',\n POWERING_OFF: 'powering_off',\n POWERING_ON: 'powering_on',\n };\n /**\n * Access to the photo library (iOS 14+)\n *\n * ADD_ONLY - can add to but not read from Photo Library\n * READ_WRITE - can both add to and read from Photo Library\n *\n */\n _this.photoLibraryAccessLevel = {\n ADD_ONLY: 'add_only',\n READ_WRITE: 'read_write',\n };\n return _this;\n }\n DiagnosticOriginal.prototype.isLocationAvailable = function () { return cordova(this, \"isLocationAvailable\", {}, arguments); };\n DiagnosticOriginal.prototype.isWifiAvailable = function () { return cordova(this, \"isWifiAvailable\", {}, arguments); };\n DiagnosticOriginal.prototype.isCameraAvailable = function (externalStorage) { return cordova(this, \"isCameraAvailable\", { \"callbackOrder\": \"reverse\" }, arguments); };\n DiagnosticOriginal.prototype.isBluetoothAvailable = function () { return cordova(this, \"isBluetoothAvailable\", {}, arguments); };\n DiagnosticOriginal.prototype.switchToLocationSettings = function () { return cordova(this, \"switchToLocationSettings\", { \"sync\": true, \"platforms\": [\"Android\", \"Windows 10\", \"iOS\"] }, arguments); };\n DiagnosticOriginal.prototype.switchToMobileDataSettings = function () { return cordova(this, \"switchToMobileDataSettings\", { \"sync\": true, \"platforms\": [\"Android\", \"Windows 10\"] }, arguments); };\n DiagnosticOriginal.prototype.switchToBluetoothSettings = function () { return cordova(this, \"switchToBluetoothSettings\", { \"sync\": true, \"platforms\": [\"Android\", \"Windows 10\"] }, arguments); };\n DiagnosticOriginal.prototype.switchToWifiSettings = function () { return cordova(this, \"switchToWifiSettings\", { \"sync\": true, \"platforms\": [\"Android\", \"Windows 10\"] }, arguments); };\n DiagnosticOriginal.prototype.isWifiEnabled = function () { return cordova(this, \"isWifiEnabled\", { \"platforms\": [\"Android\", \"Windows 10\"] }, arguments); };\n DiagnosticOriginal.prototype.setWifiState = function (state) { return cordova(this, \"setWifiState\", { \"callbackOrder\": \"reverse\", \"platforms\": [\"Android\", \"Windows 10\"] }, arguments); };\n DiagnosticOriginal.prototype.setBluetoothState = function (state) { return cordova(this, \"setBluetoothState\", { \"callbackOrder\": \"reverse\", \"platforms\": [\"Android\", \"Windows 10\"] }, arguments); };\n DiagnosticOriginal.prototype.isLocationEnabled = function () { return cordova(this, \"isLocationEnabled\", { \"platforms\": [\"Android\", \"iOS\"] }, arguments); };\n DiagnosticOriginal.prototype.isLocationAuthorized = function () { return cordova(this, \"isLocationAuthorized\", {}, arguments); };\n DiagnosticOriginal.prototype.getLocationAuthorizationStatus = function () { return cordova(this, \"getLocationAuthorizationStatus\", { \"platforms\": [\"Android\", \"iOS\"] }, arguments); };\n DiagnosticOriginal.prototype.requestLocationAuthorization = function (mode, accuracy) { return cordova(this, \"requestLocationAuthorization\", { \"platforms\": [\"Android\", \"iOS\"], \"callbackOrder\": \"reverse\" }, arguments); };\n DiagnosticOriginal.prototype.isCameraPresent = function () { return cordova(this, \"isCameraPresent\", { \"platforms\": [\"Android\", \"iOS\"] }, arguments); };\n DiagnosticOriginal.prototype.isCameraAuthorized = function (externalStorage) { return cordova(this, \"isCameraAuthorized\", { \"platforms\": [\"Android\", \"iOS\"], \"callbackOrder\": \"reverse\" }, arguments); };\n DiagnosticOriginal.prototype.getCameraAuthorizationStatus = function (externalStorage) { return cordova(this, \"getCameraAuthorizationStatus\", { \"platforms\": [\"Android\", \"iOS\"], \"callbackOrder\": \"reverse\" }, arguments); };\n DiagnosticOriginal.prototype.requestCameraAuthorization = function (externalStorage) { return cordova(this, \"requestCameraAuthorization\", { \"platforms\": [\"Android\", \"iOS\"], \"callbackOrder\": \"reverse\" }, arguments); };\n DiagnosticOriginal.prototype.isMicrophoneAuthorized = function () { return cordova(this, \"isMicrophoneAuthorized\", { \"platforms\": [\"Android\", \"iOS\"] }, arguments); };\n DiagnosticOriginal.prototype.getMicrophoneAuthorizationStatus = function () { return cordova(this, \"getMicrophoneAuthorizationStatus\", { \"platforms\": [\"Android\", \"iOS\"] }, arguments); };\n DiagnosticOriginal.prototype.requestMicrophoneAuthorization = function () { return cordova(this, \"requestMicrophoneAuthorization\", { \"platforms\": [\"Android\", \"iOS\"] }, arguments); };\n DiagnosticOriginal.prototype.isContactsAuthorized = function () { return cordova(this, \"isContactsAuthorized\", { \"platforms\": [\"Android\", \"iOS\"] }, arguments); };\n DiagnosticOriginal.prototype.getContactsAuthorizationStatus = function () { return cordova(this, \"getContactsAuthorizationStatus\", { \"platforms\": [\"Android\", \"iOS\"] }, arguments); };\n DiagnosticOriginal.prototype.requestContactsAuthorization = function () { return cordova(this, \"requestContactsAuthorization\", { \"platforms\": [\"Android\", \"iOS\"] }, arguments); };\n DiagnosticOriginal.prototype.isCalendarAuthorized = function () { return cordova(this, \"isCalendarAuthorized\", { \"platforms\": [\"Android\", \"iOS\"] }, arguments); };\n DiagnosticOriginal.prototype.getCalendarAuthorizationStatus = function () { return cordova(this, \"getCalendarAuthorizationStatus\", { \"platforms\": [\"Android\", \"iOS\"] }, arguments); };\n DiagnosticOriginal.prototype.requestCalendarAuthorization = function () { return cordova(this, \"requestCalendarAuthorization\", { \"platforms\": [\"Android\", \"iOS\"] }, arguments); };\n DiagnosticOriginal.prototype.switchToSettings = function () { return cordova(this, \"switchToSettings\", { \"platforms\": [\"Android\", \"iOS\"] }, arguments); };\n DiagnosticOriginal.prototype.getBluetoothState = function () { return cordova(this, \"getBluetoothState\", { \"platforms\": [\"Android\", \"iOS\"] }, arguments); };\n DiagnosticOriginal.prototype.registerBluetoothStateChangeHandler = function (handler) { return cordova(this, \"registerBluetoothStateChangeHandler\", { \"platforms\": [\"Android\", \"iOS\"], \"sync\": true }, arguments); };\n DiagnosticOriginal.prototype.registerLocationStateChangeHandler = function (handler) { return cordova(this, \"registerLocationStateChangeHandler\", { \"platforms\": [\"Android\", \"iOS\"], \"sync\": true }, arguments); };\n DiagnosticOriginal.prototype.isGpsLocationAvailable = function () { return cordova(this, \"isGpsLocationAvailable\", { \"platforms\": [\"Android\"] }, arguments); };\n DiagnosticOriginal.prototype.isGpsLocationEnabled = function () { return cordova(this, \"isGpsLocationEnabled\", { \"platforms\": [\"Android\"] }, arguments); };\n DiagnosticOriginal.prototype.isNetworkLocationAvailable = function () { return cordova(this, \"isNetworkLocationAvailable\", { \"platforms\": [\"Android\"] }, arguments); };\n DiagnosticOriginal.prototype.isNetworkLocationEnabled = function () { return cordova(this, \"isNetworkLocationEnabled\", { \"platforms\": [\"Android\"] }, arguments); };\n DiagnosticOriginal.prototype.getLocationMode = function () { return cordova(this, \"getLocationMode\", { \"platforms\": [\"Android\"] }, arguments); };\n DiagnosticOriginal.prototype.getPermissionAuthorizationStatus = function (permission) { return cordova(this, \"getPermissionAuthorizationStatus\", { \"platforms\": [\"Android\"], \"callbackOrder\": \"reverse\" }, arguments); };\n DiagnosticOriginal.prototype.getPermissionsAuthorizationStatus = function (permissions) { return cordova(this, \"getPermissionsAuthorizationStatus\", { \"platforms\": [\"Android\"], \"callbackOrder\": \"reverse\" }, arguments); };\n DiagnosticOriginal.prototype.requestRuntimePermission = function (permission) { return cordova(this, \"requestRuntimePermission\", { \"platforms\": [\"Android\"], \"callbackOrder\": \"reverse\" }, arguments); };\n DiagnosticOriginal.prototype.requestRuntimePermissions = function (permissions) { return cordova(this, \"requestRuntimePermissions\", { \"platforms\": [\"Android\"], \"callbackOrder\": \"reverse\" }, arguments); };\n DiagnosticOriginal.prototype.isRequestingPermission = function () { return cordova(this, \"isRequestingPermission\", { \"sync\": true }, arguments); };\n DiagnosticOriginal.prototype.registerPermissionRequestCompleteHandler = function (handler) { return cordova(this, \"registerPermissionRequestCompleteHandler\", { \"sync\": true }, arguments); };\n DiagnosticOriginal.prototype.isBluetoothEnabled = function () { return cordova(this, \"isBluetoothEnabled\", { \"platforms\": [\"Android\"] }, arguments); };\n DiagnosticOriginal.prototype.hasBluetoothSupport = function () { return cordova(this, \"hasBluetoothSupport\", { \"platforms\": [\"Android\"] }, arguments); };\n DiagnosticOriginal.prototype.hasBluetoothLESupport = function () { return cordova(this, \"hasBluetoothLESupport\", { \"platforms\": [\"Android\"] }, arguments); };\n DiagnosticOriginal.prototype.hasBluetoothLEPeripheralSupport = function () { return cordova(this, \"hasBluetoothLEPeripheralSupport\", { \"platforms\": [\"Android\"] }, arguments); };\n DiagnosticOriginal.prototype.getBluetoothAuthorizationStatus = function () { return cordova(this, \"getBluetoothAuthorizationStatus\", { \"platforms\": [\"Android\", \"iOS\"] }, arguments); };\n DiagnosticOriginal.prototype.getBluetoothAuthorizationStatuses = function () { return cordova(this, \"getBluetoothAuthorizationStatuses\", { \"platforms\": [\"Android\"] }, arguments); };\n DiagnosticOriginal.prototype.isExternalStorageAuthorized = function () { return cordova(this, \"isExternalStorageAuthorized\", { \"platforms\": [\"Android\"] }, arguments); };\n DiagnosticOriginal.prototype.getExternalStorageAuthorizationStatus = function () { return cordova(this, \"getExternalStorageAuthorizationStatus\", { \"platforms\": [\"Android\"] }, arguments); };\n DiagnosticOriginal.prototype.requestExternalStorageAuthorization = function () { return cordova(this, \"requestExternalStorageAuthorization\", { \"platforms\": [\"Android\"] }, arguments); };\n DiagnosticOriginal.prototype.getExternalSdCardDetails = function () { return cordova(this, \"getExternalSdCardDetails\", { \"platforms\": [\"Android\"] }, arguments); };\n DiagnosticOriginal.prototype.switchToWirelessSettings = function () { return cordova(this, \"switchToWirelessSettings\", { \"platforms\": [\"Android\"], \"sync\": true }, arguments); };\n DiagnosticOriginal.prototype.switchToNFCSettings = function () { return cordova(this, \"switchToNFCSettings\", { \"platforms\": [\"Android\"], \"sync\": true }, arguments); };\n DiagnosticOriginal.prototype.isNFCPresent = function () { return cordova(this, \"isNFCPresent\", { \"platforms\": [\"Android\"] }, arguments); };\n DiagnosticOriginal.prototype.isNFCEnabled = function () { return cordova(this, \"isNFCEnabled\", { \"platforms\": [\"Android\"] }, arguments); };\n DiagnosticOriginal.prototype.isNFCAvailable = function () { return cordova(this, \"isNFCAvailable\", { \"platforms\": [\"Android\"] }, arguments); };\n DiagnosticOriginal.prototype.registerNFCStateChangeHandler = function (handler) { return cordova(this, \"registerNFCStateChangeHandler\", { \"platforms\": [\"Android\"], \"sync\": true }, arguments); };\n DiagnosticOriginal.prototype.isDataRoamingEnabled = function () { return cordova(this, \"isDataRoamingEnabled\", { \"platforms\": [\"Android\"] }, arguments); };\n DiagnosticOriginal.prototype.isADBModeEnabled = function () { return cordova(this, \"isADBModeEnabled\", { \"platforms\": [\"Android\"] }, arguments); };\n DiagnosticOriginal.prototype.isDeviceRooted = function () { return cordova(this, \"isDeviceRooted\", { \"platforms\": [\"Android\"] }, arguments); };\n DiagnosticOriginal.prototype.isCameraRollAuthorized = function (accessLevel) { return cordova(this, \"isCameraRollAuthorized\", { \"platforms\": [\"iOS\"], \"callbackOrder\": \"reverse\" }, arguments); };\n DiagnosticOriginal.prototype.getCameraRollAuthorizationStatus = function (accessLevel) { return cordova(this, \"getCameraRollAuthorizationStatus\", { \"platforms\": [\"iOS\"], \"callbackOrder\": \"reverse\" }, arguments); };\n DiagnosticOriginal.prototype.requestCameraRollAuthorization = function (accessLevel) { return cordova(this, \"requestCameraRollAuthorization\", { \"platforms\": [\"iOS\"], \"callbackOrder\": \"reverse\" }, arguments); };\n DiagnosticOriginal.prototype.isRemoteNotificationsEnabled = function () { return cordova(this, \"isRemoteNotificationsEnabled\", { \"platforms\": [\"iOS\", \"Android\"] }, arguments); };\n DiagnosticOriginal.prototype.isRegisteredForRemoteNotifications = function () { return cordova(this, \"isRegisteredForRemoteNotifications\", { \"platforms\": [\"iOS\"] }, arguments); };\n DiagnosticOriginal.prototype.getRemoteNotificationsAuthorizationStatus = function () { return cordova(this, \"getRemoteNotificationsAuthorizationStatus\", { \"platforms\": [\"iOS\"] }, arguments); };\n DiagnosticOriginal.prototype.requestRemoteNotificationsAuthorization = function (types, omitRegistration) { return cordova(this, \"requestRemoteNotificationsAuthorization\", { \"platforms\": [\"iOS\"] }, arguments); };\n DiagnosticOriginal.prototype.getRemoteNotificationTypes = function () { return cordova(this, \"getRemoteNotificationTypes\", { \"platforms\": [\"iOS\"] }, arguments); };\n DiagnosticOriginal.prototype.isRemindersAuthorized = function () { return cordova(this, \"isRemindersAuthorized\", { \"platforms\": [\"iOS\"] }, arguments); };\n DiagnosticOriginal.prototype.getRemindersAuthorizationStatus = function () { return cordova(this, \"getRemindersAuthorizationStatus\", { \"platforms\": [\"iOS\"] }, arguments); };\n DiagnosticOriginal.prototype.requestRemindersAuthorization = function () { return cordova(this, \"requestRemindersAuthorization\", { \"platforms\": [\"iOS\"] }, arguments); };\n DiagnosticOriginal.prototype.isBackgroundRefreshAuthorized = function () { return cordova(this, \"isBackgroundRefreshAuthorized\", { \"platforms\": [\"iOS\"] }, arguments); };\n DiagnosticOriginal.prototype.getBackgroundRefreshStatus = function () { return cordova(this, \"getBackgroundRefreshStatus\", { \"platforms\": [\"iOS\"] }, arguments); };\n DiagnosticOriginal.prototype.requestBluetoothAuthorization = function () { return cordova(this, \"requestBluetoothAuthorization\", { \"platforms\": [\"iOS\"] }, arguments); };\n DiagnosticOriginal.prototype.isMotionAvailable = function () { return cordova(this, \"isMotionAvailable\", { \"platforms\": [\"iOS\"] }, arguments); };\n DiagnosticOriginal.prototype.isMotionRequestOutcomeAvailable = function () { return cordova(this, \"isMotionRequestOutcomeAvailable\", { \"platforms\": [\"iOS\"] }, arguments); };\n DiagnosticOriginal.prototype.requestMotionAuthorization = function () { return cordova(this, \"requestMotionAuthorization\", { \"platforms\": [\"iOS\"] }, arguments); };\n DiagnosticOriginal.prototype.getMotionAuthorizationStatus = function () { return cordova(this, \"getMotionAuthorizationStatus\", { \"platforms\": [\"iOS\"] }, arguments); };\n DiagnosticOriginal.prototype.getLocationAccuracyAuthorization = function () { return cordova(this, \"getLocationAccuracyAuthorization\", { \"platforms\": [\"iOS\", \"Android\"] }, arguments); };\n DiagnosticOriginal.prototype.requestTemporaryFullAccuracyAuthorization = function (purpose) { return cordova(this, \"requestTemporaryFullAccuracyAuthorization\", { \"platforms\": [\"iOS\"] }, arguments); };\n DiagnosticOriginal.prototype.registerLocationAccuracyAuthorizationChangeHandler = function (handler) { return cordova(this, \"registerLocationAccuracyAuthorizationChangeHandler\", { \"platforms\": [\"iOS\"], \"sync\": true }, arguments); };\n Object.defineProperty(DiagnosticOriginal.prototype, \"permissionStatus\", {\n get: function () { return cordovaPropertyGet(this, \"permissionStatus\"); },\n set: function (value) { cordovaPropertySet(this, \"permissionStatus\", value); },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DiagnosticOriginal.prototype, \"NFCState\", {\n get: function () { return cordovaPropertyGet(this, \"NFCState\"); },\n set: function (value) { cordovaPropertySet(this, \"NFCState\", value); },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DiagnosticOriginal.prototype, \"motionStatus\", {\n get: function () { return cordovaPropertyGet(this, \"motionStatus\"); },\n set: function (value) { cordovaPropertySet(this, \"motionStatus\", value); },\n enumerable: false,\n configurable: true\n });\n DiagnosticOriginal.pluginName = \"Diagnostic\";\n DiagnosticOriginal.plugin = \"cordova.plugins.diagnostic\";\n DiagnosticOriginal.pluginRef = \"cordova.plugins.diagnostic\";\n DiagnosticOriginal.repo = \"https://github.com/dpa99c/cordova-diagnostic-plugin\";\n DiagnosticOriginal.platforms = [\"Android\", \"iOS\", \"Windows\"];\n return DiagnosticOriginal;\n}(AwesomeCordovaNativePlugin));\nvar Diagnostic = new DiagnosticOriginal();\nexport { Diagnostic };\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvQGF3ZXNvbWUtY29yZG92YS1wbHVnaW5zL3BsdWdpbnMvZGlhZ25vc3RpYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFDQSxPQUFPLCtFQUFnRSxNQUFNLCtCQUErQixDQUFDOztJQXlDN0UsOEJBQTBCOzs7UUFDeEQsZ0JBQVUsR0FBRztZQUNYLGFBQWEsRUFBRSxlQUFlO1lBQzlCLGNBQWMsRUFBRSxnQkFBZ0I7WUFDaEMsTUFBTSxFQUFFLFFBQVE7WUFDaEIsYUFBYSxFQUFFLGVBQWU7WUFDOUIsY0FBYyxFQUFFLGdCQUFnQjtZQUNoQyxZQUFZLEVBQUUsY0FBYztZQUM1QixvQkFBb0IsRUFBRSxzQkFBc0I7WUFDNUMsc0JBQXNCLEVBQUUsd0JBQXdCO1lBQ2hELFlBQVksRUFBRSxjQUFjO1lBQzVCLGdCQUFnQixFQUFFLGtCQUFrQjtZQUNwQyxVQUFVLEVBQUUsWUFBWTtZQUN4QixhQUFhLEVBQUUsZUFBZTtZQUM5QixPQUFPLEVBQUUsU0FBUztZQUNsQixzQkFBc0IsRUFBRSx3QkFBd0I7WUFDaEQsYUFBYSxFQUFFLGVBQWU7WUFDOUIsY0FBYyxFQUFFLGdCQUFnQjtZQUNoQyxRQUFRLEVBQUUsVUFBVTtZQUNwQixXQUFXLEVBQUUsYUFBYTtZQUMxQixRQUFRLEVBQUUsVUFBVTtZQUNwQixnQkFBZ0IsRUFBRSxrQkFBa0I7WUFDcEMsV0FBVyxFQUFFLGFBQWE7WUFDMUIsc0JBQXNCLEVBQUUsd0JBQXdCO1lBQ2hELHFCQUFxQixFQUFFLHVCQUF1QjtZQUM5QyxZQUFZLEVBQUUsY0FBYztZQUM1QixtQkFBbUIsRUFBRSxxQkFBcUI7WUFDMUMsY0FBYyxFQUFFLGdCQUFnQjtZQUNoQyxpQkFBaUIsRUFBRSxtQkFBbUI7U0FDdkMsQ0FBQztRQWdCRiwrQkFBeUIsR0FBRztZQUMxQixNQUFNLEVBQUUsUUFBUTtZQUNo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QixvREFBK0I7SUFVL0Isb0RBQStCO0lBVy9CLHNEQUFpQztJQVVqQyxnREFBMkI7SUFVM0IsMERBQXFDO0lBVXJDLHdEQUFtQztJQWVuQyw2Q0FBd0I7SUFXeEIsNkNBQXdCO0lBU3hCLHdDQUFtQjtJQVFuQixpQ0FBWTtJQVdaLGlDQUFZO0lBV1osbUNBQWM7SUFlZCxrREFBNkIsYUFBQyxPQUFpQjtJQVEvQyx5Q0FBb0I7SUFVcEIscUNBQWdCO0lBVWhCLG1DQUFjO0lBbUJkLDJDQUFzQixhQUFDLFdBQW9CO0lBaUIzQyxxREFBZ0MsYUFBQyxXQUFvQjtJQW1CckQsbURBQThCLGFBQUMsV0FBb0I7SUFVbkQsaURBQTRCO0lBVTVCLHVEQUFrQztJQVdsQyw4REFBeUM7SUFZekMsNERBQXVDLGFBQUMsS0FBZ0IsRUFBRSxnQkFBMEI7SUFXcEYsK0NBQTBCO0lBVTFCLDBDQUFxQjtJQVVyQixvREFBK0I7SUFVL0Isa0RBQTZCO0lBVTdCLGtEQUE2QjtJQVU3QiwrQ0FBMEI7SUFZMUIsa0RBQTZCO0lBVTdCLHNDQUFpQjtJQVlqQixvREFBK0I7SUFZL0IsK0NBQTBCO0lBWTFCLGlEQUE0QjtJQVk1QixxREFBZ0M7SUFhaEMsOERBQXlDLGFBQUMsT0FBZTtJQVl6RCx1RUFBa0QsYUFBQyxPQUFpQjswQkFoZ0NwRSx3Q0FBZ0I7Ozs7OzswQkFrRWhCLGdDQUFROzs7Ozs7MEJBU1Isb0NBQVk7Ozs7Ozs7Ozs7O3FCQXJKZDtFQTBDZ0MsMEJBQTBCO1NBQTdDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb3Jkb3ZhLCBDb3Jkb3ZhUHJvcGVydHksIEF3ZXNvbWVDb3Jkb3ZhTmF0aXZlUGx1Z2luLCBQbHVnaW4gfSBmcm9tICdAYXdlc29tZS1jb3Jkb3ZhLXBsdWdpbnMvY29yZSc7XG5cbi8qKlxuICogQG5hbWUgRGlhZ25vc3RpY1xuICogQGRlc2NyaXB0aW9uXG4gKiBDaGVja3Mgd2hldGhlciBkZXZpY2UgaGFyZHdhcmUgZmVhdHVyZXMgYXJlIGVuYWJsZWQgb3IgYXZhaWxhYmxlIHRvIHRoZSBhcHAsIGUuZy4gY2FtZXJhLCBHUFMsIHdpZmlcbiAqIEB1c2FnZVxuICogYGBgdHlwZXNjcmlwdFxuICogaW1wb3J0IHsgRGlhZ25vc3RpYyB9IGZyb20gJ0Bhd2Vzb21lLWNvcmRvdmEtcGx1Z2lucy9kaWFnbm9zdGljL25neCc7XG4gKlxuICogY29uc3RydWN0b3IocHJpdmF0ZSBkaWFnbm9zdGljOiBEaWFnbm9zdGljKSB7IH1cbiAqXG4gKiAuLi5cbiAqXG4gKiBsZXQgc3VjY2Vzc0NhbGxiYWNrID0gKGlzQXZhaWxhYmxlKSA9PiB7IGNvbnNvbGUubG9nKCdJcyBhdmFpbGFibGU/ICcgKyBpc0F2YWlsYWJsZSk7IH1cbiAqIGxldCBlcnJvckNhbGxiYWNrID0gKGUpID0+IGNvbnNvbGUuZXJyb3IoZSk7XG4gKlxuICogdGhpcy5kaWFnbm9zdGljLmlzQ2FtZXJhQXZhaWxhYmxlKCkudGhlbihzdWNjZXNzQ2FsbGJhY2spLmNhdGNoKGVycm9yQ2FsbGJhY2spO1xuICpcbiAqIHRoaXMuZGlhZ25vc3RpYy5pc0JsdWV0b290aEF2YWlsYWJsZSgpLnRoZW4oc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrKTtcbiAqXG4gKlxuICogdGhpcy5kaWFnbm9zdGljLmdldEJsdWV0b290aFN0YXRlKClcbiAqICAgLnRoZW4oKHN0YXRlKSA9PiB7XG4gKiAgICAgaWYgKHN0YXRlID09IHRoaXMuZGlhZ25vc3RpYy5ibHVldG9vdGhTdGF0ZS5QT1dFUkVEX09OKXtcbiAqICAgICAgIC8vIGRvIHNvbWV0aGluZ1xuICogICAgIH0gZWxzZSB7XG4gKiAgICAgICAvLyBkbyBzb21ldGhpbmcgZWxzZVxuICogICAgIH1cbiAqICAgfSkuY2F0Y2goZSA9PiBjb25zb2xlLmVycm9yKGUpKTtcbiAqXG4gKiBgYGBcbiAqL1xuQFBsdWdpbih7XG4gIHBsdWdpbk5hbWU6ICdEaWFnbm9zdGljJyxcbiAgcGx1Z2luOiAnY29yZG92YS5wbHVnaW5zLmRpYWdub3N0aWMnLFxuICBwbHVnaW5SZWY6ICdjb3Jkb3ZhLnBsdWdpbnMuZGlhZ25vc3RpYycsXG4gIHJlcG86ICdodHRwczovL2dpdGh1Yi5jb20vZHBhOTljL2NvcmRvdmEtZGlhZ25vc3RpYy1wbHVnaW4nLFxuICBwbGF0Zm9ybXM6IFsnQW5kcm9pZCcsICdpT1MnLCAnV2luZG93cyddLFxufSlcbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBEaWFnbm9zdGljIGV4dGVuZHMgQXdlc29tZUNvcmRvdmFOYXRpdmVQbHVnaW4ge1xuICBwZXJtaXNzaW9uID0ge1xuICAgIFJFQURfQ0FMRU5EQVI6ICdSRUFEX0NBTEVOREFSJyxcbiAgICBXUklURV9DQUxFTkRBUjogJ1dSSVRFX0NBTEVOREFSJyxcbiAgICBDQU1FUkE6ICdDQU1FUkEnLFxuICAgIFJFQURfQ09OVEFDVFM6ICdSRUFEX0NPTlRBQ1RTJyxcbiAgICBXUklURV9DT05UQUNUUzogJ1dSSVRFX0NPTlRBQ1RTJyxcbiAgICBHRVRfQUNDT1VOVFM6ICdHRVRfQUNDT1VOVFMnLFxuICAgIEFDQ0VTU19GSU5FX0xPQ0FUSU9OOiAnQUNDRVNTX0ZJTkVfTE9DQVRJT04nLFxuICAgIEFDQ0VTU19DT0FSU0VfTE9DQVRJT046ICdBQ0NFU1NfQ09BUlNFX0xPQ0FUSU9OJyxcbiAgICBSRUNPUkRfQVVESU86ICdSRUNPUkRfQVVESU8nLFxuICAgIFJFQURfUEhPTkVfU1RBVEU6ICdSRUFEX1BIT05FX1NUQVRFJyxcbiAgICBDQUxMX1BIT05FOiAnQ0FMTF9QSE9ORScsXG4gICAgQUREX1ZPSUNFTUFJTDogJ0FERF9WT0lDRU1BSUwnLFxuICAgIFVTRV9TSVA6ICdVU0VfU0lQJyxcbiAgICBQUk9DRVNTX09VVEdPSU5HX0NBTExTOiAnUFJPQ0VTU19PVVRHT0lOR19DQUxMUycsXG4gICAgUkVBRF9DQUxMX0xPRzogJ1JFQURfQ0FMTF9MT0cnLFxuICAgIFdSSVRFX0NBTExfTE9HOiAnV1JJVEVfQ0FMTF9MT0cnLFxuICAgIFNFTkRfU01TOiAnU0VORF9TTVMnLFxuICAgIFJFQ0VJVkVfU01TOiAnUkVDRUlWRV9TTVMnLFxuICAgIFJFQURfU01TOiAnUkVBRF9TTVMnLFxuICAgIFJFQ0VJVkVfV0FQX1BVU0g6ICdSRUNFSVZFX1dBUF9QVVNIJyxcbiAgICBSRUNFSVZFX01NUzogJ1JFQ0VJVkVfTU1TJyxcbiAgICBXUklURV9FWFRFUk5BTF9TVE9SQUdFOiAnV1JJVEVfRVhURVJOQUxfU1RPUkFHRScsXG4gICAgUkVBRF9FWFRFUk5BTF9TVE9SQUdFOiAnUkVBRF9FWFRFUk5BTF9TVE9SQUdFJyxcbiAgICBCT0RZX1NFTlNPUlM6ICdCT0RZX1NFTlNPUlMnLFxuICAgIEJMVUVUT09USF9BRFZFUlRJU0U6IFwiQkxVRVRPT1RIX0FEVkVSVElTRVwiLFxuICAgIEJMVUVUT09USF9TQ0FOOiBcIkJMVUVUT09USF9TQ0FOXCIsXG4gICAgQkxVRVRPT1RIX0NPTk5FQ1Q6IFwiQkxVRVRPT1RIX0NPTk5FQ1RcIixcbiAgfTtcblxuICBAQ29yZG92YVByb3BlcnR5KClcbiAgcGVybWlzc2lvblN0YXR1czoge1xuICAgIEdSQU5URUQ6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBAZGVwcmVjYXRlZCBjb3Jkb3ZhLnBsdWdpbnMuZGlhZ25vc3RpY0A1LjAuMCB1c2VzIERFTklFRF9PTkNFIHRvIHVuaWZ5IERFTklFRCogc3RhdHVzZXMgYWNyb3NzIGlPUy9BbmRyb2lkXG4gICAgICovXG4gICAgREVOSUVEOiBzdHJpbmc7XG4gICAgREVOSUVEX09OQ0U6IHN0cmluZztcbiAgICBOT1RfUkVRVUVTVEVEOiBzdHJpbmc7XG4gICAgREVOSUVEX0FMV0FZUzogc3RyaW5nO1xuICAgIFJFU1RSSUNURUQ6IHN0cmluZztcbiAgICBHUkFOVEVEX1dIRU5fSU5fVVNFOiBzdHJpbmc7XG4gIH07XG5cbiAgbG9jYXRpb25BdXRob3JpemF0aW9uTW9kZSA9IHtcbiAgICBBTFdBWVM6ICdhbHdheXMnLFxuICAgIFdIRU5fSU5fVVNFOiAnd2hlbl9pbl91c2UnLFxuICB9O1xuXG4gIC8qKlxuICAgKiBMb2NhdGlvbiBhY2N1cmFjeSBhdXRob3JpemF0aW9uXG4gICAqL1xuICBsb2NhdGlvbkFjY3VyYWN5QXV0aG9yaXphdGlvbiA9IHtcbiAgICBGVUxMOiAnZnVsbCcsXG4gICAgUkVEVUNFRDogJ3JlZHVjZWQnLFxuICB9O1xuXG4gIHBlcm1pc3Npb25Hcm91cHMgPSB7XG4gICAgQ0FMRU5EQVI6IFsnUkVBRF9DQUxFTkRBUicsICdXUklURV9DQUxFTkRBUiddLFxuICAgIENBTUVSQTogWydDQU1FUkEnXSxcbiAgICBDT05UQUNUUzogWydSRUFEX0NPTlRBQ1RTJywgJ1dSSVRFX0NPTlRBQ1RTJywgJ0dFVF9BQ0NPVU5UUyddLFxuICAgIExPQ0FUSU9OOiBbJ0FDQ0VTU19GSU5FX0xPQ0FUSU9OJywgJ0FDQ0VTU19DT0FSU0VfTE9DQVRJT04nXSxcbiAgICBNSUNST1BIT05FOiBbJ1JFQ09SRF9BVURJTyddLFxuICAgIFBIT05FOiBbXG4gICAgICAnUkVBRF9QSE9ORV9TVEFURScsXG4gICAgICAnQ0FMTF9QSE9ORScsXG4gICAgICAnQUREX1ZPSUNFTUFJTCcsXG4gICAgICAnVVNFX1NJUCcsXG4gICAgICAnUFJPQ0VTU19PVVRHT0lOR19DQUxMUycsXG4gICAgICAnUkVBRF9DQUxMX0xPRycsXG4gICAgICAnV1JJVEVfQ0FMTF9MT0cnLFxuICAgIF0sXG4gICAgU0VOU09SUzogWydCT0RZX1NFTlNPUlMnXSxcbiAgICBTTVM6IFsnU0VORF9TTVMnLCAnUkVDRUlWRV9TTVMnLCAnUkVBRF9TTVMnLCAnUkVDRUlWRV9XQVBfUFVTSCcsICdSRUNFSVZFX01NUyddLFxuICAgIFNUT1JBR0U6IFsnUkVBRF9FWFRFUk5BTF9TVE9SQUdFJywgJ1dSSVRFX0VYVEVSTkFMX1NUT1JBR0UnXSxcbiAgICBORUFSQllfREVWSUNFUzogW1wiQkxVRVRPT1RIX0FEVkVSVElTRVwiLCBcIkJMVUVUT09USF9TQ0FOXCIsIFwiQkxVRVRPT1RIX0NPTk5FQ1RcIl0sXG4gIH07XG5cbiAgbG9jYXRpb25Nb2RlID0ge1xuICAgIEhJR0hfQUNDVVJBQ1k6ICdoaWdoX2FjY3VyYWN5JyxcbiAgICBERVZJQ0VfT05MWTogJ2RldmljZV9vbmx5JyxcbiAgICBCQVRURVJZX1NBVklORzogJ2JhdHRlcnlfc2F2aW5nJyxcbiAgICBMT0NBVElPTl9PRkY6ICdsb2NhdGlvbl9vZmYnLFxuICB9O1xuXG4gIGJsdWV0b290aFN0YXRlID0ge1xuICAgIFVOS05PV046ICd1bmtub3duJyxcbiAgICBSRVNFVFRJTkc6ICdyZXNldHRpbmcnLCAvLyBpT1NcbiAgICBVTlNVUFBPUlRFRDogJ3Vuc3VwcG9ydGVkJywgLy8gaU9TXG4gICAgVU5BVVRIT1JJWkVEOiAndW5hdXRob3JpemVkJywgLy8gaU9TXG4gICAgUE9XRVJFRF9PRkY6ICdwb3dlcmVkX29mZicsXG4gICAgUE9XRVJFRF9PTjogJ3Bvd2VyZWRfb24nLFxuICAgIFBPV0VSSU5HX09GRjogJ3Bvd2VyaW5nX29mZicsXG4gICAgUE9XRVJJTkdfT046ICdwb3dlcmluZ19vbicsXG4gIH07XG5cbiAgQENvcmRvdmFQcm9wZXJ0eSgpXG4gIE5GQ1N0YXRlOiB7XG4gICAgVU5LTk9XTjogc3RyaW5nO1xuICAgIFBPV0VSRURfT0ZGOiBzdHJpbmc7XG4gICAgUE9XRVJFRF9PTjogc3RyaW5nO1xuICAgIFBPV0VSSU5HX09OOiBzdHJpbmc7XG4gICAgUE9XRVJJTkdfT0ZGOiBzdHJpbmc7XG4gIH07XG5cbiAgQENvcmRvdmFQcm9wZXJ0eSgpXG4gIG1vdGlvblN0YXR1czoge1xuICAgIE5PVF9SRVFVRVNURUQ6IHN0cmluZztcbiAgICBHUkFOVEVEOiBzdHJpbmc7XG4gICAgREVOSUVEOiBzdHJpbmc7XG4gICAgUkVTVFJJQ1RFRDogc3RyaW5nO1xuICAgIE5PVF9BVkFJTEFCTEU6IHN0cmluZztcbiAgICBOT1RfREVURVJNSU5FRDogc3RyaW5nO1xuICAgIFVOS05PV046IHN0cmluZztcbiAgfTtcblxuICAvKipcbiAgICogQWNjZXNzIHRvIHRoZSBwaG90byBsaWJyYXJ5IChpT1MgMTQrKVxuICAgKlxuICAgKiBBRERfT05MWSAtIGNhbiBhZGQgdG8gYnV0IG5vdCByZWFkIGZyb20gUGhvdG8gTGlicmFyeVxuICAgKiBSRUFEX1dSSVRFIC0gY2FuIGJvdGggYWRkIHRvIGFuZCByZWFkIGZyb20gUGhvdG8gTGlicmFyeVxuICAgKlxuICAgKi9cbiAgcGhvdG9MaWJyYXJ5QWNjZXNzTGV2ZWwgPSB7XG4gICAgQUREX09OTFk6ICdhZGRfb25seScsXG4gICAgUkVBRF9XUklURTogJ3JlYWRfd3JpdGUnLFxuICB9O1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgYXBwIGlzIGFibGUgdG8gYWNjZXNzIGRldmljZSBsb2NhdGlvbi5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8YW55Pn1cbiAgICovXG4gIEBDb3Jkb3ZhKClcbiAgaXNMb2NhdGlvbkF2YWlsYWJsZSgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgV2lmaSBpcyBjb25uZWN0ZWQvZW5hYmxlZC4gT24gaU9TIHRoaXMgcmV0dXJucyB0cnVlIGlmIHRoZSBkZXZpY2UgaXMgY29ubmVjdGVkIHRvIGEgbmV0d29yayBieSBXaUZpLiBPbiBBbmRyb2lkIGFuZCBXaW5kb3dzIDEwIE1vYmlsZSB0aGlzIHJldHVybnMgdHJ1ZSBpZiB0aGUgV2lGaSBzZXR0aW5nIGlzIHNldCB0byBlbmFibGVkLlxuICAgKiBPbiBBbmRyb2lkIHRoaXMgcmVxdWlyZXMgcGVybWlzc2lvbi4gYDx1c2VzLXBlcm1pc3Npb24gYW5kcm9pZDpuYW1lPVwiYW5kcm9pZC5wZXJtaXNzaW9uLkFDQ0VTU19XSUZJX1NUQVRFXCIgLz5gXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59XG4gICAqL1xuICBAQ29yZG92YSgpXG4gIGlzV2lmaUF2YWlsYWJsZSgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGRldmljZSBoYXMgYSBjYW1lcmEuIE9uIEFuZHJvaWQgdGhpcyByZXR1cm5zIHRydWUgaWYgdGhlIGRldmljZSBoYXMgYSBjYW1lcmEuIE9uIGlPUyB0aGlzIHJldHVybnMgdHJ1ZSBpZiBib3RoIHRoZSBkZXZpY2UgaGFzIGEgY2FtZXJhIEFORCB0aGUgYXBwbGljYXRpb24gaXMgYXV0aG9yaXplZCB0byB1c2UgaXQuIE9uIFdpbmRvd3MgMTAgTW9iaWxlIHRoaXMgcmV0dXJucyB0cnVlIGlmIGJvdGggdGhlIGRldmljZSBoYXMgYSByZWFyLWZhY2luZyBjYW1lcmEgQU5EIHRoZVxuICAgKiBhcHBsaWNhdGlvbiBpcyBhdXRob3JpemVkIHRvIHVzZSBpdC5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBbZXh0ZXJuYWxTdG9yYWdlXSBBbmRyb2lkIG9ubHk6IElmIHRydWUsIGNoZWNrcyBwZXJtaXNzaW9uIGZvciBSRUFEX0VYVEVSTkFMX1NUT1JBR0UgaW4gYWRkaXRpb24gdG8gQ0FNRVJBIHJ1bi10aW1lIHBlcm1pc3Npb24uXG4gICAqICBjb3Jkb3ZhLXBsdWdpbi1jYW1lcmFAMi4yKyByZXF1aXJlcyBib3RoIG9mIHRoZXNlIHBlcm1pc3Npb25zLiBEZWZhdWx0cyB0byB0cnVlLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgQENvcmRvdmEoeyBjYWxsYmFja09yZGVyOiAncmV2ZXJzZScgfSlcbiAgaXNDYW1lcmFBdmFpbGFibGUoZXh0ZXJuYWxTdG9yYWdlPzogYm9vbGVhbik6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgZGV2aWNlIGhhcyBCbHVldG9vdGggY2FwYWJpbGl0aWVzIGFuZCBpZiBzbyB0aGF0IEJsdWV0b290aCBpcyBzd2l0Y2hlZCBvbiAoc2FtZSBvbiBBbmRyb2lkLCBpT1MgYW5kIFdpbmRvd3MgMTAgTW9iaWxlKVxuICAgKiBPbiBBbmRyb2lkIHRoaXMgcmVxdWlyZXMgcGVybWlzc2lvbiA8dXNlcy1wZXJtaXNzaW9uIGFuZHJvaWQ6bmFtZT1cImFuZHJvaWQucGVybWlzc2lvbi5CTFVFVE9PVEhcIiAvPlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBpc0JsdWV0b290aEF2YWlsYWJsZSgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNwbGF5cyB0aGUgZGV2aWNlIGxvY2F0aW9uIHNldHRpbmdzIHRvIGFsbG93IHVzZXIgdG8gZW5hYmxlIGxvY2F0aW9uIHNlcnZpY2VzL2NoYW5nZSBsb2NhdGlvbiBtb2RlLlxuICAgKi9cbiAgQENvcmRvdmEoeyBzeW5jOiB0cnVlLCBwbGF0Zm9ybXM6IFsnQW5kcm9pZCcsICdXaW5kb3dzIDEwJywgJ2lPUyddIH0pXG4gIHN3aXRjaFRvTG9jYXRpb25TZXR0aW5ncygpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIERpc3BsYXlzIG1vYmlsZSBzZXR0aW5ncyB0byBhbGxvdyB1c2VyIHRvIGVuYWJsZSBtb2JpbGUgZGF0YS5cbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSwgcGxhdGZvcm1zOiBbJ0FuZHJvaWQnLCAnV2luZG93cyAxMCddIH0pXG4gIHN3aXRjaFRvTW9iaWxlRGF0YVNldHRpbmdzKCk6IHZvaWQge31cblxuICAvKipcbiAgICogRGlzcGxheXMgQmx1ZXRvb3RoIHNldHRpbmdzIHRvIGFsbG93IHVzZXIgdG8gZW5hYmxlIEJsdWV0b290aC5cbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSwgcGxhdGZvcm1zOiBbJ0FuZHJvaWQnLCAnV2luZG93cyAxMCddIH0pXG4gIHN3aXRjaFRvQmx1ZXRvb3RoU2V0dGluZ3MoKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBEaXNwbGF5cyBXaUZpIHNldHRpbmdzIHRvIGFsbG93IHVzZXIgdG8gZW5hYmxlIFdpRmkuXG4gICAqL1xuICBAQ29yZG92YSh7IHN5bmM6IHRydWUsIHBsYXRmb3JtczogWydBbmRyb2lkJywgJ1dpbmRvd3MgMTAnXSB9KVxuICBzd2l0Y2hUb1dpZmlTZXR0aW5ncygpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgV2lGaSBzZXR0aW5nIGlzIHNldCB0byBlbmFibGVkLCBhbmQgaXMgdGhlIHNhbWUgYXMgYGlzV2lmaUF2YWlsYWJsZSgpYFxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn1cbiAgICovXG4gIEBDb3Jkb3ZhKHsgcGxhdGZvcm1zOiBbJ0FuZHJvaWQnLCAnV2luZG93cyAxMCddIH0pXG4gIGlzV2lmaUVuYWJsZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEVuYWJsZXMvZGlzYWJsZXMgV2lGaSBvbiB0aGUgZGV2aWNlLlxuICAgKiBSZXF1aXJlcyBgQUNDRVNTX1dJRklfU1RBVEVgIGFuZCBgQ0hBTkdFX1dJRklfU1RBVEVgIHBlcm1pc3Npb25zIG9uIEFuZHJvaWRcbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBzdGF0ZVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgQENvcmRvdmEoeyBjYWxsYmFja09yZGVyOiAncmV2ZXJzZScsIHBsYXRmb3JtczogWydBbmRyb2lkJywgJ1dpbmRvd3MgMTAnXSB9KVxuICBzZXRXaWZpU3RhdGUoc3RhdGU6IGJvb2xlYW4pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGVzL2Rpc2FibGVzIEJsdWV0b290aCBvbiB0aGUgZGV2aWNlLlxuICAgKiBSZXF1aXJlcyBgQkxVRVRPT1RIYCBhbmQgYEJMVUVUT09USF9BRE1JTmAgcGVybWlzc2lvbnMgb24gQW5kcm9pZFxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHN0YXRlXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59XG4gICAqL1xuICBAQ29yZG92YSh7IGNhbGxiYWNrT3JkZXI6ICdyZXZlcnNlJywgcGxhdGZvcm1zOiBbJ0FuZHJvaWQnLCAnV2luZG93cyAxMCddIH0pXG4gIHNldEJsdWV0b290aFN0YXRlKHN0YXRlOiBib29sZWFuKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBBTkRST0lEIEFORCBJT1MgT05MWVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGRldmljZSBzZXR0aW5nIGZvciBsb2NhdGlvbiBpcyBvbi4gT24gQW5kcm9pZCB0aGlzIHJldHVybnMgdHJ1ZSBpZiBMb2NhdGlvbiBNb2RlIGlzIHN3aXRjaGVkIG9uLiBPbiBpT1MgdGhpcyByZXR1cm5zIHRydWUgaWYgTG9jYXRpb24gU2VydmljZXMgaXMgc3dpdGNoZWQgb24uXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fVxuICAgKi9cbiAgQENvcmRvdmEoeyBwbGF0Zm9ybXM6IFsnQW5kcm9pZCcsICdpT1MnXSB9KVxuICBpc0xvY2F0aW9uRW5hYmxlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBhdXRob3JpemVkIHRvIHVzZSBsb2NhdGlvbi5cbiAgICogTm90ZSBmb3IgQW5kcm9pZDogdGhpcyBpcyBpbnRlbmRlZCBmb3IgQW5kcm9pZCA2IC8gQVBJIDIzIGFuZCBhYm92ZS4gQ2FsbGluZyBvbiBBbmRyb2lkIDUgLyBBUEkgMjIgYW5kIGJlbG93IHdpbGwgYWx3YXlzIHJldHVybiBHUkFOVEVEIHN0YXR1cyBhcyBwZXJtaXNzaW9ucyBhcmUgYWxyZWFkeSBncmFudGVkIGF0IGluc3RhbGxhdGlvbiB0aW1lLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgQENvcmRvdmEoKVxuICBpc0xvY2F0aW9uQXV0aG9yaXplZCgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBsb2NhdGlvbiBhdXRob3JpemF0aW9uIHN0YXR1cyBmb3IgdGhlIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgQENvcmRvdmEoeyBwbGF0Zm9ybXM6IFsnQW5kcm9pZCcsICdpT1MnXSB9KVxuICBnZXRMb2NhdGlvbkF1dGhvcml6YXRpb25TdGF0dXMoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbG9jYXRpb24gYXV0aG9yaXphdGlvbiBzdGF0dXMgZm9yIHRoZSBhcHBsaWNhdGlvbi5cbiAgICogTm90ZSBmb3IgQW5kcm9pZDogdGhpcyBpcyBpbnRlbmRlZCBmb3IgQW5kcm9pZCA2IC8gQVBJIDIzIGFuZCBhYm92ZS4gQ2FsbGluZyBvbiBBbmRyb2lkIDUgLyBBUEkgMjIgYW5kIGJlbG93IHdpbGwgYWx3YXlzIHJldHVybiBHUkFOVEVEIHN0YXR1cyBhcyBwZXJtaXNzaW9ucyBhcmUgYWxyZWFkeSBncmFudGVkIGF0IGluc3RhbGxhdGlvbiB0aW1lLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW21vZGVdIGxvY2F0aW9uIGF1dGhvcml6YXRpb24gbW9kZTogXCJhbHdheXNcIiBvciBcIndoZW5faW5fdXNlXCIuIElmIG5vdCBzcGVjaWZpZWQsIGRlZmF1bHRzIHRvIFwid2hlbl9pbl91c2VcIi4gKHRoaXMubG9jYXRpb25BdXRob3JpemF0aW9uTW9kZSlcbiAgICogQHBhcmFtIHtzdHJpbmd9IFthY2N1cmFjeV0gcmVxdWVzdGVkIGxvY2F0aW9uIGFjY3VyYWN5OiBcImZ1bGxcIiBvciBcInJlZHVjZWRcIi4gSWYgbm90IHNwZWNpZmllZCwgZGVmYXVsdHMgdG8gXCJmdWxsXCIuICh0aGlzLmxvY2F0aW9uQWNjdXJhY3lBdXRob3JpemF0aW9uKVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgQENvcmRvdmEoeyBwbGF0Zm9ybXM6IFsnQW5kcm9pZCcsICdpT1MnXSwgY2FsbGJhY2tPcmRlcjogJ3JldmVyc2UnIH0pXG4gIHJlcXVlc3RMb2NhdGlvbkF1dGhvcml6YXRpb24obW9kZT86IHN0cmluZywgYWNjdXJhY3k/OiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgY2FtZXJhIGhhcmR3YXJlIGlzIHByZXNlbnQgb24gZGV2aWNlLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgQENvcmRvdmEoeyBwbGF0Zm9ybXM6IFsnQW5kcm9pZCcsICdpT1MnXSB9KVxuICBpc0NhbWVyYVByZXNlbnQoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBhdXRob3JpemVkIHRvIHVzZSB0aGUgY2FtZXJhLlxuICAgKiBOb3RlIGZvciBBbmRyb2lkOiB0aGlzIGlzIGludGVuZGVkIGZvciBBbmRyb2lkIDYgLyBBUEkgMjMgYW5kIGFib3ZlLiBDYWxsaW5nIG9uIEFuZHJvaWQgNSAvIEFQSSAyMiBhbmQgYmVsb3cgd2lsbCBhbHdheXMgcmV0dXJuIFRSVUUgYXMgcGVybWlzc2lvbnMgYXJlIGFscmVhZHkgZ3JhbnRlZCBhdCBpbnN0YWxsYXRpb24gdGltZS5cbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSBbZXh0ZXJuYWxTdG9yYWdlXSBBbmRyb2lkIG9ubHk6IElmIHRydWUsIGNoZWNrcyBwZXJtaXNzaW9uIGZvciBSRUFEX0VYVEVSTkFMX1NUT1JBR0UgaW4gYWRkaXRpb24gdG8gQ0FNRVJBIHJ1bi10aW1lIHBlcm1pc3Npb24uXG4gICAqICBjb3Jkb3ZhLXBsdWdpbi1jYW1lcmFAMi4yKyByZXF1aXJlcyBib3RoIG9mIHRoZXNlIHBlcm1pc3Npb25zLiBEZWZhdWx0cyB0byB0cnVlLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgQENvcmRvdmEoeyBwbGF0Zm9ybXM6IFsnQW5kcm9pZCcsICdpT1MnXSwgY2FsbGJhY2tPcmRlcjogJ3JldmVyc2UnIH0pXG4gIGlzQ2FtZXJhQXV0aG9yaXplZChleHRlcm5hbFN0b3JhZ2U/OiBib29sZWFuKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY2FtZXJhIGF1dGhvcml6YXRpb24gc3RhdHVzIGZvciB0aGUgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gW2V4dGVybmFsU3RvcmFnZV0gQW5kcm9pZCBvbmx5OiBJZiB0cnVlLCBjaGVja3MgcGVybWlzc2lvbiBmb3IgUkVBRF9FWFRFUk5BTF9TVE9SQUdFIGluIGFkZGl0aW9uIHRvIENBTUVSQSBydW4tdGltZSBwZXJtaXNzaW9uLlxuICAgKiAgY29yZG92YS1wbHVnaW4tY2FtZXJhQDIuMisgcmVxdWlyZXMgYm90aCBvZiB0aGVzZSBwZXJtaXNzaW9ucy4gRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICogQHJldHVybnMge1Byb21pc2U8YW55Pn1cbiAgICovXG4gIEBDb3Jkb3ZhKHsgcGxhdGZvcm1zOiBbJ0FuZHJvaWQnLCAnaU9TJ10sIGNhbGxiYWNrT3JkZXI6ICdyZXZlcnNlJyB9KVxuICBnZXRDYW1lcmFBdXRob3JpemF0aW9uU3RhdHVzKGV4dGVybmFsU3RvcmFnZT86IGJvb2xlYW4pOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXF1ZXN0cyBjYW1lcmEgYXV0aG9yaXphdGlvbiBmb3IgdGhlIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IFtleHRlcm5hbFN0b3JhZ2VdIEFuZHJvaWQgb25seTogSWYgdHJ1ZSwgcmVxdWVzdHMgcGVybWlzc2lvbiBmb3IgUkVBRF9FWFRFUk5BTF9TVE9SQUdFIGluIGFkZGl0aW9uIHRvIENBTUVSQSBydW4tdGltZSBwZXJtaXNzaW9uLlxuICAgKiAgY29yZG92YS1wbHVnaW4tY2FtZXJhQDIuMisgcmVxdWlyZXMgYm90aCBvZiB0aGVzZSBwZXJtaXNzaW9ucy4gRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICogQHJldHVybnMge1Byb21pc2U8YW55Pn1cbiAgICovXG4gIEBDb3Jkb3ZhKHsgcGxhdGZvcm1zOiBbJ0FuZHJvaWQnLCAnaU9TJ10sIGNhbGxiYWNrT3JkZXI6ICdyZXZlcnNlJyB9KVxuICByZXF1ZXN0Q2FtZXJhQXV0aG9yaXphdGlvbihleHRlcm5hbFN0b3JhZ2U/OiBib29sZWFuKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBhdXRob3JpemVkIHRvIHVzZSB0aGUgbWljcm9waG9uZS5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59XG4gICAqL1xuICBAQ29yZG92YSh7IHBsYXRmb3JtczogWydBbmRyb2lkJywgJ2lPUyddIH0pXG4gIGlzTWljcm9waG9uZUF1dGhvcml6ZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG1pY3JvcGhvbmUgYXV0aG9yaXphdGlvbiBzdGF0dXMgZm9yIHRoZSBhcHBsaWNhdGlvbi5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8YW55Pn1cbiAgICovXG4gIEBDb3Jkb3ZhKHsgcGxhdGZvcm1zOiBbJ0FuZHJvaWQnLCAnaU9TJ10gfSlcbiAgZ2V0TWljcm9waG9uZUF1dGhvcml6YXRpb25TdGF0dXMoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogUmVxdWVzdHMgbWljcm9waG9uZSBhdXRob3JpemF0aW9uIGZvciB0aGUgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59XG4gICAqL1xuICBAQ29yZG92YSh7IHBsYXRmb3JtczogWydBbmRyb2lkJywgJ2lPUyddIH0pXG4gIHJlcXVlc3RNaWNyb3Bob25lQXV0aG9yaXphdGlvbigpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGFwcGxpY2F0aW9uIGlzIGF1dGhvcml6ZWQgdG8gdXNlIGNvbnRhY3RzIChhZGRyZXNzIGJvb2spLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn1cbiAgICovXG4gIEBDb3Jkb3ZhKHsgcGxhdGZvcm1zOiBbJ0FuZHJvaWQnLCAnaU9TJ10gfSlcbiAgaXNDb250YWN0c0F1dGhvcml6ZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGNvbnRhY3RzIGF1dGhvcml6YXRpb24gc3RhdHVzIGZvciB0aGUgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59XG4gICAqL1xuICBAQ29yZG92YSh7IHBsYXRmb3JtczogWydBbmRyb2lkJywgJ2lPUyddIH0pXG4gIGdldENvbnRhY3RzQXV0aG9yaXphdGlvblN0YXR1cygpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXF1ZXN0cyBjb250YWN0cyBhdXRob3JpemF0aW9uIGZvciB0aGUgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59XG4gICAqL1xuICBAQ29yZG92YSh7IHBsYXRmb3JtczogWydBbmRyb2lkJywgJ2lPUyddIH0pXG4gIHJlcXVlc3RDb250YWN0c0F1dGhvcml6YXRpb24oKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBhdXRob3JpemVkIHRvIHVzZSB0aGUgY2FsZW5kYXIuXG4gICAqXG4gICAqIE5vdGVzIGZvciBBbmRyb2lkOlxuICAgKiAgIC0gVGhpcyBpcyBpbnRlbmRlZCBmb3IgQW5kcm9pZCA2IC8gQVBJIDIzIGFuZCBhYm92ZS4gQ2FsbGluZyBvbiBBbmRyb2lkIDUgLyBBUEkgMjIgYW5kIGJlbG93IHdpbGwgYWx3YXlzIHJldHVybiBUUlVFIGFzIHBlcm1pc3Npb25zIGFyZSBhbHJlYWR5IGdyYW50ZWQgYXQgaW5zdGFsbGF0aW9uIHRpbWUuXG4gICAqXG4gICAqIE5vdGVzIGZvciBpT1M6XG4gICAqICAgLSBUaGlzIHJlbGF0ZXMgdG8gQ2FsZW5kYXIgRXZlbnRzIChub3QgQ2FsZW5kYXIgUmVtaW5kZXJzKVxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn1cbiAgICovXG4gIEBDb3Jkb3ZhKHsgcGxhdGZvcm1zOiBbJ0FuZHJvaWQnLCAnaU9TJ10gfSlcbiAgaXNDYWxlbmRhckF1dGhvcml6ZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGNhbGVuZGFyIGF1dGhvcml6YXRpb24gc3RhdHVzIGZvciB0aGUgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIE5vdGVzIGZvciBBbmRyb2lkOlxuICAgKiAgIC0gVGhpcyBpcyBpbnRlbmRlZCBmb3IgQW5kcm9pZCA2IC8gQVBJIDIzIGFuZCBhYm92ZS4gQ2FsbGluZyBvbiBBbmRyb2lkIDUgLyBBUEkgMjIgYW5kIGJlbG93IHdpbGwgYWx3YXlzIHJldHVybiBgR1JBTlRFRGAgc3RhdHVzIGFzIHBlcm1pc3Npb25zIGFyZSBhbHJlYWR5IGdyYW50ZWQgYXQgaW5zdGFsbGF0aW9uIHRpbWUuXG4gICAqXG4gICAqIE5vdGVzIGZvciBpT1M6XG4gICAqICAgLSBUaGlzIHJlbGF0ZXMgdG8gQ2FsZW5kYXIgRXZlbnRzIChub3QgQ2FsZW5kYXIgUmVtaW5kZXJzKVxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgQENvcmRvdmEoeyBwbGF0Zm9ybXM6IFsnQW5kcm9pZCcsICdpT1MnXSB9KVxuICBnZXRDYWxlbmRhckF1dGhvcml6YXRpb25TdGF0dXMoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogUmVxdWVzdHMgY2FsZW5kYXIgYXV0aG9yaXphdGlvbiBmb3IgdGhlIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBOb3RlcyBmb3IgaU9TOlxuICAgKiAgIC0gU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGlmIGF1dGhvcml6YXRpb24gc3RhdHVzIGlzIE5PVF9ERVRFUk1JTkVELiBDYWxsaW5nIGl0IHdoZW4gaW4gYW55IG90aGVyIHN0YXRlIHdpbGwgaGF2ZSBubyBlZmZlY3QgYW5kIGp1c3QgcmV0dXJuIHRoZSBjdXJyZW50IGF1dGhvcml6YXRpb24gc3RhdHVzLlxuICAgKiAgIC0gVGhpcyByZWxhdGVzIHRvIENhbGVuZGFyIEV2ZW50cyAobm90IENhbGVuZGFyIFJlbWluZGVycylcbiAgICpcbiAgICogTm90ZXMgZm9yIEFuZHJvaWQ6XG4gICAqICAgLSBUaGlzIGlzIGludGVuZGVkIGZvciBBbmRyb2lkIDYgLyBBUEkgMjMgYW5kIGFib3ZlLiBDYWxsaW5nIG9uIEFuZHJvaWQgNSAvIEFQSSAyMiBhbmQgYmVsb3cgd2lsbCBoYXZlIG5vIGVmZmVjdCBhcyB0aGUgcGVybWlzc2lvbnMgYXJlIGFscmVhZHkgZ3JhbnRlZCBhdCBpbnN0YWxsYXRpb24gdGltZS5cbiAgICogICAtIFRoaXMgcmVxdWVzdHMgcGVybWlzc2lvbiBmb3IgYFJFQURfQ0FMRU5EQVJgIHJ1bi10aW1lIHBlcm1pc3Npb25cbiAgICogICAtIFJlcXVpcmVkIHBlcm1pc3Npb25zIG11c3QgYmUgYWRkZWQgdG8gYEFuZHJvaWRNYW5pZmVzdC54bWxgIGFzIGFwcHJvcHJpYXRlIC0gc2VlIEFuZHJvaWQgcGVybWlzc2lvbnM6IGBSRUFEX0NBTEVOREFSYCwgYFdSSVRFX0NBTEVOREFSYFxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgQENvcmRvdmEoeyBwbGF0Zm9ybXM6IFsnQW5kcm9pZCcsICdpT1MnXSB9KVxuICByZXF1ZXN0Q2FsZW5kYXJBdXRob3JpemF0aW9uKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIE9wZW5zIHNldHRpbmdzIHBhZ2UgZm9yIHRoaXMgYXBwLlxuICAgKiBPbiBBbmRyb2lkLCB0aGlzIG9wZW5zIHRoZSBcIkFwcCBJbmZvXCIgcGFnZSBpbiB0aGUgU2V0dGluZ3MgYXBwLlxuICAgKiBPbiBpT1MsIHRoaXMgb3BlbnMgdGhlIGFwcCBzZXR0aW5ncyBwYWdlIGluIHRoZSBTZXR0aW5ncyBhcHAuIFRoaXMgd29ya3Mgb25seSBvbiBpT1MgOCsgLSBpT1MgNyBhbmQgYmVsb3cgd2lsbCBpbnZva2UgdGhlIGVycm9yQ2FsbGJhY2suXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59XG4gICAqL1xuICBAQ29yZG92YSh7IHBsYXRmb3JtczogWydBbmRyb2lkJywgJ2lPUyddIH0pXG4gIHN3aXRjaFRvU2V0dGluZ3MoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgc3RhdGUgb2YgQmx1ZXRvb3RoIG9uIHRoZSBkZXZpY2UuXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59XG4gICAqL1xuICBAQ29yZG92YSh7IHBsYXRmb3JtczogWydBbmRyb2lkJywgJ2lPUyddIH0pXG4gIGdldEJsdWV0b290aFN0YXRlKCk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIGEgY2hhbmdlIGluIEJsdWV0b290aCBzdGF0ZSBvY2N1cnMuXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGhhbmRsZXJcbiAgICovXG4gIEBDb3Jkb3ZhKHsgcGxhdGZvcm1zOiBbJ0FuZHJvaWQnLCAnaU9TJ10sIHN5bmM6IHRydWUgfSlcbiAgcmVnaXN0ZXJCbHVldG9vdGhTdGF0ZUNoYW5nZUhhbmRsZXIoaGFuZGxlcjogRnVuY3Rpb24pOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIGEgY2hhbmdlIGluIExvY2F0aW9uIHN0YXRlIG9jY3Vycy5cbiAgICpcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gaGFuZGxlclxuICAgKi9cbiAgQENvcmRvdmEoeyBwbGF0Zm9ybXM6IFsnQW5kcm9pZCcsICdpT1MnXSwgc3luYzogdHJ1ZSB9KVxuICByZWdpc3RlckxvY2F0aW9uU3RhdGVDaGFuZ2VIYW5kbGVyKGhhbmRsZXI6IEZ1bmN0aW9uKTogdm9pZCB7fVxuXG4gIC8vIEFORFJPSUQgT05MWVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgaGlnaC1hY2N1cmFjeSBsb2NhdGlvbnMgYXJlIGF2YWlsYWJsZSB0byB0aGUgYXBwIGZyb20gR1BTIGhhcmR3YXJlLlxuICAgKiBSZXR1cm5zIHRydWUgaWYgTG9jYXRpb24gbW9kZSBpcyBlbmFibGVkIGFuZCBpcyBzZXQgdG8gXCJEZXZpY2Ugb25seVwiIG9yIFwiSGlnaCBhY2N1cmFjeVwiIEFORCBpZiB0aGUgYXBwIGlzIGF1dGhvcml6ZWQgdG8gdXNlIGxvY2F0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn1cbiAgICovXG4gIEBDb3Jkb3ZhKHsgcGxhdGZvcm1zOiBbJ0FuZHJvaWQnXSB9KVxuICBpc0dwc0xvY2F0aW9uQXZhaWxhYmxlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgbG9jYXRpb24gbW9kZSBpcyBzZXQgdG8gcmV0dXJuIGhpZ2gtYWNjdXJhY3kgbG9jYXRpb25zIGZyb20gR1BTIGhhcmR3YXJlLlxuICAgKiAgIFJldHVybnMgdHJ1ZSBpZiBMb2NhdGlvbiBtb2RlIGlzIGVuYWJsZWQgYW5kIGlzIHNldCB0byBlaXRoZXI6XG4gICAqICAgLSBEZXZpY2Ugb25seSA9IEdQUyBoYXJkd2FyZSBvbmx5IChoaWdoIGFjY3VyYWN5KVxuICAgKiAgIC0gSGlnaCBhY2N1cmFjeSA9IEdQUyBoYXJkd2FyZSwgbmV0d29yayB0cmlhbmd1bGF0aW9uIGFuZCBXaWZpIG5ldHdvcmsgSURzIChoaWdoIGFuZCBsb3cgYWNjdXJhY3kpXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59XG4gICAqL1xuICBAQ29yZG92YSh7IHBsYXRmb3JtczogWydBbmRyb2lkJ10gfSlcbiAgaXNHcHNMb2NhdGlvbkVuYWJsZWQoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIGxvdy1hY2N1cmFjeSBsb2NhdGlvbnMgYXJlIGF2YWlsYWJsZSB0byB0aGUgYXBwIGZyb20gbmV0d29yayB0cmlhbmd1bGF0aW9uL1dpRmkgYWNjZXNzIHBvaW50cy5cbiAgICogUmV0dXJucyB0cnVlIGlmIExvY2F0aW9uIG1vZGUgaXMgZW5hYmxlZCBhbmQgaXMgc2V0IHRvIFwiQmF0dGVyeSBzYXZpbmdcIiBvciBcIkhpZ2ggYWNjdXJhY3lcIiBBTkQgaWYgdGhlIGFwcCBpcyBhdXRob3JpemVkIHRvIHVzZSBsb2NhdGlvbi5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8YW55Pn1cbiAgICovXG4gIEBDb3Jkb3ZhKHsgcGxhdGZvcm1zOiBbJ0FuZHJvaWQnXSB9KVxuICBpc05ldHdvcmtMb2NhdGlvbkF2YWlsYWJsZSgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgbG9jYXRpb24gbW9kZSBpcyBzZXQgdG8gcmV0dXJuIGxvdy1hY2N1cmFjeSBsb2NhdGlvbnMgZnJvbSBuZXR3b3JrIHRyaWFuZ3VsYXRpb24vV2lGaSBhY2Nlc3MgcG9pbnRzLlxuICAgKiBSZXR1cm5zIHRydWUgaWYgTG9jYXRpb24gbW9kZSBpcyBlbmFibGVkIGFuZCBpcyBzZXQgdG8gZWl0aGVyOlxuICAgKiAgIC0gQmF0dGVyeSBzYXZpbmcgPSBuZXR3b3JrIHRyaWFuZ3VsYXRpb24gYW5kIFdpZmkgbmV0d29yayBJRHMgKGxvdyBhY2N1cmFjeSlcbiAgICogICAtIEhpZ2ggYWNjdXJhY3kgPSBHUFMgaGFyZHdhcmUsIG5ldHdvcmsgdHJpYW5ndWxhdGlvbiBhbmQgV2lmaSBuZXR3b3JrIElEcyAoaGlnaCBhbmQgbG93IGFjY3VyYWN5KVxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgQENvcmRvdmEoeyBwbGF0Zm9ybXM6IFsnQW5kcm9pZCddIH0pXG4gIGlzTmV0d29ya0xvY2F0aW9uRW5hYmxlZCgpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IGxvY2F0aW9uIG1vZGUgc2V0dGluZyBmb3IgdGhlIGRldmljZS5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8YW55Pn1cbiAgICovXG4gIEBDb3Jkb3ZhKHsgcGxhdGZvcm1zOiBbJ0FuZHJvaWQnXSB9KVxuICBnZXRMb2NhdGlvbk1vZGUoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY3VycmVudCBhdXRob3JpemF0aW9uIHN0YXR1cyBmb3IgYSBnaXZlbiBwZXJtaXNzaW9uLlxuICAgKiBOb3RlOiB0aGlzIGlzIGludGVuZGVkIGZvciBBbmRyb2lkIDYgLyBBUEkgMjMgYW5kIGFib3ZlLiBDYWxsaW5nIG9uIEFuZHJvaWQgNSAvIEFQSSAyMiBhbmQgYmVsb3cgd2lsbCBhbHdheXMgcmV0dXJuIEdSQU5URUQgc3RhdHVzIGFzIHBlcm1pc3Npb25zIGFyZSBhbHJlYWR5IGdyYW50ZWQgYXQgaW5zdGFsbGF0aW9uIHRpbWUuXG4gICAqXG4gICAqIEBwYXJhbSBwZXJtaXNzaW9uXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59XG4gICAqL1xuICBAQ29yZG92YSh7IHBsYXRmb3JtczogWydBbmRyb2lkJ10sIGNhbGxiYWNrT3JkZXI6ICdyZXZlcnNlJyB9KVxuICBnZXRQZXJtaXNzaW9uQXV0aG9yaXphdGlvblN0YXR1cyhwZXJtaXNzaW9uOiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBjdXJyZW50IGF1dGhvcml6YXRpb24gc3RhdHVzIGZvciBtdWx0aXBsZSBwZXJtaXNzaW9ucy5cbiAgICogTm90ZTogdGhpcyBpcyBpbnRlbmRlZCBmb3IgQW5kcm9pZCA2IC8gQVBJIDIzIGFuZCBhYm92ZS4gQ2FsbGluZyBvbiBBbmRyb2lkIDUgLyBBUEkgMjIgYW5kIGJlbG93IHdpbGwgYWx3YXlzIHJldHVybiBHUkFOVEVEIHN0YXR1cyBhcyBwZXJtaXNzaW9ucyBhcmUgYWxyZWFkeSBncmFudGVkIGF0IGluc3RhbGxhdGlvbiB0aW1lLlxuICAgKlxuICAgKiBAcGFyYW0ge2FueVtdfSBwZXJtaXNzaW9uc1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgQENvcmRvdmEoeyBwbGF0Zm9ybXM6IFsnQW5kcm9pZCddLCBjYWxsYmFja09yZGVyOiAncmV2ZXJzZScgfSlcbiAgZ2V0UGVybWlzc2lvbnNBdXRob3JpemF0aW9uU3RhdHVzKHBlcm1pc3Npb25zOiBhbnlbXSk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcXVlc3RzIGFwcCB0byBiZSBncmFudGVkIGF1dGhvcml6YXRpb24gZm9yIGEgcnVudGltZSBwZXJtaXNzaW9uLlxuICAgKiBOb3RlOiB0aGlzIGlzIGludGVuZGVkIGZvciBBbmRyb2lkIDYgLyBBUEkgMjMgYW5kIGFib3ZlLiBDYWxsaW5nIG9uIEFuZHJvaWQgNSAvIEFQSSAyMiBhbmQgYmVsb3cgd2lsbCBoYXZlIG5vIGVmZmVjdCBhcyB0aGUgcGVybWlzc2lvbnMgYXJlIGFscmVhZHkgZ3JhbnRlZCBhdCBpbnN0YWxsYXRpb24gdGltZS5cbiAgICpcbiAgICogQHBhcmFtIHBlcm1pc3Npb25cbiAgICogQHJldHVybnMge1Byb21pc2U8YW55Pn1cbiAgICovXG4gIEBDb3Jkb3ZhKHsgcGxhdGZvcm1zOiBbJ0FuZHJvaWQnXSwgY2FsbGJhY2tPcmRlcjogJ3JldmVyc2UnIH0pXG4gIHJlcXVlc3RSdW50aW1lUGVybWlzc2lvbihwZXJtaXNzaW9uOiBhbnkpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXF1ZXN0cyBhcHAgdG8gYmUgZ3JhbnRlZCBhdXRob3JpemF0aW9uIGZvciBtdWx0aXBsZSBydW50aW1lIHBlcm1pc3Npb25zLlxuICAgKiBOb3RlOiB0aGlzIGlzIGludGVuZGVkIGZvciBBbmRyb2lkIDYgLyBBUEkgMjMgYW5kIGFib3ZlLiBDYWxsaW5nIG9uIEFuZHJvaWQgNSAvIEFQSSAyMiBhbmQgYmVsb3cgd2lsbCBhbHdheXMgcmV0dXJuIEdSQU5URUQgc3RhdHVzIGFzIHBlcm1pc3Npb25zIGFyZSBhbHJlYWR5IGdyYW50ZWQgYXQgaW5zdGFsbGF0aW9uIHRpbWUuXG4gICAqXG4gICAqIEBwYXJhbSB7YW55W119IHBlcm1pc3Npb25zXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59XG4gICAqL1xuICBAQ29yZG92YSh7IHBsYXRmb3JtczogWydBbmRyb2lkJ10sIGNhbGxiYWNrT3JkZXI6ICdyZXZlcnNlJyB9KVxuICByZXF1ZXN0UnVudGltZVBlcm1pc3Npb25zKHBlcm1pc3Npb25zOiBhbnlbXSk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgcGx1Z2luIGlzIGN1cnJlbnRseSByZXF1ZXN0aW5nIGEgcnVudGltZSBwZXJtaXNzaW9uIHZpYSB0aGUgbmF0aXZlIEFQSS5cbiAgICogTm90ZSB0aGF0IG9ubHkgb25lIHJlcXVlc3QgY2FuIGJlIG1hZGUgY29uY3VycmVudGx5IGJlY2F1c2UgdGhlIG5hdGl2ZSBBUEkgY2Fubm90IGhhbmRsZSBjb25jdXJyZW50IHJlcXVlc3RzLFxuICAgKiBzbyB0aGUgcGx1Z2luIHdpbGwgaW52b2tlIHRoZSBlcnJvciBjYWxsYmFjayBpZiBhdHRlbXB0aW5nIHRvIG1ha2UgbW9yZSB0aGFuIG9uZSBzaW11bHRhbmVvdXMgcmVxdWVzdC5cbiAgICogTXVsdGlwbGUgcGVybWlzc2lvbiByZXF1ZXN0cyBzaG91bGQgYmUgZ3JvdXBlZCBpbnRvIGEgc2luZ2xlIGNhbGwgc2luY2UgdGhlIG5hdGl2ZSBBUEkgaXMgc2V0dXAgdG8gaGFuZGxlIGJhdGNoIHJlcXVlc3RzIG9mIG11bHRpcGxlIHBlcm1pc3Npb24gZ3JvdXBzLlxuICAgKlxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn1cbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICBpc1JlcXVlc3RpbmdQZXJtaXNzaW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiBhIHJ1bnRpbWUgcGVybWlzc2lvbiByZXF1ZXN0IGhhcyBjb21wbGV0ZWQuXG4gICAqIFBhc3MgaW4gYSBmYWxzeSB2YWx1ZSB0byBkZS1yZWdpc3RlciB0aGUgY3VycmVudGx5IHJlZ2lzdGVyZWQgZnVuY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGhhbmRsZXJcbiAgICovXG4gIEBDb3Jkb3ZhKHsgc3luYzogdHJ1ZSB9KVxuICByZWdpc3RlclBlcm1pc3Npb25SZXF1ZXN0Q29tcGxldGVIYW5kbGVyKGhhbmRsZXI6IEZ1bmN0aW9uKTogdm9pZCB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgZGV2aWNlIHNldHRpbmcgZm9yIEJsdWV0b290aCBpcyBzd2l0Y2hlZCBvbi5cbiAgICogVGhpcyByZXF1aXJlcyBgQkxVRVRPT1RIYCBwZXJtaXNzaW9uIG9uIEFuZHJvaWRcbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59XG4gICAqL1xuICBAQ29yZG92YSh7IHBsYXRmb3JtczogWydBbmRyb2lkJ10gfSlcbiAgaXNCbHVldG9vdGhFbmFibGVkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGRldmljZSBoYXMgQmx1ZXRvb3RoIGNhcGFiaWxpdGllcy5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59XG4gICAqL1xuICBAQ29yZG92YSh7IHBsYXRmb3JtczogWydBbmRyb2lkJ10gfSlcbiAgaGFzQmx1ZXRvb3RoU3VwcG9ydCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBkZXZpY2UgaGFzIEJsdWV0b290aCBMb3cgRW5lcmd5IChMRSkgY2FwYWJpbGl0aWVzLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn1cbiAgICovXG4gIEBDb3Jkb3ZhKHsgcGxhdGZvcm1zOiBbJ0FuZHJvaWQnXSB9KVxuICBoYXNCbHVldG9vdGhMRVN1cHBvcnQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGUgZGV2aWNlIHN1cHBvcnRzIEJsdWV0b290aCBMb3cgRW5lcmd5IChMRSkgUGVyaXBoZXJhbCBtb2RlLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn1cbiAgICovXG4gIEBDb3Jkb3ZhKHsgcGxhdGZvcm1zOiBbJ0FuZHJvaWQnXSB9KVxuICBoYXNCbHVldG9vdGhMRVBlcmlwaGVyYWxTdXBwb3J0KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBCbHVldG9vdGggYXV0aG9yaXphdGlvbiBzdGF0dXMgb2YgdGhlIGFwcGxpY2F0aW9uIG9uIHRoZSBkZXZpY2UuXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59XG4gICAqL1xuICBAQ29yZG92YSh7IHBsYXRmb3JtczogWydBbmRyb2lkJywgJ2lPUyddIH0pXG4gIGdldEJsdWV0b290aEF1dGhvcml6YXRpb25TdGF0dXMoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cbiAgXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBpbmRpdmlkdWFsIGF1dGhvcml6YXRpb24gc3RhdHVzIGZvciBlYWNoIEJsdWV0b290aCBydW4tdGltZSBwZXJtaXNzaW9uIG9uIEFuZHJvaWQgMTIrIC8gQVBJIDMxK1xuICAgKiBPbiBBbmRyb2lkIDExIC8gQVBJIDMwIGFuZCBiZWxvdywgYWxsIHdpbGwgYmUgcmV0dXJuZWQgYXMgR1JBTlRFRCBpZiB0aGUgbWFuaWZlc3QgaGFzIEJMVUVUT09USCBzaW5jZSB0aGV5IGFyZSBpbXBsaWNpdGx5IGdyYW50ZWQgYXQgYnVpbGQtdGltZS5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8YW55Pn1cbiAgICovXG4gIEBDb3Jkb3ZhKHsgcGxhdGZvcm1zOiBbJ0FuZHJvaWQnXSB9KVxuICBnZXRCbHVldG9vdGhBdXRob3JpemF0aW9uU3RhdHVzZXMoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBhdXRob3JpemVkIHRvIHVzZSBleHRlcm5hbCBzdG9yYWdlLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn1cbiAgICovXG4gIEBDb3Jkb3ZhKHsgcGxhdGZvcm1zOiBbJ0FuZHJvaWQnXSB9KVxuICBpc0V4dGVybmFsU3RvcmFnZUF1dGhvcml6ZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENSZXR1cm5zIHRoZSBleHRlcm5hbCBzdG9yYWdlIGF1dGhvcml6YXRpb24gc3RhdHVzIGZvciB0aGUgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fVxuICAgKi9cbiAgQENvcmRvdmEoeyBwbGF0Zm9ybXM6IFsnQW5kcm9pZCddIH0pXG4gIGdldEV4dGVybmFsU3RvcmFnZUF1dGhvcml6YXRpb25TdGF0dXMoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogUmVxdWVzdHMgZXh0ZXJuYWwgc3RvcmFnZSBhdXRob3JpemF0aW9uIGZvciB0aGUgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59XG4gICAqL1xuICBAQ29yZG92YSh7IHBsYXRmb3JtczogWydBbmRyb2lkJ10gfSlcbiAgcmVxdWVzdEV4dGVybmFsU3RvcmFnZUF1dGhvcml6YXRpb24oKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBkZXRhaWxzIG9mIGV4dGVybmFsIFNEIGNhcmQocyk6IGFic29sdXRlIHBhdGgsIGlzIHdyaXRhYmxlLCBmcmVlIHNwYWNlLlxuICAgKlxuICAgKiBUaGUgaW50ZW50aW9uIG9mIHRoaXMgbWV0aG9kIGlzIHRvIHJldHVybiB0aGUgbG9jYXRpb24gYW5kIGRldGFpbHMgb2YgcmVtb3ZhYmxlIGV4dGVybmFsIFNEIGNhcmRzLlxuICAgKiBUaGlzIGRpZmZlcnMgZnJvbSB0aGUgXCJleHRlcm5hbCBkaXJlY3Rvcmllc1wiIHJldHVybmVkIGJ5IGNvcmRvdmEtcGx1Z2luLWZpbGUgd2hpY2ggcmV0dXJuIG1vdW50IHBvaW50cyByZWxhdGluZyB0byBub24tcmVtb3ZhYmxlIChpbnRlcm5hbCkgc3RvcmFnZS5cbiAgICpcbiAgICogTGVhcm4gbW9yZSBhYm91dCB0aGlzIG1ldGhvZCBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL2RwYTk5Yy9jb3Jkb3ZhLWRpYWdub3N0aWMtcGx1Z2luI2dldGV4dGVybmFsc2RjYXJkZGV0YWlscylcbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8YW55Pn1cbiAgICovXG4gIEBDb3Jkb3ZhKHsgcGxhdGZvcm1zOiBbJ0FuZHJvaWQnXSB9KVxuICBnZXRFeHRlcm5hbFNkQ2FyZERldGFpbHMoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogU3dpdGNoZXMgdG8gdGhlIHdpcmVsZXNzIHNldHRpbmdzIHBhZ2UgaW4gdGhlIFNldHRpbmdzIGFwcC4gQWxsb3dzIGNvbmZpZ3VyYXRpb24gb2Ygd2lyZWxlc3MgY29udHJvbHMgc3VjaCBhcyBXaS1GaSwgQmx1ZXRvb3RoIGFuZCBNb2JpbGUgbmV0d29ya3MuXG4gICAqL1xuICBAQ29yZG92YSh7XG4gICAgcGxhdGZvcm1zOiBbJ0FuZHJvaWQnXSxcbiAgICBzeW5jOiB0cnVlLFxuICB9KVxuICBzd2l0Y2hUb1dpcmVsZXNzU2V0dGluZ3MoKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBEaXNwbGF5cyBORkMgc2V0dGluZ3MgdG8gYWxsb3cgdXNlciB0byBlbmFibGUgTkZDLlxuICAgKi9cbiAgQENvcmRvdmEoe1xuICAgIHBsYXRmb3JtczogWydBbmRyb2lkJ10sXG4gICAgc3luYzogdHJ1ZSxcbiAgfSlcbiAgc3dpdGNoVG9ORkNTZXR0aW5ncygpOiB2b2lkIHt9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiBORkMgaGFyZHdhcmUgaXMgcHJlc2VudCBvbiBkZXZpY2UuXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fVxuICAgKi9cbiAgQENvcmRvdmEoeyBwbGF0Zm9ybXM6IFsnQW5kcm9pZCddIH0pXG4gIGlzTkZDUHJlc2VudCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBkZXZpY2Ugc2V0dGluZyBmb3IgTkZDIGlzIHN3aXRjaGVkIG9uLlxuICAgKiBOb3RlOiB0aGlzIG9wZXJhdGlvbiBkb2VzIG5vdCByZXF1aXJlIE5GQyBwZXJtaXNzaW9uIGluIHRoZSBtYW5pZmVzdC5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59XG4gICAqL1xuICBAQ29yZG92YSh7IHBsYXRmb3JtczogWydBbmRyb2lkJ10gfSlcbiAgaXNORkNFbmFibGVkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgTkZDIGlzIGF2YWlsYWJsZSB0byB0aGUgYXBwLiBSZXR1cm5zIHRydWUgaWYgdGhlIGRldmljZSBoYXMgTkZDIGNhcGFiaWxpdGllcyBBTkQgaWYgTkZDIHNldHRpbmcgaXMgc3dpdGNoZWQgb24uXG4gICAqIE5vdGU6IHRoaXMgb3BlcmF0aW9uIGRvZXMgbm90IHJlcXVpcmUgTkZDIHBlcm1pc3Npb24gaW4gdGhlIG1hbmlmZXN0LlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgQENvcmRvdmEoeyBwbGF0Zm9ybXM6IFsnQW5kcm9pZCddIH0pXG4gIGlzTkZDQXZhaWxhYmxlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlcnMgYSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiBhIGNoYW5nZSBpbiBORkMgc3RhdGUgb2NjdXJzLiBQYXNzIGluIGEgZmFsc3kgdmFsdWUgdG8gZGUtcmVnaXN0ZXIgdGhlIGN1cnJlbnRseSByZWdpc3RlcmVkIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBoYW5kZXIgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gTkZDIHN0YXRlIGNoYW5nZXNcbiAgICogQHBhcmFtIGhhbmRsZXJcbiAgICogQHJldHVybnMge1Byb21pc2U8YW55Pn1cbiAgICovXG4gIEBDb3Jkb3ZhKHtcbiAgICBwbGF0Zm9ybXM6IFsnQW5kcm9pZCddLFxuICAgIHN5bmM6IHRydWUsXG4gIH0pXG4gIHJlZ2lzdGVyTkZDU3RhdGVDaGFuZ2VIYW5kbGVyKGhhbmRsZXI6IEZ1bmN0aW9uKTogdm9pZCB7fVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGRldmljZSBkYXRhIHJvYW1pbmcgc2V0dGluZyBpcyBlbmFibGVkLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn1cbiAgICovXG4gIEBDb3Jkb3ZhKHsgcGxhdGZvcm1zOiBbJ0FuZHJvaWQnXSB9KVxuICBpc0RhdGFSb2FtaW5nRW5hYmxlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBkZXZpY2Ugc2V0dGluZyBmb3IgQURCKGRlYnVnKSBpcyBzd2l0Y2hlZCBvbi5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59XG4gICAqL1xuICBAQ29yZG92YSh7IHBsYXRmb3JtczogWydBbmRyb2lkJ10gfSlcbiAgaXNBREJNb2RlRW5hYmxlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBkZXZpY2UgaXMgcm9vdGVkLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn1cbiAgICovXG4gIEBDb3Jkb3ZhKHsgcGxhdGZvcm1zOiBbJ0FuZHJvaWQnXSB9KVxuICBpc0RldmljZVJvb3RlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBJT1MgT05MWVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGFwcGxpY2F0aW9uIGlzIGF1dGhvcml6ZWQgdG8gdXNlIHRoZSBDYW1lcmEgUm9sbCBpbiBQaG90b3MgYXBwLlxuICAgKlxuICAgKiBAcGFyYW0gYWNjZXNzTGV2ZWwgLSAob3B0aW9uYWwpIE9uIGlPUyAxNCssIHNwZWNpZmllcyB0aGUgbGV2ZWwgb2YgYWNjZXNzIHRvIHRoZSBwaG90byBsaWJyYXJ5IHRvIHF1ZXJ5IGFzIGEgY29uc3RhbnQgaW4gY29yZG92YS5wbHVnaW5zLmRpYWdub3N0aWMucGhvdG9MaWJyYXJ5QWNjZXNzTGV2ZWxgXG4gICAqIFBvc3NpYmxlIHZhbHVlcyBhcmU6XG4gICAqIEFERF9PTkxZIC0gY2FuIGFkZCB0byBidXQgbm90IHJlYWQgZnJvbSBQaG90byBMaWJyYXJ5XG4gICAqIFJFQURfV1JJVEUgLSBjYW4gYm90aCBhZGQgdG8gYW5kIHJlYWQgZnJvbSBQaG90byBMaWJyYXJ5XG4gICAqIERlZmF1bHRzIHRvIEFERF9PTkxZIGlmIG5vdCBzcGVjaWZpZWRcbiAgICogSGFzIG5vIGVmZmVjdCBvbiBpT1MgMTMgb3IgYmVsb3dcbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59XG4gICAqL1xuICBAQ29yZG92YSh7IHBsYXRmb3JtczogWydpT1MnXSwgY2FsbGJhY2tPcmRlcjogJ3JldmVyc2UnIH0pXG4gIGlzQ2FtZXJhUm9sbEF1dGhvcml6ZWQoYWNjZXNzTGV2ZWw/OiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgYXV0aG9yaXphdGlvbiBzdGF0dXMgZm9yIHRoZSBhcHBsaWNhdGlvbiB0byB1c2UgdGhlIENhbWVyYSBSb2xsIGluIFBob3RvcyBhcHAuXG4gICAqXG4gICAqIEBwYXJhbSBhY2Nlc3NMZXZlbCAtIChvcHRpb25hbCkgT24gaU9TIDE0Kywgc3BlY2lmaWVzIHRoZSBsZXZlbCBvZiBhY2Nlc3MgdG8gdGhlIHBob3RvIGxpYnJhcnkgdG8gcXVlcnkgYXMgYSBjb25zdGFudCBpbiBjb3Jkb3ZhLnBsdWdpbnMuZGlhZ25vc3RpYy5waG90b0xpYnJhcnlBY2Nlc3NMZXZlbGBcbiAgICogUG9zc2libGUgdmFsdWVzIGFyZTpcbiAgICogQUREX09OTFkgLSBjYW4gYWRkIHRvIGJ1dCBub3QgcmVhZCBmcm9tIFBob3RvIExpYnJhcnlcbiAgICogUkVBRF9XUklURSAtIGNhbiBib3RoIGFkZCB0byBhbmQgcmVhZCBmcm9tIFBob3RvIExpYnJhcnlcbiAgICogRGVmYXVsdHMgdG8gQUREX09OTFkgaWYgbm90IHNwZWNpZmllZFxuICAgKiBIYXMgbm8gZWZmZWN0IG9uIGlPUyAxMyBvciBiZWxvd1xuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc+fVxuICAgKi9cbiAgQENvcmRvdmEoeyBwbGF0Zm9ybXM6IFsnaU9TJ10sIGNhbGxiYWNrT3JkZXI6ICdyZXZlcnNlJyB9KVxuICBnZXRDYW1lcmFSb2xsQXV0aG9yaXphdGlvblN0YXR1cyhhY2Nlc3NMZXZlbD86IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcXVlc3RzIGNhbWVyYSByb2xsIGF1dGhvcml6YXRpb24gZm9yIHRoZSBhcHBsaWNhdGlvbi5cbiAgICogU2hvdWxkIG9ubHkgYmUgY2FsbGVkIGlmIGF1dGhvcml6YXRpb24gc3RhdHVzIGlzIE5PVF9SRVFVRVNURUQuXG4gICAqIENhbGxpbmcgaXQgd2hlbiBpbiBhbnkgb3RoZXIgc3RhdGUgd2lsbCBoYXZlIG5vIGVmZmVjdC5cbiAgICpcbiAgICogQHBhcmFtIGFjY2Vzc0xldmVsIC0gKG9wdGlvbmFsKSBPbiBpT1MgMTQrLCBzcGVjaWZpZXMgdGhlIGxldmVsIG9mIGFjY2VzcyB0byB0aGUgcGhvdG8gbGlicmFyeSB0byBxdWVyeSBhcyBhIGNvbnN0YW50IGluIGNvcmRvdmEucGx1Z2lucy5kaWFnbm9zdGljLnBob3RvTGlicmFyeUFjY2Vzc0xldmVsYFxuICAgKiBQb3NzaWJsZSB2YWx1ZXMgYXJlOlxuICAgKiBBRERfT05MWSAtIGNhbiBhZGQgdG8gYnV0IG5vdCByZWFkIGZyb20gUGhvdG8gTGlicmFyeVxuICAgKiBSRUFEX1dSSVRFIC0gY2FuIGJvdGggYWRkIHRvIGFuZCByZWFkIGZyb20gUGhvdG8gTGlicmFyeVxuICAgKiBEZWZhdWx0cyB0byBBRERfT05MWSBpZiBub3Qgc3BlY2lmaWVkXG4gICAqIEhhcyBubyBlZmZlY3Qgb24gaU9TIDEzIG9yIGJlbG93XG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59XG4gICAqL1xuICBAQ29yZG92YSh7IHBsYXRmb3JtczogWydpT1MnXSwgY2FsbGJhY2tPcmRlcjogJ3JldmVyc2UnIH0pXG4gIHJlcXVlc3RDYW1lcmFSb2xsQXV0aG9yaXphdGlvbihhY2Nlc3NMZXZlbD86IHN0cmluZyk6IFByb21pc2U8YW55PiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiByZW1vdGUgKHB1c2gpIG5vdGlmaWNhdGlvbnMgYXJlIGVuYWJsZWQuXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fVxuICAgKi9cbiAgQENvcmRvdmEoeyBwbGF0Zm9ybXM6IFsnaU9TJywgJ0FuZHJvaWQnXSB9KVxuICBpc1JlbW90ZU5vdGlmaWNhdGlvbnNFbmFibGVkKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIGFwcCBpcyByZWdpc3RlcmVkIGZvciByZW1vdGUgKHB1c2gpIG5vdGlmaWNhdGlvbnMgb24gdGhlIGRldmljZS5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59XG4gICAqL1xuICBAQ29yZG92YSh7IHBsYXRmb3JtczogWydpT1MnXSB9KVxuICBpc1JlZ2lzdGVyZWRGb3JSZW1vdGVOb3RpZmljYXRpb25zKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBhdXRob3JpemF0aW9uIHN0YXR1cyBmb3IgdGhlIGFwcGxpY2F0aW9uIHRvIHVzZSBSZW1vdGUgTm90aWZpY2F0aW9ucy5cbiAgICogTm90ZTogV29ya3Mgb24gaU9TIDEwKyBvbmx5IChpT1MgOSBhbmQgYmVsb3cgd2lsbCBpbnZva2UgdGhlIGVycm9yIGNhbGxiYWNrKS5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn1cbiAgICovXG4gIEBDb3Jkb3ZhKHsgcGxhdGZvcm1zOiBbJ2lPUyddIH0pXG4gIGdldFJlbW90ZU5vdGlmaWNhdGlvbnNBdXRob3JpemF0aW9uU3RhdHVzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcXVlc3RzIHJlbWluZGVycyBhdXRob3JpemF0aW9uIGZvciB0aGUgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSB0eXBlc1xuICAgKiBAcGFyYW0gb21pdFJlZ2lzdHJhdGlvblxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgQENvcmRvdmEoeyBwbGF0Zm9ybXM6IFsnaU9TJ10gfSlcbiAgcmVxdWVzdFJlbW90ZU5vdGlmaWNhdGlvbnNBdXRob3JpemF0aW9uKHR5cGVzPzogc3RyaW5nW10sIG9taXRSZWdpc3RyYXRpb24/OiBib29sZWFuKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSBjdXJyZW50IHNldHRpbmcgb2Ygbm90aWZpY2F0aW9uIHR5cGVzIGZvciB0aGUgYXBwIGluIHRoZSBTZXR0aW5ncyBhcHAuXG4gICAqIE5vdGU6IG9uIGlPUyA4KywgaWYgXCJBbGxvdyBOb3RpZmljYXRpb25zXCIgc3dpdGNoIGlzIE9GRiwgYWxsIHR5cGVzIHdpbGwgYmUgcmV0dXJuZWQgYXMgZGlzYWJsZWQuXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGFueT59XG4gICAqL1xuICBAQ29yZG92YSh7IHBsYXRmb3JtczogWydpT1MnXSB9KVxuICBnZXRSZW1vdGVOb3RpZmljYXRpb25UeXBlcygpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGFwcGxpY2F0aW9uIGlzIGF1dGhvcml6ZWQgdG8gdXNlIHJlbWluZGVycy5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59XG4gICAqL1xuICBAQ29yZG92YSh7IHBsYXRmb3JtczogWydpT1MnXSB9KVxuICBpc1JlbWluZGVyc0F1dGhvcml6ZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHJlbWluZGVycyBhdXRob3JpemF0aW9uIHN0YXR1cyBmb3IgdGhlIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgQENvcmRvdmEoeyBwbGF0Zm9ybXM6IFsnaU9TJ10gfSlcbiAgZ2V0UmVtaW5kZXJzQXV0aG9yaXphdGlvblN0YXR1cygpOiBQcm9taXNlPGFueT4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXF1ZXN0cyByZW1pbmRlcnMgYXV0aG9yaXphdGlvbiBmb3IgdGhlIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgQENvcmRvdmEoeyBwbGF0Zm9ybXM6IFsnaU9TJ10gfSlcbiAgcmVxdWVzdFJlbWluZGVyc0F1dGhvcml6YXRpb24oKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBhdXRob3JpemVkIGZvciBiYWNrZ3JvdW5kIHJlZnJlc2guXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPGJvb2xlYW4+fVxuICAgKi9cbiAgQENvcmRvdmEoeyBwbGF0Zm9ybXM6IFsnaU9TJ10gfSlcbiAgaXNCYWNrZ3JvdW5kUmVmcmVzaEF1dGhvcml6ZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGJhY2tncm91bmQgcmVmcmVzaCBhdXRob3JpemF0aW9uIHN0YXR1cyBmb3IgdGhlIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgQENvcmRvdmEoeyBwbGF0Zm9ybXM6IFsnaU9TJ10gfSlcbiAgZ2V0QmFja2dyb3VuZFJlZnJlc2hTdGF0dXMoKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogUmVxdWVzdHMgQmx1ZXRvb3RoIGF1dGhvcml6YXRpb24gZm9yIHRoZSBhcHBsaWNhdGlvbi5cbiAgICpcbiAgICogTGVhcm4gbW9yZSBhYm91dCB0aGlzIG1ldGhvZCBbaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL2RwYTk5Yy9jb3Jkb3ZhLWRpYWdub3N0aWMtcGx1Z2luI3JlcXVlc3RibHVldG9vdGhhdXRob3JpemF0aW9uKVxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxhbnk+fVxuICAgKi9cbiAgQENvcmRvdmEoeyBwbGF0Zm9ybXM6IFsnaU9TJ10gfSlcbiAgcmVxdWVzdEJsdWV0b290aEF1dGhvcml6YXRpb24oKTogUHJvbWlzZTxhbnk+IHtcbiAgICByZXR1cm47XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIGlmIG1vdGlvbiB0cmFja2luZyBpcyBhdmFpbGFibGUgb24gdGhlIGN1cnJlbnQgZGV2aWNlLlxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxib29sZWFuPn1cbiAgICovXG4gIEBDb3Jkb3ZhKHsgcGxhdGZvcm1zOiBbJ2lPUyddIH0pXG4gIGlzTW90aW9uQXZhaWxhYmxlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgaXQncyBwb3NzaWJsZSB0byBkZXRlcm1pbmUgdGhlIG91dGNvbWUgb2YgYSBtb3Rpb24gYXV0aG9yaXphdGlvbiByZXF1ZXN0IG9uIHRoZSBjdXJyZW50IGRldmljZS5cbiAgICogVGhlcmUncyBubyBkaXJlY3Qgd2F5IHRvIGRldGVybWluZSBpZiBhdXRob3JpemF0aW9uIHdhcyBncmFudGVkIG9yIGRlbmllZCwgc28gdGhlIFBlZG9tZXRlciBBUEkgbXVzdCBiZSB1c2VkIHRvIGluZGlyZWN0bHkgZGV0ZXJtaW5lIHRoaXM6XG4gICAqIHRoZXJlZm9yZSwgaWYgdGhlIGRldmljZSBzdXBwb3J0cyBtb3Rpb24gdHJhY2tpbmcgYnV0IG5vdCBQZWRvbWV0ZXIgRXZlbnQgVHJhY2tpbmcsIHRoZSBvdXRjb21lIG9mIHJlcXVlc3RpbmcgbW90aW9uIGRldGVjdGlvbiBjYW5ub3QgYmUgZGV0ZXJtaW5lZC5cbiAgICpcbiAgICogQHJldHVybnMge1Byb21pc2U8Ym9vbGVhbj59XG4gICAqL1xuICBAQ29yZG92YSh7IHBsYXRmb3JtczogWydpT1MnXSB9KVxuICBpc01vdGlvblJlcXVlc3RPdXRjb21lQXZhaWxhYmxlKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXF1ZXN0cyBtb3Rpb24gdHJhY2tpbmcgYXV0aG9yaXphdGlvbiBmb3IgdGhlIGFwcGxpY2F0aW9uLlxuICAgKlxuICAgKiBMZWFybiBtb3JlIGFib3V0IHRoaXMgbWV0aG9kIFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vZHBhOTljL2NvcmRvdmEtZGlhZ25vc3RpYy1wbHVnaW4jcmVxdWVzdG1vdGlvbmF1dGhvcml6YXRpb24pXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZz59XG4gICAqL1xuICBAQ29yZG92YSh7IHBsYXRmb3JtczogWydpT1MnXSB9KVxuICByZXF1ZXN0TW90aW9uQXV0aG9yaXphdGlvbigpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVja3MgbW90aW9uIGF1dGhvcml6YXRpb24gc3RhdHVzIGZvciB0aGUgYXBwbGljYXRpb24uXG4gICAqXG4gICAqIExlYXJuIG1vcmUgYWJvdXQgdGhpcyBtZXRob2QgW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9kcGE5OWMvY29yZG92YS1kaWFnbm9zdGljLXBsdWdpbiNnZXRtb3Rpb25hdXRob3JpemF0aW9uc3RhdHVzKVxuICAgKlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc+fVxuICAgKi9cbiAgQENvcmRvdmEoeyBwbGF0Zm9ybXM6IFsnaU9TJ10gfSlcbiAgZ2V0TW90aW9uQXV0aG9yaXphdGlvblN0YXR1cygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBsb2NhdGlvbiBhY2N1cmFjeSBhdXRob3JpemF0aW9uIGZvciB0aGUgYXBwbGljYXRpb24gb24gaU9TIDE0KyBhbmQgQW5kcm9pZCAxMisuIE5vdGU6IGNhbGxpbmcgb24gaU9TIDwxNCBvciBBbmRyb2lkIDwxMiB3aWxsIGFsd2F5cyByZXR1cm4gY29yZG92YS5wbHVnaW5zLmRpYWdub3N0aWMubG9jYXRpb25BY2N1cmFjeUF1dGhvcml6YXRpb24uRlVMTFxuICAgKlxuICAgKiBMZWFybiBtb3JlIGFib3V0IHRoaXMgbWV0aG9kIFtoZXJlXShodHRwczovL2dpdGh1Yi5jb20vZHBhOTljL2NvcmRvdmEtZGlhZ25vc3RpYy1wbHVnaW4jZ2V0bG9jYXRpb25hY2N1cmFjeWF1dGhvcml6YXRpb24pXG4gICAqXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZz59XG4gICAqL1xuICBAQ29yZG92YSh7IHBsYXRmb3JtczogWydpT1MnLCAnQW5kcm9pZCddIH0pXG4gIGdldExvY2F0aW9uQWNjdXJhY3lBdXRob3JpemF0aW9uKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcXVlc3RzIHRlbXBvcmFyeSBhY2Nlc3MgdG8gZnVsbCBsb2NhdGlvbiBhY2N1cmFjeSBmb3IgdGhlIGFwcGxpY2F0aW9uIG9uIGlPUyAxNCsuXG4gICAqXG4gICAqIExlYXJuIG1vcmUgYWJvdXQgdGhpcyBtZXRob2QgW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9kcGE5OWMvY29yZG92YS1kaWFnbm9zdGljLXBsdWdpbiNyZXF1ZXN0dGVtcG9yYXJ5ZnVsbGFjY3VyYWN5YXV0aG9yaXphdGlvbilcbiAgICpcbiAgICogQHBhcmFtIHB1cnBvc2VcbiAgICogQHJldHVybnMge1Byb21pc2U8c3RyaW5nPn1cbiAgICovXG4gIEBDb3Jkb3ZhKHsgcGxhdGZvcm1zOiBbJ2lPUyddIH0pXG4gIHJlcXVlc3RUZW1wb3JhcnlGdWxsQWNjdXJhY3lBdXRob3JpemF0aW9uKHB1cnBvc2U6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVycyBhIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIGEgY2hhbmdlIGluIGxvY2F0aW9uIGFjY3VyYWN5IGF1dGhvcml6YXRpb24gb2NjdXJzIG9uIGlPUyAxNCsuXG4gICAqXG4gICAqIExlYXJuIG1vcmUgYWJvdXQgdGhpcyBtZXRob2QgW2hlcmVdKGh0dHBzOi8vZ2l0aHViLmNvbS9kcGE5OWMvY29yZG92YS1kaWFnbm9zdGljLXBsdWdpbiNyZWdpc3RlckxvY2F0aW9uQWNjdXJhY3lBdXRob3JpemF0aW9uQ2hhbmdlSGFuZGxlcilcbiAgICpcbiAgICogQHBhcmFtIGhhbmRsZXJcbiAgICovXG4gIEBDb3Jkb3ZhKHsgcGxhdGZvcm1zOiBbJ2lPUyddLCBzeW5jOiB0cnVlIH0pXG4gIHJlZ2lzdGVyTG9jYXRpb25BY2N1cmFjeUF1dGhvcml6YXRpb25DaGFuZ2VIYW5kbGVyKGhhbmRsZXI6IEZ1bmN0aW9uKTogdm9pZCB7fVxufVxuIl19"],"names":["ERR_CORDOVA_NOT_AVAILABLE","error","ERR_PLUGIN_NOT_INSTALLED","getPromise","callback","window","angular","doc","document","injector","element","querySelector","body","get","$q","resolve","reject","console","warn","Promise","tryNativePromise","plugin","methodName","pluginName","pluginRef","pluginPackage","constructor","getPluginRef","getPluginName","getPluginInstallName","pluginInstance","cordova","method","pluginWarn","process","cordovaWarn","setIndex","args","opts","sync","callbackOrder","unshift","callbackStyle","push","err","result","successName","errorName","obj","successIndex","errorIndex","setSuccessIndex","length","splice","setErrorIndex","callCordovaPlugin","pluginObj","availabilityCheck","apply","path","paths","split","i","wrap","event","_i","arguments","observable","observer","pluginResult","destruct","next","bind","complete","clearFunction","clearWithArgs","e","wrapObservable","eventObservable","fromEvent","otherPromise","then","catch","wrapOtherPromise","rej","p","wrapPromise","AwesomeCordovaNativePlugin","installed","this","getPlugin","getSupportedPlatforms","platforms","repo","install","config","cordovaPropertyGet","key","cordovaPropertySet","value","win_1","before_1","Date","now","didFireReady_1","addEventListener","log","setTimeout","checkReady","extendStatics","__extends","d","b","Object","setPrototypeOf","__proto__","Array","prototype","hasOwnProperty","call","TypeError","String","__","create","Diagnostic","_super","DiagnosticOriginal","_this","permission","READ_CALENDAR","WRITE_CALENDAR","CAMERA","READ_CONTACTS","WRITE_CONTACTS","GET_ACCOUNTS","ACCESS_FINE_LOCATION","ACCESS_COARSE_LOCATION","RECORD_AUDIO","READ_PHONE_STATE","CALL_PHONE","ADD_VOICEMAIL","USE_SIP","PROCESS_OUTGOING_CALLS","READ_CALL_LOG","WRITE_CALL_LOG","SEND_SMS","RECEIVE_SMS","READ_SMS","RECEIVE_WAP_PUSH","RECEIVE_MMS","WRITE_EXTERNAL_STORAGE","READ_EXTERNAL_STORAGE","BODY_SENSORS","BLUETOOTH_ADVERTISE","BLUETOOTH_SCAN","BLUETOOTH_CONNECT","locationAuthorizationMode","ALWAYS","WHEN_IN_USE","locationAccuracyAuthorization","FULL","REDUCED","permissionGroups","CALENDAR","CONTACTS","LOCATION","MICROPHONE","PHONE","SENSORS","SMS","STORAGE","NEARBY_DEVICES","locationMode","HIGH_ACCURACY","DEVICE_ONLY","BATTERY_SAVING","LOCATION_OFF","bluetoothState","UNKNOWN","RESETTING","UNSUPPORTED","UNAUTHORIZED","POWERED_OFF","POWERED_ON","POWERING_OFF","POWERING_ON","photoLibraryAccessLevel","ADD_ONLY","READ_WRITE","isLocationAvailable","isWifiAvailable","isCameraAvailable","externalStorage","isBluetoothAvailable","switchToLocationSettings","switchToMobileDataSettings","switchToBluetoothSettings","switchToWifiSettings","isWifiEnabled","setWifiState","state","setBluetoothState","isLocationEnabled","isLocationAuthorized","getLocationAuthorizationStatus","requestLocationAuthorization","mode","accuracy","isCameraPresent","isCameraAuthorized","getCameraAuthorizationStatus","requestCameraAuthorization","isMicrophoneAuthorized","getMicrophoneAuthorizationStatus","requestMicrophoneAuthorization","isContactsAuthorized","getContactsAuthorizationStatus","requestContactsAuthorization","isCalendarAuthorized","getCalendarAuthorizationStatus","requestCalendarAuthorization","switchToSettings","getBluetoothState","registerBluetoothStateChangeHandler","handler","registerLocationStateChangeHandler","isGpsLocationAvailable","isGpsLocationEnabled","isNetworkLocationAvailable","isNetworkLocationEnabled","getLocationMode","getPermissionAuthorizationStatus","getPermissionsAuthorizationStatus","permissions","requestRuntimePermission","requestRuntimePermissions","isRequestingPermission","registerPermissionRequestCompleteHandler","isBluetoothEnabled","hasBluetoothSupport","hasBluetoothLESupport","hasBluetoothLEPeripheralSupport","getBluetoothAuthorizationStatus","getBluetoothAuthorizationStatuses","isExternalStorageAuthorized","getExternalStorageAuthorizationStatus","requestExternalStorageAuthorization","getExternalSdCardDetails","switchToWirelessSettings","switchToNFCSettings","isNFCPresent","isNFCEnabled","isNFCAvailable","registerNFCStateChangeHandler","isDataRoamingEnabled","isADBModeEnabled","isDeviceRooted","isCameraRollAuthorized","accessLevel","getCameraRollAuthorizationStatus","requestCameraRollAuthorization","isRemoteNotificationsEnabled","isRegisteredForRemoteNotifications","getRemoteNotificationsAuthorizationStatus","requestRemoteNotificationsAuthorization","types","omitRegistration","getRemoteNotificationTypes","isRemindersAuthorized","getRemindersAuthorizationStatus","requestRemindersAuthorization","isBackgroundRefreshAuthorized","getBackgroundRefreshStatus","requestBluetoothAuthorization","isMotionAvailable","isMotionRequestOutcomeAvailable","requestMotionAuthorization","getMotionAuthorizationStatus","getLocationAccuracyAuthorization","requestTemporaryFullAccuracyAuthorization","purpose","registerLocationAccuracyAuthorizationChangeHandler","defineProperty","set","enumerable","configurable"],"sourceRoot":""}