appium-mac2-driver 1.1.7 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -55,6 +55,7 @@ elementType | Integer-encoded element class. See the official documentation on [
55
55
  frame | Coordinates of bounding element rectangle | {x: 1, y: 2.5, width: 100, height: 200}
56
56
  placeholderValue | It is usually only present for text fields. For other element types it's mostly empty | 'my placeholder'
57
57
  enabled | Contains `true` if the element is enabled | 'false'
58
+ focused | Contains `true` if the element has the keyboard input focus | 'false'
58
59
  selected | Contains `true` if the element is selected | 'false'
59
60
  hittable | Contains `true` if the element is hittable | 'true'
60
61
  label | Element's label value. Could be empty | 'my label'
@@ -637,16 +638,17 @@ useDefaultUiInterruptionsHandling | boolean | Whether to use the default XCTest
637
638
  import pytest
638
639
 
639
640
  from appium import webdriver
641
+ # Options are available in Python client since v2.6.0
642
+ from appium.options.mac import Mac2Options
640
643
  from appium.webdriver.common.appiumby import AppiumBy
641
644
 
645
+
642
646
  @pytest.fixture()
643
647
  def driver():
644
- drv = webdriver.Remote('http://localhost:4723/wd/hub', {
645
- # automationName capability presence is mandatory for this Mac2 Driver to be selected
646
- 'automationName': 'Mac2',
647
- 'platformName': 'mac',
648
- 'bundleId': 'com.apple.TextEdit',
649
- })
648
+ options = Mac2Options()
649
+ options.bundle_id = 'com.apple.TextEdit'
650
+ # The default URL is http://127.0.0.1:4723/wd/hub in Appium1
651
+ drv = webdriver.Remote('http://127.0.0.1:4723', options=options)
650
652
  yield drv
651
653
  drv.quit()
652
654
 
@@ -55,6 +55,8 @@
55
55
  NSString *text = @"yolo😎";
56
56
  [edit am_setValue:text];
57
57
  XCTAssertTrue(edit.am_hasKeyboardInputFocus);
58
+ NSString *focused = [edit am_wdAttributeValueWithName:@"focused"];
59
+ XCTAssertEqualObjects(focused, @"true");
58
60
  NSString *value = [edit am_wdAttributeValueWithName:@"value"];
59
61
  XCTAssertEqualObjects(value, text);
60
62
  XCTAssertEqualObjects(value, edit.am_text);
@@ -34,11 +34,13 @@
34
34
  } else if ([wdAttributeName isEqualToString:FBStringify(XCUIElement, placeholderValue)]) {
35
35
  return self.placeholderValue;
36
36
  } else if ([wdAttributeName isEqualToString:@"hittable"]) {
37
- return self.hittable ? @"true" : @"false";
37
+ return FBBoolToStr(self.hittable);
38
38
  } else if ([wdAttributeName isEqualToString:@"enabled"]) {
39
- return self.enabled ? @"true" : @"false";
39
+ return FBBoolToStr(self.enabled);
40
+ } else if ([wdAttributeName isEqualToString:@"focused"]) {
41
+ return FBBoolToStr(self.am_hasKeyboardInputFocus);
40
42
  } else if ([wdAttributeName isEqualToString:@"selected"]) {
41
- return self.selected ? @"true" : @"false";
43
+ return FBBoolToStr(self.selected);
42
44
  } else if ([wdAttributeName isEqualToString:FBStringify(XCUIElement, label)]) {
43
45
  return self.label;
44
46
  } else if ([wdAttributeName isEqualToString:FBStringify(XCUIElement, title)]) {
@@ -33,6 +33,7 @@
33
33
  static dispatch_once_t onceToken;
34
34
  dispatch_once(&onceToken, ^{
35
35
  attributeNames = @[
36
+ @"focused",
36
37
  @"selected",
37
38
  @"hittable",
38
39
  FBStringify(XCUIElement, placeholderValue),
@@ -45,3 +45,6 @@
45
45
 
46
46
  /*! Converts the given number of milliseconds into seconds */
47
47
  #define FBMillisToSeconds(ms) ((ms) / 1000.0)
48
+
49
+ /*! Converts the given boolean value to a string representation */
50
+ #define FBBoolToStr(b) ((b) ? @"true" : @"false")
package/build/index.js CHANGED
@@ -12,41 +12,13 @@ Object.defineProperty(exports, "Mac2Driver", {
12
12
  }
13
13
  });
14
14
  exports.default = void 0;
15
- Object.defineProperty(exports, "startServer", {
16
- enumerable: true,
17
- get: function () {
18
- return _server.startServer;
19
- }
20
- });
21
15
 
22
16
  require("source-map-support/register");
23
17
 
24
18
  var _driver = _interopRequireDefault(require("./lib/driver"));
25
19
 
26
- var _server = require("./lib/server");
27
-
28
- var _asyncbox = require("asyncbox");
29
-
30
- const DEFAULT_HOST = 'localhost';
31
- const DEFAULT_PORT = 4797;
32
-
33
- async function main() {
34
- const getArgValue = argName => {
35
- const argIndex = process.argv.indexOf(argName);
36
- return argIndex > 0 ? process.argv[argIndex + 1] : null;
37
- };
38
-
39
- const port = parseInt(getArgValue('--port'), 10) || DEFAULT_PORT;
40
- const host = getArgValue('--host') || DEFAULT_HOST;
41
- return await (0, _server.startServer)(port, host);
42
- }
43
-
44
- if (require.main === module) {
45
- (0, _asyncbox.asyncify)(main);
46
- }
47
-
48
20
  var _default = _driver.default;
49
21
  exports.default = _default;require('source-map-support').install();
50
22
 
51
23
 
52
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6WyJERUZBVUxUX0hPU1QiLCJERUZBVUxUX1BPUlQiLCJtYWluIiwiZ2V0QXJnVmFsdWUiLCJhcmdOYW1lIiwiYXJnSW5kZXgiLCJwcm9jZXNzIiwiYXJndiIsImluZGV4T2YiLCJwb3J0IiwicGFyc2VJbnQiLCJob3N0IiwicmVxdWlyZSIsIm1vZHVsZSIsIk1hYzJEcml2ZXIiXSwic291cmNlUm9vdCI6Ii4uIiwic291cmNlcyI6WyJpbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgTWFjMkRyaXZlciBmcm9tICcuL2xpYi9kcml2ZXInO1xuaW1wb3J0IHsgc3RhcnRTZXJ2ZXIgfSBmcm9tICcuL2xpYi9zZXJ2ZXInO1xuaW1wb3J0IHsgYXN5bmNpZnkgfSBmcm9tICdhc3luY2JveCc7XG5cbmNvbnN0IERFRkFVTFRfSE9TVCA9ICdsb2NhbGhvc3QnO1xuY29uc3QgREVGQVVMVF9QT1JUID0gNDc5NztcblxuYXN5bmMgZnVuY3Rpb24gbWFpbiAoKSB7XG4gIGNvbnN0IGdldEFyZ1ZhbHVlID0gKGFyZ05hbWUpID0+IHtcbiAgICBjb25zdCBhcmdJbmRleCA9IHByb2Nlc3MuYXJndi5pbmRleE9mKGFyZ05hbWUpO1xuICAgIHJldHVybiBhcmdJbmRleCA+IDAgPyBwcm9jZXNzLmFyZ3ZbYXJnSW5kZXggKyAxXSA6IG51bGw7XG4gIH07XG4gIGNvbnN0IHBvcnQgPSBwYXJzZUludChnZXRBcmdWYWx1ZSgnLS1wb3J0JyksIDEwKSB8fCBERUZBVUxUX1BPUlQ7XG4gIGNvbnN0IGhvc3QgPSBnZXRBcmdWYWx1ZSgnLS1ob3N0JykgfHwgREVGQVVMVF9IT1NUO1xuICByZXR1cm4gYXdhaXQgc3RhcnRTZXJ2ZXIocG9ydCwgaG9zdCk7XG59XG5cbmlmIChyZXF1aXJlLm1haW4gPT09IG1vZHVsZSkge1xuICBhc3luY2lmeShtYWluKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgTWFjMkRyaXZlcjtcbmV4cG9ydCB7IE1hYzJEcml2ZXIsIHN0YXJ0U2VydmVyIH07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsWUFBWSxHQUFHLFdBQXJCO0FBQ0EsTUFBTUMsWUFBWSxHQUFHLElBQXJCOztBQUVBLGVBQWVDLElBQWYsR0FBdUI7RUFDckIsTUFBTUMsV0FBVyxHQUFJQyxPQUFELElBQWE7SUFDL0IsTUFBTUMsUUFBUSxHQUFHQyxPQUFPLENBQUNDLElBQVIsQ0FBYUMsT0FBYixDQUFxQkosT0FBckIsQ0FBakI7SUFDQSxPQUFPQyxRQUFRLEdBQUcsQ0FBWCxHQUFlQyxPQUFPLENBQUNDLElBQVIsQ0FBYUYsUUFBUSxHQUFHLENBQXhCLENBQWYsR0FBNEMsSUFBbkQ7RUFDRCxDQUhEOztFQUlBLE1BQU1JLElBQUksR0FBR0MsUUFBUSxDQUFDUCxXQUFXLENBQUMsUUFBRCxDQUFaLEVBQXdCLEVBQXhCLENBQVIsSUFBdUNGLFlBQXBEO0VBQ0EsTUFBTVUsSUFBSSxHQUFHUixXQUFXLENBQUMsUUFBRCxDQUFYLElBQXlCSCxZQUF0QztFQUNBLE9BQU8sTUFBTSx5QkFBWVMsSUFBWixFQUFrQkUsSUFBbEIsQ0FBYjtBQUNEOztBQUVELElBQUlDLE9BQU8sQ0FBQ1YsSUFBUixLQUFpQlcsTUFBckIsRUFBNkI7RUFDM0Isd0JBQVNYLElBQVQ7QUFDRDs7ZUFFY1ksZSJ9
24
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJuYW1lcyI6WyJNYWMyRHJpdmVyIl0sInNvdXJjZVJvb3QiOiIuLiIsInNvdXJjZXMiOlsiaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE1hYzJEcml2ZXIgZnJvbSAnLi9saWIvZHJpdmVyJztcblxuZXhwb3J0IGRlZmF1bHQgTWFjMkRyaXZlcjtcbmV4cG9ydCB7IE1hYzJEcml2ZXIgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7ZUFFZUEsZSJ9
@@ -9,7 +9,7 @@ exports.default = exports.commands = void 0;
9
9
 
10
10
  require("source-map-support/register");
11
11
 
12
- var _support = require("@appium/support");
12
+ var _support = require("appium/support");
13
13
 
14
14
  var _teen_process = require("teen_process");
15
15
 
@@ -85,4 +85,4 @@ var _default = commands;
85
85
  exports.default = _default;require('source-map-support').install();
86
86
 
87
87
 
88
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2FwcGxlc2NyaXB0LmpzIiwibmFtZXMiOlsiT1NBU0NSSVBUIiwiQVBQTEVfU0NSSVBUX0ZFQVRVUkUiLCJjb21tYW5kcyIsIm1hY29zRXhlY0FwcGxlU2NyaXB0Iiwib3B0cyIsImVuc3VyZUZlYXR1cmVFbmFibGVkIiwic2NyaXB0IiwibGFuZ3VhZ2UiLCJjb21tYW5kIiwiY3dkIiwidGltZW91dCIsImxvZyIsImVycm9yQW5kVGhyb3ciLCJ0ZXN0Iiwic2hvdWxkUnVuU2NyaXB0IiwiYXJncyIsInB1c2giLCJ0bXBSb290IiwidGVtcERpciIsIm9wZW5EaXIiLCJ0bXBTY3JpcHRQYXRoIiwicGF0aCIsInJlc29sdmUiLCJmcyIsIndyaXRlRmlsZSIsImluZm8iLCJ1dGlsIiwicXVvdGUiLCJzdGRvdXQiLCJlIiwiRXJyb3IiLCJzdGRlcnIiLCJtZXNzYWdlIiwicmltcmFmIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2FwcGxlc2NyaXB0LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZzLCB0ZW1wRGlyLCB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IGV4ZWMgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5cbmNvbnN0IE9TQVNDUklQVCA9ICdvc2FzY3JpcHQnO1xuY29uc3QgQVBQTEVfU0NSSVBUX0ZFQVRVUkUgPSAnYXBwbGVfc2NyaXB0JztcblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBFeGVjQXBwbGVTY3JpcHRPcHRpb25zXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHNjcmlwdCBBIHZhbGlkIEFwcGxlU2NyaXB0IHRvIGV4ZWN1dGVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbGFuZ3VhZ2UgT3ZlcnJpZGVzIHRoZSBzY3JpcHRpbmcgbGFuZ3VhZ2UuIEJhc2ljYWxseSwgc2V0cyB0aGUgdmFsdWUgb2YgYC1sYCBjb21tYW5kXG4gKiBsaW5lIGFyZ3VtZW50IG9mIGBvc2FzY3JpcHRgIHRvb2wuIElmIHVuc2V0IHRoZSBBcHBsZVNjcmlwdCBsYW5ndWFnZSBpcyBhc3N1bWVkLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBjb21tYW5kIEEgdmFsaWQgQXBwbGVTY3JpcHQgYXMgYSBzaW5nbGUgY29tbWFuZCAobm8gbGluZSBicmVha3MpIHRvIGV4ZWN1dGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gdGltZW91dCBbMjAwMDBdIFRoZSBudW1iZXIgb2Ygc2Vjb25kcyB0byB3YWl0IHVudGlsIGEgbG9uZy1ydW5uaW5nIGNvbW1hbmQgaXNcbiAqIGZpbmlzaGVkLiBBbiBlcnJvciBpcyB0aHJvd24gaWYgdGhlIGNvbW1hbmQgaXMgc3RpbGwgcnVubmluZyBhZnRlciB0aGlzIHRpbWVvdXQgZXhwaXJlcy5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gY3dkIFRoZSBwYXRoIHRvIGFuIGV4aXN0aW5nIGZvbGRlciwgd2hpY2ggaXMgZ29pbmcgdG8gYmUgc2V0IGFzIHRoZVxuICogd29ya2luZyBkaXJlY3RvcnkgZm9yIHRoZSBjb21tYW5kL3NjcmlwdCBiZWluZyBleGVjdXRlZC5cbiAqL1xuXG4vKipcbiAqIEV4ZWN1dGVzIHRoZSBnaXZlbiBBcHBsZVNjcmlwdCBjb21tYW5kIG9yIGEgd2hvbGUgc2NyaXB0IGJhc2VkIG9uIHRoZVxuICogZ2l2ZW4gb3B0aW9ucy4gRWl0aGVyIG9mIHRoZXNlIG9wdGlvbnMgbXVzdCBiZSBwcm92aWRlZC4gSWYgYm90aCBhcmUgcHJvdmlkZWRcbiAqIHRoZW4gdGhlIGBjb21tYW5kYCBvbmUgZ2V0cyB0aGUgcHJpb3JpdHkuXG4gKiBOb3RlIHRoYXQgQXBwbGVTY3JpcHQgY29tbWFuZCBjYW5ub3QgY29udGFpbiBsaW5lIGJyZWFrcy4gQ29uc2lkZXIgbWFraW5nIGl0XG4gKiB0byBhIHNjcmlwdCBpbiBzdWNoIGNhc2UuXG4gKiBOb3RlIHRoYXQgYnkgZGVmYXVsdCBBcHBsZVNjcmlwdCBlbmdpbmUgYmxvY2tzIGNvbW1hbmRzL3NjcmlwdHMgZXhlY3V0aW9uIGlmIHlvdXIgc2NyaXB0XG4gKiBpcyB0cnlpbmcgdG8gYWNjZXNzIHNvbWUgcHJpdmF0ZSBlbnRpdGllcywgbGlrZSBjYW1lcmFzIG9yIHRoZSBkZXNrdG9wIHNjcmVlblxuICogYW5kIG5vIHBlcm1pc3Npb25zIHRvIGRvIGl0IGFyZSBnaXZlbiB0byB0aGUgcGFyZW50IChmb3IgZXhhbXBsZSwgQXBwaXVtIG9yIFRlcm1pbmFsKVxuICogcHJvY2VzcyBpbiBTeXN0ZW0gUHJlZmVyZW5jZXMgLT4gUHJpdmFjeSBsaXN0LlxuICpcbiAqIEBwYXJhbSB7IUV4ZWNBcHBsZVNjcmlwdE9wdGlvbnN9IG9wdHNcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBhY3R1YWwgc3Rkb3V0IG9mIHRoZSBnaXZlbiBjb21tYW5kL3NjcmlwdFxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBleGl0IGNvZGUgb2YgdGhlIGdpdmVuIGNvbW1hbmQvc2NyaXB0IGlzIG5vdCB6ZXJvLlxuICogVGhlIGFjdHVhbCBzdGRlcnIgb3V0cHV0IGlzIHNldCB0byB0aGUgZXJyb3IgbWVzc2FnZSB2YWx1ZS5cbiAqL1xuY29tbWFuZHMubWFjb3NFeGVjQXBwbGVTY3JpcHQgPSBhc3luYyBmdW5jdGlvbiBtYWNvc0V4ZWNBcHBsZVNjcmlwdCAob3B0cyA9IHt9KSB7XG4gIHRoaXMuZW5zdXJlRmVhdHVyZUVuYWJsZWQoQVBQTEVfU0NSSVBUX0ZFQVRVUkUpO1xuXG4gIGNvbnN0IHtcbiAgICBzY3JpcHQsXG4gICAgbGFuZ3VhZ2UsXG4gICAgY29tbWFuZCxcbiAgICBjd2QsXG4gICAgdGltZW91dCxcbiAgfSA9IG9wdHM7XG4gIGlmICghc2NyaXB0ICYmICFjb21tYW5kKSB7XG4gICAgbG9nLmVycm9yQW5kVGhyb3coJ0FwcGxlU2NyaXB0IHNjcmlwdC9jb21tYW5kIG11c3Qgbm90IGJlIGVtcHR5Jyk7XG4gIH1cbiAgaWYgKC9cXG4vLnRlc3QoY29tbWFuZCkpIHtcbiAgICBsb2cuZXJyb3JBbmRUaHJvdygnQXBwbGVTY3JpcHQgY29tbWFuZHMgY2Fubm90IGNvbnRhaW4gbGluZSBicmVha3MnKTtcbiAgfVxuICAvLyAnY29tbWFuZCcgaGFzIHByaW9yaXR5IG92ZXIgJ3NjcmlwdCdcbiAgY29uc3Qgc2hvdWxkUnVuU2NyaXB0ID0gIWNvbW1hbmQ7XG5cbiAgY29uc3QgYXJncyA9IFtdO1xuICBpZiAobGFuZ3VhZ2UpIHtcbiAgICBhcmdzLnB1c2goJy1sJywgbGFuZ3VhZ2UpO1xuICB9XG4gIGxldCB0bXBSb290O1xuICB0cnkge1xuICAgIGlmIChzaG91bGRSdW5TY3JpcHQpIHtcbiAgICAgIHRtcFJvb3QgPSBhd2FpdCB0ZW1wRGlyLm9wZW5EaXIoKTtcbiAgICAgIGNvbnN0IHRtcFNjcmlwdFBhdGggPSBwYXRoLnJlc29sdmUodG1wUm9vdCwgJ2FwcGl1bV9zY3JpcHQuc2NwdCcpO1xuICAgICAgYXdhaXQgZnMud3JpdGVGaWxlKHRtcFNjcmlwdFBhdGgsIHNjcmlwdCwgJ3V0ZjgnKTtcbiAgICAgIGFyZ3MucHVzaCh0bXBTY3JpcHRQYXRoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXJncy5wdXNoKCctZScsIGNvbW1hbmQpO1xuICAgIH1cbiAgICBsb2cuaW5mbyhgUnVubmluZyAke09TQVNDUklQVH0gd2l0aCBhcmd1bWVudHM6ICR7dXRpbC5xdW90ZShhcmdzKX1gKTtcbiAgICB0cnkge1xuICAgICAgY29uc3Qge3N0ZG91dH0gPSBhd2FpdCBleGVjKE9TQVNDUklQVCwgYXJncywge2N3ZCwgdGltZW91dH0pO1xuICAgICAgcmV0dXJuIHN0ZG91dDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoZS5zdGRlcnIgfHwgZS5tZXNzYWdlKTtcbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgaWYgKHRtcFJvb3QpIHtcbiAgICAgIGF3YWl0IGZzLnJpbXJhZih0bXBSb290KTtcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCB7IGNvbW1hbmRzIH07XG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxTQUFTLEdBQUcsV0FBbEI7QUFDQSxNQUFNQyxvQkFBb0IsR0FBRyxjQUE3QjtBQUVBLE1BQU1DLFFBQVEsR0FBRyxFQUFqQjs7O0FBOEJBQSxRQUFRLENBQUNDLG9CQUFULEdBQWdDLGVBQWVBLG9CQUFmLENBQXFDQyxJQUFJLEdBQUcsRUFBNUMsRUFBZ0Q7RUFDOUUsS0FBS0Msb0JBQUwsQ0FBMEJKLG9CQUExQjtFQUVBLE1BQU07SUFDSkssTUFESTtJQUVKQyxRQUZJO0lBR0pDLE9BSEk7SUFJSkMsR0FKSTtJQUtKQztFQUxJLElBTUZOLElBTko7O0VBT0EsSUFBSSxDQUFDRSxNQUFELElBQVcsQ0FBQ0UsT0FBaEIsRUFBeUI7SUFDdkJHLGdCQUFJQyxhQUFKLENBQWtCLDhDQUFsQjtFQUNEOztFQUNELElBQUksS0FBS0MsSUFBTCxDQUFVTCxPQUFWLENBQUosRUFBd0I7SUFDdEJHLGdCQUFJQyxhQUFKLENBQWtCLGlEQUFsQjtFQUNEOztFQUVELE1BQU1FLGVBQWUsR0FBRyxDQUFDTixPQUF6QjtFQUVBLE1BQU1PLElBQUksR0FBRyxFQUFiOztFQUNBLElBQUlSLFFBQUosRUFBYztJQUNaUSxJQUFJLENBQUNDLElBQUwsQ0FBVSxJQUFWLEVBQWdCVCxRQUFoQjtFQUNEOztFQUNELElBQUlVLE9BQUo7O0VBQ0EsSUFBSTtJQUNGLElBQUlILGVBQUosRUFBcUI7TUFDbkJHLE9BQU8sR0FBRyxNQUFNQyxpQkFBUUMsT0FBUixFQUFoQjs7TUFDQSxNQUFNQyxhQUFhLEdBQUdDLGNBQUtDLE9BQUwsQ0FBYUwsT0FBYixFQUFzQixvQkFBdEIsQ0FBdEI7O01BQ0EsTUFBTU0sWUFBR0MsU0FBSCxDQUFhSixhQUFiLEVBQTRCZCxNQUE1QixFQUFvQyxNQUFwQyxDQUFOO01BQ0FTLElBQUksQ0FBQ0MsSUFBTCxDQUFVSSxhQUFWO0lBQ0QsQ0FMRCxNQUtPO01BQ0xMLElBQUksQ0FBQ0MsSUFBTCxDQUFVLElBQVYsRUFBZ0JSLE9BQWhCO0lBQ0Q7O0lBQ0RHLGdCQUFJYyxJQUFKLENBQVUsV0FBVXpCLFNBQVUsb0JBQW1CMEIsY0FBS0MsS0FBTCxDQUFXWixJQUFYLENBQWlCLEVBQWxFOztJQUNBLElBQUk7TUFDRixNQUFNO1FBQUNhO01BQUQsSUFBVyxNQUFNLHdCQUFLNUIsU0FBTCxFQUFnQmUsSUFBaEIsRUFBc0I7UUFBQ04sR0FBRDtRQUFNQztNQUFOLENBQXRCLENBQXZCO01BQ0EsT0FBT2tCLE1BQVA7SUFDRCxDQUhELENBR0UsT0FBT0MsQ0FBUCxFQUFVO01BQ1YsTUFBTSxJQUFJQyxLQUFKLENBQVVELENBQUMsQ0FBQ0UsTUFBRixJQUFZRixDQUFDLENBQUNHLE9BQXhCLENBQU47SUFDRDtFQUNGLENBaEJELFNBZ0JVO0lBQ1IsSUFBSWYsT0FBSixFQUFhO01BQ1gsTUFBTU0sWUFBR1UsTUFBSCxDQUFVaEIsT0FBVixDQUFOO0lBQ0Q7RUFDRjtBQUNGLENBN0NEOztlQWdEZWYsUSJ9
88
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2FwcGxlc2NyaXB0LmpzIiwibmFtZXMiOlsiT1NBU0NSSVBUIiwiQVBQTEVfU0NSSVBUX0ZFQVRVUkUiLCJjb21tYW5kcyIsIm1hY29zRXhlY0FwcGxlU2NyaXB0Iiwib3B0cyIsImVuc3VyZUZlYXR1cmVFbmFibGVkIiwic2NyaXB0IiwibGFuZ3VhZ2UiLCJjb21tYW5kIiwiY3dkIiwidGltZW91dCIsImxvZyIsImVycm9yQW5kVGhyb3ciLCJ0ZXN0Iiwic2hvdWxkUnVuU2NyaXB0IiwiYXJncyIsInB1c2giLCJ0bXBSb290IiwidGVtcERpciIsIm9wZW5EaXIiLCJ0bXBTY3JpcHRQYXRoIiwicGF0aCIsInJlc29sdmUiLCJmcyIsIndyaXRlRmlsZSIsImluZm8iLCJ1dGlsIiwicXVvdGUiLCJzdGRvdXQiLCJleGVjIiwiZSIsIkVycm9yIiwic3RkZXJyIiwibWVzc2FnZSIsInJpbXJhZiJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9hcHBsZXNjcmlwdC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmcywgdGVtcERpciwgdXRpbCB9IGZyb20gJ2FwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IGV4ZWMgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5cbmNvbnN0IE9TQVNDUklQVCA9ICdvc2FzY3JpcHQnO1xuY29uc3QgQVBQTEVfU0NSSVBUX0ZFQVRVUkUgPSAnYXBwbGVfc2NyaXB0JztcblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBFeGVjQXBwbGVTY3JpcHRPcHRpb25zXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHNjcmlwdCBBIHZhbGlkIEFwcGxlU2NyaXB0IHRvIGV4ZWN1dGVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbGFuZ3VhZ2UgT3ZlcnJpZGVzIHRoZSBzY3JpcHRpbmcgbGFuZ3VhZ2UuIEJhc2ljYWxseSwgc2V0cyB0aGUgdmFsdWUgb2YgYC1sYCBjb21tYW5kXG4gKiBsaW5lIGFyZ3VtZW50IG9mIGBvc2FzY3JpcHRgIHRvb2wuIElmIHVuc2V0IHRoZSBBcHBsZVNjcmlwdCBsYW5ndWFnZSBpcyBhc3N1bWVkLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBjb21tYW5kIEEgdmFsaWQgQXBwbGVTY3JpcHQgYXMgYSBzaW5nbGUgY29tbWFuZCAobm8gbGluZSBicmVha3MpIHRvIGV4ZWN1dGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gdGltZW91dCBbMjAwMDBdIFRoZSBudW1iZXIgb2Ygc2Vjb25kcyB0byB3YWl0IHVudGlsIGEgbG9uZy1ydW5uaW5nIGNvbW1hbmQgaXNcbiAqIGZpbmlzaGVkLiBBbiBlcnJvciBpcyB0aHJvd24gaWYgdGhlIGNvbW1hbmQgaXMgc3RpbGwgcnVubmluZyBhZnRlciB0aGlzIHRpbWVvdXQgZXhwaXJlcy5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gY3dkIFRoZSBwYXRoIHRvIGFuIGV4aXN0aW5nIGZvbGRlciwgd2hpY2ggaXMgZ29pbmcgdG8gYmUgc2V0IGFzIHRoZVxuICogd29ya2luZyBkaXJlY3RvcnkgZm9yIHRoZSBjb21tYW5kL3NjcmlwdCBiZWluZyBleGVjdXRlZC5cbiAqL1xuXG4vKipcbiAqIEV4ZWN1dGVzIHRoZSBnaXZlbiBBcHBsZVNjcmlwdCBjb21tYW5kIG9yIGEgd2hvbGUgc2NyaXB0IGJhc2VkIG9uIHRoZVxuICogZ2l2ZW4gb3B0aW9ucy4gRWl0aGVyIG9mIHRoZXNlIG9wdGlvbnMgbXVzdCBiZSBwcm92aWRlZC4gSWYgYm90aCBhcmUgcHJvdmlkZWRcbiAqIHRoZW4gdGhlIGBjb21tYW5kYCBvbmUgZ2V0cyB0aGUgcHJpb3JpdHkuXG4gKiBOb3RlIHRoYXQgQXBwbGVTY3JpcHQgY29tbWFuZCBjYW5ub3QgY29udGFpbiBsaW5lIGJyZWFrcy4gQ29uc2lkZXIgbWFraW5nIGl0XG4gKiB0byBhIHNjcmlwdCBpbiBzdWNoIGNhc2UuXG4gKiBOb3RlIHRoYXQgYnkgZGVmYXVsdCBBcHBsZVNjcmlwdCBlbmdpbmUgYmxvY2tzIGNvbW1hbmRzL3NjcmlwdHMgZXhlY3V0aW9uIGlmIHlvdXIgc2NyaXB0XG4gKiBpcyB0cnlpbmcgdG8gYWNjZXNzIHNvbWUgcHJpdmF0ZSBlbnRpdGllcywgbGlrZSBjYW1lcmFzIG9yIHRoZSBkZXNrdG9wIHNjcmVlblxuICogYW5kIG5vIHBlcm1pc3Npb25zIHRvIGRvIGl0IGFyZSBnaXZlbiB0byB0aGUgcGFyZW50IChmb3IgZXhhbXBsZSwgQXBwaXVtIG9yIFRlcm1pbmFsKVxuICogcHJvY2VzcyBpbiBTeXN0ZW0gUHJlZmVyZW5jZXMgLT4gUHJpdmFjeSBsaXN0LlxuICpcbiAqIEBwYXJhbSB7IUV4ZWNBcHBsZVNjcmlwdE9wdGlvbnN9IG9wdHNcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBhY3R1YWwgc3Rkb3V0IG9mIHRoZSBnaXZlbiBjb21tYW5kL3NjcmlwdFxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBleGl0IGNvZGUgb2YgdGhlIGdpdmVuIGNvbW1hbmQvc2NyaXB0IGlzIG5vdCB6ZXJvLlxuICogVGhlIGFjdHVhbCBzdGRlcnIgb3V0cHV0IGlzIHNldCB0byB0aGUgZXJyb3IgbWVzc2FnZSB2YWx1ZS5cbiAqL1xuY29tbWFuZHMubWFjb3NFeGVjQXBwbGVTY3JpcHQgPSBhc3luYyBmdW5jdGlvbiBtYWNvc0V4ZWNBcHBsZVNjcmlwdCAob3B0cyA9IHt9KSB7XG4gIHRoaXMuZW5zdXJlRmVhdHVyZUVuYWJsZWQoQVBQTEVfU0NSSVBUX0ZFQVRVUkUpO1xuXG4gIGNvbnN0IHtcbiAgICBzY3JpcHQsXG4gICAgbGFuZ3VhZ2UsXG4gICAgY29tbWFuZCxcbiAgICBjd2QsXG4gICAgdGltZW91dCxcbiAgfSA9IG9wdHM7XG4gIGlmICghc2NyaXB0ICYmICFjb21tYW5kKSB7XG4gICAgbG9nLmVycm9yQW5kVGhyb3coJ0FwcGxlU2NyaXB0IHNjcmlwdC9jb21tYW5kIG11c3Qgbm90IGJlIGVtcHR5Jyk7XG4gIH1cbiAgaWYgKC9cXG4vLnRlc3QoY29tbWFuZCkpIHtcbiAgICBsb2cuZXJyb3JBbmRUaHJvdygnQXBwbGVTY3JpcHQgY29tbWFuZHMgY2Fubm90IGNvbnRhaW4gbGluZSBicmVha3MnKTtcbiAgfVxuICAvLyAnY29tbWFuZCcgaGFzIHByaW9yaXR5IG92ZXIgJ3NjcmlwdCdcbiAgY29uc3Qgc2hvdWxkUnVuU2NyaXB0ID0gIWNvbW1hbmQ7XG5cbiAgY29uc3QgYXJncyA9IFtdO1xuICBpZiAobGFuZ3VhZ2UpIHtcbiAgICBhcmdzLnB1c2goJy1sJywgbGFuZ3VhZ2UpO1xuICB9XG4gIGxldCB0bXBSb290O1xuICB0cnkge1xuICAgIGlmIChzaG91bGRSdW5TY3JpcHQpIHtcbiAgICAgIHRtcFJvb3QgPSBhd2FpdCB0ZW1wRGlyLm9wZW5EaXIoKTtcbiAgICAgIGNvbnN0IHRtcFNjcmlwdFBhdGggPSBwYXRoLnJlc29sdmUodG1wUm9vdCwgJ2FwcGl1bV9zY3JpcHQuc2NwdCcpO1xuICAgICAgYXdhaXQgZnMud3JpdGVGaWxlKHRtcFNjcmlwdFBhdGgsIHNjcmlwdCwgJ3V0ZjgnKTtcbiAgICAgIGFyZ3MucHVzaCh0bXBTY3JpcHRQYXRoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXJncy5wdXNoKCctZScsIGNvbW1hbmQpO1xuICAgIH1cbiAgICBsb2cuaW5mbyhgUnVubmluZyAke09TQVNDUklQVH0gd2l0aCBhcmd1bWVudHM6ICR7dXRpbC5xdW90ZShhcmdzKX1gKTtcbiAgICB0cnkge1xuICAgICAgY29uc3Qge3N0ZG91dH0gPSBhd2FpdCBleGVjKE9TQVNDUklQVCwgYXJncywge2N3ZCwgdGltZW91dH0pO1xuICAgICAgcmV0dXJuIHN0ZG91dDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoZS5zdGRlcnIgfHwgZS5tZXNzYWdlKTtcbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgaWYgKHRtcFJvb3QpIHtcbiAgICAgIGF3YWl0IGZzLnJpbXJhZih0bXBSb290KTtcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCB7IGNvbW1hbmRzIH07XG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxTQUFTLEdBQUcsV0FBbEI7QUFDQSxNQUFNQyxvQkFBb0IsR0FBRyxjQUE3QjtBQUVBLE1BQU1DLFFBQVEsR0FBRyxFQUFqQjs7O0FBOEJBQSxRQUFRLENBQUNDLG9CQUFULEdBQWdDLGVBQWVBLG9CQUFmLENBQXFDQyxJQUFJLEdBQUcsRUFBNUMsRUFBZ0Q7RUFDOUUsS0FBS0Msb0JBQUwsQ0FBMEJKLG9CQUExQjtFQUVBLE1BQU07SUFDSkssTUFESTtJQUVKQyxRQUZJO0lBR0pDLE9BSEk7SUFJSkMsR0FKSTtJQUtKQztFQUxJLElBTUZOLElBTko7O0VBT0EsSUFBSSxDQUFDRSxNQUFELElBQVcsQ0FBQ0UsT0FBaEIsRUFBeUI7SUFDdkJHLGVBQUEsQ0FBSUMsYUFBSixDQUFrQiw4Q0FBbEI7RUFDRDs7RUFDRCxJQUFJLEtBQUtDLElBQUwsQ0FBVUwsT0FBVixDQUFKLEVBQXdCO0lBQ3RCRyxlQUFBLENBQUlDLGFBQUosQ0FBa0IsaURBQWxCO0VBQ0Q7O0VBRUQsTUFBTUUsZUFBZSxHQUFHLENBQUNOLE9BQXpCO0VBRUEsTUFBTU8sSUFBSSxHQUFHLEVBQWI7O0VBQ0EsSUFBSVIsUUFBSixFQUFjO0lBQ1pRLElBQUksQ0FBQ0MsSUFBTCxDQUFVLElBQVYsRUFBZ0JULFFBQWhCO0VBQ0Q7O0VBQ0QsSUFBSVUsT0FBSjs7RUFDQSxJQUFJO0lBQ0YsSUFBSUgsZUFBSixFQUFxQjtNQUNuQkcsT0FBTyxHQUFHLE1BQU1DLGdCQUFBLENBQVFDLE9BQVIsRUFBaEI7O01BQ0EsTUFBTUMsYUFBYSxHQUFHQyxhQUFBLENBQUtDLE9BQUwsQ0FBYUwsT0FBYixFQUFzQixvQkFBdEIsQ0FBdEI7O01BQ0EsTUFBTU0sV0FBQSxDQUFHQyxTQUFILENBQWFKLGFBQWIsRUFBNEJkLE1BQTVCLEVBQW9DLE1BQXBDLENBQU47TUFDQVMsSUFBSSxDQUFDQyxJQUFMLENBQVVJLGFBQVY7SUFDRCxDQUxELE1BS087TUFDTEwsSUFBSSxDQUFDQyxJQUFMLENBQVUsSUFBVixFQUFnQlIsT0FBaEI7SUFDRDs7SUFDREcsZUFBQSxDQUFJYyxJQUFKLENBQVUsV0FBVXpCLFNBQVUsb0JBQW1CMEIsYUFBQSxDQUFLQyxLQUFMLENBQVdaLElBQVgsQ0FBaUIsRUFBbEU7O0lBQ0EsSUFBSTtNQUNGLE1BQU07UUFBQ2E7TUFBRCxJQUFXLE1BQU0sSUFBQUMsa0JBQUEsRUFBSzdCLFNBQUwsRUFBZ0JlLElBQWhCLEVBQXNCO1FBQUNOLEdBQUQ7UUFBTUM7TUFBTixDQUF0QixDQUF2QjtNQUNBLE9BQU9rQixNQUFQO0lBQ0QsQ0FIRCxDQUdFLE9BQU9FLENBQVAsRUFBVTtNQUNWLE1BQU0sSUFBSUMsS0FBSixDQUFVRCxDQUFDLENBQUNFLE1BQUYsSUFBWUYsQ0FBQyxDQUFDRyxPQUF4QixDQUFOO0lBQ0Q7RUFDRixDQWhCRCxTQWdCVTtJQUNSLElBQUloQixPQUFKLEVBQWE7TUFDWCxNQUFNTSxXQUFBLENBQUdXLE1BQUgsQ0FBVWpCLE9BQVYsQ0FBTjtJQUNEO0VBQ0Y7QUFDRixDQTdDRDs7ZUFnRGVmLFEifQ==
@@ -11,7 +11,7 @@ require("source-map-support/register");
11
11
 
12
12
  var _lodash = _interopRequireDefault(require("lodash"));
13
13
 
14
- var _baseDriver = require("@appium/base-driver");
14
+ var _driver = require("appium/driver");
15
15
 
16
16
  var _logger = _interopRequireDefault(require("../logger"));
17
17
 
@@ -51,12 +51,12 @@ commands.execute = async function execute(script, args) {
51
51
  return await this.executeMacosCommand(script, _lodash.default.isArray(args) ? args[0] : args);
52
52
  }
53
53
 
54
- throw new _baseDriver.errors.NotImplementedError();
54
+ throw new _driver.errors.NotImplementedError();
55
55
  };
56
56
 
57
57
  commands.executeMacosCommand = async function executeMacosCommand(command, opts = {}) {
58
58
  if (!_lodash.default.has(EXTENSION_COMMANDS_MAPPING, command)) {
59
- throw new _baseDriver.errors.UnknownCommandError(`Unknown extension command "${command}". ` + `Only ${_lodash.default.keys(EXTENSION_COMMANDS_MAPPING)} commands are supported.`);
59
+ throw new _driver.errors.UnknownCommandError(`Unknown extension command "${command}". ` + `Only ${_lodash.default.keys(EXTENSION_COMMANDS_MAPPING)} commands are supported.`);
60
60
  }
61
61
 
62
62
  return await this[EXTENSION_COMMANDS_MAPPING[command]](opts);
@@ -66,4 +66,4 @@ var _default = commands;
66
66
  exports.default = _default;require('source-map-support').install();
67
67
 
68
68
 
69
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2V4ZWN1dGUuanMiLCJuYW1lcyI6WyJjb21tYW5kcyIsIkVYVEVOU0lPTl9DT01NQU5EU19NQVBQSU5HIiwic2V0VmFsdWUiLCJjbGljayIsInNjcm9sbCIsInN3aXBlIiwicmlnaHRDbGljayIsImhvdmVyIiwiZG91YmxlQ2xpY2siLCJjbGlja0FuZERyYWciLCJjbGlja0FuZERyYWdBbmRIb2xkIiwia2V5cyIsInRhcCIsImRvdWJsZVRhcCIsInByZXNzIiwicHJlc3NBbmREcmFnIiwicHJlc3NBbmREcmFnQW5kSG9sZCIsInNvdXJjZSIsImxhdW5jaEFwcCIsImFjdGl2YXRlQXBwIiwidGVybWluYXRlQXBwIiwicXVlcnlBcHBTdGF0ZSIsImFwcGxlU2NyaXB0Iiwic3RhcnRSZWNvcmRpbmdTY3JlZW4iLCJzdG9wUmVjb3JkaW5nU2NyZWVuIiwic2NyZWVuc2hvdHMiLCJleGVjdXRlIiwic2NyaXB0IiwiYXJncyIsIm1hdGNoIiwibG9nIiwiaW5mbyIsInJlcGxhY2UiLCJ0cmltIiwiZXhlY3V0ZU1hY29zQ29tbWFuZCIsIl8iLCJpc0FycmF5IiwiZXJyb3JzIiwiTm90SW1wbGVtZW50ZWRFcnJvciIsImNvbW1hbmQiLCJvcHRzIiwiaGFzIiwiVW5rbm93bkNvbW1hbmRFcnJvciJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9leGVjdXRlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdAYXBwaXVtL2Jhc2UtZHJpdmVyJztcbmltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuY29uc3QgRVhURU5TSU9OX0NPTU1BTkRTX01BUFBJTkcgPSB7XG4gIHNldFZhbHVlOiAnbWFjb3NTZXRWYWx1ZScsXG4gIGNsaWNrOiAnbWFjb3NDbGljaycsXG4gIHNjcm9sbDogJ21hY29zU2Nyb2xsJyxcbiAgc3dpcGU6ICdtYWNvc1N3aXBlJyxcbiAgcmlnaHRDbGljazogJ21hY29zUmlnaHRDbGljaycsXG4gIGhvdmVyOiAnbWFjb3NIb3ZlcicsXG4gIGRvdWJsZUNsaWNrOiAnbWFjb3NEb3VibGVDbGljaycsXG4gIGNsaWNrQW5kRHJhZzogJ21hY29zQ2xpY2tBbmREcmFnJyxcbiAgY2xpY2tBbmREcmFnQW5kSG9sZDogJ21hY29zQ2xpY2tBbmREcmFnQW5kSG9sZCcsXG4gIGtleXM6ICdtYWNvc0tleXMnLFxuXG4gIHRhcDogJ21hY29zVGFwJyxcbiAgZG91YmxlVGFwOiAnbWFjb3NEb3VibGVUYXAnLFxuICBwcmVzczogJ21hY29zUHJlc3MnLFxuICBwcmVzc0FuZERyYWc6ICdtYWNvc1ByZXNzQW5kRHJhZycsXG4gIHByZXNzQW5kRHJhZ0FuZEhvbGQ6ICdtYWNvc1ByZXNzQW5kRHJhZ0FuZEhvbGQnLFxuXG4gIHNvdXJjZTogJ21hY29zU291cmNlJyxcblxuICBsYXVuY2hBcHA6ICdtYWNvc0xhdW5jaEFwcCcsXG4gIGFjdGl2YXRlQXBwOiAnbWFjb3NBY3RpdmF0ZUFwcCcsXG4gIHRlcm1pbmF0ZUFwcDogJ21hY29zVGVybWluYXRlQXBwJyxcbiAgcXVlcnlBcHBTdGF0ZTogJ21hY29zUXVlcnlBcHBTdGF0ZScsXG5cbiAgYXBwbGVTY3JpcHQ6ICdtYWNvc0V4ZWNBcHBsZVNjcmlwdCcsXG5cbiAgc3RhcnRSZWNvcmRpbmdTY3JlZW46ICdzdGFydFJlY29yZGluZ1NjcmVlbicsXG4gIHN0b3BSZWNvcmRpbmdTY3JlZW46ICdzdG9wUmVjb3JkaW5nU2NyZWVuJyxcblxuICBzY3JlZW5zaG90czogJ21hY29zU2NyZWVuc2hvdHMnLFxufTtcblxuY29tbWFuZHMuZXhlY3V0ZSA9IGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGUgKHNjcmlwdCwgYXJncykge1xuICBpZiAoc2NyaXB0Lm1hdGNoKC9ebWFjb3M6LykpIHtcbiAgICBsb2cuaW5mbyhgRXhlY3V0aW5nIGV4dGVuc2lvbiBjb21tYW5kICcke3NjcmlwdH0nYCk7XG4gICAgc2NyaXB0ID0gc2NyaXB0LnJlcGxhY2UoL15tYWNvczovLCAnJykudHJpbSgpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmV4ZWN1dGVNYWNvc0NvbW1hbmQoc2NyaXB0LCBfLmlzQXJyYXkoYXJncykgPyBhcmdzWzBdIDogYXJncyk7XG4gIH1cbiAgdGhyb3cgbmV3IGVycm9ycy5Ob3RJbXBsZW1lbnRlZEVycm9yKCk7XG59O1xuXG5jb21tYW5kcy5leGVjdXRlTWFjb3NDb21tYW5kID0gYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZU1hY29zQ29tbWFuZCAoY29tbWFuZCwgb3B0cyA9IHt9KSB7XG4gIGlmICghXy5oYXMoRVhURU5TSU9OX0NPTU1BTkRTX01BUFBJTkcsIGNvbW1hbmQpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Vbmtub3duQ29tbWFuZEVycm9yKGBVbmtub3duIGV4dGVuc2lvbiBjb21tYW5kIFwiJHtjb21tYW5kfVwiLiBgICtcbiAgICAgIGBPbmx5ICR7Xy5rZXlzKEVYVEVOU0lPTl9DT01NQU5EU19NQVBQSU5HKX0gY29tbWFuZHMgYXJlIHN1cHBvcnRlZC5gKTtcbiAgfVxuICByZXR1cm4gYXdhaXQgdGhpc1tFWFRFTlNJT05fQ09NTUFORFNfTUFQUElOR1tjb21tYW5kXV0ob3B0cyk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxRQUFRLEdBQUcsRUFBakI7QUFFQSxNQUFNQywwQkFBMEIsR0FBRztFQUNqQ0MsUUFBUSxFQUFFLGVBRHVCO0VBRWpDQyxLQUFLLEVBQUUsWUFGMEI7RUFHakNDLE1BQU0sRUFBRSxhQUh5QjtFQUlqQ0MsS0FBSyxFQUFFLFlBSjBCO0VBS2pDQyxVQUFVLEVBQUUsaUJBTHFCO0VBTWpDQyxLQUFLLEVBQUUsWUFOMEI7RUFPakNDLFdBQVcsRUFBRSxrQkFQb0I7RUFRakNDLFlBQVksRUFBRSxtQkFSbUI7RUFTakNDLG1CQUFtQixFQUFFLDBCQVRZO0VBVWpDQyxJQUFJLEVBQUUsV0FWMkI7RUFZakNDLEdBQUcsRUFBRSxVQVo0QjtFQWFqQ0MsU0FBUyxFQUFFLGdCQWJzQjtFQWNqQ0MsS0FBSyxFQUFFLFlBZDBCO0VBZWpDQyxZQUFZLEVBQUUsbUJBZm1CO0VBZ0JqQ0MsbUJBQW1CLEVBQUUsMEJBaEJZO0VBa0JqQ0MsTUFBTSxFQUFFLGFBbEJ5QjtFQW9CakNDLFNBQVMsRUFBRSxnQkFwQnNCO0VBcUJqQ0MsV0FBVyxFQUFFLGtCQXJCb0I7RUFzQmpDQyxZQUFZLEVBQUUsbUJBdEJtQjtFQXVCakNDLGFBQWEsRUFBRSxvQkF2QmtCO0VBeUJqQ0MsV0FBVyxFQUFFLHNCQXpCb0I7RUEyQmpDQyxvQkFBb0IsRUFBRSxzQkEzQlc7RUE0QmpDQyxtQkFBbUIsRUFBRSxxQkE1Qlk7RUE4QmpDQyxXQUFXLEVBQUU7QUE5Qm9CLENBQW5DOztBQWlDQXpCLFFBQVEsQ0FBQzBCLE9BQVQsR0FBbUIsZUFBZUEsT0FBZixDQUF3QkMsTUFBeEIsRUFBZ0NDLElBQWhDLEVBQXNDO0VBQ3ZELElBQUlELE1BQU0sQ0FBQ0UsS0FBUCxDQUFhLFNBQWIsQ0FBSixFQUE2QjtJQUMzQkMsZ0JBQUlDLElBQUosQ0FBVSxnQ0FBK0JKLE1BQU8sR0FBaEQ7O0lBQ0FBLE1BQU0sR0FBR0EsTUFBTSxDQUFDSyxPQUFQLENBQWUsU0FBZixFQUEwQixFQUExQixFQUE4QkMsSUFBOUIsRUFBVDtJQUNBLE9BQU8sTUFBTSxLQUFLQyxtQkFBTCxDQUF5QlAsTUFBekIsRUFBaUNRLGdCQUFFQyxPQUFGLENBQVVSLElBQVYsSUFBa0JBLElBQUksQ0FBQyxDQUFELENBQXRCLEdBQTRCQSxJQUE3RCxDQUFiO0VBQ0Q7O0VBQ0QsTUFBTSxJQUFJUyxtQkFBT0MsbUJBQVgsRUFBTjtBQUNELENBUEQ7O0FBU0F0QyxRQUFRLENBQUNrQyxtQkFBVCxHQUErQixlQUFlQSxtQkFBZixDQUFvQ0ssT0FBcEMsRUFBNkNDLElBQUksR0FBRyxFQUFwRCxFQUF3RDtFQUNyRixJQUFJLENBQUNMLGdCQUFFTSxHQUFGLENBQU14QywwQkFBTixFQUFrQ3NDLE9BQWxDLENBQUwsRUFBaUQ7SUFDL0MsTUFBTSxJQUFJRixtQkFBT0ssbUJBQVgsQ0FBZ0MsOEJBQTZCSCxPQUFRLEtBQXRDLEdBQ2xDLFFBQU9KLGdCQUFFeEIsSUFBRixDQUFPViwwQkFBUCxDQUFtQywwQkFEdkMsQ0FBTjtFQUVEOztFQUNELE9BQU8sTUFBTSxLQUFLQSwwQkFBMEIsQ0FBQ3NDLE9BQUQsQ0FBL0IsRUFBMENDLElBQTFDLENBQWI7QUFDRCxDQU5EOztlQVFleEMsUSJ9
69
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2V4ZWN1dGUuanMiLCJuYW1lcyI6WyJjb21tYW5kcyIsIkVYVEVOU0lPTl9DT01NQU5EU19NQVBQSU5HIiwic2V0VmFsdWUiLCJjbGljayIsInNjcm9sbCIsInN3aXBlIiwicmlnaHRDbGljayIsImhvdmVyIiwiZG91YmxlQ2xpY2siLCJjbGlja0FuZERyYWciLCJjbGlja0FuZERyYWdBbmRIb2xkIiwia2V5cyIsInRhcCIsImRvdWJsZVRhcCIsInByZXNzIiwicHJlc3NBbmREcmFnIiwicHJlc3NBbmREcmFnQW5kSG9sZCIsInNvdXJjZSIsImxhdW5jaEFwcCIsImFjdGl2YXRlQXBwIiwidGVybWluYXRlQXBwIiwicXVlcnlBcHBTdGF0ZSIsImFwcGxlU2NyaXB0Iiwic3RhcnRSZWNvcmRpbmdTY3JlZW4iLCJzdG9wUmVjb3JkaW5nU2NyZWVuIiwic2NyZWVuc2hvdHMiLCJleGVjdXRlIiwic2NyaXB0IiwiYXJncyIsIm1hdGNoIiwibG9nIiwiaW5mbyIsInJlcGxhY2UiLCJ0cmltIiwiZXhlY3V0ZU1hY29zQ29tbWFuZCIsIl8iLCJpc0FycmF5IiwiZXJyb3JzIiwiTm90SW1wbGVtZW50ZWRFcnJvciIsImNvbW1hbmQiLCJvcHRzIiwiaGFzIiwiVW5rbm93bkNvbW1hbmRFcnJvciJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9leGVjdXRlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdhcHBpdW0vZHJpdmVyJztcbmltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuY29uc3QgRVhURU5TSU9OX0NPTU1BTkRTX01BUFBJTkcgPSB7XG4gIHNldFZhbHVlOiAnbWFjb3NTZXRWYWx1ZScsXG4gIGNsaWNrOiAnbWFjb3NDbGljaycsXG4gIHNjcm9sbDogJ21hY29zU2Nyb2xsJyxcbiAgc3dpcGU6ICdtYWNvc1N3aXBlJyxcbiAgcmlnaHRDbGljazogJ21hY29zUmlnaHRDbGljaycsXG4gIGhvdmVyOiAnbWFjb3NIb3ZlcicsXG4gIGRvdWJsZUNsaWNrOiAnbWFjb3NEb3VibGVDbGljaycsXG4gIGNsaWNrQW5kRHJhZzogJ21hY29zQ2xpY2tBbmREcmFnJyxcbiAgY2xpY2tBbmREcmFnQW5kSG9sZDogJ21hY29zQ2xpY2tBbmREcmFnQW5kSG9sZCcsXG4gIGtleXM6ICdtYWNvc0tleXMnLFxuXG4gIHRhcDogJ21hY29zVGFwJyxcbiAgZG91YmxlVGFwOiAnbWFjb3NEb3VibGVUYXAnLFxuICBwcmVzczogJ21hY29zUHJlc3MnLFxuICBwcmVzc0FuZERyYWc6ICdtYWNvc1ByZXNzQW5kRHJhZycsXG4gIHByZXNzQW5kRHJhZ0FuZEhvbGQ6ICdtYWNvc1ByZXNzQW5kRHJhZ0FuZEhvbGQnLFxuXG4gIHNvdXJjZTogJ21hY29zU291cmNlJyxcblxuICBsYXVuY2hBcHA6ICdtYWNvc0xhdW5jaEFwcCcsXG4gIGFjdGl2YXRlQXBwOiAnbWFjb3NBY3RpdmF0ZUFwcCcsXG4gIHRlcm1pbmF0ZUFwcDogJ21hY29zVGVybWluYXRlQXBwJyxcbiAgcXVlcnlBcHBTdGF0ZTogJ21hY29zUXVlcnlBcHBTdGF0ZScsXG5cbiAgYXBwbGVTY3JpcHQ6ICdtYWNvc0V4ZWNBcHBsZVNjcmlwdCcsXG5cbiAgc3RhcnRSZWNvcmRpbmdTY3JlZW46ICdzdGFydFJlY29yZGluZ1NjcmVlbicsXG4gIHN0b3BSZWNvcmRpbmdTY3JlZW46ICdzdG9wUmVjb3JkaW5nU2NyZWVuJyxcblxuICBzY3JlZW5zaG90czogJ21hY29zU2NyZWVuc2hvdHMnLFxufTtcblxuY29tbWFuZHMuZXhlY3V0ZSA9IGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGUgKHNjcmlwdCwgYXJncykge1xuICBpZiAoc2NyaXB0Lm1hdGNoKC9ebWFjb3M6LykpIHtcbiAgICBsb2cuaW5mbyhgRXhlY3V0aW5nIGV4dGVuc2lvbiBjb21tYW5kICcke3NjcmlwdH0nYCk7XG4gICAgc2NyaXB0ID0gc2NyaXB0LnJlcGxhY2UoL15tYWNvczovLCAnJykudHJpbSgpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmV4ZWN1dGVNYWNvc0NvbW1hbmQoc2NyaXB0LCBfLmlzQXJyYXkoYXJncykgPyBhcmdzWzBdIDogYXJncyk7XG4gIH1cbiAgdGhyb3cgbmV3IGVycm9ycy5Ob3RJbXBsZW1lbnRlZEVycm9yKCk7XG59O1xuXG5jb21tYW5kcy5leGVjdXRlTWFjb3NDb21tYW5kID0gYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZU1hY29zQ29tbWFuZCAoY29tbWFuZCwgb3B0cyA9IHt9KSB7XG4gIGlmICghXy5oYXMoRVhURU5TSU9OX0NPTU1BTkRTX01BUFBJTkcsIGNvbW1hbmQpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Vbmtub3duQ29tbWFuZEVycm9yKGBVbmtub3duIGV4dGVuc2lvbiBjb21tYW5kIFwiJHtjb21tYW5kfVwiLiBgICtcbiAgICAgIGBPbmx5ICR7Xy5rZXlzKEVYVEVOU0lPTl9DT01NQU5EU19NQVBQSU5HKX0gY29tbWFuZHMgYXJlIHN1cHBvcnRlZC5gKTtcbiAgfVxuICByZXR1cm4gYXdhaXQgdGhpc1tFWFRFTlNJT05fQ09NTUFORFNfTUFQUElOR1tjb21tYW5kXV0ob3B0cyk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxRQUFRLEdBQUcsRUFBakI7QUFFQSxNQUFNQywwQkFBMEIsR0FBRztFQUNqQ0MsUUFBUSxFQUFFLGVBRHVCO0VBRWpDQyxLQUFLLEVBQUUsWUFGMEI7RUFHakNDLE1BQU0sRUFBRSxhQUh5QjtFQUlqQ0MsS0FBSyxFQUFFLFlBSjBCO0VBS2pDQyxVQUFVLEVBQUUsaUJBTHFCO0VBTWpDQyxLQUFLLEVBQUUsWUFOMEI7RUFPakNDLFdBQVcsRUFBRSxrQkFQb0I7RUFRakNDLFlBQVksRUFBRSxtQkFSbUI7RUFTakNDLG1CQUFtQixFQUFFLDBCQVRZO0VBVWpDQyxJQUFJLEVBQUUsV0FWMkI7RUFZakNDLEdBQUcsRUFBRSxVQVo0QjtFQWFqQ0MsU0FBUyxFQUFFLGdCQWJzQjtFQWNqQ0MsS0FBSyxFQUFFLFlBZDBCO0VBZWpDQyxZQUFZLEVBQUUsbUJBZm1CO0VBZ0JqQ0MsbUJBQW1CLEVBQUUsMEJBaEJZO0VBa0JqQ0MsTUFBTSxFQUFFLGFBbEJ5QjtFQW9CakNDLFNBQVMsRUFBRSxnQkFwQnNCO0VBcUJqQ0MsV0FBVyxFQUFFLGtCQXJCb0I7RUFzQmpDQyxZQUFZLEVBQUUsbUJBdEJtQjtFQXVCakNDLGFBQWEsRUFBRSxvQkF2QmtCO0VBeUJqQ0MsV0FBVyxFQUFFLHNCQXpCb0I7RUEyQmpDQyxvQkFBb0IsRUFBRSxzQkEzQlc7RUE0QmpDQyxtQkFBbUIsRUFBRSxxQkE1Qlk7RUE4QmpDQyxXQUFXLEVBQUU7QUE5Qm9CLENBQW5DOztBQWlDQXpCLFFBQVEsQ0FBQzBCLE9BQVQsR0FBbUIsZUFBZUEsT0FBZixDQUF3QkMsTUFBeEIsRUFBZ0NDLElBQWhDLEVBQXNDO0VBQ3ZELElBQUlELE1BQU0sQ0FBQ0UsS0FBUCxDQUFhLFNBQWIsQ0FBSixFQUE2QjtJQUMzQkMsZUFBQSxDQUFJQyxJQUFKLENBQVUsZ0NBQStCSixNQUFPLEdBQWhEOztJQUNBQSxNQUFNLEdBQUdBLE1BQU0sQ0FBQ0ssT0FBUCxDQUFlLFNBQWYsRUFBMEIsRUFBMUIsRUFBOEJDLElBQTlCLEVBQVQ7SUFDQSxPQUFPLE1BQU0sS0FBS0MsbUJBQUwsQ0FBeUJQLE1BQXpCLEVBQWlDUSxlQUFBLENBQUVDLE9BQUYsQ0FBVVIsSUFBVixJQUFrQkEsSUFBSSxDQUFDLENBQUQsQ0FBdEIsR0FBNEJBLElBQTdELENBQWI7RUFDRDs7RUFDRCxNQUFNLElBQUlTLGNBQUEsQ0FBT0MsbUJBQVgsRUFBTjtBQUNELENBUEQ7O0FBU0F0QyxRQUFRLENBQUNrQyxtQkFBVCxHQUErQixlQUFlQSxtQkFBZixDQUFvQ0ssT0FBcEMsRUFBNkNDLElBQUksR0FBRyxFQUFwRCxFQUF3RDtFQUNyRixJQUFJLENBQUNMLGVBQUEsQ0FBRU0sR0FBRixDQUFNeEMsMEJBQU4sRUFBa0NzQyxPQUFsQyxDQUFMLEVBQWlEO0lBQy9DLE1BQU0sSUFBSUYsY0FBQSxDQUFPSyxtQkFBWCxDQUFnQyw4QkFBNkJILE9BQVEsS0FBdEMsR0FDbEMsUUFBT0osZUFBQSxDQUFFeEIsSUFBRixDQUFPViwwQkFBUCxDQUFtQywwQkFEdkMsQ0FBTjtFQUVEOztFQUNELE9BQU8sTUFBTSxLQUFLQSwwQkFBMEIsQ0FBQ3NDLE9BQUQsQ0FBL0IsRUFBMENDLElBQTFDLENBQWI7QUFDRCxDQU5EOztlQVFleEMsUSJ9
@@ -7,7 +7,7 @@ exports.default = exports.commands = void 0;
7
7
 
8
8
  require("source-map-support/register");
9
9
 
10
- var _support = require("@appium/support");
10
+ var _support = require("appium/support");
11
11
 
12
12
  const commands = {};
13
13
  exports.commands = commands;
@@ -32,4 +32,4 @@ var _default = commands;
32
32
  exports.default = _default;require('source-map-support').install();
33
33
 
34
34
 
35
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2ZpbmQuanMiLCJuYW1lcyI6WyJjb21tYW5kcyIsImZpbmRFbE9yRWxzIiwic3RyYXRlZ3kiLCJzZWxlY3RvciIsIm11bHQiLCJjb250ZXh0IiwidXRpbCIsInVud3JhcEVsZW1lbnQiLCJlbmRwb2ludCIsIndkYSIsInByb3h5IiwiY29tbWFuZCIsInVzaW5nIiwidmFsdWUiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvY29tbWFuZHMvZmluZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcblxuXG5jb25zdCBjb21tYW5kcyA9IHt9O1xuXG4vLyBUaGlzIGlzIG5lZWRlZCB0byBtYWtlIGxvb2t1cCBieSBpbWFnZSB3b3JraW5nXG5jb21tYW5kcy5maW5kRWxPckVscyA9IGFzeW5jIGZ1bmN0aW9uIGZpbmRFbE9yRWxzIChzdHJhdGVneSwgc2VsZWN0b3IsIG11bHQsIGNvbnRleHQpIHtcbiAgY29udGV4dCA9IHV0aWwudW53cmFwRWxlbWVudChjb250ZXh0KTtcbiAgY29uc3QgZW5kcG9pbnQgPSBgL2VsZW1lbnQke2NvbnRleHQgPyBgLyR7Y29udGV4dH0vZWxlbWVudGAgOiAnJ30ke211bHQgPyAncycgOiAnJ31gO1xuXG4gIGlmIChzdHJhdGVneSA9PT0gJy1pb3MgcHJlZGljYXRlIHN0cmluZycpIHtcbiAgICBzdHJhdGVneSA9ICdwcmVkaWNhdGUgc3RyaW5nJztcbiAgfSBlbHNlIGlmIChzdHJhdGVneSA9PT0gJy1pb3MgY2xhc3MgY2hhaW4nKSB7XG4gICAgc3RyYXRlZ3kgPSAnY2xhc3MgY2hhaW4nO1xuICB9XG5cbiAgcmV0dXJuIGF3YWl0IHRoaXMud2RhLnByb3h5LmNvbW1hbmQoZW5kcG9pbnQsICdQT1NUJywge1xuICAgIHVzaW5nOiBzdHJhdGVneSxcbiAgICB2YWx1ZTogc2VsZWN0b3IsXG4gIH0pO1xufTtcblxuXG5leHBvcnQgeyBjb21tYW5kcyB9O1xuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUdBLE1BQU1BLFFBQVEsR0FBRyxFQUFqQjs7O0FBR0FBLFFBQVEsQ0FBQ0MsV0FBVCxHQUF1QixlQUFlQSxXQUFmLENBQTRCQyxRQUE1QixFQUFzQ0MsUUFBdEMsRUFBZ0RDLElBQWhELEVBQXNEQyxPQUF0RCxFQUErRDtFQUNwRkEsT0FBTyxHQUFHQyxjQUFLQyxhQUFMLENBQW1CRixPQUFuQixDQUFWO0VBQ0EsTUFBTUcsUUFBUSxHQUFJLFdBQVVILE9BQU8sR0FBSSxJQUFHQSxPQUFRLFVBQWYsR0FBMkIsRUFBRyxHQUFFRCxJQUFJLEdBQUcsR0FBSCxHQUFTLEVBQUcsRUFBbkY7O0VBRUEsSUFBSUYsUUFBUSxLQUFLLHVCQUFqQixFQUEwQztJQUN4Q0EsUUFBUSxHQUFHLGtCQUFYO0VBQ0QsQ0FGRCxNQUVPLElBQUlBLFFBQVEsS0FBSyxrQkFBakIsRUFBcUM7SUFDMUNBLFFBQVEsR0FBRyxhQUFYO0VBQ0Q7O0VBRUQsT0FBTyxNQUFNLEtBQUtPLEdBQUwsQ0FBU0MsS0FBVCxDQUFlQyxPQUFmLENBQXVCSCxRQUF2QixFQUFpQyxNQUFqQyxFQUF5QztJQUNwREksS0FBSyxFQUFFVixRQUQ2QztJQUVwRFcsS0FBSyxFQUFFVjtFQUY2QyxDQUF6QyxDQUFiO0FBSUQsQ0FkRDs7ZUFrQmVILFEifQ==
35
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2ZpbmQuanMiLCJuYW1lcyI6WyJjb21tYW5kcyIsImZpbmRFbE9yRWxzIiwic3RyYXRlZ3kiLCJzZWxlY3RvciIsIm11bHQiLCJjb250ZXh0IiwidXRpbCIsInVud3JhcEVsZW1lbnQiLCJlbmRwb2ludCIsIndkYSIsInByb3h5IiwiY29tbWFuZCIsInVzaW5nIiwidmFsdWUiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvY29tbWFuZHMvZmluZC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1dGlsIH0gZnJvbSAnYXBwaXVtL3N1cHBvcnQnO1xuXG5cbmNvbnN0IGNvbW1hbmRzID0ge307XG5cbi8vIFRoaXMgaXMgbmVlZGVkIHRvIG1ha2UgbG9va3VwIGJ5IGltYWdlIHdvcmtpbmdcbmNvbW1hbmRzLmZpbmRFbE9yRWxzID0gYXN5bmMgZnVuY3Rpb24gZmluZEVsT3JFbHMgKHN0cmF0ZWd5LCBzZWxlY3RvciwgbXVsdCwgY29udGV4dCkge1xuICBjb250ZXh0ID0gdXRpbC51bndyYXBFbGVtZW50KGNvbnRleHQpO1xuICBjb25zdCBlbmRwb2ludCA9IGAvZWxlbWVudCR7Y29udGV4dCA/IGAvJHtjb250ZXh0fS9lbGVtZW50YCA6ICcnfSR7bXVsdCA/ICdzJyA6ICcnfWA7XG5cbiAgaWYgKHN0cmF0ZWd5ID09PSAnLWlvcyBwcmVkaWNhdGUgc3RyaW5nJykge1xuICAgIHN0cmF0ZWd5ID0gJ3ByZWRpY2F0ZSBzdHJpbmcnO1xuICB9IGVsc2UgaWYgKHN0cmF0ZWd5ID09PSAnLWlvcyBjbGFzcyBjaGFpbicpIHtcbiAgICBzdHJhdGVneSA9ICdjbGFzcyBjaGFpbic7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgdGhpcy53ZGEucHJveHkuY29tbWFuZChlbmRwb2ludCwgJ1BPU1QnLCB7XG4gICAgdXNpbmc6IHN0cmF0ZWd5LFxuICAgIHZhbHVlOiBzZWxlY3RvcixcbiAgfSk7XG59O1xuXG5cbmV4cG9ydCB7IGNvbW1hbmRzIH07XG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBR0EsTUFBTUEsUUFBUSxHQUFHLEVBQWpCOzs7QUFHQUEsUUFBUSxDQUFDQyxXQUFULEdBQXVCLGVBQWVBLFdBQWYsQ0FBNEJDLFFBQTVCLEVBQXNDQyxRQUF0QyxFQUFnREMsSUFBaEQsRUFBc0RDLE9BQXRELEVBQStEO0VBQ3BGQSxPQUFPLEdBQUdDLGFBQUEsQ0FBS0MsYUFBTCxDQUFtQkYsT0FBbkIsQ0FBVjtFQUNBLE1BQU1HLFFBQVEsR0FBSSxXQUFVSCxPQUFPLEdBQUksSUFBR0EsT0FBUSxVQUFmLEdBQTJCLEVBQUcsR0FBRUQsSUFBSSxHQUFHLEdBQUgsR0FBUyxFQUFHLEVBQW5GOztFQUVBLElBQUlGLFFBQVEsS0FBSyx1QkFBakIsRUFBMEM7SUFDeENBLFFBQVEsR0FBRyxrQkFBWDtFQUNELENBRkQsTUFFTyxJQUFJQSxRQUFRLEtBQUssa0JBQWpCLEVBQXFDO0lBQzFDQSxRQUFRLEdBQUcsYUFBWDtFQUNEOztFQUVELE9BQU8sTUFBTSxLQUFLTyxHQUFMLENBQVNDLEtBQVQsQ0FBZUMsT0FBZixDQUF1QkgsUUFBdkIsRUFBaUMsTUFBakMsRUFBeUM7SUFDcERJLEtBQUssRUFBRVYsUUFENkM7SUFFcERXLEtBQUssRUFBRVY7RUFGNkMsQ0FBekMsQ0FBYjtBQUlELENBZEQ7O2VBa0JlSCxRIn0=
@@ -7,9 +7,9 @@ exports.default = void 0;
7
7
 
8
8
  require("source-map-support/register");
9
9
 
10
- var _support = require("@appium/support");
10
+ var _support = require("appium/support");
11
11
 
12
- var _baseDriver = require("@appium/base-driver");
12
+ var _driver = require("appium/driver");
13
13
 
14
14
  const commands = {};
15
15
 
@@ -31,7 +31,7 @@ function requireUuid(options = {}, keyNames = ['elementId', 'element']) {
31
31
  const result = extractUuid(options, keyNames);
32
32
 
33
33
  if (!result) {
34
- throw new _baseDriver.errors.InvalidArgumentError(`${keyNames[0]} field is mandatory`);
34
+ throw new _driver.errors.InvalidArgumentError(`${keyNames[0]} field is mandatory`);
35
35
  }
36
36
 
37
37
  return result;
@@ -323,4 +323,4 @@ var _default = commands;
323
323
  exports.default = _default;require('source-map-support').install();
324
324
 
325
325
 
326
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2dlc3R1cmVzLmpzIiwibmFtZXMiOlsiY29tbWFuZHMiLCJleHRyYWN0VXVpZCIsIm9wdGlvbnMiLCJrZXlOYW1lcyIsIm5hbWUiLCJyZXN1bHQiLCJ1dGlsIiwidW53cmFwRWxlbWVudCIsInJlcXVpcmVVdWlkIiwiZXJyb3JzIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJtYWNvc1NldFZhbHVlIiwib3B0cyIsInV1aWQiLCJ2YWx1ZSIsInRleHQiLCJrZXlNb2RpZmllckZsYWdzIiwid2RhIiwicHJveHkiLCJjb21tYW5kIiwibWFjb3NDbGljayIsIngiLCJ5IiwidXJsIiwibWFjb3NTY3JvbGwiLCJkZWx0YVgiLCJkZWx0YVkiLCJtYWNvc1N3aXBlIiwiZGlyZWN0aW9uIiwidmVsb2NpdHkiLCJtYWNvc1JpZ2h0Q2xpY2siLCJtYWNvc0hvdmVyIiwibWFjb3NEb3VibGVDbGljayIsIm1hY29zQ2xpY2tBbmREcmFnIiwic291cmNlVXVpZCIsImRlc3RVdWlkIiwic3RhcnRYIiwic3RhcnRZIiwiZW5kWCIsImVuZFkiLCJkdXJhdGlvbiIsImRlc3QiLCJ3cmFwRWxlbWVudCIsIm1hY29zQ2xpY2tBbmREcmFnQW5kSG9sZCIsImhvbGREdXJhdGlvbiIsIm1hY29zS2V5cyIsImtleXMiLCJtYWNvc1ByZXNzQW5kSG9sZCIsIm1hY29zVGFwIiwibWFjb3NEb3VibGVUYXAiLCJtYWNvc1ByZXNzQW5kRHJhZyIsIm1hY29zUHJlc3NBbmREcmFnQW5kSG9sZCJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9nZXN0dXJlcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuXG5jb25zdCBjb21tYW5kcyA9IHt9O1xuXG5mdW5jdGlvbiBleHRyYWN0VXVpZCAob3B0aW9ucyA9IHt9LCBrZXlOYW1lcyA9IFsnZWxlbWVudElkJywgJ2VsZW1lbnQnXSkge1xuICBmb3IgKGNvbnN0IG5hbWUgb2Yga2V5TmFtZXMpIHtcbiAgICBpZiAob3B0aW9uc1tuYW1lXSkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gdXRpbC51bndyYXBFbGVtZW50KG9wdGlvbnNbbmFtZV0pO1xuICAgICAgaWYgKHJlc3VsdCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gcmVxdWlyZVV1aWQgKG9wdGlvbnMgPSB7fSwga2V5TmFtZXMgPSBbJ2VsZW1lbnRJZCcsICdlbGVtZW50J10pIHtcbiAgY29uc3QgcmVzdWx0ID0gZXh0cmFjdFV1aWQob3B0aW9ucywga2V5TmFtZXMpO1xuICBpZiAoIXJlc3VsdCkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYCR7a2V5TmFtZXNbMF19IGZpZWxkIGlzIG1hbmRhdG9yeWApO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTZXRWYWx1ZU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7IXN0cmluZ30gZWxlbWVudElkIHV1aWQgb2YgdGhlIGVsZW1lbnQgdG8gc2V0IHZhbHVlIGZvclxuICogQHByb3BlcnR5IHsqfSB2YWx1ZSB2YWx1ZSB0byBzZXQuIENvdWxkIGFsc28gYmUgYW4gYXJyYXlcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB0ZXh0IHRleHQgdG8gc2V0LiBJZiBib3RoIHZhbHVlIGFuZCB0ZXh0IGFyZSBzZXRcbiAqIHRoZW4gYHZhbHVlYCBpcyBwcmVmZXJyZWRcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0ga2V5TW9kaWZpZXJGbGFncyBpZiBzZXQgdGhlbiB0aGUgZ2l2ZW4ga2V5IG1vZGlmaWVycyB3aWxsIGJlXG4gKiBhcHBsaWVkIHdoaWxlIHRoZSBlbGVtZW50IHZhbHVlIGlzIGJlaW5nIHNldC4gU2VlXG4gKiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWtleW1vZGlmaWVyZmxhZ3NcbiAqIGZvciBtb3JlIGRldGFpbHNcbiAqL1xuXG4vKipcbiAqIFNldCB2YWx1ZSB0byB0aGUgZ2l2ZW4gZWxlbWVudFxuICpcbiAqIEBwYXJhbSB7U2V0VmFsdWVPcHRpb25zfSBvcHRzXG4gKi9cbmNvbW1hbmRzLm1hY29zU2V0VmFsdWUgPSBhc3luYyBmdW5jdGlvbiBtYWNvc1NldFZhbHVlIChvcHRzID0ge30pIHtcbiAgY29uc3QgdXVpZCA9IHJlcXVpcmVVdWlkKG9wdHMpO1xuICBjb25zdCB7IHZhbHVlLCB0ZXh0LCBrZXlNb2RpZmllckZsYWdzIH0gPSBvcHRzO1xuICByZXR1cm4gYXdhaXQgdGhpcy53ZGEucHJveHkuY29tbWFuZChgL2VsZW1lbnQvJHt1dWlkfS92YWx1ZWAsICdQT1NUJywge1xuICAgIHZhbHVlLCB0ZXh0LFxuICAgIGtleU1vZGlmaWVyRmxhZ3MsXG4gIH0pO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBDbGlja09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZWxlbWVudElkIHV1aWQgb2YgdGhlIGVsZW1lbnQgdG8gY2xpY2suIEVpdGhlciB0aGlzIHByb3BlcnR5XG4gKiBvci9hbmQgeCBhbmQgeSBtdXN0IGJlIHNldC4gSWYgYm90aCBhcmUgc2V0IHRoZW4geCBhbmQgeSBhcmUgY29uc2lkZXJlZCBhcyByZWxhdGl2ZVxuICogZWxlbWVudCBjb29yZGluYXRlcy4gSWYgb25seSB4IGFuZCB5IGFyZSBzZXQgdGhlbiB0aGVzZSBhcmUgcGFyc2VkIGFzXG4gKiBhYnNvbHV0ZSBjb29yZGluYXRlcy5cbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0geCBjbGljayBYIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0geSBjbGljayBZIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0ga2V5TW9kaWZpZXJGbGFncyBpZiBzZXQgdGhlbiB0aGUgZ2l2ZW4ga2V5IG1vZGlmaWVycyB3aWxsIGJlXG4gKiBhcHBsaWVkIHdoaWxlIGNsaWNrIGlzIHBlcmZvcm1lZC4gU2VlXG4gKiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWtleW1vZGlmaWVyZmxhZ3NcbiAqIGZvciBtb3JlIGRldGFpbHNcbiAqL1xuXG4vKipcbiAqIFBlcmZvcm0gY2xpY2sgZ2VzdHVyZSBvbiBhbiBlbGVtZW50IG9yIGJ5IHJlbGF0aXZlL2Fic29sdXRlIGNvb3JkaW5hdGVzXG4gKlxuICogQHBhcmFtIHtDbGlja09wdGlvbnN9IG9wdHNcbiAqL1xuY29tbWFuZHMubWFjb3NDbGljayA9IGFzeW5jIGZ1bmN0aW9uIG1hY29zQ2xpY2sgKG9wdHMgPSB7fSkge1xuICBjb25zdCB1dWlkID0gZXh0cmFjdFV1aWQob3B0cyk7XG4gIGNvbnN0IHsgeCwgeSwga2V5TW9kaWZpZXJGbGFncyB9ID0gb3B0cztcbiAgY29uc3QgdXJsID0gdXVpZCA/IGAvZWxlbWVudC8ke3V1aWR9L2NsaWNrYCA6ICcvd2RhL2NsaWNrJztcbiAgcmV0dXJuIGF3YWl0IHRoaXMud2RhLnByb3h5LmNvbW1hbmQodXJsLCAnUE9TVCcsIHtcbiAgICB4LCB5LFxuICAgIGtleU1vZGlmaWVyRmxhZ3MsXG4gIH0pO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTY3JvbGxPcHRpb25zXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGVsZW1lbnRJZCB1dWlkIG9mIHRoZSBlbGVtZW50IHRvIGJlIHNjcm9sbGVkLiBFaXRoZXIgdGhpcyBwcm9wZXJ0eVxuICogb3IvYW5kIHggYW5kIHkgbXVzdCBiZSBzZXQuIElmIGJvdGggYXJlIHNldCB0aGVuIHggYW5kIHkgYXJlIGNvbnNpZGVyZWQgYXMgcmVsYXRpdmVcbiAqIGVsZW1lbnQgY29vcmRpbmF0ZXMuIElmIG9ubHkgeCBhbmQgeSBhcmUgc2V0IHRoZW4gdGhlc2UgYXJlIHBhcnNlZCBhc1xuICogYWJzb2x1dGUgY29vcmRpbmF0ZXMuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHggc2Nyb2xsIFggY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB5IHNjcm9sbCBZIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7IW51bWJlcn0gZGVsdGFYIGhvcml6b250YWwgZGVsdGEgYXMgZmxvYXQgbnVtYmVyXG4gKiBAcHJvcGVydHkgeyFudW1iZXJ9IGRlbHRhWSB2ZXJ0aWNhbCBkZWx0YSBhcyBmbG9hdCBudW1iZXJcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0ga2V5TW9kaWZpZXJGbGFncyBpZiBzZXQgdGhlbiB0aGUgZ2l2ZW4ga2V5IG1vZGlmaWVycyB3aWxsIGJlXG4gKiBhcHBsaWVkIHdoaWxlIHNjcm9sbCBpcyBwZXJmb3JtZWQuIFNlZVxuICogaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWlrZXltb2RpZmllcmZsYWdzXG4gKiBmb3IgbW9yZSBkZXRhaWxzXG4gKi9cblxuLyoqXG4gKiBQZXJmb3JtIHNjcm9sbCBnZXN0dXJlIG9uIGFuIGVsZW1lbnQgb3IgYnkgcmVsYXRpdmUvYWJzb2x1dGUgY29vcmRpbmF0ZXNcbiAqXG4gKiBAcGFyYW0ge1Njcm9sbE9wdGlvbnN9IG9wdHNcbiAqL1xuY29tbWFuZHMubWFjb3NTY3JvbGwgPSBhc3luYyBmdW5jdGlvbiBtYWNvc1Njcm9sbCAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHV1aWQgPSBleHRyYWN0VXVpZChvcHRzKTtcbiAgY29uc3Qge1xuICAgIHgsIHksXG4gICAgZGVsdGFYLCBkZWx0YVksXG4gICAga2V5TW9kaWZpZXJGbGFncyxcbiAgfSA9IG9wdHM7XG4gIGNvbnN0IHVybCA9IHV1aWQgPyBgL3dkYS9lbGVtZW50LyR7dXVpZH0vc2Nyb2xsYCA6ICcvd2RhL3Njcm9sbCc7XG4gIHJldHVybiBhd2FpdCB0aGlzLndkYS5wcm94eS5jb21tYW5kKHVybCwgJ1BPU1QnLCB7XG4gICAgZGVsdGFYLCBkZWx0YVksXG4gICAgeCwgeSxcbiAgICBrZXlNb2RpZmllckZsYWdzLFxuICB9KTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU3dpcGVPcHRpb25zXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGVsZW1lbnRJZCB1dWlkIG9mIHRoZSBlbGVtZW50IHRvIGJlIHN3aXBlZC4gRWl0aGVyIHRoaXMgcHJvcGVydHlcbiAqIG9yL2FuZCB4IGFuZCB5IG11c3QgYmUgc2V0LiBJZiBib3RoIGFyZSBzZXQgdGhlbiB4IGFuZCB5IGFyZSBjb25zaWRlcmVkIGFzIHJlbGF0aXZlXG4gKiBlbGVtZW50IGNvb3JkaW5hdGVzLiBJZiBvbmx5IHggYW5kIHkgYXJlIHNldCB0aGVuIHRoZXNlIGFyZSBwYXJzZWQgYXNcbiAqIGFic29sdXRlIGNvb3JkaW5hdGVzLlxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB4IHN3aXBlIFggY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB5IHN3aXBlIFkgY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHshc3RyaW5nfSBkaXJlY3Rpb24gZWl0aGVyICd1cCcsICdkb3duJywgJ2xlZnQnIG9yICdyaWdodCdcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gdmVsb2NpdHkgVGhlIHZhbHVlIGlzIG1lYXN1cmVkIGluIHBpeGVscyBwZXIgc2Vjb25kIGFuZCBzYW1lXG4gKiB2YWx1ZXMgY291bGQgYmVoYXZlIGRpZmZlcmVudGx5IG9uIGRpZmZlcmVudCBkZXZpY2VzIGRlcGVuZGluZyBvbiB0aGVpciBkaXNwbGF5XG4gKiBkZW5zaXR5LiBIaWdoZXIgdmFsdWVzIG1ha2Ugc3dpcGUgZ2VzdHVyZSBmYXN0ZXIgKHdoaWNoIHVzdWFsbHkgc2Nyb2xscyBsYXJnZXJcbiAqIGFyZWFzIGlmIHdlIGFwcGx5IGl0IHRvIGEgbGlzdCkgYW5kIGxvd2VyIHZhbHVlcyBzbG93IGl0IGRvd24uXG4gKiBPbmx5IHZhbHVlcyBncmVhdGVyIHRoYW4gemVybyBoYXZlIGVmZmVjdC5cbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0ga2V5TW9kaWZpZXJGbGFncyBpZiBzZXQgdGhlbiB0aGUgZ2l2ZW4ga2V5IG1vZGlmaWVycyB3aWxsIGJlXG4gKiBhcHBsaWVkIHdoaWxlIHNjcm9sbCBpcyBwZXJmb3JtZWQuIFNlZVxuICogaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWlrZXltb2RpZmllcmZsYWdzXG4gKiBmb3IgbW9yZSBkZXRhaWxzXG4gKi9cblxuLyoqXG4gKiBQZXJmb3JtIHN3aXBlIGdlc3R1cmUgb24gYW4gZWxlbWVudFxuICpcbiAqIEBwYXJhbSB7U3dpcGVPcHRpb25zfSBvcHRzXG4gKi9cbmNvbW1hbmRzLm1hY29zU3dpcGUgPSBhc3luYyBmdW5jdGlvbiBtYWNvc1N3aXBlIChvcHRzID0ge30pIHtcbiAgY29uc3QgdXVpZCA9IGV4dHJhY3RVdWlkKG9wdHMpO1xuICBjb25zdCB7XG4gICAgeCwgeSxcbiAgICBkaXJlY3Rpb24sXG4gICAgdmVsb2NpdHksXG4gICAga2V5TW9kaWZpZXJGbGFncyxcbiAgfSA9IG9wdHM7XG4gIGNvbnN0IHVybCA9IHV1aWQgPyBgL3dkYS9lbGVtZW50LyR7dXVpZH0vc3dpcGVgIDogYC93ZGEvc3dpcGVgO1xuICByZXR1cm4gYXdhaXQgdGhpcy53ZGEucHJveHkuY29tbWFuZCh1cmwsICdQT1NUJywge1xuICAgIHgsIHksXG4gICAgZGlyZWN0aW9uLFxuICAgIHZlbG9jaXR5LFxuICAgIGtleU1vZGlmaWVyRmxhZ3MsXG4gIH0pO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBSaWdodENsaWNrT3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBlbGVtZW50SWQgdXVpZCBvZiB0aGUgZWxlbWVudCB0byBjbGljay4gRWl0aGVyIHRoaXMgcHJvcGVydHlcbiAqIG9yL2FuZCB4IGFuZCB5IG11c3QgYmUgc2V0LiBJZiBib3RoIGFyZSBzZXQgdGhlbiB4IGFuZCB5IGFyZSBjb25zaWRlcmVkIGFzIHJlbGF0aXZlXG4gKiBlbGVtZW50IGNvb3JkaW5hdGVzLiBJZiBvbmx5IHggYW5kIHkgYXJlIHNldCB0aGVuIHRoZXNlIGFyZSBwYXJzZWQgYXNcbiAqIGFic29sdXRlIGNvb3JkaW5hdGVzLlxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB4IGNsaWNrIFggY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB5IGNsaWNrIFkgY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBrZXlNb2RpZmllckZsYWdzIGlmIHNldCB0aGVuIHRoZSBnaXZlbiBrZXkgbW9kaWZpZXJzIHdpbGwgYmVcbiAqIGFwcGxpZWQgd2hpbGUgY2xpY2sgaXMgcGVyZm9ybWVkLiBTZWVcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3Vpa2V5bW9kaWZpZXJmbGFnc1xuICogZm9yIG1vcmUgZGV0YWlsc1xuICovXG5cbi8qKlxuICogUGVyZm9ybSByaWdodCBjbGljayBnZXN0dXJlIG9uIGFuIGVsZW1lbnQgb3IgYnkgcmVsYXRpdmUvYWJzb2x1dGUgY29vcmRpbmF0ZXNcbiAqXG4gKiBAcGFyYW0ge1JpZ2h0Q2xpY2tPcHRpb25zfSBvcHRzXG4gKi9cbmNvbW1hbmRzLm1hY29zUmlnaHRDbGljayA9IGFzeW5jIGZ1bmN0aW9uIG1hY29zUmlnaHRDbGljayAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHV1aWQgPSBleHRyYWN0VXVpZChvcHRzKTtcbiAgY29uc3QgeyB4LCB5LCBrZXlNb2RpZmllckZsYWdzIH0gPSBvcHRzO1xuICBjb25zdCB1cmwgPSB1dWlkID8gYC93ZGEvZWxlbWVudC8ke3V1aWR9L3JpZ2h0Q2xpY2tgIDogJy93ZGEvcmlnaHRDbGljayc7XG4gIHJldHVybiBhd2FpdCB0aGlzLndkYS5wcm94eS5jb21tYW5kKHVybCwgJ1BPU1QnLCB7XG4gICAgeCwgeSxcbiAgICBrZXlNb2RpZmllckZsYWdzLFxuICB9KTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gSG92ZXJPcHRpb25zXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGVsZW1lbnRJZCB1dWlkIG9mIHRoZSBlbGVtZW50IHRvIGhvdmVyLiBFaXRoZXIgdGhpcyBwcm9wZXJ0eVxuICogb3IvYW5kIHggYW5kIHkgbXVzdCBiZSBzZXQuIElmIGJvdGggYXJlIHNldCB0aGVuIHggYW5kIHkgYXJlIGNvbnNpZGVyZWQgYXMgcmVsYXRpdmVcbiAqIGVsZW1lbnQgY29vcmRpbmF0ZXMuIElmIG9ubHkgeCBhbmQgeSBhcmUgc2V0IHRoZW4gdGhlc2UgYXJlIHBhcnNlZCBhc1xuICogYWJzb2x1dGUgY29vcmRpbmF0ZXMuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHggY2xpY2sgWCBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHkgY2xpY2sgWSBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGtleU1vZGlmaWVyRmxhZ3MgaWYgc2V0IHRoZW4gdGhlIGdpdmVuIGtleSBtb2RpZmllcnMgd2lsbCBiZVxuICogYXBwbGllZCB3aGlsZSBob3ZlciBpcyBwZXJmb3JtZWQuIFNlZVxuICogaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWlrZXltb2RpZmllcmZsYWdzXG4gKiBmb3IgbW9yZSBkZXRhaWxzXG4gKi9cblxuLyoqXG4gKiBQZXJmb3JtIGhvdmVyIGdlc3R1cmUgb24gYW4gZWxlbWVudCBvciBieSByZWxhdGl2ZS9hYnNvbHV0ZSBjb29yZGluYXRlc1xuICpcbiAqIEBwYXJhbSB7SG92ZXJPcHRpb25zfSBvcHRzXG4gKi9cbmNvbW1hbmRzLm1hY29zSG92ZXIgPSBhc3luYyBmdW5jdGlvbiBtYWNvc0hvdmVyIChvcHRzID0ge30pIHtcbiAgY29uc3QgdXVpZCA9IGV4dHJhY3RVdWlkKG9wdHMpO1xuICBjb25zdCB7IHgsIHksIGtleU1vZGlmaWVyRmxhZ3MgfSA9IG9wdHM7XG4gIGNvbnN0IHVybCA9IHV1aWQgPyBgL3dkYS9lbGVtZW50LyR7dXVpZH0vaG92ZXJgIDogJy93ZGEvaG92ZXInO1xuICByZXR1cm4gYXdhaXQgdGhpcy53ZGEucHJveHkuY29tbWFuZCh1cmwsICdQT1NUJywge1xuICAgIHgsIHksXG4gICAga2V5TW9kaWZpZXJGbGFncyxcbiAgfSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IERvdWJsZUNsaWNrT3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBlbGVtZW50SWQgdXVpZCBvZiB0aGUgZWxlbWVudCB0byBkb3VibGUgY2xpY2suIEVpdGhlciB0aGlzIHByb3BlcnR5XG4gKiBvci9hbmQgeCBhbmQgeSBtdXN0IGJlIHNldC4gSWYgYm90aCBhcmUgc2V0IHRoZW4geCBhbmQgeSBhcmUgY29uc2lkZXJlZCBhcyByZWxhdGl2ZVxuICogZWxlbWVudCBjb29yZGluYXRlcy4gSWYgb25seSB4IGFuZCB5IGFyZSBzZXQgdGhlbiB0aGVzZSBhcmUgcGFyc2VkIGFzXG4gKiBhYnNvbHV0ZSBjb29yZGluYXRlcy5cbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0geCBjbGljayBYIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0geSBjbGljayBZIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0ga2V5TW9kaWZpZXJGbGFncyBpZiBzZXQgdGhlbiB0aGUgZ2l2ZW4ga2V5IG1vZGlmaWVycyB3aWxsIGJlXG4gKiBhcHBsaWVkIHdoaWxlIGRvdWJsZSBjbGljayBpcyBwZXJmb3JtZWQuIFNlZVxuICogaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWlrZXltb2RpZmllcmZsYWdzXG4gKiBmb3IgbW9yZSBkZXRhaWxzXG4gKi9cblxuLyoqXG4gKiBQZXJmb3JtIGRvdWJsZSBjbGljayBnZXN0dXJlIG9uIGFuIGVsZW1lbnQgb3IgYnkgcmVsYXRpdmUvYWJzb2x1dGUgY29vcmRpbmF0ZXNcbiAqXG4gKiBAcGFyYW0ge0RvdWJsZUNsaWNrT3B0aW9uc30gb3B0c1xuICovXG5jb21tYW5kcy5tYWNvc0RvdWJsZUNsaWNrID0gYXN5bmMgZnVuY3Rpb24gbWFjb3NEb3VibGVDbGljayAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHV1aWQgPSBleHRyYWN0VXVpZChvcHRzKTtcbiAgY29uc3QgeyB4LCB5LCBrZXlNb2RpZmllckZsYWdzIH0gPSBvcHRzO1xuICBjb25zdCB1cmwgPSB1dWlkID8gYC93ZGEvZWxlbWVudC8ke3V1aWR9L2RvdWJsZUNsaWNrYCA6ICcvd2RhL2RvdWJsZUNsaWNrJztcbiAgcmV0dXJuIGF3YWl0IHRoaXMud2RhLnByb3h5LmNvbW1hbmQodXJsLCAnUE9TVCcsIHtcbiAgICB4LCB5LFxuICAgIGtleU1vZGlmaWVyRmxhZ3MsXG4gIH0pO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBDbGlja0FuZERyYWdPcHRpb25zXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHNvdXJjZUVsZW1lbnRJZCB1dWlkIG9mIHRoZSBlbGVtZW50IHRvIHN0YXJ0IHRoZSBkcmFnIGZyb20uIEVpdGhlciB0aGlzIHByb3BlcnR5XG4gKiBhbmQgYGRlc3RpbmF0aW9uRWxlbWVudGAgbXVzdCBiZSBwcm92aWRlZCBvciBgc3RhcnRYYCwgYHN0YXJ0WWAsIGBlbmRYYCwgYGVuZFlgIGNvb3JkaW5hdGVzXG4gKiBtdXN0IGJlIHNldC5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZGVzdGluYXRpb25FbGVtZW50SWQgdXVpZCBvZiB0aGUgZWxlbWVudCB0byBlbmQgdGhlIGRyYWcgb24uIEVpdGhlciB0aGlzIHByb3BlcnR5XG4gKiBhbmQgYHNvdXJjZUVsZW1lbnRgIG11c3QgYmUgcHJvdmlkZWQgb3IgYHN0YXJ0WGAsIGBzdGFydFlgLCBgZW5kWGAsIGBlbmRZYCBjb29yZGluYXRlc1xuICogbXVzdCBiZSBzZXQuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHN0YXJ0WCBzdGFydGluZyBYIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gc3RhcnRZIHN0YXJ0aW5nIFkgY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBlbmRYIGVuZGluZyBYIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gZW5kWSBlbmRpbmcgWSBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgeyFudW1iZXJ9IGR1cmF0aW9uIGxvbmcgY2xpY2sgZHVyYXRpb24gaW4gZmxvYXQgc2Vjb25kc1xuICogQHByb3BlcnR5IHs/bnVtYmVyfSBrZXlNb2RpZmllckZsYWdzIGlmIHNldCB0aGVuIHRoZSBnaXZlbiBrZXkgbW9kaWZpZXJzIHdpbGwgYmVcbiAqIGFwcGxpZWQgd2hpbGUgZHJhZyBpcyBwZXJmb3JtZWQuIFNlZVxuICogaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWlrZXltb2RpZmllcmZsYWdzXG4gKiBmb3IgbW9yZSBkZXRhaWxzXG4gKi9cblxuLyoqXG4gKiBQZXJmb3JtIGxvbmcgY2xpY2sgYW5kIGRyYWcgZ2VzdHVyZSBvbiBhbiBlbGVtZW50IG9yIGJ5IGFic29sdXRlIGNvb3JkaW5hdGVzXG4gKlxuICogQHBhcmFtIHtDbGlja0FuZERyYWdPcHRpb25zfSBvcHRzXG4gKi9cbmNvbW1hbmRzLm1hY29zQ2xpY2tBbmREcmFnID0gYXN5bmMgZnVuY3Rpb24gbWFjb3NDbGlja0FuZERyYWcgKG9wdHMgPSB7fSkge1xuICBjb25zdCBzb3VyY2VVdWlkID0gZXh0cmFjdFV1aWQob3B0cywgWydzb3VyY2VFbGVtZW50SWQnLCAnc291cmNlRWxlbWVudCddKTtcbiAgY29uc3QgZGVzdFV1aWQgPSBleHRyYWN0VXVpZChvcHRzLCBbJ2Rlc3RpbmF0aW9uRWxlbWVudElkJywgJ2Rlc3RpbmF0aW9uRWxlbWVudCddKTtcbiAgY29uc3Qge1xuICAgIHN0YXJ0WCwgc3RhcnRZLFxuICAgIGVuZFgsIGVuZFksXG4gICAgZHVyYXRpb24sXG4gICAga2V5TW9kaWZpZXJGbGFnc1xuICB9ID0gb3B0cztcbiAgY29uc3QgdXJsID0gc291cmNlVXVpZCAmJiBkZXN0VXVpZFxuICAgID8gYC93ZGEvZWxlbWVudC8ke3NvdXJjZVV1aWR9L2NsaWNrQW5kRHJhZ2BcbiAgICA6ICcvd2RhL2NsaWNrQW5kRHJhZyc7XG4gIGNvbnN0IGRlc3QgPSBkZXN0VXVpZCAmJiB1dGlsLndyYXBFbGVtZW50KGRlc3RVdWlkKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMud2RhLnByb3h5LmNvbW1hbmQodXJsLCAnUE9TVCcsIHtcbiAgICBzdGFydFgsIHN0YXJ0WSxcbiAgICBlbmRYLCBlbmRZLFxuICAgIGR1cmF0aW9uLFxuICAgIGRlc3QsXG4gICAga2V5TW9kaWZpZXJGbGFncyxcbiAgfSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENsaWNrQW5kRHJhZ0FuZEhvbGRPcHRpb25zXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHNvdXJjZUVsZW1lbnRJZCB1dWlkIG9mIHRoZSBlbGVtZW50IHRvIHN0YXJ0IHRoZSBkcmFnIGZyb20uIEVpdGhlciB0aGlzIHByb3BlcnR5XG4gKiBhbmQgYGRlc3RpbmF0aW9uRWxlbWVudGAgbXVzdCBiZSBwcm92aWRlZCBvciBgc3RhcnRYYCwgYHN0YXJ0WWAsIGBlbmRYYCwgYGVuZFlgIGNvb3JkaW5hdGVzXG4gKiBtdXN0IGJlIHNldC5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZGVzdGluYXRpb25FbGVtZW50SWQgdXVpZCBvZiB0aGUgZWxlbWVudCB0byBlbmQgdGhlIGRyYWcgb24uIEVpdGhlciB0aGlzIHByb3BlcnR5XG4gKiBhbmQgYHNvdXJjZUVsZW1lbnRgIG11c3QgYmUgcHJvdmlkZWQgb3IgYHN0YXJ0WGAsIGBzdGFydFlgLCBgZW5kWGAsIGBlbmRZYCBjb29yZGluYXRlc1xuICogbXVzdCBiZSBzZXQuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHN0YXJ0WCBzdGFydGluZyBYIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gc3RhcnRZIHN0YXJ0aW5nIFkgY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBlbmRYIGVuZGluZyBYIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gZW5kWSBlbmRpbmcgWSBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgeyFudW1iZXJ9IGR1cmF0aW9uIGxvbmcgY2xpY2sgZHVyYXRpb24gaW4gZmxvYXQgc2Vjb25kc1xuICogQHByb3BlcnR5IHs/bnVtYmVyfSB2ZWxvY2l0eSBkcmFnZ2luZyB2ZWxvY2l0eSBpbiBwaXhlbHMgcGVyIHNlY29uZC5cbiAqIElmIG5vdCBwcm92aWRlZCB0aGVuIHRoZSBkZWZhdWx0IHZlbG9jaXR5IGlzIHVzZWQuIFNlZVxuICogaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWlnZXN0dXJldmVsb2NpdHlcbiAqIGZvciBtb3JlIGRldGFpbHNcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0ga2V5TW9kaWZpZXJGbGFncyBpZiBzZXQgdGhlbiB0aGUgZ2l2ZW4ga2V5IG1vZGlmaWVycyB3aWxsIGJlXG4gKiBhcHBsaWVkIHdoaWxlIGRyYWcgaXMgcGVyZm9ybWVkLiBTZWVcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3Vpa2V5bW9kaWZpZXJmbGFnc1xuICogZm9yIG1vcmUgZGV0YWlsc1xuICovXG5cbi8qKlxuICogUGVyZm9ybSBsb25nIGNsaWNrLCBkcmFnIGFuZCBob2xkIGdlc3R1cmUgb24gYW4gZWxlbWVudCBvciBieSBhYnNvbHV0ZSBjb29yZGluYXRlc1xuICpcbiAqIEBwYXJhbSB7Q2xpY2tBbmREcmFnQW5kSG9sZE9wdGlvbnN9IG9wdHNcbiAqL1xuY29tbWFuZHMubWFjb3NDbGlja0FuZERyYWdBbmRIb2xkID0gYXN5bmMgZnVuY3Rpb24gbWFjb3NDbGlja0FuZERyYWdBbmRIb2xkIChvcHRzID0ge30pIHtcbiAgY29uc3Qgc291cmNlVXVpZCA9IGV4dHJhY3RVdWlkKG9wdHMsIFsnc291cmNlRWxlbWVudElkJywgJ3NvdXJjZUVsZW1lbnQnXSk7XG4gIGNvbnN0IGRlc3RVdWlkID0gZXh0cmFjdFV1aWQob3B0cywgWydkZXN0aW5hdGlvbkVsZW1lbnRJZCcsICdkZXN0aW5hdGlvbkVsZW1lbnQnXSk7XG4gIGNvbnN0IHtcbiAgICBzdGFydFgsIHN0YXJ0WSxcbiAgICBlbmRYLCBlbmRZLFxuICAgIGR1cmF0aW9uLCBob2xkRHVyYXRpb24sXG4gICAgdmVsb2NpdHksXG4gICAga2V5TW9kaWZpZXJGbGFnc1xuICB9ID0gb3B0cztcbiAgY29uc3QgdXJsID0gc291cmNlVXVpZCAmJiBkZXN0VXVpZFxuICAgID8gYC93ZGEvZWxlbWVudC8ke3NvdXJjZVV1aWR9L2NsaWNrQW5kRHJhZ0FuZEhvbGRgXG4gICAgOiAnL3dkYS9jbGlja0FuZERyYWdBbmRIb2xkJztcbiAgY29uc3QgZGVzdCA9IGRlc3RVdWlkICYmIHV0aWwud3JhcEVsZW1lbnQoZGVzdFV1aWQpO1xuICByZXR1cm4gYXdhaXQgdGhpcy53ZGEucHJveHkuY29tbWFuZCh1cmwsICdQT1NUJywge1xuICAgIHN0YXJ0WCwgc3RhcnRZLFxuICAgIGVuZFgsIGVuZFksXG4gICAgZHVyYXRpb24sIGhvbGREdXJhdGlvbixcbiAgICB2ZWxvY2l0eSxcbiAgICBkZXN0LFxuICAgIGtleU1vZGlmaWVyRmxhZ3MsXG4gIH0pO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBLZXlPcHRpb25zXG4gKiBAcHJvcGVydHkgeyFzdHJpbmd9IGtleSBhIHN0cmluZywgdGhhdCByZXByZXNlbnRzIGEga2V5IHRvIHR5cGUgKHNlZVxuICogaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE1MDA2MDQtdHlwZWtleT9sYW5ndWFnZT1vYmpjXG4gKiBhbmQgaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWlrZXlib2FyZGtleT9sYW5ndWFnZT1vYmpjKVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBtb2RpZmllckZsYWdzIGEgc2V0IG9mIG1vZGlmaWVyIGZsYWdzXG4gKiAoaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWlrZXltb2RpZmllcmZsYWdzP2xhbmd1YWdlPW9iamMpXG4gKiB0byB1c2Ugd2hlbiB0eXBpbmcgdGhlIGtleS5cbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEtleXNPcHRpb25zXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGVsZW1lbnRJZCB1dWlkIG9mIHRoZSBlbGVtZW50IHRvIHNlbmQga2V5cyB0by5cbiAqIElmIHRoZSBlbGVtZW50IGlzIG5vdCBwcm92aWRlZCB0aGVuIHRoZSBrZXlzIHdpbGwgYmUgc2VudCB0byB0aGUgY3VycmVudCBhcHBsaWNhdGlvbi5cbiAqIEBwcm9wZXJ0eSB7IUFycmF5PEtleU9wdGlvbnN8c3RyaW5nPn0ga2V5cyBBcnJheSBvZiBrZXlzIHRvIHR5cGUuXG4gKiBFYWNoIGl0ZW0gY291bGQgZWl0aGVyIGJlIGEgc3RyaW5nLCB0aGF0IHJlcHJlc2VudHMgYSBrZXkgaXRzZWxmIChzZWVcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNTAwNjA0LXR5cGVrZXk/bGFuZ3VhZ2U9b2JqY1xuICogYW5kIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3Vpa2V5Ym9hcmRrZXk/bGFuZ3VhZ2U9b2JqYylcbiAqIG9yIGEgZGljdGlvbmFyeSwgaWYgdGhlIGtleSBzaG91bGQgYWxzbyBiZSBlbnRlcmVkIHdpdGggbW9kaWZpZXJzLlxuICovXG5cbi8qKlxuICogU2VuZCBrZXlzIHRvIHRoZSBnaXZlbiBlbGVtZW50IG9yIHRvIHRoZSBhcHBsaWNhdGlvbiB1bmRlciB0ZXN0XG4gKlxuICogQHBhcmFtIHtLZXlzT3B0aW9uc30gb3B0c1xuICovXG5jb21tYW5kcy5tYWNvc0tleXMgPSBhc3luYyBmdW5jdGlvbiBtYWNvc0tleXMgKG9wdHMgPSB7fSkge1xuICBjb25zdCB1dWlkID0gZXh0cmFjdFV1aWQob3B0cyk7XG4gIGNvbnN0IHsga2V5cyB9ID0gb3B0cztcbiAgY29uc3QgdXJsID0gdXVpZCA/IGAvd2RhL2VsZW1lbnQvJHt1dWlkfS9rZXlzYCA6ICcvd2RhL2tleXMnO1xuICByZXR1cm4gYXdhaXQgdGhpcy53ZGEucHJveHkuY29tbWFuZCh1cmwsICdQT1NUJywgeyBrZXlzIH0pO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBQcmVzc09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZWxlbWVudElkIHV1aWQgb2YgdGhlIFRvdWNoIEJhciBlbGVtZW50IHRvIGJlIHByZXNzZWQuIEVpdGhlciB0aGlzIHByb3BlcnR5XG4gKiBvci9hbmQgeCBhbmQgeSBtdXN0IGJlIHNldC4gSWYgYm90aCBhcmUgc2V0IHRoZW4geCBhbmQgeSBhcmUgY29uc2lkZXJlZCBhcyByZWxhdGl2ZVxuICogZWxlbWVudCBjb29yZGluYXRlcy4gSWYgb25seSB4IGFuZCB5IGFyZSBzZXQgdGhlbiB0aGVzZSBhcmUgcGFyc2VkIGFzXG4gKiBhYnNvbHV0ZSBUb3VjaCBCYXIgY29vcmRpbmF0ZXMuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHggbG9uZyBjbGljayBYIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0geSBsb25nIGNsaWNrIFkgY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHshbnVtYmVyfSBkdXJhdGlvbiB0aGUgbnVtYmVyIG9mIGZsb2F0IHNlY29uZHMgdG8gaG9sZCB0aGUgbW91c2UgYnV0dG9uXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGtleU1vZGlmaWVyRmxhZ3MgaWYgc2V0IHRoZW4gdGhlIGdpdmVuIGtleSBtb2RpZmllcnMgd2lsbCBiZVxuICogYXBwbGllZCB3aGlsZSBjbGljayBpcyBwZXJmb3JtZWQuIFNlZVxuICogaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWlrZXltb2RpZmllcmZsYWdzXG4gKiBmb3IgbW9yZSBkZXRhaWxzXG4gKi9cblxuLyoqXG4gKiBQZXJmb3JtIHByZXNzIGdlc3R1cmUgb24gYSBUb3VjaCBCYXIgZWxlbWVudCBvciBieSByZWxhdGl2ZS9hYnNvbHV0ZSBjb29yZGluYXRlc1xuICpcbiAqIEBwYXJhbSB7UHJlc3NPcHRpb25zfSBvcHRzXG4gKi9cbmNvbW1hbmRzLm1hY29zUHJlc3NBbmRIb2xkID0gYXN5bmMgZnVuY3Rpb24gbWFjb3NQcmVzc0FuZEhvbGQgKG9wdHMgPSB7fSkge1xuICBjb25zdCB1dWlkID0gZXh0cmFjdFV1aWQob3B0cyk7XG4gIGNvbnN0IHsgeCwgeSwgZHVyYXRpb24sIGtleU1vZGlmaWVyRmxhZ3MgfSA9IG9wdHM7XG4gIGNvbnN0IHVybCA9IHV1aWQgPyBgL3dkYS9lbGVtZW50LyR7dXVpZH0vcHJlc3NgIDogJy93ZGEvcHJlc3MnO1xuICByZXR1cm4gYXdhaXQgdGhpcy53ZGEucHJveHkuY29tbWFuZCh1cmwsICdQT1NUJywge1xuICAgIHgsIHksXG4gICAgZHVyYXRpb24sXG4gICAga2V5TW9kaWZpZXJGbGFncyxcbiAgfSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFRhcE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZWxlbWVudElkIHV1aWQgb2YgdGhlIFRvdWNoIEJhciBlbGVtZW50IHRvIHRhcC4gRWl0aGVyIHRoaXMgcHJvcGVydHlcbiAqIG9yL2FuZCB4IGFuZCB5IG11c3QgYmUgc2V0LiBJZiBib3RoIGFyZSBzZXQgdGhlbiB4IGFuZCB5IGFyZSBjb25zaWRlcmVkIGFzIHJlbGF0aXZlXG4gKiBlbGVtZW50IGNvb3JkaW5hdGVzLiBJZiBvbmx5IHggYW5kIHkgYXJlIHNldCB0aGVuIHRoZXNlIGFyZSBwYXJzZWQgYXNcbiAqIGFic29sdXRlIFRvdWNoIEJhciBjb29yZGluYXRlcy5cbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0geCBjbGljayBYIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0geSBjbGljayBZIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0ga2V5TW9kaWZpZXJGbGFncyBpZiBzZXQgdGhlbiB0aGUgZ2l2ZW4ga2V5IG1vZGlmaWVycyB3aWxsIGJlXG4gKiBhcHBsaWVkIHdoaWxlIGNsaWNrIGlzIHBlcmZvcm1lZC4gU2VlXG4gKiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWtleW1vZGlmaWVyZmxhZ3NcbiAqIGZvciBtb3JlIGRldGFpbHNcbiAqL1xuXG4vKipcbiAqIFBlcmZvcm0gdGFwIGdlc3R1cmUgb24gYSBUb3VjaCBCYXIgZWxlbWVudCBvciBieSByZWxhdGl2ZS9hYnNvbHV0ZSBjb29yZGluYXRlc1xuICpcbiAqIEBwYXJhbSB7VGFwT3B0aW9uc30gb3B0c1xuICovXG5jb21tYW5kcy5tYWNvc1RhcCA9IGFzeW5jIGZ1bmN0aW9uIG1hY29zVGFwIChvcHRzID0ge30pIHtcbiAgY29uc3QgdXVpZCA9IGV4dHJhY3RVdWlkKG9wdHMpO1xuICBjb25zdCB7IHgsIHksIGtleU1vZGlmaWVyRmxhZ3MgfSA9IG9wdHM7XG4gIGNvbnN0IHVybCA9IHV1aWQgPyBgL3dkYS9lbGVtZW50LyR7dXVpZH0vdGFwYCA6ICcvd2RhL3RhcCc7XG4gIHJldHVybiBhd2FpdCB0aGlzLndkYS5wcm94eS5jb21tYW5kKHVybCwgJ1BPU1QnLCB7XG4gICAgeCwgeSxcbiAgICBrZXlNb2RpZmllckZsYWdzLFxuICB9KTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gRG91YmxlVGFwT3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBlbGVtZW50SWQgdXVpZCBvZiB0aGUgVG91Y2ggQmFyIGVsZW1lbnQgdG8gdGFwLiBFaXRoZXIgdGhpcyBwcm9wZXJ0eVxuICogb3IvYW5kIHggYW5kIHkgbXVzdCBiZSBzZXQuIElmIGJvdGggYXJlIHNldCB0aGVuIHggYW5kIHkgYXJlIGNvbnNpZGVyZWQgYXMgcmVsYXRpdmVcbiAqIGVsZW1lbnQgY29vcmRpbmF0ZXMuIElmIG9ubHkgeCBhbmQgeSBhcmUgc2V0IHRoZW4gdGhlc2UgYXJlIHBhcnNlZCBhc1xuICogYWJzb2x1dGUgVG91Y2ggQmFyIGNvb3JkaW5hdGVzLlxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB4IGNsaWNrIFggY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB5IGNsaWNrIFkgY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBrZXlNb2RpZmllckZsYWdzIGlmIHNldCB0aGVuIHRoZSBnaXZlbiBrZXkgbW9kaWZpZXJzIHdpbGwgYmVcbiAqIGFwcGxpZWQgd2hpbGUgY2xpY2sgaXMgcGVyZm9ybWVkLiBTZWVcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3Vpa2V5bW9kaWZpZXJmbGFnc1xuICogZm9yIG1vcmUgZGV0YWlsc1xuICovXG5cbi8qKlxuICogUGVyZm9ybSB0YXAgZ2VzdHVyZSBvbiBhIFRvdWNoIEJhciBlbGVtZW50IG9yIGJ5IHJlbGF0aXZlL2Fic29sdXRlIGNvb3JkaW5hdGVzXG4gKlxuICogQHBhcmFtIHtEb3VibGVUYXBPcHRpb25zfSBvcHRzXG4gKi9cbmNvbW1hbmRzLm1hY29zRG91YmxlVGFwID0gYXN5bmMgZnVuY3Rpb24gbWFjb3NEb3VibGVUYXAgKG9wdHMgPSB7fSkge1xuICBjb25zdCB1dWlkID0gZXh0cmFjdFV1aWQob3B0cyk7XG4gIGNvbnN0IHsgeCwgeSwga2V5TW9kaWZpZXJGbGFncyB9ID0gb3B0cztcbiAgY29uc3QgdXJsID0gdXVpZCA/IGAvd2RhL2VsZW1lbnQvJHt1dWlkfS9kb3VibGVUYXBgIDogJy93ZGEvZG91YmxlVGFwJztcbiAgcmV0dXJuIGF3YWl0IHRoaXMud2RhLnByb3h5LmNvbW1hbmQodXJsLCAnUE9TVCcsIHtcbiAgICB4LCB5LFxuICAgIGtleU1vZGlmaWVyRmxhZ3MsXG4gIH0pO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBQcmVzc0FuZERyYWdPcHRpb25zXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHNvdXJjZUVsZW1lbnRJZCB1dWlkIG9mIGEgVG91Y2ggQmFyIGVsZW1lbnQgdG8gc3RhcnQgdGhlIGRyYWcgZnJvbS4gRWl0aGVyIHRoaXMgcHJvcGVydHlcbiAqIGFuZCBgZGVzdGluYXRpb25FbGVtZW50YCBtdXN0IGJlIHByb3ZpZGVkIG9yIGBzdGFydFhgLCBgc3RhcnRZYCwgYGVuZFhgLCBgZW5kWWAgY29vcmRpbmF0ZXNcbiAqIG11c3QgYmUgc2V0LlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBkZXN0aW5hdGlvbkVsZW1lbnRJZCB1dWlkIG9mIGEgVG91Y2ggQmFyIGVsZW1lbnQgdG8gZW5kIHRoZSBkcmFnIG9uLiBFaXRoZXIgdGhpcyBwcm9wZXJ0eVxuICogYW5kIGBzb3VyY2VFbGVtZW50YCBtdXN0IGJlIHByb3ZpZGVkIG9yIGBzdGFydFhgLCBgc3RhcnRZYCwgYGVuZFhgLCBgZW5kWWAgY29vcmRpbmF0ZXNcbiAqIG11c3QgYmUgc2V0LlxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBzdGFydFggc3RhcnRpbmcgWCBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHN0YXJ0WSBzdGFydGluZyBZIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gZW5kWCBlbmRpbmcgWCBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGVuZFkgZW5kaW5nIFkgY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHshbnVtYmVyfSBkdXJhdGlvbiBsb25nIGNsaWNrIGR1cmF0aW9uIGluIGZsb2F0IHNlY29uZHNcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0ga2V5TW9kaWZpZXJGbGFncyBpZiBzZXQgdGhlbiB0aGUgZ2l2ZW4ga2V5IG1vZGlmaWVycyB3aWxsIGJlXG4gKiBhcHBsaWVkIHdoaWxlIGRyYWcgaXMgcGVyZm9ybWVkLiBTZWVcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3Vpa2V5bW9kaWZpZXJmbGFnc1xuICogZm9yIG1vcmUgZGV0YWlsc1xuICovXG5cbi8qKlxuICogUGVyZm9ybSBsb25nIHByZXNzIGFuZCBkcmFnIGdlc3R1cmUgb24gYSBUb3VjaCBCYXIgZWxlbWVudCBvciBieSBhYnNvbHV0ZSBjb29yZGluYXRlc1xuICpcbiAqIEBwYXJhbSB7UHJlc3NBbmREcmFnT3B0aW9uc30gb3B0c1xuICovXG5jb21tYW5kcy5tYWNvc1ByZXNzQW5kRHJhZyA9IGFzeW5jIGZ1bmN0aW9uIG1hY29zUHJlc3NBbmREcmFnIChvcHRzID0ge30pIHtcbiAgY29uc3Qgc291cmNlVXVpZCA9IGV4dHJhY3RVdWlkKG9wdHMsIFsnc291cmNlRWxlbWVudElkJywgJ3NvdXJjZUVsZW1lbnQnXSk7XG4gIGNvbnN0IGRlc3RVdWlkID0gZXh0cmFjdFV1aWQob3B0cywgWydkZXN0aW5hdGlvbkVsZW1lbnRJZCcsICdkZXN0aW5hdGlvbkVsZW1lbnQnXSk7XG4gIGNvbnN0IHtcbiAgICBzdGFydFgsIHN0YXJ0WSxcbiAgICBlbmRYLCBlbmRZLFxuICAgIGR1cmF0aW9uLFxuICAgIGtleU1vZGlmaWVyRmxhZ3NcbiAgfSA9IG9wdHM7XG4gIGNvbnN0IHVybCA9IHNvdXJjZVV1aWQgJiYgZGVzdFV1aWRcbiAgICA/IGAvd2RhL2VsZW1lbnQvJHtzb3VyY2VVdWlkfS9wcmVzc0FuZERyYWdgXG4gICAgOiAnL3dkYS9wcmVzc0FuZERyYWcnO1xuICBjb25zdCBkZXN0ID0gZGVzdFV1aWQgJiYgdXRpbC53cmFwRWxlbWVudChkZXN0VXVpZCk7XG4gIHJldHVybiBhd2FpdCB0aGlzLndkYS5wcm94eS5jb21tYW5kKHVybCwgJ1BPU1QnLCB7XG4gICAgc3RhcnRYLCBzdGFydFksXG4gICAgZW5kWCwgZW5kWSxcbiAgICBkdXJhdGlvbixcbiAgICBkZXN0LFxuICAgIGtleU1vZGlmaWVyRmxhZ3MsXG4gIH0pO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBQcmVzc0FuZERyYWdBbmRIb2xkT3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBzb3VyY2VFbGVtZW50SWQgdXVpZCBvZiBhIFRvdWNoIEJhciBlbGVtZW50IHRvIHN0YXJ0IHRoZSBkcmFnIGZyb20uIEVpdGhlciB0aGlzIHByb3BlcnR5XG4gKiBhbmQgYGRlc3RpbmF0aW9uRWxlbWVudGAgbXVzdCBiZSBwcm92aWRlZCBvciBgc3RhcnRYYCwgYHN0YXJ0WWAsIGBlbmRYYCwgYGVuZFlgIGNvb3JkaW5hdGVzXG4gKiBtdXN0IGJlIHNldC5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZGVzdGluYXRpb25FbGVtZW50SWQgdXVpZCBvZiBhIFRvdWNoIEJhciBlbGVtZW50IHRvIGVuZCB0aGUgZHJhZyBvbi4gRWl0aGVyIHRoaXMgcHJvcGVydHlcbiAqIGFuZCBgc291cmNlRWxlbWVudGAgbXVzdCBiZSBwcm92aWRlZCBvciBgc3RhcnRYYCwgYHN0YXJ0WWAsIGBlbmRYYCwgYGVuZFlgIGNvb3JkaW5hdGVzXG4gKiBtdXN0IGJlIHNldC5cbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gc3RhcnRYIHN0YXJ0aW5nIFggY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBzdGFydFkgc3RhcnRpbmcgWSBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGVuZFggZW5kaW5nIFggY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBlbmRZIGVuZGluZyBZIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7IW51bWJlcn0gZHVyYXRpb24gbG9uZyBjbGljayBkdXJhdGlvbiBpbiBmbG9hdCBzZWNvbmRzXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHZlbG9jaXR5IGRyYWdnaW5nIHZlbG9jaXR5IGluIHBpeGVscyBwZXIgc2Vjb25kLlxuICogSWYgbm90IHByb3ZpZGVkIHRoZW4gdGhlIGRlZmF1bHQgdmVsb2NpdHkgaXMgdXNlZC4gU2VlXG4gKiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWdlc3R1cmV2ZWxvY2l0eVxuICogZm9yIG1vcmUgZGV0YWlsc1xuICogQHByb3BlcnR5IHs/bnVtYmVyfSBrZXlNb2RpZmllckZsYWdzIGlmIHNldCB0aGVuIHRoZSBnaXZlbiBrZXkgbW9kaWZpZXJzIHdpbGwgYmVcbiAqIGFwcGxpZWQgd2hpbGUgZHJhZyBpcyBwZXJmb3JtZWQuIFNlZVxuICogaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWlrZXltb2RpZmllcmZsYWdzXG4gKiBmb3IgbW9yZSBkZXRhaWxzXG4gKi9cblxuLyoqXG4gKiBQZXJmb3JtIHByZXNzLCBkcmFnIGFuZCBob2xkIGdlc3R1cmUgb24gYSBUb3VjaCBCYXIgZWxlbWVudCBvciBieSBhYnNvbHV0ZSBUb3VjaCBCYXIgY29vcmRpbmF0ZXNcbiAqXG4gKiBAcGFyYW0ge1ByZXNzQW5kRHJhZ0FuZEhvbGRPcHRpb25zfSBvcHRzXG4gKi9cbmNvbW1hbmRzLm1hY29zUHJlc3NBbmREcmFnQW5kSG9sZCA9IGFzeW5jIGZ1bmN0aW9uIG1hY29zUHJlc3NBbmREcmFnQW5kSG9sZCAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHNvdXJjZVV1aWQgPSBleHRyYWN0VXVpZChvcHRzLCBbJ3NvdXJjZUVsZW1lbnRJZCcsICdzb3VyY2VFbGVtZW50J10pO1xuICBjb25zdCBkZXN0VXVpZCA9IGV4dHJhY3RVdWlkKG9wdHMsIFsnZGVzdGluYXRpb25FbGVtZW50SWQnLCAnZGVzdGluYXRpb25FbGVtZW50J10pO1xuICBjb25zdCB7XG4gICAgc3RhcnRYLCBzdGFydFksXG4gICAgZW5kWCwgZW5kWSxcbiAgICBkdXJhdGlvbiwgaG9sZER1cmF0aW9uLFxuICAgIHZlbG9jaXR5LFxuICAgIGtleU1vZGlmaWVyRmxhZ3NcbiAgfSA9IG9wdHM7XG4gIGNvbnN0IHVybCA9IHNvdXJjZVV1aWQgJiYgZGVzdFV1aWRcbiAgICA/IGAvd2RhL2VsZW1lbnQvJHtzb3VyY2VVdWlkfS9wcmVzc0FuZERyYWdBbmRIb2xkYFxuICAgIDogJy93ZGEvcHJlc3NBbmREcmFnQW5kSG9sZCc7XG4gIGNvbnN0IGRlc3QgPSBkZXN0VXVpZCAmJiB1dGlsLndyYXBFbGVtZW50KGRlc3RVdWlkKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMud2RhLnByb3h5LmNvbW1hbmQodXJsLCAnUE9TVCcsIHtcbiAgICBzdGFydFgsIHN0YXJ0WSxcbiAgICBlbmRYLCBlbmRZLFxuICAgIGR1cmF0aW9uLCBob2xkRHVyYXRpb24sXG4gICAgdmVsb2NpdHksXG4gICAgZGVzdCxcbiAgICBrZXlNb2RpZmllckZsYWdzLFxuICB9KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQSxNQUFNQSxRQUFRLEdBQUcsRUFBakI7O0FBRUEsU0FBU0MsV0FBVCxDQUFzQkMsT0FBTyxHQUFHLEVBQWhDLEVBQW9DQyxRQUFRLEdBQUcsQ0FBQyxXQUFELEVBQWMsU0FBZCxDQUEvQyxFQUF5RTtFQUN2RSxLQUFLLE1BQU1DLElBQVgsSUFBbUJELFFBQW5CLEVBQTZCO0lBQzNCLElBQUlELE9BQU8sQ0FBQ0UsSUFBRCxDQUFYLEVBQW1CO01BQ2pCLE1BQU1DLE1BQU0sR0FBR0MsY0FBS0MsYUFBTCxDQUFtQkwsT0FBTyxDQUFDRSxJQUFELENBQTFCLENBQWY7O01B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
326
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2dlc3R1cmVzLmpzIiwibmFtZXMiOlsiY29tbWFuZHMiLCJleHRyYWN0VXVpZCIsIm9wdGlvbnMiLCJrZXlOYW1lcyIsIm5hbWUiLCJyZXN1bHQiLCJ1dGlsIiwidW53cmFwRWxlbWVudCIsInJlcXVpcmVVdWlkIiwiZXJyb3JzIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJtYWNvc1NldFZhbHVlIiwib3B0cyIsInV1aWQiLCJ2YWx1ZSIsInRleHQiLCJrZXlNb2RpZmllckZsYWdzIiwid2RhIiwicHJveHkiLCJjb21tYW5kIiwibWFjb3NDbGljayIsIngiLCJ5IiwidXJsIiwibWFjb3NTY3JvbGwiLCJkZWx0YVgiLCJkZWx0YVkiLCJtYWNvc1N3aXBlIiwiZGlyZWN0aW9uIiwidmVsb2NpdHkiLCJtYWNvc1JpZ2h0Q2xpY2siLCJtYWNvc0hvdmVyIiwibWFjb3NEb3VibGVDbGljayIsIm1hY29zQ2xpY2tBbmREcmFnIiwic291cmNlVXVpZCIsImRlc3RVdWlkIiwic3RhcnRYIiwic3RhcnRZIiwiZW5kWCIsImVuZFkiLCJkdXJhdGlvbiIsImRlc3QiLCJ3cmFwRWxlbWVudCIsIm1hY29zQ2xpY2tBbmREcmFnQW5kSG9sZCIsImhvbGREdXJhdGlvbiIsIm1hY29zS2V5cyIsImtleXMiLCJtYWNvc1ByZXNzQW5kSG9sZCIsIm1hY29zVGFwIiwibWFjb3NEb3VibGVUYXAiLCJtYWNvc1ByZXNzQW5kRHJhZyIsIm1hY29zUHJlc3NBbmREcmFnQW5kSG9sZCJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9nZXN0dXJlcy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1dGlsIH0gZnJvbSAnYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnYXBwaXVtL2RyaXZlcic7XG5cbmNvbnN0IGNvbW1hbmRzID0ge307XG5cbmZ1bmN0aW9uIGV4dHJhY3RVdWlkIChvcHRpb25zID0ge30sIGtleU5hbWVzID0gWydlbGVtZW50SWQnLCAnZWxlbWVudCddKSB7XG4gIGZvciAoY29uc3QgbmFtZSBvZiBrZXlOYW1lcykge1xuICAgIGlmIChvcHRpb25zW25hbWVdKSB7XG4gICAgICBjb25zdCByZXN1bHQgPSB1dGlsLnVud3JhcEVsZW1lbnQob3B0aW9uc1tuYW1lXSk7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5mdW5jdGlvbiByZXF1aXJlVXVpZCAob3B0aW9ucyA9IHt9LCBrZXlOYW1lcyA9IFsnZWxlbWVudElkJywgJ2VsZW1lbnQnXSkge1xuICBjb25zdCByZXN1bHQgPSBleHRyYWN0VXVpZChvcHRpb25zLCBrZXlOYW1lcyk7XG4gIGlmICghcmVzdWx0KSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgJHtrZXlOYW1lc1swXX0gZmllbGQgaXMgbWFuZGF0b3J5YCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFNldFZhbHVlT3B0aW9uc1xuICogQHByb3BlcnR5IHshc3RyaW5nfSBlbGVtZW50SWQgdXVpZCBvZiB0aGUgZWxlbWVudCB0byBzZXQgdmFsdWUgZm9yXG4gKiBAcHJvcGVydHkgeyp9IHZhbHVlIHZhbHVlIHRvIHNldC4gQ291bGQgYWxzbyBiZSBhbiBhcnJheVxuICogQHByb3BlcnR5IHtzdHJpbmd9IHRleHQgdGV4dCB0byBzZXQuIElmIGJvdGggdmFsdWUgYW5kIHRleHQgYXJlIHNldFxuICogdGhlbiBgdmFsdWVgIGlzIHByZWZlcnJlZFxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBrZXlNb2RpZmllckZsYWdzIGlmIHNldCB0aGVuIHRoZSBnaXZlbiBrZXkgbW9kaWZpZXJzIHdpbGwgYmVcbiAqIGFwcGxpZWQgd2hpbGUgdGhlIGVsZW1lbnQgdmFsdWUgaXMgYmVpbmcgc2V0LiBTZWVcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3Vpa2V5bW9kaWZpZXJmbGFnc1xuICogZm9yIG1vcmUgZGV0YWlsc1xuICovXG5cbi8qKlxuICogU2V0IHZhbHVlIHRvIHRoZSBnaXZlbiBlbGVtZW50XG4gKlxuICogQHBhcmFtIHtTZXRWYWx1ZU9wdGlvbnN9IG9wdHNcbiAqL1xuY29tbWFuZHMubWFjb3NTZXRWYWx1ZSA9IGFzeW5jIGZ1bmN0aW9uIG1hY29zU2V0VmFsdWUgKG9wdHMgPSB7fSkge1xuICBjb25zdCB1dWlkID0gcmVxdWlyZVV1aWQob3B0cyk7XG4gIGNvbnN0IHsgdmFsdWUsIHRleHQsIGtleU1vZGlmaWVyRmxhZ3MgfSA9IG9wdHM7XG4gIHJldHVybiBhd2FpdCB0aGlzLndkYS5wcm94eS5jb21tYW5kKGAvZWxlbWVudC8ke3V1aWR9L3ZhbHVlYCwgJ1BPU1QnLCB7XG4gICAgdmFsdWUsIHRleHQsXG4gICAga2V5TW9kaWZpZXJGbGFncyxcbiAgfSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENsaWNrT3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBlbGVtZW50SWQgdXVpZCBvZiB0aGUgZWxlbWVudCB0byBjbGljay4gRWl0aGVyIHRoaXMgcHJvcGVydHlcbiAqIG9yL2FuZCB4IGFuZCB5IG11c3QgYmUgc2V0LiBJZiBib3RoIGFyZSBzZXQgdGhlbiB4IGFuZCB5IGFyZSBjb25zaWRlcmVkIGFzIHJlbGF0aXZlXG4gKiBlbGVtZW50IGNvb3JkaW5hdGVzLiBJZiBvbmx5IHggYW5kIHkgYXJlIHNldCB0aGVuIHRoZXNlIGFyZSBwYXJzZWQgYXNcbiAqIGFic29sdXRlIGNvb3JkaW5hdGVzLlxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB4IGNsaWNrIFggY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB5IGNsaWNrIFkgY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBrZXlNb2RpZmllckZsYWdzIGlmIHNldCB0aGVuIHRoZSBnaXZlbiBrZXkgbW9kaWZpZXJzIHdpbGwgYmVcbiAqIGFwcGxpZWQgd2hpbGUgY2xpY2sgaXMgcGVyZm9ybWVkLiBTZWVcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3Vpa2V5bW9kaWZpZXJmbGFnc1xuICogZm9yIG1vcmUgZGV0YWlsc1xuICovXG5cbi8qKlxuICogUGVyZm9ybSBjbGljayBnZXN0dXJlIG9uIGFuIGVsZW1lbnQgb3IgYnkgcmVsYXRpdmUvYWJzb2x1dGUgY29vcmRpbmF0ZXNcbiAqXG4gKiBAcGFyYW0ge0NsaWNrT3B0aW9uc30gb3B0c1xuICovXG5jb21tYW5kcy5tYWNvc0NsaWNrID0gYXN5bmMgZnVuY3Rpb24gbWFjb3NDbGljayAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHV1aWQgPSBleHRyYWN0VXVpZChvcHRzKTtcbiAgY29uc3QgeyB4LCB5LCBrZXlNb2RpZmllckZsYWdzIH0gPSBvcHRzO1xuICBjb25zdCB1cmwgPSB1dWlkID8gYC9lbGVtZW50LyR7dXVpZH0vY2xpY2tgIDogJy93ZGEvY2xpY2snO1xuICByZXR1cm4gYXdhaXQgdGhpcy53ZGEucHJveHkuY29tbWFuZCh1cmwsICdQT1NUJywge1xuICAgIHgsIHksXG4gICAga2V5TW9kaWZpZXJGbGFncyxcbiAgfSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFNjcm9sbE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZWxlbWVudElkIHV1aWQgb2YgdGhlIGVsZW1lbnQgdG8gYmUgc2Nyb2xsZWQuIEVpdGhlciB0aGlzIHByb3BlcnR5XG4gKiBvci9hbmQgeCBhbmQgeSBtdXN0IGJlIHNldC4gSWYgYm90aCBhcmUgc2V0IHRoZW4geCBhbmQgeSBhcmUgY29uc2lkZXJlZCBhcyByZWxhdGl2ZVxuICogZWxlbWVudCBjb29yZGluYXRlcy4gSWYgb25seSB4IGFuZCB5IGFyZSBzZXQgdGhlbiB0aGVzZSBhcmUgcGFyc2VkIGFzXG4gKiBhYnNvbHV0ZSBjb29yZGluYXRlcy5cbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0geCBzY3JvbGwgWCBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHkgc2Nyb2xsIFkgY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHshbnVtYmVyfSBkZWx0YVggaG9yaXpvbnRhbCBkZWx0YSBhcyBmbG9hdCBudW1iZXJcbiAqIEBwcm9wZXJ0eSB7IW51bWJlcn0gZGVsdGFZIHZlcnRpY2FsIGRlbHRhIGFzIGZsb2F0IG51bWJlclxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBrZXlNb2RpZmllckZsYWdzIGlmIHNldCB0aGVuIHRoZSBnaXZlbiBrZXkgbW9kaWZpZXJzIHdpbGwgYmVcbiAqIGFwcGxpZWQgd2hpbGUgc2Nyb2xsIGlzIHBlcmZvcm1lZC4gU2VlXG4gKiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWtleW1vZGlmaWVyZmxhZ3NcbiAqIGZvciBtb3JlIGRldGFpbHNcbiAqL1xuXG4vKipcbiAqIFBlcmZvcm0gc2Nyb2xsIGdlc3R1cmUgb24gYW4gZWxlbWVudCBvciBieSByZWxhdGl2ZS9hYnNvbHV0ZSBjb29yZGluYXRlc1xuICpcbiAqIEBwYXJhbSB7U2Nyb2xsT3B0aW9uc30gb3B0c1xuICovXG5jb21tYW5kcy5tYWNvc1Njcm9sbCA9IGFzeW5jIGZ1bmN0aW9uIG1hY29zU2Nyb2xsIChvcHRzID0ge30pIHtcbiAgY29uc3QgdXVpZCA9IGV4dHJhY3RVdWlkKG9wdHMpO1xuICBjb25zdCB7XG4gICAgeCwgeSxcbiAgICBkZWx0YVgsIGRlbHRhWSxcbiAgICBrZXlNb2RpZmllckZsYWdzLFxuICB9ID0gb3B0cztcbiAgY29uc3QgdXJsID0gdXVpZCA/IGAvd2RhL2VsZW1lbnQvJHt1dWlkfS9zY3JvbGxgIDogJy93ZGEvc2Nyb2xsJztcbiAgcmV0dXJuIGF3YWl0IHRoaXMud2RhLnByb3h5LmNvbW1hbmQodXJsLCAnUE9TVCcsIHtcbiAgICBkZWx0YVgsIGRlbHRhWSxcbiAgICB4LCB5LFxuICAgIGtleU1vZGlmaWVyRmxhZ3MsXG4gIH0pO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTd2lwZU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZWxlbWVudElkIHV1aWQgb2YgdGhlIGVsZW1lbnQgdG8gYmUgc3dpcGVkLiBFaXRoZXIgdGhpcyBwcm9wZXJ0eVxuICogb3IvYW5kIHggYW5kIHkgbXVzdCBiZSBzZXQuIElmIGJvdGggYXJlIHNldCB0aGVuIHggYW5kIHkgYXJlIGNvbnNpZGVyZWQgYXMgcmVsYXRpdmVcbiAqIGVsZW1lbnQgY29vcmRpbmF0ZXMuIElmIG9ubHkgeCBhbmQgeSBhcmUgc2V0IHRoZW4gdGhlc2UgYXJlIHBhcnNlZCBhc1xuICogYWJzb2x1dGUgY29vcmRpbmF0ZXMuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHggc3dpcGUgWCBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHkgc3dpcGUgWSBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgeyFzdHJpbmd9IGRpcmVjdGlvbiBlaXRoZXIgJ3VwJywgJ2Rvd24nLCAnbGVmdCcgb3IgJ3JpZ2h0J1xuICogQHByb3BlcnR5IHs/bnVtYmVyfSB2ZWxvY2l0eSBUaGUgdmFsdWUgaXMgbWVhc3VyZWQgaW4gcGl4ZWxzIHBlciBzZWNvbmQgYW5kIHNhbWVcbiAqIHZhbHVlcyBjb3VsZCBiZWhhdmUgZGlmZmVyZW50bHkgb24gZGlmZmVyZW50IGRldmljZXMgZGVwZW5kaW5nIG9uIHRoZWlyIGRpc3BsYXlcbiAqIGRlbnNpdHkuIEhpZ2hlciB2YWx1ZXMgbWFrZSBzd2lwZSBnZXN0dXJlIGZhc3RlciAod2hpY2ggdXN1YWxseSBzY3JvbGxzIGxhcmdlclxuICogYXJlYXMgaWYgd2UgYXBwbHkgaXQgdG8gYSBsaXN0KSBhbmQgbG93ZXIgdmFsdWVzIHNsb3cgaXQgZG93bi5cbiAqIE9ubHkgdmFsdWVzIGdyZWF0ZXIgdGhhbiB6ZXJvIGhhdmUgZWZmZWN0LlxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBrZXlNb2RpZmllckZsYWdzIGlmIHNldCB0aGVuIHRoZSBnaXZlbiBrZXkgbW9kaWZpZXJzIHdpbGwgYmVcbiAqIGFwcGxpZWQgd2hpbGUgc2Nyb2xsIGlzIHBlcmZvcm1lZC4gU2VlXG4gKiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWtleW1vZGlmaWVyZmxhZ3NcbiAqIGZvciBtb3JlIGRldGFpbHNcbiAqL1xuXG4vKipcbiAqIFBlcmZvcm0gc3dpcGUgZ2VzdHVyZSBvbiBhbiBlbGVtZW50XG4gKlxuICogQHBhcmFtIHtTd2lwZU9wdGlvbnN9IG9wdHNcbiAqL1xuY29tbWFuZHMubWFjb3NTd2lwZSA9IGFzeW5jIGZ1bmN0aW9uIG1hY29zU3dpcGUgKG9wdHMgPSB7fSkge1xuICBjb25zdCB1dWlkID0gZXh0cmFjdFV1aWQob3B0cyk7XG4gIGNvbnN0IHtcbiAgICB4LCB5LFxuICAgIGRpcmVjdGlvbixcbiAgICB2ZWxvY2l0eSxcbiAgICBrZXlNb2RpZmllckZsYWdzLFxuICB9ID0gb3B0cztcbiAgY29uc3QgdXJsID0gdXVpZCA/IGAvd2RhL2VsZW1lbnQvJHt1dWlkfS9zd2lwZWAgOiBgL3dkYS9zd2lwZWA7XG4gIHJldHVybiBhd2FpdCB0aGlzLndkYS5wcm94eS5jb21tYW5kKHVybCwgJ1BPU1QnLCB7XG4gICAgeCwgeSxcbiAgICBkaXJlY3Rpb24sXG4gICAgdmVsb2NpdHksXG4gICAga2V5TW9kaWZpZXJGbGFncyxcbiAgfSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFJpZ2h0Q2xpY2tPcHRpb25zXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGVsZW1lbnRJZCB1dWlkIG9mIHRoZSBlbGVtZW50IHRvIGNsaWNrLiBFaXRoZXIgdGhpcyBwcm9wZXJ0eVxuICogb3IvYW5kIHggYW5kIHkgbXVzdCBiZSBzZXQuIElmIGJvdGggYXJlIHNldCB0aGVuIHggYW5kIHkgYXJlIGNvbnNpZGVyZWQgYXMgcmVsYXRpdmVcbiAqIGVsZW1lbnQgY29vcmRpbmF0ZXMuIElmIG9ubHkgeCBhbmQgeSBhcmUgc2V0IHRoZW4gdGhlc2UgYXJlIHBhcnNlZCBhc1xuICogYWJzb2x1dGUgY29vcmRpbmF0ZXMuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHggY2xpY2sgWCBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHkgY2xpY2sgWSBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGtleU1vZGlmaWVyRmxhZ3MgaWYgc2V0IHRoZW4gdGhlIGdpdmVuIGtleSBtb2RpZmllcnMgd2lsbCBiZVxuICogYXBwbGllZCB3aGlsZSBjbGljayBpcyBwZXJmb3JtZWQuIFNlZVxuICogaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWlrZXltb2RpZmllcmZsYWdzXG4gKiBmb3IgbW9yZSBkZXRhaWxzXG4gKi9cblxuLyoqXG4gKiBQZXJmb3JtIHJpZ2h0IGNsaWNrIGdlc3R1cmUgb24gYW4gZWxlbWVudCBvciBieSByZWxhdGl2ZS9hYnNvbHV0ZSBjb29yZGluYXRlc1xuICpcbiAqIEBwYXJhbSB7UmlnaHRDbGlja09wdGlvbnN9IG9wdHNcbiAqL1xuY29tbWFuZHMubWFjb3NSaWdodENsaWNrID0gYXN5bmMgZnVuY3Rpb24gbWFjb3NSaWdodENsaWNrIChvcHRzID0ge30pIHtcbiAgY29uc3QgdXVpZCA9IGV4dHJhY3RVdWlkKG9wdHMpO1xuICBjb25zdCB7IHgsIHksIGtleU1vZGlmaWVyRmxhZ3MgfSA9IG9wdHM7XG4gIGNvbnN0IHVybCA9IHV1aWQgPyBgL3dkYS9lbGVtZW50LyR7dXVpZH0vcmlnaHRDbGlja2AgOiAnL3dkYS9yaWdodENsaWNrJztcbiAgcmV0dXJuIGF3YWl0IHRoaXMud2RhLnByb3h5LmNvbW1hbmQodXJsLCAnUE9TVCcsIHtcbiAgICB4LCB5LFxuICAgIGtleU1vZGlmaWVyRmxhZ3MsXG4gIH0pO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBIb3Zlck9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZWxlbWVudElkIHV1aWQgb2YgdGhlIGVsZW1lbnQgdG8gaG92ZXIuIEVpdGhlciB0aGlzIHByb3BlcnR5XG4gKiBvci9hbmQgeCBhbmQgeSBtdXN0IGJlIHNldC4gSWYgYm90aCBhcmUgc2V0IHRoZW4geCBhbmQgeSBhcmUgY29uc2lkZXJlZCBhcyByZWxhdGl2ZVxuICogZWxlbWVudCBjb29yZGluYXRlcy4gSWYgb25seSB4IGFuZCB5IGFyZSBzZXQgdGhlbiB0aGVzZSBhcmUgcGFyc2VkIGFzXG4gKiBhYnNvbHV0ZSBjb29yZGluYXRlcy5cbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0geCBjbGljayBYIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0geSBjbGljayBZIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0ga2V5TW9kaWZpZXJGbGFncyBpZiBzZXQgdGhlbiB0aGUgZ2l2ZW4ga2V5IG1vZGlmaWVycyB3aWxsIGJlXG4gKiBhcHBsaWVkIHdoaWxlIGhvdmVyIGlzIHBlcmZvcm1lZC4gU2VlXG4gKiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWtleW1vZGlmaWVyZmxhZ3NcbiAqIGZvciBtb3JlIGRldGFpbHNcbiAqL1xuXG4vKipcbiAqIFBlcmZvcm0gaG92ZXIgZ2VzdHVyZSBvbiBhbiBlbGVtZW50IG9yIGJ5IHJlbGF0aXZlL2Fic29sdXRlIGNvb3JkaW5hdGVzXG4gKlxuICogQHBhcmFtIHtIb3Zlck9wdGlvbnN9IG9wdHNcbiAqL1xuY29tbWFuZHMubWFjb3NIb3ZlciA9IGFzeW5jIGZ1bmN0aW9uIG1hY29zSG92ZXIgKG9wdHMgPSB7fSkge1xuICBjb25zdCB1dWlkID0gZXh0cmFjdFV1aWQob3B0cyk7XG4gIGNvbnN0IHsgeCwgeSwga2V5TW9kaWZpZXJGbGFncyB9ID0gb3B0cztcbiAgY29uc3QgdXJsID0gdXVpZCA/IGAvd2RhL2VsZW1lbnQvJHt1dWlkfS9ob3ZlcmAgOiAnL3dkYS9ob3Zlcic7XG4gIHJldHVybiBhd2FpdCB0aGlzLndkYS5wcm94eS5jb21tYW5kKHVybCwgJ1BPU1QnLCB7XG4gICAgeCwgeSxcbiAgICBrZXlNb2RpZmllckZsYWdzLFxuICB9KTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gRG91YmxlQ2xpY2tPcHRpb25zXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGVsZW1lbnRJZCB1dWlkIG9mIHRoZSBlbGVtZW50IHRvIGRvdWJsZSBjbGljay4gRWl0aGVyIHRoaXMgcHJvcGVydHlcbiAqIG9yL2FuZCB4IGFuZCB5IG11c3QgYmUgc2V0LiBJZiBib3RoIGFyZSBzZXQgdGhlbiB4IGFuZCB5IGFyZSBjb25zaWRlcmVkIGFzIHJlbGF0aXZlXG4gKiBlbGVtZW50IGNvb3JkaW5hdGVzLiBJZiBvbmx5IHggYW5kIHkgYXJlIHNldCB0aGVuIHRoZXNlIGFyZSBwYXJzZWQgYXNcbiAqIGFic29sdXRlIGNvb3JkaW5hdGVzLlxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB4IGNsaWNrIFggY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB5IGNsaWNrIFkgY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBrZXlNb2RpZmllckZsYWdzIGlmIHNldCB0aGVuIHRoZSBnaXZlbiBrZXkgbW9kaWZpZXJzIHdpbGwgYmVcbiAqIGFwcGxpZWQgd2hpbGUgZG91YmxlIGNsaWNrIGlzIHBlcmZvcm1lZC4gU2VlXG4gKiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWtleW1vZGlmaWVyZmxhZ3NcbiAqIGZvciBtb3JlIGRldGFpbHNcbiAqL1xuXG4vKipcbiAqIFBlcmZvcm0gZG91YmxlIGNsaWNrIGdlc3R1cmUgb24gYW4gZWxlbWVudCBvciBieSByZWxhdGl2ZS9hYnNvbHV0ZSBjb29yZGluYXRlc1xuICpcbiAqIEBwYXJhbSB7RG91YmxlQ2xpY2tPcHRpb25zfSBvcHRzXG4gKi9cbmNvbW1hbmRzLm1hY29zRG91YmxlQ2xpY2sgPSBhc3luYyBmdW5jdGlvbiBtYWNvc0RvdWJsZUNsaWNrIChvcHRzID0ge30pIHtcbiAgY29uc3QgdXVpZCA9IGV4dHJhY3RVdWlkKG9wdHMpO1xuICBjb25zdCB7IHgsIHksIGtleU1vZGlmaWVyRmxhZ3MgfSA9IG9wdHM7XG4gIGNvbnN0IHVybCA9IHV1aWQgPyBgL3dkYS9lbGVtZW50LyR7dXVpZH0vZG91YmxlQ2xpY2tgIDogJy93ZGEvZG91YmxlQ2xpY2snO1xuICByZXR1cm4gYXdhaXQgdGhpcy53ZGEucHJveHkuY29tbWFuZCh1cmwsICdQT1NUJywge1xuICAgIHgsIHksXG4gICAga2V5TW9kaWZpZXJGbGFncyxcbiAgfSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENsaWNrQW5kRHJhZ09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gc291cmNlRWxlbWVudElkIHV1aWQgb2YgdGhlIGVsZW1lbnQgdG8gc3RhcnQgdGhlIGRyYWcgZnJvbS4gRWl0aGVyIHRoaXMgcHJvcGVydHlcbiAqIGFuZCBgZGVzdGluYXRpb25FbGVtZW50YCBtdXN0IGJlIHByb3ZpZGVkIG9yIGBzdGFydFhgLCBgc3RhcnRZYCwgYGVuZFhgLCBgZW5kWWAgY29vcmRpbmF0ZXNcbiAqIG11c3QgYmUgc2V0LlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBkZXN0aW5hdGlvbkVsZW1lbnRJZCB1dWlkIG9mIHRoZSBlbGVtZW50IHRvIGVuZCB0aGUgZHJhZyBvbi4gRWl0aGVyIHRoaXMgcHJvcGVydHlcbiAqIGFuZCBgc291cmNlRWxlbWVudGAgbXVzdCBiZSBwcm92aWRlZCBvciBgc3RhcnRYYCwgYHN0YXJ0WWAsIGBlbmRYYCwgYGVuZFlgIGNvb3JkaW5hdGVzXG4gKiBtdXN0IGJlIHNldC5cbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gc3RhcnRYIHN0YXJ0aW5nIFggY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBzdGFydFkgc3RhcnRpbmcgWSBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGVuZFggZW5kaW5nIFggY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBlbmRZIGVuZGluZyBZIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7IW51bWJlcn0gZHVyYXRpb24gbG9uZyBjbGljayBkdXJhdGlvbiBpbiBmbG9hdCBzZWNvbmRzXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGtleU1vZGlmaWVyRmxhZ3MgaWYgc2V0IHRoZW4gdGhlIGdpdmVuIGtleSBtb2RpZmllcnMgd2lsbCBiZVxuICogYXBwbGllZCB3aGlsZSBkcmFnIGlzIHBlcmZvcm1lZC4gU2VlXG4gKiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWtleW1vZGlmaWVyZmxhZ3NcbiAqIGZvciBtb3JlIGRldGFpbHNcbiAqL1xuXG4vKipcbiAqIFBlcmZvcm0gbG9uZyBjbGljayBhbmQgZHJhZyBnZXN0dXJlIG9uIGFuIGVsZW1lbnQgb3IgYnkgYWJzb2x1dGUgY29vcmRpbmF0ZXNcbiAqXG4gKiBAcGFyYW0ge0NsaWNrQW5kRHJhZ09wdGlvbnN9IG9wdHNcbiAqL1xuY29tbWFuZHMubWFjb3NDbGlja0FuZERyYWcgPSBhc3luYyBmdW5jdGlvbiBtYWNvc0NsaWNrQW5kRHJhZyAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHNvdXJjZVV1aWQgPSBleHRyYWN0VXVpZChvcHRzLCBbJ3NvdXJjZUVsZW1lbnRJZCcsICdzb3VyY2VFbGVtZW50J10pO1xuICBjb25zdCBkZXN0VXVpZCA9IGV4dHJhY3RVdWlkKG9wdHMsIFsnZGVzdGluYXRpb25FbGVtZW50SWQnLCAnZGVzdGluYXRpb25FbGVtZW50J10pO1xuICBjb25zdCB7XG4gICAgc3RhcnRYLCBzdGFydFksXG4gICAgZW5kWCwgZW5kWSxcbiAgICBkdXJhdGlvbixcbiAgICBrZXlNb2RpZmllckZsYWdzXG4gIH0gPSBvcHRzO1xuICBjb25zdCB1cmwgPSBzb3VyY2VVdWlkICYmIGRlc3RVdWlkXG4gICAgPyBgL3dkYS9lbGVtZW50LyR7c291cmNlVXVpZH0vY2xpY2tBbmREcmFnYFxuICAgIDogJy93ZGEvY2xpY2tBbmREcmFnJztcbiAgY29uc3QgZGVzdCA9IGRlc3RVdWlkICYmIHV0aWwud3JhcEVsZW1lbnQoZGVzdFV1aWQpO1xuICByZXR1cm4gYXdhaXQgdGhpcy53ZGEucHJveHkuY29tbWFuZCh1cmwsICdQT1NUJywge1xuICAgIHN0YXJ0WCwgc3RhcnRZLFxuICAgIGVuZFgsIGVuZFksXG4gICAgZHVyYXRpb24sXG4gICAgZGVzdCxcbiAgICBrZXlNb2RpZmllckZsYWdzLFxuICB9KTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQ2xpY2tBbmREcmFnQW5kSG9sZE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gc291cmNlRWxlbWVudElkIHV1aWQgb2YgdGhlIGVsZW1lbnQgdG8gc3RhcnQgdGhlIGRyYWcgZnJvbS4gRWl0aGVyIHRoaXMgcHJvcGVydHlcbiAqIGFuZCBgZGVzdGluYXRpb25FbGVtZW50YCBtdXN0IGJlIHByb3ZpZGVkIG9yIGBzdGFydFhgLCBgc3RhcnRZYCwgYGVuZFhgLCBgZW5kWWAgY29vcmRpbmF0ZXNcbiAqIG11c3QgYmUgc2V0LlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBkZXN0aW5hdGlvbkVsZW1lbnRJZCB1dWlkIG9mIHRoZSBlbGVtZW50IHRvIGVuZCB0aGUgZHJhZyBvbi4gRWl0aGVyIHRoaXMgcHJvcGVydHlcbiAqIGFuZCBgc291cmNlRWxlbWVudGAgbXVzdCBiZSBwcm92aWRlZCBvciBgc3RhcnRYYCwgYHN0YXJ0WWAsIGBlbmRYYCwgYGVuZFlgIGNvb3JkaW5hdGVzXG4gKiBtdXN0IGJlIHNldC5cbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gc3RhcnRYIHN0YXJ0aW5nIFggY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBzdGFydFkgc3RhcnRpbmcgWSBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGVuZFggZW5kaW5nIFggY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBlbmRZIGVuZGluZyBZIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7IW51bWJlcn0gZHVyYXRpb24gbG9uZyBjbGljayBkdXJhdGlvbiBpbiBmbG9hdCBzZWNvbmRzXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHZlbG9jaXR5IGRyYWdnaW5nIHZlbG9jaXR5IGluIHBpeGVscyBwZXIgc2Vjb25kLlxuICogSWYgbm90IHByb3ZpZGVkIHRoZW4gdGhlIGRlZmF1bHQgdmVsb2NpdHkgaXMgdXNlZC4gU2VlXG4gKiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWdlc3R1cmV2ZWxvY2l0eVxuICogZm9yIG1vcmUgZGV0YWlsc1xuICogQHByb3BlcnR5IHs/bnVtYmVyfSBrZXlNb2RpZmllckZsYWdzIGlmIHNldCB0aGVuIHRoZSBnaXZlbiBrZXkgbW9kaWZpZXJzIHdpbGwgYmVcbiAqIGFwcGxpZWQgd2hpbGUgZHJhZyBpcyBwZXJmb3JtZWQuIFNlZVxuICogaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWlrZXltb2RpZmllcmZsYWdzXG4gKiBmb3IgbW9yZSBkZXRhaWxzXG4gKi9cblxuLyoqXG4gKiBQZXJmb3JtIGxvbmcgY2xpY2ssIGRyYWcgYW5kIGhvbGQgZ2VzdHVyZSBvbiBhbiBlbGVtZW50IG9yIGJ5IGFic29sdXRlIGNvb3JkaW5hdGVzXG4gKlxuICogQHBhcmFtIHtDbGlja0FuZERyYWdBbmRIb2xkT3B0aW9uc30gb3B0c1xuICovXG5jb21tYW5kcy5tYWNvc0NsaWNrQW5kRHJhZ0FuZEhvbGQgPSBhc3luYyBmdW5jdGlvbiBtYWNvc0NsaWNrQW5kRHJhZ0FuZEhvbGQgKG9wdHMgPSB7fSkge1xuICBjb25zdCBzb3VyY2VVdWlkID0gZXh0cmFjdFV1aWQob3B0cywgWydzb3VyY2VFbGVtZW50SWQnLCAnc291cmNlRWxlbWVudCddKTtcbiAgY29uc3QgZGVzdFV1aWQgPSBleHRyYWN0VXVpZChvcHRzLCBbJ2Rlc3RpbmF0aW9uRWxlbWVudElkJywgJ2Rlc3RpbmF0aW9uRWxlbWVudCddKTtcbiAgY29uc3Qge1xuICAgIHN0YXJ0WCwgc3RhcnRZLFxuICAgIGVuZFgsIGVuZFksXG4gICAgZHVyYXRpb24sIGhvbGREdXJhdGlvbixcbiAgICB2ZWxvY2l0eSxcbiAgICBrZXlNb2RpZmllckZsYWdzXG4gIH0gPSBvcHRzO1xuICBjb25zdCB1cmwgPSBzb3VyY2VVdWlkICYmIGRlc3RVdWlkXG4gICAgPyBgL3dkYS9lbGVtZW50LyR7c291cmNlVXVpZH0vY2xpY2tBbmREcmFnQW5kSG9sZGBcbiAgICA6ICcvd2RhL2NsaWNrQW5kRHJhZ0FuZEhvbGQnO1xuICBjb25zdCBkZXN0ID0gZGVzdFV1aWQgJiYgdXRpbC53cmFwRWxlbWVudChkZXN0VXVpZCk7XG4gIHJldHVybiBhd2FpdCB0aGlzLndkYS5wcm94eS5jb21tYW5kKHVybCwgJ1BPU1QnLCB7XG4gICAgc3RhcnRYLCBzdGFydFksXG4gICAgZW5kWCwgZW5kWSxcbiAgICBkdXJhdGlvbiwgaG9sZER1cmF0aW9uLFxuICAgIHZlbG9jaXR5LFxuICAgIGRlc3QsXG4gICAga2V5TW9kaWZpZXJGbGFncyxcbiAgfSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEtleU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7IXN0cmluZ30ga2V5IGEgc3RyaW5nLCB0aGF0IHJlcHJlc2VudHMgYSBrZXkgdG8gdHlwZSAoc2VlXG4gKiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTUwMDYwNC10eXBla2V5P2xhbmd1YWdlPW9iamNcbiAqIGFuZCBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWtleWJvYXJka2V5P2xhbmd1YWdlPW9iamMpXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IG1vZGlmaWVyRmxhZ3MgYSBzZXQgb2YgbW9kaWZpZXIgZmxhZ3NcbiAqIChodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWtleW1vZGlmaWVyZmxhZ3M/bGFuZ3VhZ2U9b2JqYylcbiAqIHRvIHVzZSB3aGVuIHR5cGluZyB0aGUga2V5LlxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gS2V5c09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZWxlbWVudElkIHV1aWQgb2YgdGhlIGVsZW1lbnQgdG8gc2VuZCBrZXlzIHRvLlxuICogSWYgdGhlIGVsZW1lbnQgaXMgbm90IHByb3ZpZGVkIHRoZW4gdGhlIGtleXMgd2lsbCBiZSBzZW50IHRvIHRoZSBjdXJyZW50IGFwcGxpY2F0aW9uLlxuICogQHByb3BlcnR5IHshQXJyYXk8S2V5T3B0aW9uc3xzdHJpbmc+fSBrZXlzIEFycmF5IG9mIGtleXMgdG8gdHlwZS5cbiAqIEVhY2ggaXRlbSBjb3VsZCBlaXRoZXIgYmUgYSBzdHJpbmcsIHRoYXQgcmVwcmVzZW50cyBhIGtleSBpdHNlbGYgKHNlZVxuICogaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE1MDA2MDQtdHlwZWtleT9sYW5ndWFnZT1vYmpjXG4gKiBhbmQgaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWlrZXlib2FyZGtleT9sYW5ndWFnZT1vYmpjKVxuICogb3IgYSBkaWN0aW9uYXJ5LCBpZiB0aGUga2V5IHNob3VsZCBhbHNvIGJlIGVudGVyZWQgd2l0aCBtb2RpZmllcnMuXG4gKi9cblxuLyoqXG4gKiBTZW5kIGtleXMgdG8gdGhlIGdpdmVuIGVsZW1lbnQgb3IgdG8gdGhlIGFwcGxpY2F0aW9uIHVuZGVyIHRlc3RcbiAqXG4gKiBAcGFyYW0ge0tleXNPcHRpb25zfSBvcHRzXG4gKi9cbmNvbW1hbmRzLm1hY29zS2V5cyA9IGFzeW5jIGZ1bmN0aW9uIG1hY29zS2V5cyAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHV1aWQgPSBleHRyYWN0VXVpZChvcHRzKTtcbiAgY29uc3QgeyBrZXlzIH0gPSBvcHRzO1xuICBjb25zdCB1cmwgPSB1dWlkID8gYC93ZGEvZWxlbWVudC8ke3V1aWR9L2tleXNgIDogJy93ZGEva2V5cyc7XG4gIHJldHVybiBhd2FpdCB0aGlzLndkYS5wcm94eS5jb21tYW5kKHVybCwgJ1BPU1QnLCB7IGtleXMgfSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFByZXNzT3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBlbGVtZW50SWQgdXVpZCBvZiB0aGUgVG91Y2ggQmFyIGVsZW1lbnQgdG8gYmUgcHJlc3NlZC4gRWl0aGVyIHRoaXMgcHJvcGVydHlcbiAqIG9yL2FuZCB4IGFuZCB5IG11c3QgYmUgc2V0LiBJZiBib3RoIGFyZSBzZXQgdGhlbiB4IGFuZCB5IGFyZSBjb25zaWRlcmVkIGFzIHJlbGF0aXZlXG4gKiBlbGVtZW50IGNvb3JkaW5hdGVzLiBJZiBvbmx5IHggYW5kIHkgYXJlIHNldCB0aGVuIHRoZXNlIGFyZSBwYXJzZWQgYXNcbiAqIGFic29sdXRlIFRvdWNoIEJhciBjb29yZGluYXRlcy5cbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0geCBsb25nIGNsaWNrIFggY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB5IGxvbmcgY2xpY2sgWSBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgeyFudW1iZXJ9IGR1cmF0aW9uIHRoZSBudW1iZXIgb2YgZmxvYXQgc2Vjb25kcyB0byBob2xkIHRoZSBtb3VzZSBidXR0b25cbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0ga2V5TW9kaWZpZXJGbGFncyBpZiBzZXQgdGhlbiB0aGUgZ2l2ZW4ga2V5IG1vZGlmaWVycyB3aWxsIGJlXG4gKiBhcHBsaWVkIHdoaWxlIGNsaWNrIGlzIHBlcmZvcm1lZC4gU2VlXG4gKiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWtleW1vZGlmaWVyZmxhZ3NcbiAqIGZvciBtb3JlIGRldGFpbHNcbiAqL1xuXG4vKipcbiAqIFBlcmZvcm0gcHJlc3MgZ2VzdHVyZSBvbiBhIFRvdWNoIEJhciBlbGVtZW50IG9yIGJ5IHJlbGF0aXZlL2Fic29sdXRlIGNvb3JkaW5hdGVzXG4gKlxuICogQHBhcmFtIHtQcmVzc09wdGlvbnN9IG9wdHNcbiAqL1xuY29tbWFuZHMubWFjb3NQcmVzc0FuZEhvbGQgPSBhc3luYyBmdW5jdGlvbiBtYWNvc1ByZXNzQW5kSG9sZCAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHV1aWQgPSBleHRyYWN0VXVpZChvcHRzKTtcbiAgY29uc3QgeyB4LCB5LCBkdXJhdGlvbiwga2V5TW9kaWZpZXJGbGFncyB9ID0gb3B0cztcbiAgY29uc3QgdXJsID0gdXVpZCA/IGAvd2RhL2VsZW1lbnQvJHt1dWlkfS9wcmVzc2AgOiAnL3dkYS9wcmVzcyc7XG4gIHJldHVybiBhd2FpdCB0aGlzLndkYS5wcm94eS5jb21tYW5kKHVybCwgJ1BPU1QnLCB7XG4gICAgeCwgeSxcbiAgICBkdXJhdGlvbixcbiAgICBrZXlNb2RpZmllckZsYWdzLFxuICB9KTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gVGFwT3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBlbGVtZW50SWQgdXVpZCBvZiB0aGUgVG91Y2ggQmFyIGVsZW1lbnQgdG8gdGFwLiBFaXRoZXIgdGhpcyBwcm9wZXJ0eVxuICogb3IvYW5kIHggYW5kIHkgbXVzdCBiZSBzZXQuIElmIGJvdGggYXJlIHNldCB0aGVuIHggYW5kIHkgYXJlIGNvbnNpZGVyZWQgYXMgcmVsYXRpdmVcbiAqIGVsZW1lbnQgY29vcmRpbmF0ZXMuIElmIG9ubHkgeCBhbmQgeSBhcmUgc2V0IHRoZW4gdGhlc2UgYXJlIHBhcnNlZCBhc1xuICogYWJzb2x1dGUgVG91Y2ggQmFyIGNvb3JkaW5hdGVzLlxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB4IGNsaWNrIFggY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB5IGNsaWNrIFkgY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBrZXlNb2RpZmllckZsYWdzIGlmIHNldCB0aGVuIHRoZSBnaXZlbiBrZXkgbW9kaWZpZXJzIHdpbGwgYmVcbiAqIGFwcGxpZWQgd2hpbGUgY2xpY2sgaXMgcGVyZm9ybWVkLiBTZWVcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3Vpa2V5bW9kaWZpZXJmbGFnc1xuICogZm9yIG1vcmUgZGV0YWlsc1xuICovXG5cbi8qKlxuICogUGVyZm9ybSB0YXAgZ2VzdHVyZSBvbiBhIFRvdWNoIEJhciBlbGVtZW50IG9yIGJ5IHJlbGF0aXZlL2Fic29sdXRlIGNvb3JkaW5hdGVzXG4gKlxuICogQHBhcmFtIHtUYXBPcHRpb25zfSBvcHRzXG4gKi9cbmNvbW1hbmRzLm1hY29zVGFwID0gYXN5bmMgZnVuY3Rpb24gbWFjb3NUYXAgKG9wdHMgPSB7fSkge1xuICBjb25zdCB1dWlkID0gZXh0cmFjdFV1aWQob3B0cyk7XG4gIGNvbnN0IHsgeCwgeSwga2V5TW9kaWZpZXJGbGFncyB9ID0gb3B0cztcbiAgY29uc3QgdXJsID0gdXVpZCA/IGAvd2RhL2VsZW1lbnQvJHt1dWlkfS90YXBgIDogJy93ZGEvdGFwJztcbiAgcmV0dXJuIGF3YWl0IHRoaXMud2RhLnByb3h5LmNvbW1hbmQodXJsLCAnUE9TVCcsIHtcbiAgICB4LCB5LFxuICAgIGtleU1vZGlmaWVyRmxhZ3MsXG4gIH0pO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBEb3VibGVUYXBPcHRpb25zXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGVsZW1lbnRJZCB1dWlkIG9mIHRoZSBUb3VjaCBCYXIgZWxlbWVudCB0byB0YXAuIEVpdGhlciB0aGlzIHByb3BlcnR5XG4gKiBvci9hbmQgeCBhbmQgeSBtdXN0IGJlIHNldC4gSWYgYm90aCBhcmUgc2V0IHRoZW4geCBhbmQgeSBhcmUgY29uc2lkZXJlZCBhcyByZWxhdGl2ZVxuICogZWxlbWVudCBjb29yZGluYXRlcy4gSWYgb25seSB4IGFuZCB5IGFyZSBzZXQgdGhlbiB0aGVzZSBhcmUgcGFyc2VkIGFzXG4gKiBhYnNvbHV0ZSBUb3VjaCBCYXIgY29vcmRpbmF0ZXMuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHggY2xpY2sgWCBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHkgY2xpY2sgWSBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGtleU1vZGlmaWVyRmxhZ3MgaWYgc2V0IHRoZW4gdGhlIGdpdmVuIGtleSBtb2RpZmllcnMgd2lsbCBiZVxuICogYXBwbGllZCB3aGlsZSBjbGljayBpcyBwZXJmb3JtZWQuIFNlZVxuICogaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWlrZXltb2RpZmllcmZsYWdzXG4gKiBmb3IgbW9yZSBkZXRhaWxzXG4gKi9cblxuLyoqXG4gKiBQZXJmb3JtIHRhcCBnZXN0dXJlIG9uIGEgVG91Y2ggQmFyIGVsZW1lbnQgb3IgYnkgcmVsYXRpdmUvYWJzb2x1dGUgY29vcmRpbmF0ZXNcbiAqXG4gKiBAcGFyYW0ge0RvdWJsZVRhcE9wdGlvbnN9IG9wdHNcbiAqL1xuY29tbWFuZHMubWFjb3NEb3VibGVUYXAgPSBhc3luYyBmdW5jdGlvbiBtYWNvc0RvdWJsZVRhcCAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHV1aWQgPSBleHRyYWN0VXVpZChvcHRzKTtcbiAgY29uc3QgeyB4LCB5LCBrZXlNb2RpZmllckZsYWdzIH0gPSBvcHRzO1xuICBjb25zdCB1cmwgPSB1dWlkID8gYC93ZGEvZWxlbWVudC8ke3V1aWR9L2RvdWJsZVRhcGAgOiAnL3dkYS9kb3VibGVUYXAnO1xuICByZXR1cm4gYXdhaXQgdGhpcy53ZGEucHJveHkuY29tbWFuZCh1cmwsICdQT1NUJywge1xuICAgIHgsIHksXG4gICAga2V5TW9kaWZpZXJGbGFncyxcbiAgfSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFByZXNzQW5kRHJhZ09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gc291cmNlRWxlbWVudElkIHV1aWQgb2YgYSBUb3VjaCBCYXIgZWxlbWVudCB0byBzdGFydCB0aGUgZHJhZyBmcm9tLiBFaXRoZXIgdGhpcyBwcm9wZXJ0eVxuICogYW5kIGBkZXN0aW5hdGlvbkVsZW1lbnRgIG11c3QgYmUgcHJvdmlkZWQgb3IgYHN0YXJ0WGAsIGBzdGFydFlgLCBgZW5kWGAsIGBlbmRZYCBjb29yZGluYXRlc1xuICogbXVzdCBiZSBzZXQuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGRlc3RpbmF0aW9uRWxlbWVudElkIHV1aWQgb2YgYSBUb3VjaCBCYXIgZWxlbWVudCB0byBlbmQgdGhlIGRyYWcgb24uIEVpdGhlciB0aGlzIHByb3BlcnR5XG4gKiBhbmQgYHNvdXJjZUVsZW1lbnRgIG11c3QgYmUgcHJvdmlkZWQgb3IgYHN0YXJ0WGAsIGBzdGFydFlgLCBgZW5kWGAsIGBlbmRZYCBjb29yZGluYXRlc1xuICogbXVzdCBiZSBzZXQuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHN0YXJ0WCBzdGFydGluZyBYIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gc3RhcnRZIHN0YXJ0aW5nIFkgY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBlbmRYIGVuZGluZyBYIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gZW5kWSBlbmRpbmcgWSBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgeyFudW1iZXJ9IGR1cmF0aW9uIGxvbmcgY2xpY2sgZHVyYXRpb24gaW4gZmxvYXQgc2Vjb25kc1xuICogQHByb3BlcnR5IHs/bnVtYmVyfSBrZXlNb2RpZmllckZsYWdzIGlmIHNldCB0aGVuIHRoZSBnaXZlbiBrZXkgbW9kaWZpZXJzIHdpbGwgYmVcbiAqIGFwcGxpZWQgd2hpbGUgZHJhZyBpcyBwZXJmb3JtZWQuIFNlZVxuICogaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWlrZXltb2RpZmllcmZsYWdzXG4gKiBmb3IgbW9yZSBkZXRhaWxzXG4gKi9cblxuLyoqXG4gKiBQZXJmb3JtIGxvbmcgcHJlc3MgYW5kIGRyYWcgZ2VzdHVyZSBvbiBhIFRvdWNoIEJhciBlbGVtZW50IG9yIGJ5IGFic29sdXRlIGNvb3JkaW5hdGVzXG4gKlxuICogQHBhcmFtIHtQcmVzc0FuZERyYWdPcHRpb25zfSBvcHRzXG4gKi9cbmNvbW1hbmRzLm1hY29zUHJlc3NBbmREcmFnID0gYXN5bmMgZnVuY3Rpb24gbWFjb3NQcmVzc0FuZERyYWcgKG9wdHMgPSB7fSkge1xuICBjb25zdCBzb3VyY2VVdWlkID0gZXh0cmFjdFV1aWQob3B0cywgWydzb3VyY2VFbGVtZW50SWQnLCAnc291cmNlRWxlbWVudCddKTtcbiAgY29uc3QgZGVzdFV1aWQgPSBleHRyYWN0VXVpZChvcHRzLCBbJ2Rlc3RpbmF0aW9uRWxlbWVudElkJywgJ2Rlc3RpbmF0aW9uRWxlbWVudCddKTtcbiAgY29uc3Qge1xuICAgIHN0YXJ0WCwgc3RhcnRZLFxuICAgIGVuZFgsIGVuZFksXG4gICAgZHVyYXRpb24sXG4gICAga2V5TW9kaWZpZXJGbGFnc1xuICB9ID0gb3B0cztcbiAgY29uc3QgdXJsID0gc291cmNlVXVpZCAmJiBkZXN0VXVpZFxuICAgID8gYC93ZGEvZWxlbWVudC8ke3NvdXJjZVV1aWR9L3ByZXNzQW5kRHJhZ2BcbiAgICA6ICcvd2RhL3ByZXNzQW5kRHJhZyc7XG4gIGNvbnN0IGRlc3QgPSBkZXN0VXVpZCAmJiB1dGlsLndyYXBFbGVtZW50KGRlc3RVdWlkKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMud2RhLnByb3h5LmNvbW1hbmQodXJsLCAnUE9TVCcsIHtcbiAgICBzdGFydFgsIHN0YXJ0WSxcbiAgICBlbmRYLCBlbmRZLFxuICAgIGR1cmF0aW9uLFxuICAgIGRlc3QsXG4gICAga2V5TW9kaWZpZXJGbGFncyxcbiAgfSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFByZXNzQW5kRHJhZ0FuZEhvbGRPcHRpb25zXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHNvdXJjZUVsZW1lbnRJZCB1dWlkIG9mIGEgVG91Y2ggQmFyIGVsZW1lbnQgdG8gc3RhcnQgdGhlIGRyYWcgZnJvbS4gRWl0aGVyIHRoaXMgcHJvcGVydHlcbiAqIGFuZCBgZGVzdGluYXRpb25FbGVtZW50YCBtdXN0IGJlIHByb3ZpZGVkIG9yIGBzdGFydFhgLCBgc3RhcnRZYCwgYGVuZFhgLCBgZW5kWWAgY29vcmRpbmF0ZXNcbiAqIG11c3QgYmUgc2V0LlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBkZXN0aW5hdGlvbkVsZW1lbnRJZCB1dWlkIG9mIGEgVG91Y2ggQmFyIGVsZW1lbnQgdG8gZW5kIHRoZSBkcmFnIG9uLiBFaXRoZXIgdGhpcyBwcm9wZXJ0eVxuICogYW5kIGBzb3VyY2VFbGVtZW50YCBtdXN0IGJlIHByb3ZpZGVkIG9yIGBzdGFydFhgLCBgc3RhcnRZYCwgYGVuZFhgLCBgZW5kWWAgY29vcmRpbmF0ZXNcbiAqIG11c3QgYmUgc2V0LlxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBzdGFydFggc3RhcnRpbmcgWCBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHN0YXJ0WSBzdGFydGluZyBZIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gZW5kWCBlbmRpbmcgWCBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGVuZFkgZW5kaW5nIFkgY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHshbnVtYmVyfSBkdXJhdGlvbiBsb25nIGNsaWNrIGR1cmF0aW9uIGluIGZsb2F0IHNlY29uZHNcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gdmVsb2NpdHkgZHJhZ2dpbmcgdmVsb2NpdHkgaW4gcGl4ZWxzIHBlciBzZWNvbmQuXG4gKiBJZiBub3QgcHJvdmlkZWQgdGhlbiB0aGUgZGVmYXVsdCB2ZWxvY2l0eSBpcyB1c2VkLiBTZWVcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZ2VzdHVyZXZlbG9jaXR5XG4gKiBmb3IgbW9yZSBkZXRhaWxzXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGtleU1vZGlmaWVyRmxhZ3MgaWYgc2V0IHRoZW4gdGhlIGdpdmVuIGtleSBtb2RpZmllcnMgd2lsbCBiZVxuICogYXBwbGllZCB3aGlsZSBkcmFnIGlzIHBlcmZvcm1lZC4gU2VlXG4gKiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWtleW1vZGlmaWVyZmxhZ3NcbiAqIGZvciBtb3JlIGRldGFpbHNcbiAqL1xuXG4vKipcbiAqIFBlcmZvcm0gcHJlc3MsIGRyYWcgYW5kIGhvbGQgZ2VzdHVyZSBvbiBhIFRvdWNoIEJhciBlbGVtZW50IG9yIGJ5IGFic29sdXRlIFRvdWNoIEJhciBjb29yZGluYXRlc1xuICpcbiAqIEBwYXJhbSB7UHJlc3NBbmREcmFnQW5kSG9sZE9wdGlvbnN9IG9wdHNcbiAqL1xuY29tbWFuZHMubWFjb3NQcmVzc0FuZERyYWdBbmRIb2xkID0gYXN5bmMgZnVuY3Rpb24gbWFjb3NQcmVzc0FuZERyYWdBbmRIb2xkIChvcHRzID0ge30pIHtcbiAgY29uc3Qgc291cmNlVXVpZCA9IGV4dHJhY3RVdWlkKG9wdHMsIFsnc291cmNlRWxlbWVudElkJywgJ3NvdXJjZUVsZW1lbnQnXSk7XG4gIGNvbnN0IGRlc3RVdWlkID0gZXh0cmFjdFV1aWQob3B0cywgWydkZXN0aW5hdGlvbkVsZW1lbnRJZCcsICdkZXN0aW5hdGlvbkVsZW1lbnQnXSk7XG4gIGNvbnN0IHtcbiAgICBzdGFydFgsIHN0YXJ0WSxcbiAgICBlbmRYLCBlbmRZLFxuICAgIGR1cmF0aW9uLCBob2xkRHVyYXRpb24sXG4gICAgdmVsb2NpdHksXG4gICAga2V5TW9kaWZpZXJGbGFnc1xuICB9ID0gb3B0cztcbiAgY29uc3QgdXJsID0gc291cmNlVXVpZCAmJiBkZXN0VXVpZFxuICAgID8gYC93ZGEvZWxlbWVudC8ke3NvdXJjZVV1aWR9L3ByZXNzQW5kRHJhZ0FuZEhvbGRgXG4gICAgOiAnL3dkYS9wcmVzc0FuZERyYWdBbmRIb2xkJztcbiAgY29uc3QgZGVzdCA9IGRlc3RVdWlkICYmIHV0aWwud3JhcEVsZW1lbnQoZGVzdFV1aWQpO1xuICByZXR1cm4gYXdhaXQgdGhpcy53ZGEucHJveHkuY29tbWFuZCh1cmwsICdQT1NUJywge1xuICAgIHN0YXJ0WCwgc3RhcnRZLFxuICAgIGVuZFgsIGVuZFksXG4gICAgZHVyYXRpb24sIGhvbGREdXJhdGlvbixcbiAgICB2ZWxvY2l0eSxcbiAgICBkZXN0LFxuICAgIGtleU1vZGlmaWVyRmxhZ3MsXG4gIH0pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUVBLE1BQU1BLFFBQVEsR0FBRyxFQUFqQjs7QUFFQSxTQUFTQyxXQUFULENBQXNCQyxPQUFPLEdBQUcsRUFBaEMsRUFBb0NDLFFBQVEsR0FBRyxDQUFDLFdBQUQsRUFBYyxTQUFkLENBQS9DLEVBQXlFO0VBQ3ZFLEtBQUssTUFBTUMsSUFBWCxJQUFtQkQsUUFBbkIsRUFBNkI7SUFDM0IsSUFBSUQsT0FBTyxDQUFDRSxJQUFELENBQVgsRUFBbUI7TUFDakIsTUFBTUMsTUFBTSxHQUFHQyxhQUFBLENBQUtDLGFBQUwsQ0FBbUJMLE9BQU8sQ0FBQ0UsSUFBRCxDQUExQixDQUFmOztNQUNB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
@@ -13,7 +13,7 @@ var _lodash = _interopRequireDefault(require("lodash"));
13
13
 
14
14
  var _asyncbox = require("asyncbox");
15
15
 
16
- var _support = require("@appium/support");
16
+ var _support = require("appium/support");
17
17
 
18
18
  var _logger = _interopRequireDefault(require("../logger"));
19
19
 
@@ -284,4 +284,4 @@ var _default = commands;
284
284
  exports.default = _default;require('source-map-support').install();
285
285
 
286
286
 
287
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL3JlY29yZC1zY3JlZW4uanMiLCJuYW1lcyI6WyJjb21tYW5kcyIsIlJFVFJZX1BBVVNFIiwiUkVUUllfVElNRU9VVCIsIkRFRkFVTFRfVElNRV9MSU1JVCIsIlBST0NFU1NfU0hVVERPV05fVElNRU9VVCIsIkRFRkFVTFRfRVhUIiwiRkZNUEVHX0JJTkFSWSIsIkRFRkFVTFRfRlBTIiwiREVGQVVMVF9QUkVTRVQiLCJ1cGxvYWRSZWNvcmRlZE1lZGlhIiwibG9jYWxGaWxlIiwicmVtb3RlUGF0aCIsInVwbG9hZE9wdGlvbnMiLCJfIiwiaXNFbXB0eSIsInNpemUiLCJmcyIsInN0YXQiLCJsb2ciLCJkZWJ1ZyIsInV0aWwiLCJ0b1JlYWRhYmxlU2l6ZVN0cmluZyIsInRvSW5NZW1vcnlCYXNlNjQiLCJ0b1N0cmluZyIsInVzZXIiLCJwYXNzIiwibWV0aG9kIiwiaGVhZGVycyIsImZpbGVGaWVsZE5hbWUiLCJmb3JtRmllbGRzIiwib3B0aW9ucyIsImF1dGgiLCJuZXQiLCJ1cGxvYWRGaWxlIiwicmVxdWlyZUZmbXBlZ1BhdGgiLCJ3aGljaCIsImUiLCJlcnJvckFuZFRocm93IiwiU2NyZWVuUmVjb3JkZXIiLCJjb25zdHJ1Y3RvciIsInZpZGVvUGF0aCIsIm9wdHMiLCJfdmlkZW9QYXRoIiwiX3Byb2Nlc3MiLCJfZnBzIiwiZnBzIiwiX2RldmljZUlkIiwiZGV2aWNlSWQiLCJfY2FwdHVyZUN1cnNvciIsImNhcHR1cmVDdXJzb3IiLCJfY2FwdHVyZUNsaWNrcyIsImNhcHR1cmVDbGlja3MiLCJfcHJlc2V0IiwicHJlc2V0IiwiX3ZpZGVvRmlsdGVyIiwidmlkZW9GaWx0ZXIiLCJfdGltZUxpbWl0IiwidGltZUxpbWl0IiwiZ2V0VmlkZW9QYXRoIiwiZXhpc3RzIiwiaXNSdW5uaW5nIiwiX2VuZm9yY2VUZXJtaW5hdGlvbiIsInN0b3AiLCJpZ24iLCJyaW1yYWYiLCJzdGFydCIsImZmbXBlZyIsImFyZ3MiLCJmdWxsQ21kIiwiU3ViUHJvY2VzcyIsInNsaWNlIiwicXVvdGUiLCJvbiIsInN0ZG91dCIsInN0ZGVyciIsInRyaW0iLCJvbmNlIiwiY29kZSIsInNpZ25hbCIsIndhcm4iLCJFcnJvciIsIndhaXRNcyIsImludGVydmFsTXMiLCJpbmZvIiwicGx1cmFsaXplIiwiZm9yY2UiLCJCIiwicmVzb2x2ZSIsInJlamVjdCIsInRpbWVyIiwic2V0VGltZW91dCIsImNsZWFyVGltZW91dCIsInByb2MiLCJzdGRpbiIsIndyaXRlIiwiZW5kIiwic3RhcnRSZWNvcmRpbmdTY3JlZW4iLCJmb3JjZVJlc3RhcnQiLCJpc05pbCIsIl9zY3JlZW5SZWNvcmRlciIsInRlbXBEaXIiLCJwYXRoIiwicHJlZml4IiwidXVpZFY0Iiwic3Vic3RyaW5nIiwic3VmZml4IiwicGFyc2VJbnQiLCJzdG9wUmVjb3JkaW5nU2NyZWVuIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL3JlY29yZC1zY3JlZW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IHdhaXRGb3JDb25kaXRpb24gfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgeyB1dGlsLCBmcywgbmV0LCB0ZW1wRGlyIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCB7IFN1YlByb2Nlc3MgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuXG5cbmNvbnN0IGNvbW1hbmRzID0ge307XG5cbmNvbnN0IFJFVFJZX1BBVVNFID0gMzAwO1xuY29uc3QgUkVUUllfVElNRU9VVCA9IDUwMDA7XG5jb25zdCBERUZBVUxUX1RJTUVfTElNSVQgPSA2MCAqIDEwOyAvLyAxMCBtaW51dGVzXG5jb25zdCBQUk9DRVNTX1NIVVRET1dOX1RJTUVPVVQgPSAxMCAqIDEwMDA7XG5jb25zdCBERUZBVUxUX0VYVCA9ICdtcDQnO1xuY29uc3QgRkZNUEVHX0JJTkFSWSA9ICdmZm1wZWcnO1xuY29uc3QgREVGQVVMVF9GUFMgPSAxNTtcbmNvbnN0IERFRkFVTFRfUFJFU0VUID0gJ3ZlcnlmYXN0JztcblxuXG5hc3luYyBmdW5jdGlvbiB1cGxvYWRSZWNvcmRlZE1lZGlhIChsb2NhbEZpbGUsIHJlbW90ZVBhdGggPSBudWxsLCB1cGxvYWRPcHRpb25zID0ge30pIHtcbiAgaWYgKF8uaXNFbXB0eShyZW1vdGVQYXRoKSkge1xuICAgIGNvbnN0IHtzaXplfSA9IGF3YWl0IGZzLnN0YXQobG9jYWxGaWxlKTtcbiAgICBsb2cuZGVidWcoYFRoZSBzaXplIG9mIHRoZSByZXN1bHRpbmcgc2NyZWVuIHJlY29yZGluZyBpcyAke3V0aWwudG9SZWFkYWJsZVNpemVTdHJpbmcoc2l6ZSl9YCk7XG4gICAgcmV0dXJuIChhd2FpdCB1dGlsLnRvSW5NZW1vcnlCYXNlNjQobG9jYWxGaWxlKSkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGNvbnN0IHt1c2VyLCBwYXNzLCBtZXRob2QsIGhlYWRlcnMsIGZpbGVGaWVsZE5hbWUsIGZvcm1GaWVsZHN9ID0gdXBsb2FkT3B0aW9ucztcbiAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICBtZXRob2Q6IG1ldGhvZCB8fCAnUFVUJyxcbiAgICBoZWFkZXJzLFxuICAgIGZpbGVGaWVsZE5hbWUsXG4gICAgZm9ybUZpZWxkcyxcbiAgfTtcbiAgaWYgKHVzZXIgJiYgcGFzcykge1xuICAgIG9wdGlvbnMuYXV0aCA9IHt1c2VyLCBwYXNzfTtcbiAgfVxuICBhd2FpdCBuZXQudXBsb2FkRmlsZShsb2NhbEZpbGUsIHJlbW90ZVBhdGgsIG9wdGlvbnMpO1xuICByZXR1cm4gJyc7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlcXVpcmVGZm1wZWdQYXRoICgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgZnMud2hpY2goRkZNUEVHX0JJTkFSWSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2cuZXJyb3JBbmRUaHJvdyhgJHtGRk1QRUdfQklOQVJZfSBoYXMgbm90IGJlZW4gZm91bmQgaW4gUEFUSC4gYCArXG4gICAgICBgUGxlYXNlIG1ha2Ugc3VyZSBpdCBpcyBpbnN0YWxsZWRgKTtcbiAgfVxufVxuXG5jbGFzcyBTY3JlZW5SZWNvcmRlciB7XG4gIGNvbnN0cnVjdG9yICh2aWRlb1BhdGgsIG9wdHMgPSB7fSkge1xuICAgIHRoaXMuX3ZpZGVvUGF0aCA9IHZpZGVvUGF0aDtcbiAgICB0aGlzLl9wcm9jZXNzID0gbnVsbDtcbiAgICB0aGlzLl9mcHMgPSAob3B0cy5mcHMgJiYgb3B0cy5mcHMgPiAwKSA/IG9wdHMuZnBzIDogREVGQVVMVF9GUFM7XG4gICAgdGhpcy5fZGV2aWNlSWQgPSBvcHRzLmRldmljZUlkO1xuICAgIHRoaXMuX2NhcHR1cmVDdXJzb3IgPSBvcHRzLmNhcHR1cmVDdXJzb3I7XG4gICAgdGhpcy5fY2FwdHVyZUNsaWNrcyA9IG9wdHMuY2FwdHVyZUNsaWNrcztcbiAgICB0aGlzLl9wcmVzZXQgPSBvcHRzLnByZXNldCB8fCBERUZBVUxUX1BSRVNFVDtcbiAgICB0aGlzLl92aWRlb0ZpbHRlciA9IG9wdHMudmlkZW9GaWx0ZXI7XG4gICAgdGhpcy5fdGltZUxpbWl0ID0gKG9wdHMudGltZUxpbWl0ICYmIG9wdHMudGltZUxpbWl0ID4gMClcbiAgICAgID8gb3B0cy50aW1lTGltaXRcbiAgICAgIDogREVGQVVMVF9USU1FX0xJTUlUO1xuICB9XG5cbiAgYXN5bmMgZ2V0VmlkZW9QYXRoICgpIHtcbiAgICByZXR1cm4gKGF3YWl0IGZzLmV4aXN0cyh0aGlzLl92aWRlb1BhdGgpKSA/IHRoaXMuX3ZpZGVvUGF0aCA6ICcnO1xuICB9XG5cbiAgaXNSdW5uaW5nICgpIHtcbiAgICByZXR1cm4gISEodGhpcy5fcHJvY2Vzcz8uaXNSdW5uaW5nKTtcbiAgfVxuXG4gIGFzeW5jIF9lbmZvcmNlVGVybWluYXRpb24gKCkge1xuICAgIGlmICh0aGlzLl9wcm9jZXNzICYmIHRoaXMuaXNSdW5uaW5nKCkpIHtcbiAgICAgIGxvZy5kZWJ1ZygnRm9yY2Utc3RvcHBpbmcgdGhlIGN1cnJlbnRseSBydW5uaW5nIHZpZGVvIHJlY29yZGluZycpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5fcHJvY2Vzcy5zdG9wKCdTSUdLSUxMJyk7XG4gICAgICB9IGNhdGNoIChpZ24pIHt9XG4gICAgfVxuICAgIHRoaXMuX3Byb2Nlc3MgPSBudWxsO1xuICAgIGNvbnN0IHZpZGVvUGF0aCA9IGF3YWl0IHRoaXMuZ2V0VmlkZW9QYXRoKCk7XG4gICAgaWYgKHZpZGVvUGF0aCkge1xuICAgICAgYXdhaXQgZnMucmltcmFmKHZpZGVvUGF0aCk7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGFzeW5jIHN0YXJ0ICgpIHtcbiAgICBjb25zdCBmZm1wZWcgPSBhd2FpdCByZXF1aXJlRmZtcGVnUGF0aCgpO1xuXG4gICAgY29uc3QgYXJncyA9IFtcbiAgICAgICctbG9nbGV2ZWwnLCAnZXJyb3InLFxuICAgICAgJy10JywgYCR7dGhpcy5fdGltZUxpbWl0fWAsXG4gICAgICAnLWYnLCAnYXZmb3VuZGF0aW9uJyxcbiAgICAgIC4uLih0aGlzLl9jYXB0dXJlQ3Vyc29yID8gWyctY2FwdHVyZV9jdXJzb3InLCAnMSddIDogW10pLFxuICAgICAgLi4uKHRoaXMuX2NhcHR1cmVDbGlja3MgPyBbJy1jYXB0dXJlX21vdXNlX2NsaWNrcycsICcxJ10gOiBbXSksXG4gICAgICAnLWZyYW1lcmF0ZScsIGAke3RoaXMuX2Zwc31gLFxuICAgICAgJy1pJywgdGhpcy5fZGV2aWNlSWQsXG4gICAgICAnLXZjb2RlYycsICdsaWJ4MjY0JyxcbiAgICAgICctcHJlc2V0JywgdGhpcy5fcHJlc2V0LFxuICAgICAgJy10dW5lJywgJ3plcm9sYXRlbmN5JyxcbiAgICAgICctcGl4X2ZtdCcsICd5dXY0MjBwJyxcbiAgICAgICctbW92ZmxhZ3MnLCAnK2Zhc3RzdGFydCcsXG4gICAgICAnLWZmbGFncycsICdub2J1ZmZlcicsXG4gICAgICAnLWYnLCBERUZBVUxUX0VYVCxcbiAgICAgICctcicsIGAke3RoaXMuX2Zwc31gLFxuICAgICAgLi4uKHRoaXMuX3ZpZGVvRmlsdGVyID8gWyctZmlsdGVyOnYnLCB0aGlzLl92aWRlb0ZpbHRlcl0gOiBbXSksXG4gICAgXTtcblxuICAgIGNvbnN0IGZ1bGxDbWQgPSBbXG4gICAgICBmZm1wZWcsXG4gICAgICAuLi5hcmdzLFxuICAgICAgdGhpcy5fdmlkZW9QYXRoLFxuICAgIF07XG4gICAgdGhpcy5fcHJvY2VzcyA9IG5ldyBTdWJQcm9jZXNzKGZ1bGxDbWRbMF0sIGZ1bGxDbWQuc2xpY2UoMSkpO1xuICAgIGxvZy5kZWJ1ZyhgU3RhcnRpbmcgJHtGRk1QRUdfQklOQVJZfTogJHt1dGlsLnF1b3RlKGZ1bGxDbWQpfWApO1xuICAgIHRoaXMuX3Byb2Nlc3Mub24oJ291dHB1dCcsIChzdGRvdXQsIHN0ZGVycikgPT4ge1xuICAgICAgaWYgKF8udHJpbShzdGRvdXQgfHwgc3RkZXJyKSkge1xuICAgICAgICBsb2cuZGVidWcoYFske0ZGTVBFR19CSU5BUll9XSAke3N0ZG91dCB8fCBzdGRlcnJ9YCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5fcHJvY2Vzcy5vbmNlKCdleGl0JywgYXN5bmMgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgICAgdGhpcy5fcHJvY2VzcyA9IG51bGw7XG4gICAgICBpZiAoY29kZSA9PT0gMCkge1xuICAgICAgICBsb2cuZGVidWcoJ1NjcmVlbiByZWNvcmRpbmcgZXhpdGVkIHdpdGhvdXQgZXJyb3JzJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCB0aGlzLl9lbmZvcmNlVGVybWluYXRpb24oKTtcbiAgICAgICAgbG9nLndhcm4oYFNjcmVlbiByZWNvcmRpbmcgZXhpdGVkIHdpdGggZXJyb3IgY29kZSAke2NvZGV9LCBzaWduYWwgJHtzaWduYWx9YCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgYXdhaXQgdGhpcy5fcHJvY2Vzcy5zdGFydCgwKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgd2FpdEZvckNvbmRpdGlvbihhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmIChhd2FpdCB0aGlzLmdldFZpZGVvUGF0aCgpKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLl9wcm9jZXNzKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke0ZGTVBFR19CSU5BUll9IHByb2Nlc3MgZGllZCB1bmV4cGVjdGVkbHlgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9LCB7XG4gICAgICAgIHdhaXRNczogUkVUUllfVElNRU9VVCxcbiAgICAgICAgaW50ZXJ2YWxNczogUkVUUllfUEFVU0UsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhd2FpdCB0aGlzLl9lbmZvcmNlVGVybWluYXRpb24oKTtcbiAgICAgIGxvZy5lcnJvckFuZFRocm93KGBUaGUgZXhwZWN0ZWQgc2NyZWVuIHJlY29yZCBmaWxlICcke3RoaXMuX3ZpZGVvUGF0aH0nIGRvZXMgbm90IGV4aXN0LiBgICtcbiAgICAgICAgYENoZWNrIHRoZSBzZXJ2ZXIgbG9nIGZvciBtb3JlIGRldGFpbHNgKTtcbiAgICB9XG4gICAgbG9nLmluZm8oYFRoZSB2aWRlbyByZWNvcmRpbmcgaGFzIHN0YXJ0ZWQuIFdpbGwgdGltZW91dCBpbiAke3V0aWwucGx1cmFsaXplKCdzZWNvbmQnLCB0aGlzLl90aW1lTGltaXQsIHRydWUpfWApO1xuICB9XG5cbiAgYXN5bmMgc3RvcCAoZm9yY2UgPSBmYWxzZSkge1xuICAgIGlmIChmb3JjZSkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX2VuZm9yY2VUZXJtaW5hdGlvbigpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5pc1J1bm5pbmcoKSkge1xuICAgICAgbG9nLmRlYnVnKCdTY3JlZW4gcmVjb3JkaW5nIGlzIG5vdCBydW5uaW5nLiBSZXR1cm5pbmcgdGhlIHJlY2VudCByZXN1bHQnKTtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmdldFZpZGVvUGF0aCgpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCB0aW1lciA9IHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLl9lbmZvcmNlVGVybWluYXRpb24oKTtcbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgU2NyZWVuIHJlY29yZGluZyBoYXMgZmFpbGVkIHRvIGV4aXQgYWZ0ZXIgJHtQUk9DRVNTX1NIVVRET1dOX1RJTUVPVVR9bXNgKSk7XG4gICAgICB9LCBQUk9DRVNTX1NIVVRET1dOX1RJTUVPVVQpO1xuXG4gICAgICB0aGlzLl9wcm9jZXNzLm9uY2UoJ2V4aXQnLCBhc3luYyAoY29kZSwgc2lnbmFsKSA9PiB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICAgIGlmIChjb2RlID09PSAwKSB7XG4gICAgICAgICAgcmVzb2x2ZShhd2FpdCB0aGlzLmdldFZpZGVvUGF0aCgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWplY3QobmV3IEVycm9yKGBTY3JlZW4gcmVjb3JkaW5nIGV4aXRlZCB3aXRoIGVycm9yIGNvZGUgJHtjb2RlfSwgc2lnbmFsICR7c2lnbmFsfWApKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuX3Byb2Nlc3MucHJvYy5zdGRpbi53cml0ZSgncScpO1xuICAgICAgdGhpcy5fcHJvY2Vzcy5wcm9jLnN0ZGluLmVuZCgpO1xuICAgIH0pO1xuICB9XG59XG5cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTdGFydFJlY29yZGluZ09wdGlvbnNcbiAqXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHZpZGVvRmlsdGVyIC0gVGhlIHZpZGVvIGZpbHRlciBzcGVjIHRvIGFwcGx5IGZvciBmZm1wZWcuXG4gKiBTZWUgaHR0cHM6Ly90cmFjLmZmbXBlZy5vcmcvd2lraS9GaWx0ZXJpbmdHdWlkZSBmb3IgbW9yZSBkZXRhaWxzIG9uIHRoZSBwb3NzaWJsZSB2YWx1ZXMuXG4gKiBFeGFtcGxlOiBTZXQgaXQgdG8gYHNjYWxlPWlmbm90KGd0ZShpd1xcLDEwMjQpXFwsaXdcXCwxMDI0KTotMmAgaW4gb3JkZXIgdG8gbGltaXQgdGhlIHZpZGVvIHdpZHRoXG4gKiB0byAxMDI0cHguIFRoZSBoZWlnaHQgd2lsbCBiZSBhZGp1c3RlZCBhdXRvbWF0aWNhbGx5IHRvIG1hdGNoIHRoZSBhY3R1YWwgcmF0aW8uXG4gKiBAcHJvcGVydHkge251bWJlcnxzdHJpbmd9IGZwcyBbMTVdIC0gVGhlIGNvdW50IG9mIGZyYW1lcyBwZXIgc2Vjb25kIGluIHRoZSByZXN1bHRpbmcgdmlkZW8uXG4gKiBUaGUgZ3JlYXRlciBmcHMgaXQgaGFzIHRoZSBiaWdnZXIgZmlsZSBzaXplIGlzLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IHByZXNldCBbdmVyeWZhc3RdIC0gT25lIG9mIHRoZSBzdXBwb3J0ZWQgZW5jb2RpbmcgcHJlc2V0cy4gUG9zc2libGUgdmFsdWVzIGFyZTpcbiAqIC0gdWx0cmFmYXN0XG4gKiAtIHN1cGVyZmFzdFxuICogLSB2ZXJ5ZmFzdFxuICogLSBmYXN0ZXJcbiAqIC0gZmFzdFxuICogLSBtZWRpdW1cbiAqIC0gc2xvd1xuICogLSBzbG93ZXJcbiAqIC0gdmVyeXNsb3dcbiAqIEEgcHJlc2V0IGlzIGEgY29sbGVjdGlvbiBvZiBvcHRpb25zIHRoYXQgd2lsbCBwcm92aWRlIGEgY2VydGFpbiBlbmNvZGluZyBzcGVlZCB0byBjb21wcmVzc2lvbiByYXRpby5cbiAqIEEgc2xvd2VyIHByZXNldCB3aWxsIHByb3ZpZGUgYmV0dGVyIGNvbXByZXNzaW9uIChjb21wcmVzc2lvbiBpcyBxdWFsaXR5IHBlciBmaWxlc2l6ZSkuXG4gKiBUaGlzIG1lYW5zIHRoYXQsIGZvciBleGFtcGxlLCBpZiB5b3UgdGFyZ2V0IGEgY2VydGFpbiBmaWxlIHNpemUgb3IgY29uc3RhbnQgYml0IHJhdGUsIHlvdSB3aWxsIGFjaGlldmUgYmV0dGVyXG4gKiBxdWFsaXR5IHdpdGggYSBzbG93ZXIgcHJlc2V0LiBSZWFkIGh0dHBzOi8vdHJhYy5mZm1wZWcub3JnL3dpa2kvRW5jb2RlL0guMjY0IGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGNhcHR1cmVDdXJzb3IgW2ZhbHNlXSAtIFdoZXRoZXIgdG8gY2FwdHVyZSB0aGUgbW91c2UgY3Vyc29yIHdoaWxlIHJlY29yZGluZ1xuICogdGhlIHNjcmVlblxuICogQHByb3BlcnR5IHtib29sZWFufSBjYXB0dXJlQ2xpY2tzIFtmYWxzZV0gLSBXaGV0aGVyIHRvIGNhcHR1cmUgbW91c2UgY2xpY2tzIHdoaWxlIHJlY29yZGluZyB0aGVcbiAqIHNjcmVlblxuICogQHByb3BlcnR5IHshc3RyaW5nfG51bWJlcn0gZGV2aWNlSWQgLSBTY3JlZW4gZGV2aWNlIGluZGV4IHRvIHVzZSBmb3IgdGhlIHJlY29yZGluZy5cbiAqIFRoZSBsaXN0IG9mIGF2YWlsYWJsZSBkZXZpY2VzIGNvdWxkIGJlIHJldHJpZXZlZCB1c2luZ1xuICogYGZmbXBlZyAtZiBhdmZvdW5kYXRpb24gLWxpc3RfZGV2aWNlcyB0cnVlIC1pYCBjb21tYW5kLlxuICogQHByb3BlcnR5IHtzdHJpbmd8bnVtYmVyfSB0aW1lTGltaXQgWzYwMF0gLSBUaGUgbWF4aW11bSByZWNvcmRpbmcgdGltZSwgaW4gc2Vjb25kcy4gVGhlIGRlZmF1bHRcbiAqIHZhbHVlIGlzIDYwMCBzZWNvbmRzICgxMCBtaW51dGVzKS5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZm9yY2VSZXN0YXJ0IFt0cnVlXSAtIFdoZXRoZXIgdG8gaWdub3JlIHRoZSBjYWxsIGlmIGEgc2NyZWVuIHJlY29yZGluZyBpcyBjdXJyZW50bHkgcnVubmluZ1xuICogKGBmYWxzZWApIG9yIHRvIHN0YXJ0IGEgbmV3IHJlY29yZGluZyBpbW1lZGlhdGVseSBhbmQgdGVybWluYXRlIHRoZSBleGlzdGluZyBvbmUgaWYgcnVubmluZyAoYHRydWVgKS5cbiAqL1xuXG4vKipcbiAqIFJlY29yZCB0aGUgZGlzcGxheSBpbiBiYWNrZ3JvdW5kIHdoaWxlIHRoZSBhdXRvbWF0ZWQgdGVzdCBpcyBydW5uaW5nLlxuICogVGhpcyBtZXRob2QgcmVxdWlyZXMgRkZNUEVHIChodHRwczovL3d3dy5mZm1wZWcub3JnL2Rvd25sb2FkLmh0bWwpIHRvIGJlIGluc3RhbGxlZFxuICogYW5kIHByZXNlbnQgaW4gUEFUSC4gQWxzbywgdGhlIEFwcGl1bSBwcm9jZXNzIG11c3QgYmUgYWxsb3dlZCB0byBhY2Nlc3Mgc2NyZWVuIHJlY29yZGluZ1xuICogaW4gU3lzdGVtIFByZWZlcmVuY2VzLT5TZWN1cml0eSAmIFByaXZhY3ktPlNjcmVlbiBSZWNvcmRpbmcuXG4gKiBUaGUgcmVzdWx0aW5nIHZpZGVvIHVzZXMgSDI2NCBjb2RlYyBhbmQgaXMgcmVhZHkgdG8gYmUgcGxheWVkIGJ5IG1lZGlhIHBsYXllcnMgYnVpbHQtaW4gaW50byB3ZWIgYnJvd3NlcnMuXG4gKlxuICogQHBhcmFtIHs/U3RhcnRSZWNvcmRpbmdPcHRpb25zfSBvcHRpb25zIC0gVGhlIGF2YWlsYWJsZSBvcHRpb25zLlxuICogQHRocm93cyB7RXJyb3J9IElmIHNjcmVlbiByZWNvcmRpbmcgaGFzIGZhaWxlZCB0byBzdGFydCBvciBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoZSBkZXZpY2UgdW5kZXIgdGVzdC5cbiAqL1xuY29tbWFuZHMuc3RhcnRSZWNvcmRpbmdTY3JlZW4gPSBhc3luYyBmdW5jdGlvbiBzdGFydFJlY29yZGluZ1NjcmVlbiAob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB0aW1lTGltaXQsXG4gICAgdmlkZW9GaWx0ZXIsXG4gICAgZnBzLFxuICAgIHByZXNldCxcbiAgICBjYXB0dXJlQ3Vyc29yLFxuICAgIGNhcHR1cmVDbGlja3MsXG4gICAgZGV2aWNlSWQsXG4gICAgZm9yY2VSZXN0YXJ0ID0gdHJ1ZSxcbiAgfSA9IG9wdGlvbnM7XG5cbiAgaWYgKF8uaXNOaWwoZGV2aWNlSWQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAnZGV2aWNlSWQnIG9wdGlvbiBtdXN0IGJlIHByb3ZpZGVkLiBSdW4gJ2ZmbXBlZyAtZiBhdmZvdW5kYXRpb24gLWxpc3RfZGV2aWNlcyB0cnVlIC1pJyBgICtcbiAgICAgICd0byBmZXRjaCB0aGUgbGlzdCBvZiBhdmFpbGFibGUgZGV2aWNlIGlkcycpO1xuICB9XG5cbiAgaWYgKHRoaXMuX3NjcmVlblJlY29yZGVyPy5pc1J1bm5pbmc/LigpKSB7XG4gICAgbG9nLmRlYnVnKCdUaGUgc2NyZWVuIHJlY29yZGluZyBpcyBhbHJlYWR5IHJ1bm5pbmcnKTtcbiAgICBpZiAoIWZvcmNlUmVzdGFydCkge1xuICAgICAgbG9nLmRlYnVnKCdEb2luZyBub3RoaW5nJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxvZy5kZWJ1ZygnRm9yY2luZyB0aGUgYWN0aXZlIHNjcmVlbiByZWNvcmRpbmcgdG8gc3RvcCcpO1xuICAgIGF3YWl0IHRoaXMuX3NjcmVlblJlY29yZGVyLnN0b3AodHJ1ZSk7XG4gIH1cbiAgdGhpcy5fc2NyZWVuUmVjb3JkZXIgPSBudWxsO1xuXG4gIGNvbnN0IHZpZGVvUGF0aCA9IGF3YWl0IHRlbXBEaXIucGF0aCh7XG4gICAgcHJlZml4OiB1dGlsLnV1aWRWNCgpLnN1YnN0cmluZygwLCA4KSxcbiAgICBzdWZmaXg6IGAuJHtERUZBVUxUX0VYVH1gLFxuICB9KTtcbiAgdGhpcy5fc2NyZWVuUmVjb3JkZXIgPSBuZXcgU2NyZWVuUmVjb3JkZXIodmlkZW9QYXRoLCB7XG4gICAgZnBzOiBwYXJzZUludChmcHMsIDEwKSxcbiAgICB0aW1lTGltaXQ6IHBhcnNlSW50KHRpbWVMaW1pdCwgMTApLFxuICAgIHByZXNldCxcbiAgICBjYXB0dXJlQ3Vyc29yLFxuICAgIGNhcHR1cmVDbGlja3MsXG4gICAgdmlkZW9GaWx0ZXIsXG4gICAgZGV2aWNlSWQsXG4gIH0pO1xuICB0cnkge1xuICAgIGF3YWl0IHRoaXMuX3NjcmVlblJlY29yZGVyLnN0YXJ0KCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aGlzLl9zY3JlZW5SZWNvcmRlciA9IG51bGw7XG4gICAgdGhyb3cgZTtcbiAgfVxufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTdG9wUmVjb3JkaW5nT3B0aW9uc1xuICpcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gcmVtb3RlUGF0aCAtIFRoZSBwYXRoIHRvIHRoZSByZW1vdGUgbG9jYXRpb24sIHdoZXJlIHRoZSByZXN1bHRpbmcgdmlkZW8gc2hvdWxkIGJlIHVwbG9hZGVkLlxuICogVGhlIGZvbGxvd2luZyBwcm90b2NvbHMgYXJlIHN1cHBvcnRlZDogaHR0cC9odHRwcywgZnRwLlxuICogTnVsbCBvciBlbXB0eSBzdHJpbmcgdmFsdWUgKHRoZSBkZWZhdWx0IHNldHRpbmcpIG1lYW5zIHRoZSBjb250ZW50IG9mIHJlc3VsdGluZ1xuICogZmlsZSBzaG91bGQgYmUgZW5jb2RlZCBhcyBCYXNlNjQgYW5kIHBhc3NlZCBhcyB0aGUgZW5kcG9pbnQgcmVzcG9uc2UgdmFsdWUuXG4gKiBBbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24gaWYgdGhlIGdlbmVyYXRlZCBtZWRpYSBmaWxlIGlzIHRvbyBiaWcgdG9cbiAqIGZpdCBpbnRvIHRoZSBhdmFpbGFibGUgcHJvY2VzcyBtZW1vcnkuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHVzZXIgLSBUaGUgbmFtZSBvZiB0aGUgdXNlciBmb3IgdGhlIHJlbW90ZSBhdXRoZW50aWNhdGlvbi5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gcGFzcyAtIFRoZSBwYXNzd29yZCBmb3IgdGhlIHJlbW90ZSBhdXRoZW50aWNhdGlvbi5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbWV0aG9kIC0gVGhlIGh0dHAgbXVsdGlwYXJ0IHVwbG9hZCBtZXRob2QgbmFtZS4gVGhlICdQVVQnIG9uZSBpcyB1c2VkIGJ5IGRlZmF1bHQuXG4gKiBAcHJvcGVydHkgez9PYmplY3R9IGhlYWRlcnMgLSBBZGRpdGlvbmFsIGhlYWRlcnMgbWFwcGluZyBmb3IgbXVsdGlwYXJ0IGh0dHAocykgdXBsb2Fkc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBmaWxlRmllbGROYW1lIFtmaWxlXSAtIFRoZSBuYW1lIG9mIHRoZSBmb3JtIGZpZWxkLCB3aGVyZSB0aGUgZmlsZSBjb250ZW50IEJMT0Igc2hvdWxkIGJlIHN0b3JlZCBmb3JcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodHRwKHMpIHVwbG9hZHNcbiAqIEBwcm9wZXJ0eSB7P09iamVjdHxBcnJheTxQYWlyPn0gZm9ybUZpZWxkcyAtIEFkZGl0aW9uYWwgZm9ybSBmaWVsZHMgZm9yIG11bHRpcGFydCBodHRwKHMpIHVwbG9hZHNcbiAqL1xuXG4vKipcbiAqIFN0b3AgcmVjb3JkaW5nIHRoZSBzY3JlZW4uXG4gKiBJZiBubyBzY3JlZW4gcmVjb3JkaW5nIGhhcyBiZWVuIHN0YXJ0ZWQgYmVmb3JlIHRoZW4gdGhlIG1ldGhvZCByZXR1cm5zIGFuIGVtcHR5IHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gez9TdG9wUmVjb3JkaW5nT3B0aW9uc30gb3B0aW9ucyAtIFRoZSBhdmFpbGFibGUgb3B0aW9ucy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IEJhc2U2NC1lbmNvZGVkIGNvbnRlbnQgb2YgdGhlIHJlY29yZGVkIG1lZGlhIGZpbGUgaWYgJ3JlbW90ZVBhdGgnXG4gKiBwYXJhbWV0ZXIgaXMgZmFsc3kgb3IgYW4gZW1wdHkgc3RyaW5nLlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBnZXR0aW5nIHRoZSBuYW1lIG9mIGEgbWVkaWEgZmlsZVxuICogb3IgdGhlIGZpbGUgY29udGVudCBjYW5ub3QgYmUgdXBsb2FkZWQgdG8gdGhlIHJlbW90ZSBsb2NhdGlvblxuICogb3Igc2NyZWVuIHJlY29yZGluZyBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoZSBkZXZpY2UgdW5kZXIgdGVzdC5cbiAqL1xuY29tbWFuZHMuc3RvcFJlY29yZGluZ1NjcmVlbiA9IGFzeW5jIGZ1bmN0aW9uIHN0b3BSZWNvcmRpbmdTY3JlZW4gKG9wdGlvbnMgPSB7fSkge1xuICBpZiAoIXRoaXMuX3NjcmVlblJlY29yZGVyKSB7XG4gICAgbG9nLmRlYnVnKCdObyBzY3JlZW4gcmVjb3JkaW5nIGhhcyBiZWVuIHN0YXJ0ZWQuIERvaW5nIG5vdGhpbmcnKTtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBsb2cuZGVidWcoJ1JldHJpZXZpbmcgdGhlIHJlc3VsdGluZyB2aWRlbyBkYXRhJyk7XG4gIGNvbnN0IHZpZGVvUGF0aCA9IGF3YWl0IHRoaXMuX3NjcmVlblJlY29yZGVyLnN0b3AoKTtcbiAgaWYgKCF2aWRlb1BhdGgpIHtcbiAgICBsb2cuZGVidWcoJ05vIHZpZGVvIGRhdGEgaXMgZm91bmQuIFJldHVybmluZyBhbiBlbXB0eSBzdHJpbmcnKTtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IHVwbG9hZFJlY29yZGVkTWVkaWEodmlkZW9QYXRoLCBvcHRpb25zLnJlbW90ZVBhdGgsIG9wdGlvbnMpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsUUFBUSxHQUFHLEVBQWpCO0FBRUEsTUFBTUMsV0FBVyxHQUFHLEdBQXBCO0FBQ0EsTUFBTUMsYUFBYSxHQUFHLElBQXRCO0FBQ0EsTUFBTUMsa0JBQWtCLEdBQUcsS0FBSyxFQUFoQztBQUNBLE1BQU1DLHdCQUF3QixHQUFHLEtBQUssSUFBdEM7QUFDQSxNQUFNQyxXQUFXLEdBQUcsS0FBcEI7QUFDQSxNQUFNQyxhQUFhLEdBQUcsUUFBdEI7QUFDQSxNQUFNQyxXQUFXLEdBQUcsRUFBcEI7QUFDQSxNQUFNQyxjQUFjLEdBQUcsVUFBdkI7O0FB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
287
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL3JlY29yZC1zY3JlZW4uanMiLCJuYW1lcyI6WyJjb21tYW5kcyIsIlJFVFJZX1BBVVNFIiwiUkVUUllfVElNRU9VVCIsIkRFRkFVTFRfVElNRV9MSU1JVCIsIlBST0NFU1NfU0hVVERPV05fVElNRU9VVCIsIkRFRkFVTFRfRVhUIiwiRkZNUEVHX0JJTkFSWSIsIkRFRkFVTFRfRlBTIiwiREVGQVVMVF9QUkVTRVQiLCJ1cGxvYWRSZWNvcmRlZE1lZGlhIiwibG9jYWxGaWxlIiwicmVtb3RlUGF0aCIsInVwbG9hZE9wdGlvbnMiLCJfIiwiaXNFbXB0eSIsInNpemUiLCJmcyIsInN0YXQiLCJsb2ciLCJkZWJ1ZyIsInV0aWwiLCJ0b1JlYWRhYmxlU2l6ZVN0cmluZyIsInRvSW5NZW1vcnlCYXNlNjQiLCJ0b1N0cmluZyIsInVzZXIiLCJwYXNzIiwibWV0aG9kIiwiaGVhZGVycyIsImZpbGVGaWVsZE5hbWUiLCJmb3JtRmllbGRzIiwib3B0aW9ucyIsImF1dGgiLCJuZXQiLCJ1cGxvYWRGaWxlIiwicmVxdWlyZUZmbXBlZ1BhdGgiLCJ3aGljaCIsImUiLCJlcnJvckFuZFRocm93IiwiU2NyZWVuUmVjb3JkZXIiLCJjb25zdHJ1Y3RvciIsInZpZGVvUGF0aCIsIm9wdHMiLCJfdmlkZW9QYXRoIiwiX3Byb2Nlc3MiLCJfZnBzIiwiZnBzIiwiX2RldmljZUlkIiwiZGV2aWNlSWQiLCJfY2FwdHVyZUN1cnNvciIsImNhcHR1cmVDdXJzb3IiLCJfY2FwdHVyZUNsaWNrcyIsImNhcHR1cmVDbGlja3MiLCJfcHJlc2V0IiwicHJlc2V0IiwiX3ZpZGVvRmlsdGVyIiwidmlkZW9GaWx0ZXIiLCJfdGltZUxpbWl0IiwidGltZUxpbWl0IiwiZ2V0VmlkZW9QYXRoIiwiZXhpc3RzIiwiaXNSdW5uaW5nIiwiX2VuZm9yY2VUZXJtaW5hdGlvbiIsInN0b3AiLCJpZ24iLCJyaW1yYWYiLCJzdGFydCIsImZmbXBlZyIsImFyZ3MiLCJmdWxsQ21kIiwiU3ViUHJvY2VzcyIsInNsaWNlIiwicXVvdGUiLCJvbiIsInN0ZG91dCIsInN0ZGVyciIsInRyaW0iLCJvbmNlIiwiY29kZSIsInNpZ25hbCIsIndhcm4iLCJ3YWl0Rm9yQ29uZGl0aW9uIiwiRXJyb3IiLCJ3YWl0TXMiLCJpbnRlcnZhbE1zIiwiaW5mbyIsInBsdXJhbGl6ZSIsImZvcmNlIiwiQiIsInJlc29sdmUiLCJyZWplY3QiLCJ0aW1lciIsInNldFRpbWVvdXQiLCJjbGVhclRpbWVvdXQiLCJwcm9jIiwic3RkaW4iLCJ3cml0ZSIsImVuZCIsInN0YXJ0UmVjb3JkaW5nU2NyZWVuIiwiZm9yY2VSZXN0YXJ0IiwiaXNOaWwiLCJfc2NyZWVuUmVjb3JkZXIiLCJ0ZW1wRGlyIiwicGF0aCIsInByZWZpeCIsInV1aWRWNCIsInN1YnN0cmluZyIsInN1ZmZpeCIsInBhcnNlSW50Iiwic3RvcFJlY29yZGluZ1NjcmVlbiJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9yZWNvcmQtc2NyZWVuLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyB3YWl0Rm9yQ29uZGl0aW9uIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IHsgdXRpbCwgZnMsIG5ldCwgdGVtcERpciB9IGZyb20gJ2FwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCB7IFN1YlByb2Nlc3MgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuXG5cbmNvbnN0IGNvbW1hbmRzID0ge307XG5cbmNvbnN0IFJFVFJZX1BBVVNFID0gMzAwO1xuY29uc3QgUkVUUllfVElNRU9VVCA9IDUwMDA7XG5jb25zdCBERUZBVUxUX1RJTUVfTElNSVQgPSA2MCAqIDEwOyAvLyAxMCBtaW51dGVzXG5jb25zdCBQUk9DRVNTX1NIVVRET1dOX1RJTUVPVVQgPSAxMCAqIDEwMDA7XG5jb25zdCBERUZBVUxUX0VYVCA9ICdtcDQnO1xuY29uc3QgRkZNUEVHX0JJTkFSWSA9ICdmZm1wZWcnO1xuY29uc3QgREVGQVVMVF9GUFMgPSAxNTtcbmNvbnN0IERFRkFVTFRfUFJFU0VUID0gJ3ZlcnlmYXN0JztcblxuXG5hc3luYyBmdW5jdGlvbiB1cGxvYWRSZWNvcmRlZE1lZGlhIChsb2NhbEZpbGUsIHJlbW90ZVBhdGggPSBudWxsLCB1cGxvYWRPcHRpb25zID0ge30pIHtcbiAgaWYgKF8uaXNFbXB0eShyZW1vdGVQYXRoKSkge1xuICAgIGNvbnN0IHtzaXplfSA9IGF3YWl0IGZzLnN0YXQobG9jYWxGaWxlKTtcbiAgICBsb2cuZGVidWcoYFRoZSBzaXplIG9mIHRoZSByZXN1bHRpbmcgc2NyZWVuIHJlY29yZGluZyBpcyAke3V0aWwudG9SZWFkYWJsZVNpemVTdHJpbmcoc2l6ZSl9YCk7XG4gICAgcmV0dXJuIChhd2FpdCB1dGlsLnRvSW5NZW1vcnlCYXNlNjQobG9jYWxGaWxlKSkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGNvbnN0IHt1c2VyLCBwYXNzLCBtZXRob2QsIGhlYWRlcnMsIGZpbGVGaWVsZE5hbWUsIGZvcm1GaWVsZHN9ID0gdXBsb2FkT3B0aW9ucztcbiAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICBtZXRob2Q6IG1ldGhvZCB8fCAnUFVUJyxcbiAgICBoZWFkZXJzLFxuICAgIGZpbGVGaWVsZE5hbWUsXG4gICAgZm9ybUZpZWxkcyxcbiAgfTtcbiAgaWYgKHVzZXIgJiYgcGFzcykge1xuICAgIG9wdGlvbnMuYXV0aCA9IHt1c2VyLCBwYXNzfTtcbiAgfVxuICBhd2FpdCBuZXQudXBsb2FkRmlsZShsb2NhbEZpbGUsIHJlbW90ZVBhdGgsIG9wdGlvbnMpO1xuICByZXR1cm4gJyc7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlcXVpcmVGZm1wZWdQYXRoICgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgZnMud2hpY2goRkZNUEVHX0JJTkFSWSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2cuZXJyb3JBbmRUaHJvdyhgJHtGRk1QRUdfQklOQVJZfSBoYXMgbm90IGJlZW4gZm91bmQgaW4gUEFUSC4gYCArXG4gICAgICBgUGxlYXNlIG1ha2Ugc3VyZSBpdCBpcyBpbnN0YWxsZWRgKTtcbiAgfVxufVxuXG5jbGFzcyBTY3JlZW5SZWNvcmRlciB7XG4gIGNvbnN0cnVjdG9yICh2aWRlb1BhdGgsIG9wdHMgPSB7fSkge1xuICAgIHRoaXMuX3ZpZGVvUGF0aCA9IHZpZGVvUGF0aDtcbiAgICB0aGlzLl9wcm9jZXNzID0gbnVsbDtcbiAgICB0aGlzLl9mcHMgPSAob3B0cy5mcHMgJiYgb3B0cy5mcHMgPiAwKSA/IG9wdHMuZnBzIDogREVGQVVMVF9GUFM7XG4gICAgdGhpcy5fZGV2aWNlSWQgPSBvcHRzLmRldmljZUlkO1xuICAgIHRoaXMuX2NhcHR1cmVDdXJzb3IgPSBvcHRzLmNhcHR1cmVDdXJzb3I7XG4gICAgdGhpcy5fY2FwdHVyZUNsaWNrcyA9IG9wdHMuY2FwdHVyZUNsaWNrcztcbiAgICB0aGlzLl9wcmVzZXQgPSBvcHRzLnByZXNldCB8fCBERUZBVUxUX1BSRVNFVDtcbiAgICB0aGlzLl92aWRlb0ZpbHRlciA9IG9wdHMudmlkZW9GaWx0ZXI7XG4gICAgdGhpcy5fdGltZUxpbWl0ID0gKG9wdHMudGltZUxpbWl0ICYmIG9wdHMudGltZUxpbWl0ID4gMClcbiAgICAgID8gb3B0cy50aW1lTGltaXRcbiAgICAgIDogREVGQVVMVF9USU1FX0xJTUlUO1xuICB9XG5cbiAgYXN5bmMgZ2V0VmlkZW9QYXRoICgpIHtcbiAgICByZXR1cm4gKGF3YWl0IGZzLmV4aXN0cyh0aGlzLl92aWRlb1BhdGgpKSA/IHRoaXMuX3ZpZGVvUGF0aCA6ICcnO1xuICB9XG5cbiAgaXNSdW5uaW5nICgpIHtcbiAgICByZXR1cm4gISEodGhpcy5fcHJvY2Vzcz8uaXNSdW5uaW5nKTtcbiAgfVxuXG4gIGFzeW5jIF9lbmZvcmNlVGVybWluYXRpb24gKCkge1xuICAgIGlmICh0aGlzLl9wcm9jZXNzICYmIHRoaXMuaXNSdW5uaW5nKCkpIHtcbiAgICAgIGxvZy5kZWJ1ZygnRm9yY2Utc3RvcHBpbmcgdGhlIGN1cnJlbnRseSBydW5uaW5nIHZpZGVvIHJlY29yZGluZycpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5fcHJvY2Vzcy5zdG9wKCdTSUdLSUxMJyk7XG4gICAgICB9IGNhdGNoIChpZ24pIHt9XG4gICAgfVxuICAgIHRoaXMuX3Byb2Nlc3MgPSBudWxsO1xuICAgIGNvbnN0IHZpZGVvUGF0aCA9IGF3YWl0IHRoaXMuZ2V0VmlkZW9QYXRoKCk7XG4gICAgaWYgKHZpZGVvUGF0aCkge1xuICAgICAgYXdhaXQgZnMucmltcmFmKHZpZGVvUGF0aCk7XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIGFzeW5jIHN0YXJ0ICgpIHtcbiAgICBjb25zdCBmZm1wZWcgPSBhd2FpdCByZXF1aXJlRmZtcGVnUGF0aCgpO1xuXG4gICAgY29uc3QgYXJncyA9IFtcbiAgICAgICctbG9nbGV2ZWwnLCAnZXJyb3InLFxuICAgICAgJy10JywgYCR7dGhpcy5fdGltZUxpbWl0fWAsXG4gICAgICAnLWYnLCAnYXZmb3VuZGF0aW9uJyxcbiAgICAgIC4uLih0aGlzLl9jYXB0dXJlQ3Vyc29yID8gWyctY2FwdHVyZV9jdXJzb3InLCAnMSddIDogW10pLFxuICAgICAgLi4uKHRoaXMuX2NhcHR1cmVDbGlja3MgPyBbJy1jYXB0dXJlX21vdXNlX2NsaWNrcycsICcxJ10gOiBbXSksXG4gICAgICAnLWZyYW1lcmF0ZScsIGAke3RoaXMuX2Zwc31gLFxuICAgICAgJy1pJywgdGhpcy5fZGV2aWNlSWQsXG4gICAgICAnLXZjb2RlYycsICdsaWJ4MjY0JyxcbiAgICAgICctcHJlc2V0JywgdGhpcy5fcHJlc2V0LFxuICAgICAgJy10dW5lJywgJ3plcm9sYXRlbmN5JyxcbiAgICAgICctcGl4X2ZtdCcsICd5dXY0MjBwJyxcbiAgICAgICctbW92ZmxhZ3MnLCAnK2Zhc3RzdGFydCcsXG4gICAgICAnLWZmbGFncycsICdub2J1ZmZlcicsXG4gICAgICAnLWYnLCBERUZBVUxUX0VYVCxcbiAgICAgICctcicsIGAke3RoaXMuX2Zwc31gLFxuICAgICAgLi4uKHRoaXMuX3ZpZGVvRmlsdGVyID8gWyctZmlsdGVyOnYnLCB0aGlzLl92aWRlb0ZpbHRlcl0gOiBbXSksXG4gICAgXTtcblxuICAgIGNvbnN0IGZ1bGxDbWQgPSBbXG4gICAgICBmZm1wZWcsXG4gICAgICAuLi5hcmdzLFxuICAgICAgdGhpcy5fdmlkZW9QYXRoLFxuICAgIF07XG4gICAgdGhpcy5fcHJvY2VzcyA9IG5ldyBTdWJQcm9jZXNzKGZ1bGxDbWRbMF0sIGZ1bGxDbWQuc2xpY2UoMSkpO1xuICAgIGxvZy5kZWJ1ZyhgU3RhcnRpbmcgJHtGRk1QRUdfQklOQVJZfTogJHt1dGlsLnF1b3RlKGZ1bGxDbWQpfWApO1xuICAgIHRoaXMuX3Byb2Nlc3Mub24oJ291dHB1dCcsIChzdGRvdXQsIHN0ZGVycikgPT4ge1xuICAgICAgaWYgKF8udHJpbShzdGRvdXQgfHwgc3RkZXJyKSkge1xuICAgICAgICBsb2cuZGVidWcoYFske0ZGTVBFR19CSU5BUll9XSAke3N0ZG91dCB8fCBzdGRlcnJ9YCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGhpcy5fcHJvY2Vzcy5vbmNlKCdleGl0JywgYXN5bmMgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgICAgdGhpcy5fcHJvY2VzcyA9IG51bGw7XG4gICAgICBpZiAoY29kZSA9PT0gMCkge1xuICAgICAgICBsb2cuZGVidWcoJ1NjcmVlbiByZWNvcmRpbmcgZXhpdGVkIHdpdGhvdXQgZXJyb3JzJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCB0aGlzLl9lbmZvcmNlVGVybWluYXRpb24oKTtcbiAgICAgICAgbG9nLndhcm4oYFNjcmVlbiByZWNvcmRpbmcgZXhpdGVkIHdpdGggZXJyb3IgY29kZSAke2NvZGV9LCBzaWduYWwgJHtzaWduYWx9YCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgYXdhaXQgdGhpcy5fcHJvY2Vzcy5zdGFydCgwKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgd2FpdEZvckNvbmRpdGlvbihhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmIChhd2FpdCB0aGlzLmdldFZpZGVvUGF0aCgpKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCF0aGlzLl9wcm9jZXNzKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAke0ZGTVBFR19CSU5BUll9IHByb2Nlc3MgZGllZCB1bmV4cGVjdGVkbHlgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9LCB7XG4gICAgICAgIHdhaXRNczogUkVUUllfVElNRU9VVCxcbiAgICAgICAgaW50ZXJ2YWxNczogUkVUUllfUEFVU0UsXG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBhd2FpdCB0aGlzLl9lbmZvcmNlVGVybWluYXRpb24oKTtcbiAgICAgIGxvZy5lcnJvckFuZFRocm93KGBUaGUgZXhwZWN0ZWQgc2NyZWVuIHJlY29yZCBmaWxlICcke3RoaXMuX3ZpZGVvUGF0aH0nIGRvZXMgbm90IGV4aXN0LiBgICtcbiAgICAgICAgYENoZWNrIHRoZSBzZXJ2ZXIgbG9nIGZvciBtb3JlIGRldGFpbHNgKTtcbiAgICB9XG4gICAgbG9nLmluZm8oYFRoZSB2aWRlbyByZWNvcmRpbmcgaGFzIHN0YXJ0ZWQuIFdpbGwgdGltZW91dCBpbiAke3V0aWwucGx1cmFsaXplKCdzZWNvbmQnLCB0aGlzLl90aW1lTGltaXQsIHRydWUpfWApO1xuICB9XG5cbiAgYXN5bmMgc3RvcCAoZm9yY2UgPSBmYWxzZSkge1xuICAgIGlmIChmb3JjZSkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX2VuZm9yY2VUZXJtaW5hdGlvbigpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5pc1J1bm5pbmcoKSkge1xuICAgICAgbG9nLmRlYnVnKCdTY3JlZW4gcmVjb3JkaW5nIGlzIG5vdCBydW5uaW5nLiBSZXR1cm5pbmcgdGhlIHJlY2VudCByZXN1bHQnKTtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmdldFZpZGVvUGF0aCgpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBjb25zdCB0aW1lciA9IHNldFRpbWVvdXQoYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLl9lbmZvcmNlVGVybWluYXRpb24oKTtcbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgU2NyZWVuIHJlY29yZGluZyBoYXMgZmFpbGVkIHRvIGV4aXQgYWZ0ZXIgJHtQUk9DRVNTX1NIVVRET1dOX1RJTUVPVVR9bXNgKSk7XG4gICAgICB9LCBQUk9DRVNTX1NIVVRET1dOX1RJTUVPVVQpO1xuXG4gICAgICB0aGlzLl9wcm9jZXNzLm9uY2UoJ2V4aXQnLCBhc3luYyAoY29kZSwgc2lnbmFsKSA9PiB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gICAgICAgIGlmIChjb2RlID09PSAwKSB7XG4gICAgICAgICAgcmVzb2x2ZShhd2FpdCB0aGlzLmdldFZpZGVvUGF0aCgpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZWplY3QobmV3IEVycm9yKGBTY3JlZW4gcmVjb3JkaW5nIGV4aXRlZCB3aXRoIGVycm9yIGNvZGUgJHtjb2RlfSwgc2lnbmFsICR7c2lnbmFsfWApKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuX3Byb2Nlc3MucHJvYy5zdGRpbi53cml0ZSgncScpO1xuICAgICAgdGhpcy5fcHJvY2Vzcy5wcm9jLnN0ZGluLmVuZCgpO1xuICAgIH0pO1xuICB9XG59XG5cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTdGFydFJlY29yZGluZ09wdGlvbnNcbiAqXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHZpZGVvRmlsdGVyIC0gVGhlIHZpZGVvIGZpbHRlciBzcGVjIHRvIGFwcGx5IGZvciBmZm1wZWcuXG4gKiBTZWUgaHR0cHM6Ly90cmFjLmZmbXBlZy5vcmcvd2lraS9GaWx0ZXJpbmdHdWlkZSBmb3IgbW9yZSBkZXRhaWxzIG9uIHRoZSBwb3NzaWJsZSB2YWx1ZXMuXG4gKiBFeGFtcGxlOiBTZXQgaXQgdG8gYHNjYWxlPWlmbm90KGd0ZShpd1xcLDEwMjQpXFwsaXdcXCwxMDI0KTotMmAgaW4gb3JkZXIgdG8gbGltaXQgdGhlIHZpZGVvIHdpZHRoXG4gKiB0byAxMDI0cHguIFRoZSBoZWlnaHQgd2lsbCBiZSBhZGp1c3RlZCBhdXRvbWF0aWNhbGx5IHRvIG1hdGNoIHRoZSBhY3R1YWwgcmF0aW8uXG4gKiBAcHJvcGVydHkge251bWJlcnxzdHJpbmd9IGZwcyBbMTVdIC0gVGhlIGNvdW50IG9mIGZyYW1lcyBwZXIgc2Vjb25kIGluIHRoZSByZXN1bHRpbmcgdmlkZW8uXG4gKiBUaGUgZ3JlYXRlciBmcHMgaXQgaGFzIHRoZSBiaWdnZXIgZmlsZSBzaXplIGlzLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IHByZXNldCBbdmVyeWZhc3RdIC0gT25lIG9mIHRoZSBzdXBwb3J0ZWQgZW5jb2RpbmcgcHJlc2V0cy4gUG9zc2libGUgdmFsdWVzIGFyZTpcbiAqIC0gdWx0cmFmYXN0XG4gKiAtIHN1cGVyZmFzdFxuICogLSB2ZXJ5ZmFzdFxuICogLSBmYXN0ZXJcbiAqIC0gZmFzdFxuICogLSBtZWRpdW1cbiAqIC0gc2xvd1xuICogLSBzbG93ZXJcbiAqIC0gdmVyeXNsb3dcbiAqIEEgcHJlc2V0IGlzIGEgY29sbGVjdGlvbiBvZiBvcHRpb25zIHRoYXQgd2lsbCBwcm92aWRlIGEgY2VydGFpbiBlbmNvZGluZyBzcGVlZCB0byBjb21wcmVzc2lvbiByYXRpby5cbiAqIEEgc2xvd2VyIHByZXNldCB3aWxsIHByb3ZpZGUgYmV0dGVyIGNvbXByZXNzaW9uIChjb21wcmVzc2lvbiBpcyBxdWFsaXR5IHBlciBmaWxlc2l6ZSkuXG4gKiBUaGlzIG1lYW5zIHRoYXQsIGZvciBleGFtcGxlLCBpZiB5b3UgdGFyZ2V0IGEgY2VydGFpbiBmaWxlIHNpemUgb3IgY29uc3RhbnQgYml0IHJhdGUsIHlvdSB3aWxsIGFjaGlldmUgYmV0dGVyXG4gKiBxdWFsaXR5IHdpdGggYSBzbG93ZXIgcHJlc2V0LiBSZWFkIGh0dHBzOi8vdHJhYy5mZm1wZWcub3JnL3dpa2kvRW5jb2RlL0guMjY0IGZvciBtb3JlIGRldGFpbHMuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGNhcHR1cmVDdXJzb3IgW2ZhbHNlXSAtIFdoZXRoZXIgdG8gY2FwdHVyZSB0aGUgbW91c2UgY3Vyc29yIHdoaWxlIHJlY29yZGluZ1xuICogdGhlIHNjcmVlblxuICogQHByb3BlcnR5IHtib29sZWFufSBjYXB0dXJlQ2xpY2tzIFtmYWxzZV0gLSBXaGV0aGVyIHRvIGNhcHR1cmUgbW91c2UgY2xpY2tzIHdoaWxlIHJlY29yZGluZyB0aGVcbiAqIHNjcmVlblxuICogQHByb3BlcnR5IHshc3RyaW5nfG51bWJlcn0gZGV2aWNlSWQgLSBTY3JlZW4gZGV2aWNlIGluZGV4IHRvIHVzZSBmb3IgdGhlIHJlY29yZGluZy5cbiAqIFRoZSBsaXN0IG9mIGF2YWlsYWJsZSBkZXZpY2VzIGNvdWxkIGJlIHJldHJpZXZlZCB1c2luZ1xuICogYGZmbXBlZyAtZiBhdmZvdW5kYXRpb24gLWxpc3RfZGV2aWNlcyB0cnVlIC1pYCBjb21tYW5kLlxuICogQHByb3BlcnR5IHtzdHJpbmd8bnVtYmVyfSB0aW1lTGltaXQgWzYwMF0gLSBUaGUgbWF4aW11bSByZWNvcmRpbmcgdGltZSwgaW4gc2Vjb25kcy4gVGhlIGRlZmF1bHRcbiAqIHZhbHVlIGlzIDYwMCBzZWNvbmRzICgxMCBtaW51dGVzKS5cbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gZm9yY2VSZXN0YXJ0IFt0cnVlXSAtIFdoZXRoZXIgdG8gaWdub3JlIHRoZSBjYWxsIGlmIGEgc2NyZWVuIHJlY29yZGluZyBpcyBjdXJyZW50bHkgcnVubmluZ1xuICogKGBmYWxzZWApIG9yIHRvIHN0YXJ0IGEgbmV3IHJlY29yZGluZyBpbW1lZGlhdGVseSBhbmQgdGVybWluYXRlIHRoZSBleGlzdGluZyBvbmUgaWYgcnVubmluZyAoYHRydWVgKS5cbiAqL1xuXG4vKipcbiAqIFJlY29yZCB0aGUgZGlzcGxheSBpbiBiYWNrZ3JvdW5kIHdoaWxlIHRoZSBhdXRvbWF0ZWQgdGVzdCBpcyBydW5uaW5nLlxuICogVGhpcyBtZXRob2QgcmVxdWlyZXMgRkZNUEVHIChodHRwczovL3d3dy5mZm1wZWcub3JnL2Rvd25sb2FkLmh0bWwpIHRvIGJlIGluc3RhbGxlZFxuICogYW5kIHByZXNlbnQgaW4gUEFUSC4gQWxzbywgdGhlIEFwcGl1bSBwcm9jZXNzIG11c3QgYmUgYWxsb3dlZCB0byBhY2Nlc3Mgc2NyZWVuIHJlY29yZGluZ1xuICogaW4gU3lzdGVtIFByZWZlcmVuY2VzLT5TZWN1cml0eSAmIFByaXZhY3ktPlNjcmVlbiBSZWNvcmRpbmcuXG4gKiBUaGUgcmVzdWx0aW5nIHZpZGVvIHVzZXMgSDI2NCBjb2RlYyBhbmQgaXMgcmVhZHkgdG8gYmUgcGxheWVkIGJ5IG1lZGlhIHBsYXllcnMgYnVpbHQtaW4gaW50byB3ZWIgYnJvd3NlcnMuXG4gKlxuICogQHBhcmFtIHs/U3RhcnRSZWNvcmRpbmdPcHRpb25zfSBvcHRpb25zIC0gVGhlIGF2YWlsYWJsZSBvcHRpb25zLlxuICogQHRocm93cyB7RXJyb3J9IElmIHNjcmVlbiByZWNvcmRpbmcgaGFzIGZhaWxlZCB0byBzdGFydCBvciBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoZSBkZXZpY2UgdW5kZXIgdGVzdC5cbiAqL1xuY29tbWFuZHMuc3RhcnRSZWNvcmRpbmdTY3JlZW4gPSBhc3luYyBmdW5jdGlvbiBzdGFydFJlY29yZGluZ1NjcmVlbiAob3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB0aW1lTGltaXQsXG4gICAgdmlkZW9GaWx0ZXIsXG4gICAgZnBzLFxuICAgIHByZXNldCxcbiAgICBjYXB0dXJlQ3Vyc29yLFxuICAgIGNhcHR1cmVDbGlja3MsXG4gICAgZGV2aWNlSWQsXG4gICAgZm9yY2VSZXN0YXJ0ID0gdHJ1ZSxcbiAgfSA9IG9wdGlvbnM7XG5cbiAgaWYgKF8uaXNOaWwoZGV2aWNlSWQpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAnZGV2aWNlSWQnIG9wdGlvbiBtdXN0IGJlIHByb3ZpZGVkLiBSdW4gJ2ZmbXBlZyAtZiBhdmZvdW5kYXRpb24gLWxpc3RfZGV2aWNlcyB0cnVlIC1pJyBgICtcbiAgICAgICd0byBmZXRjaCB0aGUgbGlzdCBvZiBhdmFpbGFibGUgZGV2aWNlIGlkcycpO1xuICB9XG5cbiAgaWYgKHRoaXMuX3NjcmVlblJlY29yZGVyPy5pc1J1bm5pbmc/LigpKSB7XG4gICAgbG9nLmRlYnVnKCdUaGUgc2NyZWVuIHJlY29yZGluZyBpcyBhbHJlYWR5IHJ1bm5pbmcnKTtcbiAgICBpZiAoIWZvcmNlUmVzdGFydCkge1xuICAgICAgbG9nLmRlYnVnKCdEb2luZyBub3RoaW5nJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxvZy5kZWJ1ZygnRm9yY2luZyB0aGUgYWN0aXZlIHNjcmVlbiByZWNvcmRpbmcgdG8gc3RvcCcpO1xuICAgIGF3YWl0IHRoaXMuX3NjcmVlblJlY29yZGVyLnN0b3AodHJ1ZSk7XG4gIH1cbiAgdGhpcy5fc2NyZWVuUmVjb3JkZXIgPSBudWxsO1xuXG4gIGNvbnN0IHZpZGVvUGF0aCA9IGF3YWl0IHRlbXBEaXIucGF0aCh7XG4gICAgcHJlZml4OiB1dGlsLnV1aWRWNCgpLnN1YnN0cmluZygwLCA4KSxcbiAgICBzdWZmaXg6IGAuJHtERUZBVUxUX0VYVH1gLFxuICB9KTtcbiAgdGhpcy5fc2NyZWVuUmVjb3JkZXIgPSBuZXcgU2NyZWVuUmVjb3JkZXIodmlkZW9QYXRoLCB7XG4gICAgZnBzOiBwYXJzZUludChmcHMsIDEwKSxcbiAgICB0aW1lTGltaXQ6IHBhcnNlSW50KHRpbWVMaW1pdCwgMTApLFxuICAgIHByZXNldCxcbiAgICBjYXB0dXJlQ3Vyc29yLFxuICAgIGNhcHR1cmVDbGlja3MsXG4gICAgdmlkZW9GaWx0ZXIsXG4gICAgZGV2aWNlSWQsXG4gIH0pO1xuICB0cnkge1xuICAgIGF3YWl0IHRoaXMuX3NjcmVlblJlY29yZGVyLnN0YXJ0KCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aGlzLl9zY3JlZW5SZWNvcmRlciA9IG51bGw7XG4gICAgdGhyb3cgZTtcbiAgfVxufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTdG9wUmVjb3JkaW5nT3B0aW9uc1xuICpcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gcmVtb3RlUGF0aCAtIFRoZSBwYXRoIHRvIHRoZSByZW1vdGUgbG9jYXRpb24sIHdoZXJlIHRoZSByZXN1bHRpbmcgdmlkZW8gc2hvdWxkIGJlIHVwbG9hZGVkLlxuICogVGhlIGZvbGxvd2luZyBwcm90b2NvbHMgYXJlIHN1cHBvcnRlZDogaHR0cC9odHRwcywgZnRwLlxuICogTnVsbCBvciBlbXB0eSBzdHJpbmcgdmFsdWUgKHRoZSBkZWZhdWx0IHNldHRpbmcpIG1lYW5zIHRoZSBjb250ZW50IG9mIHJlc3VsdGluZ1xuICogZmlsZSBzaG91bGQgYmUgZW5jb2RlZCBhcyBCYXNlNjQgYW5kIHBhc3NlZCBhcyB0aGUgZW5kcG9pbnQgcmVzcG9uc2UgdmFsdWUuXG4gKiBBbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24gaWYgdGhlIGdlbmVyYXRlZCBtZWRpYSBmaWxlIGlzIHRvbyBiaWcgdG9cbiAqIGZpdCBpbnRvIHRoZSBhdmFpbGFibGUgcHJvY2VzcyBtZW1vcnkuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHVzZXIgLSBUaGUgbmFtZSBvZiB0aGUgdXNlciBmb3IgdGhlIHJlbW90ZSBhdXRoZW50aWNhdGlvbi5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gcGFzcyAtIFRoZSBwYXNzd29yZCBmb3IgdGhlIHJlbW90ZSBhdXRoZW50aWNhdGlvbi5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbWV0aG9kIC0gVGhlIGh0dHAgbXVsdGlwYXJ0IHVwbG9hZCBtZXRob2QgbmFtZS4gVGhlICdQVVQnIG9uZSBpcyB1c2VkIGJ5IGRlZmF1bHQuXG4gKiBAcHJvcGVydHkgez9PYmplY3R9IGhlYWRlcnMgLSBBZGRpdGlvbmFsIGhlYWRlcnMgbWFwcGluZyBmb3IgbXVsdGlwYXJ0IGh0dHAocykgdXBsb2Fkc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBmaWxlRmllbGROYW1lIFtmaWxlXSAtIFRoZSBuYW1lIG9mIHRoZSBmb3JtIGZpZWxkLCB3aGVyZSB0aGUgZmlsZSBjb250ZW50IEJMT0Igc2hvdWxkIGJlIHN0b3JlZCBmb3JcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodHRwKHMpIHVwbG9hZHNcbiAqIEBwcm9wZXJ0eSB7P09iamVjdHxBcnJheTxQYWlyPn0gZm9ybUZpZWxkcyAtIEFkZGl0aW9uYWwgZm9ybSBmaWVsZHMgZm9yIG11bHRpcGFydCBodHRwKHMpIHVwbG9hZHNcbiAqL1xuXG4vKipcbiAqIFN0b3AgcmVjb3JkaW5nIHRoZSBzY3JlZW4uXG4gKiBJZiBubyBzY3JlZW4gcmVjb3JkaW5nIGhhcyBiZWVuIHN0YXJ0ZWQgYmVmb3JlIHRoZW4gdGhlIG1ldGhvZCByZXR1cm5zIGFuIGVtcHR5IHN0cmluZy5cbiAqXG4gKiBAcGFyYW0gez9TdG9wUmVjb3JkaW5nT3B0aW9uc30gb3B0aW9ucyAtIFRoZSBhdmFpbGFibGUgb3B0aW9ucy5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IEJhc2U2NC1lbmNvZGVkIGNvbnRlbnQgb2YgdGhlIHJlY29yZGVkIG1lZGlhIGZpbGUgaWYgJ3JlbW90ZVBhdGgnXG4gKiBwYXJhbWV0ZXIgaXMgZmFsc3kgb3IgYW4gZW1wdHkgc3RyaW5nLlxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBnZXR0aW5nIHRoZSBuYW1lIG9mIGEgbWVkaWEgZmlsZVxuICogb3IgdGhlIGZpbGUgY29udGVudCBjYW5ub3QgYmUgdXBsb2FkZWQgdG8gdGhlIHJlbW90ZSBsb2NhdGlvblxuICogb3Igc2NyZWVuIHJlY29yZGluZyBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoZSBkZXZpY2UgdW5kZXIgdGVzdC5cbiAqL1xuY29tbWFuZHMuc3RvcFJlY29yZGluZ1NjcmVlbiA9IGFzeW5jIGZ1bmN0aW9uIHN0b3BSZWNvcmRpbmdTY3JlZW4gKG9wdGlvbnMgPSB7fSkge1xuICBpZiAoIXRoaXMuX3NjcmVlblJlY29yZGVyKSB7XG4gICAgbG9nLmRlYnVnKCdObyBzY3JlZW4gcmVjb3JkaW5nIGhhcyBiZWVuIHN0YXJ0ZWQuIERvaW5nIG5vdGhpbmcnKTtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICBsb2cuZGVidWcoJ1JldHJpZXZpbmcgdGhlIHJlc3VsdGluZyB2aWRlbyBkYXRhJyk7XG4gIGNvbnN0IHZpZGVvUGF0aCA9IGF3YWl0IHRoaXMuX3NjcmVlblJlY29yZGVyLnN0b3AoKTtcbiAgaWYgKCF2aWRlb1BhdGgpIHtcbiAgICBsb2cuZGVidWcoJ05vIHZpZGVvIGRhdGEgaXMgZm91bmQuIFJldHVybmluZyBhbiBlbXB0eSBzdHJpbmcnKTtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IHVwbG9hZFJlY29yZGVkTWVkaWEodmlkZW9QYXRoLCBvcHRpb25zLnJlbW90ZVBhdGgsIG9wdGlvbnMpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsUUFBUSxHQUFHLEVBQWpCO0FBRUEsTUFBTUMsV0FBVyxHQUFHLEdBQXBCO0FBQ0EsTUFBTUMsYUFBYSxHQUFHLElBQXRCO0FBQ0EsTUFBTUMsa0JBQWtCLEdBQUcsS0FBSyxFQUFoQztBQUNBLE1BQU1DLHdCQUF3QixHQUFHLEtBQUssSUFBdEM7QUFDQSxNQUFNQyxXQUFXLEdBQUcsS0FBcEI7QUFDQSxNQUFNQyxhQUFhLEdBQUcsUUFBdEI7QUFDQSxNQUFNQyxXQUFXLEdBQUcsRUFBcEI7QUFDQSxNQUFNQyxj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