oxygen-cli 1.22.2 → 1.23.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/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v1.23.0 (2022-06-15)
4
+
5
+ #### :tada: New Feature
6
+ * Add `db.callProcedure`.
7
+
8
+ #### :beetle: Bug Fix
9
+ * Fix test execution on Firefox.
10
+ * `http`: fix issue with "Cannot read property 'includes' of undefined" error when content-type header is missing in the response.
11
+
12
+ #### :house: Internal
13
+ * Bump dependencies.
14
+
3
15
  ## v1.22.1 (2022-04-28)
4
16
 
5
17
  #### :beetle: Bug Fix
package/build/lib/cli.js CHANGED
@@ -132,4 +132,4 @@ Web test options:
132
132
  Mobile test options:
133
133
  -s, --server=SERVER_URL Appium server URL. Default is http://localhost:4723/wd/hub.`);
134
134
  }
135
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY2xpLmpzIl0sIm5hbWVzIjpbInByb2Nlc3MiLCJvbiIsImhhbmRsZVNpZ0ludCIsImVycm9yIiwiY29uc29sZSIsImFyZ3YiLCJyZXF1aXJlIiwic2xpY2UiLCJ2IiwidmVyc2lvbiIsImxvZyIsImV4aXQiLCJfIiwiaGVscCIsInByaW50VXNhZ2UiLCJkIiwiZGVsYXkiLCJwYXJzZUludCIsInRhcmdldEZpbGUiLCJjbGl1dGlsIiwicHJvY2Vzc1RhcmdldFBhdGgiLCJjb25maWciLCJnZXRDb25maWd1cmF0aW9ucyIsImdlbmVyYXRlVGVzdE9wdGlvbnMiLCJ0aGVuIiwib3B0aW9ucyIsInByZXBhcmVBbmRTdGFydFRoZVRlc3QiLCJjb2RlIiwiZSIsImZyYW1ld29yayIsInN1aXRlcyIsIkFycmF5IiwiaXNBcnJheSIsIkVycm9yIiwiY2Fwc0FyciIsImNhcGFiaWxpdGllcyIsImV4aXRDb2RlIiwicmVwb3J0ZXIiLCJSZXBvcnRBZ2dyZWdhdG9yIiwibGF1bmNoZXIiLCJMYXVuY2hlciIsInJ1biIsImdlbmVyYXRlUmVwb3J0cyIsImdldEV4aXRDb2RlIiwidHJhY2UiLCJzZXRUaW1lb3V0Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7QUFTQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7QUFFQUEsT0FBTyxDQUFDQyxFQUFSLENBQVcsUUFBWCxFQUFxQkMsWUFBckI7QUFDQUYsT0FBTyxDQUFDQyxFQUFSLENBQVcsbUJBQVgsRUFBZ0NFLEtBQUssSUFBSTtBQUNyQ0MsRUFBQUEsT0FBTyxDQUFDRCxLQUFSLENBQWMsbUJBQWQsRUFBbUNBLEtBQW5DO0FBQ0gsQ0FGRDtBQUlBSCxPQUFPLENBQUNDLEVBQVIsQ0FBVyxvQkFBWCxFQUFpQ0UsS0FBSyxJQUFJO0FBQ3RDQyxFQUFBQSxPQUFPLENBQUNELEtBQVIsQ0FBYyxvQkFBZCxFQUFvQ0EsS0FBcEM7QUFDSCxDQUZEOztBQUtBLE1BQU1FLElBQUksR0FBR0MsT0FBTyxDQUFDLFVBQUQs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QUFFQSxNQUFJO0FBQ0EsVUFBTUMsUUFBUSxHQUFHLElBQUlDLHlCQUFKLENBQXFCYixPQUFyQixDQUFqQjtBQUNBLFVBQU1jLFFBQVEsR0FBRyxJQUFJQyxpQkFBSixDQUFhZixPQUFiLEVBQXNCWSxRQUF0QixDQUFqQjtBQUNBakMsSUFBQUEsT0FBTyxDQUFDTSxHQUFSLENBQVksaUJBQVo7QUFDQSxVQUFNNkIsUUFBUSxDQUFDRSxHQUFULENBQWFQLE9BQWIsQ0FBTjtBQUNBRyxJQUFBQSxRQUFRLENBQUNLLGVBQVQ7QUFDQU4sSUFBQUEsUUFBUSxHQUFHQyxRQUFRLENBQUNNLFdBQVQsRUFBWDtBQUNILEdBUEQsQ0FRQSxPQUFPZixDQUFQLEVBQVU7QUFDTnhCLElBQUFBLE9BQU8sQ0FBQ0QsS0FBUixDQUFjLGFBQWQsRUFBNkJ5QixDQUE3QjtBQUNBeEIsSUFBQUEsT0FBTyxDQUFDd0MsS0FBUjtBQUNBNUMsSUFBQUEsT0FBTyxDQUFDVyxJQUFSLENBQWEsQ0FBYjtBQUNIOztBQUNELFNBQU95QixRQUFQO0FBQ0g7O0FBRUQsU0FBU2xDLFlBQVQsR0FBd0I7QUFFcEIyQyxFQUFBQSxVQUFVLENBQUMsTUFBTTdDLE9BQU8sQ0FBQ1csSUFBUixDQUFhLENBQWIsQ0FBUCxFQUF3QixJQUF4QixDQUFWO0FBQ0g7O0FBRUQsU0FBU0csVUFBVCxHQUFzQjtBQUNsQlYsRUFBQUEsT0FBTyxDQUFDTSxHQUFSLENBQWE7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5RkFoQ0k7QUFpQ0giLCJzb3VyY2VzQ29udGVudCI6WyIjISAvdXNyL2Jpbi9lbnYgbm9kZVxuLypcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqL1xuaW1wb3J0ICogYXMgY2xpdXRpbCBmcm9tICcuL2NsaS11dGlsJztcbmltcG9ydCBMYXVuY2hlciBmcm9tICcuL2xhdW5jaGVyJztcbmltcG9ydCBSZXBvcnRBZ2dyZWdhdG9yIGZyb20gJy4uL3JlcG9ydGVyL1JlcG9ydEFnZ3JlZ2F0b3InO1xuXG5wcm9jZXNzLm9uKCdTSUdJTlQnLCBoYW5kbGVTaWdJbnQpO1xucHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCBlcnJvciA9PiB7XG4gICAgY29uc29sZS5lcnJvcigndW5jYXVnaHRFeGNlcHRpb24nLCBlcnJvcik7XG59KTtcblxucHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgZXJyb3IgPT4ge1xuICAgIGNvbnNvbGUuZXJyb3IoJ3VuaGFuZGxlZFJlamVjdGlvbicsIGVycm9yKTtcbn0pO1xuXG4vLyBwYXJzZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzXG5jb25zdCBhcmd2ID0gcmVxdWlyZSgnbWluaW1pc3QnKShwcm9jZXNzLmFyZ3Yuc2xpY2UoMikpO1xuXG5pZiAoYXJndi52IHx8IGFyZ3YudmVyc2lvbikge1xuICAgIGNvbnNvbGUubG9nKHJlcXVpcmUoJy4uLy4uL3BhY2thZ2UuanNvbicpLnZlcnNpb24pO1xuICAgIHByb2Nlc3MuZXhpdCgwKTtcbn0gZWxzZSBpZiAodHlwZW9mKGFyZ3YuX1swXSkgPT09ICd1bmRlZmluZWQnIHx8IGFyZ3YuaGVscCkge1xuICAgIHByaW50VXNhZ2UoKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG59XG5cbmlmIChhcmd2LmQgfHwgYXJndi5kZWxheSkge1xuICAgIGNvbnN0IGRlbGF5ID0gYXJndi5kIHx8IGFyZ3YuZGVsYXk7XG4gICAgaWYgKCEocGFyc2VJbnQoZGVsYXkpID4gMCkpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkludmFsaWQgYXJndW1lbnQgLSAnZGVsYXknIHNob3VsZCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIuXCIpO1xuICAgICAgICBwcmludFVzYWdlKCk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG59XG5cbmNvbnN0IHRhcmdldEZpbGUgPSBjbGl1dGlsLnByb2Nlc3NUYXJnZXRQYXRoKGFyZ3YuX1swXSk7XG5pZiAodGFyZ2V0RmlsZSA9PSBudWxsKSB7XG4gICAgcHJpbnRVc2FnZSgpO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbn1cblxuY29uc3QgY29uZmlnID0gY2xpdXRpbC5nZXRDb25maWd1cmF0aW9ucyh0YXJnZXRGaWxlLCBhcmd2KTtcblxuY2xpdXRpbC5nZW5lcmF0ZVRlc3RPcHRpb25zKGNvbmZpZywgYXJndikudGhlbihcbiAgICAob3B0aW9ucykgPT4ge1xuICAgICAgICBwcmVwYXJlQW5kU3RhcnRUaGVUZXN0KG9wdGlvbnMpLnRoZW4oXG4gICAgICAgICAgICAoY29kZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdEb25lIScpO1xuICAgICAgICAgICAgICAgIHByb2Nlc3MuZXhpdChjb2RlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1Rlc3QgZmFpbGVkOiAnLCBlKTtcbiAgICAgICAgICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfSxcbiAgICAoZSkgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdUZXN0IGZhaWxlZCBvbiBnZW5lcmF0ZSBzdGF0ZTogJywgZSk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4pO1xuXG5hc3luYyBmdW5jdGlvbiBwcmVwYXJlQW5kU3RhcnRUaGVUZXN0KG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5mcmFtZXdvcmsgPT09ICdveHlnZW4nICYmICghb3B0aW9ucy5zdWl0ZXMgfHwgIUFycmF5LmlzQXJyYXkob3B0aW9ucy5zdWl0ZXMpKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBzdGFydCB0aGUgdGVzdCAtIG5vIHN1aXRlcyBhcmUgc3BlY2lmaWVkLicpO1xuICAgIH1cbiAgICBsZXQgY2Fwc0FyciA9IG9wdGlvbnMuY2FwYWJpbGl0aWVzIHx8IFt7fV07XG4gICAgLy8gY2hlY2sgaWYgY2FwYWJpbGl0aWVzIG9iamVjdCBpcyBhbiBhcnJheSBvciBhIGhhc2h0YWJsZVxuICAgIGlmICghKGNhcHNBcnIgaW5zdGFuY2VvZiBBcnJheSkpIHtcbiAgICAgICAgY2Fwc0FyciA9IFtjYXBzQXJyXTtcbiAgICB9XG4gICAgbGV0IGV4aXRDb2RlID0gMDtcbiAgICAvLyBzdGFydCBsYXVuY2hlclxuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlcG9ydGVyID0gbmV3IFJlcG9ydEFnZ3JlZ2F0b3Iob3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IGxhdW5jaGVyID0gbmV3IExhdW5jaGVyKG9wdGlvbnMsIHJlcG9ydGVyKTtcbiAgICAgICAgY29uc29sZS5sb2coJ1Rlc3Qgc3RhcnRlZC4uLicpO1xuICAgICAgICBhd2FpdCBsYXVuY2hlci5ydW4oY2Fwc0Fycik7XG4gICAgICAgIHJlcG9ydGVyLmdlbmVyYXRlUmVwb3J0cygpO1xuICAgICAgICBleGl0Q29kZSA9IHJlcG9ydGVyLmdldEV4aXRDb2RlKCk7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhdGFsIGVycm9yJywgZSk7XG4gICAgICAgIGNvbnNvbGUudHJhY2UoKTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cbiAgICByZXR1cm4gZXhpdENvZGU7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZVNpZ0ludCgpIHtcbiAgICAvLyBkZWxheSBwcm9jZXNzIGV4aXQgdG8gbGV0IE94eWdlbiB0byBwcm9wZXJseSBkaXNwb3NlXG4gICAgc2V0VGltZW91dCgoKSA9PiBwcm9jZXNzLmV4aXQoMCksIDIwMDApO1xufVxuXG5mdW5jdGlvbiBwcmludFVzYWdlKCkge1xuICAgIGNvbnNvbGUubG9nKGBVc2FnZTogb3h5Z2VuIFtPUFRJT05TXS4uLiBGSUxFXG5cbkZJTEUgLSBQYXRoIHRvIGEgdGVzdCBzY3JpcHQgKC5qcykgb3IgYSBwcm9qZWN0IGNvbmZpZ3VyYXRpb24gKC5qc29uKSBmaWxlLlxuXG5HZW5lcmFsIG9wdGlvbnM6XG4gIC1kLCAtLWRlbGF5PVNFQ09ORFMgICAgICAgIERlbGF5IGJldHdlZW4gZWFjaCBjb21tYW5kIGluIHNlY29uZHMuXG4gICAgICAtLXJmPXtodG1sfHBkZnx4bWx8ZXhjZWx8anVuaXR8anNvbn0gIFJlcG9ydHMgZmlsZSBmb3JtYXQuIERlZmF1bHQgaXMgaHRtbC5cbiAgICAgIC0tcm89UEFUSCAgICAgICAgICAgICAgT3V0cHV0IHBhdGggZm9yIHJlcG9ydCBmaWxlLiBJZiBzcGVjaWZpZWQsIHRoZSByZXBvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBvdmVyd3JpdGUgYW55IHByZXZpb3VzIHJlcG9ydHMuXG4gIC1pLCAtLWl0ZXI9Q09VTlQgICAgICAgICAgIE51bWJlciBvZiB0aW1lcyB0byBydW4gdGhlIHRlc3QuIERlZmF1bHQgaXMgMS5cbiAgLXAsIC0tcGFyYW09RklMRSAgICAgICAgICAgUGFyYW1ldGVycyBmaWxlLiBJZiBub3Qgc3BlY2lmaWVkIGFuIGF0dGVtcHQgd2lsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBtYWRlIHRvIGxvYWQgcGFyYW1ldGVycyBmcm9tIGEgZmlsZSBuYW1lZCBzYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIHRoZSB0ZXN0IHNjcmlwdCwgbG9jYXRlZCBpbiB0aGUgc2FtZSBkaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBoYXZpbmcgZXh0ZW5zaW9uIC0geGxzeCwgeGxzLCBjc3YsIG9yIHR4dC5cbiAgICAgIC0tcG09e3NlcXxyYW5kb218YWxsfSAgT3JkZXIgaW4gd2hpY2ggdG8gcmVhZCB0aGUgcGFyYW1ldGVycyAtIHNlcXVlbnRpYWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmRvbSwgYWxsLiBEZWZhdWx0IGlzIHNlcS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gJ3NlcScgYW5kICdyYW5kb20nIG1vZGVzIHRlc3Qgd2lsbCBydW4gZXhhY3QgbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRpbWVzIHNwZWNpZmllZCB3aXRoIHRoZSAtaSBvcHRpb24uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluICdhbGwnIG1vZGUsIGFsbCBhdmFpbGFibGUgcGFyYW1ldGVycyB3aWxsIGJlIHJlYWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VxdWVudGlhbGx5LiBUaGlzIG9wdGlvbiBpcyBtdXR1YWxseSBleGNsdXNpdmUgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtaSBvcHRpb24uXG4gICAgICAtLWRiZ3BvcnQ9UE9SVCAgICAgICAgIERlYnVnZ2VyIHBvcnQuXG4gICAgICAtLXN1aXRlcyAgICAgICAgICAgICAgIEZpbHRlciBvdXQgc3VpdGVzIGJ5IG5hbWVcbiAgLWgsIC0taGVscCAgICAgICAgICAgICAgICAgRGlzcGxheSB0aGlzIGluZm9ybWF0aW9uIGFuZCBleGl0LlxuICAtdiwgLS12ZXJzaW9uICAgICAgICAgICAgICBEaXNwbGF5IHZlcnNpb24gaW5mb3JtYXRpb24gYW5kIGV4aXQuXG5cbldlYiB0ZXN0IG9wdGlvbnM6XG4gIC1iLCAtLWJyb3dzZXI9e2Nocm9tZXxpZXxzYWZhcml8ZmlyZWZveH0gIEJyb3dzZXIgbmFtZS4gRGVmYXVsdCBpcyBjaHJvbWUuXG4gIC1zLCAtLXNlcnZlcj1TRVJWRVJfVVJMICAgIFNlbGVuaXVtIGh1YiBVUkwuIERlZmF1bHQgaXMgaHR0cDovL2xvY2FsaG9zdDo0NDQ0L3dkL2h1Yi5cbiAgICAgIC0tcmVvcGVuPXt0cnVlfGZhbHNlfSAgUmVvcGVuIGJyb3dzZXIgb24gZWFjaCBpdGVyYXRpb24uIERlZmF1bHQgaXMgZmFsc2UuXG4gICAgICBcbk1vYmlsZSB0ZXN0IG9wdGlvbnM6XG4gICAgLXMsIC0tc2VydmVyPVNFUlZFUl9VUkwgIEFwcGl1bSBzZXJ2ZXIgVVJMLiBEZWZhdWx0IGlzIGh0dHA6Ly9sb2NhbGhvc3Q6NDcyMy93ZC9odWIuYCk7XG59Il19
135
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY2xpLmpzIl0sIm5hbWVzIjpbInByb2Nlc3MiLCJvbiIsImhhbmRsZVNpZ0ludCIsImVycm9yIiwiY29uc29sZSIsImFyZ3YiLCJyZXF1aXJlIiwic2xpY2UiLCJ2IiwidmVyc2lvbiIsImxvZyIsImV4aXQiLCJfIiwiaGVscCIsInByaW50VXNhZ2UiLCJkIiwiZGVsYXkiLCJwYXJzZUludCIsInRhcmdldEZpbGUiLCJjbGl1dGlsIiwicHJvY2Vzc1RhcmdldFBhdGgiLCJjb25maWciLCJnZXRDb25maWd1cmF0aW9ucyIsImdlbmVyYXRlVGVzdE9wdGlvbnMiLCJ0aGVuIiwib3B0aW9ucyIsInByZXBhcmVBbmRTdGFydFRoZVRlc3QiLCJjb2RlIiwiZSIsImZyYW1ld29yayIsInN1aXRlcyIsIkFycmF5IiwiaXNBcnJheSIsIkVycm9yIiwiY2Fwc0FyciIsImNhcGFiaWxpdGllcyIsImV4aXRDb2RlIiwicmVwb3J0ZXIiLCJSZXBvcnRBZ2dyZWdhdG9yIiwibGF1bmNoZXIiLCJMYXVuY2hlciIsInJ1biIsImdlbmVyYXRlUmVwb3J0cyIsImdldEV4aXRDb2RlIiwidHJhY2UiLCJzZXRUaW1lb3V0Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7QUFTQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7QUFFQUEsT0FBTyxDQUFDQyxFQUFSLENBQVcsUUFBWCxFQUFxQkMsWUFBckI7QUFDQUYsT0FBTyxDQUFDQyxFQUFSLENBQVcsbUJBQVgsRUFBZ0NFLEtBQUssSUFBSTtBQUNyQ0MsRUFBQUEsT0FBTyxDQUFDRCxLQUFSLENBQWMsbUJBQWQsRUFBbUNBLEtBQW5DO0FBQ0gsQ0FGRDtBQUlBSCxPQUFPLENBQUNDLEVBQVIsQ0FBVyxvQkFBWCxFQUFpQ0UsS0FBSyxJQUFJO0FBQ3RDQyxFQUFBQSxPQUFPLENBQUNELEtBQVIsQ0FBYyxvQkFBZCxFQUFvQ0EsS0FBcEM7QUFDSCxDQUZEOztBQUtBLE1BQU1FLElBQUksR0FBR0MsT0FBTyxDQUFDLFVBQUQs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QUFFQSxNQUFJO0FBQ0EsVUFBTUMsUUFBUSxHQUFHLElBQUlDLHlCQUFKLENBQXFCYixPQUFyQixDQUFqQjtBQUNBLFVBQU1jLFFBQVEsR0FBRyxJQUFJQyxpQkFBSixDQUFhZixPQUFiLEVBQXNCWSxRQUF0QixDQUFqQjtBQUNBakMsSUFBQUEsT0FBTyxDQUFDTSxHQUFSLENBQVksaUJBQVo7QUFDQSxVQUFNNkIsUUFBUSxDQUFDRSxHQUFULENBQWFQLE9BQWIsQ0FBTjtBQUNBRyxJQUFBQSxRQUFRLENBQUNLLGVBQVQ7QUFDQU4sSUFBQUEsUUFBUSxHQUFHQyxRQUFRLENBQUNNLFdBQVQsRUFBWDtBQUNILEdBUEQsQ0FRQSxPQUFPZixDQUFQLEVBQVU7QUFDTnhCLElBQUFBLE9BQU8sQ0FBQ0QsS0FBUixDQUFjLGFBQWQsRUFBNkJ5QixDQUE3QjtBQUNBeEIsSUFBQUEsT0FBTyxDQUFDd0MsS0FBUjtBQUNBNUMsSUFBQUEsT0FBTyxDQUFDVyxJQUFSLENBQWEsQ0FBYjtBQUNIOztBQUNELFNBQU95QixRQUFQO0FBQ0g7O0FBRUQsU0FBU2xDLFlBQVQsR0FBd0I7QUFFcEIyQyxFQUFBQSxVQUFVLENBQUMsTUFBTTdDLE9BQU8sQ0FBQ1csSUFBUixDQUFhLENBQWIsQ0FBUCxFQUF3QixJQUF4QixDQUFWO0FBQ0g7O0FBRUQsU0FBU0csVUFBVCxHQUFzQjtBQUNsQlYsRUFBQUEsT0FBTyxDQUFDTSxHQUFSLENBQWE7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5RkFoQ0k7QUFpQ0giLCJzb3VyY2VzQ29udGVudCI6WyIjISAvdXNyL2Jpbi9lbnYgbm9kZVxyXG4vKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuaW1wb3J0ICogYXMgY2xpdXRpbCBmcm9tICcuL2NsaS11dGlsJztcclxuaW1wb3J0IExhdW5jaGVyIGZyb20gJy4vbGF1bmNoZXInO1xyXG5pbXBvcnQgUmVwb3J0QWdncmVnYXRvciBmcm9tICcuLi9yZXBvcnRlci9SZXBvcnRBZ2dyZWdhdG9yJztcclxuXHJcbnByb2Nlc3Mub24oJ1NJR0lOVCcsIGhhbmRsZVNpZ0ludCk7XHJcbnByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgZXJyb3IgPT4ge1xyXG4gICAgY29uc29sZS5lcnJvcigndW5jYXVnaHRFeGNlcHRpb24nLCBlcnJvcik7XHJcbn0pO1xyXG5cclxucHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgZXJyb3IgPT4ge1xyXG4gICAgY29uc29sZS5lcnJvcigndW5oYW5kbGVkUmVqZWN0aW9uJywgZXJyb3IpO1xyXG59KTtcclxuXHJcbi8vIHBhcnNlIGNvbW1hbmQgbGluZSBhcmd1bWVudHNcclxuY29uc3QgYXJndiA9IHJlcXVpcmUoJ21pbmltaXN0JykocHJvY2Vzcy5hcmd2LnNsaWNlKDIpKTtcclxuXHJcbmlmIChhcmd2LnYgfHwgYXJndi52ZXJzaW9uKSB7XHJcbiAgICBjb25zb2xlLmxvZyhyZXF1aXJlKCcuLi8uLi9wYWNrYWdlLmpzb24nKS52ZXJzaW9uKTtcclxuICAgIHByb2Nlc3MuZXhpdCgwKTtcclxufSBlbHNlIGlmICh0eXBlb2YoYXJndi5fWzBdKSA9PT0gJ3VuZGVmaW5lZCcgfHwgYXJndi5oZWxwKSB7XHJcbiAgICBwcmludFVzYWdlKCk7XHJcbiAgICBwcm9jZXNzLmV4aXQoMSk7XHJcbn1cclxuXHJcbmlmIChhcmd2LmQgfHwgYXJndi5kZWxheSkge1xyXG4gICAgY29uc3QgZGVsYXkgPSBhcmd2LmQgfHwgYXJndi5kZWxheTtcclxuICAgIGlmICghKHBhcnNlSW50KGRlbGF5KSA+IDApKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkludmFsaWQgYXJndW1lbnQgLSAnZGVsYXknIHNob3VsZCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIuXCIpO1xyXG4gICAgICAgIHByaW50VXNhZ2UoKTtcclxuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IHRhcmdldEZpbGUgPSBjbGl1dGlsLnByb2Nlc3NUYXJnZXRQYXRoKGFyZ3YuX1swXSk7XHJcbmlmICh0YXJnZXRGaWxlID09IG51bGwpIHtcclxuICAgIHByaW50VXNhZ2UoKTtcclxuICAgIHByb2Nlc3MuZXhpdCgxKTtcclxufVxyXG5cclxuY29uc3QgY29uZmlnID0gY2xpdXRpbC5nZXRDb25maWd1cmF0aW9ucyh0YXJnZXRGaWxlLCBhcmd2KTtcclxuXHJcbmNsaXV0aWwuZ2VuZXJhdGVUZXN0T3B0aW9ucyhjb25maWcsIGFyZ3YpLnRoZW4oXHJcbiAgICAob3B0aW9ucykgPT4ge1xyXG4gICAgICAgIHByZXBhcmVBbmRTdGFydFRoZVRlc3Qob3B0aW9ucykudGhlbihcclxuICAgICAgICAgICAgKGNvZGUpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdEb25lIScpO1xyXG4gICAgICAgICAgICAgICAgcHJvY2Vzcy5leGl0KGNvZGUpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignVGVzdCBmYWlsZWQ6ICcsIGUpO1xyXG4gICAgICAgICAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH0sXHJcbiAgICAoZSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1Rlc3QgZmFpbGVkIG9uIGdlbmVyYXRlIHN0YXRlOiAnLCBlKTtcclxuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XHJcbiAgICB9XHJcbik7XHJcblxyXG5hc3luYyBmdW5jdGlvbiBwcmVwYXJlQW5kU3RhcnRUaGVUZXN0KG9wdGlvbnMpIHtcclxuICAgIGlmIChvcHRpb25zLmZyYW1ld29yayA9PT0gJ294eWdlbicgJiYgKCFvcHRpb25zLnN1aXRlcyB8fCAhQXJyYXkuaXNBcnJheShvcHRpb25zLnN1aXRlcykpKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3Qgc3RhcnQgdGhlIHRlc3QgLSBubyBzdWl0ZXMgYXJlIHNwZWNpZmllZC4nKTtcclxuICAgIH1cclxuICAgIGxldCBjYXBzQXJyID0gb3B0aW9ucy5jYXBhYmlsaXRpZXMgfHwgW3t9XTtcclxuICAgIC8vIGNoZWNrIGlmIGNhcGFiaWxpdGllcyBvYmplY3QgaXMgYW4gYXJyYXkgb3IgYSBoYXNodGFibGVcclxuICAgIGlmICghKGNhcHNBcnIgaW5zdGFuY2VvZiBBcnJheSkpIHtcclxuICAgICAgICBjYXBzQXJyID0gW2NhcHNBcnJdO1xyXG4gICAgfVxyXG4gICAgbGV0IGV4aXRDb2RlID0gMDtcclxuICAgIC8vIHN0YXJ0IGxhdW5jaGVyXHJcbiAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IHJlcG9ydGVyID0gbmV3IFJlcG9ydEFnZ3JlZ2F0b3Iob3B0aW9ucyk7XHJcbiAgICAgICAgY29uc3QgbGF1bmNoZXIgPSBuZXcgTGF1bmNoZXIob3B0aW9ucywgcmVwb3J0ZXIpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdUZXN0IHN0YXJ0ZWQuLi4nKTtcclxuICAgICAgICBhd2FpdCBsYXVuY2hlci5ydW4oY2Fwc0Fycik7XHJcbiAgICAgICAgcmVwb3J0ZXIuZ2VuZXJhdGVSZXBvcnRzKCk7XHJcbiAgICAgICAgZXhpdENvZGUgPSByZXBvcnRlci5nZXRFeGl0Q29kZSgpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdGYXRhbCBlcnJvcicsIGUpO1xyXG4gICAgICAgIGNvbnNvbGUudHJhY2UoKTtcclxuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZXhpdENvZGU7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGhhbmRsZVNpZ0ludCgpIHtcclxuICAgIC8vIGRlbGF5IHByb2Nlc3MgZXhpdCB0byBsZXQgT3h5Z2VuIHRvIHByb3Blcmx5IGRpc3Bvc2VcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gcHJvY2Vzcy5leGl0KDApLCAyMDAwKTtcclxufVxyXG5cclxuZnVuY3Rpb24gcHJpbnRVc2FnZSgpIHtcclxuICAgIGNvbnNvbGUubG9nKGBVc2FnZTogb3h5Z2VuIFtPUFRJT05TXS4uLiBGSUxFXHJcblxyXG5GSUxFIC0gUGF0aCB0byBhIHRlc3Qgc2NyaXB0ICguanMpIG9yIGEgcHJvamVjdCBjb25maWd1cmF0aW9uICguanNvbikgZmlsZS5cclxuXHJcbkdlbmVyYWwgb3B0aW9uczpcclxuICAtZCwgLS1kZWxheT1TRUNPTkRTICAgICAgICBEZWxheSBiZXR3ZWVuIGVhY2ggY29tbWFuZCBpbiBzZWNvbmRzLlxyXG4gICAgICAtLXJmPXtodG1sfHBkZnx4bWx8ZXhjZWx8anVuaXR8anNvbn0gIFJlcG9ydHMgZmlsZSBmb3JtYXQuIERlZmF1bHQgaXMgaHRtbC5cclxuICAgICAgLS1ybz1QQVRIICAgICAgICAgICAgICBPdXRwdXQgcGF0aCBmb3IgcmVwb3J0IGZpbGUuIElmIHNwZWNpZmllZCwgdGhlIHJlcG9ydFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgb3ZlcndyaXRlIGFueSBwcmV2aW91cyByZXBvcnRzLlxyXG4gIC1pLCAtLWl0ZXI9Q09VTlQgICAgICAgICAgIE51bWJlciBvZiB0aW1lcyB0byBydW4gdGhlIHRlc3QuIERlZmF1bHQgaXMgMS5cclxuICAtcCwgLS1wYXJhbT1GSUxFICAgICAgICAgICBQYXJhbWV0ZXJzIGZpbGUuIElmIG5vdCBzcGVjaWZpZWQgYW4gYXR0ZW1wdCB3aWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgbWFkZSB0byBsb2FkIHBhcmFtZXRlcnMgZnJvbSBhIGZpbGUgbmFtZWQgc2FtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIHRoZSB0ZXN0IHNjcmlwdCwgbG9jYXRlZCBpbiB0aGUgc2FtZSBkaXJlY3RvcnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGhhdmluZyBleHRlbnNpb24gLSB4bHN4LCB4bHMsIGNzdiwgb3IgdHh0LlxyXG4gICAgICAtLXBtPXtzZXF8cmFuZG9tfGFsbH0gIE9yZGVyIGluIHdoaWNoIHRvIHJlYWQgdGhlIHBhcmFtZXRlcnMgLSBzZXF1ZW50aWFsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmRvbSwgYWxsLiBEZWZhdWx0IGlzIHNlcS5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiAnc2VxJyBhbmQgJ3JhbmRvbScgbW9kZXMgdGVzdCB3aWxsIHJ1biBleGFjdCBudW1iZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aW1lcyBzcGVjaWZpZWQgd2l0aCB0aGUgLWkgb3B0aW9uLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluICdhbGwnIG1vZGUsIGFsbCBhdmFpbGFibGUgcGFyYW1ldGVycyB3aWxsIGJlIHJlYWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXF1ZW50aWFsbHkuIFRoaXMgb3B0aW9uIGlzIG11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWkgb3B0aW9uLlxyXG4gICAgICAtLWRiZ3BvcnQ9UE9SVCAgICAgICAgIERlYnVnZ2VyIHBvcnQuXHJcbiAgICAgIC0tc3VpdGVzICAgICAgICAgICAgICAgRmlsdGVyIG91dCBzdWl0ZXMgYnkgbmFtZVxyXG4gIC1oLCAtLWhlbHAgICAgICAgICAgICAgICAgIERpc3BsYXkgdGhpcyBpbmZvcm1hdGlvbiBhbmQgZXhpdC5cclxuICAtdiwgLS12ZXJzaW9uICAgICAgICAgICAgICBEaXNwbGF5IHZlcnNpb24gaW5mb3JtYXRpb24gYW5kIGV4aXQuXHJcblxyXG5XZWIgdGVzdCBvcHRpb25zOlxyXG4gIC1iLCAtLWJyb3dzZXI9e2Nocm9tZXxpZXxzYWZhcml8ZmlyZWZveH0gIEJyb3dzZXIgbmFtZS4gRGVmYXVsdCBpcyBjaHJvbWUuXHJcbiAgLXMsIC0tc2VydmVyPVNFUlZFUl9VUkwgICAgU2VsZW5pdW0gaHViIFVSTC4gRGVmYXVsdCBpcyBodHRwOi8vbG9jYWxob3N0OjQ0NDQvd2QvaHViLlxyXG4gICAgICAtLXJlb3Blbj17dHJ1ZXxmYWxzZX0gIFJlb3BlbiBicm93c2VyIG9uIGVhY2ggaXRlcmF0aW9uLiBEZWZhdWx0IGlzIGZhbHNlLlxyXG4gICAgICBcclxuTW9iaWxlIHRlc3Qgb3B0aW9uczpcclxuICAgIC1zLCAtLXNlcnZlcj1TRVJWRVJfVVJMICBBcHBpdW0gc2VydmVyIFVSTC4gRGVmYXVsdCBpcyBodHRwOi8vbG9jYWxob3N0OjQ3MjMvd2QvaHViLmApO1xyXG59Il19
@@ -53,6 +53,7 @@ const DEFAULT_HTTP_OPTIONS = {
53
53
  },
