appium-uiautomator2-driver 2.1.0 → 2.1.1

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.
@@ -237,4 +237,4 @@ var _default = CssConverter;
237
237
  exports.default = _default;require('source-map-support').install();
238
238
 
239
239
 
240
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jc3MtY29udmVydGVyLmpzIl0sIm5hbWVzIjpbInBhcnNlciIsIkNzc1NlbGVjdG9yUGFyc2VyIiwicmVnaXN0ZXJTZWxlY3RvclBzZXVkb3MiLCJyZWdpc3Rlck5lc3RpbmdPcGVyYXRvcnMiLCJyZWdpc3RlckF0dHJFcXVhbGl0eU1vZHMiLCJlbmFibGVTdWJzdGl0dXRlcyIsIlJFU09VUkNFX0lEIiwiSURfTE9DQVRPUl9QQVRURVJOIiwiQk9PTEVBTl9BVFRSUyIsIk5VTUVSSUNfQVRUUlMiLCJTVFJfQVRUUlMiLCJBTExfQVRUUlMiLCJBVFRSSUJVVEVfQUxJQVNFUyIsInRvU25ha2VDYXNlIiwic3RyIiwidG9rZW5zIiwic3BsaXQiLCJtYXAiLCJjaGFyQXQiLCJ0b1VwcGVyQ2FzZSIsInNsaWNlIiwidG9Mb3dlckNhc2UiLCJvdXQiLCJqb2luIiwiYXNzZXJ0R2V0Qm9vbCIsImNzcyIsInZhbCIsInZhbHVlIiwiaW5jbHVkZXMiLCJFcnJvciIsIm5hbWUiLCJhc3NlcnRHZXRBdHRyTmFtZSIsImF0dHJOYW1lIiwib2ZmaWNpYWxBdHRyIiwiYWxpYXNBdHRycyIsImdldFdvcmRNYXRjaGVyUmVnZXgiLCJ3b3JkIiwiQ3NzQ29udmVydGVyIiwiY29uc3RydWN0b3IiLCJzZWxlY3RvciIsInBrZyIsImZvcm1hdElkTG9jYXRvciIsImxvY2F0b3IiLCJ0ZXN0IiwicGFyc2VBdHRyIiwiY3NzQXR0ciIsInZhbHVlVHlwZSIsIm1ldGhvZE5hbWUiLCJvcGVyYXRvciIsInBhcnNlUHNldWRvIiwiY3NzUHNldWRvIiwicHNldWRvTmFtZSIsInBhcnNlQ3NzUnVsZSIsImNzc1J1bGUiLCJuZXN0aW5nT3BlcmF0b3IiLCJ1aUF1dG9tYXRvclNlbGVjdG9yIiwidGFnTmFtZSIsImFuZHJvaWRDbGFzcyIsImNsYXNzTmFtZXMiLCJjc3NDbGFzc05hbWVzIiwicHVzaCIsImlkIiwiYXR0cnMiLCJhdHRyIiwicHNldWRvcyIsInBzZXVkbyIsInJ1bGUiLCJwYXJzZUNzc09iamVjdCIsInR5cGUiLCJzZWxlY3RvcnMiLCJ0b1VpQXV0b21hdG9yU2VsZWN0b3IiLCJjc3NPYmoiLCJwYXJzZSIsImUiLCJlcnJvcnMiLCJJbnZhbGlkU2VsZWN0b3JFcnJvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsTUFBTSxHQUFHLElBQUlDLG9DQUFKLEVBQWY7QUFDQUQsTUFBTSxDQUFDRSx1QkFBUCxDQUErQixLQUEvQjtBQUNBRixNQUFNLENBQUNHLHdCQUFQLENBQWdDLEdBQWhDLEVBQXFDLEdBQXJDLEVBQTBDLEdBQTFDO0FBQ0FILE1BQU0sQ0FBQ0ksd0JBQVAsQ0FBZ0MsR0FBaEMsRUFBcUMsR0FBckMsRUFBMEMsR0FBMUMsRUFBK0MsR0FBL0M7QUFDQUosTUFBTSxDQUFDSyxpQkFBUDtBQUVBLE1BQU1DLFdBQVcsR0FBRyxhQUFwQjtBQUNBLE1BQU1DLGtCQUFrQixHQUFHLHFDQUEzQjtBQUVBLE1BQU1DLGFBQWEsR0FBRyxDQUNwQixXQURvQixFQUNQLFNBRE8sRUFDSSxXQURKLEVBQ2lCLFNBRGpCLEVBQzRCLFdBRDVCLEVBRXBCLFNBRm9CLEVBRVQsZ0JBRlMsRUFFUyxZQUZULEVBRXVCLFVBRnZCLENBQXRCO0FBS0EsTUFBTUMsYUFBYSxHQUFHLENBQ3BCLE9BRG9CLEVBQ1gsVUFEVyxDQUF0QjtBQUlBLE1BQU1DLFNBQVMsR0FBRyxDQUNoQixhQURnQixFQUNESixXQURDLEVBQ1ksTUFEWixFQUNvQixZQURwQixFQUNrQyxjQURsQyxDQUFsQjtBQUlBLE1BQU1LLFNBQVMsR0FBRyxDQUNoQixHQUFHSCxhQURhLEVBRWhCLEdBQUdDLGFBRmEsRUFHaEIsR0FBR0MsU0FIYSxDQUFsQjtBQU1BLE1BQU1FLGlCQUFpQixHQUFHLENBQ3hCLENBQUNOLFdBQUQsRUFBYyxDQUFDLElBQUQsQ0FBZCxDQUR3QixFQUV4QixDQUFDLGFBQUQsRUFBZ0IsQ0FDZCxxQkFEYyxFQUNTLGNBRFQsRUFFZCxNQUZjLEVBRU4sa0JBRk0sQ0FBaEIsQ0FGd0IsRUFNeEIsQ0FBQyxPQUFELEVBQVUsQ0FBQyxXQUFELENBQVYsQ0FOd0IsQ0FBMUI7O0FBZUEsU0FBU08sV0FBVCxDQUFzQkMsR0FBdEIsRUFBMkI7QUFDekIsTUFBSSxDQUFDQSxHQUFMLEVBQVU7QUFDUixXQUFPLEVBQVA7QUFDRDs7QUFDRCxRQUFNQyxNQUFNLEdBQUdELEdBQUcsQ0FBQ0UsS0FBSixDQUFVLEdBQVYsRUFBZUMsR0FBZixDQUFvQkgsR0FBRCxJQUFTQSxHQUFHLENBQUNJLE1BQUosQ0FBVyxDQUFYLEVBQWNDLFdBQWQsS0FBOEJMLEdBQUcsQ0FBQ00sS0FBSixDQUFVLENBQVYsRUFBYUMsV0FBYixFQUExRCxDQUFmO0FBQ0EsUUFBTUMsR0FBRyxHQUFHUCxNQUFNLENBQUNRLElBQVAsQ0FBWSxFQUFaLENBQVo7QUFDQSxTQUFPRCxHQUFHLENBQUNKLE1BQUosQ0FBVyxDQUFYLEVBQWNHLFdBQWQsS0FBOEJDLEdBQUcsQ0FBQ0YsS0FBSixDQUFVLENBQVYsQ0FBckM7QUFDRDs7QUFjRCxTQUFTSSxhQUFULENBQXdCQyxHQUF4QixFQUE2QjtBQUFBOztBQUMzQixRQUFNQyxHQUFHLEdBQUcsZUFBQUQsR0FBRyxDQUFDRSxLQUFKLDBEQUFXTixXQUFYLE9BQTRCLE1BQXhDOztBQUNBLE1BQUksQ0FBQyxNQUFELEVBQVMsT0FBVCxFQUFrQk8sUUFBbEIsQ0FBMkJGLEdBQTNCLENBQUosRUFBcUM7QUFDbkMsV0FBT0EsR0FBUDtBQUNEOztBQUNELFFBQU0sSUFBSUcsS0FBSixDQUFXLElBQUdKLEdBQUcsQ0FBQ0ssSUFBSywwQ0FBeUNMLEdBQUcsQ0FBQ0UsS0FBTSxHQUExRSxDQUFOO0FBQ0Q7O0FBV0QsU0FBU0ksaUJBQVQsQ0FBNEJOLEdBQTVCLEVBQWlDO0FBQy9CLFFBQU1PLFFBQVEsR0FBR1AsR0FBRyxDQUFDSyxJQUFKLENBQVNULFdBQVQsRUFBakI7O0FBR0EsTUFBSVYsU0FBUyxDQUFDaUIsUUFBVixDQUFtQkksUUFBbkIsQ0FBSixFQUFrQztBQUNoQyxXQUFPQSxRQUFRLENBQUNYLFdBQVQsRUFBUDtBQUNEOztBQUdELE9BQUssTUFBTSxDQUFDWSxZQUFELEVBQWVDLFVBQWYsQ0FBWCxJQUF5Q3RCLGlCQUF6QyxFQUE0RDtBQUMxRCxRQUFJc0IsVUFBVSxDQUFDTixRQUFYLENBQW9CSSxRQUFwQixDQUFKLEVBQW1DO0FBQ2pDLGFBQU9DLFlBQVA7QUFDRDtBQUNGOztBQUNELFFBQU0sSUFBSUosS0FBSixDQUFXLElBQUdHLFFBQVMsOEJBQWIsR0FDYiw2QkFBNEJyQixTQUFTLENBQUNZLElBQVYsQ0FBZSxJQUFmLENBQXFCLEdBRDlDLENBQU47QUFFRDs7QUFRRCxTQUFTWSxtQkFBVCxDQUE4QkMsSUFBOUIsRUFBb0M7QUFDbEMsU0FBUSxXQUFVLDBCQUFhQSxJQUFiLENBQW1CLFVBQXJDO0FBQ0Q7O0FBZ0NELE1BQU1DLFlBQU4sQ0FBbUI7QUFFakJDLEVBQUFBLFdBQVcsQ0FBRUMsUUFBRixFQUFZQyxHQUFaLEVBQWlCO0FBQzFCLFNBQUtELFFBQUwsR0FBZ0JBLFFBQWhCO0FBQ0EsU0FBS0MsR0FBTCxHQUFXQSxHQUFYO0FBQ0Q7O0FBUURDLEVBQUFBLGVBQWUsQ0FBRUMsT0FBRixFQUFXO0FBQ3hCLFdBQU9uQyxrQkFBa0IsQ0FBQ29DLElBQW5CLENBQXdCRCxPQUF4QixJQUNIQSxPQURHLEdBRUYsR0FBRSxLQUFLRixHQUFMLElBQVksU0FBVSxPQUFNRSxPQUFRLEVBRjNDO0FBR0Q7O0FBUURFLEVBQUFBLFNBQVMsQ0FBRUMsT0FBRixFQUFXO0FBQ2xCLFFBQUlBLE9BQU8sQ0FBQ0MsU0FBUixJQUFxQkQsT0FBTyxDQUFDQyxTQUFSLEtBQXNCLFFBQS9DLEVBQXlEO0FBQ3ZELFlBQU0sSUFBSWpCLEtBQUosQ0FBVyxJQUFHZ0IsT0FBTyxDQUFDZixJQUFLLElBQUdlLE9BQU8sQ0FBQ2xCLEtBQU0sNkJBQWxDLEdBQ2IsaUVBQWdFa0IsT0FBTyxDQUFDQyxTQUFVLEdBRC9FLENBQU47QUFFRDs7QUFDRCxVQUFNZCxRQUFRLEdBQUdELGlCQUFpQixDQUFDYyxPQUFELENBQWxDO0FBQ0EsVUFBTUUsVUFBVSxHQUFHbEMsV0FBVyxDQUFDbUIsUUFBRCxDQUE5Qjs7QUFHQSxRQUFJLENBQUN0QixTQUFTLENBQUNrQixRQUFWLENBQW1CSSxRQUFuQixDQUFELElBQWlDLENBQUN4QixhQUFhLENBQUNvQixRQUFkLENBQXVCSSxRQUF2QixDQUF0QyxFQUF3RTtBQUN0RSxZQUFNLElBQUlILEtBQUosQ0FBVyxJQUFHRyxRQUFTLCtDQUFiLEdBQ2IsSUFBRyxDQUFDLEdBQUd0QixTQUFKLEVBQWUsR0FBR0YsYUFBbEIsRUFBaUNlLElBQWpDLENBQXNDLElBQXRDLENBQTRDLEdBRDVDLENBQU47QUFFRDs7QUFHRCxRQUFJZixhQUFhLENBQUNvQixRQUFkLENBQXVCSSxRQUF2QixDQUFKLEVBQXNDO0FBQ3BDLGFBQVEsSUFBR2UsVUFBVyxJQUFHdkIsYUFBYSxDQUFDcUIsT0FBRCxDQUFVLEdBQWhEO0FBQ0Q7O0FBR0QsUUFBSWxCLEtBQUssR0FBR2tCLE9BQU8sQ0FBQ2xCLEtBQVIsSUFBaUIsRUFBN0I7O0FBQ0EsUUFBSUssUUFBUSxLQUFLMUIsV0FBakIsRUFBOEI7QUFDNUJxQixNQUFBQSxLQUFLLEdBQUcsS0FBS2MsZUFBTCxDQUFxQmQsS0FBckIsQ0FBUjtBQUNEOztBQUNELFFBQUlBLEtBQUssS0FBSyxFQUFkLEVBQWtCO0FBQ2hCLGFBQVEsSUFBR29CLFVBQVcsYUFBdEI7QUFDRDs7QUFFRCxZQUFRRixPQUFPLENBQUNHLFFBQWhCO0FBQ0UsV0FBSyxHQUFMO0FBQ0UsZUFBUSxJQUFHRCxVQUFXLEtBQUlwQixLQUFNLElBQWhDOztBQUNGLFdBQUssSUFBTDtBQUNFLFlBQUksQ0FBQyxhQUFELEVBQWdCLE1BQWhCLEVBQXdCQyxRQUF4QixDQUFpQ0ksUUFBakMsQ0FBSixFQUFnRDtBQUM5QyxpQkFBUSxJQUFHZSxVQUFXLGFBQVlwQixLQUFNLElBQXhDO0FBQ0Q7O0FBQ0QsZUFBUSxJQUFHb0IsVUFBVyxZQUFXLDBCQUFhcEIsS0FBYixDQUFvQixJQUFyRDs7QUFDRixXQUFLLElBQUw7QUFDRSxZQUFJLENBQUMsYUFBRCxFQUFnQixNQUFoQixFQUF3QkMsUUFBeEIsQ0FBaUNJLFFBQWpDLENBQUosRUFBZ0Q7QUFDOUMsaUJBQVEsSUFBR2UsVUFBVyxlQUFjcEIsS0FBTSxJQUExQztBQUNEOztBQUNELGVBQVEsSUFBR29CLFVBQVcsYUFBWSwwQkFBYXBCLEtBQWIsQ0FBb0IsSUFBdEQ7O0FBQ0YsV0FBSyxJQUFMO0FBQ0UsZUFBUSxJQUFHb0IsVUFBVyxZQUFXLDBCQUFhcEIsS0FBYixDQUFvQixLQUFyRDs7QUFDRixXQUFLLElBQUw7QUFDRSxlQUFRLElBQUdvQixVQUFXLFlBQVdaLG1CQUFtQixDQUFDUixLQUFELENBQVEsSUFBNUQ7O0FBQ0Y7QUFFRSxjQUFNLElBQUlFLEtBQUosQ0FBVyx1Q0FBc0NnQixPQUFPLENBQUNHLFFBQVMsS0FBeEQsR0FDYixnREFERyxDQUFOO0FBbkJKO0FBc0JEOztBQVFEQyxFQUFBQSxXQUFXLENBQUVDLFNBQUYsRUFBYTtBQUN0QixRQUFJQSxTQUFTLENBQUNKLFNBQVYsSUFBdUJJLFNBQVMsQ0FBQ0osU0FBVixLQUF3QixRQUFuRCxFQUE2RDtBQUMzRCxZQUFNLElBQUlqQixLQUFKLENBQVcsSUFBR3FCLFNBQVMsQ0FBQ3BCLElBQUssSUFBR29CLFNBQVMsQ0FBQ3ZCLEtBQU0sS0FBdEMsR0FDYiw2Q0FBNEN1QixTQUFTLENBQUNKLFNBQVUsOENBRDdELENBQU47QUFFRDs7QUFFRCxVQUFNSyxVQUFVLEdBQUdwQixpQkFBaUIsQ0FBQ21CLFNBQUQsQ0FBcEM7O0FBRUEsUUFBSTFDLGFBQWEsQ0FBQ29CLFFBQWQsQ0FBdUJ1QixVQUF2QixDQUFKLEVBQXdDO0FBQ3RDLGFBQVEsSUFBR3RDLFdBQVcsQ0FBQ3NDLFVBQUQsQ0FBYSxJQUFHM0IsYUFBYSxDQUFDMEIsU0FBRCxDQUFZLEdBQS9EO0FBQ0Q7O0FBRUQsUUFBSXpDLGFBQWEsQ0FBQ21CLFFBQWQsQ0FBdUJ1QixVQUF2QixDQUFKLEVBQXdDO0FBQ3RDLGFBQVEsSUFBR0EsVUFBVyxJQUFHRCxTQUFTLENBQUN2QixLQUFNLEdBQXpDO0FBQ0Q7QUFDRjs7QUFNRHlCLEVBQUFBLFlBQVksQ0FBRUMsT0FBRixFQUFXO0FBQ3JCLFVBQU07QUFBRUMsTUFBQUE7QUFBRixRQUFzQkQsT0FBNUI7O0FBQ0EsUUFBSUMsZUFBZSxJQUFJQSxlQUFlLEtBQUssR0FBM0MsRUFBZ0Q7QUFDOUMsWUFBTSxJQUFJekIsS0FBSixDQUFXLElBQUd5QixlQUFnQixtQ0FBcEIsR0FDYixvRUFERyxDQUFOO0FBRUQ7O0FBRUQsUUFBSUMsbUJBQW1CLEdBQUcsa0JBQTFCOztBQUNBLFFBQUlGLE9BQU8sQ0FBQ0csT0FBUixJQUFtQkgsT0FBTyxDQUFDRyxPQUFSLEtBQW9CLEdBQTNDLEVBQWdEO0FBQzlDLFVBQUlDLFlBQVksR0FBRyxDQUFDSixPQUFPLENBQUNHLE9BQVQsQ0FBbkI7O0FBQ0EsVUFBSUgsT0FBTyxDQUFDSyxVQUFaLEVBQXdCO0FBQ3RCLGFBQUssTUFBTUMsYUFBWCxJQUE0Qk4sT0FBTyxDQUFDSyxVQUFwQyxFQUFnRDtBQUM5Q0QsVUFBQUEsWUFBWSxDQUFDRyxJQUFiLENBQWtCRCxhQUFsQjtBQUNEOztBQUNESixRQUFBQSxtQkFBbUIsSUFBSyxlQUFjRSxZQUFZLENBQUNsQyxJQUFiLENBQWtCLEdBQWxCLENBQXVCLElBQTdEO0FBQ0QsT0FMRCxNQUtPO0FBQ0xnQyxRQUFBQSxtQkFBbUIsSUFBSyxzQkFBcUJGLE9BQU8sQ0FBQ0csT0FBUSxJQUE3RDtBQUNEO0FBQ0YsS0FWRCxNQVVPLElBQUlILE9BQU8sQ0FBQ0ssVUFBWixFQUF3QjtBQUM3QkgsTUFBQUEsbUJBQW1CLElBQUssc0JBQXFCRixPQUFPLENBQUNLLFVBQVIsQ0FBbUJuQyxJQUFuQixDQUF3QixLQUF4QixDQUErQixJQUE1RTtBQUNEOztBQUNELFFBQUk4QixPQUFPLENBQUNRLEVBQVosRUFBZ0I7QUFDZE4sTUFBQUEsbUJBQW1CLElBQUssZ0JBQWUsS0FBS2QsZUFBTCxDQUFxQlksT0FBTyxDQUFDUSxFQUE3QixDQUFpQyxJQUF4RTtBQUNEOztBQUNELFFBQUlSLE9BQU8sQ0FBQ1MsS0FBWixFQUFtQjtBQUNqQixXQUFLLE1BQU1DLElBQVgsSUFBbUJWLE9BQU8sQ0FBQ1MsS0FBM0IsRUFBa0M7QUFDaENQLFFBQUFBLG1CQUFtQixJQUFJLEtBQUtYLFNBQUwsQ0FBZW1CLElBQWYsQ0FBdkI7QUFDRDtBQUNGOztBQUNELFFBQUlWLE9BQU8sQ0FBQ1csT0FBWixFQUFxQjtBQUNuQixXQUFLLE1BQU1DLE1BQVgsSUFBcUJaLE9BQU8sQ0FBQ1csT0FBN0IsRUFBc0M7QUFDcENULFFBQUFBLG1CQUFtQixJQUFJLEtBQUtOLFdBQUwsQ0FBaUJnQixNQUFqQixDQUF2QjtBQUNEO0FBQ0Y7O0FBQ0QsUUFBSVosT0FBTyxDQUFDYSxJQUFaLEVBQWtCO0FBQ2hCWCxNQUFBQSxtQkFBbUIsSUFBSyxrQkFBaUIsS0FBS0gsWUFBTCxDQUFrQkMsT0FBTyxDQUFDYSxJQUExQixDQUFnQyxHQUF6RTtBQUNEOztBQUNELFdBQU9YLG1CQUFQO0FBQ0Q7O0FBT0RZLEVBQUFBLGNBQWMsQ0FBRTFDLEdBQUYsRUFBTztBQUNuQixZQUFRQSxHQUFHLENBQUMyQyxJQUFaO0FBQ0UsV0FBSyxNQUFMO0FBQ0UsZUFBTyxLQUFLaEIsWUFBTCxDQUFrQjNCLEdBQWxCLENBQVA7O0FBQ0YsV0FBSyxTQUFMO0FBQ0UsZUFBTyxLQUFLMEMsY0FBTCxDQUFvQjFDLEdBQUcsQ0FBQ3lDLElBQXhCLENBQVA7O0FBQ0YsV0FBSyxXQUFMO0FBQ0UsZUFBT3pDLEdBQUcsQ0FBQzRDLFNBQUosQ0FBY3BELEdBQWQsQ0FBbUJzQixRQUFELElBQWMsS0FBSzRCLGNBQUwsQ0FBb0I1QixRQUFwQixDQUFoQyxFQUErRGhCLElBQS9ELENBQW9FLElBQXBFLENBQVA7O0FBRUY7QUFFRSxjQUFNLElBQUlNLEtBQUosQ0FBVyxpQ0FBZ0NKLEdBQUcsQ0FBQzJDLElBQUssc0RBQXBELENBQU47QUFWSjtBQVlEOztBQU9ERSxFQUFBQSxxQkFBcUIsR0FBSTtBQUN2QixRQUFJQyxNQUFKOztBQUNBLFFBQUk7QUFDRkEsTUFBQUEsTUFBTSxHQUFHdkUsTUFBTSxDQUFDd0UsS0FBUCxDQUFhLEtBQUtqQyxRQUFsQixDQUFUO0FBQ0QsS0FGRCxDQUVFLE9BQU9rQyxDQUFQLEVBQVU7QUFDVixZQUFNLElBQUlDLG1CQUFPQyxvQkFBWCxDQUFpQyx5QkFBd0IsS0FBS3BDLFFBQVMsZUFBY2tDLENBQUUsR0FBdkYsQ0FBTjtBQUNEOztBQUNELFFBQUk7QUFDRixhQUFPLEtBQUtOLGNBQUwsQ0FBb0JJLE1BQXBCLENBQVA7QUFDRCxLQUZELENBRUUsT0FBT0UsQ0FBUCxFQUFVO0FBQ1YsWUFBTSxJQUFJQyxtQkFBT0Msb0JBQVgsQ0FBaUMsNkJBQTRCLEtBQUtwQyxRQUFTLGVBQWNrQyxDQUFFLEdBQTNGLENBQU47QUFDRDtBQUNGOztBQXJMZ0I7O2VBd0xKcEMsWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENzc1NlbGVjdG9yUGFyc2VyIH0gZnJvbSAnY3NzLXNlbGVjdG9yLXBhcnNlcic7XG5pbXBvcnQgeyBlc2NhcGVSZWdFeHAgfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5cbmNvbnN0IHBhcnNlciA9IG5ldyBDc3NTZWxlY3RvclBhcnNlcigpO1xucGFyc2VyLnJlZ2lzdGVyU2VsZWN0b3JQc2V1ZG9zKCdoYXMnKTtcbnBhcnNlci5yZWdpc3Rlck5lc3RpbmdPcGVyYXRvcnMoJz4nLCAnKycsICd+Jyk7XG5wYXJzZXIucmVnaXN0ZXJBdHRyRXF1YWxpdHlNb2RzKCdeJywgJyQnLCAnKicsICd+Jyk7XG5wYXJzZXIuZW5hYmxlU3Vic3RpdHV0ZXMoKTtcblxuY29uc3QgUkVTT1VSQ0VfSUQgPSAncmVzb3VyY2UtaWQnO1xuY29uc3QgSURfTE9DQVRPUl9QQVRURVJOID0gL15bYS16QS1aX11bYS16QS1aMC05Ll9dKjppZFxcL1tcXFNdKyQvO1xuXG5jb25zdCBCT09MRUFOX0FUVFJTID0gW1xuICAnY2hlY2thYmxlJywgJ2NoZWNrZWQnLCAnY2xpY2thYmxlJywgJ2VuYWJsZWQnLCAnZm9jdXNhYmxlJyxcbiAgJ2ZvY3VzZWQnLCAnbG9uZy1jbGlja2FibGUnLCAnc2Nyb2xsYWJsZScsICdzZWxlY3RlZCcsXG5dO1xuXG5jb25zdCBOVU1FUklDX0FUVFJTID0gW1xuICAnaW5kZXgnLCAnaW5zdGFuY2UnLFxuXTtcblxuY29uc3QgU1RSX0FUVFJTID0gW1xuICAnZGVzY3JpcHRpb24nLCBSRVNPVVJDRV9JRCwgJ3RleHQnLCAnY2xhc3MtbmFtZScsICdwYWNrYWdlLW5hbWUnXG5dO1xuXG5jb25zdCBBTExfQVRUUlMgPSBbXG4gIC4uLkJPT0xFQU5fQVRUUlMsXG4gIC4uLk5VTUVSSUNfQVRUUlMsXG4gIC4uLlNUUl9BVFRSUyxcbl07XG5cbmNvbnN0IEFUVFJJQlVURV9BTElBU0VTID0gW1xuICBbUkVTT1VSQ0VfSUQsIFsnaWQnXV0sXG4gIFsnZGVzY3JpcHRpb24nLCBbXG4gICAgJ2NvbnRlbnQtZGVzY3JpcHRpb24nLCAnY29udGVudC1kZXNjJyxcbiAgICAnZGVzYycsICdhY2Nlc3NpYmlsaXR5LWlkJyxcbiAgXV0sXG4gIFsnaW5kZXgnLCBbJ250aC1jaGlsZCddXSxcbl07XG5cbi8qKlxuICogQ29udmVydCBoeXBoZW4gc2VwYXJhdGVkIHdvcmQgdG8gc25ha2UgY2FzZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBoeXBoZW4gc2VwYXJhdGVkIHdvcmQgdHJhbnNsYXRlZCB0byBzbmFrZSBjYXNlXG4gKi9cbmZ1bmN0aW9uIHRvU25ha2VDYXNlIChzdHIpIHtcbiAgaWYgKCFzdHIpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgY29uc3QgdG9rZW5zID0gc3RyLnNwbGl0KCctJykubWFwKChzdHIpID0+IHN0ci5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0ci5zbGljZSgxKS50b0xvd2VyQ2FzZSgpKTtcbiAgY29uc3Qgb3V0ID0gdG9rZW5zLmpvaW4oJycpO1xuICByZXR1cm4gb3V0LmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsgb3V0LnNsaWNlKDEpO1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENzc05hbWVWYWx1ZU9iamVjdFxuICogQHByb3BlcnR5IHs/bmFtZX0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgQ1NTIG9iamVjdFxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIENTUyBvYmplY3RcbiAqL1xuXG4vKipcbiAqIEdldCB0aGUgYm9vbGVhbiBmcm9tIGEgQ1NTIG9iamVjdC4gSWYgZW1wdHksIHJldHVybiB0cnVlLiBJZiBub3QgdHJ1ZS9mYWxzZS9lbXB0eSwgdGhyb3cgZXhjZXB0aW9uXG4gKlxuICogQHBhcmFtIHtDc3NOYW1lVmFsdWVPYmplY3R9IGNzcyBBIENTUyBvYmplY3QgdGhhdCBoYXMgJ25hbWUnIGFuZCAndmFsdWUnXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBFaXRoZXIgJ3RydWUnIG9yICdmYWxzZScuIElmIHZhbHVlIGlzIGVtcHR5LCByZXR1cm4gJ3RydWUnXG4gKi9cbmZ1bmN0aW9uIGFzc2VydEdldEJvb2wgKGNzcykge1xuICBjb25zdCB2YWwgPSBjc3MudmFsdWU/LnRvTG93ZXJDYXNlKCkgfHwgJ3RydWUnOyAvLyBhbiBvbWl0dGVkIGJvb2xlYW4gYXR0cmlidXRlIG1lYW5zICd0cnVlJyAoZS5nLjogaW5wdXRbY2hlY2tlZF0gbWVhbnMgY2hlY2tlZCBpcyB0cnVlKVxuICBpZiAoWyd0cnVlJywgJ2ZhbHNlJ10uaW5jbHVkZXModmFsKSkge1xuICAgIHJldHVybiB2YWw7XG4gIH1cbiAgdGhyb3cgbmV3IEVycm9yKGAnJHtjc3MubmFtZX0nIG11c3QgYmUgdHJ1ZSwgZmFsc2Ugb3IgZW1wdHkuIEZvdW5kICcke2Nzcy52YWx1ZX0nYCk7XG59XG5cbi8qKlxuICogR2V0IHRoZSBjYW5vbmljYWwgZm9ybSBvZiBhIENTUyBhdHRyaWJ1dGUgbmFtZVxuICpcbiAqIENvbnZlcnRzIHRvIGxvd2VyY2FzZSBhbmQgaWYgYW4gYXR0cmlidXRlIG5hbWUgaXMgYW4gYWxpYXMgZm9yIHNvbWV0aGluZyBlbHNlLCByZXR1cm5cbiAqIHdoYXQgaXQgaXMgYW4gYWxpYXMgZm9yXG4gKlxuICogQHBhcmFtIHtPYmplY3R9IGNzcyBDU1Mgb2JqZWN0XG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY2Fub25pY2FsIGF0dHJpYnV0ZSBuYW1lXG4gKi9cbmZ1bmN0aW9uIGFzc2VydEdldEF0dHJOYW1lIChjc3MpIHtcbiAgY29uc3QgYXR0ck5hbWUgPSBjc3MubmFtZS50b0xvd2VyQ2FzZSgpO1xuXG4gIC8vIENoZWNrIGlmIGl0J3Mgc3VwcG9ydGVkIGFuZCBpZiBpdCBpcywgcmV0dXJuIGl0XG4gIGlmIChBTExfQVRUUlMuaW5jbHVkZXMoYXR0ck5hbWUpKSB7XG4gICAgcmV0dXJuIGF0dHJOYW1lLnRvTG93ZXJDYXNlKCk7XG4gIH1cblxuICAvLyBJZiBhdHRyTmFtZSBpcyBhbiBhbGlhcyBmb3Igc29tZXRoaW5nIGVsc2UsIHJldHVybiB0aGF0XG4gIGZvciAoY29uc3QgW29mZmljaWFsQXR0ciwgYWxpYXNBdHRyc10gb2YgQVRUUklCVVRFX0FMSUFTRVMpIHtcbiAgICBpZiAoYWxpYXNBdHRycy5pbmNsdWRlcyhhdHRyTmFtZSkpIHtcbiAgICAgIHJldHVybiBvZmZpY2lhbEF0dHI7XG4gICAgfVxuICB9XG4gIHRocm93IG5ldyBFcnJvcihgJyR7YXR0ck5hbWV9JyBpcyBub3QgYSB2YWxpZCBhdHRyaWJ1dGUuIGAgK1xuICAgIGBTdXBwb3J0ZWQgYXR0cmlidXRlcyBhcmUgJyR7QUxMX0FUVFJTLmpvaW4oJywgJyl9J2ApO1xufVxuXG4vKipcbiAqIEdldCBhIHJlZ2V4IHRoYXQgbWF0Y2hlcyBhIHdob2xlIHdvcmQuIEZvciB0aGUgfj0gQ1NTIGF0dHJpYnV0ZSBzZWxlY3Rvci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gd29yZFxuICogQHJldHVybnMge3N0cmluZ30gQSByZWdleCBcIndvcmRcIiBtYXRjaGVyXG4gKi9cbmZ1bmN0aW9uIGdldFdvcmRNYXRjaGVyUmVnZXggKHdvcmQpIHtcbiAgcmV0dXJuIGBcXFxcYihcXFxcdyoke2VzY2FwZVJlZ0V4cCh3b3JkKX1cXFxcdyopXFxcXGJgO1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENzc0F0dHJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdmFsdWVUeXBlIFR5cGUgb2YgYXR0cmlidXRlIChtdXN0IGJlIHN0cmluZyBvciBlbXB0eSlcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdmFsdWUgVmFsdWUgb2YgdGhlIGF0dHJpYnV0ZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBvcGVyYXRvciBUaGUgb3BlcmF0b3IgYmV0d2VlbiB2YWx1ZSBhbmQgdmFsdWUgdHlwZSAoPSwgKj0sICwgXj0sICQ9KVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQ3NzUnVsZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBuZXN0aW5nT3BlcmF0b3IgVGhlIG5lc3Rpbmcgb3BlcmF0b3IgKGFrYTogY29tYmluYXRvciBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvQ1NTX1NlbGVjdG9ycylcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdGFnTmFtZSBUaGUgdGFnIG5hbWUgKGFrYTogdHlwZSBzZWxlY3RvciBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvVHlwZV9zZWxlY3RvcnMpXG4gKiBAcHJvcGVydHkgez9zdHJpbmdbXX0gY2xhc3NOYW1lcyBBbiBhcnJheSBvZiBDU1MgY2xhc3MgbmFtZXNcbiAqIEBwcm9wZXJ0eSB7P0Nzc0F0dHJbXX0gYXR0cnMgQW4gYXJyYXkgb2YgQ1NTIGF0dHJpYnV0ZXNcbiAqIEBwcm9wZXJ0eSB7P0Nzc1BzZXVkb1tdfSBhdHRycyBBbiBhcnJheSBvZiBDU1MgcHNldWRvc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBpZCBDU1MgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHs/Q3NzUnVsZX0gcnVsZSBBIGRlc2NlbmRhbnQgb2YgdGhpcyBDU1MgcnVsZVxuICovXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQ3NzT2JqZWN0XG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHR5cGUgVHlwZSBvZiBDU1Mgb2JqZWN0LiAncnVsZScsICdydWxlc2V0JyBvciAnc2VsZWN0b3JzJ1xuICovXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQ3NzUHNldWRvXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHZhbHVlVHlwZSBUaGUgdHlwZSBvZiBDU1MgcHNldWRvIHNlbGVjdG9yIChodHRwczovL3d3dy5ucG1qcy5jb20vcGFja2FnZS9jc3Mtc2VsZWN0b3ItcGFyc2VyIGZvciByZWZlcmVuY2UpXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIHBzZXVkbyBzZWxlY3RvclxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIHBzZXVkbyBzZWxlY3RvclxuICovXG5cbmNsYXNzIENzc0NvbnZlcnRlciB7XG5cbiAgY29uc3RydWN0b3IgKHNlbGVjdG9yLCBwa2cpIHtcbiAgICB0aGlzLnNlbGVjdG9yID0gc2VsZWN0b3I7XG4gICAgdGhpcy5wa2cgPSBwa2c7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGA8cGtnTmFtZT46aWQvYCBwcmVmaXggdG8gYmVnaW5uaW5nIG9mIHN0cmluZyBpZiBpdCdzIG5vdCB0aGVyZSBhbHJlYWR5XG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhdG9yIFRoZSBpbml0aWFsIGxvY2F0b3JcbiAgICogQHJldHVybnMge3N0cmluZ30gU3RyaW5nIHdpdGggYDxwa2dOYW1lPjppZC9gIHByZXBlbmRlZCAoaWYgaXQgd2Fzbid0IGFscmVhZHkpXG4gICAqL1xuICBmb3JtYXRJZExvY2F0b3IgKGxvY2F0b3IpIHtcbiAgICByZXR1cm4gSURfTE9DQVRPUl9QQVRURVJOLnRlc3QobG9jYXRvcilcbiAgICAgID8gbG9jYXRvclxuICAgICAgOiBgJHt0aGlzLnBrZyB8fCAnYW5kcm9pZCd9OmlkLyR7bG9jYXRvcn1gO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBDU1MgYXR0cmlidXRlIGludG8gYSBVaVNlbGVjdG9yIG1ldGhvZCBjYWxsXG4gICAqXG4gICAqIEBwYXJhbSB7Q3NzQXR0cn0gY3NzQXR0ciBDU1MgYXR0cmlidXRlIG9iamVjdFxuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBDU1MgYXR0cmlidXRlIHBhcnNlZCBhcyBVaVNlbGVjdG9yXG4gICAqL1xuICBwYXJzZUF0dHIgKGNzc0F0dHIpIHtcbiAgICBpZiAoY3NzQXR0ci52YWx1ZVR5cGUgJiYgY3NzQXR0ci52YWx1ZVR5cGUgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCcke2Nzc0F0dHIubmFtZX09JHtjc3NBdHRyLnZhbHVlfScgaXMgYW4gaW52YWxpZCBhdHRyaWJ1dGUuIGAgK1xuICAgICAgICBgT25seSAnc3RyaW5nJyBhbmQgZW1wdHkgYXR0cmlidXRlIHR5cGVzIGFyZSBzdXBwb3J0ZWQuIEZvdW5kICcke2Nzc0F0dHIudmFsdWVUeXBlfSdgKTtcbiAgICB9XG4gICAgY29uc3QgYXR0ck5hbWUgPSBhc3NlcnRHZXRBdHRyTmFtZShjc3NBdHRyKTtcbiAgICBjb25zdCBtZXRob2ROYW1lID0gdG9TbmFrZUNhc2UoYXR0ck5hbWUpO1xuXG4gICAgLy8gVmFsaWRhdGUgdGhhdCBpdCdzIGEgc3VwcG9ydGVkIGF0dHJpYnV0ZVxuICAgIGlmICghU1RSX0FUVFJTLmluY2x1ZGVzKGF0dHJOYW1lKSAmJiAhQk9PTEVBTl9BVFRSUy5pbmNsdWRlcyhhdHRyTmFtZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJyR7YXR0ck5hbWV9JyBpcyBub3Qgc3VwcG9ydGVkLiBTdXBwb3J0ZWQgYXR0cmlidXRlcyBhcmUgYCArXG4gICAgICAgIGAnJHtbLi4uU1RSX0FUVFJTLCAuLi5CT09MRUFOX0FUVFJTXS5qb2luKCcsICcpfSdgKTtcbiAgICB9XG5cbiAgICAvLyBQYXJzZSBib29sZWFuLCBpZiBpdCdzIGEgYm9vbGVhbiBhdHRyaWJ1dGVcbiAgICBpZiAoQk9PTEVBTl9BVFRSUy5pbmNsdWRlcyhhdHRyTmFtZSkpIHtcbiAgICAgIHJldHVybiBgLiR7bWV0aG9kTmFtZX0oJHthc3NlcnRHZXRCb29sKGNzc0F0dHIpfSlgO1xuICAgIH1cblxuICAgIC8vIE90aGVyd2lzZSBwYXJzZSBhcyBzdHJpbmdcbiAgICBsZXQgdmFsdWUgPSBjc3NBdHRyLnZhbHVlIHx8ICcnO1xuICAgIGlmIChhdHRyTmFtZSA9PT0gUkVTT1VSQ0VfSUQpIHtcbiAgICAgIHZhbHVlID0gdGhpcy5mb3JtYXRJZExvY2F0b3IodmFsdWUpO1xuICAgIH1cbiAgICBpZiAodmFsdWUgPT09ICcnKSB7XG4gICAgICByZXR1cm4gYC4ke21ldGhvZE5hbWV9TWF0Y2hlcyhcIlwiKWA7XG4gICAgfVxuXG4gICAgc3dpdGNoIChjc3NBdHRyLm9wZXJhdG9yKSB7XG4gICAgICBjYXNlICc9JzpcbiAgICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfShcIiR7dmFsdWV9XCIpYDtcbiAgICAgIGNhc2UgJyo9JzpcbiAgICAgICAgaWYgKFsnZGVzY3JpcHRpb24nLCAndGV4dCddLmluY2x1ZGVzKGF0dHJOYW1lKSkge1xuICAgICAgICAgIHJldHVybiBgLiR7bWV0aG9kTmFtZX1Db250YWlucyhcIiR7dmFsdWV9XCIpYDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYC4ke21ldGhvZE5hbWV9TWF0Y2hlcyhcIiR7ZXNjYXBlUmVnRXhwKHZhbHVlKX1cIilgO1xuICAgICAgY2FzZSAnXj0nOlxuICAgICAgICBpZiAoWydkZXNjcmlwdGlvbicsICd0ZXh0J10uaW5jbHVkZXMoYXR0ck5hbWUpKSB7XG4gICAgICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfVN0YXJ0c1dpdGgoXCIke3ZhbHVlfVwiKWA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfU1hdGNoZXMoXCJeJHtlc2NhcGVSZWdFeHAodmFsdWUpfVwiKWA7XG4gICAgICBjYXNlICckPSc6XG4gICAgICAgIHJldHVybiBgLiR7bWV0aG9kTmFtZX1NYXRjaGVzKFwiJHtlc2NhcGVSZWdFeHAodmFsdWUpfSRcIilgO1xuICAgICAgY2FzZSAnfj0nOlxuICAgICAgICByZXR1cm4gYC4ke21ldGhvZE5hbWV9TWF0Y2hlcyhcIiR7Z2V0V29yZE1hdGNoZXJSZWdleCh2YWx1ZSl9XCIpYDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIFVucmVhY2hhYmxlLCBidXQgYWRkaW5nIGVycm9yIGluIGNhc2UgYSBuZXcgQ1NTIGF0dHJpYnV0ZSBpcyBhZGRlZC5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBDU1MgYXR0cmlidXRlIG9wZXJhdG9yICcke2Nzc0F0dHIub3BlcmF0b3J9Jy4gYCArXG4gICAgICAgICAgYCAnPScsICcqPScsICdePScsICckPScgYW5kICd+PScgYXJlIHN1cHBvcnRlZC5gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBhIENTUyBwc2V1ZG8gY2xhc3MgdG8gYSBVaVNlbGVjdG9yXG4gICAqXG4gICAqIEBwYXJhbSB7Q3NzUHNldWRvfSBjc3NQc2V1ZG8gQ1NTIFBzZXVkbyBjbGFzc1xuICAgKiBAcmV0dXJucyB7c3RyaW5nfSBQc2V1ZG8gc2VsZWN0b3IgcGFyc2VkIGFzIFVpU2VsZWN0b3JcbiAgICovXG4gIHBhcnNlUHNldWRvIChjc3NQc2V1ZG8pIHtcbiAgICBpZiAoY3NzUHNldWRvLnZhbHVlVHlwZSAmJiBjc3NQc2V1ZG8udmFsdWVUeXBlICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtjc3NQc2V1ZG8ubmFtZX09JHtjc3NQc2V1ZG8udmFsdWV9Jy4gYCArXG4gICAgICAgIGBVbnN1cHBvcnRlZCBjc3MgcHNldWRvIGNsYXNzIHZhbHVlIHR5cGU6ICcke2Nzc1BzZXVkby52YWx1ZVR5cGV9Jy4gT25seSAnc3RyaW5nJyB0eXBlIG9yIGVtcHR5IGlzIHN1cHBvcnRlZC5gKTtcbiAgICB9XG5cbiAgICBjb25zdCBwc2V1ZG9OYW1lID0gYXNzZXJ0R2V0QXR0ck5hbWUoY3NzUHNldWRvKTtcblxuICAgIGlmIChCT09MRUFOX0FUVFJTLmluY2x1ZGVzKHBzZXVkb05hbWUpKSB7XG4gICAgICByZXR1cm4gYC4ke3RvU25ha2VDYXNlKHBzZXVkb05hbWUpfSgke2Fzc2VydEdldEJvb2woY3NzUHNldWRvKX0pYDtcbiAgICB9XG5cbiAgICBpZiAoTlVNRVJJQ19BVFRSUy5pbmNsdWRlcyhwc2V1ZG9OYW1lKSkge1xuICAgICAgcmV0dXJuIGAuJHtwc2V1ZG9OYW1lfSgke2Nzc1BzZXVkby52YWx1ZX0pYDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBhIENTUyBydWxlIHRvIGEgVWlTZWxlY3RvclxuICAgKiBAcGFyYW0ge0Nzc1J1bGV9IGNzc1J1bGUgQ1NTIHJ1bGUgZGVmaW5pdGlvblxuICAgKi9cbiAgcGFyc2VDc3NSdWxlIChjc3NSdWxlKSB7XG4gICAgY29uc3QgeyBuZXN0aW5nT3BlcmF0b3IgfSA9IGNzc1J1bGU7XG4gICAgaWYgKG5lc3RpbmdPcGVyYXRvciAmJiBuZXN0aW5nT3BlcmF0b3IgIT09ICcgJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtuZXN0aW5nT3BlcmF0b3J9JyBpcyBub3QgYSBzdXBwb3J0ZWQgY29tYmluYXRvci4gYCArXG4gICAgICAgIGBPbmx5IGNoaWxkIGNvbWJpbmF0b3IgKD4pIGFuZCBkZXNjZW5kYW50IGNvbWJpbmF0b3IgYXJlIHN1cHBvcnRlZC5gKTtcbiAgICB9XG5cbiAgICBsZXQgdWlBdXRvbWF0b3JTZWxlY3RvciA9ICduZXcgVWlTZWxlY3RvcigpJztcbiAgICBpZiAoY3NzUnVsZS50YWdOYW1lICYmIGNzc1J1bGUudGFnTmFtZSAhPT0gJyonKSB7XG4gICAgICBsZXQgYW5kcm9pZENsYXNzID0gW2Nzc1J1bGUudGFnTmFtZV07XG4gICAgICBpZiAoY3NzUnVsZS5jbGFzc05hbWVzKSB7XG4gICAgICAgIGZvciAoY29uc3QgY3NzQ2xhc3NOYW1lcyBvZiBjc3NSdWxlLmNsYXNzTmFtZXMpIHtcbiAgICAgICAgICBhbmRyb2lkQ2xhc3MucHVzaChjc3NDbGFzc05hbWVzKTtcbiAgICAgICAgfVxuICAgICAgICB1aUF1dG9tYXRvclNlbGVjdG9yICs9IGAuY2xhc3NOYW1lKFwiJHthbmRyb2lkQ2xhc3Muam9pbignLicpfVwiKWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1aUF1dG9tYXRvclNlbGVjdG9yICs9IGAuY2xhc3NOYW1lTWF0Y2hlcyhcIiR7Y3NzUnVsZS50YWdOYW1lfVwiKWA7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjc3NSdWxlLmNsYXNzTmFtZXMpIHtcbiAgICAgIHVpQXV0b21hdG9yU2VsZWN0b3IgKz0gYC5jbGFzc05hbWVNYXRjaGVzKFwiJHtjc3NSdWxlLmNsYXNzTmFtZXMuam9pbignXFxcXC4nKX1cIilgO1xuICAgIH1cbiAgICBpZiAoY3NzUnVsZS5pZCkge1xuICAgICAgdWlBdXRvbWF0b3JTZWxlY3RvciArPSBgLnJlc291cmNlSWQoXCIke3RoaXMuZm9ybWF0SWRMb2NhdG9yKGNzc1J1bGUuaWQpfVwiKWA7XG4gICAgfVxuICAgIGlmIChjc3NSdWxlLmF0dHJzKSB7XG4gICAgICBmb3IgKGNvbnN0IGF0dHIgb2YgY3NzUnVsZS5hdHRycykge1xuICAgICAgICB1aUF1dG9tYXRvclNlbGVjdG9yICs9IHRoaXMucGFyc2VBdHRyKGF0dHIpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY3NzUnVsZS5wc2V1ZG9zKSB7XG4gICAgICBmb3IgKGNvbnN0IHBzZXVkbyBvZiBjc3NSdWxlLnBzZXVkb3MpIHtcbiAgICAgICAgdWlBdXRvbWF0b3JTZWxlY3RvciArPSB0aGlzLnBhcnNlUHNldWRvKHBzZXVkbyk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChjc3NSdWxlLnJ1bGUpIHtcbiAgICAgIHVpQXV0b21hdG9yU2VsZWN0b3IgKz0gYC5jaGlsZFNlbGVjdG9yKCR7dGhpcy5wYXJzZUNzc1J1bGUoY3NzUnVsZS5ydWxlKX0pYDtcbiAgICB9XG4gICAgcmV0dXJuIHVpQXV0b21hdG9yU2VsZWN0b3I7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBDU1Mgb2JqZWN0IHRvIFVpQXV0b21hdG9yMiBzZWxlY3RvclxuICAgKiBAcGFyYW0ge0Nzc09iamVjdH0gY3NzIENTUyBvYmplY3RcbiAgICogQHJldHVybnMge3N0cmluZ30gVGhlIENTUyBvYmplY3QgcGFyc2VkIGFzIGEgVWlTZWxlY3RvclxuICAgKi9cbiAgcGFyc2VDc3NPYmplY3QgKGNzcykge1xuICAgIHN3aXRjaCAoY3NzLnR5cGUpIHtcbiAgICAgIGNhc2UgJ3J1bGUnOlxuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUNzc1J1bGUoY3NzKTtcbiAgICAgIGNhc2UgJ3J1bGVTZXQnOlxuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUNzc09iamVjdChjc3MucnVsZSk7XG4gICAgICBjYXNlICdzZWxlY3RvcnMnOlxuICAgICAgICByZXR1cm4gY3NzLnNlbGVjdG9ycy5tYXAoKHNlbGVjdG9yKSA9PiB0aGlzLnBhcnNlQ3NzT2JqZWN0KHNlbGVjdG9yKSkuam9pbignOyAnKTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gVGhpcyBpcyBuZXZlciByZWFjaGFibGUsIGJ1dCBpZiBpdCBldmVyIGlzIGRvIHRoaXMuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVWlBdXRvbWF0b3IgZG9lcyBub3Qgc3VwcG9ydCAnJHtjc3MudHlwZX0nIGNzcy4gT25seSBzdXBwb3J0cyAncnVsZScsICdydWxlU2V0JywgJ3NlbGVjdG9ycycgYCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBDU1Mgc2VsZWN0b3IgdG8gYSBVaUF1dG9tYXRvcjIgc2VsZWN0b3JcbiAgICpcbiAgICogQHJldHVybnMge3N0cmluZ30gVGhlIENTUyBzZWxlY3RvciBjb252ZXJ0ZWQgdG8gYSBVaVNlbGVjdG9yXG4gICAqL1xuICB0b1VpQXV0b21hdG9yU2VsZWN0b3IgKCkge1xuICAgIGxldCBjc3NPYmo7XG4gICAgdHJ5IHtcbiAgICAgIGNzc09iaiA9IHBhcnNlci5wYXJzZSh0aGlzLnNlbGVjdG9yKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRTZWxlY3RvckVycm9yKGBJbnZhbGlkIENTUyBzZWxlY3RvciAnJHt0aGlzLnNlbGVjdG9yfScuIFJlYXNvbjogJyR7ZX0nYCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJzZUNzc09iamVjdChjc3NPYmopO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZFNlbGVjdG9yRXJyb3IoYFVuc3VwcG9ydGVkIENTUyBzZWxlY3RvciAnJHt0aGlzLnNlbGVjdG9yfScuIFJlYXNvbjogJyR7ZX0nYCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENzc0NvbnZlcnRlcjsiXSwiZmlsZSI6ImxpYi9jc3MtY29udmVydGVyLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
240
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2Nzcy1jb252ZXJ0ZXIuanMiLCJuYW1lcyI6WyJwYXJzZXIiLCJDc3NTZWxlY3RvclBhcnNlciIsInJlZ2lzdGVyU2VsZWN0b3JQc2V1ZG9zIiwicmVnaXN0ZXJOZXN0aW5nT3BlcmF0b3JzIiwicmVnaXN0ZXJBdHRyRXF1YWxpdHlNb2RzIiwiZW5hYmxlU3Vic3RpdHV0ZXMiLCJSRVNPVVJDRV9JRCIsIklEX0xPQ0FUT1JfUEFUVEVSTiIsIkJPT0xFQU5fQVRUUlMiLCJOVU1FUklDX0FUVFJTIiwiU1RSX0FUVFJTIiwiQUxMX0FUVFJTIiwiQVRUUklCVVRFX0FMSUFTRVMiLCJ0b1NuYWtlQ2FzZSIsInN0ciIsInRva2VucyIsInNwbGl0IiwibWFwIiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJzbGljZSIsInRvTG93ZXJDYXNlIiwib3V0Iiwiam9pbiIsImFzc2VydEdldEJvb2wiLCJjc3MiLCJ2YWwiLCJ2YWx1ZSIsImluY2x1ZGVzIiwiRXJyb3IiLCJuYW1lIiwiYXNzZXJ0R2V0QXR0ck5hbWUiLCJhdHRyTmFtZSIsIm9mZmljaWFsQXR0ciIsImFsaWFzQXR0cnMiLCJnZXRXb3JkTWF0Y2hlclJlZ2V4Iiwid29yZCIsIkNzc0NvbnZlcnRlciIsImNvbnN0cnVjdG9yIiwic2VsZWN0b3IiLCJwa2ciLCJmb3JtYXRJZExvY2F0b3IiLCJsb2NhdG9yIiwidGVzdCIsInBhcnNlQXR0ciIsImNzc0F0dHIiLCJ2YWx1ZVR5cGUiLCJtZXRob2ROYW1lIiwib3BlcmF0b3IiLCJwYXJzZVBzZXVkbyIsImNzc1BzZXVkbyIsInBzZXVkb05hbWUiLCJwYXJzZUNzc1J1bGUiLCJjc3NSdWxlIiwibmVzdGluZ09wZXJhdG9yIiwidWlBdXRvbWF0b3JTZWxlY3RvciIsInRhZ05hbWUiLCJhbmRyb2lkQ2xhc3MiLCJjbGFzc05hbWVzIiwiY3NzQ2xhc3NOYW1lcyIsInB1c2giLCJpZCIsImF0dHJzIiwiYXR0ciIsInBzZXVkb3MiLCJwc2V1ZG8iLCJydWxlIiwicGFyc2VDc3NPYmplY3QiLCJ0eXBlIiwic2VsZWN0b3JzIiwidG9VaUF1dG9tYXRvclNlbGVjdG9yIiwiY3NzT2JqIiwicGFyc2UiLCJlIiwiZXJyb3JzIiwiSW52YWxpZFNlbGVjdG9yRXJyb3IiXSwic291cmNlUm9vdCI6Ii4uLy4uIiwic291cmNlcyI6WyJsaWIvY3NzLWNvbnZlcnRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDc3NTZWxlY3RvclBhcnNlciB9IGZyb20gJ2Nzcy1zZWxlY3Rvci1wYXJzZXInO1xuaW1wb3J0IHsgZXNjYXBlUmVnRXhwIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuXG5jb25zdCBwYXJzZXIgPSBuZXcgQ3NzU2VsZWN0b3JQYXJzZXIoKTtcbnBhcnNlci5yZWdpc3RlclNlbGVjdG9yUHNldWRvcygnaGFzJyk7XG5wYXJzZXIucmVnaXN0ZXJOZXN0aW5nT3BlcmF0b3JzKCc+JywgJysnLCAnficpO1xucGFyc2VyLnJlZ2lzdGVyQXR0ckVxdWFsaXR5TW9kcygnXicsICckJywgJyonLCAnficpO1xucGFyc2VyLmVuYWJsZVN1YnN0aXR1dGVzKCk7XG5cbmNvbnN0IFJFU09VUkNFX0lEID0gJ3Jlc291cmNlLWlkJztcbmNvbnN0IElEX0xPQ0FUT1JfUEFUVEVSTiA9IC9eW2EtekEtWl9dW2EtekEtWjAtOS5fXSo6aWRcXC9bXFxTXSskLztcblxuY29uc3QgQk9PTEVBTl9BVFRSUyA9IFtcbiAgJ2NoZWNrYWJsZScsICdjaGVja2VkJywgJ2NsaWNrYWJsZScsICdlbmFibGVkJywgJ2ZvY3VzYWJsZScsXG4gICdmb2N1c2VkJywgJ2xvbmctY2xpY2thYmxlJywgJ3Njcm9sbGFibGUnLCAnc2VsZWN0ZWQnLFxuXTtcblxuY29uc3QgTlVNRVJJQ19BVFRSUyA9IFtcbiAgJ2luZGV4JywgJ2luc3RhbmNlJyxcbl07XG5cbmNvbnN0IFNUUl9BVFRSUyA9IFtcbiAgJ2Rlc2NyaXB0aW9uJywgUkVTT1VSQ0VfSUQsICd0ZXh0JywgJ2NsYXNzLW5hbWUnLCAncGFja2FnZS1uYW1lJ1xuXTtcblxuY29uc3QgQUxMX0FUVFJTID0gW1xuICAuLi5CT09MRUFOX0FUVFJTLFxuICAuLi5OVU1FUklDX0FUVFJTLFxuICAuLi5TVFJfQVRUUlMsXG5dO1xuXG5jb25zdCBBVFRSSUJVVEVfQUxJQVNFUyA9IFtcbiAgW1JFU09VUkNFX0lELCBbJ2lkJ11dLFxuICBbJ2Rlc2NyaXB0aW9uJywgW1xuICAgICdjb250ZW50LWRlc2NyaXB0aW9uJywgJ2NvbnRlbnQtZGVzYycsXG4gICAgJ2Rlc2MnLCAnYWNjZXNzaWJpbGl0eS1pZCcsXG4gIF1dLFxuICBbJ2luZGV4JywgWydudGgtY2hpbGQnXV0sXG5dO1xuXG4vKipcbiAqIENvbnZlcnQgaHlwaGVuIHNlcGFyYXRlZCB3b3JkIHRvIHNuYWtlIGNhc2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgaHlwaGVuIHNlcGFyYXRlZCB3b3JkIHRyYW5zbGF0ZWQgdG8gc25ha2UgY2FzZVxuICovXG5mdW5jdGlvbiB0b1NuYWtlQ2FzZSAoc3RyKSB7XG4gIGlmICghc3RyKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIGNvbnN0IHRva2VucyA9IHN0ci5zcGxpdCgnLScpLm1hcCgoc3RyKSA9PiBzdHIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSkudG9Mb3dlckNhc2UoKSk7XG4gIGNvbnN0IG91dCA9IHRva2Vucy5qb2luKCcnKTtcbiAgcmV0dXJuIG91dC5jaGFyQXQoMCkudG9Mb3dlckNhc2UoKSArIG91dC5zbGljZSgxKTtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBDc3NOYW1lVmFsdWVPYmplY3RcbiAqIEBwcm9wZXJ0eSB7P25hbWV9IG5hbWUgVGhlIG5hbWUgb2YgdGhlIENTUyBvYmplY3RcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBDU1Mgb2JqZWN0XG4gKi9cblxuLyoqXG4gKiBHZXQgdGhlIGJvb2xlYW4gZnJvbSBhIENTUyBvYmplY3QuIElmIGVtcHR5LCByZXR1cm4gdHJ1ZS4gSWYgbm90IHRydWUvZmFsc2UvZW1wdHksIHRocm93IGV4Y2VwdGlvblxuICpcbiAqIEBwYXJhbSB7Q3NzTmFtZVZhbHVlT2JqZWN0fSBjc3MgQSBDU1Mgb2JqZWN0IHRoYXQgaGFzICduYW1lJyBhbmQgJ3ZhbHVlJ1xuICogQHJldHVybnMge3N0cmluZ30gRWl0aGVyICd0cnVlJyBvciAnZmFsc2UnLiBJZiB2YWx1ZSBpcyBlbXB0eSwgcmV0dXJuICd0cnVlJ1xuICovXG5mdW5jdGlvbiBhc3NlcnRHZXRCb29sIChjc3MpIHtcbiAgY29uc3QgdmFsID0gY3NzLnZhbHVlPy50b0xvd2VyQ2FzZSgpIHx8ICd0cnVlJzsgLy8gYW4gb21pdHRlZCBib29sZWFuIGF0dHJpYnV0ZSBtZWFucyAndHJ1ZScgKGUuZy46IGlucHV0W2NoZWNrZWRdIG1lYW5zIGNoZWNrZWQgaXMgdHJ1ZSlcbiAgaWYgKFsndHJ1ZScsICdmYWxzZSddLmluY2x1ZGVzKHZhbCkpIHtcbiAgICByZXR1cm4gdmFsO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgJyR7Y3NzLm5hbWV9JyBtdXN0IGJlIHRydWUsIGZhbHNlIG9yIGVtcHR5LiBGb3VuZCAnJHtjc3MudmFsdWV9J2ApO1xufVxuXG4vKipcbiAqIEdldCB0aGUgY2Fub25pY2FsIGZvcm0gb2YgYSBDU1MgYXR0cmlidXRlIG5hbWVcbiAqXG4gKiBDb252ZXJ0cyB0byBsb3dlcmNhc2UgYW5kIGlmIGFuIGF0dHJpYnV0ZSBuYW1lIGlzIGFuIGFsaWFzIGZvciBzb21ldGhpbmcgZWxzZSwgcmV0dXJuXG4gKiB3aGF0IGl0IGlzIGFuIGFsaWFzIGZvclxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBjc3MgQ1NTIG9iamVjdFxuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNhbm9uaWNhbCBhdHRyaWJ1dGUgbmFtZVxuICovXG5mdW5jdGlvbiBhc3NlcnRHZXRBdHRyTmFtZSAoY3NzKSB7XG4gIGNvbnN0IGF0dHJOYW1lID0gY3NzLm5hbWUudG9Mb3dlckNhc2UoKTtcblxuICAvLyBDaGVjayBpZiBpdCdzIHN1cHBvcnRlZCBhbmQgaWYgaXQgaXMsIHJldHVybiBpdFxuICBpZiAoQUxMX0FUVFJTLmluY2x1ZGVzKGF0dHJOYW1lKSkge1xuICAgIHJldHVybiBhdHRyTmFtZS50b0xvd2VyQ2FzZSgpO1xuICB9XG5cbiAgLy8gSWYgYXR0ck5hbWUgaXMgYW4gYWxpYXMgZm9yIHNvbWV0aGluZyBlbHNlLCByZXR1cm4gdGhhdFxuICBmb3IgKGNvbnN0IFtvZmZpY2lhbEF0dHIsIGFsaWFzQXR0cnNdIG9mIEFUVFJJQlVURV9BTElBU0VTKSB7XG4gICAgaWYgKGFsaWFzQXR0cnMuaW5jbHVkZXMoYXR0ck5hbWUpKSB7XG4gICAgICByZXR1cm4gb2ZmaWNpYWxBdHRyO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYCcke2F0dHJOYW1lfScgaXMgbm90IGEgdmFsaWQgYXR0cmlidXRlLiBgICtcbiAgICBgU3VwcG9ydGVkIGF0dHJpYnV0ZXMgYXJlICcke0FMTF9BVFRSUy5qb2luKCcsICcpfSdgKTtcbn1cblxuLyoqXG4gKiBHZXQgYSByZWdleCB0aGF0IG1hdGNoZXMgYSB3aG9sZSB3b3JkLiBGb3IgdGhlIH49IENTUyBhdHRyaWJ1dGUgc2VsZWN0b3IuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHdvcmRcbiAqIEByZXR1cm5zIHtzdHJpbmd9IEEgcmVnZXggXCJ3b3JkXCIgbWF0Y2hlclxuICovXG5mdW5jdGlvbiBnZXRXb3JkTWF0Y2hlclJlZ2V4ICh3b3JkKSB7XG4gIHJldHVybiBgXFxcXGIoXFxcXHcqJHtlc2NhcGVSZWdFeHAod29yZCl9XFxcXHcqKVxcXFxiYDtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBDc3NBdHRyXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHZhbHVlVHlwZSBUeXBlIG9mIGF0dHJpYnV0ZSAobXVzdCBiZSBzdHJpbmcgb3IgZW1wdHkpXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHZhbHVlIFZhbHVlIG9mIHRoZSBhdHRyaWJ1dGVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gb3BlcmF0b3IgVGhlIG9wZXJhdG9yIGJldHdlZW4gdmFsdWUgYW5kIHZhbHVlIHR5cGUgKD0sICo9LCAsIF49LCAkPSlcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENzc1J1bGVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbmVzdGluZ09wZXJhdG9yIFRoZSBuZXN0aW5nIG9wZXJhdG9yIChha2E6IGNvbWJpbmF0b3IgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL0NTU19TZWxlY3RvcnMpXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHRhZ05hbWUgVGhlIHRhZyBuYW1lIChha2E6IHR5cGUgc2VsZWN0b3IgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL1R5cGVfc2VsZWN0b3JzKVxuICogQHByb3BlcnR5IHs/c3RyaW5nW119IGNsYXNzTmFtZXMgQW4gYXJyYXkgb2YgQ1NTIGNsYXNzIG5hbWVzXG4gKiBAcHJvcGVydHkgez9Dc3NBdHRyW119IGF0dHJzIEFuIGFycmF5IG9mIENTUyBhdHRyaWJ1dGVzXG4gKiBAcHJvcGVydHkgez9Dc3NQc2V1ZG9bXX0gYXR0cnMgQW4gYXJyYXkgb2YgQ1NTIHBzZXVkb3NcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaWQgQ1NTIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P0Nzc1J1bGV9IHJ1bGUgQSBkZXNjZW5kYW50IG9mIHRoaXMgQ1NTIHJ1bGVcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENzc09iamVjdFxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB0eXBlIFR5cGUgb2YgQ1NTIG9iamVjdC4gJ3J1bGUnLCAncnVsZXNldCcgb3IgJ3NlbGVjdG9ycydcbiAqL1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENzc1BzZXVkb1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSB2YWx1ZVR5cGUgVGhlIHR5cGUgb2YgQ1NTIHBzZXVkbyBzZWxlY3RvciAoaHR0cHM6Ly93d3cubnBtanMuY29tL3BhY2thZ2UvY3NzLXNlbGVjdG9yLXBhcnNlciBmb3IgcmVmZXJlbmNlKVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBwc2V1ZG8gc2VsZWN0b3JcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBwc2V1ZG8gc2VsZWN0b3JcbiAqL1xuXG5jbGFzcyBDc3NDb252ZXJ0ZXIge1xuXG4gIGNvbnN0cnVjdG9yIChzZWxlY3RvciwgcGtnKSB7XG4gICAgdGhpcy5zZWxlY3RvciA9IHNlbGVjdG9yO1xuICAgIHRoaXMucGtnID0gcGtnO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBgPHBrZ05hbWU+OmlkL2AgcHJlZml4IHRvIGJlZ2lubmluZyBvZiBzdHJpbmcgaWYgaXQncyBub3QgdGhlcmUgYWxyZWFkeVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbG9jYXRvciBUaGUgaW5pdGlhbCBsb2NhdG9yXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFN0cmluZyB3aXRoIGA8cGtnTmFtZT46aWQvYCBwcmVwZW5kZWQgKGlmIGl0IHdhc24ndCBhbHJlYWR5KVxuICAgKi9cbiAgZm9ybWF0SWRMb2NhdG9yIChsb2NhdG9yKSB7XG4gICAgcmV0dXJuIElEX0xPQ0FUT1JfUEFUVEVSTi50ZXN0KGxvY2F0b3IpXG4gICAgICA/IGxvY2F0b3JcbiAgICAgIDogYCR7dGhpcy5wa2cgfHwgJ2FuZHJvaWQnfTppZC8ke2xvY2F0b3J9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGEgQ1NTIGF0dHJpYnV0ZSBpbnRvIGEgVWlTZWxlY3RvciBtZXRob2QgY2FsbFxuICAgKlxuICAgKiBAcGFyYW0ge0Nzc0F0dHJ9IGNzc0F0dHIgQ1NTIGF0dHJpYnV0ZSBvYmplY3RcbiAgICogQHJldHVybnMge3N0cmluZ30gQ1NTIGF0dHJpYnV0ZSBwYXJzZWQgYXMgVWlTZWxlY3RvclxuICAgKi9cbiAgcGFyc2VBdHRyIChjc3NBdHRyKSB7XG4gICAgaWYgKGNzc0F0dHIudmFsdWVUeXBlICYmIGNzc0F0dHIudmFsdWVUeXBlICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtjc3NBdHRyLm5hbWV9PSR7Y3NzQXR0ci52YWx1ZX0nIGlzIGFuIGludmFsaWQgYXR0cmlidXRlLiBgICtcbiAgICAgICAgYE9ubHkgJ3N0cmluZycgYW5kIGVtcHR5IGF0dHJpYnV0ZSB0eXBlcyBhcmUgc3VwcG9ydGVkLiBGb3VuZCAnJHtjc3NBdHRyLnZhbHVlVHlwZX0nYCk7XG4gICAgfVxuICAgIGNvbnN0IGF0dHJOYW1lID0gYXNzZXJ0R2V0QXR0ck5hbWUoY3NzQXR0cik7XG4gICAgY29uc3QgbWV0aG9kTmFtZSA9IHRvU25ha2VDYXNlKGF0dHJOYW1lKTtcblxuICAgIC8vIFZhbGlkYXRlIHRoYXQgaXQncyBhIHN1cHBvcnRlZCBhdHRyaWJ1dGVcbiAgICBpZiAoIVNUUl9BVFRSUy5pbmNsdWRlcyhhdHRyTmFtZSkgJiYgIUJPT0xFQU5fQVRUUlMuaW5jbHVkZXMoYXR0ck5hbWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYCcke2F0dHJOYW1lfScgaXMgbm90IHN1cHBvcnRlZC4gU3VwcG9ydGVkIGF0dHJpYnV0ZXMgYXJlIGAgK1xuICAgICAgICBgJyR7Wy4uLlNUUl9BVFRSUywgLi4uQk9PTEVBTl9BVFRSU10uam9pbignLCAnKX0nYCk7XG4gICAgfVxuXG4gICAgLy8gUGFyc2UgYm9vbGVhbiwgaWYgaXQncyBhIGJvb2xlYW4gYXR0cmlidXRlXG4gICAgaWYgKEJPT0xFQU5fQVRUUlMuaW5jbHVkZXMoYXR0ck5hbWUpKSB7XG4gICAgICByZXR1cm4gYC4ke21ldGhvZE5hbWV9KCR7YXNzZXJ0R2V0Qm9vbChjc3NBdHRyKX0pYDtcbiAgICB9XG5cbiAgICAvLyBPdGhlcndpc2UgcGFyc2UgYXMgc3RyaW5nXG4gICAgbGV0IHZhbHVlID0gY3NzQXR0ci52YWx1ZSB8fCAnJztcbiAgICBpZiAoYXR0ck5hbWUgPT09IFJFU09VUkNFX0lEKSB7XG4gICAgICB2YWx1ZSA9IHRoaXMuZm9ybWF0SWRMb2NhdG9yKHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKHZhbHVlID09PSAnJykge1xuICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfU1hdGNoZXMoXCJcIilgO1xuICAgIH1cblxuICAgIHN3aXRjaCAoY3NzQXR0ci5vcGVyYXRvcikge1xuICAgICAgY2FzZSAnPSc6XG4gICAgICAgIHJldHVybiBgLiR7bWV0aG9kTmFtZX0oXCIke3ZhbHVlfVwiKWA7XG4gICAgICBjYXNlICcqPSc6XG4gICAgICAgIGlmIChbJ2Rlc2NyaXB0aW9uJywgJ3RleHQnXS5pbmNsdWRlcyhhdHRyTmFtZSkpIHtcbiAgICAgICAgICByZXR1cm4gYC4ke21ldGhvZE5hbWV9Q29udGFpbnMoXCIke3ZhbHVlfVwiKWA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfU1hdGNoZXMoXCIke2VzY2FwZVJlZ0V4cCh2YWx1ZSl9XCIpYDtcbiAgICAgIGNhc2UgJ149JzpcbiAgICAgICAgaWYgKFsnZGVzY3JpcHRpb24nLCAndGV4dCddLmluY2x1ZGVzKGF0dHJOYW1lKSkge1xuICAgICAgICAgIHJldHVybiBgLiR7bWV0aG9kTmFtZX1TdGFydHNXaXRoKFwiJHt2YWx1ZX1cIilgO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgLiR7bWV0aG9kTmFtZX1NYXRjaGVzKFwiXiR7ZXNjYXBlUmVnRXhwKHZhbHVlKX1cIilgO1xuICAgICAgY2FzZSAnJD0nOlxuICAgICAgICByZXR1cm4gYC4ke21ldGhvZE5hbWV9TWF0Y2hlcyhcIiR7ZXNjYXBlUmVnRXhwKHZhbHVlKX0kXCIpYDtcbiAgICAgIGNhc2UgJ349JzpcbiAgICAgICAgcmV0dXJuIGAuJHttZXRob2ROYW1lfU1hdGNoZXMoXCIke2dldFdvcmRNYXRjaGVyUmVnZXgodmFsdWUpfVwiKWA7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICAvLyBVbnJlYWNoYWJsZSwgYnV0IGFkZGluZyBlcnJvciBpbiBjYXNlIGEgbmV3IENTUyBhdHRyaWJ1dGUgaXMgYWRkZWQuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgQ1NTIGF0dHJpYnV0ZSBvcGVyYXRvciAnJHtjc3NBdHRyLm9wZXJhdG9yfScuIGAgK1xuICAgICAgICAgIGAgJz0nLCAnKj0nLCAnXj0nLCAnJD0nIGFuZCAnfj0nIGFyZSBzdXBwb3J0ZWQuYCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBDU1MgcHNldWRvIGNsYXNzIHRvIGEgVWlTZWxlY3RvclxuICAgKlxuICAgKiBAcGFyYW0ge0Nzc1BzZXVkb30gY3NzUHNldWRvIENTUyBQc2V1ZG8gY2xhc3NcbiAgICogQHJldHVybnMge3N0cmluZ30gUHNldWRvIHNlbGVjdG9yIHBhcnNlZCBhcyBVaVNlbGVjdG9yXG4gICAqL1xuICBwYXJzZVBzZXVkbyAoY3NzUHNldWRvKSB7XG4gICAgaWYgKGNzc1BzZXVkby52YWx1ZVR5cGUgJiYgY3NzUHNldWRvLnZhbHVlVHlwZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJyR7Y3NzUHNldWRvLm5hbWV9PSR7Y3NzUHNldWRvLnZhbHVlfScuIGAgK1xuICAgICAgICBgVW5zdXBwb3J0ZWQgY3NzIHBzZXVkbyBjbGFzcyB2YWx1ZSB0eXBlOiAnJHtjc3NQc2V1ZG8udmFsdWVUeXBlfScuIE9ubHkgJ3N0cmluZycgdHlwZSBvciBlbXB0eSBpcyBzdXBwb3J0ZWQuYCk7XG4gICAgfVxuXG4gICAgY29uc3QgcHNldWRvTmFtZSA9IGFzc2VydEdldEF0dHJOYW1lKGNzc1BzZXVkbyk7XG5cbiAgICBpZiAoQk9PTEVBTl9BVFRSUy5pbmNsdWRlcyhwc2V1ZG9OYW1lKSkge1xuICAgICAgcmV0dXJuIGAuJHt0b1NuYWtlQ2FzZShwc2V1ZG9OYW1lKX0oJHthc3NlcnRHZXRCb29sKGNzc1BzZXVkbyl9KWA7XG4gICAgfVxuXG4gICAgaWYgKE5VTUVSSUNfQVRUUlMuaW5jbHVkZXMocHNldWRvTmFtZSkpIHtcbiAgICAgIHJldHVybiBgLiR7cHNldWRvTmFtZX0oJHtjc3NQc2V1ZG8udmFsdWV9KWA7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgYSBDU1MgcnVsZSB0byBhIFVpU2VsZWN0b3JcbiAgICogQHBhcmFtIHtDc3NSdWxlfSBjc3NSdWxlIENTUyBydWxlIGRlZmluaXRpb25cbiAgICovXG4gIHBhcnNlQ3NzUnVsZSAoY3NzUnVsZSkge1xuICAgIGNvbnN0IHsgbmVzdGluZ09wZXJhdG9yIH0gPSBjc3NSdWxlO1xuICAgIGlmIChuZXN0aW5nT3BlcmF0b3IgJiYgbmVzdGluZ09wZXJhdG9yICE9PSAnICcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJyR7bmVzdGluZ09wZXJhdG9yfScgaXMgbm90IGEgc3VwcG9ydGVkIGNvbWJpbmF0b3IuIGAgK1xuICAgICAgICBgT25seSBjaGlsZCBjb21iaW5hdG9yICg+KSBhbmQgZGVzY2VuZGFudCBjb21iaW5hdG9yIGFyZSBzdXBwb3J0ZWQuYCk7XG4gICAgfVxuXG4gICAgbGV0IHVpQXV0b21hdG9yU2VsZWN0b3IgPSAnbmV3IFVpU2VsZWN0b3IoKSc7XG4gICAgaWYgKGNzc1J1bGUudGFnTmFtZSAmJiBjc3NSdWxlLnRhZ05hbWUgIT09ICcqJykge1xuICAgICAgbGV0IGFuZHJvaWRDbGFzcyA9IFtjc3NSdWxlLnRhZ05hbWVdO1xuICAgICAgaWYgKGNzc1J1bGUuY2xhc3NOYW1lcykge1xuICAgICAgICBmb3IgKGNvbnN0IGNzc0NsYXNzTmFtZXMgb2YgY3NzUnVsZS5jbGFzc05hbWVzKSB7XG4gICAgICAgICAgYW5kcm9pZENsYXNzLnB1c2goY3NzQ2xhc3NOYW1lcyk7XG4gICAgICAgIH1cbiAgICAgICAgdWlBdXRvbWF0b3JTZWxlY3RvciArPSBgLmNsYXNzTmFtZShcIiR7YW5kcm9pZENsYXNzLmpvaW4oJy4nKX1cIilgO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdWlBdXRvbWF0b3JTZWxlY3RvciArPSBgLmNsYXNzTmFtZU1hdGNoZXMoXCIke2Nzc1J1bGUudGFnTmFtZX1cIilgO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY3NzUnVsZS5jbGFzc05hbWVzKSB7XG4gICAgICB1aUF1dG9tYXRvclNlbGVjdG9yICs9IGAuY2xhc3NOYW1lTWF0Y2hlcyhcIiR7Y3NzUnVsZS5jbGFzc05hbWVzLmpvaW4oJ1xcXFwuJyl9XCIpYDtcbiAgICB9XG4gICAgaWYgKGNzc1J1bGUuaWQpIHtcbiAgICAgIHVpQXV0b21hdG9yU2VsZWN0b3IgKz0gYC5yZXNvdXJjZUlkKFwiJHt0aGlzLmZvcm1hdElkTG9jYXRvcihjc3NSdWxlLmlkKX1cIilgO1xuICAgIH1cbiAgICBpZiAoY3NzUnVsZS5hdHRycykge1xuICAgICAgZm9yIChjb25zdCBhdHRyIG9mIGNzc1J1bGUuYXR0cnMpIHtcbiAgICAgICAgdWlBdXRvbWF0b3JTZWxlY3RvciArPSB0aGlzLnBhcnNlQXR0cihhdHRyKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGNzc1J1bGUucHNldWRvcykge1xuICAgICAgZm9yIChjb25zdCBwc2V1ZG8gb2YgY3NzUnVsZS5wc2V1ZG9zKSB7XG4gICAgICAgIHVpQXV0b21hdG9yU2VsZWN0b3IgKz0gdGhpcy5wYXJzZVBzZXVkbyhwc2V1ZG8pO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoY3NzUnVsZS5ydWxlKSB7XG4gICAgICB1aUF1dG9tYXRvclNlbGVjdG9yICs9IGAuY2hpbGRTZWxlY3Rvcigke3RoaXMucGFyc2VDc3NSdWxlKGNzc1J1bGUucnVsZSl9KWA7XG4gICAgfVxuICAgIHJldHVybiB1aUF1dG9tYXRvclNlbGVjdG9yO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgQ1NTIG9iamVjdCB0byBVaUF1dG9tYXRvcjIgc2VsZWN0b3JcbiAgICogQHBhcmFtIHtDc3NPYmplY3R9IGNzcyBDU1Mgb2JqZWN0XG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBDU1Mgb2JqZWN0IHBhcnNlZCBhcyBhIFVpU2VsZWN0b3JcbiAgICovXG4gIHBhcnNlQ3NzT2JqZWN0IChjc3MpIHtcbiAgICBzd2l0Y2ggKGNzcy50eXBlKSB7XG4gICAgICBjYXNlICdydWxlJzpcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VDc3NSdWxlKGNzcyk7XG4gICAgICBjYXNlICdydWxlU2V0JzpcbiAgICAgICAgcmV0dXJuIHRoaXMucGFyc2VDc3NPYmplY3QoY3NzLnJ1bGUpO1xuICAgICAgY2FzZSAnc2VsZWN0b3JzJzpcbiAgICAgICAgcmV0dXJuIGNzcy5zZWxlY3RvcnMubWFwKChzZWxlY3RvcikgPT4gdGhpcy5wYXJzZUNzc09iamVjdChzZWxlY3RvcikpLmpvaW4oJzsgJyk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIFRoaXMgaXMgbmV2ZXIgcmVhY2hhYmxlLCBidXQgaWYgaXQgZXZlciBpcyBkbyB0aGlzLlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVpQXV0b21hdG9yIGRvZXMgbm90IHN1cHBvcnQgJyR7Y3NzLnR5cGV9JyBjc3MuIE9ubHkgc3VwcG9ydHMgJ3J1bGUnLCAncnVsZVNldCcsICdzZWxlY3RvcnMnIGApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGEgQ1NTIHNlbGVjdG9yIHRvIGEgVWlBdXRvbWF0b3IyIHNlbGVjdG9yXG4gICAqXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBDU1Mgc2VsZWN0b3IgY29udmVydGVkIHRvIGEgVWlTZWxlY3RvclxuICAgKi9cbiAgdG9VaUF1dG9tYXRvclNlbGVjdG9yICgpIHtcbiAgICBsZXQgY3NzT2JqO1xuICAgIHRyeSB7XG4gICAgICBjc3NPYmogPSBwYXJzZXIucGFyc2UodGhpcy5zZWxlY3Rvcik7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkU2VsZWN0b3JFcnJvcihgSW52YWxpZCBDU1Mgc2VsZWN0b3IgJyR7dGhpcy5zZWxlY3Rvcn0nLiBSZWFzb246ICcke2V9J2ApO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgcmV0dXJuIHRoaXMucGFyc2VDc3NPYmplY3QoY3NzT2JqKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRTZWxlY3RvckVycm9yKGBVbnN1cHBvcnRlZCBDU1Mgc2VsZWN0b3IgJyR7dGhpcy5zZWxlY3Rvcn0nLiBSZWFzb246ICcke2V9J2ApO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBDc3NDb252ZXJ0ZXI7Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxNQUFNLEdBQUcsSUFBSUMsb0NBQUosRUFBZjtBQUNBRCxNQUFNLENBQUNFLHVCQUFQLENBQStCLEtBQS9CO0FBQ0FGLE1BQU0sQ0FBQ0csd0JBQVAsQ0FBZ0MsR0FBaEMsRUFBcUMsR0FBckMsRUFBMEMsR0FBMUM7QUFDQUgsTUFBTSxDQUFDSSx3QkFBUCxDQUFnQyxHQUFoQyxFQUFxQyxHQUFyQyxFQUEwQyxHQUExQyxFQUErQyxHQUEvQztBQUNBSixNQUFNLENBQUNLLGlCQUFQO0FBRUEsTUFBTUMsV0FBVyxHQUFHLGFBQXBCO0FBQ0EsTUFBTUMsa0JBQWtCLEdBQUcscUNBQTNCO0FBRUEsTUFBTUMsYUFBYSxHQUFHLENBQ3BCLFdBRG9CLEVBQ1AsU0FETyxFQUNJLFdBREosRUFDaUIsU0FEakIsRUFDNEIsV0FENUIsRUFFcEIsU0FGb0IsRUFFVCxnQkFGUyxFQUVTLFlBRlQsRUFFdUIsVUFGdkIsQ0FBdEI7QUFLQSxNQUFNQyxhQUFhLEdBQUcsQ0FDcEIsT0FEb0IsRUFDWCxVQURXLENBQXRCO0FBSUEsTUFBTUMsU0FBUyxHQUFHLENBQ2hCLGFBRGdCLEVBQ0RKLFdBREMsRUFDWSxNQURaLEVBQ29CLFlBRHBCLEVBQ2tDLGNBRGxDLENBQWxCO0FBSUEsTUFBTUssU0FBUyxHQUFHLENBQ2hCLEdBQUdILGFBRGEsRUFFaEIsR0FBR0MsYUFGYSxFQUdoQixHQUFHQyxTQUhhLENBQWxCO0FBTUEsTUFBTUUsaUJBQWlCLEdBQUcsQ0FDeEIsQ0FBQ04sV0FBRCxFQUFjLENBQUMsSUFBRCxDQUFkLENBRHdCLEVBRXhCLENBQUMsYUFBRCxFQUFnQixDQUNkLHFCQURjLEVBQ1MsY0FEVCxFQUVkLE1BRmMsRUFFTixrQkFGTSxDQUFoQixDQUZ3QixFQU14QixDQUFDLE9BQUQsRUFBVSxDQUFDLFdBQUQsQ0FBVixDQU53QixDQUExQjs7QUFlQSxTQUFTTyxXQUFULENBQXNCQyxHQUF0QixFQUEyQjtFQUN6QixJQUFJLENBQUNBLEdBQUwsRUFBVTtJQUNSLE9BQU8sRUFBUDtFQUNEOztFQUNELE1BQU1DLE1BQU0sR0FBR0QsR0FBRyxDQUFDRSxLQUFKLENBQVUsR0FBVixFQUFlQyxHQUFmLENBQW9CSCxHQUFELElBQVNBLEdBQUcsQ0FBQ0ksTUFBSixDQUFXLENBQVgsRUFBY0MsV0FBZCxLQUE4QkwsR0FBRyxDQUFDTSxLQUFKLENBQVUsQ0FBVixFQUFhQyxXQUFiLEVBQTFELENBQWY7RUFDQSxNQUFNQyxHQUFHLEdBQUdQLE1BQU0sQ0FBQ1EsSUFBUCxDQUFZLEVBQVosQ0FBWjtFQUNBLE9BQU9ELEdBQUcsQ0FBQ0osTUFBSixDQUFXLENBQVgsRUFBY0csV0FBZCxLQUE4QkMsR0FBRyxDQUFDRixLQUFKLENBQVUsQ0FBVixDQUFyQztBQUNEOztBQWNELFNBQVNJLGFBQVQsQ0FBd0JDLEdBQXhCLEVBQTZCO0VBQUE7O0VBQzNCLE1BQU1DLEdBQUcsR0FBRyxlQUFBRCxHQUFHLENBQUNFLEtBQUosMERBQVdOLFdBQVgsT0FBNEIsTUFBeEM7O0VBQ0EsSUFBSSxDQUFDLE1BQUQsRUFBUyxPQUFULEVBQWtCTyxRQUFsQixDQUEyQkYsR0FBM0IsQ0FBSixFQUFxQztJQUNuQyxPQUFPQSxHQUFQO0VBQ0Q7O0VBQ0QsTUFBTSxJQUFJRyxLQUFKLENBQVcsSUFBR0osR0FBRyxDQUFDSyxJQUFLLDBDQUF5Q0wsR0FBRyxDQUFDRSxLQUFNLEdBQTFFLENBQU47QUFDRDs7QUFXRCxTQUFTSSxpQkFBVCxDQUE0Qk4sR0FBNUIsRUFBaUM7RUFDL0IsTUFBTU8sUUFBUSxHQUFHUCxHQUFHLENBQUNLLElBQUosQ0FBU1QsV0FBVCxFQUFqQjs7RUFHQSxJQUFJVixTQUFTLENBQUNpQixRQUFWLENBQW1CSSxRQUFuQixDQUFKLEVBQWtDO0lBQ2hDLE9BQU9BLFFBQVEsQ0FBQ1gsV0FBVCxFQUFQO0VBQ0Q7O0VBR0QsS0FBSyxNQUFNLENBQUNZLFlBQUQsRUFBZUMsVUFBZixDQUFYLElBQXlDdEIsaUJBQXpDLEVBQTREO0lBQzFELElBQUlzQixVQUFVLENBQUNOLFFBQVgsQ0FBb0JJLFFBQXBCLENBQUosRUFBbUM7TUFDakMsT0FBT0MsWUFBUDtJQUNEO0VBQ0Y7O0VBQ0QsTUFBTSxJQUFJSixLQUFKLENBQVcsSUFBR0csUUFBUyw4QkFBYixHQUNiLDZCQUE0QnJCLFNBQVMsQ0FBQ1ksSUFBVixDQUFlLElBQWYsQ0FBcUIsR0FEOUMsQ0FBTjtBQUVEOztBQVFELFNBQVNZLG1CQUFULENBQThCQyxJQUE5QixFQUFvQztFQUNsQyxPQUFRLFdBQVUsMEJBQWFBLElBQWIsQ0FBbUIsVUFBckM7QUFDRDs7QUFnQ0QsTUFBTUMsWUFBTixDQUFtQjtFQUVqQkMsV0FBVyxDQUFFQyxRQUFGLEVBQVlDLEdBQVosRUFBaUI7SUFDMUIsS0FBS0QsUUFBTCxHQUFnQkEsUUFBaEI7SUFDQSxLQUFLQyxHQUFMLEdBQVdBLEdBQVg7RUFDRDs7RUFRREMsZUFBZSxDQUFFQyxPQUFGLEVBQVc7SUFDeEIsT0FBT25DLGtCQUFrQixDQUFDb0MsSUFBbkIsQ0FBd0JELE9BQXhCLElBQ0hBLE9BREcsR0FFRixHQUFFLEtBQUtGLEdBQUwsSUFBWSxTQUFVLE9BQU1FLE9BQVEsRUFGM0M7RUFHRDs7RUFRREUsU0FBUyxDQUFFQyxPQUFGLEVBQVc7SUFDbEIsSUFBSUEsT0FBTyxDQUFDQyxTQUFSLElBQXFCRCxPQUFPLENBQUNDLFNBQVIsS0FBc0IsUUFBL0MsRUFBeUQ7TUFDdkQsTUFBTSxJQUFJakIsS0FBSixDQUFXLElBQUdnQixPQUFPLENBQUNmLElBQUssSUFBR2UsT0FBTyxDQUFDbEIsS0FBTSw2QkFBbEMsR0FDYixpRUFBZ0VrQixPQUFPLENBQUNDLFNBQVUsR0FEL0UsQ0FBTjtJQUVEOztJQUNELE1BQU1kLFFBQVEsR0FBR0QsaUJBQWlCLENBQUNjLE9BQUQsQ0FBbEM7SUFDQSxNQUFNRSxVQUFVLEdBQUdsQyxXQUFXLENBQUNtQixRQUFELENBQTlCOztJQUdBLElBQUksQ0FBQ3RCLFNBQVMsQ0FBQ2tCLFFBQVYsQ0FBbUJJLFFBQW5CLENBQUQsSUFBaUMsQ0FBQ3hCLGFBQWEsQ0FBQ29CLFFBQWQsQ0FBdUJJLFFBQXZCLENBQXRDLEVBQXdFO01BQ3RFLE1BQU0sSUFBSUgsS0FBSixDQUFXLElBQUdHLFFBQVMsK0NBQWIsR0FDYixJQUFHLENBQUMsR0FBR3RCLFNBQUosRUFBZSxHQUFHRixhQUFsQixFQUFpQ2UsSUFBakMsQ0FBc0MsSUFBdEMsQ0FBNEMsR0FENUMsQ0FBTjtJQUVEOztJQUdELElBQUlmLGFBQWEsQ0FBQ29CLFFBQWQsQ0FBdUJJLFFBQXZCLENBQUosRUFBc0M7TUFDcEMsT0FBUSxJQUFHZSxVQUFXLElBQUd2QixhQUFhLENBQUNxQixPQUFELENBQVUsR0FBaEQ7SUFDRDs7SUFHRCxJQUFJbEIsS0FBSyxHQUFHa0IsT0FBTyxDQUFDbEIsS0FBUixJQUFpQixFQUE3Qjs7SUFDQSxJQUFJSyxRQUFRLEtBQUsxQixXQUFqQixFQUE4QjtNQUM1QnFCLEtBQUssR0FBRyxLQUFLYyxlQUFMLENBQXFCZCxLQUFyQixDQUFSO0lBQ0Q7O0lBQ0QsSUFBSUEsS0FBSyxLQUFLLEVBQWQsRUFBa0I7TUFDaEIsT0FBUSxJQUFHb0IsVUFBVyxhQUF0QjtJQUNEOztJQUVELFFBQVFGLE9BQU8sQ0FBQ0csUUFBaEI7TUFDRSxLQUFLLEdBQUw7UUFDRSxPQUFRLElBQUdELFVBQVcsS0FBSXBCLEtBQU0sSUFBaEM7O01BQ0YsS0FBSyxJQUFMO1FBQ0UsSUFBSSxDQUFDLGFBQUQsRUFBZ0IsTUFBaEIsRUFBd0JDLFFBQXhCLENBQWlDSSxRQUFqQyxDQUFKLEVBQWdEO1VBQzlDLE9BQVEsSUFBR2UsVUFBVyxhQUFZcEIsS0FBTSxJQUF4QztRQUNEOztRQUNELE9BQVEsSUFBR29CLFVBQVcsWUFBVywwQkFBYXBCLEtBQWIsQ0FBb0IsSUFBckQ7O01BQ0YsS0FBSyxJQUFMO1FBQ0UsSUFBSSxDQUFDLGFBQUQsRUFBZ0IsTUFBaEIsRUFBd0JDLFFBQXhCLENBQWlDSSxRQUFqQyxDQUFKLEVBQWdEO1VBQzlDLE9BQVEsSUFBR2UsVUFBVyxlQUFjcEIsS0FBTSxJQUExQztRQUNEOztRQUNELE9BQVEsSUFBR29CLFVBQVcsYUFBWSwwQkFBYXBCLEtBQWIsQ0FBb0IsSUFBdEQ7O01BQ0YsS0FBSyxJQUFMO1FBQ0UsT0FBUSxJQUFHb0IsVUFBVyxZQUFXLDBCQUFhcEIsS0FBYixDQUFvQixLQUFyRDs7TUFDRixLQUFLLElBQUw7UUFDRSxPQUFRLElBQUdvQixVQUFXLFlBQVdaLG1CQUFtQixDQUFDUixLQUFELENBQVEsSUFBNUQ7O01BQ0Y7UUFFRSxNQUFNLElBQUlFLEtBQUosQ0FBVyx1Q0FBc0NnQixPQUFPLENBQUNHLFFBQVMsS0FBeEQsR0FDYixnREFERyxDQUFOO0lBbkJKO0VBc0JEOztFQVFEQyxXQUFXLENBQUVDLFNBQUYsRUFBYTtJQUN0QixJQUFJQSxTQUFTLENBQUNKLFNBQVYsSUFBdUJJLFNBQVMsQ0FBQ0osU0FBVixLQUF3QixRQUFuRCxFQUE2RDtNQUMzRCxNQUFNLElBQUlqQixLQUFKLENBQVcsSUFBR3FCLFNBQVMsQ0FBQ3BCLElBQUssSUFBR29CLFNBQVMsQ0FBQ3ZCLEtBQU0sS0FBdEMsR0FDYiw2Q0FBNEN1QixTQUFTLENBQUNKLFNBQVUsOENBRDdELENBQU47SUFFRDs7SUFFRCxNQUFNSyxVQUFVLEdBQUdwQixpQkFBaUIsQ0FBQ21CLFNBQUQsQ0FBcEM7O0lBRUEsSUFBSTFDLGFBQWEsQ0FBQ29CLFFBQWQsQ0FBdUJ1QixVQUF2QixDQUFKLEVBQXdDO01BQ3RDLE9BQVEsSUFBR3RDLFdBQVcsQ0FBQ3NDLFVBQUQsQ0FBYSxJQUFHM0IsYUFBYSxDQUFDMEIsU0FBRCxDQUFZLEdBQS9EO0lBQ0Q7O0lBRUQsSUFBSXpDLGFBQWEsQ0FBQ21CLFFBQWQsQ0FBdUJ1QixVQUF2QixDQUFKLEVBQXdDO01BQ3RDLE9BQVEsSUFBR0EsVUFBVyxJQUFHRCxTQUFTLENBQUN2QixLQUFNLEdBQXpDO0lBQ0Q7RUFDRjs7RUFNRHlCLFlBQVksQ0FBRUMsT0FBRixFQUFXO0lBQ3JCLE1BQU07TUFBRUM7SUFBRixJQUFzQkQsT0FBNUI7O0lBQ0EsSUFBSUMsZUFBZSxJQUFJQSxlQUFlLEtBQUssR0FBM0MsRUFBZ0Q7TUFDOUMsTUFBTSxJQUFJekIsS0FBSixDQUFXLElBQUd5QixlQUFnQixtQ0FBcEIsR0FDYixvRUFERyxDQUFOO0lBRUQ7O0lBRUQsSUFBSUMsbUJBQW1CLEdBQUcsa0JBQTFCOztJQUNBLElBQUlGLE9BQU8sQ0FBQ0csT0FBUixJQUFtQkgsT0FBTyxDQUFDRyxPQUFSLEtBQW9CLEdBQTNDLEVBQWdEO01BQzlDLElBQUlDLFlBQVksR0FBRyxDQUFDSixPQUFPLENBQUNHLE9BQVQsQ0FBbkI7O01BQ0EsSUFBSUgsT0FBTyxDQUFDSyxVQUFaLEVBQXdCO1FBQ3RCLEtBQUssTUFBTUMsYUFBWCxJQUE0Qk4sT0FBTyxDQUFDSyxVQUFwQyxFQUFnRDtVQUM5Q0QsWUFBWSxDQUFDRyxJQUFiLENBQWtCRCxhQUFsQjtRQUNEOztRQUNESixtQkFBbUIsSUFBSyxlQUFjRSxZQUFZLENBQUNsQyxJQUFiLENBQWtCLEdBQWxCLENBQXVCLElBQTdEO01BQ0QsQ0FMRCxNQUtPO1FBQ0xnQyxtQkFBbUIsSUFBSyxzQkFBcUJGLE9BQU8sQ0FBQ0csT0FBUSxJQUE3RDtNQUNEO0lBQ0YsQ0FWRCxNQVVPLElBQUlILE9BQU8sQ0FBQ0ssVUFBWixFQUF3QjtNQUM3QkgsbUJBQW1CLElBQUssc0JBQXFCRixPQUFPLENBQUNLLFVBQVIsQ0FBbUJuQyxJQUFuQixDQUF3QixLQUF4QixDQUErQixJQUE1RTtJQUNEOztJQUNELElBQUk4QixPQUFPLENBQUNRLEVBQVosRUFBZ0I7TUFDZE4sbUJBQW1CLElBQUssZ0JBQWUsS0FBS2QsZUFBTCxDQUFxQlksT0FBTyxDQUFDUSxFQUE3QixDQUFpQyxJQUF4RTtJQUNEOztJQUNELElBQUlSLE9BQU8sQ0FBQ1MsS0FBWixFQUFtQjtNQUNqQixLQUFLLE1BQU1DLElBQVgsSUFBbUJWLE9BQU8sQ0FBQ1MsS0FBM0IsRUFBa0M7UUFDaENQLG1CQUFtQixJQUFJLEtBQUtYLFNBQUwsQ0FBZW1CLElBQWYsQ0FBdkI7TUFDRDtJQUNGOztJQUNELElBQUlWLE9BQU8sQ0FBQ1csT0FBWixFQUFxQjtNQUNuQixLQUFLLE1BQU1DLE1BQVgsSUFBcUJaLE9BQU8sQ0FBQ1csT0FBN0IsRUFBc0M7UUFDcENULG1CQUFtQixJQUFJLEtBQUtOLFdBQUwsQ0FBaUJnQixNQUFqQixDQUF2QjtNQUNEO0lBQ0Y7O0lBQ0QsSUFBSVosT0FBTyxDQUFDYSxJQUFaLEVBQWtCO01BQ2hCWCxtQkFBbUIsSUFBSyxrQkFBaUIsS0FBS0gsWUFBTCxDQUFrQkMsT0FBTyxDQUFDYSxJQUExQixDQUFnQyxHQUF6RTtJQUNEOztJQUNELE9BQU9YLG1CQUFQO0VBQ0Q7O0VBT0RZLGNBQWMsQ0FBRTFDLEdBQUYsRUFBTztJQUNuQixRQUFRQSxHQUFHLENBQUMyQyxJQUFaO01BQ0UsS0FBSyxNQUFMO1FBQ0UsT0FBTyxLQUFLaEIsWUFBTCxDQUFrQjNCLEdBQWxCLENBQVA7O01BQ0YsS0FBSyxTQUFMO1FBQ0UsT0FBTyxLQUFLMEMsY0FBTCxDQUFvQjFDLEdBQUcsQ0FBQ3lDLElBQXhCLENBQVA7O01BQ0YsS0FBSyxXQUFMO1FBQ0UsT0FBT3pDLEdBQUcsQ0FBQzRDLFNBQUosQ0FBY3BELEdBQWQsQ0FBbUJzQixRQUFELElBQWMsS0FBSzRCLGNBQUwsQ0FBb0I1QixRQUFwQixDQUFoQyxFQUErRGhCLElBQS9ELENBQW9FLElBQXBFLENBQVA7O01BRUY7UUFFRSxNQUFNLElBQUlNLEtBQUosQ0FBVyxpQ0FBZ0NKLEdBQUcsQ0FBQzJDLElBQUssc0RBQXBELENBQU47SUFWSjtFQVlEOztFQU9ERSxxQkFBcUIsR0FBSTtJQUN2QixJQUFJQyxNQUFKOztJQUNBLElBQUk7TUFDRkEsTUFBTSxHQUFHdkUsTUFBTSxDQUFDd0UsS0FBUCxDQUFhLEtBQUtqQyxRQUFsQixDQUFUO0lBQ0QsQ0FGRCxDQUVFLE9BQU9rQyxDQUFQLEVBQVU7TUFDVixNQUFNLElBQUlDLG1CQUFPQyxvQkFBWCxDQUFpQyx5QkFBd0IsS0FBS3BDLFFBQVMsZUFBY2tDLENBQUUsR0FBdkYsQ0FBTjtJQUNEOztJQUNELElBQUk7TUFDRixPQUFPLEtBQUtOLGNBQUwsQ0FBb0JJLE1BQXBCLENBQVA7SUFDRCxDQUZELENBRUUsT0FBT0UsQ0FBUCxFQUFVO01BQ1YsTUFBTSxJQUFJQyxtQkFBT0Msb0JBQVgsQ0FBaUMsNkJBQTRCLEtBQUtwQyxRQUFTLGVBQWNrQyxDQUFFLEdBQTNGLENBQU47SUFDRDtFQUNGOztBQXJMZ0I7O2VBd0xKcEMsWSJ9
@@ -69,4 +69,4 @@ var _default = desiredCapConstraints;
69
69
  exports.default = _default;require('source-map-support').install();
70
70
 
71
71
 
72
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9kZXNpcmVkLWNhcHMuanMiXSwibmFtZXMiOlsidWlhdXRvbWF0b3JDYXBDb25zdHJhaW50cyIsImFwcCIsInByZXNlbmNlIiwiaXNTdHJpbmciLCJhdXRvbWF0aW9uTmFtZSIsImJyb3dzZXJOYW1lIiwibGF1bmNoVGltZW91dCIsImlzTnVtYmVyIiwic2tpcFVubG9jayIsImlzQm9vbGVhbiIsInVpYXV0b21hdG9yMlNlcnZlckxhdW5jaFRpbWVvdXQiLCJ1aWF1dG9tYXRvcjJTZXJ2ZXJJbnN0YWxsVGltZW91dCIsInVpYXV0b21hdG9yMlNlcnZlclJlYWRUaW1lb3V0IiwiZGlzYWJsZVdpbmRvd0FuaW1hdGlvbiIsInN5c3RlbVBvcnQiLCJtanBlZ1NlcnZlclBvcnQiLCJtanBlZ1NjcmVlbnNob3RVcmwiLCJza2lwU2VydmVySW5zdGFsbGF0aW9uIiwiYW5kcm9pZENvdmVyYWdlRW5kSW50ZW50IiwidXNlclByb2ZpbGUiLCJhcHBXYWl0Rm9yTGF1bmNoIiwiZGlzYWJsZVN1cHByZXNzQWNjZXNzaWJpbGl0eVNlcnZpY2UiLCJkZXNpcmVkQ2FwQ29uc3RyYWludHMiLCJPYmplY3QiLCJhc3NpZ24iLCJjb21tb25DYXBDb25zdHJhaW50cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBRUEsSUFBSUEseUJBQXlCLEdBQUc7QUFDOUJDLEVBQUFBLEdBQUcsRUFBRTtBQUNIQyxJQUFBQSxRQUFRLEVBQUUsSUFEUDtBQUVIQyxJQUFBQSxRQUFRLEVBQUU7QUFGUCxHQUR5QjtBQUs5QkMsRUFBQUEsY0FBYyxFQUFFO0FBQ2RELElBQUFBLFFBQVEsRUFBRTtBQURJLEdBTGM7QUFROUJFLEVBQUFBLFdBQVcsRUFBRTtBQUNYRixJQUFBQSxRQUFRLEVBQUU7QUFEQyxHQVJpQjtBQVc5QkcsRUFBQUEsYUFBYSxFQUFFO0FBQ2JDLElBQUFBLFFBQVEsRUFBRTtBQURHLEdBWGU7QUFjOUJDLEVBQUFBLFVBQVUsRUFBRTtBQUNWQyxJQUFBQSxTQUFTLEVBQUU7QUFERCxHQWRrQjtBQWlCOUJDLEVBQUFBLCtCQUErQixFQUFFO0FBQy9CSCxJQUFBQSxRQUFRLEVBQUU7QUFEcUIsR0FqQkg7QUFvQjlCSSxFQUFBQSxnQ0FBZ0MsRUFBRTtBQUNoQ0osSUFBQUEsUUFBUSxFQUFFO0FBRHNCLEdBcEJKO0FBdUI5QkssRUFBQUEsNkJBQTZCLEVBQUU7QUFDN0JMLElBQUFBLFFBQVEsRUFBRTtBQURtQixHQXZCRDtBQTBCOUJNLEVBQUFBLHNCQUFzQixFQUFFO0FBQ3RCSixJQUFBQSxTQUFTLEVBQUU7QUFEVyxHQTFCTTtBQTZCOUJLLEVBQUFBLFVBQVUsRUFBRTtBQUNWUCxJQUFBQSxRQUFRLEVBQUU7QUFEQSxHQTdCa0I7QUFnQzlCUSxFQUFBQSxlQUFlLEVBQUU7QUFDZlIsSUFBQUEsUUFBUSxFQUFFO0FBREssR0FoQ2E7QUFtQzlCUyxFQUFBQSxrQkFBa0IsRUFBRTtBQUNsQmIsSUFBQUEsUUFBUSxFQUFFO0FBRFEsR0FuQ1U7QUFzQzlCYyxFQUFBQSxzQkFBc0IsRUFBRTtBQUN0QlIsSUFBQUEsU0FBUyxFQUFFO0FBRFcsR0F0Q007QUF5QzlCUyxFQUFBQSx3QkFBd0IsRUFBRTtBQUN4QmYsSUFBQUEsUUFBUSxFQUFFO0FBRGMsR0F6Q0k7QUE0QzlCZ0IsRUFBQUEsV0FBVyxFQUFFO0FBQ1haLElBQUFBLFFBQVEsRUFBRTtBQURDLEdBNUNpQjtBQStDOUJhLEVBQUFBLGdCQUFnQixFQUFFO0FBQ2hCWCxJQUFBQSxTQUFTLEVBQUU7QUFESyxHQS9DWTtBQWtEOUJZLEVBQUFBLG1DQUFtQyxFQUFFO0FBQ25DWixJQUFBQSxTQUFTLEVBQUU7QUFEd0I7QUFsRFAsQ0FBaEM7QUF1REEsSUFBSWEscUJBQXFCLEdBQUcsRUFBNUI7QUFDQUMsTUFBTSxDQUFDQyxNQUFQLENBQ0VGLHFCQURGLEVBRUV0Qix5QkFGRixFQUdFeUIseUNBSEY7ZUFNZUgscUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21tb25DYXBDb25zdHJhaW50cyB9IGZyb20gJ2FwcGl1bS1hbmRyb2lkLWRyaXZlcic7XG5cbmxldCB1aWF1dG9tYXRvckNhcENvbnN0cmFpbnRzID0ge1xuICBhcHA6IHtcbiAgICBwcmVzZW5jZTogdHJ1ZSxcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBhdXRvbWF0aW9uTmFtZToge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGJyb3dzZXJOYW1lOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgbGF1bmNoVGltZW91dDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIHNraXBVbmxvY2s6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgdWlhdXRvbWF0b3IyU2VydmVyTGF1bmNoVGltZW91dDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIHVpYXV0b21hdG9yMlNlcnZlckluc3RhbGxUaW1lb3V0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgdWlhdXRvbWF0b3IyU2VydmVyUmVhZFRpbWVvdXQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBkaXNhYmxlV2luZG93QW5pbWF0aW9uOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHN5c3RlbVBvcnQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBtanBlZ1NlcnZlclBvcnQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBtanBlZ1NjcmVlbnNob3RVcmw6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBza2lwU2VydmVySW5zdGFsbGF0aW9uOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGFuZHJvaWRDb3ZlcmFnZUVuZEludGVudDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIHVzZXJQcm9maWxlOiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgYXBwV2FpdEZvckxhdW5jaDoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBkaXNhYmxlU3VwcHJlc3NBY2Nlc3NpYmlsaXR5U2VydmljZToge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9XG59O1xuXG5sZXQgZGVzaXJlZENhcENvbnN0cmFpbnRzID0ge307XG5PYmplY3QuYXNzaWduKFxuICBkZXNpcmVkQ2FwQ29uc3RyYWludHMsXG4gIHVpYXV0b21hdG9yQ2FwQ29uc3RyYWludHMsXG4gIGNvbW1vbkNhcENvbnN0cmFpbnRzXG4pO1xuXG5leHBvcnQgZGVmYXVsdCBkZXNpcmVkQ2FwQ29uc3RyYWludHM7XG4iXSwiZmlsZSI6ImxpYi9kZXNpcmVkLWNhcHMuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
72
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2Rlc2lyZWQtY2Fwcy5qcyIsIm5hbWVzIjpbInVpYXV0b21hdG9yQ2FwQ29uc3RyYWludHMiLCJhcHAiLCJwcmVzZW5jZSIsImlzU3RyaW5nIiwiYXV0b21hdGlvbk5hbWUiLCJicm93c2VyTmFtZSIsImxhdW5jaFRpbWVvdXQiLCJpc051bWJlciIsInNraXBVbmxvY2siLCJpc0Jvb2xlYW4iLCJ1aWF1dG9tYXRvcjJTZXJ2ZXJMYXVuY2hUaW1lb3V0IiwidWlhdXRvbWF0b3IyU2VydmVySW5zdGFsbFRpbWVvdXQiLCJ1aWF1dG9tYXRvcjJTZXJ2ZXJSZWFkVGltZW91dCIsImRpc2FibGVXaW5kb3dBbmltYXRpb24iLCJzeXN0ZW1Qb3J0IiwibWpwZWdTZXJ2ZXJQb3J0IiwibWpwZWdTY3JlZW5zaG90VXJsIiwic2tpcFNlcnZlckluc3RhbGxhdGlvbiIsImFuZHJvaWRDb3ZlcmFnZUVuZEludGVudCIsInVzZXJQcm9maWxlIiwiYXBwV2FpdEZvckxhdW5jaCIsImRpc2FibGVTdXBwcmVzc0FjY2Vzc2liaWxpdHlTZXJ2aWNlIiwiZGVzaXJlZENhcENvbnN0cmFpbnRzIiwiT2JqZWN0IiwiYXNzaWduIiwiY29tbW9uQ2FwQ29uc3RyYWludHMiXSwic291cmNlUm9vdCI6Ii4uLy4uIiwic291cmNlcyI6WyJsaWIvZGVzaXJlZC1jYXBzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbW1vbkNhcENvbnN0cmFpbnRzIH0gZnJvbSAnYXBwaXVtLWFuZHJvaWQtZHJpdmVyJztcblxubGV0IHVpYXV0b21hdG9yQ2FwQ29uc3RyYWludHMgPSB7XG4gIGFwcDoge1xuICAgIHByZXNlbmNlOiB0cnVlLFxuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGF1dG9tYXRpb25OYW1lOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgYnJvd3Nlck5hbWU6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBsYXVuY2hUaW1lb3V0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgc2tpcFVubG9jazoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICB1aWF1dG9tYXRvcjJTZXJ2ZXJMYXVuY2hUaW1lb3V0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgdWlhdXRvbWF0b3IyU2VydmVySW5zdGFsbFRpbWVvdXQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICB1aWF1dG9tYXRvcjJTZXJ2ZXJSZWFkVGltZW91dDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIGRpc2FibGVXaW5kb3dBbmltYXRpb246IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgc3lzdGVtUG9ydDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIG1qcGVnU2VydmVyUG9ydDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIG1qcGVnU2NyZWVuc2hvdFVybDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIHNraXBTZXJ2ZXJJbnN0YWxsYXRpb246IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgYW5kcm9pZENvdmVyYWdlRW5kSW50ZW50OiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgdXNlclByb2ZpbGU6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBhcHBXYWl0Rm9yTGF1bmNoOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGRpc2FibGVTdXBwcmVzc0FjY2Vzc2liaWxpdHlTZXJ2aWNlOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH1cbn07XG5cbmxldCBkZXNpcmVkQ2FwQ29uc3RyYWludHMgPSB7fTtcbk9iamVjdC5hc3NpZ24oXG4gIGRlc2lyZWRDYXBDb25zdHJhaW50cyxcbiAgdWlhdXRvbWF0b3JDYXBDb25zdHJhaW50cyxcbiAgY29tbW9uQ2FwQ29uc3RyYWludHNcbik7XG5cbmV4cG9ydCBkZWZhdWx0IGRlc2lyZWRDYXBDb25zdHJhaW50cztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBRUEsSUFBSUEseUJBQXlCLEdBQUc7RUFDOUJDLEdBQUcsRUFBRTtJQUNIQyxRQUFRLEVBQUUsSUFEUDtJQUVIQyxRQUFRLEVBQUU7RUFGUCxDQUR5QjtFQUs5QkMsY0FBYyxFQUFFO0lBQ2RELFFBQVEsRUFBRTtFQURJLENBTGM7RUFROUJFLFdBQVcsRUFBRTtJQUNYRixRQUFRLEVBQUU7RUFEQyxDQVJpQjtFQVc5QkcsYUFBYSxFQUFFO0lBQ2JDLFFBQVEsRUFBRTtFQURHLENBWGU7RUFjOUJDLFVBQVUsRUFBRTtJQUNWQyxTQUFTLEVBQUU7RUFERCxDQWRrQjtFQWlCOUJDLCtCQUErQixFQUFFO0lBQy9CSCxRQUFRLEVBQUU7RUFEcUIsQ0FqQkg7RUFvQjlCSSxnQ0FBZ0MsRUFBRTtJQUNoQ0osUUFBUSxFQUFFO0VBRHNCLENBcEJKO0VBdUI5QkssNkJBQTZCLEVBQUU7SUFDN0JMLFFBQVEsRUFBRTtFQURtQixDQXZCRDtFQTBCOUJNLHNCQUFzQixFQUFFO0lBQ3RCSixTQUFTLEVBQUU7RUFEVyxDQTFCTTtFQTZCOUJLLFVBQVUsRUFBRTtJQUNWUCxRQUFRLEVBQUU7RUFEQSxDQTdCa0I7RUFnQzlCUSxlQUFlLEVBQUU7SUFDZlIsUUFBUSxFQUFFO0VBREssQ0FoQ2E7RUFtQzlCUyxrQkFBa0IsRUFBRTtJQUNsQmIsUUFBUSxFQUFFO0VBRFEsQ0FuQ1U7RUFzQzlCYyxzQkFBc0IsRUFBRTtJQUN0QlIsU0FBUyxFQUFFO0VBRFcsQ0F0Q007RUF5QzlCUyx3QkFBd0IsRUFBRTtJQUN4QmYsUUFBUSxFQUFFO0VBRGMsQ0F6Q0k7RUE0QzlCZ0IsV0FBVyxFQUFFO0lBQ1haLFFBQVEsRUFBRTtFQURDLENBNUNpQjtFQStDOUJhLGdCQUFnQixFQUFFO0lBQ2hCWCxTQUFTLEVBQUU7RUFESyxDQS9DWTtFQWtEOUJZLG1DQUFtQyxFQUFFO0lBQ25DWixTQUFTLEVBQUU7RUFEd0I7QUFsRFAsQ0FBaEM7QUF1REEsSUFBSWEscUJBQXFCLEdBQUcsRUFBNUI7QUFDQUMsTUFBTSxDQUFDQyxNQUFQLENBQ0VGLHFCQURGLEVBRUV0Qix5QkFGRixFQUdFeUIseUNBSEY7ZUFNZUgscUIifQ==
@@ -625,4 +625,4 @@ var _default = AndroidUiautomator2Driver;
625
625
  exports.default = _default;require('source-map-support').install();
626
626
 
627
627
 
628
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9kcml2ZXIuanMiXSwibmFtZXMiOlsiaGVscGVycyIsIk9iamVjdCIsImFzc2lnbiIsInVpYXV0b21hdG9yMkhlbHBlcnMiLCJhbmRyb2lkSGVscGVycyIsIkRFVklDRV9QT1JUX1JBTkdFIiwiREVWSUNFX1BPUlRfQUxMT0NBVElPTl9HVUFSRCIsInV0aWwiLCJnZXRMb2NrRmlsZUd1YXJkIiwicGF0aCIsInJlc29sdmUiLCJvcyIsInRtcGRpciIsInRpbWVvdXQiLCJ0cnlSZWNvdmVyeSIsIkRFVklDRV9QT1JUIiwiTUpQRUdfU0VSVkVSX0RFVklDRV9QT1JUIiwiTE9DQUxIT1NUX0lQNCIsIk5PX1BST1hZIiwiUmVnRXhwIiwiQ0hST01FX05PX1BST1hZIiwiTUVNT0laRURfRlVOQ1RJT05TIiwiQW5kcm9pZFVpYXV0b21hdG9yMkRyaXZlciIsIkJhc2VEcml2ZXIiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJzaG91bGRWYWxpZGF0ZUNhcHMiLCJzaGVsbCIsImxvY2F0b3JTdHJhdGVnaWVzIiwiZGVzaXJlZENhcENvbnN0cmFpbnRzIiwidWlhdXRvbWF0b3IyIiwiandwUHJveHlBY3RpdmUiLCJkZWZhdWx0SU1FIiwiandwUHJveHlBdm9pZCIsImFwa1N0cmluZ3MiLCJzZXR0aW5ncyIsIkRldmljZVNldHRpbmdzIiwiaWdub3JlVW5pbXBvcnRhbnRWaWV3cyIsImFsbG93SW52aXNpYmxlRWxlbWVudHMiLCJvblNldHRpbmdzVXBkYXRlIiwiYmluZCIsImNocm9tZWRyaXZlciIsInNlc3Npb25DaHJvbWVkcml2ZXJzIiwiZm4iLCJfIiwibWVtb2l6ZSIsInZhbGlkYXRlRGVzaXJlZENhcHMiLCJjYXBzIiwiY3JlYXRlU2Vzc2lvbiIsImFyZ3MiLCJzZXNzaW9uSWQiLCJzZXJ2ZXJEZXRhaWxzIiwicGxhdGZvcm0iLCJ3ZWJTdG9yYWdlRW5hYmxlZCIsInRha2VzU2NyZWVuc2hvdCIsImphdmFzY3JpcHRFbmFibGVkIiwiZGF0YWJhc2VFbmFibGVkIiwibmV0d29ya0Nvbm5lY3Rpb25FbmFibGVkIiwibG9jYXRpb25Db250ZXh0RW5hYmxlZCIsIndhcm5pbmdzIiwiZGVzaXJlZCIsImN1ckNvbnRleHQiLCJkZWZhdWx0Q29udGV4dE5hbWUiLCJkZWZhdWx0T3B0cyIsImZ1bGxSZXNldCIsImF1dG9MYXVuY2giLCJhZGJQb3J0IiwiREVGQVVMVF9BREJfUE9SVCIsImFuZHJvaWRJbnN0YWxsVGltZW91dCIsImRlZmF1bHRzIiwiaXNDaHJvbWVTZXNzaW9uIiwibG9nIiwiaW5mbyIsInBrZyIsImFjdGl2aXR5IiwiZ2V0Q2hyb21lUGtnIiwiYnJvd3Nlck5hbWUiLCJhcHBQYWNrYWdlIiwiYXBwQWN0aXZpdHkiLCJyZWJvb3QiLCJzZXRBdmRGcm9tQ2FwYWJpbGl0aWVzIiwiYXBwIiwiY29uZmlndXJlQXBwIiwiQVBLX0VYVEVOU0lPTiIsIkFQS1NfRVhURU5TSU9OIiwiY2hlY2tBcHBQcmVzZW50Iiwic3RhcnRVaUF1dG9tYXRvcjJTZXNzaW9uIiwiZmlsbERldmljZURldGFpbHMiLCJtanBlZ1NjcmVlbnNob3RVcmwiLCJtanBlZ1N0cmVhbSIsIm1qcGVnIiwiTUpwZWdTdHJlYW0iLCJzdGFydCIsImUiLCJkZWxldGVTZXNzaW9uIiwicGl4ZWxSYXRpbyIsImdldERldmljZVBpeGVsUmF0aW8iLCJzdGF0QmFySGVpZ2h0IiwiZ2V0U3RhdHVzQmFySGVpZ2h0Iiwidmlld3BvcnRSZWN0IiwiZ2V0Vmlld1BvcnRSZWN0IiwiZHJpdmVyRGF0YSIsImdldFNlc3Npb24iLCJzZXNzaW9uRGF0YSIsImRlYnVnIiwidWlhMkRhdGEiLCJqd3Byb3h5IiwiY29tbWFuZCIsImlzRW11bGF0b3IiLCJhZGIiLCJhdmQiLCJkZXZpY2VOYW1lIiwiZXJyb3JBbmRUaHJvdyIsInBsYXRmb3JtVmVyc2lvbiIsImF2ZERldmljZSIsInJlcGxhY2UiLCJhbGxvY2F0ZVN5c3RlbVBvcnQiLCJmb3J3YXJkUG9ydCIsImxvY2FsUG9ydCIsInN5c3RlbVBvcnQiLCJfaGFzU3lzdGVtUG9ydEluQ2FwcyIsInN0YXJ0UG9ydCIsImVuZFBvcnQiLCJyZWxlYXNlU3lzdGVtUG9ydCIsInJlbW92ZVBvcnRGb3J3YXJkIiwiYWxsb2NhdGVNanBlZ1NlcnZlclBvcnQiLCJtanBlZ1NlcnZlclBvcnQiLCJyZWxlYXNlTWpwZWdTZXJ2ZXJQb3J0IiwidWRpZCIsImVtUG9ydCIsImdldERldmljZUluZm9Gcm9tQ2FwcyIsImNyZWF0ZUFEQiIsImFwaUxldmVsIiwiZ2V0QXBpTGV2ZWwiLCJzZXRIaWRkZW5BcGlQb2xpY3kiLCJpZ25vcmVIaWRkZW5BcGlQb2xpY3lFcnJvciIsImhhc1ZhbHVlIiwiZ3BzRW5hYmxlZCIsInRvZ2dsZUdQU0xvY2F0aW9uUHJvdmlkZXIiLCJ3YXJuIiwiYXBwSW5mbyIsImdldExhdW5jaEluZm8iLCJjdXJEZXZpY2VJZCIsImRldmljZVVESUQiLCJpbml0RGV2aWNlIiwiaW5pdFVpQXV0b21hdG9yMlNlcnZlciIsImRpc2FibGVXaW5kb3dBbmltYXRpb24iLCJpc0FuaW1hdGlvbk9uIiwic2V0QW5pbWF0aW9uU3RhdGUiLCJfd2FzV2luZG93QW5pbWF0aW9uRGlzYWJsZWQiLCJpbml0QVVUIiwic3RhcnRTZXNzaW9uIiwiYWRkRGV2aWNlSW5mb1RvQ2FwcyIsInNraXBVbmxvY2siLCJ1bmxvY2siLCJzdGFydENocm9tZVNlc3Npb24iLCJlbnN1cmVBcHBTdGFydHMiLCJvcmllbnRhdGlvbiIsInNldE9yaWVudGF0aW9uIiwiYXV0b1dlYnZpZXciLCJ2aWV3TmFtZSIsImRlZmF1bHRXZWJ2aWV3TmFtZSIsImF1dG9XZWJ2aWV3VGltZW91dCIsInNldENvbnRleHQiLCJhcGlWZXJzaW9uIiwibWFudWZhY3R1cmVyIiwibW9kZWwiLCJyZWFsRGlzcGxheVNpemUiLCJkaXNwbGF5RGVuc2l0eSIsIm1vYmlsZUdldERldmljZUluZm8iLCJkZXZpY2VBcGlMZXZlbCIsInBhcnNlSW50IiwiZGV2aWNlU2NyZWVuU2l6ZSIsImRldmljZVNjcmVlbkRlbnNpdHkiLCJkZXZpY2VNb2RlbCIsImRldmljZU1hbnVmYWN0dXJlciIsInVpYXV0b21hdG9yMk9wdHMiLCJob3N0IiwicmVtb3RlQWRiSG9zdCIsImRldmljZVBvcnQiLCJhcGsiLCJ0bXBEaXIiLCJkaXNhYmxlU3VwcHJlc3NBY2Nlc3NpYmlsaXR5U2VydmljZSIsInJlYWRUaW1lb3V0IiwidWlhdXRvbWF0b3IyU2VydmVyUmVhZFRpbWVvdXQiLCJVaUF1dG9tYXRvcjJTZXJ2ZXIiLCJwcm94eVJlcVJlcyIsInByb3h5Q29tbWFuZCIsInNraXBTZXJ2ZXJJbnN0YWxsYXRpb24iLCJpbnN0YWxsU2VydmVyQXBrIiwidWlhdXRvbWF0b3IyU2VydmVySW5zdGFsbFRpbWVvdXQiLCJhZGRUb0RldmljZUlkbGVXaGl0ZWxpc3QiLCJTRVRUSU5HU19IRUxQRVJfUEtHX0lEIiwiU0VSVkVSX1BBQ0tBR0VfSUQiLCJTRVJWRVJfVEVTVF9QQUNLQUdFX0lEIiwic3RkZXJyIiwibWVzc2FnZSIsInVuaW5zdGFsbE90aGVyUGFja2FnZXMiLCJwYXJzZUFycmF5Iiwib3RoZXJBcHBzIiwiQiIsImFsbCIsIm1hcCIsImluc3RhbGxPdGhlckFwa3MiLCJub1Jlc2V0IiwiaXNBcHBJbnN0YWxsZWQiLCJub1NpZ24iLCJjaGVja0Fwa0NlcnQiLCJyZXF1aXJlRGVmYXVsdENlcnQiLCJzaWduQXBwIiwic2tpcFVuaW5zdGFsbCIsInVuaW5zdGFsbEFwayIsImluc3RhbGxBcGsiLCJmYXN0UmVzZXQiLCJyZXNldEFwcCIsImFwcFdhaXRQYWNrYWdlIiwiYXBwV2FpdEFjdGl2aXR5IiwiYW5kcm9pZENvdmVyYWdlIiwic3RhcnRBcHAiLCJhY3Rpb24iLCJpbnRlbnRBY3Rpb24iLCJjYXRlZ29yeSIsImludGVudENhdGVnb3J5IiwiZmxhZ3MiLCJpbnRlbnRGbGFncyIsIndhaXRQa2ciLCJ3YWl0QWN0aXZpdHkiLCJ3YWl0Rm9yTGF1bmNoIiwiYXBwV2FpdEZvckxhdW5jaCIsIndhaXREdXJhdGlvbiIsImFwcFdhaXREdXJhdGlvbiIsIm9wdGlvbmFsSW50ZW50QXJndW1lbnRzIiwic3RvcEFwcCIsImRvbnRTdG9wQXBwT25SZXNldCIsInJldHJ5IiwidXNlciIsInVzZXJQcm9maWxlIiwiaXNFbXB0eSIsIl9zY3JlZW5SZWNvcmRpbmdQcm9wZXJ0aWVzIiwic3RvcFJlY29yZGluZ1NjcmVlbiIsImlnbiIsInJlbW92ZUFsbFNlc3Npb25XZWJTb2NrZXRIYW5kbGVycyIsInNlcnZlciIsIm1vYmlsZVN0b3BTY3JlZW5TdHJlYW1pbmciLCJzdG9wQ2hyb21lZHJpdmVyUHJveGllcyIsImVyciIsInVuaWNvZGVLZXlib2FyZCIsInJlc2V0S2V5Ym9hcmQiLCJzZXRJTUUiLCJlbmRBbmRyb2lkQ292ZXJhZ2UiLCJhbmRyb2lkQ292ZXJhZ2VFbmRJbnRlbnQiLCJicm9hZGNhc3QiLCJmb3JjZVN0b3AiLCJzdG9wTG9nY2F0IiwiZXJyb3IiLCJzZXREZWZhdWx0SGlkZGVuQXBpUG9saWN5IiwiYXZkTmFtZSIsImtpbGxFbXVsYXRvciIsInN0b3AiLCJmcyIsImV4aXN0cyIsIndyYXBCb290c3RyYXBEaXNjb25uZWN0Iiwid3JhcHBlZCIsInJlc3RhcnQiLCJwcm94eUFjdGl2ZSIsImNhblByb3h5IiwiZ2V0UHJveHlBdm9pZExpc3QiLCJuYXRpdmVXZWJTY3JlZW5zaG90IiwiaXNDaHJvbWVCcm93c2VyIiwiY21kIiwidG9QYWlycyIsImFuZHJvaWRDb21tYW5kcyIsInByb3RvdHlwZSIsImNvbW1hbmRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUdBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUdBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUdBLE1BQU1BLE9BQU8sR0FBR0MsTUFBTSxDQUFDQyxNQUFQLENBQWMsRUFBZCxFQUFrQkMsZ0JBQWxCLEVBQXVDQyxtQ0FBdkMsQ0FBaEI7QUFJQSxNQUFNQyxpQkFBaUIsR0FBRyxDQUFDLElBQUQsRUFBTyxJQUFQLENBQTFCOztBQUlB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QTdCZSxFQThCZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsdUNBQVgsQ0FBVCxDQTlCZSxFQStCZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsc0RBQVgsQ0FBVCxDQS9CZSxFQWdDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsb0RBQVgsQ0FBVCxDQWhDZSxFQWlDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsNENBQVgsQ0FBVCxDQWpDZSxFQWtDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsMkNBQVgsQ0FBVCxDQWxDZSxFQW1DZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsOENBQVgsQ0FBVCxDQW5DZSxFQW9DZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsaUNBQVgsQ0FBVCxDQXBDZSxFQXFDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsdUNBQVgsQ0FBVCxDQXJDZSxFQXNDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsK0NBQVgsQ0FBVCxDQXRDZSxFQXVDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsOENBQVgsQ0FBVCxDQXZDZSxFQXdDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsZ0NBQVgsQ0FBVCxDQXhDZSxFQXlDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcseUJBQVgsQ0FBVCxDQXpDZSxFQTBDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcseUJBQVgsQ0FBVCxDQTFDZSxFQTJDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsMkJBQVgsQ0FBVCxDQTNDZSxFQTRDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsc0JBQVgsQ0FBVCxDQTVDZSxFQTZDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsMEJBQVgsQ0FBVCxDQTdDZSxFQThDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFK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LFdBQUthLGFBQUwsR0FBcUJmLFFBQXJCO0FBQ0Q7O0FBQ0QsUUFBSSxLQUFLTyxJQUFMLENBQVVrUCxtQkFBZCxFQUFtQztBQUNqQyxXQUFLMU8sYUFBTCxHQUFxQixDQUFDLEdBQUcsS0FBS0EsYUFBVCxFQUF3QixDQUFDLEtBQUQsRUFBUSxJQUFJZCxNQUFKLENBQVcsNEJBQVgsQ0FBUixDQUF4QixDQUFyQjtBQUNEOztBQUVELFdBQU8sS0FBS2MsYUFBWjtBQUNEOztBQUVrQixNQUFmcUMsZUFBZSxHQUFJO0FBQ3JCLFdBQU90RSxPQUFPLENBQUM0USxlQUFSLENBQXdCLEtBQUtuUCxJQUFMLENBQVVtRCxXQUFsQyxDQUFQO0FBQ0Q7O0FBMW1CZ0Q7Ozs7QUE4bUJuRCxLQUFLLElBQUksQ0FBQ2lNLEdBQUQsRUFBTWxPLEVBQU4sQ0FBVCxJQUFzQkMsZ0JBQUVrTyxPQUFGLENBQVVDLG9DQUFWLENBQXRCLEVBQWtEO0FBQ2hEelAsRUFBQUEseUJBQXlCLENBQUMwUCxTQUExQixDQUFvQ0gsR0FBcEMsSUFBMkNsTyxFQUEzQztBQUNEOztBQUdELEtBQUssSUFBSSxDQUFDa08sR0FBRCxFQUFNbE8sRUFBTixDQUFULElBQXNCQyxnQkFBRWtPLE9BQUYsQ0FBVUcsY0FBVixDQUF0QixFQUEyQztBQUN6QzNQLEVBQUFBLHlCQUF5QixDQUFDMFAsU0FBMUIsQ0FBb0NILEdBQXBDLElBQTJDbE8sRUFBM0M7QUFDRDs7ZUFHY3JCLHlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEJhc2VEcml2ZXIsIERldmljZVNldHRpbmdzIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5pbXBvcnQge1xuICBVaUF1dG9tYXRvcjJTZXJ2ZXIsIFNFUlZFUl9QQUNLQUdFX0lELCBTRVJWRVJfVEVTVF9QQUNLQUdFX0lEXG59IGZyb20gJy4vdWlhdXRvbWF0b3IyJztcbmltcG9ydCB7IGZzLCB1dGlsLCBtanBlZyB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyByZXRyeUludGVydmFsIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IGNvbW1hbmRzIGZyb20gJy4vY29tbWFuZHMvaW5kZXgnO1xuaW1wb3J0IHsgREVGQVVMVF9BREJfUE9SVCB9IGZyb20gJ2FwcGl1bS1hZGInO1xuaW1wb3J0IHVpYXV0b21hdG9yMkhlbHBlcnMgZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7XG4gIGFuZHJvaWRIZWxwZXJzLCBhbmRyb2lkQ29tbWFuZHMsIFNFVFRJTkdTX0hFTFBFUl9QS0dfSURcbn0gZnJvbSAnYXBwaXVtLWFuZHJvaWQtZHJpdmVyJztcbmltcG9ydCBkZXNpcmVkQ2FwQ29uc3RyYWludHMgZnJvbSAnLi9kZXNpcmVkLWNhcHMnO1xuaW1wb3J0IHsgZmluZEFQb3J0Tm90SW5Vc2UsIGNoZWNrUG9ydFN0YXR1cyB9IGZyb20gJ3BvcnRzY2FubmVyJztcbmltcG9ydCBvcyBmcm9tICdvcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IEFQS19FWFRFTlNJT04sIEFQS1NfRVhURU5TSU9OIH0gZnJvbSAnLi9leHRlbnNpb25zJztcblxuXG5jb25zdCBoZWxwZXJzID0gT2JqZWN0LmFzc2lnbih7fSwgdWlhdXRvbWF0b3IySGVscGVycywgYW5kcm9pZEhlbHBlcnMpO1xuXG4vLyBUaGUgcmFuZ2Ugb2YgcG9ydHMgd2UgY2FuIHVzZSBvbiB0aGUgc3lzdGVtIGZvciBjb21tdW5pY2F0aW5nIHRvIHRoZVxuLy8gVWlBdXRvbWF0b3IyIEhUVFAgc2VydmVyIG9uIHRoZSBkZXZpY2VcbmNvbnN0IERFVklDRV9QT1JUX1JBTkdFID0gWzgyMDAsIDgyOTldO1xuXG4vLyBUaGUgZ3VhcmQgaXMgbmVlZGVkIHRvIGF2b2lkIGR5bmFtaWMgc3lzdGVtIHBvcnQgYWxsb2NhdGlvbiBjb25mbGljdHMgZm9yXG4vLyBwYXJhbGxlbCBkcml2ZXIgc2Vzc2lvbnNcbmNvbnN0IERFVklDRV9QT1JUX0FMTE9DQVRJT05fR1VBUkQgPSB1dGlsLmdldExvY2tGaWxlR3VhcmQoXG4gIHBhdGgucmVzb2x2ZShvcy50bXBkaXIoKSwgJ3VpYTJfZGV2aWNlX3BvcnRfZ3VhcmQnKSxcbiAge3RpbWVvdXQ6IDI1LCB0cnlSZWNvdmVyeTogdHJ1ZX1cbik7XG5cbi8vIFRoaXMgaXMgdGhlIHBvcnQgdGhhdCBVaUF1dG9tYXRvcjIgbGlzdGVucyB0byBvbiB0aGUgZGV2aWNlLiBXZSB3aWxsIGZvcndhcmRcbi8vIG9uZSBvZiB0aGUgcG9ydHMgYWJvdmUgb24gdGhlIHN5c3RlbSB0byB0aGlzIHBvcnQgb24gdGhlIGRldmljZS5cbmNvbnN0IERFVklDRV9QT1JUID0gNjc5MDtcbi8vIFRoaXMgaXMgdGhlIHBvcnQgdGhhdCB0aGUgVWlBdXRvbWF0b3IyIE1KUEVHIHNlcnZlciBsaXN0ZW5zIHRvIG9uIHRoZSBkZXZpY2UuXG4vLyBXZSB3aWxsIGZvcndhcmQgb25lIG9mIHRoZSBwb3J0cyBhYm92ZSBvbiB0aGUgc3lzdGVtIHRvIHRoaXMgcG9ydCBvbiB0aGVcbi8vIGRldmljZS5cbmNvbnN0IE1KUEVHX1NFUlZFUl9ERVZJQ0VfUE9SVCA9IDc4MTA7XG5cbmNvbnN0IExPQ0FMSE9TVF9JUDQgPSAnMTI3LjAuMC4xJztcblxuLy8gTk9fUFJPWFkgY29udGFpbnMgdGhlIHBhdGhzIHRoYXQgd2UgbmV2ZXIgd2FudCB0byBwcm94eSB0byBVaUF1dG9tYXRvcjIgc2VydmVyLlxuLy8gVE9ETzogIEFkZCB0aGUgbGlzdCBvZiBwYXRocyB0aGF0IHdlIG5ldmVyIHdhbnQgdG8gcHJveHkgdG8gVWlBdXRvbWF0b3IyIHNlcnZlci5cbi8vIFRPRE86IE5lZWQgdG8gc2VncmVnYXRlIHRoZSBwYXRocyBiZXR0ZXIgd2F5IHVzaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbnMgd2hlcmV2ZXIgYXBwbGljYWJsZS5cbi8vIChOb3Qgc2VncmVnYXRpbmcgcmlnaHQgYXdheSBiZWNhdXNlIG1vcmUgcGF0aHMgdG8gYmUgYWRkZWQgaW4gdGhlIE5PX1BST1hZIGxpc3QpXG5jb25zdCBOT19QUk9YWSA9IFtcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vKD8hLiovKScpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYWxlcnRfW14vXSsnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FsZXJ0L1teL10rJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vW14vXSsvY3VycmVudF9hY3Rpdml0eScpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL1teL10rL2N1cnJlbnRfcGFja2FnZScpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2FwcC9bXi9dKycpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2RldmljZS9bXi9dKycpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL3NldHRpbmdzJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9jb250ZXh0JyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9jb250ZXh0cycpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvZWxlbWVudC9bXi9dKy9hdHRyaWJ1dGUnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2VsZW1lbnQvW14vXSsvZGlzcGxheWVkJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9lbGVtZW50L1teL10rL2VuYWJsZWQnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2VsZW1lbnQvW14vXSsvbG9jYXRpb25faW5fdmlldycpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvZWxlbWVudC9bXi9dKy9uYW1lJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9lbGVtZW50L1teL10rL3NjcmVlbnNob3QnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2VsZW1lbnQvW14vXSsvc2VsZWN0ZWQnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2ltZS9bXi9dKycpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvbG9jYXRpb24nKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL25ldHdvcmtfY29ubmVjdGlvbicpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvc2NyZWVuc2hvdCcpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvdGltZW91dHMnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3VybCcpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL1teL10rX2FsZXJ0JCcpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FjdGlvbnMnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hbGVydC9bXi9dKycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcC9bXi9dJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL1teL10rL3N0YXJ0X2FjdGl2aXR5JyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2FwcC9bXi9dKycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9jb21wYXJlX2ltYWdlcycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9kZXZpY2UvKD8hc2V0X2NsaXBib2FyZClbXi9dKycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9lbGVtZW50L1teL10rL3JlcGxhY2VfdmFsdWUnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vZWxlbWVudC9bXi9dKy92YWx1ZScpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9nZXRQZXJmb3JtYW5jZURhdGEnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vcGVyZm9ybWFuY2VEYXRhL3R5cGVzJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL3NldHRpbmdzJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2V4ZWN1dGVfZHJpdmVyJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL3N0YXJ0X3JlY29yZGluZ19zY3JlZW4nKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vc3RvcF9yZWNvcmRpbmdfc2NyZWVuJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtLy4qZXZlbnQnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9jb250ZXh0JyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvZWxlbWVudCcpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2ltZS9bXi9dKycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2tleXMnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9sb2NhdGlvbicpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL25ldHdvcmtfY29ubmVjdGlvbicpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3RpbWVvdXRzJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvdG91Y2gvbXVsdGkvcGVyZm9ybScpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3RvdWNoL3BlcmZvcm0nKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy91cmwnKV0sXG5cbiAgLy8gTUpTT05XUCBjb21tYW5kc1xuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9sb2cvdHlwZXMnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9leGVjdXRlJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvZXhlY3V0ZV9hc3luYycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2xvZycpXSxcbiAgLy8gVzNDIGNvbW1hbmRzXG4gIC8vIEZvciBTZWxlbml1bSB2NCAoVzNDIGRvZXMgbm90IGhhdmUgdGhpcyByb3V0ZSlcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvc2UvbG9nL3R5cGVzJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy93aW5kb3cvcmVjdCcpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2V4ZWN1dGUvYXN5bmMnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9leGVjdXRlL3N5bmMnKV0sXG4gIC8vIEZvciBTZWxlbml1bSB2NCAoVzNDIGRvZXMgbm90IGhhdmUgdGhpcyByb3V0ZSlcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3NlL2xvZycpXSxcbl07XG5cbi8vIFRoaXMgaXMgYSBzZXQgb2YgbWV0aG9kcyBhbmQgcGF0aHMgdGhhdCB3ZSBuZXZlciB3YW50IHRvIHByb3h5IHRvIENocm9tZWRyaXZlci5cbmNvbnN0IENIUk9NRV9OT19QUk9YWSA9IFtcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9jb250ZXh0JyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9lbGVtZW50L1teL10rL3JlY3QnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL29yaWVudGF0aW9uJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvY29udGV4dCcpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL29yaWVudGF0aW9uJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvdG91Y2gvbXVsdGkvcGVyZm9ybScpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3RvdWNoL3BlcmZvcm0nKV0sXG5cbiAgLy8gdGhpcyBpcyBuZWVkZWQgdG8gbWFrZSB0aGUgbW9iaWxlOiBjb21tYW5kcyB3b3JraW5nIGluIHdlYiBjb250ZXh0XG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9leGVjdXRlJCcpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2V4ZWN1dGUvc3luYycpXSxcblxuICAvLyBNSlNPTldQIGNvbW1hbmRzXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2xvZy90eXBlcyQnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9sb2ckJyldLFxuICAvLyBXM0MgY29tbWFuZHNcbiAgLy8gRm9yIFNlbGVuaXVtIHY0IChXM0MgZG9lcyBub3QgaGF2ZSB0aGlzIHJvdXRlKVxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9zZS9sb2cvdHlwZXMkJyldLFxuICAvLyBGb3IgU2VsZW5pdW0gdjQgKFczQyBkb2VzIG5vdCBoYXZlIHRoaXMgcm91dGUpXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9zZS9sb2ckJyldLFxuXTtcblxuY29uc3QgTUVNT0laRURfRlVOQ1RJT05TID0gW1xuICAnZ2V0U3RhdHVzQmFySGVpZ2h0JyxcbiAgJ2dldERldmljZVBpeGVsUmF0aW8nLFxuXTtcblxuY2xhc3MgQW5kcm9pZFVpYXV0b21hdG9yMkRyaXZlciBleHRlbmRzIEJhc2VEcml2ZXIge1xuICBjb25zdHJ1Y3RvciAob3B0cyA9IHt9LCBzaG91bGRWYWxpZGF0ZUNhcHMgPSB0cnVlKSB7XG4gICAgLy8gYHNoZWxsYCBvdmVyd3JpdGVzIGFkYi5zaGVsbCwgc28gcmVtb3ZlXG4gICAgZGVsZXRlIG9wdHMuc2hlbGw7XG5cbiAgICBzdXBlcihvcHRzLCBzaG91bGRWYWxpZGF0ZUNhcHMpO1xuICAgIHRoaXMubG9jYXRvclN0cmF0ZWdpZXMgPSBbXG4gICAgICAneHBhdGgnLFxuICAgICAgJ2lkJyxcbiAgICAgICdjbGFzcyBuYW1lJyxcbiAgICAgICdhY2Nlc3NpYmlsaXR5IGlkJyxcbiAgICAgICdjc3Mgc2VsZWN0b3InLFxuICAgICAgJy1hbmRyb2lkIHVpYXV0b21hdG9yJ1xuICAgIF07XG4gICAgdGhpcy5kZXNpcmVkQ2FwQ29uc3RyYWludHMgPSBkZXNpcmVkQ2FwQ29uc3RyYWludHM7XG4gICAgdGhpcy51aWF1dG9tYXRvcjIgPSBudWxsO1xuICAgIHRoaXMuandwUHJveHlBY3RpdmUgPSBmYWxzZTtcbiAgICB0aGlzLmRlZmF1bHRJTUUgPSBudWxsO1xuICAgIHRoaXMuandwUHJveHlBdm9pZCA9IE5PX1BST1hZO1xuICAgIHRoaXMuYXBrU3RyaW5ncyA9IHt9OyAvLyBtYXAgb2YgbGFuZ3VhZ2UgLT4gc3RyaW5ncyBvYmpcblxuICAgIHRoaXMuc2V0dGluZ3MgPSBuZXcgRGV2aWNlU2V0dGluZ3Moe2lnbm9yZVVuaW1wb3J0YW50Vmlld3M6IGZhbHNlLCBhbGxvd0ludmlzaWJsZUVsZW1lbnRzOiBmYWxzZX0sXG4gICAgICAgIHRoaXMub25TZXR0aW5nc1VwZGF0ZS5iaW5kKHRoaXMpKTtcbiAgICAvLyBoYW5kbGUgd2VidmlldyBtZWNoYW5pY3MgZnJvbSBBbmRyb2lkRHJpdmVyXG4gICAgdGhpcy5jaHJvbWVkcml2ZXIgPSBudWxsO1xuICAgIHRoaXMuc2Vzc2lvbkNocm9tZWRyaXZlcnMgPSB7fTtcblxuICAgIC8vIG1lbW9pemUgZnVuY3Rpb25zIGhlcmUsIHNvIHRoYXQgdGhleSBhcmUgZG9uZSBvbiBhIHBlci1pbnN0YW5jZSBiYXNpc1xuICAgIGZvciAoY29uc3QgZm4gb2YgTUVNT0laRURfRlVOQ1RJT05TKSB7XG4gICAgICB0aGlzW2ZuXSA9IF8ubWVtb2l6ZSh0aGlzW2ZuXSk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVEZXNpcmVkQ2FwcyAoY2Fwcykge1xuICAgIHJldHVybiBzdXBlci52YWxpZGF0ZURlc2lyZWRDYXBzKGNhcHMpICYmIGFuZHJvaWRIZWxwZXJzLnZhbGlkYXRlRGVzaXJlZENhcHMoY2Fwcyk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVTZXNzaW9uICguLi5hcmdzKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIFRPRE8gaGFuZGxlIG90aGVyU2Vzc2lvbkRhdGEgZm9yIG11bHRpcGxlIHNlc3Npb25zXG4gICAgICBsZXQgW3Nlc3Npb25JZCwgY2Fwc10gPSBhd2FpdCBzdXBlci5jcmVhdGVTZXNzaW9uKC4uLmFyZ3MpO1xuXG4gICAgICBsZXQgc2VydmVyRGV0YWlscyA9IHtcbiAgICAgICAgcGxhdGZvcm06ICdMSU5VWCcsXG4gICAgICAgIHdlYlN0b3JhZ2VFbmFibGVkOiBmYWxzZSxcbiAgICAgICAgdGFrZXNTY3JlZW5zaG90OiB0cnVlLFxuICAgICAgICBqYXZhc2NyaXB0RW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgZGF0YWJhc2VFbmFibGVkOiBmYWxzZSxcbiAgICAgICAgbmV0d29ya0Nvbm5lY3Rpb25FbmFibGVkOiB0cnVlLFxuICAgICAgICBsb2NhdGlvbkNvbnRleHRFbmFibGVkOiBmYWxzZSxcbiAgICAgICAgd2FybmluZ3M6IHt9LFxuICAgICAgICBkZXNpcmVkOiB0aGlzLmNhcHMsXG4gICAgICB9O1xuXG4gICAgICB0aGlzLmNhcHMgPSBPYmplY3QuYXNzaWduKHNlcnZlckRldGFpbHMsIHRoaXMuY2Fwcyk7XG5cbiAgICAgIHRoaXMuY3VyQ29udGV4dCA9IHRoaXMuZGVmYXVsdENvbnRleHROYW1lKCk7XG5cbiAgICAgIGxldCBkZWZhdWx0T3B0cyA9IHtcbiAgICAgICAgZnVsbFJlc2V0OiBmYWxzZSxcbiAgICAgICAgYXV0b0xhdW5jaDogdHJ1ZSxcbiAgICAgICAgYWRiUG9ydDogREVGQVVMVF9BREJfUE9SVCxcbiAgICAgICAgYW5kcm9pZEluc3RhbGxUaW1lb3V0OiA5MDAwMFxuICAgICAgfTtcbiAgICAgIF8uZGVmYXVsdHModGhpcy5vcHRzLCBkZWZhdWx0T3B0cyk7XG5cbiAgICAgIGlmICh0aGlzLmlzQ2hyb21lU2Vzc2lvbikge1xuICAgICAgICB0aGlzLmxvZy5pbmZvKFwiV2UncmUgZ29pbmcgdG8gcnVuIGEgQ2hyb21lLWJhc2VkIHNlc3Npb25cIik7XG4gICAgICAgIGxldCB7cGtnLCBhY3Rpdml0eX0gPSBoZWxwZXJzLmdldENocm9tZVBrZyh0aGlzLm9wdHMuYnJvd3Nlck5hbWUpO1xuICAgICAgICB0aGlzLm9wdHMuYXBwUGFja2FnZSA9IHRoaXMuY2Fwcy5hcHBQYWNrYWdlID0gcGtnO1xuICAgICAgICB0aGlzLm9wdHMuYXBwQWN0aXZpdHkgPSB0aGlzLmNhcHMuYXBwQWN0aXZpdHkgPSBhY3Rpdml0eTtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgQ2hyb21lLXR5cGUgcGFja2FnZSBhbmQgYWN0aXZpdHkgYXJlICR7cGtnfSBhbmQgJHthY3Rpdml0eX1gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMub3B0cy5yZWJvb3QpIHtcbiAgICAgICAgdGhpcy5zZXRBdmRGcm9tQ2FwYWJpbGl0aWVzKGNhcHMpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5vcHRzLmFwcCkge1xuICAgICAgICAvLyBmaW5kIGFuZCBjb3B5LCBvciBkb3dubG9hZCBhbmQgdW56aXAgYW4gYXBwIHVybCBvciBwYXRoXG4gICAgICAgIHRoaXMub3B0cy5hcHAgPSBhd2FpdCB0aGlzLmhlbHBlcnMuY29uZmlndXJlQXBwKHRoaXMub3B0cy5hcHAsIFtBUEtfRVhURU5TSU9OLCBBUEtTX0VYVEVOU0lPTl0pO1xuICAgICAgICBhd2FpdCB0aGlzLmNoZWNrQXBwUHJlc2VudCgpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLm9wdHMuYXBwUGFja2FnZSkge1xuICAgICAgICAvLyB0aGUgYXBwIGlzbid0IGFuIGFjdHVhbCBhcHAgZmlsZSBidXQgcmF0aGVyIHNvbWV0aGluZyB3ZSB3YW50IHRvXG4gICAgICAgIC8vIGFzc3VtZSBpcyBvbiB0aGUgZGV2aWNlIGFuZCBqdXN0IGxhdW5jaCB2aWEgdGhlIGFwcFBhY2thZ2VcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgU3RhcnRpbmcgJyR7dGhpcy5vcHRzLmFwcFBhY2thZ2V9JyBkaXJlY3RseSBvbiB0aGUgZGV2aWNlYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvZy5pbmZvKGBOZWl0aGVyICdhcHAnIG5vciAnYXBwUGFja2FnZScgd2FzIHNldC4gU3RhcnRpbmcgVWlBdXRvbWF0b3IyIGAgK1xuICAgICAgICAgICd3aXRob3V0IHRoZSB0YXJnZXQgYXBwbGljYXRpb24nKTtcbiAgICAgIH1cbiAgICAgIHRoaXMub3B0cy5hZGJQb3J0ID0gdGhpcy5vcHRzLmFkYlBvcnQgfHwgREVGQVVMVF9BREJfUE9SVDtcblxuICAgICAgYXdhaXQgdGhpcy5zdGFydFVpQXV0b21hdG9yMlNlc3Npb24oKTtcbiAgICAgIGF3YWl0IHRoaXMuZmlsbERldmljZURldGFpbHMoKTtcbiAgICAgIGlmICh0aGlzLm9wdHMubWpwZWdTY3JlZW5zaG90VXJsKSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oYFN0YXJ0aW5nIE1KUEVHIHN0cmVhbSByZWFkaW5nIFVSTDogJyR7dGhpcy5vcHRzLm1qcGVnU2NyZWVuc2hvdFVybH0nYCk7XG4gICAgICAgIHRoaXMubWpwZWdTdHJlYW0gPSBuZXcgbWpwZWcuTUpwZWdTdHJlYW0odGhpcy5vcHRzLm1qcGVnU2NyZWVuc2hvdFVybCk7XG4gICAgICAgIGF3YWl0IHRoaXMubWpwZWdTdHJlYW0uc3RhcnQoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbc2Vzc2lvbklkLCB0aGlzLmNhcHNdO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGF3YWl0IHRoaXMuZGVsZXRlU2Vzc2lvbigpO1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBmaWxsRGV2aWNlRGV0YWlscyAoKSB7XG4gICAgdGhpcy5jYXBzLnBpeGVsUmF0aW8gPSBhd2FpdCB0aGlzLmdldERldmljZVBpeGVsUmF0aW8oKTtcbiAgICB0aGlzLmNhcHMuc3RhdEJhckhlaWdodCA9IGF3YWl0IHRoaXMuZ2V0U3RhdHVzQmFySGVpZ2h0KCk7XG4gICAgdGhpcy5jYXBzLnZpZXdwb3J0UmVjdCA9IGF3YWl0IHRoaXMuZ2V0Vmlld1BvcnRSZWN0KCk7XG4gIH1cblxuICBnZXQgZHJpdmVyRGF0YSAoKSB7XG4gICAgLy8gVE9ETyBmaWxsIG91dCByZXNvdXJjZSBpbmZvIGhlcmVcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBhc3luYyBnZXRTZXNzaW9uICgpIHtcbiAgICBsZXQgc2Vzc2lvbkRhdGEgPSBhd2FpdCBzdXBlci5nZXRTZXNzaW9uKCk7XG4gICAgdGhpcy5sb2cuZGVidWcoJ0dldHRpbmcgc2Vzc2lvbiBkZXRhaWxzIGZyb20gc2VydmVyIHRvIG1peCBpbicpO1xuICAgIGxldCB1aWEyRGF0YSA9IGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnLycsICdHRVQnLCB7fSk7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHNlc3Npb25EYXRhLCB1aWEyRGF0YSk7XG4gIH1cblxuICBpc0VtdWxhdG9yICgpIHtcbiAgICByZXR1cm4gaGVscGVycy5pc0VtdWxhdG9yKHRoaXMuYWRiLCB0aGlzLm9wdHMpO1xuICB9XG5cbiAgc2V0QXZkRnJvbUNhcGFiaWxpdGllcyAoY2Fwcykge1xuICAgIGlmICh0aGlzLm9wdHMuYXZkKSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKCdhdmQgbmFtZSBkZWZpbmVkLCBpZ25vcmluZyBkZXZpY2UgbmFtZSBhbmQgcGxhdGZvcm0gdmVyc2lvbicpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWNhcHMuZGV2aWNlTmFtZSkge1xuICAgICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KCdhdmQgb3IgZGV2aWNlTmFtZSBzaG91bGQgYmUgc3BlY2lmaWVkIHdoZW4gcmVib290IG9wdGlvbiBpcyBlbmFibGVzJyk7XG4gICAgICB9XG4gICAgICBpZiAoIWNhcHMucGxhdGZvcm1WZXJzaW9uKSB7XG4gICAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coJ2F2ZCBvciBwbGF0Zm9ybVZlcnNpb24gc2hvdWxkIGJlIHNwZWNpZmllZCB3aGVuIHJlYm9vdCBvcHRpb24gaXMgZW5hYmxlZCcpO1xuICAgICAgfVxuICAgICAgbGV0IGF2ZERldmljZSA9IGNhcHMuZGV2aWNlTmFtZS5yZXBsYWNlKC9bXmEtekEtWjAtOV8uXS9nLCAnLScpO1xuICAgICAgdGhpcy5vcHRzLmF2ZCA9IGAke2F2ZERldmljZX1fXyR7Y2Fwcy5wbGF0Zm9ybVZlcnNpb259YDtcbiAgICB9XG4gIH1cblxuICBhc3luYyBhbGxvY2F0ZVN5c3RlbVBvcnQgKCkge1xuICAgIGNvbnN0IGZvcndhcmRQb3J0ID0gYXN5bmMgKGxvY2FsUG9ydCkgPT4ge1xuICAgICAgdGhpcy5sb2cuZGVidWcoYEZvcndhcmRpbmcgVWlBdXRvbWF0b3IyIFNlcnZlciBwb3J0ICR7REVWSUNFX1BPUlR9IHRvIGxvY2FsIHBvcnQgJHtsb2NhbFBvcnR9YCk7XG4gICAgICBpZiAoKGF3YWl0IGNoZWNrUG9ydFN0YXR1cyhsb2NhbFBvcnQsIExPQ0FMSE9TVF9JUDQpKSA9PT0gJ29wZW4nKSB7XG4gICAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYFVpQXV0b21hdG9yMiBTZXJ2ZXIgY2Fubm90IHN0YXJ0IGJlY2F1c2UgdGhlIGxvY2FsIHBvcnQgIyR7bG9jYWxQb3J0fSBpcyBidXN5LiBgICtcbiAgICAgICAgICBgTWFrZSBzdXJlIHRoZSBwb3J0IHlvdSBwcm92aWRlIHZpYSAnc3lzdGVtUG9ydCcgY2FwYWJpbGl0eSBpcyBub3Qgb2NjdXBpZWQuIGAgK1xuICAgICAgICAgIGBUaGlzIHNpdHVhdGlvbiBtaWdodCBvZnRlbiBiZSBhIHJlc3VsdCBvZiBhbiBpbmFjY3VyYXRlIHNlc3Npb25zIG1hbmFnZW1lbnQsIGUuZy4gYCArXG4gICAgICAgICAgYG9sZCBhdXRvbWF0aW9uIHNlc3Npb25zIG9uIHRoZSBzYW1lIGRldmljZSBtdXN0IGFsd2F5cyBiZSBjbG9zZWQgYmVmb3JlIHN0YXJ0aW5nIG5ldyBvbmVzLmApO1xuICAgICAgfVxuICAgICAgYXdhaXQgdGhpcy5hZGIuZm9yd2FyZFBvcnQobG9jYWxQb3J0LCBERVZJQ0VfUE9SVCk7XG4gICAgfTtcblxuICAgIGlmICh0aGlzLm9wdHMuc3lzdGVtUG9ydCkge1xuICAgICAgdGhpcy5faGFzU3lzdGVtUG9ydEluQ2FwcyA9IHRydWU7XG4gICAgICByZXR1cm4gYXdhaXQgZm9yd2FyZFBvcnQodGhpcy5vcHRzLnN5c3RlbVBvcnQpO1xuICAgIH1cblxuICAgIGF3YWl0IERFVklDRV9QT1JUX0FMTE9DQVRJT05fR1VBUkQoYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgW3N0YXJ0UG9ydCwgZW5kUG9ydF0gPSBERVZJQ0VfUE9SVF9SQU5HRTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMub3B0cy5zeXN0ZW1Qb3J0ID0gYXdhaXQgZmluZEFQb3J0Tm90SW5Vc2Uoc3RhcnRQb3J0LCBlbmRQb3J0KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhcbiAgICAgICAgICBgQ2Fubm90IGZpbmQgYW55IGZyZWUgcG9ydCBpbiByYW5nZSAke3N0YXJ0UG9ydH0uLiR7ZW5kUG9ydH19LiBgICtcbiAgICAgICAgICBgUGxlYXNlIHNldCB0aGUgYXZhaWxhYmxlIHBvcnQgbnVtYmVyIGJ5IHByb3ZpZGluZyB0aGUgc3lzdGVtUG9ydCBjYXBhYmlsaXR5IG9yIGAgK1xuICAgICAgICAgIGBkb3VibGUgY2hlY2sgdGhlIHByb2Nlc3NlcyB0aGF0IGFyZSBsb2NraW5nIHBvcnRzIHdpdGhpbiB0aGlzIHJhbmdlIGFuZCB0ZXJtaW5hdGUgYCArXG4gICAgICAgICAgYHRoZXNlIHdoaWNoIGFyZSBub3QgbmVlZGVkIGFueW1vcmVgKTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IGZvcndhcmRQb3J0KHRoaXMub3B0cy5zeXN0ZW1Qb3J0KTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHJlbGVhc2VTeXN0ZW1Qb3J0ICgpIHtcbiAgICBpZiAoIXRoaXMub3B0cy5zeXN0ZW1Qb3J0IHx8ICF0aGlzLmFkYikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9oYXNTeXN0ZW1Qb3J0SW5DYXBzKSB7XG4gICAgICBhd2FpdCB0aGlzLmFkYi5yZW1vdmVQb3J0Rm9yd2FyZCh0aGlzLm9wdHMuc3lzdGVtUG9ydCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IERFVklDRV9QT1JUX0FMTE9DQVRJT05fR1VBUkQoYXN5bmMgKCkgPT4gYXdhaXQgdGhpcy5hZGIucmVtb3ZlUG9ydEZvcndhcmQodGhpcy5vcHRzLnN5c3RlbVBvcnQpKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBhbGxvY2F0ZU1qcGVnU2VydmVyUG9ydCAoKSB7XG4gICAgaWYgKHRoaXMub3B0cy5tanBlZ1NlcnZlclBvcnQpIHtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLmZvcndhcmRQb3J0KHRoaXMub3B0cy5tanBlZ1NlcnZlclBvcnQsIE1KUEVHX1NFUlZFUl9ERVZJQ0VfUE9SVCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcmVsZWFzZU1qcGVnU2VydmVyUG9ydCAoKSB7XG4gICAgaWYgKHRoaXMub3B0cy5tanBlZ1NlcnZlclBvcnQpIHtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnJlbW92ZVBvcnRGb3J3YXJkKHRoaXMub3B0cy5tanBlZ1NlcnZlclBvcnQpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHN0YXJ0VWlBdXRvbWF0b3IyU2Vzc2lvbiAoKSB7XG4gICAgLy8gZ2V0IGRldmljZSB1ZGlkIGZvciB0aGlzIHNlc3Npb25cbiAgICBsZXQge3VkaWQsIGVtUG9ydH0gPSBhd2FpdCBoZWxwZXJzLmdldERldmljZUluZm9Gcm9tQ2Fwcyh0aGlzLm9wdHMpO1xuICAgIHRoaXMub3B0cy51ZGlkID0gdWRpZDtcbiAgICB0aGlzLm9wdHMuZW1Qb3J0ID0gZW1Qb3J0O1xuXG4gICAgLy8gbm93IHRoYXQgd2Uga25vdyBvdXIgamF2YSB2ZXJzaW9uIGFuZCBkZXZpY2UgaW5mbywgd2UgY2FuIGNyZWF0ZSBvdXJcbiAgICAvLyBBREIgaW5zdGFuY2VcbiAgICB0aGlzLmFkYiA9IGF3YWl0IGFuZHJvaWRIZWxwZXJzLmNyZWF0ZUFEQih0aGlzLm9wdHMpO1xuXG4gICAgY29uc3QgYXBpTGV2ZWwgPSBhd2FpdCB0aGlzLmFkYi5nZXRBcGlMZXZlbCgpO1xuXG4gICAgaWYgKGFwaUxldmVsIDwgMjEpIHtcbiAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coJ1VJQXV0b21hdG9yMiBpcyBvbmx5IHN1cHBvcnRlZCBzaW5jZSBBbmRyb2lkIDUuMCAoTG9sbGlwb3ApLiAnICtcbiAgICAgICAgJ1lvdSBjb3VsZCBzdGlsbCB1c2Ugb3RoZXIgc3VwcG9ydGVkIGJhY2tlbmRzIGluIG9yZGVyIHRvIGF1dG9tYXRlIG9sZGVyIEFuZHJvaWQgdmVyc2lvbnMuJyk7XG4gICAgfVxuXG4gICAgaWYgKGFwaUxldmVsID49IDI4KSB7IC8vIEFuZHJvaWQgUFxuICAgICAgdGhpcy5sb2cuaW5mbygnUmVsYXhpbmcgaGlkZGVuIGFwaSBwb2xpY3knKTtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnNldEhpZGRlbkFwaVBvbGljeSgnMScsICEhdGhpcy5vcHRzLmlnbm9yZUhpZGRlbkFwaVBvbGljeUVycm9yKTtcbiAgICB9XG5cbiAgICAvLyBjaGVjayBpZiB3ZSBoYXZlIHRvIGVuYWJsZS9kaXNhYmxlIGdwcyBiZWZvcmUgcnVubmluZyB0aGUgYXBwbGljYXRpb25cbiAgICBpZiAodXRpbC5oYXNWYWx1ZSh0aGlzLm9wdHMuZ3BzRW5hYmxlZCkpIHtcbiAgICAgIGlmICh0aGlzLmlzRW11bGF0b3IoKSkge1xuICAgICAgICB0aGlzLmxvZy5pbmZvKGBUcnlpbmcgdG8gJHt0aGlzLm9wdHMuZ3BzRW5hYmxlZCA/ICdlbmFibGUnIDogJ2Rpc2FibGUnfSBncHMgbG9jYXRpb24gcHJvdmlkZXJgKTtcbiAgICAgICAgYXdhaXQgdGhpcy5hZGIudG9nZ2xlR1BTTG9jYXRpb25Qcm92aWRlcih0aGlzLm9wdHMuZ3BzRW5hYmxlZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvZy53YXJuKGBTb3JyeSEgJ2dwc0VuYWJsZWQnIGNhcGFiaWxpdHkgaXMgb25seSBhdmFpbGFibGUgZm9yIGVtdWxhdG9yc2ApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGdldCBhcHBQYWNrYWdlIGV0IGFsIGZyb20gbWFuaWZlc3QgaWYgbmVjZXNzYXJ5XG4gICAgY29uc3QgYXBwSW5mbyA9IGF3YWl0IGhlbHBlcnMuZ2V0TGF1bmNoSW5mbyh0aGlzLmFkYiwgdGhpcy5vcHRzKTtcbiAgICAvLyBhbmQgZ2V0IGl0IG9udG8gb3VyICdvcHRzJyBvYmplY3Qgc28gd2UgdXNlIGl0IGZyb20gbm93IG9uXG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLm9wdHMsIGFwcEluZm8gfHwge30pO1xuXG4gICAgLy8gc2V0IGFjdHVhbCBkZXZpY2UgbmFtZSwgdWRpZCwgcGxhdGZvcm0gdmVyc2lvbiwgc2NyZWVuIHNpemUsIHNjcmVlbiBkZW5zaXR5LCBtb2RlbCBhbmQgbWFudWZhY3R1cmVyIGRldGFpbHNcbiAgICB0aGlzLmNhcHMuZGV2aWNlTmFtZSA9IHRoaXMuYWRiLmN1ckRldmljZUlkO1xuICAgIHRoaXMuY2Fwcy5kZXZpY2VVRElEID0gdGhpcy5vcHRzLnVkaWQ7XG5cbiAgICAvLyBzdGFydCBhbiBhdmQsIHNldCB0aGUgbGFuZ3VhZ2UvbG9jYWxlLCBwaWNrIGFuIGVtdWxhdG9yLCBldGMuLi5cbiAgICAvLyBUT0RPIHdpdGggbXVsdGlwbGUgZGV2aWNlcyB3ZSdsbCBuZWVkIHRvIHBhcmFtZXRlcml6ZSB0aGlzXG4gICAgdGhpcy5kZWZhdWx0SU1FID0gYXdhaXQgaGVscGVycy5pbml0RGV2aWNlKHRoaXMuYWRiLCB0aGlzLm9wdHMpO1xuXG4gICAgLy8gUHJlcGFyZSB0aGUgZGV2aWNlIGJ5IGZvcndhcmRpbmcgdGhlIFVpQXV0b21hdG9yMiBwb3J0XG4gICAgLy8gVGhpcyBjYWxsIG11dGF0ZXMgdGhpcy5vcHRzLnN5c3RlbVBvcnQgaWYgaXQgaXMgbm90IHNldCBleHBsaWNpdGx5XG4gICAgYXdhaXQgdGhpcy5hbGxvY2F0ZVN5c3RlbVBvcnQoKTtcblxuICAgIC8vIFByZXBhcmUgdGhlIGRldmljZSBieSBmb3J3YXJkaW5nIHRoZSBVaUF1dG9tYXRvcjIgTUpQRUcgc2VydmVyIHBvcnQgKGlmXG4gICAgLy8gYXBwbGljYWJsZSlcbiAgICBhd2FpdCB0aGlzLmFsbG9jYXRlTWpwZWdTZXJ2ZXJQb3J0KCk7XG5cbiAgICAvLyBzZXQgdXAgdGhlIG1vZGlmaWVkIFVpQXV0b21hdG9yMiBzZXJ2ZXIgZXRjXG4gICAgYXdhaXQgdGhpcy5pbml0VWlBdXRvbWF0b3IyU2VydmVyKCk7XG5cbiAgICAvLyBTaG91bGQgYmUgYWZ0ZXIgaW5zdGFsbGluZyBpby5hcHBpdW0uc2V0dGluZ3MgaW4gaGVscGVycy5pbml0RGV2aWNlXG4gICAgaWYgKHRoaXMub3B0cy5kaXNhYmxlV2luZG93QW5pbWF0aW9uICYmIChhd2FpdCB0aGlzLmFkYi5nZXRBcGlMZXZlbCgpIDwgMjYpKSB7IC8vIEFQSSBsZXZlbCAyNiBpcyBBbmRyb2lkIDguMC5cbiAgICAgIC8vIEdyYW50aW5nIGFuZHJvaWQucGVybWlzc2lvbi5TRVRfQU5JTUFUSU9OX1NDQUxFIGlzIG5lY2Vzc2FyeSB0byBoYW5kbGUgYW5pbWF0aW9ucyB1bmRlciBBUEkgbGV2ZWwgMjZcbiAgICAgIC8vIFJlYWQgaHR0cHM6Ly9naXRodWIuY29tL2FwcGl1bS9hcHBpdW0vcHVsbC8xMTY0MCNpc3N1ZWNvbW1lbnQtNDM4MjYwNDc3XG4gICAgICAvLyBgLS1uby13aW5kb3ctYW5pbWF0aW9uYCB3b3JrcyBvdmVyIEFuZHJvaWQgOCB0byBkaXNhYmxlIGFsbCBvZiBhbmltYXRpb25zXG4gICAgICBpZiAoYXdhaXQgdGhpcy5hZGIuaXNBbmltYXRpb25PbigpKSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oJ0Rpc2FibGluZyBhbmltYXRpb24gdmlhIGlvLmFwcGl1bS5zZXR0aW5ncycpO1xuICAgICAgICBhd2FpdCB0aGlzLmFkYi5zZXRBbmltYXRpb25TdGF0ZShmYWxzZSk7XG4gICAgICAgIHRoaXMuX3dhc1dpbmRvd0FuaW1hdGlvbkRpc2FibGVkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oJ1dpbmRvdyBhbmltYXRpb24gaXMgYWxyZWFkeSBkaXNhYmxlZCcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIHNldCB1cCBhcHAgdW5kZXIgdGVzdFxuICAgIC8vIHByZXBhcmUgb3VyIGFjdHVhbCBBVVQsIGdldCBpdCBvbiB0aGUgZGV2aWNlLCBldGMuLi5cbiAgICBhd2FpdCB0aGlzLmluaXRBVVQoKTtcblxuICAgIC8vIEFkZGluZyBBVVQgcGFja2FnZSBuYW1lIGluIHRoZSBjYXBhYmlsaXRpZXMgaWYgcGFja2FnZSBuYW1lIG5vdCBleGlzdCBpbiBjYXBzXG4gICAgaWYgKCF0aGlzLmNhcHMuYXBwUGFja2FnZSAmJiBhcHBJbmZvKSB7XG4gICAgICB0aGlzLmNhcHMuYXBwUGFja2FnZSA9IGFwcEluZm8uYXBwUGFja2FnZTtcbiAgICB9XG5cbiAgICAvLyBsYXVuY2ggVWlBdXRvbWF0b3IyIGFuZCB3YWl0IHRpbGwgaXRzIG9ubGluZSBhbmQgd2UgaGF2ZSBhIHNlc3Npb25cbiAgICBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5zdGFydFNlc3Npb24odGhpcy5jYXBzKTtcblxuICAgIGF3YWl0IHRoaXMuYWRkRGV2aWNlSW5mb1RvQ2FwcygpO1xuXG4gICAgLy8gVW5sb2NrIHRoZSBkZXZpY2UgYWZ0ZXIgdGhlIHNlc3Npb24gaXMgc3RhcnRlZC5cbiAgICBpZiAoIXRoaXMub3B0cy5za2lwVW5sb2NrKSB7XG4gICAgICAvLyB1bmxvY2sgdGhlIGRldmljZSB0byBwcmVwYXJlIGl0IGZvciB0ZXN0aW5nXG4gICAgICBhd2FpdCBoZWxwZXJzLnVubG9jayh0aGlzLCB0aGlzLmFkYiwgdGhpcy5jYXBzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2cuZGVidWcoYCdza2lwVW5sb2NrJyBjYXBhYmlsaXR5IHNldCwgc28gc2tpcHBpbmcgZGV2aWNlIHVubG9ja2ApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzQ2hyb21lU2Vzc2lvbikgeyAvLyBzdGFydCBhIGNocm9tZWRyaXZlciBzZXNzaW9uXG4gICAgICBhd2FpdCB0aGlzLnN0YXJ0Q2hyb21lU2Vzc2lvbih0aGlzKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMub3B0cy5hdXRvTGF1bmNoICYmIHRoaXMub3B0cy5hcHBQYWNrYWdlKSB7XG4gICAgICBhd2FpdCB0aGlzLmVuc3VyZUFwcFN0YXJ0cygpO1xuICAgIH1cblxuICAgIC8vIGlmIHRoZSBpbml0aWFsIG9yaWVudGF0aW9uIGlzIHJlcXVlc3RlZCwgc2V0IGl0XG4gICAgaWYgKHV0aWwuaGFzVmFsdWUodGhpcy5vcHRzLm9yaWVudGF0aW9uKSkge1xuICAgICAgdGhpcy5sb2cuZGVidWcoYFNldHRpbmcgaW5pdGlhbCBvcmllbnRhdGlvbiB0byAnJHt0aGlzLm9wdHMub3JpZW50YXRpb259J2ApO1xuICAgICAgYXdhaXQgdGhpcy5zZXRPcmllbnRhdGlvbih0aGlzLm9wdHMub3JpZW50YXRpb24pO1xuICAgIH1cblxuICAgIC8vIGlmIHdlIHdhbnQgdG8gaW1tZWRpYXRlbHkgZ2V0IGludG8gYSB3ZWJ2aWV3LCBzZXQgb3VyIGNvbnRleHRcbiAgICAvLyBhcHByb3ByaWF0ZWx5XG4gICAgaWYgKHRoaXMub3B0cy5hdXRvV2Vidmlldykge1xuICAgICAgY29uc3Qgdmlld05hbWUgPSB0aGlzLmRlZmF1bHRXZWJ2aWV3TmFtZSgpO1xuICAgICAgY29uc3QgdGltZW91dCA9IHRoaXMub3B0cy5hdXRvV2Vidmlld1RpbWVvdXQgfHwgMjAwMDtcbiAgICAgIHRoaXMubG9nLmluZm8oYFNldHRpbmcgYXV0byB3ZWJ2aWV3IHRvIGNvbnRleHQgJyR7dmlld05hbWV9JyB3aXRoIHRpbWVvdXQgJHt0aW1lb3V0fW1zYCk7XG4gICAgICBhd2FpdCByZXRyeUludGVydmFsKHRpbWVvdXQgLyA1MDAsIDUwMCwgdGhpcy5zZXRDb250ZXh0LmJpbmQodGhpcyksIHZpZXdOYW1lKTtcbiAgICB9XG5cbiAgICAvLyBub3cgdGhhdCBldmVyeXRoaW5nIGhhcyBzdGFydGVkIHN1Y2Nlc3NmdWxseSwgdHVybiBvbiBwcm94eWluZyBzbyBhbGxcbiAgICAvLyBzdWJzZXF1ZW50IHNlc3Npb24gcmVxdWVzdHMgZ28gc3RyYWlnaHQgdG8vZnJvbSB1aWF1dG9tYXRvcjJcbiAgICB0aGlzLmp3cFByb3h5QWN0aXZlID0gdHJ1ZTtcbiAgfVxuXG4gIGFzeW5jIGFkZERldmljZUluZm9Ub0NhcHMgKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBwbGF0Zm9ybVZlcnNpb24sXG4gICAgICBtYW51ZmFjdHVyZXIsXG4gICAgICBtb2RlbCxcbiAgICAgIHJlYWxEaXNwbGF5U2l6ZSxcbiAgICAgIGRpc3BsYXlEZW5zaXR5LFxuICAgIH0gPSBhd2FpdCB0aGlzLm1vYmlsZUdldERldmljZUluZm8oKTtcbiAgICB0aGlzLmNhcHMuZGV2aWNlQXBpTGV2ZWwgPSBwYXJzZUludChhcGlWZXJzaW9uLCAxMCk7XG4gICAgdGhpcy5jYXBzLnBsYXRmb3JtVmVyc2lvbiA9IHBsYXRmb3JtVmVyc2lvbjtcbiAgICB0aGlzLmNhcHMuZGV2aWNlU2NyZWVuU2l6ZSA9IHJlYWxEaXNwbGF5U2l6ZTtcbiAgICB0aGlzLmNhcHMuZGV2aWNlU2NyZWVuRGVuc2l0eSA9IGRpc3BsYXlEZW5zaXR5O1xuICAgIHRoaXMuY2Fwcy5kZXZpY2VNb2RlbCA9IG1vZGVsO1xuICAgIHRoaXMuY2Fwcy5kZXZpY2VNYW51ZmFjdHVyZXIgPSBtYW51ZmFjdHVyZXI7XG4gIH1cblxuICBhc3luYyBpbml0VWlBdXRvbWF0b3IyU2VydmVyICgpIHtcbiAgICAvLyBicm9rZW4gb3V0IGZvciByZWFkYWJpbGl0eVxuICAgIGNvbnN0IHVpYXV0b21hdG9yMk9wdHMgPSB7XG4gICAgICBob3N0OiB0aGlzLm9wdHMucmVtb3RlQWRiSG9zdCB8fCB0aGlzLm9wdHMuaG9zdCB8fCBMT0NBTEhPU1RfSVA0LFxuICAgICAgc3lzdGVtUG9ydDogdGhpcy5vcHRzLnN5c3RlbVBvcnQsXG4gICAgICBkZXZpY2VQb3J0OiBERVZJQ0VfUE9SVCxcbiAgICAgIGFkYjogdGhpcy5hZGIsXG4gICAgICBhcGs6IHRoaXMub3B0cy5hcHAsXG4gICAgICB0bXBEaXI6IHRoaXMub3B0cy50bXBEaXIsXG4gICAgICBhcHBQYWNrYWdlOiB0aGlzLm9wdHMuYXBwUGFja2FnZSxcbiAgICAgIGFwcEFjdGl2aXR5OiB0aGlzLm9wdHMuYXBwQWN0aXZpdHksXG4gICAgICBkaXNhYmxlV2luZG93QW5pbWF0aW9uOiAhIXRoaXMub3B0cy5kaXNhYmxlV2luZG93QW5pbWF0aW9uLFxuICAgICAgZGlzYWJsZVN1cHByZXNzQWNjZXNzaWJpbGl0eVNlcnZpY2U6IHRoaXMub3B0cy5kaXNhYmxlU3VwcHJlc3NBY2Nlc3NpYmlsaXR5U2VydmljZSxcbiAgICAgIHJlYWRUaW1lb3V0OiB0aGlzLm9wdHMudWlhdXRvbWF0b3IyU2VydmVyUmVhZFRpbWVvdXQsXG4gICAgfTtcbiAgICAvLyBub3cgdGhhdCB3ZSBoYXZlIHBhY2thZ2UgYW5kIGFjdGl2aXR5LCB3ZSBjYW4gY3JlYXRlIGFuIGluc3RhbmNlIG9mXG4gICAgLy8gdWlhdXRvbWF0b3IyIHdpdGggdGhlIGFwcHJvcHJpYXRlIG9wdGlvbnNcbiAgICB0aGlzLnVpYXV0b21hdG9yMiA9IG5ldyBVaUF1dG9tYXRvcjJTZXJ2ZXIodGhpcy5sb2csIHVpYXV0b21hdG9yMk9wdHMpO1xuICAgIHRoaXMucHJveHlSZXFSZXMgPSB0aGlzLnVpYXV0b21hdG9yMi5wcm94eVJlcVJlcy5iaW5kKHRoaXMudWlhdXRvbWF0b3IyKTtcbiAgICB0aGlzLnByb3h5Q29tbWFuZCA9IHRoaXMudWlhdXRvbWF0b3IyLnByb3h5Q29tbWFuZC5iaW5kKHRoaXMudWlhdXRvbWF0b3IyKTtcblxuICAgIGlmICh0aGlzLm9wdHMuc2tpcFNlcnZlckluc3RhbGxhdGlvbikge1xuICAgICAgdGhpcy5sb2cuaW5mbyhgJ3NraXBTZXJ2ZXJJbnN0YWxsYXRpb24nIGlzIHNldC4gU2tpcHBpbmcgVUlBdXRvbWF0b3IyIHNlcnZlciBpbnN0YWxsYXRpb24uYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmluc3RhbGxTZXJ2ZXJBcGsodGhpcy5vcHRzLnVpYXV0b21hdG9yMlNlcnZlckluc3RhbGxUaW1lb3V0KTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLmFkZFRvRGV2aWNlSWRsZVdoaXRlbGlzdChcbiAgICAgICAgICBTRVRUSU5HU19IRUxQRVJfUEtHX0lELCBTRVJWRVJfUEFDS0FHRV9JRCwgU0VSVkVSX1RFU1RfUEFDS0FHRV9JRCxcbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhpcy5sb2cud2FybihgQ2Fubm90IGFkZCBzZXJ2ZXIgcGFja2FnZXMgdG8gdGhlIERvemUgd2hpdGVsaXN0LiBPcmlnaW5hbCBlcnJvcjogYCArXG4gICAgICAgICAgKGUuc3RkZXJyIHx8IGUubWVzc2FnZSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGluaXRBVVQgKCkge1xuICAgIC8vIFVuaW5zdGFsbCBhbnkgdW5pbnN0YWxsT3RoZXJQYWNrYWdlcyB3aGljaCB3ZXJlIHNwZWNpZmllZCBpbiBjYXBzXG4gICAgaWYgKHRoaXMub3B0cy51bmluc3RhbGxPdGhlclBhY2thZ2VzKSB7XG4gICAgICBhd2FpdCBoZWxwZXJzLnVuaW5zdGFsbE90aGVyUGFja2FnZXMoXG4gICAgICAgIHRoaXMuYWRiLFxuICAgICAgICBoZWxwZXJzLnBhcnNlQXJyYXkodGhpcy5vcHRzLnVuaW5zdGFsbE90aGVyUGFja2FnZXMpLFxuICAgICAgICBbU0VUVElOR1NfSEVMUEVSX1BLR19JRCwgU0VSVkVSX1BBQ0tBR0VfSUQsIFNFUlZFUl9URVNUX1BBQ0tBR0VfSURdXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIEluc3RhbGwgYW55IFwib3RoZXJBcHBzXCIgdGhhdCB3ZXJlIHNwZWNpZmllZCBpbiBjYXBzXG4gICAgaWYgKHRoaXMub3B0cy5vdGhlckFwcHMpIHtcbiAgICAgIGxldCBvdGhlckFwcHM7XG4gICAgICB0cnkge1xuICAgICAgICBvdGhlckFwcHMgPSBoZWxwZXJzLnBhcnNlQXJyYXkodGhpcy5vcHRzLm90aGVyQXBwcyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYENvdWxkIG5vdCBwYXJzZSBcIm90aGVyQXBwc1wiIGNhcGFiaWxpdHk6ICR7ZS5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgICAgb3RoZXJBcHBzID0gYXdhaXQgQi5hbGwob3RoZXJBcHBzXG4gICAgICAgIC5tYXAoKGFwcCkgPT4gdGhpcy5oZWxwZXJzLmNvbmZpZ3VyZUFwcChhcHAsIFtBUEtfRVhURU5TSU9OLCBBUEtTX0VYVEVOU0lPTl0pKSk7XG4gICAgICBhd2FpdCBoZWxwZXJzLmluc3RhbGxPdGhlckFwa3Mob3RoZXJBcHBzLCB0aGlzLmFkYiwgdGhpcy5vcHRzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRzLmFwcCkge1xuICAgICAgaWYgKHRoaXMub3B0cy5ub1Jlc2V0ICYmICEoYXdhaXQgdGhpcy5hZGIuaXNBcHBJbnN0YWxsZWQodGhpcy5vcHRzLmFwcFBhY2thZ2UpKVxuICAgICAgICAgIHx8ICF0aGlzLm9wdHMubm9SZXNldCkge1xuICAgICAgICBpZiAoIXRoaXMub3B0cy5ub1NpZ24gJiYgIWF3YWl0IHRoaXMuYWRiLmNoZWNrQXBrQ2VydCh0aGlzLm9wdHMuYXBwLCB0aGlzLm9wdHMuYXBwUGFja2FnZSwge1xuICAgICAgICAgIHJlcXVpcmVEZWZhdWx0Q2VydDogZmFsc2UsXG4gICAgICAgIH0pKSB7XG4gICAgICAgICAgYXdhaXQgaGVscGVycy5zaWduQXBwKHRoaXMuYWRiLCB0aGlzLm9wdHMuYXBwKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMub3B0cy5za2lwVW5pbnN0YWxsKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5hZGIudW5pbnN0YWxsQXBrKHRoaXMub3B0cy5hcHBQYWNrYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBoZWxwZXJzLmluc3RhbGxBcGsodGhpcy5hZGIsIHRoaXMub3B0cyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvZy5kZWJ1Zygnbm9SZXNldCBoYXMgYmVlbiByZXF1ZXN0ZWQgYW5kIHRoZSBhcHAgaXMgYWxyZWFkeSBpbnN0YWxsZWQuIERvaW5nIG5vdGhpbmcnKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMub3B0cy5mdWxsUmVzZXQpIHtcbiAgICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdygnRnVsbCByZXNldCByZXF1aXJlcyBhbiBhcHAgY2FwYWJpbGl0eSwgdXNlIGZhc3RSZXNldCBpZiBhcHAgaXMgbm90IHByb3ZpZGVkJyk7XG4gICAgICB9XG4gICAgICB0aGlzLmxvZy5kZWJ1ZygnTm8gYXBwIGNhcGFiaWxpdHkuIEFzc3VtaW5nIGl0IGlzIGFscmVhZHkgb24gdGhlIGRldmljZScpO1xuICAgICAgaWYgKHRoaXMub3B0cy5mYXN0UmVzZXQgJiYgdGhpcy5vcHRzLmFwcFBhY2thZ2UpIHtcbiAgICAgICAgYXdhaXQgaGVscGVycy5yZXNldEFwcCh0aGlzLmFkYiwgdGhpcy5vcHRzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBlbnN1cmVBcHBTdGFydHMgKCkge1xuICAgIC8vIG1ha2Ugc3VyZSB3ZSBoYXZlIGFuIGFjdGl2aXR5IGFuZCBwYWNrYWdlIHRvIHdhaXQgZm9yXG4gICAgY29uc3QgYXBwV2FpdFBhY2thZ2UgPSB0aGlzLm9wdHMuYXBwV2FpdFBhY2thZ2UgfHwgdGhpcy5vcHRzLmFwcFBhY2thZ2U7XG4gICAgY29uc3QgYXBwV2FpdEFjdGl2aXR5ID0gdGhpcy5vcHRzLmFwcFdhaXRBY3Rpdml0eSB8fCB0aGlzLm9wdHMuYXBwQWN0aXZpdHk7XG5cbiAgICB0aGlzLmxvZy5pbmZvKGBTdGFydGluZyAnJHt0aGlzLm9wdHMuYXBwUGFja2FnZX0vJHt0aGlzLm9wdHMuYXBwQWN0aXZpdHl9IGAgK1xuICAgICAgYGFuZCB3YWl0aW5nIGZvciAnJHthcHBXYWl0UGFja2FnZX0vJHthcHBXYWl0QWN0aXZpdHl9J2ApO1xuXG4gICAgaWYgKHRoaXMuY2Fwcy5hbmRyb2lkQ292ZXJhZ2UpIHtcbiAgICAgIHRoaXMubG9nLmluZm8oYGFuZHJvaWRDb3ZlcmFnZSBpcyBjb25maWd1cmVkLiBgICtcbiAgICAgICAgYCBTdGFydGluZyBpbnN0cnVtZW50YXRpb24gb2YgJyR7dGhpcy5jYXBzLmFuZHJvaWRDb3ZlcmFnZX0nLi4uYCk7XG4gICAgICBhd2FpdCB0aGlzLmFkYi5hbmRyb2lkQ292ZXJhZ2UodGhpcy5jYXBzLmFuZHJvaWRDb3ZlcmFnZSwgYXBwV2FpdFBhY2thZ2UsIGFwcFdhaXRBY3Rpdml0eSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnN0YXJ0QXBwKHtcbiAgICAgICAgcGtnOiB0aGlzLm9wdHMuYXBwUGFja2FnZSxcbiAgICAgICAgYWN0aXZpdHk6IHRoaXMub3B0cy5hcHBBY3Rpdml0eSxcbiAgICAgICAgYWN0aW9uOiB0aGlzLm9wdHMuaW50ZW50QWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogdGhpcy5vcHRzLmludGVudENhdGVnb3J5LFxuICAgICAgICBmbGFnczogdGhpcy5vcHRzLmludGVudEZsYWdzLFxuICAgICAgICB3YWl0UGtnOiB0aGlzLm9wdHMuYXBwV2FpdFBhY2thZ2UsXG4gICAgICAgIHdhaXRBY3Rpdml0eTogdGhpcy5vcHRzLmFwcFdhaXRBY3Rpdml0eSxcbiAgICAgICAgd2FpdEZvckxhdW5jaDogdGhpcy5vcHRzLmFwcFdhaXRGb3JMYXVuY2gsXG4gICAgICAgIHdhaXREdXJhdGlvbjogdGhpcy5vcHRzLmFwcFdhaXREdXJhdGlvbixcbiAgICAgICAgb3B0aW9uYWxJbnRlbnRBcmd1bWVudHM6IHRoaXMub3B0cy5vcHRpb25hbEludGVudEFyZ3VtZW50cyxcbiAgICAgICAgc3RvcEFwcDogIXRoaXMub3B0cy5kb250U3RvcEFwcE9uUmVzZXQsXG4gICAgICAgIHJldHJ5OiB0cnVlLFxuICAgICAgICB1c2VyOiB0aGlzLm9wdHMudXNlclByb2ZpbGUsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZVNlc3Npb24gKCkge1xuICAgIHRoaXMubG9nLmRlYnVnKCdEZWxldGluZyBVaUF1dG9tYXRvcjIgc2Vzc2lvbicpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGlmICghXy5pc0VtcHR5KHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMpKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcFJlY29yZGluZ1NjcmVlbigpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGlnbikge31cblxuICAgIGF3YWl0IGFuZHJvaWRIZWxwZXJzLnJlbW92ZUFsbFNlc3Npb25XZWJTb2NrZXRIYW5kbGVycyh0aGlzLnNlcnZlciwgdGhpcy5zZXNzaW9uSWQpO1xuXG4gICAgYXdhaXQgdGhpcy5tb2JpbGVTdG9wU2NyZWVuU3RyZWFtaW5nKCk7XG5cbiAgICBpZiAodGhpcy51aWF1dG9tYXRvcjIpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcENocm9tZWRyaXZlclByb3hpZXMoKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICB0aGlzLmxvZy53YXJuKGBVbmFibGUgdG8gc3RvcCBDaHJvbWVEcml2ZXIgcHJveGllczogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmp3cFByb3h5QWN0aXZlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuZGVsZXRlU2Vzc2lvbigpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICB0aGlzLmxvZy53YXJuKGBVbmFibGUgdG8gcHJveHkgZGVsZXRlU2Vzc2lvbiB0byBVaUF1dG9tYXRvcjI6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMudWlhdXRvbWF0b3IyID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5qd3BQcm94eUFjdGl2ZSA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuYWRiKSB7XG4gICAgICBpZiAodGhpcy5vcHRzLnVuaWNvZGVLZXlib2FyZCAmJiB0aGlzLm9wdHMucmVzZXRLZXlib2FyZCAmJiB0aGlzLmRlZmF1bHRJTUUpIHtcbiAgICAgICAgdGhpcy5sb2cuZGVidWcoYFJlc2V0dGluZyBJTUUgdG8gJyR7dGhpcy5kZWZhdWx0SU1FfSdgKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmFkYi5zZXRJTUUodGhpcy5kZWZhdWx0SU1FKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgdGhpcy5sb2cud2FybihgVW5hYmxlIHRvIHJlc2V0IElNRTogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuY2Fwcy5hbmRyb2lkQ292ZXJhZ2UpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbygnU2h1dHRpbmcgZG93biB0aGUgYWRiIHByb2Nlc3Mgb2YgaW5zdHJ1bWVudGF0aW9uLi4uJyk7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLmVuZEFuZHJvaWRDb3ZlcmFnZSgpO1xuICAgICAgICAvLyBVc2UgdGhpcyBicm9hZGNhc3QgaW50ZW50IHRvIG5vdGlmeSBpdCdzIHRpbWUgdG8gZHVtcCBjb3ZlcmFnZSB0byBmaWxlXG4gICAgICAgIGlmICh0aGlzLmNhcHMuYW5kcm9pZENvdmVyYWdlRW5kSW50ZW50KSB7XG4gICAgICAgICAgdGhpcy5sb2cuaW5mbyhgU2VuZGluZyBpbnRlbnQgYnJvYWRjYXN0ICcke3RoaXMuY2Fwcy5hbmRyb2lkQ292ZXJhZ2VFbmRJbnRlbnR9JyBhdCB0aGUgZW5kIG9mIGluc3RydW1lbnRpbmcuYCk7XG4gICAgICAgICAgYXdhaXQgdGhpcy5hZGIuYnJvYWRjYXN0KHRoaXMuY2Fwcy5hbmRyb2lkQ292ZXJhZ2VFbmRJbnRlbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubG9nLndhcm4oJ05vIGFuZHJvaWRDb3ZlcmFnZUVuZEludGVudCBpcyBjb25maWd1cmVkIGluIGNhcHMuIFBvc3NpYmx5IHlvdSBjYW5ub3QgZ2V0IGNvdmVyYWdlIGZpbGUuJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm9wdHMuYXBwUGFja2FnZSkge1xuICAgICAgICBpZiAoIXRoaXMuaXNDaHJvbWVTZXNzaW9uXG4gICAgICAgICAgICAmJiAhdGhpcy5vcHRzLmRvbnRTdG9wQXBwT25SZXNldFxuICAgICAgICAgICAgJiYgIXRoaXMub3B0cy5ub1Jlc2V0KSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuYWRiLmZvcmNlU3RvcCh0aGlzLm9wdHMuYXBwUGFja2FnZSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICB0aGlzLmxvZy53YXJuKGBVbmFibGUgdG8gZm9yY2Ugc3RvcCBhcHA6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9wdHMuZnVsbFJlc2V0ICYmICF0aGlzLm9wdHMuc2tpcFVuaW5zdGFsbCkge1xuICAgICAgICAgIHRoaXMubG9nLmRlYnVnKGBDYXBhYmlsaXR5ICdmdWxsUmVzZXQnIHNldCB0byAndHJ1ZScsIFVuaW5zdGFsbGluZyAnJHt0aGlzLm9wdHMuYXBwUGFja2FnZX0nYCk7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuYWRiLnVuaW5zdGFsbEFwayh0aGlzLm9wdHMuYXBwUGFja2FnZSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICB0aGlzLmxvZy53YXJuKGBVbmFibGUgdG8gdW5pbnN0YWxsIGFwcDogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIFRoaXMgdmFsdWUgY2FuIGJlIHRydWUgaWYgdGVzdCB0YXJnZXQgZGV2aWNlIGlzIDw9IDI2XG4gICAgICBpZiAodGhpcy5fd2FzV2luZG93QW5pbWF0aW9uRGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbygnUmVzdG9yaW5nIHdpbmRvdyBhbmltYXRpb24gc3RhdGUnKTtcbiAgICAgICAgYXdhaXQgdGhpcy5hZGIuc2V0QW5pbWF0aW9uU3RhdGUodHJ1ZSk7XG4gICAgICB9XG4gICAgICBhd2FpdCB0aGlzLmFkYi5zdG9wTG9nY2F0KCk7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLnJlbGVhc2VTeXN0ZW1Qb3J0KCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aGlzLmxvZy53YXJuKGBVbmFibGUgdG8gcmVtb3ZlIHN5c3RlbSBwb3J0IGZvcndhcmQ6ICR7ZXJyb3IubWVzc2FnZX1gKTtcbiAgICAgICAgLy8gSWdub3JlLCB0aGlzIGJsb2NrIHdpbGwgYWxzbyBiZSBjYWxsZWQgd2hlbiB3ZSBmYWxsIGluIGNhdGNoIGJsb2NrXG4gICAgICAgIC8vIGFuZCBiZWZvcmUgZXZlbiBwb3J0IGZvcndhcmQuXG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLnJlbGVhc2VNanBlZ1NlcnZlclBvcnQoKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRoaXMubG9nLndhcm4oYFVuYWJsZSB0byByZW1vdmUgTUpQRUcgc2VydmVyIHBvcnQgZm9yd2FyZDogJHtlcnJvci5tZXNzYWdlfWApO1xuICAgICAgICAvLyBJZ25vcmUsIHRoaXMgYmxvY2sgd2lsbCBhbHNvIGJlIGNhbGxlZCB3aGVuIHdlIGZhbGwgaW4gY2F0Y2ggYmxvY2tcbiAgICAgICAgLy8gYW5kIGJlZm9yZSBldmVuIHBvcnQgZm9yd2FyZC5cbiAgICAgIH1cblxuICAgICAgaWYgKGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCkgPj0gMjgpIHsgLy8gQW5kcm9pZCBQXG4gICAgICAgIHRoaXMubG9nLmluZm8oJ1Jlc3RvcmluZyBoaWRkZW4gYXBpIHBvbGljeSB0byB0aGUgZGV2aWNlIGRlZmF1bHQgY29uZmlndXJhdGlvbicpO1xuICAgICAgICBhd2FpdCB0aGlzLmFkYi5zZXREZWZhdWx0SGlkZGVuQXBpUG9saWN5KCEhdGhpcy5vcHRzLmlnbm9yZUhpZGRlbkFwaVBvbGljeUVycm9yKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMub3B0cy5yZWJvb3QpIHtcbiAgICAgICAgbGV0IGF2ZE5hbWUgPSB0aGlzLm9wdHMuYXZkLnJlcGxhY2UoJ0AnLCAnJyk7XG4gICAgICAgIHRoaXMubG9nLmRlYnVnKGBDbG9zaW5nIGVtdWxhdG9yICcke2F2ZE5hbWV9J2ApO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuYWRiLmtpbGxFbXVsYXRvcihhdmROYW1lKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgdGhpcy5sb2cud2FybihgVW5hYmxlIHRvIGNsb3NlIGVtdWxhdG9yOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLm1qcGVnU3RyZWFtKSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKCdDbG9zaW5nIE1KUEVHIHN0cmVhbScpO1xuICAgICAgdGhpcy5tanBlZ1N0cmVhbS5zdG9wKCk7XG4gICAgfVxuICAgIGF3YWl0IHN1cGVyLmRlbGV0ZVNlc3Npb24oKTtcbiAgfVxuXG4gIGFzeW5jIGNoZWNrQXBwUHJlc2VudCAoKSB7XG4gICAgdGhpcy5sb2cuZGVidWcoJ0NoZWNraW5nIHdoZXRoZXIgYXBwIGlzIGFjdHVhbGx5IHByZXNlbnQnKTtcbiAgICBpZiAoIShhd2FpdCBmcy5leGlzdHModGhpcy5vcHRzLmFwcCkpKSB7XG4gICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBDb3VsZCBub3QgZmluZCBhcHAgYXBrIGF0ICcke3RoaXMub3B0cy5hcHB9J2ApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG9uU2V0dGluZ3NVcGRhdGUgKCkge1xuICAgIC8vIGludGVudGlvbmFsbHkgZG8gbm90aGluZyBoZXJlLCBzaW5jZSBjb21tYW5kcy51cGRhdGVTZXR0aW5ncyBwcm94aWVzXG4gICAgLy8gc2V0dGluZ3MgdG8gdGhlIHVpYXV0bzIgc2VydmVyIGFscmVhZHlcbiAgfVxuXG4gIC8vIE5lZWQgdG8gb3ZlcnJpZGUgYW5kcm9pZC1kcml2ZXIncyB2ZXJzaW9uIG9mIHRoaXMgc2luY2Ugd2UgZG9uJ3QgYWN0dWFsbHlcbiAgLy8gaGF2ZSBhIGJvb3RzdHJhcDsgaW5zdGVhZCB3ZSBqdXN0IHJlc3RhcnQgYWRiIGFuZCByZS1mb3J3YXJkIHRoZSBVaUF1dG9tYXRvcjJcbiAgLy8gcG9ydFxuICBhc3luYyB3cmFwQm9vdHN0cmFwRGlzY29ubmVjdCAod3JhcHBlZCkge1xuICAgIGF3YWl0IHdyYXBwZWQoKTtcbiAgICBhd2FpdCB0aGlzLmFkYi5yZXN0YXJ0KCk7XG4gICAgYXdhaXQgdGhpcy5hbGxvY2F0ZVN5c3RlbVBvcnQoKTtcbiAgICBhd2FpdCB0aGlzLmFsbG9jYXRlTWpwZWdTZXJ2ZXJQb3J0KCk7XG4gIH1cblxuICBwcm94eUFjdGl2ZSAoc2Vzc2lvbklkKSB7XG4gICAgc3VwZXIucHJveHlBY3RpdmUoc2Vzc2lvbklkKTtcblxuICAgIC8vIHdlIGFsd2F5cyBoYXZlIGFuIGFjdGl2ZSBwcm94eSB0byB0aGUgVWlBdXRvbWF0b3IyIHNlcnZlclxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY2FuUHJveHkgKHNlc3Npb25JZCkge1xuICAgIHN1cGVyLmNhblByb3h5KHNlc3Npb25JZCk7XG5cbiAgICAvLyB3ZSBjYW4gYWx3YXlzIHByb3h5IHRvIHRoZSB1aWF1dG9tYXRvcjIgc2VydmVyXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBnZXRQcm94eUF2b2lkTGlzdCAoc2Vzc2lvbklkKSB7XG4gICAgc3VwZXIuZ2V0UHJveHlBdm9pZExpc3Qoc2Vzc2lvbklkKTtcbiAgICAvLyB3ZSBhcmUgbWFpbnRhaW5pbmcgdHdvIHNldHMgb2YgTk9fUFJPWFkgbGlzdHMsIG9uZSBmb3IgY2hyb21lZHJpdmVyKENIUk9NRV9OT19QUk9YWSlcbiAgICAvLyBhbmQgb25lIGZvciB1aWF1dG9tYXRvcjIoTk9fUFJPWFkpLCBiYXNlZCBvbiBjdXJyZW50IGNvbnRleHQgd2lsbCByZXR1cm4gcmVsYXRlZCBOT19QUk9YWSBsaXN0XG4gICAgaWYgKHV0aWwuaGFzVmFsdWUodGhpcy5jaHJvbWVkcml2ZXIpKSB7XG4gICAgICAvLyBpZiB0aGUgY3VycmVudCBjb250ZXh0IGlzIHdlYnZpZXcoY2hyb21lZHJpdmVyKSwgdGhlbiByZXR1cm4gQ0hST01FX05PX1BST1hZIGxpc3RcbiAgICAgIHRoaXMuandwUHJveHlBdm9pZCA9IENIUk9NRV9OT19QUk9YWTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5qd3BQcm94eUF2b2lkID0gTk9fUFJPWFk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdHMubmF0aXZlV2ViU2NyZWVuc2hvdCkge1xuICAgICAgdGhpcy5qd3BQcm94eUF2b2lkID0gWy4uLnRoaXMuandwUHJveHlBdm9pZCwgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvc2NyZWVuc2hvdCcpXV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuandwUHJveHlBdm9pZDtcbiAgfVxuXG4gIGdldCBpc0Nocm9tZVNlc3Npb24gKCkge1xuICAgIHJldHVybiBoZWxwZXJzLmlzQ2hyb21lQnJvd3Nlcih0aGlzLm9wdHMuYnJvd3Nlck5hbWUpO1xuICB9XG59XG5cbi8vIGZpcnN0IGFkZCB0aGUgYW5kcm9pZC1kcml2ZXIgY29tbWFuZHMgd2hpY2ggd2Ugd2lsbCBmYWxsIGJhY2sgdG9cbmZvciAobGV0IFtjbWQsIGZuXSBvZiBfLnRvUGFpcnMoYW5kcm9pZENvbW1hbmRzKSkge1xuICBBbmRyb2lkVWlhdXRvbWF0b3IyRHJpdmVyLnByb3RvdHlwZVtjbWRdID0gZm47XG59XG5cbi8vIHRoZW4gb3ZlcndyaXRlIHdpdGggYW55IHVpYXV0b21hdG9yMi1zcGVjaWZpYyBjb21tYW5kc1xuZm9yIChsZXQgW2NtZCwgZm5dIG9mIF8udG9QYWlycyhjb21tYW5kcykpIHtcbiAgQW5kcm9pZFVpYXV0b21hdG9yMkRyaXZlci5wcm90b3R5cGVbY21kXSA9IGZuO1xufVxuXG5leHBvcnQgeyBBbmRyb2lkVWlhdXRvbWF0b3IyRHJpdmVyIH07XG5leHBvcnQgZGVmYXVsdCBBbmRyb2lkVWlhdXRvbWF0b3IyRHJpdmVyO1xuIl0sImZpbGUiOiJsaWIvZHJpdmVyLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
628
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2RyaXZlci5qcyIsIm5hbWVzIjpbImhlbHBlcnMiLCJPYmplY3QiLCJhc3NpZ24iLCJ1aWF1dG9tYXRvcjJIZWxwZXJzIiwiYW5kcm9pZEhlbHBlcnMiLCJERVZJQ0VfUE9SVF9SQU5HRSIsIkRFVklDRV9QT1JUX0FMTE9DQVRJT05fR1VBUkQiLCJ1dGlsIiwiZ2V0TG9ja0ZpbGVHdWFyZCIsInBhdGgiLCJyZXNvbHZlIiwib3MiLCJ0bXBkaXIiLCJ0aW1lb3V0IiwidHJ5UmVjb3ZlcnkiLCJERVZJQ0VfUE9SVCIsIk1KUEVHX1NFUlZFUl9ERVZJQ0VfUE9SVCIsIkxPQ0FMSE9TVF9JUDQiLCJOT19QUk9YWSIsIlJlZ0V4cCIsIkNIUk9NRV9OT19QUk9YWSIsIk1FTU9JWkVEX0ZVTkNUSU9OUyIsIkFuZHJvaWRVaWF1dG9tYXRvcjJEcml2ZXIiLCJCYXNlRHJpdmVyIiwiY29uc3RydWN0b3IiLCJvcHRzIiwic2hvdWxkVmFsaWRhdGVDYXBzIiwic2hlbGwiLCJsb2NhdG9yU3RyYXRlZ2llcyIsImRlc2lyZWRDYXBDb25zdHJhaW50cyIsInVpYXV0b21hdG9yMiIsImp3cFByb3h5QWN0aXZlIiwiZGVmYXVsdElNRSIsImp3cFByb3h5QXZvaWQiLCJhcGtTdHJpbmdzIiwic2V0dGluZ3MiLCJEZXZpY2VTZXR0aW5ncyIsImlnbm9yZVVuaW1wb3J0YW50Vmlld3MiLCJhbGxvd0ludmlzaWJsZUVsZW1lbnRzIiwib25TZXR0aW5nc1VwZGF0ZSIsImJpbmQiLCJjaHJvbWVkcml2ZXIiLCJzZXNzaW9uQ2hyb21lZHJpdmVycyIsImZuIiwiXyIsIm1lbW9pemUiLCJ2YWxpZGF0ZURlc2lyZWRDYXBzIiwiY2FwcyIsImNyZWF0ZVNlc3Npb24iLCJhcmdzIiwic2Vzc2lvbklkIiwic2VydmVyRGV0YWlscyIsInBsYXRmb3JtIiwid2ViU3RvcmFnZUVuYWJsZWQiLCJ0YWtlc1NjcmVlbnNob3QiLCJqYXZhc2NyaXB0RW5hYmxlZCIsImRhdGFiYXNlRW5hYmxlZCIsIm5ldHdvcmtDb25uZWN0aW9uRW5hYmxlZCIsImxvY2F0aW9uQ29udGV4dEVuYWJsZWQiLCJ3YXJuaW5ncyIsImRlc2lyZWQiLCJjdXJDb250ZXh0IiwiZGVmYXVsdENvbnRleHROYW1lIiwiZGVmYXVsdE9wdHMiLCJmdWxsUmVzZXQiLCJhdXRvTGF1bmNoIiwiYWRiUG9ydCIsIkRFRkFVTFRfQURCX1BPUlQiLCJhbmRyb2lkSW5zdGFsbFRpbWVvdXQiLCJkZWZhdWx0cyIsImlzQ2hyb21lU2Vzc2lvbiIsImxvZyIsImluZm8iLCJwa2ciLCJhY3Rpdml0eSIsImdldENocm9tZVBrZyIsImJyb3dzZXJOYW1lIiwiYXBwUGFja2FnZSIsImFwcEFjdGl2aXR5IiwicmVib290Iiwic2V0QXZkRnJvbUNhcGFiaWxpdGllcyIsImFwcCIsImNvbmZpZ3VyZUFwcCIsIkFQS19FWFRFTlNJT04iLCJBUEtTX0VYVEVOU0lPTiIsImNoZWNrQXBwUHJlc2VudCIsInN0YXJ0VWlBdXRvbWF0b3IyU2Vzc2lvbiIsImZpbGxEZXZpY2VEZXRhaWxzIiwibWpwZWdTY3JlZW5zaG90VXJsIiwibWpwZWdTdHJlYW0iLCJtanBlZyIsIk1KcGVnU3RyZWFtIiwic3RhcnQiLCJlIiwiZGVsZXRlU2Vzc2lvbiIsInBpeGVsUmF0aW8iLCJnZXREZXZpY2VQaXhlbFJhdGlvIiwic3RhdEJhckhlaWdodCIsImdldFN0YXR1c0JhckhlaWdodCIsInZpZXdwb3J0UmVjdCIsImdldFZpZXdQb3J0UmVjdCIsImRyaXZlckRhdGEiLCJnZXRTZXNzaW9uIiwic2Vzc2lvbkRhdGEiLCJkZWJ1ZyIsInVpYTJEYXRhIiwiandwcm94eSIsImNvbW1hbmQiLCJpc0VtdWxhdG9yIiwiYWRiIiwiYXZkIiwiZGV2aWNlTmFtZSIsImVycm9yQW5kVGhyb3ciLCJwbGF0Zm9ybVZlcnNpb24iLCJhdmREZXZpY2UiLCJyZXBsYWNlIiwiYWxsb2NhdGVTeXN0ZW1Qb3J0IiwiZm9yd2FyZFBvcnQiLCJsb2NhbFBvcnQiLCJzeXN0ZW1Qb3J0IiwiX2hhc1N5c3RlbVBvcnRJbkNhcHMiLCJzdGFydFBvcnQiLCJlbmRQb3J0IiwicmVsZWFzZVN5c3RlbVBvcnQiLCJyZW1vdmVQb3J0Rm9yd2FyZCIsImFsbG9jYXRlTWpwZWdTZXJ2ZXJQb3J0IiwibWpwZWdTZXJ2ZXJQb3J0IiwicmVsZWFzZU1qcGVnU2VydmVyUG9ydCIsInVkaWQiLCJlbVBvcnQiLCJnZXREZXZpY2VJbmZvRnJvbUNhcHMiLCJjcmVhdGVBREIiLCJhcGlMZXZlbCIsImdldEFwaUxldmVsIiwic2V0SGlkZGVuQXBpUG9saWN5IiwiaWdub3JlSGlkZGVuQXBpUG9saWN5RXJyb3IiLCJoYXNWYWx1ZSIsImdwc0VuYWJsZWQiLCJ0b2dnbGVHUFNMb2NhdGlvblByb3ZpZGVyIiwid2FybiIsImFwcEluZm8iLCJnZXRMYXVuY2hJbmZvIiwiY3VyRGV2aWNlSWQiLCJkZXZpY2VVRElEIiwiaW5pdERldmljZSIsImluaXRVaUF1dG9tYXRvcjJTZXJ2ZXIiLCJkaXNhYmxlV2luZG93QW5pbWF0aW9uIiwiaXNBbmltYXRpb25PbiIsInNldEFuaW1hdGlvblN0YXRlIiwiX3dhc1dpbmRvd0FuaW1hdGlvbkRpc2FibGVkIiwiaW5pdEFVVCIsInN0YXJ0U2Vzc2lvbiIsImFkZERldmljZUluZm9Ub0NhcHMiLCJza2lwVW5sb2NrIiwidW5sb2NrIiwic3RhcnRDaHJvbWVTZXNzaW9uIiwiZW5zdXJlQXBwU3RhcnRzIiwib3JpZW50YXRpb24iLCJzZXRPcmllbnRhdGlvbiIsImF1dG9XZWJ2aWV3Iiwidmlld05hbWUiLCJkZWZhdWx0V2Vidmlld05hbWUiLCJhdXRvV2Vidmlld1RpbWVvdXQiLCJzZXRDb250ZXh0IiwiYXBpVmVyc2lvbiIsIm1hbnVmYWN0dXJlciIsIm1vZGVsIiwicmVhbERpc3BsYXlTaXplIiwiZGlzcGxheURlbnNpdHkiLCJtb2JpbGVHZXREZXZpY2VJbmZvIiwiZGV2aWNlQXBpTGV2ZWwiLCJwYXJzZUludCIsImRldmljZVNjcmVlblNpemUiLCJkZXZpY2VTY3JlZW5EZW5zaXR5IiwiZGV2aWNlTW9kZWwiLCJkZXZpY2VNYW51ZmFjdHVyZXIiLCJ1aWF1dG9tYXRvcjJPcHRzIiwiaG9zdCIsInJlbW90ZUFkYkhvc3QiLCJkZXZpY2VQb3J0IiwiYXBrIiwidG1wRGlyIiwiZGlzYWJsZVN1cHByZXNzQWNjZXNzaWJpbGl0eVNlcnZpY2UiLCJyZWFkVGltZW91dCIsInVpYXV0b21hdG9yMlNlcnZlclJlYWRUaW1lb3V0IiwiVWlBdXRvbWF0b3IyU2VydmVyIiwicHJveHlSZXFSZXMiLCJwcm94eUNvbW1hbmQiLCJza2lwU2VydmVySW5zdGFsbGF0aW9uIiwiaW5zdGFsbFNlcnZlckFwayIsInVpYXV0b21hdG9yMlNlcnZlckluc3RhbGxUaW1lb3V0IiwiYWRkVG9EZXZpY2VJZGxlV2hpdGVsaXN0IiwiU0VUVElOR1NfSEVMUEVSX1BLR19JRCIsIlNFUlZFUl9QQUNLQUdFX0lEIiwiU0VSVkVSX1RFU1RfUEFDS0FHRV9JRCIsInN0ZGVyciIsIm1lc3NhZ2UiLCJ1bmluc3RhbGxPdGhlclBhY2thZ2VzIiwicGFyc2VBcnJheSIsIm90aGVyQXBwcyIsIkIiLCJhbGwiLCJtYXAiLCJpbnN0YWxsT3RoZXJBcGtzIiwibm9SZXNldCIsImlzQXBwSW5zdGFsbGVkIiwibm9TaWduIiwiY2hlY2tBcGtDZXJ0IiwicmVxdWlyZURlZmF1bHRDZXJ0Iiwic2lnbkFwcCIsInNraXBVbmluc3RhbGwiLCJ1bmluc3RhbGxBcGsiLCJpbnN0YWxsQXBrIiwiZmFzdFJlc2V0IiwicmVzZXRBcHAiLCJhcHBXYWl0UGFja2FnZSIsImFwcFdhaXRBY3Rpdml0eSIsImFuZHJvaWRDb3ZlcmFnZSIsInN0YXJ0QXBwIiwiYWN0aW9uIiwiaW50ZW50QWN0aW9uIiwiY2F0ZWdvcnkiLCJpbnRlbnRDYXRlZ29yeSIsImZsYWdzIiwiaW50ZW50RmxhZ3MiLCJ3YWl0UGtnIiwid2FpdEFjdGl2aXR5Iiwid2FpdEZvckxhdW5jaCIsImFwcFdhaXRGb3JMYXVuY2giLCJ3YWl0RHVyYXRpb24iLCJhcHBXYWl0RHVyYXRpb24iLCJvcHRpb25hbEludGVudEFyZ3VtZW50cyIsInN0b3BBcHAiLCJkb250U3RvcEFwcE9uUmVzZXQiLCJyZXRyeSIsInVzZXIiLCJ1c2VyUHJvZmlsZSIsImlzRW1wdHkiLCJfc2NyZWVuUmVjb3JkaW5nUHJvcGVydGllcyIsInN0b3BSZWNvcmRpbmdTY3JlZW4iLCJpZ24iLCJyZW1vdmVBbGxTZXNzaW9uV2ViU29ja2V0SGFuZGxlcnMiLCJzZXJ2ZXIiLCJtb2JpbGVTdG9wU2NyZWVuU3RyZWFtaW5nIiwic3RvcENocm9tZWRyaXZlclByb3hpZXMiLCJlcnIiLCJ1bmljb2RlS2V5Ym9hcmQiLCJyZXNldEtleWJvYXJkIiwic2V0SU1FIiwiZW5kQW5kcm9pZENvdmVyYWdlIiwiYW5kcm9pZENvdmVyYWdlRW5kSW50ZW50IiwiYnJvYWRjYXN0IiwiZm9yY2VTdG9wIiwic3RvcExvZ2NhdCIsImVycm9yIiwic2V0RGVmYXVsdEhpZGRlbkFwaVBvbGljeSIsImF2ZE5hbWUiLCJraWxsRW11bGF0b3IiLCJzdG9wIiwiZnMiLCJleGlzdHMiLCJ3cmFwQm9vdHN0cmFwRGlzY29ubmVjdCIsIndyYXBwZWQiLCJyZXN0YXJ0IiwicHJveHlBY3RpdmUiLCJjYW5Qcm94eSIsImdldFByb3h5QXZvaWRMaXN0IiwibmF0aXZlV2ViU2NyZWVuc2hvdCIsImlzQ2hyb21lQnJvd3NlciIsImNtZCIsInRvUGFpcnMiLCJhbmRyb2lkQ29tbWFuZHMiLCJwcm90b3R5cGUiLCJjb21tYW5kcyJdLCJzb3VyY2VSb290IjoiLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9kcml2ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IEJhc2VEcml2ZXIsIERldmljZVNldHRpbmdzIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5pbXBvcnQge1xuICBVaUF1dG9tYXRvcjJTZXJ2ZXIsIFNFUlZFUl9QQUNLQUdFX0lELCBTRVJWRVJfVEVTVF9QQUNLQUdFX0lEXG59IGZyb20gJy4vdWlhdXRvbWF0b3IyJztcbmltcG9ydCB7IGZzLCB1dGlsLCBtanBlZyB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyByZXRyeUludGVydmFsIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IGNvbW1hbmRzIGZyb20gJy4vY29tbWFuZHMvaW5kZXgnO1xuaW1wb3J0IHsgREVGQVVMVF9BREJfUE9SVCB9IGZyb20gJ2FwcGl1bS1hZGInO1xuaW1wb3J0IHVpYXV0b21hdG9yMkhlbHBlcnMgZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7XG4gIGFuZHJvaWRIZWxwZXJzLCBhbmRyb2lkQ29tbWFuZHMsIFNFVFRJTkdTX0hFTFBFUl9QS0dfSURcbn0gZnJvbSAnYXBwaXVtLWFuZHJvaWQtZHJpdmVyJztcbmltcG9ydCBkZXNpcmVkQ2FwQ29uc3RyYWludHMgZnJvbSAnLi9kZXNpcmVkLWNhcHMnO1xuaW1wb3J0IHsgZmluZEFQb3J0Tm90SW5Vc2UsIGNoZWNrUG9ydFN0YXR1cyB9IGZyb20gJ3BvcnRzY2FubmVyJztcbmltcG9ydCBvcyBmcm9tICdvcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IEFQS19FWFRFTlNJT04sIEFQS1NfRVhURU5TSU9OIH0gZnJvbSAnLi9leHRlbnNpb25zJztcblxuXG5jb25zdCBoZWxwZXJzID0gT2JqZWN0LmFzc2lnbih7fSwgdWlhdXRvbWF0b3IySGVscGVycywgYW5kcm9pZEhlbHBlcnMpO1xuXG4vLyBUaGUgcmFuZ2Ugb2YgcG9ydHMgd2UgY2FuIHVzZSBvbiB0aGUgc3lzdGVtIGZvciBjb21tdW5pY2F0aW5nIHRvIHRoZVxuLy8gVWlBdXRvbWF0b3IyIEhUVFAgc2VydmVyIG9uIHRoZSBkZXZpY2VcbmNvbnN0IERFVklDRV9QT1JUX1JBTkdFID0gWzgyMDAsIDgyOTldO1xuXG4vLyBUaGUgZ3VhcmQgaXMgbmVlZGVkIHRvIGF2b2lkIGR5bmFtaWMgc3lzdGVtIHBvcnQgYWxsb2NhdGlvbiBjb25mbGljdHMgZm9yXG4vLyBwYXJhbGxlbCBkcml2ZXIgc2Vzc2lvbnNcbmNvbnN0IERFVklDRV9QT1JUX0FMTE9DQVRJT05fR1VBUkQgPSB1dGlsLmdldExvY2tGaWxlR3VhcmQoXG4gIHBhdGgucmVzb2x2ZShvcy50bXBkaXIoKSwgJ3VpYTJfZGV2aWNlX3BvcnRfZ3VhcmQnKSxcbiAge3RpbWVvdXQ6IDI1LCB0cnlSZWNvdmVyeTogdHJ1ZX1cbik7XG5cbi8vIFRoaXMgaXMgdGhlIHBvcnQgdGhhdCBVaUF1dG9tYXRvcjIgbGlzdGVucyB0byBvbiB0aGUgZGV2aWNlLiBXZSB3aWxsIGZvcndhcmRcbi8vIG9uZSBvZiB0aGUgcG9ydHMgYWJvdmUgb24gdGhlIHN5c3RlbSB0byB0aGlzIHBvcnQgb24gdGhlIGRldmljZS5cbmNvbnN0IERFVklDRV9QT1JUID0gNjc5MDtcbi8vIFRoaXMgaXMgdGhlIHBvcnQgdGhhdCB0aGUgVWlBdXRvbWF0b3IyIE1KUEVHIHNlcnZlciBsaXN0ZW5zIHRvIG9uIHRoZSBkZXZpY2UuXG4vLyBXZSB3aWxsIGZvcndhcmQgb25lIG9mIHRoZSBwb3J0cyBhYm92ZSBvbiB0aGUgc3lzdGVtIHRvIHRoaXMgcG9ydCBvbiB0aGVcbi8vIGRldmljZS5cbmNvbnN0IE1KUEVHX1NFUlZFUl9ERVZJQ0VfUE9SVCA9IDc4MTA7XG5cbmNvbnN0IExPQ0FMSE9TVF9JUDQgPSAnMTI3LjAuMC4xJztcblxuLy8gTk9fUFJPWFkgY29udGFpbnMgdGhlIHBhdGhzIHRoYXQgd2UgbmV2ZXIgd2FudCB0byBwcm94eSB0byBVaUF1dG9tYXRvcjIgc2VydmVyLlxuLy8gVE9ETzogIEFkZCB0aGUgbGlzdCBvZiBwYXRocyB0aGF0IHdlIG5ldmVyIHdhbnQgdG8gcHJveHkgdG8gVWlBdXRvbWF0b3IyIHNlcnZlci5cbi8vIFRPRE86IE5lZWQgdG8gc2VncmVnYXRlIHRoZSBwYXRocyBiZXR0ZXIgd2F5IHVzaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbnMgd2hlcmV2ZXIgYXBwbGljYWJsZS5cbi8vIChOb3Qgc2VncmVnYXRpbmcgcmlnaHQgYXdheSBiZWNhdXNlIG1vcmUgcGF0aHMgdG8gYmUgYWRkZWQgaW4gdGhlIE5PX1BST1hZIGxpc3QpXG5jb25zdCBOT19QUk9YWSA9IFtcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vKD8hLiovKScpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYWxlcnRfW14vXSsnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FsZXJ0L1teL10rJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vW14vXSsvY3VycmVudF9hY3Rpdml0eScpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL1teL10rL2N1cnJlbnRfcGFja2FnZScpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2FwcC9bXi9dKycpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2RldmljZS9bXi9dKycpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL3NldHRpbmdzJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9jb250ZXh0JyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9jb250ZXh0cycpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvZWxlbWVudC9bXi9dKy9hdHRyaWJ1dGUnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2VsZW1lbnQvW14vXSsvZGlzcGxheWVkJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9lbGVtZW50L1teL10rL2VuYWJsZWQnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2VsZW1lbnQvW14vXSsvbG9jYXRpb25faW5fdmlldycpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvZWxlbWVudC9bXi9dKy9uYW1lJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9lbGVtZW50L1teL10rL3NjcmVlbnNob3QnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2VsZW1lbnQvW14vXSsvc2VsZWN0ZWQnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2ltZS9bXi9dKycpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvbG9jYXRpb24nKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL25ldHdvcmtfY29ubmVjdGlvbicpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvc2NyZWVuc2hvdCcpXSxcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvdGltZW91dHMnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3VybCcpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL1teL10rX2FsZXJ0JCcpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FjdGlvbnMnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hbGVydC9bXi9dKycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcC9bXi9dJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL1teL10rL3N0YXJ0X2FjdGl2aXR5JyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2FwcC9bXi9dKycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9jb21wYXJlX2ltYWdlcycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9kZXZpY2UvKD8hc2V0X2NsaXBib2FyZClbXi9dKycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9lbGVtZW50L1teL10rL3JlcGxhY2VfdmFsdWUnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vZWxlbWVudC9bXi9dKy92YWx1ZScpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2FwcGl1bS9nZXRQZXJmb3JtYW5jZURhdGEnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vcGVyZm9ybWFuY2VEYXRhL3R5cGVzJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL3NldHRpbmdzJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL2V4ZWN1dGVfZHJpdmVyJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtL3N0YXJ0X3JlY29yZGluZ19zY3JlZW4nKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9hcHBpdW0vc3RvcF9yZWNvcmRpbmdfc2NyZWVuJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtLy4qZXZlbnQnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9jb250ZXh0JyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvZWxlbWVudCcpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2ltZS9bXi9dKycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2tleXMnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9sb2NhdGlvbicpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL25ldHdvcmtfY29ubmVjdGlvbicpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3RpbWVvdXRzJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvdG91Y2gvbXVsdGkvcGVyZm9ybScpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3RvdWNoL3BlcmZvcm0nKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy91cmwnKV0sXG5cbiAgLy8gTUpTT05XUCBjb21tYW5kc1xuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9sb2cvdHlwZXMnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9leGVjdXRlJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvZXhlY3V0ZV9hc3luYycpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2xvZycpXSxcbiAgLy8gVzNDIGNvbW1hbmRzXG4gIC8vIEZvciBTZWxlbml1bSB2NCAoVzNDIGRvZXMgbm90IGhhdmUgdGhpcyByb3V0ZSlcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvc2UvbG9nL3R5cGVzJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy93aW5kb3cvcmVjdCcpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2V4ZWN1dGUvYXN5bmMnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9leGVjdXRlL3N5bmMnKV0sXG4gIC8vIEZvciBTZWxlbml1bSB2NCAoVzNDIGRvZXMgbm90IGhhdmUgdGhpcyByb3V0ZSlcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3NlL2xvZycpXSxcbl07XG5cbi8vIFRoaXMgaXMgYSBzZXQgb2YgbWV0aG9kcyBhbmQgcGF0aHMgdGhhdCB3ZSBuZXZlciB3YW50IHRvIHByb3h5IHRvIENocm9tZWRyaXZlci5cbmNvbnN0IENIUk9NRV9OT19QUk9YWSA9IFtcbiAgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtJyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9jb250ZXh0JyldLFxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9lbGVtZW50L1teL10rL3JlY3QnKV0sXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL29yaWVudGF0aW9uJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvYXBwaXVtJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvY29udGV4dCcpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL29yaWVudGF0aW9uJyldLFxuICBbJ1BPU1QnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvdG91Y2gvbXVsdGkvcGVyZm9ybScpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL3RvdWNoL3BlcmZvcm0nKV0sXG5cbiAgLy8gdGhpcyBpcyBuZWVkZWQgdG8gbWFrZSB0aGUgbW9iaWxlOiBjb21tYW5kcyB3b3JraW5nIGluIHdlYiBjb250ZXh0XG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9leGVjdXRlJCcpXSxcbiAgWydQT1NUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2V4ZWN1dGUvc3luYycpXSxcblxuICAvLyBNSlNPTldQIGNvbW1hbmRzXG4gIFsnR0VUJywgbmV3IFJlZ0V4cCgnXi9zZXNzaW9uL1teL10rL2xvZy90eXBlcyQnKV0sXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9sb2ckJyldLFxuICAvLyBXM0MgY29tbWFuZHNcbiAgLy8gRm9yIFNlbGVuaXVtIHY0IChXM0MgZG9lcyBub3QgaGF2ZSB0aGlzIHJvdXRlKVxuICBbJ0dFVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9zZS9sb2cvdHlwZXMkJyldLFxuICAvLyBGb3IgU2VsZW5pdW0gdjQgKFczQyBkb2VzIG5vdCBoYXZlIHRoaXMgcm91dGUpXG4gIFsnUE9TVCcsIG5ldyBSZWdFeHAoJ14vc2Vzc2lvbi9bXi9dKy9zZS9sb2ckJyldLFxuXTtcblxuY29uc3QgTUVNT0laRURfRlVOQ1RJT05TID0gW1xuICAnZ2V0U3RhdHVzQmFySGVpZ2h0JyxcbiAgJ2dldERldmljZVBpeGVsUmF0aW8nLFxuXTtcblxuY2xhc3MgQW5kcm9pZFVpYXV0b21hdG9yMkRyaXZlciBleHRlbmRzIEJhc2VEcml2ZXIge1xuICBjb25zdHJ1Y3RvciAob3B0cyA9IHt9LCBzaG91bGRWYWxpZGF0ZUNhcHMgPSB0cnVlKSB7XG4gICAgLy8gYHNoZWxsYCBvdmVyd3JpdGVzIGFkYi5zaGVsbCwgc28gcmVtb3ZlXG4gICAgZGVsZXRlIG9wdHMuc2hlbGw7XG5cbiAgICBzdXBlcihvcHRzLCBzaG91bGRWYWxpZGF0ZUNhcHMpO1xuICAgIHRoaXMubG9jYXRvclN0cmF0ZWdpZXMgPSBbXG4gICAgICAneHBhdGgnLFxuICAgICAgJ2lkJyxcbiAgICAgICdjbGFzcyBuYW1lJyxcbiAgICAgICdhY2Nlc3NpYmlsaXR5IGlkJyxcbiAgICAgICdjc3Mgc2VsZWN0b3InLFxuICAgICAgJy1hbmRyb2lkIHVpYXV0b21hdG9yJ1xuICAgIF07XG4gICAgdGhpcy5kZXNpcmVkQ2FwQ29uc3RyYWludHMgPSBkZXNpcmVkQ2FwQ29uc3RyYWludHM7XG4gICAgdGhpcy51aWF1dG9tYXRvcjIgPSBudWxsO1xuICAgIHRoaXMuandwUHJveHlBY3RpdmUgPSBmYWxzZTtcbiAgICB0aGlzLmRlZmF1bHRJTUUgPSBudWxsO1xuICAgIHRoaXMuandwUHJveHlBdm9pZCA9IE5PX1BST1hZO1xuICAgIHRoaXMuYXBrU3RyaW5ncyA9IHt9OyAvLyBtYXAgb2YgbGFuZ3VhZ2UgLT4gc3RyaW5ncyBvYmpcblxuICAgIHRoaXMuc2V0dGluZ3MgPSBuZXcgRGV2aWNlU2V0dGluZ3Moe2lnbm9yZVVuaW1wb3J0YW50Vmlld3M6IGZhbHNlLCBhbGxvd0ludmlzaWJsZUVsZW1lbnRzOiBmYWxzZX0sXG4gICAgICAgIHRoaXMub25TZXR0aW5nc1VwZGF0ZS5iaW5kKHRoaXMpKTtcbiAgICAvLyBoYW5kbGUgd2VidmlldyBtZWNoYW5pY3MgZnJvbSBBbmRyb2lkRHJpdmVyXG4gICAgdGhpcy5jaHJvbWVkcml2ZXIgPSBudWxsO1xuICAgIHRoaXMuc2Vzc2lvbkNocm9tZWRyaXZlcnMgPSB7fTtcblxuICAgIC8vIG1lbW9pemUgZnVuY3Rpb25zIGhlcmUsIHNvIHRoYXQgdGhleSBhcmUgZG9uZSBvbiBhIHBlci1pbnN0YW5jZSBiYXNpc1xuICAgIGZvciAoY29uc3QgZm4gb2YgTUVNT0laRURfRlVOQ1RJT05TKSB7XG4gICAgICB0aGlzW2ZuXSA9IF8ubWVtb2l6ZSh0aGlzW2ZuXSk7XG4gICAgfVxuICB9XG5cbiAgdmFsaWRhdGVEZXNpcmVkQ2FwcyAoY2Fwcykge1xuICAgIHJldHVybiBzdXBlci52YWxpZGF0ZURlc2lyZWRDYXBzKGNhcHMpICYmIGFuZHJvaWRIZWxwZXJzLnZhbGlkYXRlRGVzaXJlZENhcHMoY2Fwcyk7XG4gIH1cblxuICBhc3luYyBjcmVhdGVTZXNzaW9uICguLi5hcmdzKSB7XG4gICAgdHJ5IHtcbiAgICAgIC8vIFRPRE8gaGFuZGxlIG90aGVyU2Vzc2lvbkRhdGEgZm9yIG11bHRpcGxlIHNlc3Npb25zXG4gICAgICBsZXQgW3Nlc3Npb25JZCwgY2Fwc10gPSBhd2FpdCBzdXBlci5jcmVhdGVTZXNzaW9uKC4uLmFyZ3MpO1xuXG4gICAgICBsZXQgc2VydmVyRGV0YWlscyA9IHtcbiAgICAgICAgcGxhdGZvcm06ICdMSU5VWCcsXG4gICAgICAgIHdlYlN0b3JhZ2VFbmFibGVkOiBmYWxzZSxcbiAgICAgICAgdGFrZXNTY3JlZW5zaG90OiB0cnVlLFxuICAgICAgICBqYXZhc2NyaXB0RW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgZGF0YWJhc2VFbmFibGVkOiBmYWxzZSxcbiAgICAgICAgbmV0d29ya0Nvbm5lY3Rpb25FbmFibGVkOiB0cnVlLFxuICAgICAgICBsb2NhdGlvbkNvbnRleHRFbmFibGVkOiBmYWxzZSxcbiAgICAgICAgd2FybmluZ3M6IHt9LFxuICAgICAgICBkZXNpcmVkOiB0aGlzLmNhcHMsXG4gICAgICB9O1xuXG4gICAgICB0aGlzLmNhcHMgPSBPYmplY3QuYXNzaWduKHNlcnZlckRldGFpbHMsIHRoaXMuY2Fwcyk7XG5cbiAgICAgIHRoaXMuY3VyQ29udGV4dCA9IHRoaXMuZGVmYXVsdENvbnRleHROYW1lKCk7XG5cbiAgICAgIGxldCBkZWZhdWx0T3B0cyA9IHtcbiAgICAgICAgZnVsbFJlc2V0OiBmYWxzZSxcbiAgICAgICAgYXV0b0xhdW5jaDogdHJ1ZSxcbiAgICAgICAgYWRiUG9ydDogREVGQVVMVF9BREJfUE9SVCxcbiAgICAgICAgYW5kcm9pZEluc3RhbGxUaW1lb3V0OiA5MDAwMFxuICAgICAgfTtcbiAgICAgIF8uZGVmYXVsdHModGhpcy5vcHRzLCBkZWZhdWx0T3B0cyk7XG5cbiAgICAgIGlmICh0aGlzLmlzQ2hyb21lU2Vzc2lvbikge1xuICAgICAgICB0aGlzLmxvZy5pbmZvKFwiV2UncmUgZ29pbmcgdG8gcnVuIGEgQ2hyb21lLWJhc2VkIHNlc3Npb25cIik7XG4gICAgICAgIGxldCB7cGtnLCBhY3Rpdml0eX0gPSBoZWxwZXJzLmdldENocm9tZVBrZyh0aGlzLm9wdHMuYnJvd3Nlck5hbWUpO1xuICAgICAgICB0aGlzLm9wdHMuYXBwUGFja2FnZSA9IHRoaXMuY2Fwcy5hcHBQYWNrYWdlID0gcGtnO1xuICAgICAgICB0aGlzLm9wdHMuYXBwQWN0aXZpdHkgPSB0aGlzLmNhcHMuYXBwQWN0aXZpdHkgPSBhY3Rpdml0eTtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgQ2hyb21lLXR5cGUgcGFja2FnZSBhbmQgYWN0aXZpdHkgYXJlICR7cGtnfSBhbmQgJHthY3Rpdml0eX1gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMub3B0cy5yZWJvb3QpIHtcbiAgICAgICAgdGhpcy5zZXRBdmRGcm9tQ2FwYWJpbGl0aWVzKGNhcHMpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5vcHRzLmFwcCkge1xuICAgICAgICAvLyBmaW5kIGFuZCBjb3B5LCBvciBkb3dubG9hZCBhbmQgdW56aXAgYW4gYXBwIHVybCBvciBwYXRoXG4gICAgICAgIHRoaXMub3B0cy5hcHAgPSBhd2FpdCB0aGlzLmhlbHBlcnMuY29uZmlndXJlQXBwKHRoaXMub3B0cy5hcHAsIFtBUEtfRVhURU5TSU9OLCBBUEtTX0VYVEVOU0lPTl0pO1xuICAgICAgICBhd2FpdCB0aGlzLmNoZWNrQXBwUHJlc2VudCgpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLm9wdHMuYXBwUGFja2FnZSkge1xuICAgICAgICAvLyB0aGUgYXBwIGlzbid0IGFuIGFjdHVhbCBhcHAgZmlsZSBidXQgcmF0aGVyIHNvbWV0aGluZyB3ZSB3YW50IHRvXG4gICAgICAgIC8vIGFzc3VtZSBpcyBvbiB0aGUgZGV2aWNlIGFuZCBqdXN0IGxhdW5jaCB2aWEgdGhlIGFwcFBhY2thZ2VcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgU3RhcnRpbmcgJyR7dGhpcy5vcHRzLmFwcFBhY2thZ2V9JyBkaXJlY3RseSBvbiB0aGUgZGV2aWNlYCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvZy5pbmZvKGBOZWl0aGVyICdhcHAnIG5vciAnYXBwUGFja2FnZScgd2FzIHNldC4gU3RhcnRpbmcgVWlBdXRvbWF0b3IyIGAgK1xuICAgICAgICAgICd3aXRob3V0IHRoZSB0YXJnZXQgYXBwbGljYXRpb24nKTtcbiAgICAgIH1cbiAgICAgIHRoaXMub3B0cy5hZGJQb3J0ID0gdGhpcy5vcHRzLmFkYlBvcnQgfHwgREVGQVVMVF9BREJfUE9SVDtcblxuICAgICAgYXdhaXQgdGhpcy5zdGFydFVpQXV0b21hdG9yMlNlc3Npb24oKTtcbiAgICAgIGF3YWl0IHRoaXMuZmlsbERldmljZURldGFpbHMoKTtcbiAgICAgIGlmICh0aGlzLm9wdHMubWpwZWdTY3JlZW5zaG90VXJsKSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oYFN0YXJ0aW5nIE1KUEVHIHN0cmVhbSByZWFkaW5nIFVSTDogJyR7dGhpcy5vcHRzLm1qcGVnU2NyZWVuc2hvdFVybH0nYCk7XG4gICAgICAgIHRoaXMubWpwZWdTdHJlYW0gPSBuZXcgbWpwZWcuTUpwZWdTdHJlYW0odGhpcy5vcHRzLm1qcGVnU2NyZWVuc2hvdFVybCk7XG4gICAgICAgIGF3YWl0IHRoaXMubWpwZWdTdHJlYW0uc3RhcnQoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBbc2Vzc2lvbklkLCB0aGlzLmNhcHNdO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGF3YWl0IHRoaXMuZGVsZXRlU2Vzc2lvbigpO1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBmaWxsRGV2aWNlRGV0YWlscyAoKSB7XG4gICAgdGhpcy5jYXBzLnBpeGVsUmF0aW8gPSBhd2FpdCB0aGlzLmdldERldmljZVBpeGVsUmF0aW8oKTtcbiAgICB0aGlzLmNhcHMuc3RhdEJhckhlaWdodCA9IGF3YWl0IHRoaXMuZ2V0U3RhdHVzQmFySGVpZ2h0KCk7XG4gICAgdGhpcy5jYXBzLnZpZXdwb3J0UmVjdCA9IGF3YWl0IHRoaXMuZ2V0Vmlld1BvcnRSZWN0KCk7XG4gIH1cblxuICBnZXQgZHJpdmVyRGF0YSAoKSB7XG4gICAgLy8gVE9ETyBmaWxsIG91dCByZXNvdXJjZSBpbmZvIGhlcmVcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBhc3luYyBnZXRTZXNzaW9uICgpIHtcbiAgICBsZXQgc2Vzc2lvbkRhdGEgPSBhd2FpdCBzdXBlci5nZXRTZXNzaW9uKCk7XG4gICAgdGhpcy5sb2cuZGVidWcoJ0dldHRpbmcgc2Vzc2lvbiBkZXRhaWxzIGZyb20gc2VydmVyIHRvIG1peCBpbicpO1xuICAgIGxldCB1aWEyRGF0YSA9IGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmp3cHJveHkuY29tbWFuZCgnLycsICdHRVQnLCB7fSk7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe30sIHNlc3Npb25EYXRhLCB1aWEyRGF0YSk7XG4gIH1cblxuICBpc0VtdWxhdG9yICgpIHtcbiAgICByZXR1cm4gaGVscGVycy5pc0VtdWxhdG9yKHRoaXMuYWRiLCB0aGlzLm9wdHMpO1xuICB9XG5cbiAgc2V0QXZkRnJvbUNhcGFiaWxpdGllcyAoY2Fwcykge1xuICAgIGlmICh0aGlzLm9wdHMuYXZkKSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKCdhdmQgbmFtZSBkZWZpbmVkLCBpZ25vcmluZyBkZXZpY2UgbmFtZSBhbmQgcGxhdGZvcm0gdmVyc2lvbicpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoIWNhcHMuZGV2aWNlTmFtZSkge1xuICAgICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KCdhdmQgb3IgZGV2aWNlTmFtZSBzaG91bGQgYmUgc3BlY2lmaWVkIHdoZW4gcmVib290IG9wdGlvbiBpcyBlbmFibGVzJyk7XG4gICAgICB9XG4gICAgICBpZiAoIWNhcHMucGxhdGZvcm1WZXJzaW9uKSB7XG4gICAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coJ2F2ZCBvciBwbGF0Zm9ybVZlcnNpb24gc2hvdWxkIGJlIHNwZWNpZmllZCB3aGVuIHJlYm9vdCBvcHRpb24gaXMgZW5hYmxlZCcpO1xuICAgICAgfVxuICAgICAgbGV0IGF2ZERldmljZSA9IGNhcHMuZGV2aWNlTmFtZS5yZXBsYWNlKC9bXmEtekEtWjAtOV8uXS9nLCAnLScpO1xuICAgICAgdGhpcy5vcHRzLmF2ZCA9IGAke2F2ZERldmljZX1fXyR7Y2Fwcy5wbGF0Zm9ybVZlcnNpb259YDtcbiAgICB9XG4gIH1cblxuICBhc3luYyBhbGxvY2F0ZVN5c3RlbVBvcnQgKCkge1xuICAgIGNvbnN0IGZvcndhcmRQb3J0ID0gYXN5bmMgKGxvY2FsUG9ydCkgPT4ge1xuICAgICAgdGhpcy5sb2cuZGVidWcoYEZvcndhcmRpbmcgVWlBdXRvbWF0b3IyIFNlcnZlciBwb3J0ICR7REVWSUNFX1BPUlR9IHRvIGxvY2FsIHBvcnQgJHtsb2NhbFBvcnR9YCk7XG4gICAgICBpZiAoKGF3YWl0IGNoZWNrUG9ydFN0YXR1cyhsb2NhbFBvcnQsIExPQ0FMSE9TVF9JUDQpKSA9PT0gJ29wZW4nKSB7XG4gICAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYFVpQXV0b21hdG9yMiBTZXJ2ZXIgY2Fubm90IHN0YXJ0IGJlY2F1c2UgdGhlIGxvY2FsIHBvcnQgIyR7bG9jYWxQb3J0fSBpcyBidXN5LiBgICtcbiAgICAgICAgICBgTWFrZSBzdXJlIHRoZSBwb3J0IHlvdSBwcm92aWRlIHZpYSAnc3lzdGVtUG9ydCcgY2FwYWJpbGl0eSBpcyBub3Qgb2NjdXBpZWQuIGAgK1xuICAgICAgICAgIGBUaGlzIHNpdHVhdGlvbiBtaWdodCBvZnRlbiBiZSBhIHJlc3VsdCBvZiBhbiBpbmFjY3VyYXRlIHNlc3Npb25zIG1hbmFnZW1lbnQsIGUuZy4gYCArXG4gICAgICAgICAgYG9sZCBhdXRvbWF0aW9uIHNlc3Npb25zIG9uIHRoZSBzYW1lIGRldmljZSBtdXN0IGFsd2F5cyBiZSBjbG9zZWQgYmVmb3JlIHN0YXJ0aW5nIG5ldyBvbmVzLmApO1xuICAgICAgfVxuICAgICAgYXdhaXQgdGhpcy5hZGIuZm9yd2FyZFBvcnQobG9jYWxQb3J0LCBERVZJQ0VfUE9SVCk7XG4gICAgfTtcblxuICAgIGlmICh0aGlzLm9wdHMuc3lzdGVtUG9ydCkge1xuICAgICAgdGhpcy5faGFzU3lzdGVtUG9ydEluQ2FwcyA9IHRydWU7XG4gICAgICByZXR1cm4gYXdhaXQgZm9yd2FyZFBvcnQodGhpcy5vcHRzLnN5c3RlbVBvcnQpO1xuICAgIH1cblxuICAgIGF3YWl0IERFVklDRV9QT1JUX0FMTE9DQVRJT05fR1VBUkQoYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgW3N0YXJ0UG9ydCwgZW5kUG9ydF0gPSBERVZJQ0VfUE9SVF9SQU5HRTtcbiAgICAgIHRyeSB7XG4gICAgICAgIHRoaXMub3B0cy5zeXN0ZW1Qb3J0ID0gYXdhaXQgZmluZEFQb3J0Tm90SW5Vc2Uoc3RhcnRQb3J0LCBlbmRQb3J0KTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhcbiAgICAgICAgICBgQ2Fubm90IGZpbmQgYW55IGZyZWUgcG9ydCBpbiByYW5nZSAke3N0YXJ0UG9ydH0uLiR7ZW5kUG9ydH19LiBgICtcbiAgICAgICAgICBgUGxlYXNlIHNldCB0aGUgYXZhaWxhYmxlIHBvcnQgbnVtYmVyIGJ5IHByb3ZpZGluZyB0aGUgc3lzdGVtUG9ydCBjYXBhYmlsaXR5IG9yIGAgK1xuICAgICAgICAgIGBkb3VibGUgY2hlY2sgdGhlIHByb2Nlc3NlcyB0aGF0IGFyZSBsb2NraW5nIHBvcnRzIHdpdGhpbiB0aGlzIHJhbmdlIGFuZCB0ZXJtaW5hdGUgYCArXG4gICAgICAgICAgYHRoZXNlIHdoaWNoIGFyZSBub3QgbmVlZGVkIGFueW1vcmVgKTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IGZvcndhcmRQb3J0KHRoaXMub3B0cy5zeXN0ZW1Qb3J0KTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHJlbGVhc2VTeXN0ZW1Qb3J0ICgpIHtcbiAgICBpZiAoIXRoaXMub3B0cy5zeXN0ZW1Qb3J0IHx8ICF0aGlzLmFkYikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9oYXNTeXN0ZW1Qb3J0SW5DYXBzKSB7XG4gICAgICBhd2FpdCB0aGlzLmFkYi5yZW1vdmVQb3J0Rm9yd2FyZCh0aGlzLm9wdHMuc3lzdGVtUG9ydCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IERFVklDRV9QT1JUX0FMTE9DQVRJT05fR1VBUkQoYXN5bmMgKCkgPT4gYXdhaXQgdGhpcy5hZGIucmVtb3ZlUG9ydEZvcndhcmQodGhpcy5vcHRzLnN5c3RlbVBvcnQpKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBhbGxvY2F0ZU1qcGVnU2VydmVyUG9ydCAoKSB7XG4gICAgaWYgKHRoaXMub3B0cy5tanBlZ1NlcnZlclBvcnQpIHtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLmZvcndhcmRQb3J0KHRoaXMub3B0cy5tanBlZ1NlcnZlclBvcnQsIE1KUEVHX1NFUlZFUl9ERVZJQ0VfUE9SVCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcmVsZWFzZU1qcGVnU2VydmVyUG9ydCAoKSB7XG4gICAgaWYgKHRoaXMub3B0cy5tanBlZ1NlcnZlclBvcnQpIHtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnJlbW92ZVBvcnRGb3J3YXJkKHRoaXMub3B0cy5tanBlZ1NlcnZlclBvcnQpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHN0YXJ0VWlBdXRvbWF0b3IyU2Vzc2lvbiAoKSB7XG4gICAgLy8gZ2V0IGRldmljZSB1ZGlkIGZvciB0aGlzIHNlc3Npb25cbiAgICBsZXQge3VkaWQsIGVtUG9ydH0gPSBhd2FpdCBoZWxwZXJzLmdldERldmljZUluZm9Gcm9tQ2Fwcyh0aGlzLm9wdHMpO1xuICAgIHRoaXMub3B0cy51ZGlkID0gdWRpZDtcbiAgICB0aGlzLm9wdHMuZW1Qb3J0ID0gZW1Qb3J0O1xuXG4gICAgLy8gbm93IHRoYXQgd2Uga25vdyBvdXIgamF2YSB2ZXJzaW9uIGFuZCBkZXZpY2UgaW5mbywgd2UgY2FuIGNyZWF0ZSBvdXJcbiAgICAvLyBBREIgaW5zdGFuY2VcbiAgICB0aGlzLmFkYiA9IGF3YWl0IGFuZHJvaWRIZWxwZXJzLmNyZWF0ZUFEQih0aGlzLm9wdHMpO1xuXG4gICAgY29uc3QgYXBpTGV2ZWwgPSBhd2FpdCB0aGlzLmFkYi5nZXRBcGlMZXZlbCgpO1xuXG4gICAgaWYgKGFwaUxldmVsIDwgMjEpIHtcbiAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coJ1VJQXV0b21hdG9yMiBpcyBvbmx5IHN1cHBvcnRlZCBzaW5jZSBBbmRyb2lkIDUuMCAoTG9sbGlwb3ApLiAnICtcbiAgICAgICAgJ1lvdSBjb3VsZCBzdGlsbCB1c2Ugb3RoZXIgc3VwcG9ydGVkIGJhY2tlbmRzIGluIG9yZGVyIHRvIGF1dG9tYXRlIG9sZGVyIEFuZHJvaWQgdmVyc2lvbnMuJyk7XG4gICAgfVxuXG4gICAgaWYgKGFwaUxldmVsID49IDI4KSB7IC8vIEFuZHJvaWQgUFxuICAgICAgdGhpcy5sb2cuaW5mbygnUmVsYXhpbmcgaGlkZGVuIGFwaSBwb2xpY3knKTtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnNldEhpZGRlbkFwaVBvbGljeSgnMScsICEhdGhpcy5vcHRzLmlnbm9yZUhpZGRlbkFwaVBvbGljeUVycm9yKTtcbiAgICB9XG5cbiAgICAvLyBjaGVjayBpZiB3ZSBoYXZlIHRvIGVuYWJsZS9kaXNhYmxlIGdwcyBiZWZvcmUgcnVubmluZyB0aGUgYXBwbGljYXRpb25cbiAgICBpZiAodXRpbC5oYXNWYWx1ZSh0aGlzLm9wdHMuZ3BzRW5hYmxlZCkpIHtcbiAgICAgIGlmICh0aGlzLmlzRW11bGF0b3IoKSkge1xuICAgICAgICB0aGlzLmxvZy5pbmZvKGBUcnlpbmcgdG8gJHt0aGlzLm9wdHMuZ3BzRW5hYmxlZCA/ICdlbmFibGUnIDogJ2Rpc2FibGUnfSBncHMgbG9jYXRpb24gcHJvdmlkZXJgKTtcbiAgICAgICAgYXdhaXQgdGhpcy5hZGIudG9nZ2xlR1BTTG9jYXRpb25Qcm92aWRlcih0aGlzLm9wdHMuZ3BzRW5hYmxlZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvZy53YXJuKGBTb3JyeSEgJ2dwc0VuYWJsZWQnIGNhcGFiaWxpdHkgaXMgb25seSBhdmFpbGFibGUgZm9yIGVtdWxhdG9yc2ApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIGdldCBhcHBQYWNrYWdlIGV0IGFsIGZyb20gbWFuaWZlc3QgaWYgbmVjZXNzYXJ5XG4gICAgY29uc3QgYXBwSW5mbyA9IGF3YWl0IGhlbHBlcnMuZ2V0TGF1bmNoSW5mbyh0aGlzLmFkYiwgdGhpcy5vcHRzKTtcbiAgICAvLyBhbmQgZ2V0IGl0IG9udG8gb3VyICdvcHRzJyBvYmplY3Qgc28gd2UgdXNlIGl0IGZyb20gbm93IG9uXG4gICAgT2JqZWN0LmFzc2lnbih0aGlzLm9wdHMsIGFwcEluZm8gfHwge30pO1xuXG4gICAgLy8gc2V0IGFjdHVhbCBkZXZpY2UgbmFtZSwgdWRpZCwgcGxhdGZvcm0gdmVyc2lvbiwgc2NyZWVuIHNpemUsIHNjcmVlbiBkZW5zaXR5LCBtb2RlbCBhbmQgbWFudWZhY3R1cmVyIGRldGFpbHNcbiAgICB0aGlzLmNhcHMuZGV2aWNlTmFtZSA9IHRoaXMuYWRiLmN1ckRldmljZUlkO1xuICAgIHRoaXMuY2Fwcy5kZXZpY2VVRElEID0gdGhpcy5vcHRzLnVkaWQ7XG5cbiAgICAvLyBzdGFydCBhbiBhdmQsIHNldCB0aGUgbGFuZ3VhZ2UvbG9jYWxlLCBwaWNrIGFuIGVtdWxhdG9yLCBldGMuLi5cbiAgICAvLyBUT0RPIHdpdGggbXVsdGlwbGUgZGV2aWNlcyB3ZSdsbCBuZWVkIHRvIHBhcmFtZXRlcml6ZSB0aGlzXG4gICAgdGhpcy5kZWZhdWx0SU1FID0gYXdhaXQgaGVscGVycy5pbml0RGV2aWNlKHRoaXMuYWRiLCB0aGlzLm9wdHMpO1xuXG4gICAgLy8gUHJlcGFyZSB0aGUgZGV2aWNlIGJ5IGZvcndhcmRpbmcgdGhlIFVpQXV0b21hdG9yMiBwb3J0XG4gICAgLy8gVGhpcyBjYWxsIG11dGF0ZXMgdGhpcy5vcHRzLnN5c3RlbVBvcnQgaWYgaXQgaXMgbm90IHNldCBleHBsaWNpdGx5XG4gICAgYXdhaXQgdGhpcy5hbGxvY2F0ZVN5c3RlbVBvcnQoKTtcblxuICAgIC8vIFByZXBhcmUgdGhlIGRldmljZSBieSBmb3J3YXJkaW5nIHRoZSBVaUF1dG9tYXRvcjIgTUpQRUcgc2VydmVyIHBvcnQgKGlmXG4gICAgLy8gYXBwbGljYWJsZSlcbiAgICBhd2FpdCB0aGlzLmFsbG9jYXRlTWpwZWdTZXJ2ZXJQb3J0KCk7XG5cbiAgICAvLyBzZXQgdXAgdGhlIG1vZGlmaWVkIFVpQXV0b21hdG9yMiBzZXJ2ZXIgZXRjXG4gICAgYXdhaXQgdGhpcy5pbml0VWlBdXRvbWF0b3IyU2VydmVyKCk7XG5cbiAgICAvLyBTaG91bGQgYmUgYWZ0ZXIgaW5zdGFsbGluZyBpby5hcHBpdW0uc2V0dGluZ3MgaW4gaGVscGVycy5pbml0RGV2aWNlXG4gICAgaWYgKHRoaXMub3B0cy5kaXNhYmxlV2luZG93QW5pbWF0aW9uICYmIChhd2FpdCB0aGlzLmFkYi5nZXRBcGlMZXZlbCgpIDwgMjYpKSB7IC8vIEFQSSBsZXZlbCAyNiBpcyBBbmRyb2lkIDguMC5cbiAgICAgIC8vIEdyYW50aW5nIGFuZHJvaWQucGVybWlzc2lvbi5TRVRfQU5JTUFUSU9OX1NDQUxFIGlzIG5lY2Vzc2FyeSB0byBoYW5kbGUgYW5pbWF0aW9ucyB1bmRlciBBUEkgbGV2ZWwgMjZcbiAgICAgIC8vIFJlYWQgaHR0cHM6Ly9naXRodWIuY29tL2FwcGl1bS9hcHBpdW0vcHVsbC8xMTY0MCNpc3N1ZWNvbW1lbnQtNDM4MjYwNDc3XG4gICAgICAvLyBgLS1uby13aW5kb3ctYW5pbWF0aW9uYCB3b3JrcyBvdmVyIEFuZHJvaWQgOCB0byBkaXNhYmxlIGFsbCBvZiBhbmltYXRpb25zXG4gICAgICBpZiAoYXdhaXQgdGhpcy5hZGIuaXNBbmltYXRpb25PbigpKSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oJ0Rpc2FibGluZyBhbmltYXRpb24gdmlhIGlvLmFwcGl1bS5zZXR0aW5ncycpO1xuICAgICAgICBhd2FpdCB0aGlzLmFkYi5zZXRBbmltYXRpb25TdGF0ZShmYWxzZSk7XG4gICAgICAgIHRoaXMuX3dhc1dpbmRvd0FuaW1hdGlvbkRpc2FibGVkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oJ1dpbmRvdyBhbmltYXRpb24gaXMgYWxyZWFkeSBkaXNhYmxlZCcpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIHNldCB1cCBhcHAgdW5kZXIgdGVzdFxuICAgIC8vIHByZXBhcmUgb3VyIGFjdHVhbCBBVVQsIGdldCBpdCBvbiB0aGUgZGV2aWNlLCBldGMuLi5cbiAgICBhd2FpdCB0aGlzLmluaXRBVVQoKTtcblxuICAgIC8vIEFkZGluZyBBVVQgcGFja2FnZSBuYW1lIGluIHRoZSBjYXBhYmlsaXRpZXMgaWYgcGFja2FnZSBuYW1lIG5vdCBleGlzdCBpbiBjYXBzXG4gICAgaWYgKCF0aGlzLmNhcHMuYXBwUGFja2FnZSAmJiBhcHBJbmZvKSB7XG4gICAgICB0aGlzLmNhcHMuYXBwUGFja2FnZSA9IGFwcEluZm8uYXBwUGFja2FnZTtcbiAgICB9XG5cbiAgICAvLyBsYXVuY2ggVWlBdXRvbWF0b3IyIGFuZCB3YWl0IHRpbGwgaXRzIG9ubGluZSBhbmQgd2UgaGF2ZSBhIHNlc3Npb25cbiAgICBhd2FpdCB0aGlzLnVpYXV0b21hdG9yMi5zdGFydFNlc3Npb24odGhpcy5jYXBzKTtcblxuICAgIGF3YWl0IHRoaXMuYWRkRGV2aWNlSW5mb1RvQ2FwcygpO1xuXG4gICAgLy8gVW5sb2NrIHRoZSBkZXZpY2UgYWZ0ZXIgdGhlIHNlc3Npb24gaXMgc3RhcnRlZC5cbiAgICBpZiAoIXRoaXMub3B0cy5za2lwVW5sb2NrKSB7XG4gICAgICAvLyB1bmxvY2sgdGhlIGRldmljZSB0byBwcmVwYXJlIGl0IGZvciB0ZXN0aW5nXG4gICAgICBhd2FpdCBoZWxwZXJzLnVubG9jayh0aGlzLCB0aGlzLmFkYiwgdGhpcy5jYXBzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2cuZGVidWcoYCdza2lwVW5sb2NrJyBjYXBhYmlsaXR5IHNldCwgc28gc2tpcHBpbmcgZGV2aWNlIHVubG9ja2ApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzQ2hyb21lU2Vzc2lvbikgeyAvLyBzdGFydCBhIGNocm9tZWRyaXZlciBzZXNzaW9uXG4gICAgICBhd2FpdCB0aGlzLnN0YXJ0Q2hyb21lU2Vzc2lvbih0aGlzKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMub3B0cy5hdXRvTGF1bmNoICYmIHRoaXMub3B0cy5hcHBQYWNrYWdlKSB7XG4gICAgICBhd2FpdCB0aGlzLmVuc3VyZUFwcFN0YXJ0cygpO1xuICAgIH1cblxuICAgIC8vIGlmIHRoZSBpbml0aWFsIG9yaWVudGF0aW9uIGlzIHJlcXVlc3RlZCwgc2V0IGl0XG4gICAgaWYgKHV0aWwuaGFzVmFsdWUodGhpcy5vcHRzLm9yaWVudGF0aW9uKSkge1xuICAgICAgdGhpcy5sb2cuZGVidWcoYFNldHRpbmcgaW5pdGlhbCBvcmllbnRhdGlvbiB0byAnJHt0aGlzLm9wdHMub3JpZW50YXRpb259J2ApO1xuICAgICAgYXdhaXQgdGhpcy5zZXRPcmllbnRhdGlvbih0aGlzLm9wdHMub3JpZW50YXRpb24pO1xuICAgIH1cblxuICAgIC8vIGlmIHdlIHdhbnQgdG8gaW1tZWRpYXRlbHkgZ2V0IGludG8gYSB3ZWJ2aWV3LCBzZXQgb3VyIGNvbnRleHRcbiAgICAvLyBhcHByb3ByaWF0ZWx5XG4gICAgaWYgKHRoaXMub3B0cy5hdXRvV2Vidmlldykge1xuICAgICAgY29uc3Qgdmlld05hbWUgPSB0aGlzLmRlZmF1bHRXZWJ2aWV3TmFtZSgpO1xuICAgICAgY29uc3QgdGltZW91dCA9IHRoaXMub3B0cy5hdXRvV2Vidmlld1RpbWVvdXQgfHwgMjAwMDtcbiAgICAgIHRoaXMubG9nLmluZm8oYFNldHRpbmcgYXV0byB3ZWJ2aWV3IHRvIGNvbnRleHQgJyR7dmlld05hbWV9JyB3aXRoIHRpbWVvdXQgJHt0aW1lb3V0fW1zYCk7XG4gICAgICBhd2FpdCByZXRyeUludGVydmFsKHRpbWVvdXQgLyA1MDAsIDUwMCwgdGhpcy5zZXRDb250ZXh0LmJpbmQodGhpcyksIHZpZXdOYW1lKTtcbiAgICB9XG5cbiAgICAvLyBub3cgdGhhdCBldmVyeXRoaW5nIGhhcyBzdGFydGVkIHN1Y2Nlc3NmdWxseSwgdHVybiBvbiBwcm94eWluZyBzbyBhbGxcbiAgICAvLyBzdWJzZXF1ZW50IHNlc3Npb24gcmVxdWVzdHMgZ28gc3RyYWlnaHQgdG8vZnJvbSB1aWF1dG9tYXRvcjJcbiAgICB0aGlzLmp3cFByb3h5QWN0aXZlID0gdHJ1ZTtcbiAgfVxuXG4gIGFzeW5jIGFkZERldmljZUluZm9Ub0NhcHMgKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGFwaVZlcnNpb24sXG4gICAgICBwbGF0Zm9ybVZlcnNpb24sXG4gICAgICBtYW51ZmFjdHVyZXIsXG4gICAgICBtb2RlbCxcbiAgICAgIHJlYWxEaXNwbGF5U2l6ZSxcbiAgICAgIGRpc3BsYXlEZW5zaXR5LFxuICAgIH0gPSBhd2FpdCB0aGlzLm1vYmlsZUdldERldmljZUluZm8oKTtcbiAgICB0aGlzLmNhcHMuZGV2aWNlQXBpTGV2ZWwgPSBwYXJzZUludChhcGlWZXJzaW9uLCAxMCk7XG4gICAgdGhpcy5jYXBzLnBsYXRmb3JtVmVyc2lvbiA9IHBsYXRmb3JtVmVyc2lvbjtcbiAgICB0aGlzLmNhcHMuZGV2aWNlU2NyZWVuU2l6ZSA9IHJlYWxEaXNwbGF5U2l6ZTtcbiAgICB0aGlzLmNhcHMuZGV2aWNlU2NyZWVuRGVuc2l0eSA9IGRpc3BsYXlEZW5zaXR5O1xuICAgIHRoaXMuY2Fwcy5kZXZpY2VNb2RlbCA9IG1vZGVsO1xuICAgIHRoaXMuY2Fwcy5kZXZpY2VNYW51ZmFjdHVyZXIgPSBtYW51ZmFjdHVyZXI7XG4gIH1cblxuICBhc3luYyBpbml0VWlBdXRvbWF0b3IyU2VydmVyICgpIHtcbiAgICAvLyBicm9rZW4gb3V0IGZvciByZWFkYWJpbGl0eVxuICAgIGNvbnN0IHVpYXV0b21hdG9yMk9wdHMgPSB7XG4gICAgICBob3N0OiB0aGlzLm9wdHMucmVtb3RlQWRiSG9zdCB8fCB0aGlzLm9wdHMuaG9zdCB8fCBMT0NBTEhPU1RfSVA0LFxuICAgICAgc3lzdGVtUG9ydDogdGhpcy5vcHRzLnN5c3RlbVBvcnQsXG4gICAgICBkZXZpY2VQb3J0OiBERVZJQ0VfUE9SVCxcbiAgICAgIGFkYjogdGhpcy5hZGIsXG4gICAgICBhcGs6IHRoaXMub3B0cy5hcHAsXG4gICAgICB0bXBEaXI6IHRoaXMub3B0cy50bXBEaXIsXG4gICAgICBhcHBQYWNrYWdlOiB0aGlzLm9wdHMuYXBwUGFja2FnZSxcbiAgICAgIGFwcEFjdGl2aXR5OiB0aGlzLm9wdHMuYXBwQWN0aXZpdHksXG4gICAgICBkaXNhYmxlV2luZG93QW5pbWF0aW9uOiAhIXRoaXMub3B0cy5kaXNhYmxlV2luZG93QW5pbWF0aW9uLFxuICAgICAgZGlzYWJsZVN1cHByZXNzQWNjZXNzaWJpbGl0eVNlcnZpY2U6IHRoaXMub3B0cy5kaXNhYmxlU3VwcHJlc3NBY2Nlc3NpYmlsaXR5U2VydmljZSxcbiAgICAgIHJlYWRUaW1lb3V0OiB0aGlzLm9wdHMudWlhdXRvbWF0b3IyU2VydmVyUmVhZFRpbWVvdXQsXG4gICAgfTtcbiAgICAvLyBub3cgdGhhdCB3ZSBoYXZlIHBhY2thZ2UgYW5kIGFjdGl2aXR5LCB3ZSBjYW4gY3JlYXRlIGFuIGluc3RhbmNlIG9mXG4gICAgLy8gdWlhdXRvbWF0b3IyIHdpdGggdGhlIGFwcHJvcHJpYXRlIG9wdGlvbnNcbiAgICB0aGlzLnVpYXV0b21hdG9yMiA9IG5ldyBVaUF1dG9tYXRvcjJTZXJ2ZXIodGhpcy5sb2csIHVpYXV0b21hdG9yMk9wdHMpO1xuICAgIHRoaXMucHJveHlSZXFSZXMgPSB0aGlzLnVpYXV0b21hdG9yMi5wcm94eVJlcVJlcy5iaW5kKHRoaXMudWlhdXRvbWF0b3IyKTtcbiAgICB0aGlzLnByb3h5Q29tbWFuZCA9IHRoaXMudWlhdXRvbWF0b3IyLnByb3h5Q29tbWFuZC5iaW5kKHRoaXMudWlhdXRvbWF0b3IyKTtcblxuICAgIGlmICh0aGlzLm9wdHMuc2tpcFNlcnZlckluc3RhbGxhdGlvbikge1xuICAgICAgdGhpcy5sb2cuaW5mbyhgJ3NraXBTZXJ2ZXJJbnN0YWxsYXRpb24nIGlzIHNldC4gU2tpcHBpbmcgVUlBdXRvbWF0b3IyIHNlcnZlciBpbnN0YWxsYXRpb24uYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHRoaXMudWlhdXRvbWF0b3IyLmluc3RhbGxTZXJ2ZXJBcGsodGhpcy5vcHRzLnVpYXV0b21hdG9yMlNlcnZlckluc3RhbGxUaW1lb3V0KTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLmFkZFRvRGV2aWNlSWRsZVdoaXRlbGlzdChcbiAgICAgICAgICBTRVRUSU5HU19IRUxQRVJfUEtHX0lELCBTRVJWRVJfUEFDS0FHRV9JRCwgU0VSVkVSX1RFU1RfUEFDS0FHRV9JRCxcbiAgICAgICAgKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgdGhpcy5sb2cud2FybihgQ2Fubm90IGFkZCBzZXJ2ZXIgcGFja2FnZXMgdG8gdGhlIERvemUgd2hpdGVsaXN0LiBPcmlnaW5hbCBlcnJvcjogYCArXG4gICAgICAgICAgKGUuc3RkZXJyIHx8IGUubWVzc2FnZSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGluaXRBVVQgKCkge1xuICAgIC8vIFVuaW5zdGFsbCBhbnkgdW5pbnN0YWxsT3RoZXJQYWNrYWdlcyB3aGljaCB3ZXJlIHNwZWNpZmllZCBpbiBjYXBzXG4gICAgaWYgKHRoaXMub3B0cy51bmluc3RhbGxPdGhlclBhY2thZ2VzKSB7XG4gICAgICBhd2FpdCBoZWxwZXJzLnVuaW5zdGFsbE90aGVyUGFja2FnZXMoXG4gICAgICAgIHRoaXMuYWRiLFxuICAgICAgICBoZWxwZXJzLnBhcnNlQXJyYXkodGhpcy5vcHRzLnVuaW5zdGFsbE90aGVyUGFja2FnZXMpLFxuICAgICAgICBbU0VUVElOR1NfSEVMUEVSX1BLR19JRCwgU0VSVkVSX1BBQ0tBR0VfSUQsIFNFUlZFUl9URVNUX1BBQ0tBR0VfSURdXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIEluc3RhbGwgYW55IFwib3RoZXJBcHBzXCIgdGhhdCB3ZXJlIHNwZWNpZmllZCBpbiBjYXBzXG4gICAgaWYgKHRoaXMub3B0cy5vdGhlckFwcHMpIHtcbiAgICAgIGxldCBvdGhlckFwcHM7XG4gICAgICB0cnkge1xuICAgICAgICBvdGhlckFwcHMgPSBoZWxwZXJzLnBhcnNlQXJyYXkodGhpcy5vcHRzLm90aGVyQXBwcyk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYENvdWxkIG5vdCBwYXJzZSBcIm90aGVyQXBwc1wiIGNhcGFiaWxpdHk6ICR7ZS5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgICAgb3RoZXJBcHBzID0gYXdhaXQgQi5hbGwob3RoZXJBcHBzXG4gICAgICAgIC5tYXAoKGFwcCkgPT4gdGhpcy5oZWxwZXJzLmNvbmZpZ3VyZUFwcChhcHAsIFtBUEtfRVhURU5TSU9OLCBBUEtTX0VYVEVOU0lPTl0pKSk7XG4gICAgICBhd2FpdCBoZWxwZXJzLmluc3RhbGxPdGhlckFwa3Mob3RoZXJBcHBzLCB0aGlzLmFkYiwgdGhpcy5vcHRzKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRzLmFwcCkge1xuICAgICAgaWYgKHRoaXMub3B0cy5ub1Jlc2V0ICYmICEoYXdhaXQgdGhpcy5hZGIuaXNBcHBJbnN0YWxsZWQodGhpcy5vcHRzLmFwcFBhY2thZ2UpKVxuICAgICAgICAgIHx8ICF0aGlzLm9wdHMubm9SZXNldCkge1xuICAgICAgICBpZiAoIXRoaXMub3B0cy5ub1NpZ24gJiYgIWF3YWl0IHRoaXMuYWRiLmNoZWNrQXBrQ2VydCh0aGlzLm9wdHMuYXBwLCB0aGlzLm9wdHMuYXBwUGFja2FnZSwge1xuICAgICAgICAgIHJlcXVpcmVEZWZhdWx0Q2VydDogZmFsc2UsXG4gICAgICAgIH0pKSB7XG4gICAgICAgICAgYXdhaXQgaGVscGVycy5zaWduQXBwKHRoaXMuYWRiLCB0aGlzLm9wdHMuYXBwKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIXRoaXMub3B0cy5za2lwVW5pbnN0YWxsKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5hZGIudW5pbnN0YWxsQXBrKHRoaXMub3B0cy5hcHBQYWNrYWdlKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBoZWxwZXJzLmluc3RhbGxBcGsodGhpcy5hZGIsIHRoaXMub3B0cyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvZy5kZWJ1Zygnbm9SZXNldCBoYXMgYmVlbiByZXF1ZXN0ZWQgYW5kIHRoZSBhcHAgaXMgYWxyZWFkeSBpbnN0YWxsZWQuIERvaW5nIG5vdGhpbmcnKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMub3B0cy5mdWxsUmVzZXQpIHtcbiAgICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdygnRnVsbCByZXNldCByZXF1aXJlcyBhbiBhcHAgY2FwYWJpbGl0eSwgdXNlIGZhc3RSZXNldCBpZiBhcHAgaXMgbm90IHByb3ZpZGVkJyk7XG4gICAgICB9XG4gICAgICB0aGlzLmxvZy5kZWJ1ZygnTm8gYXBwIGNhcGFiaWxpdHkuIEFzc3VtaW5nIGl0IGlzIGFscmVhZHkgb24gdGhlIGRldmljZScpO1xuICAgICAgaWYgKHRoaXMub3B0cy5mYXN0UmVzZXQgJiYgdGhpcy5vcHRzLmFwcFBhY2thZ2UpIHtcbiAgICAgICAgYXdhaXQgaGVscGVycy5yZXNldEFwcCh0aGlzLmFkYiwgdGhpcy5vcHRzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBlbnN1cmVBcHBTdGFydHMgKCkge1xuICAgIC8vIG1ha2Ugc3VyZSB3ZSBoYXZlIGFuIGFjdGl2aXR5IGFuZCBwYWNrYWdlIHRvIHdhaXQgZm9yXG4gICAgY29uc3QgYXBwV2FpdFBhY2thZ2UgPSB0aGlzLm9wdHMuYXBwV2FpdFBhY2thZ2UgfHwgdGhpcy5vcHRzLmFwcFBhY2thZ2U7XG4gICAgY29uc3QgYXBwV2FpdEFjdGl2aXR5ID0gdGhpcy5vcHRzLmFwcFdhaXRBY3Rpdml0eSB8fCB0aGlzLm9wdHMuYXBwQWN0aXZpdHk7XG5cbiAgICB0aGlzLmxvZy5pbmZvKGBTdGFydGluZyAnJHt0aGlzLm9wdHMuYXBwUGFja2FnZX0vJHt0aGlzLm9wdHMuYXBwQWN0aXZpdHl9IGAgK1xuICAgICAgYGFuZCB3YWl0aW5nIGZvciAnJHthcHBXYWl0UGFja2FnZX0vJHthcHBXYWl0QWN0aXZpdHl9J2ApO1xuXG4gICAgaWYgKHRoaXMuY2Fwcy5hbmRyb2lkQ292ZXJhZ2UpIHtcbiAgICAgIHRoaXMubG9nLmluZm8oYGFuZHJvaWRDb3ZlcmFnZSBpcyBjb25maWd1cmVkLiBgICtcbiAgICAgICAgYCBTdGFydGluZyBpbnN0cnVtZW50YXRpb24gb2YgJyR7dGhpcy5jYXBzLmFuZHJvaWRDb3ZlcmFnZX0nLi4uYCk7XG4gICAgICBhd2FpdCB0aGlzLmFkYi5hbmRyb2lkQ292ZXJhZ2UodGhpcy5jYXBzLmFuZHJvaWRDb3ZlcmFnZSwgYXBwV2FpdFBhY2thZ2UsIGFwcFdhaXRBY3Rpdml0eSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnN0YXJ0QXBwKHtcbiAgICAgICAgcGtnOiB0aGlzLm9wdHMuYXBwUGFja2FnZSxcbiAgICAgICAgYWN0aXZpdHk6IHRoaXMub3B0cy5hcHBBY3Rpdml0eSxcbiAgICAgICAgYWN0aW9uOiB0aGlzLm9wdHMuaW50ZW50QWN0aW9uLFxuICAgICAgICBjYXRlZ29yeTogdGhpcy5vcHRzLmludGVudENhdGVnb3J5LFxuICAgICAgICBmbGFnczogdGhpcy5vcHRzLmludGVudEZsYWdzLFxuICAgICAgICB3YWl0UGtnOiB0aGlzLm9wdHMuYXBwV2FpdFBhY2thZ2UsXG4gICAgICAgIHdhaXRBY3Rpdml0eTogdGhpcy5vcHRzLmFwcFdhaXRBY3Rpdml0eSxcbiAgICAgICAgd2FpdEZvckxhdW5jaDogdGhpcy5vcHRzLmFwcFdhaXRGb3JMYXVuY2gsXG4gICAgICAgIHdhaXREdXJhdGlvbjogdGhpcy5vcHRzLmFwcFdhaXREdXJhdGlvbixcbiAgICAgICAgb3B0aW9uYWxJbnRlbnRBcmd1bWVudHM6IHRoaXMub3B0cy5vcHRpb25hbEludGVudEFyZ3VtZW50cyxcbiAgICAgICAgc3RvcEFwcDogIXRoaXMub3B0cy5kb250U3RvcEFwcE9uUmVzZXQsXG4gICAgICAgIHJldHJ5OiB0cnVlLFxuICAgICAgICB1c2VyOiB0aGlzLm9wdHMudXNlclByb2ZpbGUsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZVNlc3Npb24gKCkge1xuICAgIHRoaXMubG9nLmRlYnVnKCdEZWxldGluZyBVaUF1dG9tYXRvcjIgc2Vzc2lvbicpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGlmICghXy5pc0VtcHR5KHRoaXMuX3NjcmVlblJlY29yZGluZ1Byb3BlcnRpZXMpKSB7XG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcFJlY29yZGluZ1NjcmVlbigpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGlnbikge31cblxuICAgIGF3YWl0IGFuZHJvaWRIZWxwZXJzLnJlbW92ZUFsbFNlc3Npb25XZWJTb2NrZXRIYW5kbGVycyh0aGlzLnNlcnZlciwgdGhpcy5zZXNzaW9uSWQpO1xuXG4gICAgYXdhaXQgdGhpcy5tb2JpbGVTdG9wU2NyZWVuU3RyZWFtaW5nKCk7XG5cbiAgICBpZiAodGhpcy51aWF1dG9tYXRvcjIpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuc3RvcENocm9tZWRyaXZlclByb3hpZXMoKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICB0aGlzLmxvZy53YXJuKGBVbmFibGUgdG8gc3RvcCBDaHJvbWVEcml2ZXIgcHJveGllczogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmp3cFByb3h5QWN0aXZlKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy51aWF1dG9tYXRvcjIuZGVsZXRlU2Vzc2lvbigpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICB0aGlzLmxvZy53YXJuKGBVbmFibGUgdG8gcHJveHkgZGVsZXRlU2Vzc2lvbiB0byBVaUF1dG9tYXRvcjI6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHRoaXMudWlhdXRvbWF0b3IyID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5qd3BQcm94eUFjdGl2ZSA9IGZhbHNlO1xuXG4gICAgaWYgKHRoaXMuYWRiKSB7XG4gICAgICBpZiAodGhpcy5vcHRzLnVuaWNvZGVLZXlib2FyZCAmJiB0aGlzLm9wdHMucmVzZXRLZXlib2FyZCAmJiB0aGlzLmRlZmF1bHRJTUUpIHtcbiAgICAgICAgdGhpcy5sb2cuZGVidWcoYFJlc2V0dGluZyBJTUUgdG8gJyR7dGhpcy5kZWZhdWx0SU1FfSdgKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmFkYi5zZXRJTUUodGhpcy5kZWZhdWx0SU1FKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgdGhpcy5sb2cud2FybihgVW5hYmxlIHRvIHJlc2V0IElNRTogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHRoaXMuY2Fwcy5hbmRyb2lkQ292ZXJhZ2UpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbygnU2h1dHRpbmcgZG93biB0aGUgYWRiIHByb2Nlc3Mgb2YgaW5zdHJ1bWVudGF0aW9uLi4uJyk7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLmVuZEFuZHJvaWRDb3ZlcmFnZSgpO1xuICAgICAgICAvLyBVc2UgdGhpcyBicm9hZGNhc3QgaW50ZW50IHRvIG5vdGlmeSBpdCdzIHRpbWUgdG8gZHVtcCBjb3ZlcmFnZSB0byBmaWxlXG4gICAgICAgIGlmICh0aGlzLmNhcHMuYW5kcm9pZENvdmVyYWdlRW5kSW50ZW50KSB7XG4gICAgICAgICAgdGhpcy5sb2cuaW5mbyhgU2VuZGluZyBpbnRlbnQgYnJvYWRjYXN0ICcke3RoaXMuY2Fwcy5hbmRyb2lkQ292ZXJhZ2VFbmRJbnRlbnR9JyBhdCB0aGUgZW5kIG9mIGluc3RydW1lbnRpbmcuYCk7XG4gICAgICAgICAgYXdhaXQgdGhpcy5hZGIuYnJvYWRjYXN0KHRoaXMuY2Fwcy5hbmRyb2lkQ292ZXJhZ2VFbmRJbnRlbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubG9nLndhcm4oJ05vIGFuZHJvaWRDb3ZlcmFnZUVuZEludGVudCBpcyBjb25maWd1cmVkIGluIGNhcHMuIFBvc3NpYmx5IHlvdSBjYW5ub3QgZ2V0IGNvdmVyYWdlIGZpbGUuJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLm9wdHMuYXBwUGFja2FnZSkge1xuICAgICAgICBpZiAoIXRoaXMuaXNDaHJvbWVTZXNzaW9uXG4gICAgICAgICAgICAmJiAhdGhpcy5vcHRzLmRvbnRTdG9wQXBwT25SZXNldFxuICAgICAgICAgICAgJiYgIXRoaXMub3B0cy5ub1Jlc2V0KSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuYWRiLmZvcmNlU3RvcCh0aGlzLm9wdHMuYXBwUGFja2FnZSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICB0aGlzLmxvZy53YXJuKGBVbmFibGUgdG8gZm9yY2Ugc3RvcCBhcHA6ICR7ZXJyLm1lc3NhZ2V9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLm9wdHMuZnVsbFJlc2V0ICYmICF0aGlzLm9wdHMuc2tpcFVuaW5zdGFsbCkge1xuICAgICAgICAgIHRoaXMubG9nLmRlYnVnKGBDYXBhYmlsaXR5ICdmdWxsUmVzZXQnIHNldCB0byAndHJ1ZScsIFVuaW5zdGFsbGluZyAnJHt0aGlzLm9wdHMuYXBwUGFja2FnZX0nYCk7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuYWRiLnVuaW5zdGFsbEFwayh0aGlzLm9wdHMuYXBwUGFja2FnZSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICB0aGlzLmxvZy53YXJuKGBVbmFibGUgdG8gdW5pbnN0YWxsIGFwcDogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIC8vIFRoaXMgdmFsdWUgY2FuIGJlIHRydWUgaWYgdGVzdCB0YXJnZXQgZGV2aWNlIGlzIDw9IDI2XG4gICAgICBpZiAodGhpcy5fd2FzV2luZG93QW5pbWF0aW9uRGlzYWJsZWQpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbygnUmVzdG9yaW5nIHdpbmRvdyBhbmltYXRpb24gc3RhdGUnKTtcbiAgICAgICAgYXdhaXQgdGhpcy5hZGIuc2V0QW5pbWF0aW9uU3RhdGUodHJ1ZSk7XG4gICAgICB9XG4gICAgICBhd2FpdCB0aGlzLmFkYi5zdG9wTG9nY2F0KCk7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLnJlbGVhc2VTeXN0ZW1Qb3J0KCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICB0aGlzLmxvZy53YXJuKGBVbmFibGUgdG8gcmVtb3ZlIHN5c3RlbSBwb3J0IGZvcndhcmQ6ICR7ZXJyb3IubWVzc2FnZX1gKTtcbiAgICAgICAgLy8gSWdub3JlLCB0aGlzIGJsb2NrIHdpbGwgYWxzbyBiZSBjYWxsZWQgd2hlbiB3ZSBmYWxsIGluIGNhdGNoIGJsb2NrXG4gICAgICAgIC8vIGFuZCBiZWZvcmUgZXZlbiBwb3J0IGZvcndhcmQuXG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLnJlbGVhc2VNanBlZ1NlcnZlclBvcnQoKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRoaXMubG9nLndhcm4oYFVuYWJsZSB0byByZW1vdmUgTUpQRUcgc2VydmVyIHBvcnQgZm9yd2FyZDogJHtlcnJvci5tZXNzYWdlfWApO1xuICAgICAgICAvLyBJZ25vcmUsIHRoaXMgYmxvY2sgd2lsbCBhbHNvIGJlIGNhbGxlZCB3aGVuIHdlIGZhbGwgaW4gY2F0Y2ggYmxvY2tcbiAgICAgICAgLy8gYW5kIGJlZm9yZSBldmVuIHBvcnQgZm9yd2FyZC5cbiAgICAgIH1cblxuICAgICAgaWYgKGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCkgPj0gMjgpIHsgLy8gQW5kcm9pZCBQXG4gICAgICAgIHRoaXMubG9nLmluZm8oJ1Jlc3RvcmluZyBoaWRkZW4gYXBpIHBvbGljeSB0byB0aGUgZGV2aWNlIGRlZmF1bHQgY29uZmlndXJhdGlvbicpO1xuICAgICAgICBhd2FpdCB0aGlzLmFkYi5zZXREZWZhdWx0SGlkZGVuQXBpUG9saWN5KCEhdGhpcy5vcHRzLmlnbm9yZUhpZGRlbkFwaVBvbGljeUVycm9yKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMub3B0cy5yZWJvb3QpIHtcbiAgICAgICAgbGV0IGF2ZE5hbWUgPSB0aGlzLm9wdHMuYXZkLnJlcGxhY2UoJ0AnLCAnJyk7XG4gICAgICAgIHRoaXMubG9nLmRlYnVnKGBDbG9zaW5nIGVtdWxhdG9yICcke2F2ZE5hbWV9J2ApO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuYWRiLmtpbGxFbXVsYXRvcihhdmROYW1lKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgdGhpcy5sb2cud2FybihgVW5hYmxlIHRvIGNsb3NlIGVtdWxhdG9yOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0aGlzLm1qcGVnU3RyZWFtKSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKCdDbG9zaW5nIE1KUEVHIHN0cmVhbScpO1xuICAgICAgdGhpcy5tanBlZ1N0cmVhbS5zdG9wKCk7XG4gICAgfVxuICAgIGF3YWl0IHN1cGVyLmRlbGV0ZVNlc3Npb24oKTtcbiAgfVxuXG4gIGFzeW5jIGNoZWNrQXBwUHJlc2VudCAoKSB7XG4gICAgdGhpcy5sb2cuZGVidWcoJ0NoZWNraW5nIHdoZXRoZXIgYXBwIGlzIGFjdHVhbGx5IHByZXNlbnQnKTtcbiAgICBpZiAoIShhd2FpdCBmcy5leGlzdHModGhpcy5vcHRzLmFwcCkpKSB7XG4gICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBDb3VsZCBub3QgZmluZCBhcHAgYXBrIGF0ICcke3RoaXMub3B0cy5hcHB9J2ApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG9uU2V0dGluZ3NVcGRhdGUgKCkge1xuICAgIC8vIGludGVudGlvbmFsbHkgZG8gbm90aGluZyBoZXJlLCBzaW5jZSBjb21tYW5kcy51cGRhdGVTZXR0aW5ncyBwcm94aWVzXG4gICAgLy8gc2V0dGluZ3MgdG8gdGhlIHVpYXV0bzIgc2VydmVyIGFscmVhZHlcbiAgfVxuXG4gIC8vIE5lZWQgdG8gb3ZlcnJpZGUgYW5kcm9pZC1kcml2ZXIncyB2ZXJzaW9uIG9mIHRoaXMgc2luY2Ugd2UgZG9uJ3QgYWN0dWFsbHlcbiAgLy8gaGF2ZSBhIGJvb3RzdHJhcDsgaW5zdGVhZCB3ZSBqdXN0IHJlc3RhcnQgYWRiIGFuZCByZS1mb3J3YXJkIHRoZSBVaUF1dG9tYXRvcjJcbiAgLy8gcG9ydFxuICBhc3luYyB3cmFwQm9vdHN0cmFwRGlzY29ubmVjdCAod3JhcHBlZCkge1xuICAgIGF3YWl0IHdyYXBwZWQoKTtcbiAgICBhd2FpdCB0aGlzLmFkYi5yZXN0YXJ0KCk7XG4gICAgYXdhaXQgdGhpcy5hbGxvY2F0ZVN5c3RlbVBvcnQoKTtcbiAgICBhd2FpdCB0aGlzLmFsbG9jYXRlTWpwZWdTZXJ2ZXJQb3J0KCk7XG4gIH1cblxuICBwcm94eUFjdGl2ZSAoc2Vzc2lvbklkKSB7XG4gICAgc3VwZXIucHJveHlBY3RpdmUoc2Vzc2lvbklkKTtcblxuICAgIC8vIHdlIGFsd2F5cyBoYXZlIGFuIGFjdGl2ZSBwcm94eSB0byB0aGUgVWlBdXRvbWF0b3IyIHNlcnZlclxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgY2FuUHJveHkgKHNlc3Npb25JZCkge1xuICAgIHN1cGVyLmNhblByb3h5KHNlc3Npb25JZCk7XG5cbiAgICAvLyB3ZSBjYW4gYWx3YXlzIHByb3h5IHRvIHRoZSB1aWF1dG9tYXRvcjIgc2VydmVyXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBnZXRQcm94eUF2b2lkTGlzdCAoc2Vzc2lvbklkKSB7XG4gICAgc3VwZXIuZ2V0UHJveHlBdm9pZExpc3Qoc2Vzc2lvbklkKTtcbiAgICAvLyB3ZSBhcmUgbWFpbnRhaW5pbmcgdHdvIHNldHMgb2YgTk9fUFJPWFkgbGlzdHMsIG9uZSBmb3IgY2hyb21lZHJpdmVyKENIUk9NRV9OT19QUk9YWSlcbiAgICAvLyBhbmQgb25lIGZvciB1aWF1dG9tYXRvcjIoTk9fUFJPWFkpLCBiYXNlZCBvbiBjdXJyZW50IGNvbnRleHQgd2lsbCByZXR1cm4gcmVsYXRlZCBOT19QUk9YWSBsaXN0XG4gICAgaWYgKHV0aWwuaGFzVmFsdWUodGhpcy5jaHJvbWVkcml2ZXIpKSB7XG4gICAgICAvLyBpZiB0aGUgY3VycmVudCBjb250ZXh0IGlzIHdlYnZpZXcoY2hyb21lZHJpdmVyKSwgdGhlbiByZXR1cm4gQ0hST01FX05PX1BST1hZIGxpc3RcbiAgICAgIHRoaXMuandwUHJveHlBdm9pZCA9IENIUk9NRV9OT19QUk9YWTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5qd3BQcm94eUF2b2lkID0gTk9fUFJPWFk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdHMubmF0aXZlV2ViU2NyZWVuc2hvdCkge1xuICAgICAgdGhpcy5qd3BQcm94eUF2b2lkID0gWy4uLnRoaXMuandwUHJveHlBdm9pZCwgWydHRVQnLCBuZXcgUmVnRXhwKCdeL3Nlc3Npb24vW14vXSsvc2NyZWVuc2hvdCcpXV07XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuandwUHJveHlBdm9pZDtcbiAgfVxuXG4gIGdldCBpc0Nocm9tZVNlc3Npb24gKCkge1xuICAgIHJldHVybiBoZWxwZXJzLmlzQ2hyb21lQnJvd3Nlcih0aGlzLm9wdHMuYnJvd3Nlck5hbWUpO1xuICB9XG59XG5cbi8vIGZpcnN0IGFkZCB0aGUgYW5kcm9pZC1kcml2ZXIgY29tbWFuZHMgd2hpY2ggd2Ugd2lsbCBmYWxsIGJhY2sgdG9cbmZvciAobGV0IFtjbWQsIGZuXSBvZiBfLnRvUGFpcnMoYW5kcm9pZENvbW1hbmRzKSkge1xuICBBbmRyb2lkVWlhdXRvbWF0b3IyRHJpdmVyLnByb3RvdHlwZVtjbWRdID0gZm47XG59XG5cbi8vIHRoZW4gb3ZlcndyaXRlIHdpdGggYW55IHVpYXV0b21hdG9yMi1zcGVjaWZpYyBjb21tYW5kc1xuZm9yIChsZXQgW2NtZCwgZm5dIG9mIF8udG9QYWlycyhjb21tYW5kcykpIHtcbiAgQW5kcm9pZFVpYXV0b21hdG9yMkRyaXZlci5wcm90b3R5cGVbY21kXSA9IGZuO1xufVxuXG5leHBvcnQgeyBBbmRyb2lkVWlhdXRvbWF0b3IyRHJpdmVyIH07XG5leHBvcnQgZGVmYXVsdCBBbmRyb2lkVWlhdXRvbWF0b3IyRHJpdmVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUdBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUdBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUdBLE1BQU1BLE9BQU8sR0FBR0MsTUFBTSxDQUFDQyxNQUFQLENBQWMsRUFBZCxFQUFrQkMsZ0JBQWxCLEVBQXVDQyxtQ0FBdkMsQ0FBaEI7QUFJQSxNQUFNQyxpQkFBaUIsR0FBRyxDQUFDLElBQUQsRUFBTyxJQUFQLENBQTFCOztBQUlBLE1BQU1DLDRCQUE0QixHQUFHQyxjQUFLQyxnQkFBTCxDQUNuQ0MsY0FBS0MsT0FBTCxDQUFhQyxZQUFHQyxNQUFILEVBQWIsRUFBMEIsd0JBQTFCLENBRG1DLEVBRW5DO0VBQUNDLE9BQU8sRUFBRSxFQUFWO0VBQWNDLFdBQVcsRUFBRTtBQUEzQixDQUZtQyxDQUFyQzs7QUFPQSxNQUFNQyxXQUFXLEdBQUcsSUFBcEI7QUFJQSxNQUFNQyx3QkFBd0IsR0FBRyxJQUFqQztBQUVBLE1BQU1DLGFBQWEsR0FBRyxXQUF0QjtBQU1BLE1BQU1DLFFBQVEsR0FBRyxDQUNmLENBQUMsS0FBRCxFQUFRLElBQUlDLE1BQUosQ0FBVyxtQkFBWCxDQUFSLENBRGUsRUFFZixDQUFDLEtBQUQsRUFBUSxJQUFJQSxNQUFKLENBQVcsNkJBQVgsQ0FBUixDQUZlLEVBR2YsQ0FBQyxLQUFELEVBQVEsSUFBSUEsTUFBSixDQUFXLDZCQUFYLENBQVIsQ0FIZSxFQUlmLENBQUMsS0FBRCxFQUFRLElBQUlBLE1BQUosQ0FBVywrQ0FBWCxDQUFSLENBSmUsRUFLZixDQUFDLEtBQUQsRUFBUSxJQUFJQSxNQUFKLENBQVcsOENBQVgsQ0FBUixDQUxlLEVBTWYsQ0FBQyxLQUFELEVBQVEsSUFBSUEsTUFBSixDQUFXLGtDQUFYLENBQVIsQ0FOZSxFQU9mLENBQUMsS0FBRCxFQUFRLElBQUlBLE1BQUosQ0FBVyxxQ0FBWCxDQUFSLENBUGUsRUFRZixDQUFDLEtBQUQsRUFBUSxJQUFJQSxNQUFKLENBQVcsaUNBQVgsQ0FBUixDQVJlLEVBU2YsQ0FBQyxLQUFELEVBQVEsSUFBSUEsTUFBSixDQUFXLHlCQUFYLENBQVIsQ0FUZSxFQVVmLENBQUMsS0FBRCxFQUFRLElBQUlBLE1BQUosQ0FBVywwQkFBWCxDQUFSLENBVmUsRUFXZixDQUFDLEtBQUQsRUFBUSxJQUFJQSxNQUFKLENBQVcseUNBQVgsQ0FBUixDQVhlLEVBWWYsQ0FBQyxLQUFELEVBQVEsSUFBSUEsTUFBSixDQUFXLHlDQUFYLENBQVIsQ0FaZSxFQWFmLENBQUMsS0FBRCxFQUFRLElBQUlBLE1BQUosQ0FBVyx1Q0FBWCxDQUFSLENBYmUsRUFjZixDQUFDLEtBQUQsRUFBUSxJQUFJQSxNQUFKLENBQVcsZ0RBQVgsQ0FBUixDQWRlLEVBZWYsQ0FBQyxLQUFELEVBQVEsSUFBSUEsTUFBSixDQUFXLG9DQUFYLENBQVIsQ0FmZSxFQWdCZixDQUFDLEtBQUQsRUFBUSxJQUFJQSxNQUFKLENBQVcsMENBQVgsQ0FBUixDQWhCZSxFQWlCZixDQUFDLEtBQUQsRUFBUSxJQUFJQSxNQUFKLENBQVcsd0NBQVgsQ0FBUixDQWpCZSxFQWtCZixDQUFDLEtBQUQsRUFBUSxJQUFJQSxNQUFKLENBQVcsMkJBQVgsQ0FBUixDQWxCZSxFQW1CZixDQUFDLEtBQUQsRUFBUSxJQUFJQSxNQUFKLENBQVcsMEJBQVgsQ0FBUixDQW5CZSxFQW9CZixDQUFDLEtBQUQsRUFBUSxJQUFJQSxNQUFKLENBQVcsb0NBQVgsQ0FBUixDQXBCZSxFQXFCZixDQUFDLEtBQUQsRUFBUSxJQUFJQSxNQUFKLENBQVcsNEJBQVgsQ0FBUixDQXJCZSxFQXNCZixDQUFDLEtBQUQsRUFBUSxJQUFJQSxNQUFKLENBQVcsMEJBQVgsQ0FBUixDQXRCZSxFQXVCZixDQUFDLEtBQUQsRUFBUSxJQUFJQSxNQUFKLENBQVcscUJBQVgsQ0FBUixDQXZCZSxFQXdCZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsOEJBQVgsQ0FBVCxDQXhCZSxFQXlCZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcseUJBQVgsQ0FBVCxDQXpCZSxFQTBCZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsNkJBQVgsQ0FBVCxDQTFCZSxFQTJCZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsMEJBQVgsQ0FBVCxDQTNCZSxFQTRCZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsNkNBQVgsQ0FBVCxDQTVCZSxFQTZCZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsa0NBQVgsQ0FBVCxDQTdCZSxFQThCZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsdUNBQVgsQ0FBVCxDQTlCZSxFQStCZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsc0RBQVgsQ0FBVCxDQS9CZSxFQWdDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsb0RBQVgsQ0FBVCxDQWhDZSxFQWlDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsNENBQVgsQ0FBVCxDQWpDZSxFQWtDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsMkNBQVgsQ0FBVCxDQWxDZSxFQW1DZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsOENBQVgsQ0FBVCxDQW5DZSxFQW9DZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsaUNBQVgsQ0FBVCxDQXBDZSxFQXFDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsdUNBQVgsQ0FBVCxDQXJDZSxFQXNDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsK0NBQVgsQ0FBVCxDQXRDZSxFQXVDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsOENBQVgsQ0FBVCxDQXZDZSxFQXdDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsZ0NBQVgsQ0FBVCxDQXhDZSxFQXlDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcseUJBQVgsQ0FBVCxDQXpDZSxFQTBDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcseUJBQVgsQ0FBVCxDQTFDZSxFQTJDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsMkJBQVgsQ0FBVCxDQTNDZSxFQTRDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsc0JBQVgsQ0FBVCxDQTVDZSxFQTZDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsMEJBQVgsQ0FBVCxDQTdDZSxFQThDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsb0NBQVgsQ0FBVCxDQTlDZSxFQStDZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsMEJBQVgsQ0FBVCxDQS9DZSxFQWdEZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcscUNBQVgsQ0FBVCxDQWhEZSxFQWlEZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcsK0JBQVgsQ0FBVCxDQWpEZSxFQWtEZixDQUFDLE1BQUQsRUFBUyxJQUFJQSxNQUFKLENBQVcscUJBQVgs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
@@ -13,4 +13,4 @@ const APKS_EXTENSION = '.apks';
13
13
  exports.APKS_EXTENSION = APKS_EXTENSION;require('source-map-support').install();
14
14
 
15
15
 
16
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9leHRlbnNpb25zLmpzIl0sIm5hbWVzIjpbIkFQS19FWFRFTlNJT04iLCJBUEtTX0VYVEVOU0lPTiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsTUFBTUEsYUFBYSxHQUFHLE1BQXRCOztBQUNBLE1BQU1DLGNBQWMsR0FBRyxPQUF2QiIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IEFQS19FWFRFTlNJT04gPSAnLmFwayc7XG5jb25zdCBBUEtTX0VYVEVOU0lPTiA9ICcuYXBrcyc7XG5cbmV4cG9ydCB7IEFQS19FWFRFTlNJT04sIEFQS1NfRVhURU5TSU9OIH07XG4iXSwiZmlsZSI6ImxpYi9leHRlbnNpb25zLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
16
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2V4dGVuc2lvbnMuanMiLCJuYW1lcyI6WyJBUEtfRVhURU5TSU9OIiwiQVBLU19FWFRFTlNJT04iXSwic291cmNlUm9vdCI6Ii4uLy4uIiwic291cmNlcyI6WyJsaWIvZXh0ZW5zaW9ucy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBBUEtfRVhURU5TSU9OID0gJy5hcGsnO1xuY29uc3QgQVBLU19FWFRFTlNJT04gPSAnLmFwa3MnO1xuXG5leHBvcnQgeyBBUEtfRVhURU5TSU9OLCBBUEtTX0VYVEVOU0lPTiB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxNQUFNQSxhQUFhLEdBQUcsTUFBdEI7O0FBQ0EsTUFBTUMsY0FBYyxHQUFHLE9BQXZCIn0=
@@ -52,4 +52,4 @@ var _default = helpers;
52
52
  exports.default = _default;require('source-map-support').install();
53
53
 
54
54
 
55
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oZWxwZXJzLmpzIl0sIm5hbWVzIjpbImhlbHBlcnMiLCJlbnN1cmVJbnRlcm5ldFBlcm1pc3Npb25Gb3JBcHAiLCJhZGIiLCJhcHAiLCJoYXMiLCJoYXNJbnRlcm5ldFBlcm1pc3Npb25Gcm9tTWFuaWZlc3QiLCJtc2ciLCJFcnJvciIsImlzV3JpdGVhYmxlIiwiZmlsZVBhdGgiLCJmcyIsImFjY2VzcyIsIldfT0siLCJzeXN0ZW0iLCJpc1dpbmRvd3MiLCJjbG9zZSIsIm9wZW4iLCJpZ24iLCJzaWduQXBwIiwiYXBwUGF0aCIsInBhdGgiLCJkaXJuYW1lIiwic2lnbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFHQSxJQUFJQSxPQUFPLEdBQUcsRUFBZDs7QUFFQUEsT0FBTyxDQUFDQyw4QkFBUixHQUF5QyxnQkFBZ0JDLEdBQWhCLEVBQXFCQyxHQUFyQixFQUEwQjtBQUNqRSxNQUFJQyxHQUFHLEdBQUcsTUFBTUYsR0FBRyxDQUFDRyxpQ0FBSixDQUFzQ0YsR0FBdEMsQ0FBaEI7O0FBQ0EsTUFBSUMsR0FBSixFQUFTO0FBQ1A7QUFDRDs7QUFDRCxNQUFJRSxHQUFHLEdBQUcscUVBQ0EsK0RBREEsR0FFQSxpRUFGQSxHQUdBLDZCQUhWO0FBSUEsUUFBTSxJQUFJQyxLQUFKLENBQVVELEdBQVYsQ0FBTjtBQUNELENBVkQ7O0FBWUFOLE9BQU8sQ0FBQ1EsV0FBUixHQUFzQixlQUFlQSxXQUFmLENBQTRCQyxRQUE1QixFQUFzQztBQUMxRCxNQUFJO0FBQ0YsVUFBTUMsWUFBR0MsTUFBSCxDQUFVRixRQUFWLEVBQW9CQyxZQUFHRSxJQUF2QixDQUFOOztBQUNBLFFBQUlDLGdCQUFPQyxTQUFQLEVBQUosRUFBd0I7QUFLdEIsWUFBTUosWUFBR0ssS0FBSCxDQUFTLE1BQU1MLFlBQUdNLElBQUgsQ0FBUVAsUUFBUixFQUFrQixJQUFsQixDQUFmLENBQU47QUFDRDs7QUFDRCxXQUFPLElBQVA7QUFDRCxHQVZELENBVUUsT0FBT1EsR0FBUCxFQUFZO0FBQ1osV0FBTyxLQUFQO0FBQ0Q7QUFDRixDQWREOztBQWdCQWpCLE9BQU8sQ0FBQ2tCLE9BQVIsR0FBa0IsZ0JBQWdCaEIsR0FBaEIsRUFBcUJpQixPQUFyQixFQUE4QjtBQUM5QyxNQUFJLEVBQUMsTUFBTSxLQUFLWCxXQUFMLENBQWlCVyxPQUFqQixDQUFQLENBQUosRUFBc0M7QUFDcEMsVUFBTSxJQUFJWixLQUFKLENBQVcsdUJBQXNCWSxPQUFRLHNCQUEvQixHQUNiLHdFQUF1RUMsY0FBS0MsT0FBTCxDQUFhRixPQUFiLENBQXNCLElBRGhGLEdBRWIsMERBRkcsQ0FBTjtBQUdEOztBQUNELFFBQU1qQixHQUFHLENBQUNvQixJQUFKLENBQVNILE9BQVQsQ0FBTjtBQUNELENBUEQ7O2VBU2VuQixPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBmcywgc3lzdGVtIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcblxuXG5sZXQgaGVscGVycyA9IHt9O1xuXG5oZWxwZXJzLmVuc3VyZUludGVybmV0UGVybWlzc2lvbkZvckFwcCA9IGFzeW5jIGZ1bmN0aW9uIChhZGIsIGFwcCkge1xuICBsZXQgaGFzID0gYXdhaXQgYWRiLmhhc0ludGVybmV0UGVybWlzc2lvbkZyb21NYW5pZmVzdChhcHApO1xuICBpZiAoaGFzKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGxldCBtc2cgPSAnWW91ciBhcGsgZG9lcyBub3QgaGF2ZSBJTlRFUk5FVCBwZXJtaXNzaW9ucy4gVWlhdXRvbWF0b3IyIG5lZWRzICcgK1xuICAgICAgICAgICAgJ3RoZSBpbnRlcm5ldCBwZXJtaXNzaW9uIHRvIHByb2NlZWQuIFBsZWFzZSBjaGVjayBpZiB5b3UgaGF2ZSAnICtcbiAgICAgICAgICAgICc8dXNlcy1wZXJtaXNzaW9uIGFuZHJvaWQ6bmFtZT1cImFuZHJvaWQuKipwZXJtaXNzaW9uLklOVEVSTkVUXCIvPicgK1xuICAgICAgICAgICAgJ2luIHlvdXIgQW5kcm9pZE1hbmlmZXN0LnhtbCc7XG4gIHRocm93IG5ldyBFcnJvcihtc2cpO1xufTtcblxuaGVscGVycy5pc1dyaXRlYWJsZSA9IGFzeW5jIGZ1bmN0aW9uIGlzV3JpdGVhYmxlIChmaWxlUGF0aCkge1xuICB0cnkge1xuICAgIGF3YWl0IGZzLmFjY2VzcyhmaWxlUGF0aCwgZnMuV19PSyk7XG4gICAgaWYgKHN5c3RlbS5pc1dpbmRvd3MoKSkge1xuICAgICAgLy8gT24gb3BlcmF0aW5nIHN5c3RlbXMsIHdoZXJlIGFjY2Vzcy1jb250cm9sIHBvbGljaWVzIG1heVxuICAgICAgLy8gbGltaXQgYWNjZXNzIHRvIHRoZSBmaWxlIHN5c3RlbSwgYGZzLmFjY2Vzc2AgZG9lcyBub3Qgd29ya1xuICAgICAgLy8gYXMgZXhwZWN0ZWQuIFNlZSBodHRwczovL2dyb3Vwcy5nb29nbGUuY29tL2ZvcnVtLyMhdG9waWMvbm9kZWpzL3FtWnRJd0RSU1lvXG4gICAgICAvLyBmb3IgbW9yZSBkZXRhaWxzXG4gICAgICBhd2FpdCBmcy5jbG9zZShhd2FpdCBmcy5vcGVuKGZpbGVQYXRoLCAncisnKSk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChpZ24pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn07XG5cbmhlbHBlcnMuc2lnbkFwcCA9IGFzeW5jIGZ1bmN0aW9uIChhZGIsIGFwcFBhdGgpIHtcbiAgaWYgKCFhd2FpdCB0aGlzLmlzV3JpdGVhYmxlKGFwcFBhdGgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgYXBwbGljYXRpb24gYXQgJyR7YXBwUGF0aH0nIGlzIG5vdCB3cml0ZWFibGUuIGAgK1xuICAgICAgYFBsZWFzZSBncmFudCB3cml0ZSBwZXJtaXNzaW9ucyB0byB0aGlzIGZpbGUgb3IgdG8gaXRzIHBhcmVudCBmb2xkZXIgJyR7cGF0aC5kaXJuYW1lKGFwcFBhdGgpfScgYCArXG4gICAgICBgZm9yIHRoZSBBcHBpdW0gcHJvY2Vzcywgc28gaXQgY291bGQgc2lnbiB0aGUgYXBwbGljYXRpb25gKTtcbiAgfVxuICBhd2FpdCBhZGIuc2lnbihhcHBQYXRoKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGhlbHBlcnM7XG4iXSwiZmlsZSI6ImxpYi9oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
55
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2hlbHBlcnMuanMiLCJuYW1lcyI6WyJoZWxwZXJzIiwiZW5zdXJlSW50ZXJuZXRQZXJtaXNzaW9uRm9yQXBwIiwiYWRiIiwiYXBwIiwiaGFzIiwiaGFzSW50ZXJuZXRQZXJtaXNzaW9uRnJvbU1hbmlmZXN0IiwibXNnIiwiRXJyb3IiLCJpc1dyaXRlYWJsZSIsImZpbGVQYXRoIiwiZnMiLCJhY2Nlc3MiLCJXX09LIiwic3lzdGVtIiwiaXNXaW5kb3dzIiwiY2xvc2UiLCJvcGVuIiwiaWduIiwic2lnbkFwcCIsImFwcFBhdGgiLCJwYXRoIiwiZGlybmFtZSIsInNpZ24iXSwic291cmNlUm9vdCI6Ii4uLy4uIiwic291cmNlcyI6WyJsaWIvaGVscGVycy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGZzLCBzeXN0ZW0gfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuXG5cbmxldCBoZWxwZXJzID0ge307XG5cbmhlbHBlcnMuZW5zdXJlSW50ZXJuZXRQZXJtaXNzaW9uRm9yQXBwID0gYXN5bmMgZnVuY3Rpb24gKGFkYiwgYXBwKSB7XG4gIGxldCBoYXMgPSBhd2FpdCBhZGIuaGFzSW50ZXJuZXRQZXJtaXNzaW9uRnJvbU1hbmlmZXN0KGFwcCk7XG4gIGlmIChoYXMpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgbGV0IG1zZyA9ICdZb3VyIGFwayBkb2VzIG5vdCBoYXZlIElOVEVSTkVUIHBlcm1pc3Npb25zLiBVaWF1dG9tYXRvcjIgbmVlZHMgJyArXG4gICAgICAgICAgICAndGhlIGludGVybmV0IHBlcm1pc3Npb24gdG8gcHJvY2VlZC4gUGxlYXNlIGNoZWNrIGlmIHlvdSBoYXZlICcgK1xuICAgICAgICAgICAgJzx1c2VzLXBlcm1pc3Npb24gYW5kcm9pZDpuYW1lPVwiYW5kcm9pZC4qKnBlcm1pc3Npb24uSU5URVJORVRcIi8+JyArXG4gICAgICAgICAgICAnaW4geW91ciBBbmRyb2lkTWFuaWZlc3QueG1sJztcbiAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG59O1xuXG5oZWxwZXJzLmlzV3JpdGVhYmxlID0gYXN5bmMgZnVuY3Rpb24gaXNXcml0ZWFibGUgKGZpbGVQYXRoKSB7XG4gIHRyeSB7XG4gICAgYXdhaXQgZnMuYWNjZXNzKGZpbGVQYXRoLCBmcy5XX09LKTtcbiAgICBpZiAoc3lzdGVtLmlzV2luZG93cygpKSB7XG4gICAgICAvLyBPbiBvcGVyYXRpbmcgc3lzdGVtcywgd2hlcmUgYWNjZXNzLWNvbnRyb2wgcG9saWNpZXMgbWF5XG4gICAgICAvLyBsaW1pdCBhY2Nlc3MgdG8gdGhlIGZpbGUgc3lzdGVtLCBgZnMuYWNjZXNzYCBkb2VzIG5vdCB3b3JrXG4gICAgICAvLyBhcyBleHBlY3RlZC4gU2VlIGh0dHBzOi8vZ3JvdXBzLmdvb2dsZS5jb20vZm9ydW0vIyF0b3BpYy9ub2RlanMvcW1adEl3RFJTWW9cbiAgICAgIC8vIGZvciBtb3JlIGRldGFpbHNcbiAgICAgIGF3YWl0IGZzLmNsb3NlKGF3YWl0IGZzLm9wZW4oZmlsZVBhdGgsICdyKycpKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2ggKGlnbikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufTtcblxuaGVscGVycy5zaWduQXBwID0gYXN5bmMgZnVuY3Rpb24gKGFkYiwgYXBwUGF0aCkge1xuICBpZiAoIWF3YWl0IHRoaXMuaXNXcml0ZWFibGUoYXBwUGF0aCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBhcHBsaWNhdGlvbiBhdCAnJHthcHBQYXRofScgaXMgbm90IHdyaXRlYWJsZS4gYCArXG4gICAgICBgUGxlYXNlIGdyYW50IHdyaXRlIHBlcm1pc3Npb25zIHRvIHRoaXMgZmlsZSBvciB0byBpdHMgcGFyZW50IGZvbGRlciAnJHtwYXRoLmRpcm5hbWUoYXBwUGF0aCl9JyBgICtcbiAgICAgIGBmb3IgdGhlIEFwcGl1bSBwcm9jZXNzLCBzbyBpdCBjb3VsZCBzaWduIHRoZSBhcHBsaWNhdGlvbmApO1xuICB9XG4gIGF3YWl0IGFkYi5zaWduKGFwcFBhdGgpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgaGVscGVycztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFHQSxJQUFJQSxPQUFPLEdBQUcsRUFBZDs7QUFFQUEsT0FBTyxDQUFDQyw4QkFBUixHQUF5QyxnQkFBZ0JDLEdBQWhCLEVBQXFCQyxHQUFyQixFQUEwQjtFQUNqRSxJQUFJQyxHQUFHLEdBQUcsTUFBTUYsR0FBRyxDQUFDRyxpQ0FBSixDQUFzQ0YsR0FBdEMsQ0FBaEI7O0VBQ0EsSUFBSUMsR0FBSixFQUFTO0lBQ1A7RUFDRDs7RUFDRCxJQUFJRSxHQUFHLEdBQUcscUVBQ0EsK0RBREEsR0FFQSxpRUFGQSxHQUdBLDZCQUhWO0VBSUEsTUFBTSxJQUFJQyxLQUFKLENBQVVELEdBQVYsQ0FBTjtBQUNELENBVkQ7O0FBWUFOLE9BQU8sQ0FBQ1EsV0FBUixHQUFzQixlQUFlQSxXQUFmLENBQTRCQyxRQUE1QixFQUFzQztFQUMxRCxJQUFJO0lBQ0YsTUFBTUMsWUFBR0MsTUFBSCxDQUFVRixRQUFWLEVBQW9CQyxZQUFHRSxJQUF2QixDQUFOOztJQUNBLElBQUlDLGdCQUFPQyxTQUFQLEVBQUosRUFBd0I7TUFLdEIsTUFBTUosWUFBR0ssS0FBSCxDQUFTLE1BQU1MLFlBQUdNLElBQUgsQ0FBUVAsUUFBUixFQUFrQixJQUFsQixDQUFmLENBQU47SUFDRDs7SUFDRCxPQUFPLElBQVA7RUFDRCxDQVZELENBVUUsT0FBT1EsR0FBUCxFQUFZO0lBQ1osT0FBTyxLQUFQO0VBQ0Q7QUFDRixDQWREOztBQWdCQWpCLE9BQU8sQ0FBQ2tCLE9BQVIsR0FBa0IsZ0JBQWdCaEIsR0FBaEIsRUFBcUJpQixPQUFyQixFQUE4QjtFQUM5QyxJQUFJLEVBQUMsTUFBTSxLQUFLWCxXQUFMLENBQWlCVyxPQUFqQixDQUFQLENBQUosRUFBc0M7SUFDcEMsTUFBTSxJQUFJWixLQUFKLENBQVcsdUJBQXNCWSxPQUFRLHNCQUEvQixHQUNiLHdFQUF1RUMsY0FBS0MsT0FBTCxDQUFhRixPQUFiLENBQXNCLElBRGhGLEdBRWIsMERBRkcsQ0FBTjtFQUdEOztFQUNELE1BQU1qQixHQUFHLENBQUNvQixJQUFKLENBQVNILE9BQVQsQ0FBTjtBQUNELENBUEQ7O2VBU2VuQixPIn0=
@@ -15,4 +15,4 @@ var _default = log;
15
15
  exports.default = _default;require('source-map-support').install();
16
16
 
17
17
 
18
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9sb2dnZXIuanMiXSwibmFtZXMiOlsibG9nIiwibG9nZ2VyIiwiZ2V0TG9nZ2VyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFHQSxNQUFNQSxHQUFHLEdBQUdDLGdCQUFPQyxTQUFQLENBQWlCLGNBQWpCLENBQVo7O2VBRWVGLEciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsb2dnZXIgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuXG5cbmNvbnN0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ1VpQXV0b21hdG9yMicpO1xuXG5leHBvcnQgZGVmYXVsdCBsb2c7XG4iXSwiZmlsZSI6ImxpYi9sb2dnZXIuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
18
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2xvZ2dlci5qcyIsIm5hbWVzIjpbImxvZyIsImxvZ2dlciIsImdldExvZ2dlciJdLCJzb3VyY2VSb290IjoiLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9sb2dnZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcblxuXG5jb25zdCBsb2cgPSBsb2dnZXIuZ2V0TG9nZ2VyKCdVaUF1dG9tYXRvcjInKTtcblxuZXhwb3J0IGRlZmF1bHQgbG9nO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFHQSxNQUFNQSxHQUFHLEdBQUdDLGdCQUFPQyxTQUFQLENBQWlCLGNBQWpCLENBQVo7O2VBRWVGLEcifQ==
@@ -38,4 +38,4 @@ var _default = startServer;
38
38
  exports.default = _default;require('source-map-support').install();
39
39
 
40
40
 
41
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zZXJ2ZXIuanMiXSwibmFtZXMiOlsic3RhcnRTZXJ2ZXIiLCJwb3J0IiwiaG9zdCIsImQiLCJBbmRyb2lkVWlhdXRvbWF0b3IyRHJpdmVyIiwicm91dGVDb25maWd1cmluZ0Z1bmN0aW9uIiwic2VydmVyIiwiaG9zdG5hbWUiLCJsb2ciLCJpbmZvIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFHQSxlQUFlQSxXQUFmLENBQTRCQyxJQUFJLEdBQUcsSUFBbkMsRUFBeUNDLElBQUksR0FBRyxXQUFoRCxFQUE2RDtBQUMzRCxNQUFJQyxDQUFDLEdBQUcsSUFBSUMsZUFBSixDQUE4QjtBQUFDSCxJQUFBQSxJQUFEO0FBQU9DLElBQUFBO0FBQVAsR0FBOUIsQ0FBUjtBQUNBLE1BQUlHLHdCQUF3QixHQUFHLDBDQUFXRixDQUFYLENBQS9CO0FBQ0EsTUFBSUcsTUFBTSxHQUFHLHdCQUFXO0FBQUNELElBQUFBLHdCQUFEO0FBQTJCSixJQUFBQSxJQUEzQjtBQUFpQ00sSUFBQUEsUUFBUSxFQUFFTDtBQUEzQyxHQUFYLENBQWI7O0FBQ0FNLGtCQUFJQyxJQUFKLENBQVUsbURBQWtEUCxJQUFLLElBQUdELElBQUssRUFBekU7O0FBQ0FFLEVBQUFBLENBQUMsQ0FBQ0csTUFBRixHQUFXQSxNQUFYO0FBQ0EsU0FBTyxNQUFNQSxNQUFiO0FBQ0Q7O2VBR2NOLFciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IHNlcnZlciBhcyBiYXNlU2VydmVyLCByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24gYXMgbWFrZVJvdXRlciB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuaW1wb3J0IEFuZHJvaWRVaWF1dG9tYXRvcjJEcml2ZXIgZnJvbSAnLi9kcml2ZXInO1xuXG5cbmFzeW5jIGZ1bmN0aW9uIHN0YXJ0U2VydmVyIChwb3J0ID0gNDg4NCwgaG9zdCA9ICdsb2NhbGhvc3QnKSB7XG4gIGxldCBkID0gbmV3IEFuZHJvaWRVaWF1dG9tYXRvcjJEcml2ZXIoe3BvcnQsIGhvc3R9KTtcbiAgbGV0IHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbiA9IG1ha2VSb3V0ZXIoZCk7XG4gIGxldCBzZXJ2ZXIgPSBiYXNlU2VydmVyKHtyb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24sIHBvcnQsIGhvc3RuYW1lOiBob3N0fSk7XG4gIGxvZy5pbmZvKGBBbmRyb2lkIFVpYXV0b21hdG9yMiBzZXJ2ZXIgbGlzdGVuaW5nIG9uIGh0dHA6Ly8ke2hvc3R9OiR7cG9ydH1gKTtcbiAgZC5zZXJ2ZXIgPSBzZXJ2ZXI7XG4gIHJldHVybiBhd2FpdCBzZXJ2ZXI7XG59XG5cbmV4cG9ydCB7IHN0YXJ0U2VydmVyIH07XG5leHBvcnQgZGVmYXVsdCBzdGFydFNlcnZlcjtcbiJdLCJmaWxlIjoibGliL3NlcnZlci5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9
41
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL3NlcnZlci5qcyIsIm5hbWVzIjpbInN0YXJ0U2VydmVyIiwicG9ydCIsImhvc3QiLCJkIiwiQW5kcm9pZFVpYXV0b21hdG9yMkRyaXZlciIsInJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbiIsInNlcnZlciIsImhvc3RuYW1lIiwibG9nIiwiaW5mbyJdLCJzb3VyY2VSb290IjoiLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9zZXJ2ZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgeyBzZXJ2ZXIgYXMgYmFzZVNlcnZlciwgcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uIGFzIG1ha2VSb3V0ZXIgfSBmcm9tICdAYXBwaXVtL2Jhc2UtZHJpdmVyJztcbmltcG9ydCBBbmRyb2lkVWlhdXRvbWF0b3IyRHJpdmVyIGZyb20gJy4vZHJpdmVyJztcblxuXG5hc3luYyBmdW5jdGlvbiBzdGFydFNlcnZlciAocG9ydCA9IDQ4ODQsIGhvc3QgPSAnbG9jYWxob3N0Jykge1xuICBsZXQgZCA9IG5ldyBBbmRyb2lkVWlhdXRvbWF0b3IyRHJpdmVyKHtwb3J0LCBob3N0fSk7XG4gIGxldCByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24gPSBtYWtlUm91dGVyKGQpO1xuICBsZXQgc2VydmVyID0gYmFzZVNlcnZlcih7cm91dGVDb25maWd1cmluZ0Z1bmN0aW9uLCBwb3J0LCBob3N0bmFtZTogaG9zdH0pO1xuICBsb2cuaW5mbyhgQW5kcm9pZCBVaWF1dG9tYXRvcjIgc2VydmVyIGxpc3RlbmluZyBvbiBodHRwOi8vJHtob3N0fToke3BvcnR9YCk7XG4gIGQuc2VydmVyID0gc2VydmVyO1xuICByZXR1cm4gYXdhaXQgc2VydmVyO1xufVxuXG5leHBvcnQgeyBzdGFydFNlcnZlciB9O1xuZXhwb3J0IGRlZmF1bHQgc3RhcnRTZXJ2ZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUdBLGVBQWVBLFdBQWYsQ0FBNEJDLElBQUksR0FBRyxJQUFuQyxFQUF5Q0MsSUFBSSxHQUFHLFdBQWhELEVBQTZEO0VBQzNELElBQUlDLENBQUMsR0FBRyxJQUFJQyxlQUFKLENBQThCO0lBQUNILElBQUQ7SUFBT0M7RUFBUCxDQUE5QixDQUFSO0VBQ0EsSUFBSUcsd0JBQXdCLEdBQUcsMENBQVdGLENBQVgsQ0FBL0I7RUFDQSxJQUFJRyxNQUFNLEdBQUcsd0JBQVc7SUFBQ0Qsd0JBQUQ7SUFBMkJKLElBQTNCO0lBQWlDTSxRQUFRLEVBQUVMO0VBQTNDLENBQVgsQ0FBYjs7RUFDQU0sZ0JBQUlDLElBQUosQ0FBVSxtREFBa0RQLElBQUssSUFBR0QsSUFBSyxFQUF6RTs7RUFDQUUsQ0FBQyxDQUFDRyxNQUFGLEdBQVdBLE1BQVg7RUFDQSxPQUFPLE1BQU1BLE1BQWI7QUFDRDs7ZUFHY04sVyJ9