54
54
  dnsLookupIpVersion: 'ipv4'
55
55
  };
56
+ const CONTENT_TYPE_HEADER = 'content-type';
56
57
 
57
58
  class HttpModule extends _OxygenModule.default {
58
59
  constructor(options, context, rs, logger, modules, services) {
@@ -444,7 +445,7 @@ class HttpModule extends _OxygenModule.default {
444
445
  decomp.on('data', data => {
445
446
  result.body = data.toString();
446
447
 
447
- if (result.headers['content-type'].includes('application/json')) {
448
+ if (result.headers[CONTENT_TYPE_HEADER] && result.headers[CONTENT_TYPE_HEADER].includes('application/json')) {
448
449
  try {
449
450
  result.body = JSON.parse(result.body);
450
451
  } catch (e) {// if parsing fails just return the original string
@@ -456,7 +457,7 @@ class HttpModule extends _OxygenModule.default {
456
457
  });
457
458
  })();
458
459
  } else {
459
- if (result.headers['content-type'].includes('application/json')) {
460
+ if (result.headers[CONTENT_TYPE_HEADER] && result.headers[CONTENT_TYPE_HEADER].includes('application/json')) {
460
461
  try {
461
462
  result.body = JSON.parse(result.body);
462
463
  } catch (e) {// if parsing fails just return the original string
@@ -518,4 +519,4 @@ class HttpModule extends _OxygenModule.default {
518
519
  }
519
520
 
520
521
  exports.default = HttpModule;
521
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1odHRwLmpzIl0sIm5hbWVzIjpbIk1PRFVMRV9OQU1FIiwiUkVTUE9OU0VfVElNRU9VVCIsIkRBRkFVTFRfSFRUUDIiLCJERUZBVUxUX0hUVFBfT1BUSU9OUyIsImRlY29tcHJlc3MiLCJyZXNwb25zZVR5cGUiLCJ0aW1lb3V0IiwibG9va3VwIiwiY29ubmVjdCIsInNlY3VyZUNvbm5lY3QiLCJzb2NrZXQiLCJzZW5kIiwicmVzcG9uc2UiLCJodHRwMiIsImh0dHBzIiwicmVqZWN0VW5hdXRob3JpemVkIiwiZG5zTG9va3VwSXBWZXJzaW9uIiwiSHR0cE1vZHVsZSIsIk94eWdlbk1vZHVsZSIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsImNvbnRleHQiLCJycyIsImxvZ2dlciIsIm1vZHVsZXMiLCJzZXJ2aWNlcyIsIl9hbHdheXNJbml0aWFsaXplZCIsIl9sYXN0UmVzcG9uc2UiLCJfYmFzZVVybCIsIl91c2VySHR0cE9wdGlvbnMiLCJfaXNJbml0aWFsaXplZCIsIm5hbWUiLCJzZXRPcHRpb25zIiwib3B0cyIsImRlZmxhdGVSYXciLCJzZXRQcm94eSIsInVybCIsImJvb3RzdHJhcCIsInJlcXVpcmUiLCJwYXJzZSIsInBhcnNlZFVybCIsImhvc3RuYW1lIiwiT3hFcnJvciIsImVyckhlbHBlciIsImVycm9yQ29kZSIsIkhUVFBfRVJST1IiLCJwb3J0IiwicHJvdG9jb2wiLCJnbG9iYWwiLCJHTE9CQUxfQUdFTlQiLCJIVFRQX1BST1hZIiwiZ2V0IiwiaGVhZGVycyIsImh0dHBPcHRzIiwibWV0aG9kIiwiX2h0dHBSZXF1ZXN0U3luYyIsInBvc3QiLCJkYXRhIiwicmVzb2x2ZWREYXRhIiwiX3Jlc29sdmVEYXRhIiwicHV0IiwicGF0Y2giLCJkZWxldGUiLCJnZXRSZXNwb25zZSIsImdldFJlc3BvbnNlQm9keSIsImJvZHkiLCJnZXRSZXNwb25zZUhlYWRlcnMiLCJnZXRSZXNwb25zZVVybCIsImFzc2VydFRleHQiLCJwYXR0ZXJuIiwiQVNTRVJUX0VSUk9SIiwicmVzcENvbnRlbnQiLCJKU09OIiwic3RyaW5naWZ5IiwibW9kVXRpbHMiLCJtYXRjaFBhdHRlcm4iLCJhc3NlcnRSZXNwb25zZVRpbWUiLCJtYXhUaW1lIiwiRXJyb3IiLCJhc3NlcnRIZWFkZXIiLCJoZWFkZXJOYW1lIiwiaGVhZGVyVmFsdWVQYXR0ZXJuIiwibGVuZ3RoIiwidG9Mb3dlckNhc2UiLCJhY3R1YWxIZWFkZXJWYWx1ZSIsImFzc2VydENvb2tpZSIsImNvb2tpZU5hbWUiLCJjb29raWVWYWx1ZVBhdHRlcm4iLCJhc3NlcnRTdGF0dXMiLCJjb2RlTGlzdCIsIkFycmF5IiwiaXNBcnJheSIsInN0YXR1c0NvZGUiLCJpbmNsdWRlcyIsImFzc2VydFN0YXR1c09rIiwidHJhbnNhY3Rpb24iLCJfbGFzdFRyYW5zYWN0aW9uTmFtZSIsImRhdGFSZXNvbHZlciIsIk9iamVjdCIsImFzc2VydENpcmN1bGFyIiwianNvbiIsInJlc3VsdCIsInpsaWIiLCJkZWNvbXAiLCJjcmVhdGVJbmZsYXRlUmF3Iiwid3JpdGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsIm9uIiwidG9TdHJpbmciLCJlIiwiZXJyb3JNZXNzYWdlIiwibWVzc2FnZSIsInN0YXR1c01lc3NhZ2UiLCJyYXdCb2R5IiwiaHR0cFZlcnNpb24iLCJ1cGdyYWRlIiwidGltaW5ncyIsInJlcXVlc3RVcmwiLCJyZWRpcmVjdFVybHMiLCJpc0Zyb21DYWNoZSIsImlwIiwicmV0cnlDb3VudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBYUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFqQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQU9BLE1BQU1BLFdBQVcsR0FBRyxNQUFwQjtBQUNBLE1BQU1DLGdCQUFnQixHQUFHLE9BQU8sRUFBaEMsQyxDQUFzQzs7QUFDdEMsTUFBTUMsYUFBYSxHQUFHLEtBQXRC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QUFBLE1BQU0sRUFBRStDLE1BQU0sQ0FBQy9DLE1BTFY7QUFNTHNDLFFBQUFBLFVBQVUsRUFBRVMsTUFBTSxDQUFDVCxVQU5kO0FBT0xzQixRQUFBQSxhQUFhLEVBQUViLE1BQU0sQ0FBQ2EsYUFQakI7QUFRTEksUUFBQUEsT0FBTyxFQUFFakIsTUFBTSxDQUFDaUIsT0FSWDtBQVNMQyxRQUFBQSxVQUFVLEVBQUVsQixNQUFNLENBQUNrQixVQVRkO0FBVUxDLFFBQUFBLFlBQVksRUFBRW5CLE1BQU0sQ0FBQ21CLFlBVmhCO0FBV0xDLFFBQUFBLFdBQVcsRUFBRXBCLE1BQU0sQ0FBQ29CLFdBWGY7QUFZTEMsUUFBQUEsRUFBRSxFQUFFckIsTUFBTSxDQUFDcUIsRUFaTjtBQWFMQyxRQUFBQSxVQUFVLEVBQUV0QixNQUFNLENBQUNzQixVQWJkO0FBY0wxRCxRQUFBQSxJQUFJLEVBQUVvQyxNQUFNLENBQUNwQztBQWRSLE9BQVQ7QUFnQkg7O0FBRUQsV0FBT29DLE1BQVA7QUFDSDs7QUF6YWdEIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcblxyXG4vKipcclxuICogQG5hbWUgaHR0cFxyXG4gKiBAZGVzY3JpcHRpb24gUHJvdmlkZXMgbWV0aG9kcyBmb3Igd29ya2luZyB3aXRoIEhUVFAoUylcclxuICovXHJcbmltcG9ydCBnb3QgZnJvbSAnZ290JztcclxuaW1wb3J0IE94eWdlbk1vZHVsZSBmcm9tICcuLi9jb3JlL094eWdlbk1vZHVsZSc7XHJcbmltcG9ydCBPeEVycm9yIGZyb20gJy4uL2Vycm9ycy9PeHlnZW5FcnJvcic7XHJcbmltcG9ydCBlcnJIZWxwZXIgZnJvbSAnLi4vZXJyb3JzL2hlbHBlcic7XHJcbmltcG9ydCBtb2RVdGlscyBmcm9tICcuL3V0aWxzJztcclxuXHJcbmNvbnN0IE1PRFVMRV9OQU1FID0gJ2h0dHAnO1xyXG5jb25zdCBSRVNQT05TRV9USU1FT1VUID0gMTAwMCAqIDYwOyAgIC8vIGluIG1zXHJcbmNvbnN0IERBRkFVTFRfSFRUUDIgPSBmYWxzZTtcclxuY29uc3QgREVGQVVMVF9IVFRQX09QVElPTlMgPSB7XHJcbiAgICBkZWNvbXByZXNzOiB0cnVlLFxyXG4gICAgcmVzcG9uc2VUeXBlOiAndGV4dCcsXHJcbiAgICB0aW1lb3V0OiB7XHJcbiAgICAgICAgbG9va3VwOiAxMDAwLFxyXG4gICAgICAgIGNvbm5lY3Q6IDUwMCxcclxuICAgICAgICBzZWN1cmVDb25uZWN0OiA1MDAsXHJcbiAgICAgICAgc29ja2V0OiAxMDAwMDAsXHJcbiAgICAgICAgc2VuZDogMTAwMDAwLFxyXG4gICAgICAgIHJlc3BvbnNlOiBSRVNQT05TRV9USU1FT1VUXHJcbiAgICB9LFxyXG4gICAgaHR0cDI6IERBRkFVTFRfSFRUUDIsXHJcbiAgICBodHRwczoge1xyXG4gICAgICAgIHJlamVjdFVuYXV0aG9yaXplZDogZmFsc2VcclxuICAgIH0sXHJcbiAgICBkbnNMb29rdXBJcFZlcnNpb246ICdpcHY0J1xyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgSHR0cE1vZHVsZSBleHRlbmRzIE94eWdlbk1vZHVsZSB7XHJcbiAgICBjb25zdHJ1Y3RvcihvcHRpb25zLCBjb250ZXh0LCBycywgbG9nZ2VyLCBtb2R1bGVzLCBzZXJ2aWNlcykge1xyXG4gICAgICAgIHN1cGVyKG9wdGlvbnMsIGNvbnRleHQsIHJzLCBsb2dnZXIsIG1vZHVsZXMsIHNlcnZpY2VzKTtcclxuICAgICAgICB0aGlzLl9hbHdheXNJbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fbGFzdFJlc3BvbnNlID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9iYXNlVXJsID0gbnVsbDtcclxuICAgICAgICB0aGlzLl91c2VySHR0cE9wdGlvbnMgPSB7fTtcclxuICAgICAgICAvLyBwcmUtaW5pdGlhbGl6ZSB0aGUgbW9kdWxlXHJcbiAgICAgICAgdGhpcy5faXNJbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLypcclxuICAgICAqIEBzdW1tYXJ5IEdldHMgbW9kdWxlIG5hbWVcclxuICAgICAqIEBmdW5jdGlvbiBuYW1lXHJcbiAgICAgKiBAcmV0dXJuIHtTdHJpbmd9IENvbnN0YW50IHZhbHVlIFwiaHR0cFwiLlxyXG4gICAgICovXHJcbiAgICBnZXQgbmFtZSgpIHtcclxuICAgICAgICByZXR1cm4gTU9EVUxFX05BTUU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBTZXRzIHVzZXIgZGVmaW5lZCBIVFRQIG9wdGlvbnMgKHN1Y2ggYXMgcHJveHksIGRlY29tcHJlc3MgYW5kIGV0Yy4pXHJcbiAgICAgKiBAZnVuY3Rpb24gc2V0T3B0aW9uc1xyXG4gICAgICogQHBhcmFtIHtPYmplY3R9IG9wdHMgLSBIVFRQIHJlcXVlc3Qgb3B0aW9ucyBvYmplY3QsIHNlZSBbUmVxdWVzdCBPcHRpb25zXShodHRwczovL2dpdGh1Yi5jb20vc2luZHJlc29yaHVzL2dvdC9ibG9iL21haW4vZG9jdW1lbnRhdGlvbi8yLW9wdGlvbnMubWQpLiBcclxuICAgICAqIEluIGFkZGl0aW9uIHRvIHRoZSBvcHRpb25zIGxpc3RlZCBpbiB0aGUgbGlua2VkIGRvY3VtZW50LCAnZGVmbGF0ZVJhdycgb3B0aW9uIGNhbiBiZSB1c2VkIHdoZW4gc2VydmVyIHJldHVybnMgRGVmbGF0ZS1jb21wcmVzc2VkIHN0cmVhbSB3aXRob3V0IGhlYWRlcnMuXHJcbiAgICAgKi9cclxuICAgIHNldE9wdGlvbnMob3B0cykge1xyXG4gICAgICAgIHRoaXMuX3VzZXJIdHRwT3B0aW9ucyA9IG9wdHM7XHJcbiAgICAgICAgaWYgKG9wdHMuZGVmbGF0ZVJhdykge1xyXG4gICAgICAgICAgICB0aGlzLl91c2VySHR0cE9wdGlvbnMuZGVjb21wcmVzcyA9IGZhbHNlOyAgICAgLy8gZGVjb21wcmVzcz10cnVlIGluIGRlZmF1bHQgb3B0aW9ucyBzbyB3ZSBvdmVycmlkZSBpdFxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFNldHMgcHJveHkgdXJsIHRvIGJlIHVzZWQgZm9yIGNvbm5lY3Rpb25zIHdpdGggdGhlIHNlcnZpY2UuXHJcbiAgICAgKiBAZnVuY3Rpb24gc2V0UHJveHlcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSB1cmwgLSBQcm94eSBzZXJ2ZXIgVVJMLiBOb3QgcGFzc2luZyB0aGlzIGFyZ3VtZW50IHdpbGwgcmVzZXQgdGhlIHByb3h5IHNldHRpbmdzLlxyXG4gICAgICovXHJcbiAgICBzZXRQcm94eSh1cmwpIHtcclxuICAgICAgICBpZiAodXJsKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHtcclxuICAgICAgICAgICAgICAgIGJvb3RzdHJhcFxyXG4gICAgICAgICAgICB9ID0gcmVxdWlyZSgnZ2xvYmFsLWFnZW50Jyk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCB7IHBhcnNlIH0gPSByZXF1aXJlKCd1cmwnKTtcclxuICAgICAgICAgICAgY29uc3QgcGFyc2VkVXJsID0gcGFyc2UodXJsKTtcclxuXHJcbiAgICAgICAgICAgIGlmICghcGFyc2VkVXJsLmhvc3RuYW1lKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLkhUVFBfRVJST1IsICdIb3N0bmFtZSBpbiB1bmRlZmluZWQnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIXBhcnNlZFVybC5wb3J0KSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLkhUVFBfRVJST1IsICdQb3J0IGluIHVuZGVmaW5lZCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghcGFyc2VkVXJsLnByb3RvY29sKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLkhUVFBfRVJST1IsICdQcm90b2NvbCBpbiB1bmRlZmluZWQnKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgYm9vdHN0cmFwKCk7XHJcbiAgICAgICAgICAgIGdsb2JhbC5HTE9CQUxfQUdFTlQuSFRUUF9QUk9YWSA9IHVybDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBnbG9iYWwuR0xPQkFMX0FHRU5ULkhUVFBfUFJPWFkgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBQZXJmb3JtcyBIVFRQIEdFVFxyXG4gICAgICogQGZ1bmN0aW9uIGdldFxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHVybCAtIFVSTC5cclxuICAgICAqIEBwYXJhbSB7T2JqZWN0PX0gaGVhZGVycyAtIEhUVFAgaGVhZGVycy5cclxuICAgICAqIEByZXR1cm4ge09iamVjdH0gUmVzcG9uc2Ugb2JqZWN0LlxyXG4gICAgICogQGV4YW1wbGUgPGNhcHRpb24+W2phdmFzY3JpcHRdIFVzYWdlIGV4YW1wbGU8L2NhcHRpb24+XHJcbiAgICAgKiAvLyBCYXNpYyB1c2FnZSBleGFtcGxlOlxyXG4gICAgICogdmFyIHJlc3BvbnNlID0gaHR0cC5nZXQoXHJcbiAgICAgKiAnaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy9veHlnZW5ocS9veHlnZW4taWRlL3JlbGVhc2VzJywgXHJcbiAgICAgKiB7XHJcbiAgICAgKiAgICdBY2NlcHQtRW5jb2RpbmcnOiAnZ3ppcCwgZGVmbGF0ZScsXHJcbiAgICAgKiAgICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdpbjY0OyB4NjQ7IHJ2Ojg2LjApIEdlY2tvLzIwMTAwMTAxIEZpcmVmb3gvODYuMCdcclxuICAgICAqIH0pO1xyXG4gICAgICogbG9nLmluZm8ocmVzcG9uc2UuYm9keSk7XHJcbiAgICAgKlxyXG4gICAgICogLy8gSWYgc2VydmVyIHJldHVybnMgRGVmbGF0ZS1jb21wcmVzc2VkIHN0cmVhbSB3aXRob3V0IGhlYWRlcnMsIGBkZWZsYXRlUmF3YCBjYW4gYmUgdXNlZCB0byBkZWNvbXByZXNzIHRoZSBjb250ZW50LlxyXG4gICAgICogaHR0cC5zZXRPcHRpb25zKHtcclxuICAgICAqICAgZGVmbGF0ZVJhdzogdHJ1ZVxyXG4gICAgICogfSk7XHJcbiAgICAgKiB2YXIgcmVzcG9uc2UgPSBodHRwLmdldCgnaHR0cHM6Ly9GT08uQkFSJyk7XHJcbiAgICAgKiBsb2cuaW5mbyhyZXNwb25zZS5ib2R5KTtcclxuICAgICAqL1xyXG4gICAgYXN5bmMgZ2V0KHVybCwgaGVhZGVycykge1xyXG4gICAgICAgIGNvbnN0IGh0dHBPcHRzID0ge1xyXG4gICAgICAgICAgICAuLi5ERUZBVUxUX0hUVFBfT1BUSU9OUyxcclxuICAgICAgICAgICAgLi4udGhpcy5fdXNlckh0dHBPcHRpb25zIHx8IHt9LFxyXG4gICAgICAgICAgICB1cmw6IHVybCxcclxuICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcclxuICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyB8fCB7fVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX2h0dHBSZXF1ZXN0U3luYyhodHRwT3B0cyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBQZXJmb3JtcyBIVFRQIFBPU1RcclxuICAgICAqIEBmdW5jdGlvbiBwb3N0XHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gdXJsIC0gVVJMLlxyXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGRhdGEgLSBEYXRhLlxyXG4gICAgICogQHBhcmFtIHtPYmplY3Q9fSBoZWFkZXJzIC0gSFRUUCBoZWFkZXJzLlxyXG4gICAgICogQHJldHVybiB7T2JqZWN0fSBSZXNwb25zZSBvYmplY3QuXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIHBvc3QodXJsLCBkYXRhLCBoZWFkZXJzKSB7XHJcbiAgICAgICAgY29uc3QgcmVzb2x2ZWREYXRhID0gdGhpcy5fcmVzb2x2ZURhdGEoZGF0YSk7XHJcblxyXG4gICAgICAgIGNvbnN0IGh0dHBPcHRzID0ge1xyXG4gICAgICAgICAgICAuLi5ERUZBVUxUX0hUVFBfT1BUSU9OUyxcclxuICAgICAgICAgICAgLi4udGhpcy5fdXNlckh0dHBPcHRpb25zIHx8IHt9LFxyXG4gICAgICAgICAgICB1cmw6IHVybCxcclxuICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCcsXHJcbiAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMgfHwge30sXHJcbiAgICAgICAgICAgIC4uLnJlc29sdmVkRGF0YVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX2h0dHBSZXF1ZXN0U3luYyhodHRwT3B0cyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBQZXJmb3JtcyBIVFRQIFBVVFxyXG4gICAgICogQGZ1bmN0aW9uIHB1dFxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHVybCAtIFVSTC5cclxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhIC0gRGF0YS5cclxuICAgICAqIEBwYXJhbSB7T2JqZWN0PX0gaGVhZGVycyAtIEhUVFAgaGVhZGVycy5cclxuICAgICAqIEByZXR1cm4ge09iamVjdH0gUmVzcG9uc2Ugb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBhc3luYyBwdXQodXJsLCBkYXRhLCBoZWFkZXJzKSB7XHJcbiAgICAgICAgY29uc3QgcmVzb2x2ZWREYXRhID0gdGhpcy5fcmVzb2x2ZURhdGEoZGF0YSk7XHJcblxyXG4gICAgICAgIGNvbnN0IGh0dHBPcHRzID0ge1xyXG4gICAgICAgICAgICAuLi5ERUZBVUxUX0hUVFBfT1BUSU9OUyxcclxuICAgICAgICAgICAgLi4udGhpcy5fdXNlckh0dHBPcHRpb25zIHx8IHt9LFxyXG4gICAgICAgICAgICB1cmw6IHVybCxcclxuICAgICAgICAgICAgbWV0aG9kOiAnUFVUJyxcclxuICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyB8fCB7fSxcclxuICAgICAgICAgICAgLi4ucmVzb2x2ZWREYXRhXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5faHR0cFJlcXVlc3RTeW5jKGh0dHBPcHRzKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFBlcmZvcm1zIEhUVFAgUEFUQ0hcclxuICAgICAqIEBmdW5jdGlvbiBwYXRjaFxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHVybCAtIFVSTC5cclxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhIC0gRGF0YS5cclxuICAgICAqIEBwYXJhbSB7T2JqZWN0PX0gaGVhZGVycyAtIEhUVFAgaGVhZGVycy5cclxuICAgICAqIEByZXR1cm4ge09iamVjdH0gUmVzcG9uc2Ugb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBhc3luYyBwYXRjaCh1cmwsIGRhdGEsIGhlYWRlcnMpIHtcclxuICAgICAgICBjb25zdCByZXNvbHZlZERhdGEgPSB0aGlzLl9yZXNvbHZlRGF0YShkYXRhKTtcclxuXHJcbiAgICAgICAgY29uc3QgaHR0cE9wdHMgPSB7XHJcbiAgICAgICAgICAgIC4uLkRFRkFVTFRfSFRUUF9PUFRJT05TLFxyXG4gICAgICAgICAgICAuLi50aGlzLl91c2VySHR0cE9wdGlvbnMgfHwge30sXHJcbiAgICAgICAgICAgIHVybDogdXJsLFxyXG4gICAgICAgICAgICBtZXRob2Q6ICdQQVRDSCcsXHJcbiAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMgfHwge30sXHJcbiAgICAgICAgICAgIC4uLnJlc29sdmVkRGF0YVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX2h0dHBSZXF1ZXN0U3luYyhodHRwT3B0cyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBQZXJmb3JtcyBIVFRQIERFTEVURVxyXG4gICAgICogQGZ1bmN0aW9uIGRlbGV0ZVxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHVybCAtIFVSTC5cclxuICAgICAqIEBwYXJhbSB7T2JqZWN0PX0gaGVhZGVycyAtIEhUVFAgaGVhZGVycy5cclxuICAgICAqIEBwYXJhbSB7T2JqZWN0fSBkYXRhIC0gRGF0YS5cclxuICAgICAqIEByZXR1cm4ge09iamVjdH0gUmVzcG9uc2Ugb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBhc3luYyBkZWxldGUodXJsLCBoZWFkZXJzLCBkYXRhKSB7XHJcbiAgICAgICAgY29uc3QgcmVzb2x2ZWREYXRhID0gdGhpcy5fcmVzb2x2ZURhdGEoZGF0YSk7XHJcbiAgICAgICAgY29uc3QgaHR0cE9wdHMgPSB7XHJcbiAgICAgICAgICAgIC4uLkRFRkFVTFRfSFRUUF9PUFRJT05TLFxyXG4gICAgICAgICAgICAuLi50aGlzLl91c2VySHR0cE9wdGlvbnMgfHwge30sXHJcbiAgICAgICAgICAgIHVybDogdXJsLFxyXG4gICAgICAgICAgICBtZXRob2Q6ICdERUxFVEUnLFxyXG4gICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzIHx8IHt9LFxyXG4gICAgICAgICAgICAuLi5yZXNvbHZlZERhdGFcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLl9odHRwUmVxdWVzdFN5bmMoaHR0cE9wdHMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgUmV0dXJucyBsYXN0IHJlc3BvbnNlIG9iamVjdFxyXG4gICAgICogQGZ1bmN0aW9uIGdldFJlc3BvbnNlXHJcbiAgICAgKiBAcmV0dXJuIHtPYmplY3R9IFJlc3BvbnNlIG9iamVjdC5cclxuICAgICAqL1xyXG4gICAgZ2V0UmVzcG9uc2UoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xhc3RSZXNwb25zZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFJldHVybnMgbGFzdCByZXNwb25zZSBib2R5XHJcbiAgICAgKiBAZnVuY3Rpb24gZ2V0UmVzcG9uc2VCb2R5XHJcbiAgICAgKiBAcmV0dXJuIHtTdHJpbmd9IFJlc3BvbnNlIGJvZHkuXHJcbiAgICAgKi9cclxuICAgIGdldFJlc3BvbnNlQm9keSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fbGFzdFJlc3BvbnNlICYmIHRoaXMuX2xhc3RSZXNwb25zZS5ib2R5ID8gdGhpcy5fbGFzdFJlc3BvbnNlLmJvZHkgOiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgUmV0dXJucyByZXNwb25zZSBoZWFkZXJzXHJcbiAgICAgKiBAZnVuY3Rpb24gZ2V0UmVzcG9uc2VIZWFkZXJzXHJcbiAgICAgKiBAcmV0dXJuIHtPYmplY3R9IFJlc3BvbnNlIGhlYWRlcnMuXHJcbiAgICAgKi9cclxuICAgIGdldFJlc3BvbnNlSGVhZGVycygpIHtcclxuICAgICAgICBpZiAoIXRoaXMuX2xhc3RSZXNwb25zZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2xhc3RSZXNwb25zZS5oZWFkZXJzO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgUmV0dXJucyByZXNwb25zZSBVUkxcclxuICAgICAqIEBmdW5jdGlvbiBnZXRSZXNwb25zZVVybFxyXG4gICAgICogQHJldHVybiB7U3RyaW5nfSBSZXNwb25zZSBVUkwuXHJcbiAgICAgKi9cclxuICAgIGdldFJlc3BvbnNlVXJsKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5fbGFzdFJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5fbGFzdFJlc3BvbnNlLnVybDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IEFzc2VydCB3aGV0aGVyIHRoZSBzcGVjaWZpZWQgcGF0dGVybiBpcyBwcmVzZW50IGluIHRoZSByZXNwb25zZSBib2R5LlxyXG4gICAgICogQGZ1bmN0aW9uIGFzc2VydFRleHRcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBwYXR0ZXJuIC0gUGF0dGVybiB0byBhc3NlcnQuXHJcbiAgICAgKi9cclxuICAgIGFzc2VydFRleHQocGF0dGVybikge1xyXG4gICAgICAgIGlmICghdGhpcy5fbGFzdFJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF0aGlzLl9sYXN0UmVzcG9uc2UuYm9keSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLkFTU0VSVF9FUlJPUiwgJ1Jlc3BvbnNlIGJvZHkgaXMgZW1wdHknKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgcmVzcENvbnRlbnQgPSB0eXBlb2YgdGhpcy5fbGFzdFJlc3BvbnNlLmJvZHkgPT09ICdzdHJpbmcnID8gdGhpcy5fbGFzdFJlc3BvbnNlLmJvZHkgOiBKU09OLnN0cmluZ2lmeSh0aGlzLl9sYXN0UmVzcG9uc2UuYm9keSk7XHJcbiAgICAgICAgaWYgKCFtb2RVdGlscy5tYXRjaFBhdHRlcm4ocmVzcENvbnRlbnQsIHBhdHRlcm4pKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuQVNTRVJUX0VSUk9SLCBgRXhwZWN0ZWQgSFRUUCByZXNwb25zZSBjb250ZW50IHRvIG1hdGNoOiBcIiR7cGF0dGVybn1cIiBidXQgZ290OiBcIiR7cmVzcENvbnRlbnR9XCJgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBBc3NlcnQgcmVzcG9uc2UgdGltZVxyXG4gICAgICogQGZ1bmN0aW9uIGFzc2VydFJlc3BvbnNlVGltZVxyXG4gICAgICogQHBhcmFtIHtOdW1iZXJ9IG1heFRpbWUgLSBNYXhpbXVtIHJlc3BvbnNlIHRpbWUgaW4gbWlsbGlzZWNvbmRzLlxyXG4gICAgICovXHJcbiAgICBhc3NlcnRSZXNwb25zZVRpbWUobWF4VGltZSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBBc3NlcnQgaWYgSFRUUCBoZWFkZXIgaXMgcHJlc2VudGVkIGluIHRoZSByZXNwb25zZVxyXG4gICAgICogQGZ1bmN0aW9uIGFzc2VydEhlYWRlclxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IGhlYWRlck5hbWUgLSBBIEhUVFAgaGVhZGVyIG5hbWUuXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZz19IGhlYWRlclZhbHVlUGF0dGVybiAtIEFuIG9wdGlvbmFsIEhUVFAgaGVhZGVyIHZhbHVlIHBhdHRlcm4uXHJcbiAgICAgKi9cclxuICAgIGFzc2VydEhlYWRlcihoZWFkZXJOYW1lLCBoZWFkZXJWYWx1ZVBhdHRlcm4gPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKCFoZWFkZXJOYW1lIHx8IHR5cGVvZiBoZWFkZXJOYW1lICE9PSAnc3RyaW5nJyB8fCBoZWFkZXJOYW1lLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaGVhZGVyTmFtZSA9IGhlYWRlck5hbWUudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBjb25zdCBoZWFkZXJzID0gdGhpcy5fbGFzdFJlc3BvbnNlLmhlYWRlcnM7XHJcbiAgICAgICAgaWYgKCFoZWFkZXJzW2hlYWRlck5hbWVdKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuQVNTRVJUX0VSUk9SLCAnRXhwZWN0ZWQgSFRUUCBoZWFkZXIgXCIke2hlYWRlck5hbWV9XCIgdG8gYmUgcHJlc2VudCcpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChoZWFkZXJWYWx1ZVBhdHRlcm4gJiYgdHlwZW9mIGhlYWRlclZhbHVlUGF0dGVybiA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgY29uc3QgYWN0dWFsSGVhZGVyVmFsdWUgPSBoZWFkZXJzW2hlYWRlck5hbWVdO1xyXG4gICAgICAgICAgICBpZiAoIW1vZFV0aWxzLm1hdGNoUGF0dGVybihhY3R1YWxIZWFkZXJWYWx1ZSwgaGVhZGVyVmFsdWVQYXR0ZXJuKSkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5BU1NFUlRfRVJST1IsIGBFeHBlY3RlZCBIVFRQIGhlYWRlciBcIiR7aGVhZGVyTmFtZX1cIiB2YWx1ZSB0byBtYXRjaDogXCIke2hlYWRlclZhbHVlUGF0dGVybn1cIiBidXQgZ290OiBcIiR7YWN0dWFsSGVhZGVyVmFsdWV9XCJgKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IEFzc2VydCBpZiBIVFRQIGNvb2tpZSBpcyBwcmVzZW50ZWQgaW4gdGhlIHJlc3BvbnNlXHJcbiAgICAgKiBAZnVuY3Rpb24gYXNzZXJ0Q29va2llXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gY29va2llTmFtZSAtIEEgSFRUUCBjb29raWUgbmFtZS5cclxuICAgICAqIEBwYXJhbSB7U3RyaW5nPX0gY29va2llVmFsdWVQYXR0ZXJuIC0gQW4gb3B0aW9uYWwgSFRUUCBjb29raWUgdmFsdWUgcGF0dGVybi5cclxuICAgICAqL1xyXG4gICAgYXNzZXJ0Q29va2llKGNvb2tpZU5hbWUsIGNvb2tpZVZhbHVlUGF0dGVybikge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTm90IGltcGxlbWVudGVkJyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBBc3NlcnQgdGhlIGxhc3QgSFRUUCByZXNwb25zZSdzIHN0YXR1cyBjb2RlXHJcbiAgICAgKiBAZnVuY3Rpb24gYXNzZXJ0U3RhdHVzXHJcbiAgICAgKiBAcGFyYW0ge051bWJlcnxBcnJheX0gY29kZUxpc3QgLSBBIHNpbmdsZSBzdGF0dXMgY29kZSBvciBhIGxpc3Qgb2YgY29kZXMuXHJcbiAgICAgKi9cclxuICAgIGFzc2VydFN0YXR1cyhjb2RlTGlzdCkge1xyXG4gICAgICAgIGlmICghdGhpcy5fbGFzdFJlc3BvbnNlIHx8ICFjb2RlTGlzdCkge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGlmIHdlIGdvdCBhIHNpbmdsZSB2YWx1ZSwgdGhlbiBjb252ZXJ0IGl0IHRvIGFuIGFycmF5XHJcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNvZGVMaXN0KSkge1xyXG4gICAgICAgICAgICBjb2RlTGlzdCA9IFtjb2RlTGlzdF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHN0YXR1c0NvZGUgPSB0aGlzLl9sYXN0UmVzcG9uc2Uuc3RhdHVzQ29kZTtcclxuICAgICAgICBpZiAoIWNvZGVMaXN0LmluY2x1ZGVzKHN0YXR1c0NvZGUpKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuQVNTRVJUX0VSUk9SLCBgRXhwZWN0ZWQgSFRUUCBzdGF0dXMgdG8gYmU6IFwiJHtjb2RlTGlzdH1cIiBidXQgZ290OiBcIiR7c3RhdHVzQ29kZX1cImApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IEFzc2VydCBIVFRQIDIwMCBPSyBzdGF0dXNcclxuICAgICAqIEBmdW5jdGlvbiBhc3NlcnRTdGF0dXNPa1xyXG4gICAgICovXHJcbiAgICBhc3NlcnRTdGF0dXNPaygpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5hc3NlcnRTdGF0dXMoMjAwKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IE9wZW5zIG5ldyB0cmFuc2FjdGlvbi5cclxuICAgICAqIEBkZXNjcmlwdGlvbiBUaGUgdHJhbnNhY3Rpb24gd2lsbCBwZXJzaXN0IHRpbGwgYSBuZXcgb25lIGlzIG9wZW5lZC4gVHJhbnNhY3Rpb24gbmFtZXMgbXVzdCBiZVxyXG4gICAgICogICAgICAgICAgICAgIHVuaXF1ZS5cclxuICAgICAqIEBmdW5jdGlvbiB0cmFuc2FjdGlvblxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgLSBUaGUgdHJhbnNhY3Rpb24gbmFtZS5cclxuICAgICAqL1xyXG4gICAgYXN5bmMgdHJhbnNhY3Rpb24obmFtZSkge1xyXG4gICAgICAgIGdsb2JhbC5fbGFzdFRyYW5zYWN0aW9uTmFtZSA9IG5hbWU7XHJcbiAgICB9XHJcblxyXG4gICAgX3Jlc29sdmVEYXRhKGRhdGEpIHtcclxuICAgICAgICBjb25zdCBkYXRhUmVzb2x2ZXIgPSB7fTtcclxuXHJcbiAgICAgICAgaWYgKGRhdGEgaW5zdGFuY2VvZiBPYmplY3QpIHtcclxuICAgICAgICAgICAgbW9kVXRpbHMuYXNzZXJ0Q2lyY3VsYXIoZGF0YSk7XHJcbiAgICAgICAgICAgIGRhdGFSZXNvbHZlci5qc29uID0gZGF0YTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBkYXRhUmVzb2x2ZXIuYm9keSA9IGRhdGE7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZGF0YVJlc29sdmVyO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIF9odHRwUmVxdWVzdFN5bmMoaHR0cE9wdHMpIHtcclxuICAgICAgICBsZXQgcmVzdWx0O1xyXG5cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICByZXN1bHQgPSBhd2FpdCBnb3QoaHR0cE9wdHMpO1xyXG4gICAgICAgICAgICBpZiAoaHR0cE9wdHMuZGVmbGF0ZVJhdyAmJiByZXN1bHQuaGVhZGVyc1snY29udGVudC1lbmNvZGluZyddID09PSAnZGVmbGF0ZScpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHpsaWIgPSByZXF1aXJlKCd6bGliJyk7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBkZWNvbXAgPSB6bGliLmNyZWF0ZUluZmxhdGVSYXcoKTtcclxuICAgICAgICAgICAgICAgIGRlY29tcC53cml0ZShyZXN1bHQuYm9keSk7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCAoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlY29tcC5vbignZGF0YScsIChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYm9keSA9IGRhdGEudG9TdHJpbmcoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuaGVhZGVyc1snY29udGVudC10eXBlJ10uaW5jbHVkZXMoJ2FwcGxpY2F0aW9uL2pzb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5ib2R5ID0gSlNPTi5wYXJzZShyZXN1bHQuYm9keSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBwYXJzaW5nIGZhaWxzIGp1c3QgcmV0dXJuIHRoZSBvcmlnaW5hbCBzdHJpbmdcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSkoKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuaGVhZGVyc1snY29udGVudC10eXBlJ10uaW5jbHVkZXMoJ2FwcGxpY2F0aW9uL2pzb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5ib2R5ID0gSlNPTi5wYXJzZShyZXN1bHQuYm9keSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBwYXJzaW5nIGZhaWxzIGp1c3QgcmV0dXJuIHRoZSBvcmlnaW5hbCBzdHJpbmdcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICByZXN1bHQgPSBlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gc3RvcmUgbGFzdCByZXNwb25zZSB0byBhbGxvdyBmdXJ0aGVyIGFzc2VydGlvbnMgYW5kIHZhbGlkYXRpb25zXHJcbiAgICAgICAgdGhpcy5fbGFzdFJlc3BvbnNlID0gcmVzdWx0O1xyXG5cclxuICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgRXJyb3IpIHtcclxuICAgICAgICAgICAgbGV0IGJvZHkgPSBudWxsO1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICByZXN1bHQucmVzcG9uc2UgJiZcclxuICAgICAgICAgICAgICAgIHJlc3VsdC5yZXNwb25zZS5ib2R5XHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgYm9keSA9IHJlc3VsdC5yZXNwb25zZS5ib2R5O1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkgPSBKU09OLnBhcnNlKGJvZHkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keSA9IHJlc3VsdC5yZXNwb25zZS5ib2R5O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmVzdWx0ID0ge1xyXG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiByZXN1bHQubWVzc2FnZSxcclxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHJlc3VsdC5yZXNwb25zZSA/IHJlc3VsdC5yZXNwb25zZS5oZWFkZXJzIDogbnVsbCxcclxuICAgICAgICAgICAgICAgIHN0YXR1c0NvZGU6IHJlc3VsdC5yZXNwb25zZSA/IHJlc3VsdC5yZXNwb25zZS5zdGF0dXNDb2RlIDogbnVsbCxcclxuICAgICAgICAgICAgICAgIHN0YXR1c01lc3NhZ2U6IHJlc3VsdC5yZXNwb25zZSA/IHJlc3VsdC5yZXNwb25zZS5zdGF0dXNNZXNzYWdlIDogbnVsbCxcclxuICAgICAgICAgICAgICAgIHJhd0JvZHk6IHJlc3VsdC5yZXNwb25zZSA/IHJlc3VsdC5yZXNwb25zZS5yYXdCb2R5IDogbnVsbCxcclxuICAgICAgICAgICAgICAgIGJvZHk6IGJvZHlcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXN1bHQgPSB7XHJcbiAgICAgICAgICAgICAgICBodHRwVmVyc2lvbjogcmVzdWx0Lmh0dHBWZXJzaW9uLFxyXG4gICAgICAgICAgICAgICAgaGVhZGVyczogcmVzdWx0LmhlYWRlcnMsXHJcbiAgICAgICAgICAgICAgICB1cGdyYWRlOiByZXN1bHQudXBncmFkZSxcclxuICAgICAgICAgICAgICAgIHVybDogcmVzdWx0LnVybCxcclxuICAgICAgICAgICAgICAgIG1ldGhvZDogcmVzdWx0Lm1ldGhvZCxcclxuICAgICAgICAgICAgICAgIHN0YXR1c0NvZGU6IHJlc3VsdC5zdGF0dXNDb2RlLFxyXG4gICAgICAgICAgICAgICAgc3RhdHVzTWVzc2FnZTogcmVzdWx0LnN0YXR1c01lc3NhZ2UsXHJcbiAgICAgICAgICAgICAgICB0aW1pbmdzOiByZXN1bHQudGltaW5ncyxcclxuICAgICAgICAgICAgICAgIHJlcXVlc3RVcmw6IHJlc3VsdC5yZXF1ZXN0VXJsLFxyXG4gICAgICAgICAgICAgICAgcmVkaXJlY3RVcmxzOiByZXN1bHQucmVkaXJlY3RVcmxzLFxyXG4gICAgICAgICAgICAgICAgaXNGcm9tQ2FjaGU6IHJlc3VsdC5pc0Zyb21DYWNoZSxcclxuICAgICAgICAgICAgICAgIGlwOiByZXN1bHQuaXAsXHJcbiAgICAgICAgICAgICAgICByZXRyeUNvdW50OiByZXN1bHQucmV0cnlDb3VudCxcclxuICAgICAgICAgICAgICAgIGJvZHk6IHJlc3VsdC5ib2R5XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG59Il19
522
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1odHRwLmpzIl0sIm5hbWVzIjpbIk1PRFVMRV9OQU1FIiwiUkVTUE9OU0VfVElNRU9VVCIsIkRBRkFVTFRfSFRUUDIiLCJERUZBVUxUX0hUVFBfT1BUSU9OUyIsImRlY29tcHJlc3MiLCJyZXNwb25zZVR5cGUiLCJ0aW1lb3V0IiwibG9va3VwIiwiY29ubmVjdCIsInNlY3VyZUNvbm5lY3QiLCJzb2NrZXQiLCJzZW5kIiwicmVzcG9uc2UiLCJodHRwMiIsImh0dHBzIiwicmVqZWN0VW5hdXRob3JpemVkIiwiZG5zTG9va3VwSXBWZXJzaW9uIiwiQ09OVEVOVF9UWVBFX0hFQURFUiIsIkh0dHBNb2R1bGUiLCJPeHlnZW5Nb2R1bGUiLCJjb25zdHJ1Y3RvciIsIm9wdGlvbnMiLCJjb250ZXh0IiwicnMiLCJsb2dnZXIiLCJtb2R1bGVzIiwic2VydmljZXMiLCJfYWx3YXlzSW5pdGlhbGl6ZWQiLCJfbGFzdFJlc3BvbnNlIiwiX2Jhc2VVcmwiLCJfdXNlckh0dHBPcHRpb25zIiwiX2lzSW5pdGlhbGl6ZWQiLCJuYW1lIiwic2V0T3B0aW9ucyIsIm9wdHMiLCJkZWZsYXRlUmF3Iiwic2V0UHJveHkiLCJ1cmwiLCJib290c3RyYXAiLCJyZXF1aXJlIiwicGFyc2UiLCJwYXJzZWRVcmwiLCJob3N0bmFtZSIsIk94RXJyb3IiLCJlcnJIZWxwZXIiLCJlcnJvckNvZGUiLCJIVFRQX0VSUk9SIiwicG9ydCIsInByb3RvY29sIiwiZ2xvYmFsIiwiR0xPQkFMX0FHRU5UIiwiSFRUUF9QUk9YWSIsImdldCIsImhlYWRlcnMiLCJodHRwT3B0cyIsIm1ldGhvZCIsIl9odHRwUmVxdWVzdFN5bmMiLCJwb3N0IiwiZGF0YSIsInJlc29sdmVkRGF0YSIsIl9yZXNvbHZlRGF0YSIsInB1dCIsInBhdGNoIiwiZGVsZXRlIiwiZ2V0UmVzcG9uc2UiLCJnZXRSZXNwb25zZUJvZHkiLCJib2R5IiwiZ2V0UmVzcG9uc2VIZWFkZXJzIiwiZ2V0UmVzcG9uc2VVcmwiLCJhc3NlcnRUZXh0IiwicGF0dGVybiIsIkFTU0VSVF9FUlJPUiIsInJlc3BDb250ZW50IiwiSlNPTiIsInN0cmluZ2lmeSIsIm1vZFV0aWxzIiwibWF0Y2hQYXR0ZXJuIiwiYXNzZXJ0UmVzcG9uc2VUaW1lIiwibWF4VGltZSIsIkVycm9yIiwiYXNzZXJ0SGVhZGVyIiwiaGVhZGVyTmFtZSIsImhlYWRlclZhbHVlUGF0dGVybiIsImxlbmd0aCIsInRvTG93ZXJDYXNlIiwiYWN0dWFsSGVhZGVyVmFsdWUiLCJhc3NlcnRDb29raWUiLCJjb29raWVOYW1lIiwiY29va2llVmFsdWVQYXR0ZXJuIiwiYXNzZXJ0U3RhdHVzIiwiY29kZUxpc3QiLCJBcnJheSIsImlzQXJyYXkiLCJzdGF0dXNDb2RlIiwiaW5jbHVkZXMiLCJhc3NlcnRTdGF0dXNPayIsInRyYW5zYWN0aW9uIiwiX2xhc3RUcmFuc2FjdGlvbk5hbWUiLCJkYXRhUmVzb2x2ZXIiLCJPYmplY3QiLCJhc3NlcnRDaXJjdWxhciIsImpzb24iLCJyZXN1bHQiLCJ6bGliIiwiZGVjb21wIiwiY3JlYXRlSW5mbGF0ZVJhdyIsIndyaXRlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJvbiIsInRvU3RyaW5nIiwiZSIsImVycm9yTWVzc2FnZSIsIm1lc3NhZ2UiLCJzdGF0dXNNZXNzYWdlIiwicmF3Qm9keSIsImh0dHBWZXJzaW9uIiwidXBncmFkZSIsInRpbWluZ3MiLCJyZXF1ZXN0VXJsIiwicmVkaXJlY3RVcmxzIiwiaXNGcm9tQ2FjaGUiLCJpcCIsInJldHJ5Q291bnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQWFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7O0FBakJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFPQSxNQUFNQSxXQUFXLEdBQUcsTUFBcEI7QUFDQSxNQUFNQyxnQkFBZ0IsR0FBRyxPQUFPLEVBQWhDLEMsQ0FBc0M7O0FBQ3RD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QUFFTGhFLFFBQUFBLE9BQU8sRUFBRWlELE1BQU0sQ0FBQ2pELE9BRlg7QUFHTGlFLFFBQUFBLE9BQU8sRUFBRWhCLE1BQU0sQ0FBQ2dCLE9BSFg7QUFJTGpGLFFBQUFBLEdBQUcsRUFBRWlFLE1BQU0sQ0FBQ2pFLEdBSlA7QUFLTGtCLFFBQUFBLE1BQU0sRUFBRStDLE1BQU0sQ0FBQy9DLE1BTFY7QUFNTHNDLFFBQUFBLFVBQVUsRUFBRVMsTUFBTSxDQUFDVCxVQU5kO0FBT0xzQixRQUFBQSxhQUFhLEVBQUViLE1BQU0sQ0FBQ2EsYUFQakI7QUFRTEksUUFBQUEsT0FBTyxFQUFFakIsTUFBTSxDQUFDaUIsT0FSWDtBQVNMQyxRQUFBQSxVQUFVLEVBQUVsQixNQUFNLENBQUNrQixVQVRkO0FBVUxDLFFBQUFBLFlBQVksRUFBRW5CLE1BQU0sQ0FBQ21CLFlBVmhCO0FBV0xDLFFBQUFBLFdBQVcsRUFBRXBCLE1BQU0sQ0FBQ29CLFdBWGY7QUFZTEMsUUFBQUEsRUFBRSxFQUFFckIsTUFBTSxDQUFDcUIsRUFaTjtBQWFMQyxRQUFBQSxVQUFVLEVBQUV0QixNQUFNLENBQUNzQixVQWJkO0FBY0wxRCxRQUFBQSxJQUFJLEVBQUVvQyxNQUFNLENBQUNwQztBQWRSLE9BQVQ7QUFnQkg7O0FBRUQsV0FBT29DLE1BQVA7QUFDSDs7QUF6YWdEIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcblxyXG4vKipcclxuICogQG5hbWUgaHR0cFxyXG4gKiBAZGVzY3JpcHRpb24gUHJvdmlkZXMgbWV0aG9kcyBmb3Igd29ya2luZyB3aXRoIEhUVFAoUylcclxuICovXHJcbmltcG9ydCBnb3QgZnJvbSAnZ290JztcclxuaW1wb3J0IE94eWdlbk1vZHVsZSBmcm9tICcuLi9jb3JlL094eWdlbk1vZHVsZSc7XHJcbmltcG9ydCBPeEVycm9yIGZyb20gJy4uL2Vycm9ycy9PeHlnZW5FcnJvcic7XHJcbmltcG9ydCBlcnJIZWxwZXIgZnJvbSAnLi4vZXJyb3JzL2hlbHBlcic7XHJcbmltcG9ydCBtb2RVdGlscyBmcm9tICcuL3V0aWxzJztcclxuXHJcbmNvbnN0IE1PRFVMRV9OQU1FID0gJ2h0dHAnO1xyXG5jb25zdCBSRVNQT05TRV9USU1FT1VUID0gMTAwMCAqIDYwOyAgIC8vIGluIG1zXHJcbmNvbnN0IERBRkFVTFRfSFRUUDIgPSBmYWxzZTtcclxuY29uc3QgREVGQVVMVF9IVFRQX09QVElPTlMgPSB7XHJcbiAgICBkZWNvbXByZXNzOiB0cnVlLFxyXG4gICAgcmVzcG9uc2VUeXBlOiAndGV4dCcsXHJcbiAgICB0aW1lb3V0OiB7XHJcbiAgICAgICAgbG9va3VwOiAxMDAwLFxyXG4gICAgICAgIGNvbm5lY3Q6IDUwMCxcclxuICAgICAgICBzZWN1cmVDb25uZWN0OiA1MDAsXHJcbiAgICAgICAgc29ja2V0OiAxMDAwMDAsXHJcbiAgICAgICAgc2VuZDogMTAwMDAwLFxyXG4gICAgICAgIHJlc3BvbnNlOiBSRVNQT05TRV9USU1FT1VUXHJcbiAgICB9LFxyXG4gICAgaHR0cDI6IERBRkFVTFRfSFRUUDIsXHJcbiAgICBodHRwczoge1xyXG4gICAgICAgIHJlamVjdFVuYXV0aG9yaXplZDogZmFsc2VcclxuICAgIH0sXHJcbiAgICBkbnNMb29rdXBJcFZlcnNpb246ICdpcHY0J1xyXG59O1xyXG5jb25zdCBDT05URU5UX1RZUEVfSEVBREVSID0gJ2NvbnRlbnQtdHlwZSc7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBIdHRwTW9kdWxlIGV4dGVuZHMgT3h5Z2VuTW9kdWxlIHtcclxuICAgIGNvbnN0cnVjdG9yKG9wdGlvbnMsIGNvbnRleHQsIHJzLCBsb2dnZXIsIG1vZHVsZXMsIHNlcnZpY2VzKSB7XHJcbiAgICAgICAgc3VwZXIob3B0aW9ucywgY29udGV4dCwgcnMsIGxvZ2dlciwgbW9kdWxlcywgc2VydmljZXMpO1xyXG4gICAgICAgIHRoaXMuX2Fsd2F5c0luaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLl9sYXN0UmVzcG9uc2UgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX2Jhc2VVcmwgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX3VzZXJIdHRwT3B0aW9ucyA9IHt9O1xyXG4gICAgICAgIC8vIHByZS1pbml0aWFsaXplIHRoZSBtb2R1bGVcclxuICAgICAgICB0aGlzLl9pc0luaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKlxyXG4gICAgICogQHN1bW1hcnkgR2V0cyBtb2R1bGUgbmFtZVxyXG4gICAgICogQGZ1bmN0aW9uIG5hbWVcclxuICAgICAqIEByZXR1cm4ge1N0cmluZ30gQ29uc3RhbnQgdmFsdWUgXCJodHRwXCIuXHJcbiAgICAgKi9cclxuICAgIGdldCBuYW1lKCkge1xyXG4gICAgICAgIHJldHVybiBNT0RVTEVfTkFNRTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFNldHMgdXNlciBkZWZpbmVkIEhUVFAgb3B0aW9ucyAoc3VjaCBhcyBwcm94eSwgZGVjb21wcmVzcyBhbmQgZXRjLilcclxuICAgICAqIEBmdW5jdGlvbiBzZXRPcHRpb25zXHJcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gb3B0cyAtIEhUVFAgcmVxdWVzdCBvcHRpb25zIG9iamVjdCwgc2VlIFtSZXF1ZXN0IE9wdGlvbnNdKGh0dHBzOi8vZ2l0aHViLmNvbS9zaW5kcmVzb3JodXMvZ290L2Jsb2IvbWFpbi9kb2N1bWVudGF0aW9uLzItb3B0aW9ucy5tZCkuIFxyXG4gICAgICogSW4gYWRkaXRpb24gdG8gdGhlIG9wdGlvbnMgbGlzdGVkIGluIHRoZSBsaW5rZWQgZG9jdW1lbnQsICdkZWZsYXRlUmF3JyBvcHRpb24gY2FuIGJlIHVzZWQgd2hlbiBzZXJ2ZXIgcmV0dXJucyBEZWZsYXRlLWNvbXByZXNzZWQgc3RyZWFtIHdpdGhvdXQgaGVhZGVycy5cclxuICAgICAqL1xyXG4gICAgc2V0T3B0aW9ucyhvcHRzKSB7XHJcbiAgICAgICAgdGhpcy5fdXNlckh0dHBPcHRpb25zID0gb3B0cztcclxuICAgICAgICBpZiAob3B0cy5kZWZsYXRlUmF3KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3VzZXJIdHRwT3B0aW9ucy5kZWNvbXByZXNzID0gZmFsc2U7ICAgICAvLyBkZWNvbXByZXNzPXRydWUgaW4gZGVmYXVsdCBvcHRpb25zIHNvIHdlIG92ZXJyaWRlIGl0XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgU2V0cyBwcm94eSB1cmwgdG8gYmUgdXNlZCBmb3IgY29ubmVjdGlvbnMgd2l0aCB0aGUgc2VydmljZS5cclxuICAgICAqIEBmdW5jdGlvbiBzZXRQcm94eVxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHVybCAtIFByb3h5IHNlcnZlciBVUkwuIE5vdCBwYXNzaW5nIHRoaXMgYXJndW1lbnQgd2lsbCByZXNldCB0aGUgcHJveHkgc2V0dGluZ3MuXHJcbiAgICAgKi9cclxuICAgIHNldFByb3h5KHVybCkge1xyXG4gICAgICAgIGlmICh1cmwpIHtcclxuICAgICAgICAgICAgY29uc3Qge1xyXG4gICAgICAgICAgICAgICAgYm9vdHN0cmFwXHJcbiAgICAgICAgICAgIH0gPSByZXF1aXJlKCdnbG9iYWwtYWdlbnQnKTtcclxuXHJcbiAgICAgICAgICAgIGNvbnN0IHsgcGFyc2UgfSA9IHJlcXVpcmUoJ3VybCcpO1xyXG4gICAgICAgICAgICBjb25zdCBwYXJzZWRVcmwgPSBwYXJzZSh1cmwpO1xyXG5cclxuICAgICAgICAgICAgaWYgKCFwYXJzZWRVcmwuaG9zdG5hbWUpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuSFRUUF9FUlJPUiwgJ0hvc3RuYW1lIGluIHVuZGVmaW5lZCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmICghcGFyc2VkVXJsLnBvcnQpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuSFRUUF9FUlJPUiwgJ1BvcnQgaW4gdW5kZWZpbmVkJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFwYXJzZWRVcmwucHJvdG9jb2wpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuSFRUUF9FUlJPUiwgJ1Byb3RvY29sIGluIHVuZGVmaW5lZCcpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBib290c3RyYXAoKTtcclxuICAgICAgICAgICAgZ2xvYmFsLkdMT0JBTF9BR0VOVC5IVFRQX1BST1hZID0gdXJsO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGdsb2JhbC5HTE9CQUxfQUdFTlQuSFRUUF9QUk9YWSA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFBlcmZvcm1zIEhUVFAgR0VUXHJcbiAgICAgKiBAZnVuY3Rpb24gZ2V0XHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gdXJsIC0gVVJMLlxyXG4gICAgICogQHBhcmFtIHtPYmplY3Q9fSBoZWFkZXJzIC0gSFRUUCBoZWFkZXJzLlxyXG4gICAgICogQHJldHVybiB7T2JqZWN0fSBSZXNwb25zZSBvYmplY3QuXHJcbiAgICAgKiBAZXhhbXBsZSA8Y2FwdGlvbj5bamF2YXNjcmlwdF0gVXNhZ2UgZXhhbXBsZTwvY2FwdGlvbj5cclxuICAgICAqIC8vIEJhc2ljIHVzYWdlIGV4YW1wbGU6XHJcbiAgICAgKiB2YXIgcmVzcG9uc2UgPSBodHRwLmdldChcclxuICAgICAqICdodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL294eWdlbmhxL294eWdlbi1pZGUvcmVsZWFzZXMnLCBcclxuICAgICAqIHtcclxuICAgICAqICAgJ0FjY2VwdC1FbmNvZGluZyc6ICdnemlwLCBkZWZsYXRlJyxcclxuICAgICAqICAgJ1VzZXItQWdlbnQnOiAnTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV2luNjQ7IHg2NDsgcnY6ODYuMCkgR2Vja28vMjAxMDAxMDEgRmlyZWZveC84Ni4wJ1xyXG4gICAgICogfSk7XHJcbiAgICAgKiBsb2cuaW5mbyhyZXNwb25zZS5ib2R5KTtcclxuICAgICAqXHJcbiAgICAgKiAvLyBJZiBzZXJ2ZXIgcmV0dXJucyBEZWZsYXRlLWNvbXByZXNzZWQgc3RyZWFtIHdpdGhvdXQgaGVhZGVycywgYGRlZmxhdGVSYXdgIGNhbiBiZSB1c2VkIHRvIGRlY29tcHJlc3MgdGhlIGNvbnRlbnQuXHJcbiAgICAgKiBodHRwLnNldE9wdGlvbnMoe1xyXG4gICAgICogICBkZWZsYXRlUmF3OiB0cnVlXHJcbiAgICAgKiB9KTtcclxuICAgICAqIHZhciByZXNwb25zZSA9IGh0dHAuZ2V0KCdodHRwczovL0ZPTy5CQVInKTtcclxuICAgICAqIGxvZy5pbmZvKHJlc3BvbnNlLmJvZHkpO1xyXG4gICAgICovXHJcbiAgICBhc3luYyBnZXQodXJsLCBoZWFkZXJzKSB7XHJcbiAgICAgICAgY29uc3QgaHR0cE9wdHMgPSB7XHJcbiAgICAgICAgICAgIC4uLkRFRkFVTFRfSFRUUF9PUFRJT05TLFxyXG4gICAgICAgICAgICAuLi50aGlzLl91c2VySHR0cE9wdGlvbnMgfHwge30sXHJcbiAgICAgICAgICAgIHVybDogdXJsLFxyXG4gICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxyXG4gICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzIHx8IHt9XHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5faHR0cFJlcXVlc3RTeW5jKGh0dHBPcHRzKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFBlcmZvcm1zIEhUVFAgUE9TVFxyXG4gICAgICogQGZ1bmN0aW9uIHBvc3RcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSB1cmwgLSBVUkwuXHJcbiAgICAgKiBAcGFyYW0ge09iamVjdH0gZGF0YSAtIERhdGEuXHJcbiAgICAgKiBAcGFyYW0ge09iamVjdD19IGhlYWRlcnMgLSBIVFRQIGhlYWRlcnMuXHJcbiAgICAgKiBAcmV0dXJuIHtPYmplY3R9IFJlc3BvbnNlIG9iamVjdC5cclxuICAgICAqL1xyXG4gICAgYXN5bmMgcG9zdCh1cmwsIGRhdGEsIGhlYWRlcnMpIHtcclxuICAgICAgICBjb25zdCByZXNvbHZlZERhdGEgPSB0aGlzLl9yZXNvbHZlRGF0YShkYXRhKTtcclxuXHJcbiAgICAgICAgY29uc3QgaHR0cE9wdHMgPSB7XHJcbiAgICAgICAgICAgIC4uLkRFRkFVTFRfSFRUUF9PUFRJT05TLFxyXG4gICAgICAgICAgICAuLi50aGlzLl91c2VySHR0cE9wdGlvbnMgfHwge30sXHJcbiAgICAgICAgICAgIHVybDogdXJsLFxyXG4gICAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcclxuICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyB8fCB7fSxcclxuICAgICAgICAgICAgLi4ucmVzb2x2ZWREYXRhXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5faHR0cFJlcXVlc3RTeW5jKGh0dHBPcHRzKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFBlcmZvcm1zIEhUVFAgUFVUXHJcbiAgICAgKiBAZnVuY3Rpb24gcHV0XHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gdXJsIC0gVVJMLlxyXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGRhdGEgLSBEYXRhLlxyXG4gICAgICogQHBhcmFtIHtPYmplY3Q9fSBoZWFkZXJzIC0gSFRUUCBoZWFkZXJzLlxyXG4gICAgICogQHJldHVybiB7T2JqZWN0fSBSZXNwb25zZSBvYmplY3QuXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIHB1dCh1cmwsIGRhdGEsIGhlYWRlcnMpIHtcclxuICAgICAgICBjb25zdCByZXNvbHZlZERhdGEgPSB0aGlzLl9yZXNvbHZlRGF0YShkYXRhKTtcclxuXHJcbiAgICAgICAgY29uc3QgaHR0cE9wdHMgPSB7XHJcbiAgICAgICAgICAgIC4uLkRFRkFVTFRfSFRUUF9PUFRJT05TLFxyXG4gICAgICAgICAgICAuLi50aGlzLl91c2VySHR0cE9wdGlvbnMgfHwge30sXHJcbiAgICAgICAgICAgIHVybDogdXJsLFxyXG4gICAgICAgICAgICBtZXRob2Q6ICdQVVQnLFxyXG4gICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJzIHx8IHt9LFxyXG4gICAgICAgICAgICAuLi5yZXNvbHZlZERhdGFcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLl9odHRwUmVxdWVzdFN5bmMoaHR0cE9wdHMpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgUGVyZm9ybXMgSFRUUCBQQVRDSFxyXG4gICAgICogQGZ1bmN0aW9uIHBhdGNoXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gdXJsIC0gVVJMLlxyXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGRhdGEgLSBEYXRhLlxyXG4gICAgICogQHBhcmFtIHtPYmplY3Q9fSBoZWFkZXJzIC0gSFRUUCBoZWFkZXJzLlxyXG4gICAgICogQHJldHVybiB7T2JqZWN0fSBSZXNwb25zZSBvYmplY3QuXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIHBhdGNoKHVybCwgZGF0YSwgaGVhZGVycykge1xyXG4gICAgICAgIGNvbnN0IHJlc29sdmVkRGF0YSA9IHRoaXMuX3Jlc29sdmVEYXRhKGRhdGEpO1xyXG5cclxuICAgICAgICBjb25zdCBodHRwT3B0cyA9IHtcclxuICAgICAgICAgICAgLi4uREVGQVVMVF9IVFRQX09QVElPTlMsXHJcbiAgICAgICAgICAgIC4uLnRoaXMuX3VzZXJIdHRwT3B0aW9ucyB8fCB7fSxcclxuICAgICAgICAgICAgdXJsOiB1cmwsXHJcbiAgICAgICAgICAgIG1ldGhvZDogJ1BBVENIJyxcclxuICAgICAgICAgICAgaGVhZGVyczogaGVhZGVycyB8fCB7fSxcclxuICAgICAgICAgICAgLi4ucmVzb2x2ZWREYXRhXHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5faHR0cFJlcXVlc3RTeW5jKGh0dHBPcHRzKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IFBlcmZvcm1zIEhUVFAgREVMRVRFXHJcbiAgICAgKiBAZnVuY3Rpb24gZGVsZXRlXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gdXJsIC0gVVJMLlxyXG4gICAgICogQHBhcmFtIHtPYmplY3Q9fSBoZWFkZXJzIC0gSFRUUCBoZWFkZXJzLlxyXG4gICAgICogQHBhcmFtIHtPYmplY3R9IGRhdGEgLSBEYXRhLlxyXG4gICAgICogQHJldHVybiB7T2JqZWN0fSBSZXNwb25zZSBvYmplY3QuXHJcbiAgICAgKi9cclxuICAgIGFzeW5jIGRlbGV0ZSh1cmwsIGhlYWRlcnMsIGRhdGEpIHtcclxuICAgICAgICBjb25zdCByZXNvbHZlZERhdGEgPSB0aGlzLl9yZXNvbHZlRGF0YShkYXRhKTtcclxuICAgICAgICBjb25zdCBodHRwT3B0cyA9IHtcclxuICAgICAgICAgICAgLi4uREVGQVVMVF9IVFRQX09QVElPTlMsXHJcbiAgICAgICAgICAgIC4uLnRoaXMuX3VzZXJIdHRwT3B0aW9ucyB8fCB7fSxcclxuICAgICAgICAgICAgdXJsOiB1cmwsXHJcbiAgICAgICAgICAgIG1ldGhvZDogJ0RFTEVURScsXHJcbiAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMgfHwge30sXHJcbiAgICAgICAgICAgIC4uLnJlc29sdmVkRGF0YVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuX2h0dHBSZXF1ZXN0U3luYyhodHRwT3B0cyk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBSZXR1cm5zIGxhc3QgcmVzcG9uc2Ugb2JqZWN0XHJcbiAgICAgKiBAZnVuY3Rpb24gZ2V0UmVzcG9uc2VcclxuICAgICAqIEByZXR1cm4ge09iamVjdH0gUmVzcG9uc2Ugb2JqZWN0LlxyXG4gICAgICovXHJcbiAgICBnZXRSZXNwb25zZSgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fbGFzdFJlc3BvbnNlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgUmV0dXJucyBsYXN0IHJlc3BvbnNlIGJvZHlcclxuICAgICAqIEBmdW5jdGlvbiBnZXRSZXNwb25zZUJvZHlcclxuICAgICAqIEByZXR1cm4ge1N0cmluZ30gUmVzcG9uc2UgYm9keS5cclxuICAgICAqL1xyXG4gICAgZ2V0UmVzcG9uc2VCb2R5KCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9sYXN0UmVzcG9uc2UgJiYgdGhpcy5fbGFzdFJlc3BvbnNlLmJvZHkgPyB0aGlzLl9sYXN0UmVzcG9uc2UuYm9keSA6IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBSZXR1cm5zIHJlc3BvbnNlIGhlYWRlcnNcclxuICAgICAqIEBmdW5jdGlvbiBnZXRSZXNwb25zZUhlYWRlcnNcclxuICAgICAqIEByZXR1cm4ge09iamVjdH0gUmVzcG9uc2UgaGVhZGVycy5cclxuICAgICAqL1xyXG4gICAgZ2V0UmVzcG9uc2VIZWFkZXJzKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5fbGFzdFJlc3BvbnNlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy5fbGFzdFJlc3BvbnNlLmhlYWRlcnM7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBSZXR1cm5zIHJlc3BvbnNlIFVSTFxyXG4gICAgICogQGZ1bmN0aW9uIGdldFJlc3BvbnNlVXJsXHJcbiAgICAgKiBAcmV0dXJuIHtTdHJpbmd9IFJlc3BvbnNlIFVSTC5cclxuICAgICAqL1xyXG4gICAgZ2V0UmVzcG9uc2VVcmwoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9sYXN0UmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLl9sYXN0UmVzcG9uc2UudXJsO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgQXNzZXJ0IHdoZXRoZXIgdGhlIHNwZWNpZmllZCBwYXR0ZXJuIGlzIHByZXNlbnQgaW4gdGhlIHJlc3BvbnNlIGJvZHkuXHJcbiAgICAgKiBAZnVuY3Rpb24gYXNzZXJ0VGV4dFxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHBhdHRlcm4gLSBQYXR0ZXJuIHRvIGFzc2VydC5cclxuICAgICAqL1xyXG4gICAgYXNzZXJ0VGV4dChwYXR0ZXJuKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9sYXN0UmVzcG9uc2UpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXRoaXMuX2xhc3RSZXNwb25zZS5ib2R5KSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuQVNTRVJUX0VSUk9SLCAnUmVzcG9uc2UgYm9keSBpcyBlbXB0eScpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCByZXNwQ29udGVudCA9IHR5cGVvZiB0aGlzLl9sYXN0UmVzcG9uc2UuYm9keSA9PT0gJ3N0cmluZycgPyB0aGlzLl9sYXN0UmVzcG9uc2UuYm9keSA6IEpTT04uc3RyaW5naWZ5KHRoaXMuX2xhc3RSZXNwb25zZS5ib2R5KTtcclxuICAgICAgICBpZiAoIW1vZFV0aWxzLm1hdGNoUGF0dGVybihyZXNwQ29udGVudCwgcGF0dGVybikpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5BU1NFUlRfRVJST1IsIGBFeHBlY3RlZCBIVFRQIHJlc3BvbnNlIGNvbnRlbnQgdG8gbWF0Y2g6IFwiJHtwYXR0ZXJufVwiIGJ1dCBnb3Q6IFwiJHtyZXNwQ29udGVudH1cImApO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IEFzc2VydCByZXNwb25zZSB0aW1lXHJcbiAgICAgKiBAZnVuY3Rpb24gYXNzZXJ0UmVzcG9uc2VUaW1lXHJcbiAgICAgKiBAcGFyYW0ge051bWJlcn0gbWF4VGltZSAtIE1heGltdW0gcmVzcG9uc2UgdGltZSBpbiBtaWxsaXNlY29uZHMuXHJcbiAgICAgKi9cclxuICAgIGFzc2VydFJlc3BvbnNlVGltZShtYXhUaW1lKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IEFzc2VydCBpZiBIVFRQIGhlYWRlciBpcyBwcmVzZW50ZWQgaW4gdGhlIHJlc3BvbnNlXHJcbiAgICAgKiBAZnVuY3Rpb24gYXNzZXJ0SGVhZGVyXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gaGVhZGVyTmFtZSAtIEEgSFRUUCBoZWFkZXIgbmFtZS5cclxuICAgICAqIEBwYXJhbSB7U3RyaW5nPX0gaGVhZGVyVmFsdWVQYXR0ZXJuIC0gQW4gb3B0aW9uYWwgSFRUUCBoZWFkZXIgdmFsdWUgcGF0dGVybi5cclxuICAgICAqL1xyXG4gICAgYXNzZXJ0SGVhZGVyKGhlYWRlck5hbWUsIGhlYWRlclZhbHVlUGF0dGVybiA9IG51bGwpIHtcclxuICAgICAgICBpZiAoIWhlYWRlck5hbWUgfHwgdHlwZW9mIGhlYWRlck5hbWUgIT09ICdzdHJpbmcnIHx8IGhlYWRlck5hbWUubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBoZWFkZXJOYW1lID0gaGVhZGVyTmFtZS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSB0aGlzLl9sYXN0UmVzcG9uc2UuaGVhZGVycztcclxuICAgICAgICBpZiAoIWhlYWRlcnNbaGVhZGVyTmFtZV0pIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5BU1NFUlRfRVJST1IsICdFeHBlY3RlZCBIVFRQIGhlYWRlciBcIiR7aGVhZGVyTmFtZX1cIiB0byBiZSBwcmVzZW50Jyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGhlYWRlclZhbHVlUGF0dGVybiAmJiB0eXBlb2YgaGVhZGVyVmFsdWVQYXR0ZXJuID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICBjb25zdCBhY3R1YWxIZWFkZXJWYWx1ZSA9IGhlYWRlcnNbaGVhZGVyTmFtZV07XHJcbiAgICAgICAgICAgIGlmICghbW9kVXRpbHMubWF0Y2hQYXR0ZXJuKGFjdHVhbEhlYWRlclZhbHVlLCBoZWFkZXJWYWx1ZVBhdHRlcm4pKSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLkFTU0VSVF9FUlJPUiwgYEV4cGVjdGVkIEhUVFAgaGVhZGVyIFwiJHtoZWFkZXJOYW1lfVwiIHZhbHVlIHRvIG1hdGNoOiBcIiR7aGVhZGVyVmFsdWVQYXR0ZXJufVwiIGJ1dCBnb3Q6IFwiJHthY3R1YWxIZWFkZXJWYWx1ZX1cImApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgQXNzZXJ0IGlmIEhUVFAgY29va2llIGlzIHByZXNlbnRlZCBpbiB0aGUgcmVzcG9uc2VcclxuICAgICAqIEBmdW5jdGlvbiBhc3NlcnRDb29raWVcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBjb29raWVOYW1lIC0gQSBIVFRQIGNvb2tpZSBuYW1lLlxyXG4gICAgICogQHBhcmFtIHtTdHJpbmc9fSBjb29raWVWYWx1ZVBhdHRlcm4gLSBBbiBvcHRpb25hbCBIVFRQIGNvb2tpZSB2YWx1ZSBwYXR0ZXJuLlxyXG4gICAgICovXHJcbiAgICBhc3NlcnRDb29raWUoY29va2llTmFtZSwgY29va2llVmFsdWVQYXR0ZXJuKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdOb3QgaW1wbGVtZW50ZWQnKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IEFzc2VydCB0aGUgbGFzdCBIVFRQIHJlc3BvbnNlJ3Mgc3RhdHVzIGNvZGVcclxuICAgICAqIEBmdW5jdGlvbiBhc3NlcnRTdGF0dXNcclxuICAgICAqIEBwYXJhbSB7TnVtYmVyfEFycmF5fSBjb2RlTGlzdCAtIEEgc2luZ2xlIHN0YXR1cyBjb2RlIG9yIGEgbGlzdCBvZiBjb2Rlcy5cclxuICAgICAqL1xyXG4gICAgYXNzZXJ0U3RhdHVzKGNvZGVMaXN0KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9sYXN0UmVzcG9uc2UgfHwgIWNvZGVMaXN0KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaWYgd2UgZ290IGEgc2luZ2xlIHZhbHVlLCB0aGVuIGNvbnZlcnQgaXQgdG8gYW4gYXJyYXlcclxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29kZUxpc3QpKSB7XHJcbiAgICAgICAgICAgIGNvZGVMaXN0ID0gW2NvZGVMaXN0XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc3RhdHVzQ29kZSA9IHRoaXMuX2xhc3RSZXNwb25zZS5zdGF0dXNDb2RlO1xyXG4gICAgICAgIGlmICghY29kZUxpc3QuaW5jbHVkZXMoc3RhdHVzQ29kZSkpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5BU1NFUlRfRVJST1IsIGBFeHBlY3RlZCBIVFRQIHN0YXR1cyB0byBiZTogXCIke2NvZGVMaXN0fVwiIGJ1dCBnb3Q6IFwiJHtzdGF0dXNDb2RlfVwiYCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgQXNzZXJ0IEhUVFAgMjAwIE9LIHN0YXR1c1xyXG4gICAgICogQGZ1bmN0aW9uIGFzc2VydFN0YXR1c09rXHJcbiAgICAgKi9cclxuICAgIGFzc2VydFN0YXR1c09rKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFzc2VydFN0YXR1cygyMDApO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgT3BlbnMgbmV3IHRyYW5zYWN0aW9uLlxyXG4gICAgICogQGRlc2NyaXB0aW9uIFRoZSB0cmFuc2FjdGlvbiB3aWxsIHBlcnNpc3QgdGlsbCBhIG5ldyBvbmUgaXMgb3BlbmVkLiBUcmFuc2FjdGlvbiBuYW1lcyBtdXN0IGJlXHJcbiAgICAgKiAgICAgICAgICAgICAgdW5pcXVlLlxyXG4gICAgICogQGZ1bmN0aW9uIHRyYW5zYWN0aW9uXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSAtIFRoZSB0cmFuc2FjdGlvbiBuYW1lLlxyXG4gICAgICovXHJcbiAgICBhc3luYyB0cmFuc2FjdGlvbihuYW1lKSB7XHJcbiAgICAgICAgZ2xvYmFsLl9sYXN0VHJhbnNhY3Rpb25OYW1lID0gbmFtZTtcclxuICAgIH1cclxuXHJcbiAgICBfcmVzb2x2ZURhdGEoZGF0YSkge1xyXG4gICAgICAgIGNvbnN0IGRhdGFSZXNvbHZlciA9IHt9O1xyXG5cclxuICAgICAgICBpZiAoZGF0YSBpbnN0YW5jZW9mIE9iamVjdCkge1xyXG4gICAgICAgICAgICBtb2RVdGlscy5hc3NlcnRDaXJjdWxhcihkYXRhKTtcclxuICAgICAgICAgICAgZGF0YVJlc29sdmVyLmpzb24gPSBkYXRhO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGRhdGFSZXNvbHZlci5ib2R5ID0gZGF0YTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBkYXRhUmVzb2x2ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgX2h0dHBSZXF1ZXN0U3luYyhodHRwT3B0cykge1xyXG4gICAgICAgIGxldCByZXN1bHQ7XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHJlc3VsdCA9IGF3YWl0IGdvdChodHRwT3B0cyk7XHJcbiAgICAgICAgICAgIGlmIChodHRwT3B0cy5kZWZsYXRlUmF3ICYmIHJlc3VsdC5oZWFkZXJzWydjb250ZW50LWVuY29kaW5nJ10gPT09ICdkZWZsYXRlJykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgemxpYiA9IHJlcXVpcmUoJ3psaWInKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGRlY29tcCA9IHpsaWIuY3JlYXRlSW5mbGF0ZVJhdygpO1xyXG4gICAgICAgICAgICAgICAgZGVjb21wLndyaXRlKHJlc3VsdC5ib2R5KTtcclxuICAgICAgICAgICAgICAgIGF3YWl0ICgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVjb21wLm9uKCdkYXRhJywgKGRhdGEpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5ib2R5ID0gZGF0YS50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5oZWFkZXJzW0NPTlRFTlRfVFlQRV9IRUFERVJdICYmIHJlc3VsdC5oZWFkZXJzW0NPTlRFTlRfVFlQRV9IRUFERVJdLmluY2x1ZGVzKCdhcHBsaWNhdGlvbi9qc29uJykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYm9keSA9IEpTT04ucGFyc2UocmVzdWx0LmJvZHkpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaWYgcGFyc2luZyBmYWlscyBqdXN0IHJldHVybiB0aGUgb3JpZ2luYWwgc3RyaW5nXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0pKCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmhlYWRlcnNbQ09OVEVOVF9UWVBFX0hFQURFUl0gJiYgcmVzdWx0LmhlYWRlcnNbQ09OVEVOVF9UWVBFX0hFQURFUl0uaW5jbHVkZXMoJ2FwcGxpY2F0aW9uL2pzb24nKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5ib2R5ID0gSlNPTi5wYXJzZShyZXN1bHQuYm9keSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiBwYXJzaW5nIGZhaWxzIGp1c3QgcmV0dXJuIHRoZSBvcmlnaW5hbCBzdHJpbmdcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICByZXN1bHQgPSBlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gc3RvcmUgbGFzdCByZXNwb25zZSB0byBhbGxvdyBmdXJ0aGVyIGFzc2VydGlvbnMgYW5kIHZhbGlkYXRpb25zXHJcbiAgICAgICAgdGhpcy5fbGFzdFJlc3BvbnNlID0gcmVzdWx0O1xyXG5cclxuICAgICAgICBpZiAocmVzdWx0IGluc3RhbmNlb2YgRXJyb3IpIHtcclxuICAgICAgICAgICAgbGV0IGJvZHkgPSBudWxsO1xyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICByZXN1bHQucmVzcG9uc2UgJiZcclxuICAgICAgICAgICAgICAgIHJlc3VsdC5yZXNwb25zZS5ib2R5XHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgYm9keSA9IHJlc3VsdC5yZXNwb25zZS5ib2R5O1xyXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkgPSBKU09OLnBhcnNlKGJvZHkpO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keSA9IHJlc3VsdC5yZXNwb25zZS5ib2R5O1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmVzdWx0ID0ge1xyXG4gICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlOiByZXN1bHQubWVzc2FnZSxcclxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHJlc3VsdC5yZXNwb25zZSA/IHJlc3VsdC5yZXNwb25zZS5oZWFkZXJzIDogbnVsbCxcclxuICAgICAgICAgICAgICAgIHN0YXR1c0NvZGU6IHJlc3VsdC5yZXNwb25zZSA/IHJlc3VsdC5yZXNwb25zZS5zdGF0dXNDb2RlIDogbnVsbCxcclxuICAgICAgICAgICAgICAgIHN0YXR1c01lc3NhZ2U6IHJlc3VsdC5yZXNwb25zZSA/IHJlc3VsdC5yZXNwb25zZS5zdGF0dXNNZXNzYWdlIDogbnVsbCxcclxuICAgICAgICAgICAgICAgIHJhd0JvZHk6IHJlc3VsdC5yZXNwb25zZSA/IHJlc3VsdC5yZXNwb25zZS5yYXdCb2R5IDogbnVsbCxcclxuICAgICAgICAgICAgICAgIGJvZHk6IGJvZHlcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXN1bHQgPSB7XHJcbiAgICAgICAgICAgICAgICBodHRwVmVyc2lvbjogcmVzdWx0Lmh0dHBWZXJzaW9uLFxyXG4gICAgICAgICAgICAgICAgaGVhZGVyczogcmVzdWx0LmhlYWRlcnMsXHJcbiAgICAgICAgICAgICAgICB1cGdyYWRlOiByZXN1bHQudXBncmFkZSxcclxuICAgICAgICAgICAgICAgIHVybDogcmVzdWx0LnVybCxcclxuICAgICAgICAgICAgICAgIG1ldGhvZDogcmVzdWx0Lm1ldGhvZCxcclxuICAgICAgICAgICAgICAgIHN0YXR1c0NvZGU6IHJlc3VsdC5zdGF0dXNDb2RlLFxyXG4gICAgICAgICAgICAgICAgc3RhdHVzTWVzc2FnZTogcmVzdWx0LnN0YXR1c01lc3NhZ2UsXHJcbiAgICAgICAgICAgICAgICB0aW1pbmdzOiByZXN1bHQudGltaW5ncyxcclxuICAgICAgICAgICAgICAgIHJlcXVlc3RVcmw6IHJlc3VsdC5yZXF1ZXN0VXJsLFxyXG4gICAgICAgICAgICAgICAgcmVkaXJlY3RVcmxzOiByZXN1bHQucmVkaXJlY3RVcmxzLFxyXG4gICAgICAgICAgICAgICAgaXNGcm9tQ2FjaGU6IHJlc3VsdC5pc0Zyb21DYWNoZSxcclxuICAgICAgICAgICAgICAgIGlwOiByZXN1bHQuaXAsXHJcbiAgICAgICAgICAgICAgICByZXRyeUNvdW50OiByZXN1bHQucmV0cnlDb3VudCxcclxuICAgICAgICAgICAgICAgIGJvZHk6IHJlc3VsdC5ib2R5XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG59Il19
@@ -58,6 +58,9 @@ module.exports = async function (locator, timeout) {
58
58
  throw new Error(retVal.error + ' ' + retVal.message);
59
59
  }
60
60
  } catch (e) {
61
+ console.log('clickJS failure');
62
+ console.log(e);
63
+
61
64
  if (this.retryCount) {
62
65
  --this.retryCount;
63
66
  await this.clickJS(el);
@@ -71,10 +74,13 @@ module.exports = async function (locator, timeout) {
71
74
 
72
75
  try {
73
76
  var clickable = await el.isClickable();
77
+ console.log('Element clickable: ' + clickable);
74
78
  } catch (e) {
75
79
  let documentMode;
76
80
 
77
81
  if (this.driver && this.driver.capabilities && this.driver.capabilities.browserName === 'internet explorer') {
82
+ console.log('Falling back to IE workaround');
83
+
78
84
  try {
79
85
  documentMode = await this.driver.execute(function () {
80
86
  // eslint-disable-next-line no-undef
@@ -93,10 +99,13 @@ module.exports = async function (locator, timeout) {
93
99
 
94
100
  if (clickable) {
95
101
  try {
102
+ console.log('Performing el.click');
96
103
  await el.click();
104
+ console.log('el.click done');
97
105
  } catch (e) {
98
106
  // chromedriver doesn't seem to support clicking on elements in Shadow DOM
99
107
  if (e.message.startsWith("javascript error: Cannot read property 'defaultView' of undefined")) {
108
+ console.log('el.click failed due to missing defaultView. Falling back to clickJS');
100
109
  await this.clickJS(el);
101
110
  } else {
102
111
  throw e;
@@ -104,9 +113,10 @@ module.exports = async function (locator, timeout) {
104
113
  }
105
114
  } else {
106
115
  // if element is not clickable, try clicking it using JS injection
116
+ console.log('Element not clickable. Invoking clikcJS');
107
117
  await this.clickJS(el);
108
118
  }
109
119
 
110
120
  await this.checkWaitForAngular();
111
121
  };
112
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS13ZWIvY29tbWFuZHMvY2xpY2suanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsImxvY2F0b3IiLCJ0aW1lb3V0IiwiaGVscGVycyIsImFzc2VydEFyZ3VtZW50VGltZW91dCIsInJldHJ5Q291bnQiLCJjbGlja0pTIiwiZWwiLCJyZXRWYWwiLCJkcml2ZXIiLCJleGVjdXRlIiwiZG9tRWwiLCJkb2N1bWVudCIsImNyZWF0ZUV2ZW50IiwiY3JlYXRlRXZlbnRPYmplY3QiLCJldiIsImZpcmVFdmVudCIsImNsY2tFdiIsImluaXRFdmVudCIsImRpc3BhdGNoRXZlbnQiLCJlcnJvciIsIm1lc3NhZ2UiLCJFcnJvciIsImUiLCJnZXRFbGVtZW50IiwiY2xpY2thYmxlIiwiaXNDbGlja2FibGUiLCJkb2N1bWVudE1vZGUiLCJjYXBhYmlsaXRpZXMiLCJicm93c2VyTmFtZSIsIndpbmRvdyIsImluY2x1ZGVzIiwicGFyc2VJbnQiLCJjbGljayIsInN0YXJ0c1dpdGgiLCJjaGVja1dhaXRGb3JBbmd1bGFyIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQUEsTUFBTSxDQUFDQyxPQUFQLEdBQWlCLGdCQUFlQyxPQUFmLEVBQXdCQyxPQUF4QixFQUFpQztBQUM5QyxPQUFLQyxPQUFMLENBQWFDLHFCQUFiLENBQW1DRixPQUFuQyxFQUE0QyxTQUE1QztBQUNBLE9BQUtHLFVBQUwsR0FBa0IsQ0FBbEI7O0FBQ0EsT0FBS0MsT0FBTCxHQUFlLE1BQU9DLEVBQVAsSUFBZTtBQUMxQixRQUFJO0FBQ0E7QUFDQSxZQUFNQyxNQUFNLEdBQUcsTUFBTSxLQUFLQyxNQUFMLENBQVlDLE9BQVosQ0FBb0IsVUFBU0MsS0FBVCxFQUFnQjtB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QUFNLEtBQUs0QixtQkFBTCxFQUFOO0FBQ0gsQ0EzRkQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBAc3VtbWFyeSBDbGlja3Mgb24gYW4gZWxlbWVudC5cclxuICogQGRlc2NyaXB0aW9uIElmIHRoZSBjbGljayBjYXVzZXMgbmV3IHBhZ2UgdG8gbG9hZCwgdGhlIGNvbW1hbmQgd2FpdHMgZm9yIHBhZ2UgdG8gbG9hZCBiZWZvcmVcclxuICogICAgICAgICAgICAgIHByb2NlZWRpbmcuXHJcbiAqIEBmdW5jdGlvbiBjbGlja1xyXG4gKiBAcGFyYW0ge1N0cmluZ3xFbGVtZW50fSBsb2NhdG9yIC0gQW4gZWxlbWVudCBsb2NhdG9yLlxyXG4gKiBAcGFyYW0ge051bWJlcj19IHRpbWVvdXQgLSBUaW1lb3V0IGluIG1pbGxpc2Vjb25kcy4gRGVmYXVsdCBpcyA2MCBzZWNvbmRzLlxyXG4gKiBAZXhhbXBsZSA8Y2FwdGlvbj5bamF2YXNjcmlwdF0gVXNhZ2UgZXhhbXBsZTwvY2FwdGlvbj5cclxuICogd2ViLmluaXQoKTsvL09wZW5zIGJyb3dzZXIgc2Vzc2lvbi5cclxuICogd2ViLm9wZW4oXCJ3d3cueW91cndlYnNpdGUuY29tXCIpOy8vIE9wZW5zIGEgd2Vic2l0ZS5cclxuICogd2ViLmNsaWNrKFwiaWQ9TmV4dFBhZ2VcIik7Ly9DbGlja3Mgb24gbmV4dCBwYWdlIGxpbmsuXHJcbiAqL1xyXG5tb2R1bGUuZXhwb3J0cyA9IGFzeW5jIGZ1bmN0aW9uKGxvY2F0b3IsIHRpbWVvdXQpIHtcclxuICAgIHRoaXMuaGVscGVycy5hc3NlcnRBcmd1bWVudFRpbWVvdXQodGltZW91dCwgJ3RpbWVvdXQnKTtcclxuICAgIHRoaXMucmV0cnlDb3VudCA9IDM7XHJcbiAgICB0aGlzLmNsaWNrSlMgPSBhc3luYyAoZWwpID0+ICB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgLypnbG9iYWwgZG9jdW1lbnQqL1xyXG4gICAgICAgICAgICBjb25zdCByZXRWYWwgPSBhd2FpdCB0aGlzLmRyaXZlci5leGVjdXRlKGZ1bmN0aW9uKGRvbUVsKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjcmVhdGVFdmVudCB3b24ndCBiZSBhdmFpbGFibGUgaW4gSUUgPCA5IGNvbXBhdGliaWxpdHkgbW9kZVxyXG4gICAgICAgICAgICAgICAgaWYgKCFkb2N1bWVudC5jcmVhdGVFdmVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5jcmVhdGVFdmVudE9iamVjdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgZXYgPSBkb2N1bWVudC5jcmVhdGVFdmVudE9iamVjdCgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBkb21FbC5maXJlRXZlbnQoJ29uY2xpY2snLCBldik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47IC8vIGZhaWwgc2lsZW50bHlcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB2YXIgY2xja0V2ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ01vdXNlRXZlbnQnKTtcclxuICAgICAgICAgICAgICAgIGNsY2tFdi5pbml0RXZlbnQoJ2NsaWNrJywgdHJ1ZSwgdHJ1ZSk7XHJcbiAgICAgICAgICAgICAgICBkb21FbC5kaXNwYXRjaEV2ZW50KGNsY2tFdik7XHJcbiAgICAgICAgICAgIH0sIGVsKTtcclxuXHJcbiAgICAgICAgICAgIC8qXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgZXJyb3I6ICdubyBzdWNoIGVsZW1lbnQnLFxyXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6ICdFcnJvciBleGVjdXRpbmcgSmF2YVNjcmlwdCcsXHJcbiAgICAgICAgICAgICAgICAgICAgc3RhY2t0cmFjZTogJydcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgKi9cclxuICAgICAgICAgICAgaWYgKHJldFZhbCAmJiByZXRWYWwuZXJyb3IgJiYgcmV0VmFsLm1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihyZXRWYWwuZXJyb3IgKyAnICcgKyByZXRWYWwubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5yZXRyeUNvdW50KSB7XHJcbiAgICAgICAgICAgICAgICAtLXRoaXMucmV0cnlDb3VudDtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuY2xpY2tKUyhlbCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICB2YXIgZWwgPSBhd2FpdCB0aGlzLmhlbHBlcnMuZ2V0RWxlbWVudChsb2NhdG9yLCBmYWxzZSwgdGltZW91dCk7XHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgICB2YXIgY2xpY2thYmxlID0gYXdhaXQgZWwuaXNDbGlja2FibGUoKTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICBsZXQgZG9jdW1lbnRNb2RlO1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgdGhpcy5kcml2ZXIgJiZcclxuICAgICAgICAgICAgdGhpcy5kcml2ZXIuY2FwYWJpbGl0aWVzICYmXHJcbiAgICAgICAgICAgIHRoaXMuZHJpdmVyLmNhcGFiaWxpdGllcy5icm93c2VyTmFtZSA9PT0gJ2ludGVybmV0IGV4cGxvcmVyJ1xyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnRNb2RlID0gYXdhaXQgdGhpcy5kcml2ZXIuZXhlY3V0ZShmdW5jdGlvbigpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gd2luZG93LmRvY3VtZW50LmRvY3VtZW50TW9kZTtcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBpZ25vcmVcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgZG9jdW1lbnRNb2RlICYmXHJcbiAgICAgICAgICAgICAgICBbNSwgNiwgNywgOCwgOSwgMTBdLmluY2x1ZGVzKHBhcnNlSW50KGRvY3VtZW50TW9kZSkpXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgY2xpY2thYmxlID0gdHJ1ZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRocm93IGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGNsaWNrYWJsZSkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGF3YWl0IGVsLmNsaWNrKCk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAvLyBjaHJvbWVkcml2ZXIgZG9lc24ndCBzZWVtIHRvIHN1cHBvcnQgY2xpY2tpbmcgb24gZWxlbWVudHMgaW4gU2hhZG93IERPTVxyXG4gICAgICAgICAgICBpZiAoZS5tZXNzYWdlLnN0YXJ0c1dpdGgoXCJqYXZhc2NyaXB0IGVycm9yOiBDYW5ub3QgcmVhZCBwcm9wZXJ0eSAnZGVmYXVsdFZpZXcnIG9mIHVuZGVmaW5lZFwiKSkge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5jbGlja0pTKGVsKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRocm93IGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIGlmIGVsZW1lbnQgaXMgbm90IGNsaWNrYWJsZSwgdHJ5IGNsaWNraW5nIGl0IHVzaW5nIEpTIGluamVjdGlvblxyXG4gICAgICAgIGF3YWl0IHRoaXMuY2xpY2tKUyhlbCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXdhaXQgdGhpcy5jaGVja1dhaXRGb3JBbmd1bGFyKCk7XHJcbn07XHJcbiJdfQ==
122
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS13ZWIvY29tbWFuZHMvY2xpY2suanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsImxvY2F0b3IiLCJ0aW1lb3V0IiwiaGVscGVycyIsImFzc2VydEFyZ3VtZW50VGltZW91dCIsInJldHJ5Q291bnQiLCJjbGlja0pTIiwiZWwiLCJyZXRWYWwiLCJkcml2ZXIiLCJleGVjdXRlIiwiZG9tRWwiLCJkb2N1bWVudCIsImNyZWF0ZUV2ZW50IiwiY3JlYXRlRXZlbnRPYmplY3QiLCJldiIsImZpcmVFdmVudCIsImNsY2tFdiIsImluaXRFdmVudCIsImRpc3BhdGNoRXZlbnQiLCJlcnJvciIsIm1lc3NhZ2UiLCJFcnJvciIsImUiLCJjb25zb2xlIiwibG9nIiwiZ2V0RWxlbWVudCIsImNsaWNrYWJsZSIsImlzQ2xpY2thYmxlIiwiZG9jdW1lbnRNb2RlIiwiY2FwYWJpbGl0aWVzIiwiYnJvd3Nlck5hbWUiLCJ3aW5kb3ciLCJpbmNsdWRlcyIsInBhcnNlSW50IiwiY2xpY2siLCJzdGFydHNXaXRoIiwiY2hlY2tXYWl0Rm9yQW5ndWxhciJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0FBLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQixnQkFBZUMsT0FBZixFQUF3QkMsT0FBeEIsRUFBaUM7QUFDOUMsT0FBS0MsT0FBTCxDQUFhQyxxQkFBYixDQUFtQ0YsT0FBbkMsRUFBNEMsU0FBNUM7QUFDQSxPQUFLRyxVQUFMLEdBQWtCLENBQWxCOztBQUNBLE9BQUtDLE9BQUwsR0FBZSxNQUFPQyxFQUFQLElBQWU7QUFDMUIsUUFBSTtBQUNBO0FBQ0EsWUFBTUMsTUFBTSxHQUFHLE1BQU0sS0FBS0MsTUFBTCxDQUFZQyxPQUFaLENBQW9CLFVB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LENBQVksZUFBWjtBQUNILEtBSkQsQ0FJRSxPQUFPRixDQUFQLEVBQVU7QUFDUjtBQUNBLFVBQUlBLENBQUMsQ0FBQ0YsT0FBRixDQUFVZSxVQUFWLENBQXFCLG1FQUFyQixDQUFKLEVBQStGO0FBQzNGWixRQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWSxxRUFBWjtBQUNBLGNBQU0sS0FBS25CLE9BQUwsQ0FBYUMsRUFBYixDQUFOO0FBQ0gsT0FIRCxNQUdPO0FBQ0gsY0FBTWdCLENBQU47QUFDSDtBQUNKO0FBQ0osR0FkRCxNQWNPO0FBQ0g7QUFDQUMsSUFBQUEsT0FBTyxDQUFDQyxHQUFSLENBQVkseUNBQVo7QUFDQSxVQUFNLEtBQUtuQixPQUFMLENBQWFDLEVBQWIsQ0FBTjtBQUNIOztBQUVELFFBQU0sS0FBSzhCLG1CQUFMLEVBQU47QUFDSCxDQW5HRCIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIEBzdW1tYXJ5IENsaWNrcyBvbiBhbiBlbGVtZW50LlxyXG4gKiBAZGVzY3JpcHRpb24gSWYgdGhlIGNsaWNrIGNhdXNlcyBuZXcgcGFnZSB0byBsb2FkLCB0aGUgY29tbWFuZCB3YWl0cyBmb3IgcGFnZSB0byBsb2FkIGJlZm9yZVxyXG4gKiAgICAgICAgICAgICAgcHJvY2VlZGluZy5cclxuICogQGZ1bmN0aW9uIGNsaWNrXHJcbiAqIEBwYXJhbSB7U3RyaW5nfEVsZW1lbnR9IGxvY2F0b3IgLSBBbiBlbGVtZW50IGxvY2F0b3IuXHJcbiAqIEBwYXJhbSB7TnVtYmVyPX0gdGltZW91dCAtIFRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzLiBEZWZhdWx0IGlzIDYwIHNlY29uZHMuXHJcbiAqIEBleGFtcGxlIDxjYXB0aW9uPltqYXZhc2NyaXB0XSBVc2FnZSBleGFtcGxlPC9jYXB0aW9uPlxyXG4gKiB3ZWIuaW5pdCgpOy8vT3BlbnMgYnJvd3NlciBzZXNzaW9uLlxyXG4gKiB3ZWIub3BlbihcInd3dy55b3Vyd2Vic2l0ZS5jb21cIik7Ly8gT3BlbnMgYSB3ZWJzaXRlLlxyXG4gKiB3ZWIuY2xpY2soXCJpZD1OZXh0UGFnZVwiKTsvL0NsaWNrcyBvbiBuZXh0IHBhZ2UgbGluay5cclxuICovXHJcbm1vZHVsZS5leHBvcnRzID0gYXN5bmMgZnVuY3Rpb24obG9jYXRvciwgdGltZW91dCkge1xyXG4gICAgdGhpcy5oZWxwZXJzLmFzc2VydEFyZ3VtZW50VGltZW91dCh0aW1lb3V0LCAndGltZW91dCcpO1xyXG4gICAgdGhpcy5yZXRyeUNvdW50ID0gMztcclxuICAgIHRoaXMuY2xpY2tKUyA9IGFzeW5jIChlbCkgPT4gIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAvKmdsb2JhbCBkb2N1bWVudCovXHJcbiAgICAgICAgICAgIGNvbnN0IHJldFZhbCA9IGF3YWl0IHRoaXMuZHJpdmVyLmV4ZWN1dGUoZnVuY3Rpb24oZG9tRWwpIHtcclxuICAgICAgICAgICAgICAgIC8vIGNyZWF0ZUV2ZW50IHdvbid0IGJlIGF2YWlsYWJsZSBpbiBJRSA8IDkgY29tcGF0aWJpbGl0eSBtb2RlXHJcbiAgICAgICAgICAgICAgICBpZiAoIWRvY3VtZW50LmNyZWF0ZUV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmNyZWF0ZUV2ZW50T2JqZWN0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBldiA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50T2JqZWN0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvbUVsLmZpcmVFdmVudCgnb25jbGljaycsIGV2KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsgLy8gZmFpbCBzaWxlbnRseVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHZhciBjbGNrRXYgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnTW91c2VFdmVudCcpO1xyXG4gICAgICAgICAgICAgICAgY2xja0V2LmluaXRFdmVudCgnY2xpY2snLCB0cnVlLCB0cnVlKTtcclxuICAgICAgICAgICAgICAgIGRvbUVsLmRpc3BhdGNoRXZlbnQoY2xja0V2KTtcclxuICAgICAgICAgICAgfSwgZWwpO1xyXG5cclxuICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBlcnJvcjogJ25vIHN1Y2ggZWxlbWVudCcsXHJcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogJ0Vycm9yIGV4ZWN1dGluZyBKYXZhU2NyaXB0JyxcclxuICAgICAgICAgICAgICAgICAgICBzdGFja3RyYWNlOiAnJ1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAqL1xyXG4gICAgICAgICAgICBpZiAocmV0VmFsICYmIHJldFZhbC5lcnJvciAmJiByZXRWYWwubWVzc2FnZSkge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHJldFZhbC5lcnJvciArICcgJyArIHJldFZhbC5tZXNzYWdlKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdjbGlja0pTIGZhaWx1cmUnKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coZSk7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnJldHJ5Q291bnQpIHtcclxuICAgICAgICAgICAgICAgIC0tdGhpcy5yZXRyeUNvdW50O1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5jbGlja0pTKGVsKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRocm93IGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHZhciBlbCA9IGF3YWl0IHRoaXMuaGVscGVycy5nZXRFbGVtZW50KGxvY2F0b3IsIGZhbHNlLCB0aW1lb3V0KTtcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICAgIHZhciBjbGlja2FibGUgPSBhd2FpdCBlbC5pc0NsaWNrYWJsZSgpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdFbGVtZW50IGNsaWNrYWJsZTogJyArIGNsaWNrYWJsZSk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgbGV0IGRvY3VtZW50TW9kZTtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHRoaXMuZHJpdmVyICYmXHJcbiAgICAgICAgICAgIHRoaXMuZHJpdmVyLmNhcGFiaWxpdGllcyAmJlxyXG4gICAgICAgICAgICB0aGlzLmRyaXZlci5jYXBhYmlsaXRpZXMuYnJvd3Nlck5hbWUgPT09ICdpbnRlcm5ldCBleHBsb3JlcidcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ0ZhbGxpbmcgYmFjayB0byBJRSB3b3JrYXJvdW5kJyk7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudE1vZGUgPSBhd2FpdCB0aGlzLmRyaXZlci5leGVjdXRlKGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB3aW5kb3cuZG9jdW1lbnQuZG9jdW1lbnRNb2RlO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIC8vIGlnbm9yZVxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICBkb2N1bWVudE1vZGUgJiZcclxuICAgICAgICAgICAgICAgIFs1LCA2LCA3LCA4LCA5LCAxMF0uaW5jbHVkZXMocGFyc2VJbnQoZG9jdW1lbnRNb2RlKSlcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICBjbGlja2FibGUgPSB0cnVlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoY2xpY2thYmxlKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ1BlcmZvcm1pbmcgZWwuY2xpY2snKTtcclxuICAgICAgICAgICAgYXdhaXQgZWwuY2xpY2soKTtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coJ2VsLmNsaWNrIGRvbmUnKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIC8vIGNocm9tZWRyaXZlciBkb2Vzbid0IHNlZW0gdG8gc3VwcG9ydCBjbGlja2luZyBvbiBlbGVtZW50cyBpbiBTaGFkb3cgRE9NXHJcbiAgICAgICAgICAgIGlmIChlLm1lc3NhZ2Uuc3RhcnRzV2l0aChcImphdmFzY3JpcHQgZXJyb3I6IENhbm5vdCByZWFkIHByb3BlcnR5ICdkZWZhdWx0Vmlldycgb2YgdW5kZWZpbmVkXCIpKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnZWwuY2xpY2sgZmFpbGVkIGR1ZSB0byBtaXNzaW5nIGRlZmF1bHRWaWV3LiBGYWxsaW5nIGJhY2sgdG8gY2xpY2tKUycpO1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5jbGlja0pTKGVsKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRocm93IGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIGlmIGVsZW1lbnQgaXMgbm90IGNsaWNrYWJsZSwgdHJ5IGNsaWNraW5nIGl0IHVzaW5nIEpTIGluamVjdGlvblxyXG4gICAgICAgIGNvbnNvbGUubG9nKCdFbGVtZW50IG5vdCBjbGlja2FibGUuIEludm9raW5nIGNsaWtjSlMnKTtcclxuICAgICAgICBhd2FpdCB0aGlzLmNsaWNrSlMoZWwpO1xyXG4gICAgfVxyXG5cclxuICAgIGF3YWl0IHRoaXMuY2hlY2tXYWl0Rm9yQW5ndWxhcigpO1xyXG59O1xyXG4iXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oxygen-cli",
3
- "version": "1.22.2",
3
+ "version": "1.23.0",
4
4
  "description": "Automation framework for testing modern applications",
5
5
  "main": "./build/index.js",
6
6
  "bin": {
@@ -47,18 +47,18 @@
47
47
  "npm-run-all": "4.1.5"
48
48
  },
49
49
  "dependencies": {
50
- "@applitools/eyes-webdriverio": "5.34.11",
51
- "@lambdatest/node-rest-client": "1.0.0",
50
+ "@applitools/eyes-webdriverio": "5.35.3",
51
+ "@lambdatest/node-rest-client": "1.0.2",
52
52
  "@oxygenhq/chrome-remote-interface": "0.30.0",
53
53
  "@oxygenhq/logger": "0.5.1",
54
54
  "@oxygenhq/mitmproxy-node": "1.0.1",
55
- "@wdio/cli": "7.9.0",
56
- "@wdio/devtools-service": "7.9.0",
57
- "@wdio/sync": "7.9.0",
58
- "async": "3.2.3",
59
- "chai": "4.3.4",
55
+ "@wdio/cli": "7.20.2",
56
+ "@wdio/devtools-service": "7.20.2",
57
+ "@wdio/sync": "7.20.2",
58
+ "async": "3.2.4",
59
+ "chai": "4.3.6",
60
60
  "chrome-har": "0.11.12",
61
- "config": "3.3.6",
61
+ "config": "3.3.7",
62
62
  "cross-spawn": "7.0.3",
63
63
  "csv-parse": "4.16.0",
64
64
  "cucumber": "6.0.5",
@@ -67,18 +67,18 @@
67
67
  "easyxml": "2.0.1",
68
68
  "ejs": "3.0.2",
69
69
  "esm": "3.2.25",
70
- "fast-xml-parser": "^4.0.1",
70
+ "fast-xml-parser": "4.0.8",
71
71
  "fibers": "5.0.0",
72
72
  "glob": "7.1.7",
73
73
  "glob-to-regexp": "0.4.1",
74
74
  "global-agent": "3.0.0",
75
75
  "got": "11.8.2",
76
76
  "imap-simple": "5.1.0",
77
- "is-glob": "4.0.1",
77
+ "is-glob": "4.0.3",
78
78
  "jimp": "0.16.1",
79
79
  "junit-report-builder": "3.0.0",
80
80
  "lodash": "4.17.21",
81
- "mailparser": "3.4.0",
81
+ "mailparser": "3.5.0",
82
82
  "minimist": "1.2.6",
83
83
  "mockery": "2.1.0",
84
84
  "moment": "2.29.3",
@@ -89,16 +89,16 @@
89
89
  "request": "2.88.2",
90
90
  "saucelabs": "3.0.1",
91
91
  "serialport": "9.2.8",
92
- "soap": "0.43.0",
92
+ "soap": "0.44.0",
93
93
  "source-map-support": "0.5.21",
94
94
  "stacktrace-parser": "0.1.10",
95
- "testdouble": "3.16.5",
95
+ "testdouble": "3.16.6",
96
96
  "testingbot-api": "1.0.7",
97
97
  "text-to-image": "2.4.4",
98
- "twilio": "3.77.1",
99
- "webdriverio": "7.9.0",
98
+ "twilio": "3.77.2",
99
+ "webdriverio": "7.20.2",
100
100
  "when": "3.7.8",
101
- "xlsx": "0.17.4"
101
+ "xlsx": "0.18.5"
102
102
  },
103
103
  "optionalDependencies": {
104
104
  "odbc": "2.4.4"