appium-android-driver 5.0.10 → 5.0.11

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.
@@ -70,4 +70,4 @@ var _default = extensions;
70
70
  exports.default = _default;require('source-map-support').install();
71
71
 
72
72
 
73
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9leGVjdXRlLmpzIl0sIm5hbWVzIjpbImV4dGVuc2lvbnMiLCJleGVjdXRlIiwic2NyaXB0IiwiYXJncyIsIm1hdGNoIiwibG9nIiwiaW5mbyIsInJlcGxhY2UiLCJ0cmltIiwiZXhlY3V0ZU1vYmlsZSIsIl8iLCJpc0FycmF5IiwiaXNXZWJDb250ZXh0IiwiZXJyb3JzIiwiTm90SW1wbGVtZW50ZWRFcnJvciIsImVuZHBvaW50IiwiY2hyb21lZHJpdmVyIiwiandwcm94eSIsImRvd25zdHJlYW1Qcm90b2NvbCIsIlBST1RPQ09MUyIsIk1KU09OV1AiLCJjb21tYW5kIiwibW9iaWxlQ29tbWFuZCIsIm9wdHMiLCJtb2JpbGVDb21tYW5kc01hcHBpbmciLCJzaGVsbCIsImV4ZWNFbXVDb25zb2xlQ29tbWFuZCIsInN0YXJ0TG9nc0Jyb2FkY2FzdCIsInN0b3BMb2dzQnJvYWRjYXN0IiwiY2hhbmdlUGVybWlzc2lvbnMiLCJnZXRQZXJtaXNzaW9ucyIsInBlcmZvcm1FZGl0b3JBY3Rpb24iLCJzZW5zb3JTZXQiLCJnZXREZXZpY2VUaW1lIiwic3RhcnRTY3JlZW5TdHJlYW1pbmciLCJzdG9wU2NyZWVuU3RyZWFtaW5nIiwiZ2V0Tm90aWZpY2F0aW9ucyIsImxpc3RTbXMiLCJkZWxldGVGaWxlIiwiY2xlYXJBcHAiLCJzdGFydFNlcnZpY2UiLCJzdG9wU2VydmljZSIsInN0YXJ0QWN0aXZpdHkiLCJicm9hZGNhc3QiLCJnZXRDb250ZXh0cyIsInVubG9jayIsInJlZnJlc2hHcHNDYWNoZSIsImhhcyIsIlVua25vd25Db21tYW5kRXJyb3IiLCJrZXlzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUVBLE1BQU1BLFVBQVUsR0FBRyxFQUFuQjs7QUFFQUEsVUFBVSxDQUFDQyxPQUFYLEdBQXFCLGVBQWVBLE9BQWYsQ0FBd0JDLE1BQXhCLEVBQWdDQyxJQUFoQyxFQUFzQztBQUN6RCxNQUFJRCxNQUFNLENBQUNFLEtBQVAsQ0FBYSxVQUFiLENBQUosRUFBOEI7QUFDNUIsU0FBS0MsR0FBTCxDQUFTQyxJQUFULENBQWUsNkJBQTRCSixNQUFPLEdBQWxEO0FBQ0FBLElBQUFBLE1BQU0sR0FBR0EsTUFBTSxDQUFDSyxPQUFQLENBQWUsVUFBZixFQUEyQixFQUEzQixFQUErQkMsSUFBL0IsRUFBVDtBQUNBLFdBQU8sTUFBTSxLQUFLQyxhQUFMLENBQW1CUCxNQUFuQixFQUEyQlEsZ0JBQUVDLE9BQUYsQ0FBVVIsSUFBVixJQUFrQkEsSUFBSSxDQUFDLENBQUQsQ0FBdEIsR0FBNEJBLElBQXZELENBQWI7QUFDRDs7QUFDRCxNQUFJLENBQUMsS0FBS1MsWUFBTCxFQUFMLEVBQTBCO0FBQ3hCLFVBQU0sSUFBSUMsbUJBQU9DLG1CQUFYLEVBQU47QUFDRDs7QUFDRCxRQUFNQyxRQUFRLEdBQUcsS0FBS0MsWUFBTCxDQUFrQkMsT0FBbEIsQ0FBMEJDLGtCQUExQixLQUFpREMsc0JBQVVDLE9BQTNELEdBQ2IsVUFEYSxHQUViLGVBRko7QUFHQSxTQUFPLE1BQU0sS0FBS0osWUFBTCxDQUFrQkMsT0FBbEIsQ0FBMEJJLE9BQTFCLENBQWtDTixRQUFsQyxFQUE0QyxNQUE1QyxFQUFvRDtBQUMvRGIsSUFBQUEsTUFEK0Q7QUFFL0RDLElBQUFBO0FBRitELEdBQXBELENBQWI7QUFJRCxDQWhCRDs7QUFrQkFILFVBQVUsQ0FBQ1MsYUFBWCxHQUEyQixlQUFlQSxhQUFmLENBQThCYSxhQUE5QixFQUE2Q0MsSUFBSSxHQUFHLEVBQXBELEVBQXdEO0FBQ2pGLFFBQU1DLHFCQUFxQixHQUFHO0FBQzVCQyxJQUFBQSxLQUFLLEVBQUUsYUFEcUI7QUFHNUJDLElBQUFBLHFCQUFxQixFQUFFLDZCQUhLO0FBSzVCQyxJQUFBQSxrQkFBa0IsRUFBRSwwQkFMUTtBQU01QkMsSUFBQUEsaUJBQWlCLEVBQUUseUJBTlM7QUFRNUJDLElBQUFBLGlCQUFpQixFQUFFLHlCQVJTO0FBUzVCQyxJQUFBQSxjQUFjLEVBQUUsc0JBVFk7QUFXNUJDLElBQUFBLG1CQUFtQixFQUFFLDJCQVhPO0FBYTVCQyxJQUFBQSxTQUFTLEVBQUUsV0FiaUI7QUFlNUJDLElBQUFBLGFBQWEsRUFBRSxxQkFmYTtBQWlCNUJDLElBQUFBLG9CQUFvQixFQUFFLDRCQWpCTTtBQWtCNUJDLElBQUFBLG1CQUFtQixFQUFFLDJCQWxCTztBQW9CNUJDLElBQUFBLGdCQUFnQixFQUFFLHdCQXBCVTtBQXNCNUJDLElBQUFBLE9BQU8sRUFBRSxlQXRCbUI7QUF3QjVCQyxJQUFBQSxVQUFVLEVBQUUsa0JBeEJnQjtBQTBCNUJDLElBQUFBLFFBQVEsRUFBRSxnQkExQmtCO0FBNEI1QkMsSUFBQUEsWUFBWSxFQUFFLG9CQTVCYztBQTZCNUJDLElBQUFBLFdBQVcsRUFBRSxtQkE3QmU7QUE4QjVCQyxJQUFBQSxhQUFhLEVBQUUscUJBOUJhO0FBK0I1QkMsSUFBQUEsU0FBUyxFQUFFLGlCQS9CaUI7QUFpQzVCQyxJQUFBQSxXQUFXLEVBQUUsbUJBakNlO0FBbUM1QkMsSUFBQUEsTUFBTSxFQUFFLGNBbkNvQjtBQXFDNUJDLElBQUFBLGVBQWUsRUFBRTtBQXJDVyxHQUE5Qjs7QUF3Q0EsTUFBSSxDQUFDcEMsZ0JBQUVxQyxHQUFGLENBQU12QixxQkFBTixFQUE2QkYsYUFBN0IsQ0FBTCxFQUFrRDtBQUNoRCxVQUFNLElBQUlULG1CQUFPbUMsbUJBQVgsQ0FBZ0MsMkJBQTBCMUIsYUFBYyxLQUF6QyxHQUNsQyxRQUFPWixnQkFBRXVDLElBQUYsQ0FBT3pCLHFCQUFQLENBQThCLDBCQURsQyxDQUFOO0FBRUQ7O0FBQ0QsU0FBTyxNQUFNLEtBQUtBLHFCQUFxQixDQUFDRixhQUFELENBQTFCLEVBQTJDQyxJQUEzQyxDQUFiO0FBQ0QsQ0E5Q0Q7O2VBZ0RldkIsVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBlcnJvcnMsIFBST1RPQ09MUyB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuXG5jb25zdCBleHRlbnNpb25zID0ge307XG5cbmV4dGVuc2lvbnMuZXhlY3V0ZSA9IGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGUgKHNjcmlwdCwgYXJncykge1xuICBpZiAoc2NyaXB0Lm1hdGNoKC9ebW9iaWxlOi8pKSB7XG4gICAgdGhpcy5sb2cuaW5mbyhgRXhlY3V0aW5nIG5hdGl2ZSBjb21tYW5kICcke3NjcmlwdH0nYCk7XG4gICAgc2NyaXB0ID0gc2NyaXB0LnJlcGxhY2UoL15tb2JpbGU6LywgJycpLnRyaW0oKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlTW9iaWxlKHNjcmlwdCwgXy5pc0FycmF5KGFyZ3MpID8gYXJnc1swXSA6IGFyZ3MpO1xuICB9XG4gIGlmICghdGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG4gIGNvbnN0IGVuZHBvaW50ID0gdGhpcy5jaHJvbWVkcml2ZXIuandwcm94eS5kb3duc3RyZWFtUHJvdG9jb2wgPT09IFBST1RPQ09MUy5NSlNPTldQXG4gICAgPyAnL2V4ZWN1dGUnXG4gICAgOiAnL2V4ZWN1dGUvc3luYyc7XG4gIHJldHVybiBhd2FpdCB0aGlzLmNocm9tZWRyaXZlci5qd3Byb3h5LmNvbW1hbmQoZW5kcG9pbnQsICdQT1NUJywge1xuICAgIHNjcmlwdCxcbiAgICBhcmdzLFxuICB9KTtcbn07XG5cbmV4dGVuc2lvbnMuZXhlY3V0ZU1vYmlsZSA9IGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVNb2JpbGUgKG1vYmlsZUNvbW1hbmQsIG9wdHMgPSB7fSkge1xuICBjb25zdCBtb2JpbGVDb21tYW5kc01hcHBpbmcgPSB7XG4gICAgc2hlbGw6ICdtb2JpbGVTaGVsbCcsXG5cbiAgICBleGVjRW11Q29uc29sZUNvbW1hbmQ6ICdtb2JpbGVFeGVjRW11Q29uc29sZUNvbW1hbmQnLFxuXG4gICAgc3RhcnRMb2dzQnJvYWRjYXN0OiAnbW9iaWxlU3RhcnRMb2dzQnJvYWRjYXN0JyxcbiAgICBzdG9wTG9nc0Jyb2FkY2FzdDogJ21vYmlsZVN0b3BMb2dzQnJvYWRjYXN0JyxcblxuICAgIGNoYW5nZVBlcm1pc3Npb25zOiAnbW9iaWxlQ2hhbmdlUGVybWlzc2lvbnMnLFxuICAgIGdldFBlcm1pc3Npb25zOiAnbW9iaWxlR2V0UGVybWlzc2lvbnMnLFxuXG4gICAgcGVyZm9ybUVkaXRvckFjdGlvbjogJ21vYmlsZVBlcmZvcm1FZGl0b3JBY3Rpb24nLFxuXG4gICAgc2Vuc29yU2V0OiAnc2Vuc29yU2V0JyxcblxuICAgIGdldERldmljZVRpbWU6ICdtb2JpbGVHZXREZXZpY2VUaW1lJyxcblxuICAgIHN0YXJ0U2NyZWVuU3RyZWFtaW5nOiAnbW9iaWxlU3RhcnRTY3JlZW5TdHJlYW1pbmcnLFxuICAgIHN0b3BTY3JlZW5TdHJlYW1pbmc6ICdtb2JpbGVTdG9wU2NyZWVuU3RyZWFtaW5nJyxcblxuICAgIGdldE5vdGlmaWNhdGlvbnM6ICdtb2JpbGVHZXROb3RpZmljYXRpb25zJyxcblxuICAgIGxpc3RTbXM6ICdtb2JpbGVMaXN0U21zJyxcblxuICAgIGRlbGV0ZUZpbGU6ICdtb2JpbGVEZWxldGVGaWxlJyxcblxuICAgIGNsZWFyQXBwOiAnbW9iaWxlQ2xlYXJBcHAnLFxuXG4gICAgc3RhcnRTZXJ2aWNlOiAnbW9iaWxlU3RhcnRTZXJ2aWNlJyxcbiAgICBzdG9wU2VydmljZTogJ21vYmlsZVN0b3BTZXJ2aWNlJyxcbiAgICBzdGFydEFjdGl2aXR5OiAnbW9iaWxlU3RhcnRBY3Rpdml0eScsXG4gICAgYnJvYWRjYXN0OiAnbW9iaWxlQnJvYWRjYXN0JyxcblxuICAgIGdldENvbnRleHRzOiAnbW9iaWxlR2V0Q29udGV4dHMnLFxuXG4gICAgdW5sb2NrOiAnbW9iaWxlVW5sb2NrJyxcblxuICAgIHJlZnJlc2hHcHNDYWNoZTogJ21vYmlsZVJlZnJlc2hHcHNDYWNoZScsXG4gIH07XG5cbiAgaWYgKCFfLmhhcyhtb2JpbGVDb21tYW5kc01hcHBpbmcsIG1vYmlsZUNvbW1hbmQpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Vbmtub3duQ29tbWFuZEVycm9yKGBVbmtub3duIG1vYmlsZSBjb21tYW5kIFwiJHttb2JpbGVDb21tYW5kfVwiLiBgICtcbiAgICAgIGBPbmx5ICR7Xy5rZXlzKG1vYmlsZUNvbW1hbmRzTWFwcGluZyl9IGNvbW1hbmRzIGFyZSBzdXBwb3J0ZWQuYCk7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IHRoaXNbbW9iaWxlQ29tbWFuZHNNYXBwaW5nW21vYmlsZUNvbW1hbmRdXShvcHRzKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy9leGVjdXRlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
73
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2V4ZWN1dGUuanMiLCJuYW1lcyI6WyJleHRlbnNpb25zIiwiZXhlY3V0ZSIsInNjcmlwdCIsImFyZ3MiLCJtYXRjaCIsImxvZyIsImluZm8iLCJyZXBsYWNlIiwidHJpbSIsImV4ZWN1dGVNb2JpbGUiLCJfIiwiaXNBcnJheSIsImlzV2ViQ29udGV4dCIsImVycm9ycyIsIk5vdEltcGxlbWVudGVkRXJyb3IiLCJlbmRwb2ludCIsImNocm9tZWRyaXZlciIsImp3cHJveHkiLCJkb3duc3RyZWFtUHJvdG9jb2wiLCJQUk9UT0NPTFMiLCJNSlNPTldQIiwiY29tbWFuZCIsIm1vYmlsZUNvbW1hbmQiLCJvcHRzIiwibW9iaWxlQ29tbWFuZHNNYXBwaW5nIiwic2hlbGwiLCJleGVjRW11Q29uc29sZUNvbW1hbmQiLCJzdGFydExvZ3NCcm9hZGNhc3QiLCJzdG9wTG9nc0Jyb2FkY2FzdCIsImNoYW5nZVBlcm1pc3Npb25zIiwiZ2V0UGVybWlzc2lvbnMiLCJwZXJmb3JtRWRpdG9yQWN0aW9uIiwic2Vuc29yU2V0IiwiZ2V0RGV2aWNlVGltZSIsInN0YXJ0U2NyZWVuU3RyZWFtaW5nIiwic3RvcFNjcmVlblN0cmVhbWluZyIsImdldE5vdGlmaWNhdGlvbnMiLCJsaXN0U21zIiwiZGVsZXRlRmlsZSIsImNsZWFyQXBwIiwic3RhcnRTZXJ2aWNlIiwic3RvcFNlcnZpY2UiLCJzdGFydEFjdGl2aXR5IiwiYnJvYWRjYXN0IiwiZ2V0Q29udGV4dHMiLCJ1bmxvY2siLCJyZWZyZXNoR3BzQ2FjaGUiLCJoYXMiLCJVbmtub3duQ29tbWFuZEVycm9yIiwia2V5cyJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9leGVjdXRlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBlcnJvcnMsIFBST1RPQ09MUyB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuXG5jb25zdCBleHRlbnNpb25zID0ge307XG5cbmV4dGVuc2lvbnMuZXhlY3V0ZSA9IGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGUgKHNjcmlwdCwgYXJncykge1xuICBpZiAoc2NyaXB0Lm1hdGNoKC9ebW9iaWxlOi8pKSB7XG4gICAgdGhpcy5sb2cuaW5mbyhgRXhlY3V0aW5nIG5hdGl2ZSBjb21tYW5kICcke3NjcmlwdH0nYCk7XG4gICAgc2NyaXB0ID0gc2NyaXB0LnJlcGxhY2UoL15tb2JpbGU6LywgJycpLnRyaW0oKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlTW9iaWxlKHNjcmlwdCwgXy5pc0FycmF5KGFyZ3MpID8gYXJnc1swXSA6IGFyZ3MpO1xuICB9XG4gIGlmICghdGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG4gIGNvbnN0IGVuZHBvaW50ID0gdGhpcy5jaHJvbWVkcml2ZXIuandwcm94eS5kb3duc3RyZWFtUHJvdG9jb2wgPT09IFBST1RPQ09MUy5NSlNPTldQXG4gICAgPyAnL2V4ZWN1dGUnXG4gICAgOiAnL2V4ZWN1dGUvc3luYyc7XG4gIHJldHVybiBhd2FpdCB0aGlzLmNocm9tZWRyaXZlci5qd3Byb3h5LmNvbW1hbmQoZW5kcG9pbnQsICdQT1NUJywge1xuICAgIHNjcmlwdCxcbiAgICBhcmdzLFxuICB9KTtcbn07XG5cbmV4dGVuc2lvbnMuZXhlY3V0ZU1vYmlsZSA9IGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVNb2JpbGUgKG1vYmlsZUNvbW1hbmQsIG9wdHMgPSB7fSkge1xuICBjb25zdCBtb2JpbGVDb21tYW5kc01hcHBpbmcgPSB7XG4gICAgc2hlbGw6ICdtb2JpbGVTaGVsbCcsXG5cbiAgICBleGVjRW11Q29uc29sZUNvbW1hbmQ6ICdtb2JpbGVFeGVjRW11Q29uc29sZUNvbW1hbmQnLFxuXG4gICAgc3RhcnRMb2dzQnJvYWRjYXN0OiAnbW9iaWxlU3RhcnRMb2dzQnJvYWRjYXN0JyxcbiAgICBzdG9wTG9nc0Jyb2FkY2FzdDogJ21vYmlsZVN0b3BMb2dzQnJvYWRjYXN0JyxcblxuICAgIGNoYW5nZVBlcm1pc3Npb25zOiAnbW9iaWxlQ2hhbmdlUGVybWlzc2lvbnMnLFxuICAgIGdldFBlcm1pc3Npb25zOiAnbW9iaWxlR2V0UGVybWlzc2lvbnMnLFxuXG4gICAgcGVyZm9ybUVkaXRvckFjdGlvbjogJ21vYmlsZVBlcmZvcm1FZGl0b3JBY3Rpb24nLFxuXG4gICAgc2Vuc29yU2V0OiAnc2Vuc29yU2V0JyxcblxuICAgIGdldERldmljZVRpbWU6ICdtb2JpbGVHZXREZXZpY2VUaW1lJyxcblxuICAgIHN0YXJ0U2NyZWVuU3RyZWFtaW5nOiAnbW9iaWxlU3RhcnRTY3JlZW5TdHJlYW1pbmcnLFxuICAgIHN0b3BTY3JlZW5TdHJlYW1pbmc6ICdtb2JpbGVTdG9wU2NyZWVuU3RyZWFtaW5nJyxcblxuICAgIGdldE5vdGlmaWNhdGlvbnM6ICdtb2JpbGVHZXROb3RpZmljYXRpb25zJyxcblxuICAgIGxpc3RTbXM6ICdtb2JpbGVMaXN0U21zJyxcblxuICAgIGRlbGV0ZUZpbGU6ICdtb2JpbGVEZWxldGVGaWxlJyxcblxuICAgIGNsZWFyQXBwOiAnbW9iaWxlQ2xlYXJBcHAnLFxuXG4gICAgc3RhcnRTZXJ2aWNlOiAnbW9iaWxlU3RhcnRTZXJ2aWNlJyxcbiAgICBzdG9wU2VydmljZTogJ21vYmlsZVN0b3BTZXJ2aWNlJyxcbiAgICBzdGFydEFjdGl2aXR5OiAnbW9iaWxlU3RhcnRBY3Rpdml0eScsXG4gICAgYnJvYWRjYXN0OiAnbW9iaWxlQnJvYWRjYXN0JyxcblxuICAgIGdldENvbnRleHRzOiAnbW9iaWxlR2V0Q29udGV4dHMnLFxuXG4gICAgdW5sb2NrOiAnbW9iaWxlVW5sb2NrJyxcblxuICAgIHJlZnJlc2hHcHNDYWNoZTogJ21vYmlsZVJlZnJlc2hHcHNDYWNoZScsXG4gIH07XG5cbiAgaWYgKCFfLmhhcyhtb2JpbGVDb21tYW5kc01hcHBpbmcsIG1vYmlsZUNvbW1hbmQpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Vbmtub3duQ29tbWFuZEVycm9yKGBVbmtub3duIG1vYmlsZSBjb21tYW5kIFwiJHttb2JpbGVDb21tYW5kfVwiLiBgICtcbiAgICAgIGBPbmx5ICR7Xy5rZXlzKG1vYmlsZUNvbW1hbmRzTWFwcGluZyl9IGNvbW1hbmRzIGFyZSBzdXBwb3J0ZWQuYCk7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IHRoaXNbbW9iaWxlQ29tbWFuZHNNYXBwaW5nW21vYmlsZUNvbW1hbmRdXShvcHRzKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUEsTUFBTUEsVUFBVSxHQUFHLEVBQW5COztBQUVBQSxVQUFVLENBQUNDLE9BQVgsR0FBcUIsZUFBZUEsT0FBZixDQUF3QkMsTUFBeEIsRUFBZ0NDLElBQWhDLEVBQXNDO0VBQ3pELElBQUlELE1BQU0sQ0FBQ0UsS0FBUCxDQUFhLFVBQWIsQ0FBSixFQUE4QjtJQUM1QixLQUFLQyxHQUFMLENBQVNDLElBQVQsQ0FBZSw2QkFBNEJKLE1BQU8sR0FBbEQ7SUFDQUEsTUFBTSxHQUFHQSxNQUFNLENBQUNLLE9BQVAsQ0FBZSxVQUFmLEVBQTJCLEVBQTNCLEVBQStCQyxJQUEvQixFQUFUO0lBQ0EsT0FBTyxNQUFNLEtBQUtDLGFBQUwsQ0FBbUJQLE1BQW5CLEVBQTJCUSxnQkFBRUMsT0FBRixDQUFVUixJQUFWLElBQWtCQSxJQUFJLENBQUMsQ0FBRCxDQUF0QixHQUE0QkEsSUFBdkQsQ0FBYjtFQUNEOztFQUNELElBQUksQ0FBQyxLQUFLUyxZQUFMLEVBQUwsRUFBMEI7SUFDeEIsTUFBTSxJQUFJQyxtQkFBT0MsbUJBQVgsRUFBTjtFQUNEOztFQUNELE1BQU1DLFFBQVEsR0FBRyxLQUFLQyxZQUFMLENBQWtCQyxPQUFsQixDQUEwQkMsa0JBQTFCLEtBQWlEQyxzQkFBVUMsT0FBM0QsR0FDYixVQURhLEdBRWIsZUFGSjtFQUdBLE9BQU8sTUFBTSxLQUFLSixZQUFMLENBQWtCQyxPQUFsQixDQUEwQkksT0FBMUIsQ0FBa0NOLFFBQWxDLEVBQTRDLE1BQTVDLEVBQW9EO0lBQy9EYixNQUQrRDtJQUUvREM7RUFGK0QsQ0FBcEQsQ0FBYjtBQUlELENBaEJEOztBQWtCQUgsVUFBVSxDQUFDUyxhQUFYLEdBQTJCLGVBQWVBLGFBQWYsQ0FBOEJhLGFBQTlCLEVBQTZDQyxJQUFJLEdBQUcsRUFBcEQsRUFBd0Q7RUFDakYsTUFBTUMscUJBQXFCLEdBQUc7SUFDNUJDLEtBQUssRUFBRSxhQURxQjtJQUc1QkMscUJBQXFCLEVBQUUsNkJBSEs7SUFLNUJDLGtCQUFrQixFQUFFLDBCQUxRO0lBTTVCQyxpQkFBaUIsRUFBRSx5QkFOUztJQVE1QkMsaUJBQWlCLEVBQUUseUJBUlM7SUFTNUJDLGNBQWMsRUFBRSxzQkFUWTtJQVc1QkMsbUJBQW1CLEVBQUUsMkJBWE87SUFhNUJDLFNBQVMsRUFBRSxXQWJpQjtJQWU1QkMsYUFBYSxFQUFFLHFCQWZhO0lBaUI1QkMsb0JBQW9CLEVBQUUsNEJBakJNO0lBa0I1QkMsbUJBQW1CLEVBQUUsMkJBbEJPO0lBb0I1QkMsZ0JBQWdCLEVBQUUsd0JBcEJVO0lBc0I1QkMsT0FBTyxFQUFFLGVBdEJtQjtJQXdCNUJDLFVBQVUsRUFBRSxrQkF4QmdCO0lBMEI1QkMsUUFBUSxFQUFFLGdCQTFCa0I7SUE0QjVCQyxZQUFZLEVBQUUsb0JBNUJjO0lBNkI1QkMsV0FBVyxFQUFFLG1CQTdCZTtJQThCNUJDLGFBQWEsRUFBRSxxQkE5QmE7SUErQjVCQyxTQUFTLEVBQUUsaUJBL0JpQjtJQWlDNUJDLFdBQVcsRUFBRSxtQkFqQ2U7SUFtQzVCQyxNQUFNLEVBQUUsY0FuQ29CO0lBcUM1QkMsZUFBZSxFQUFFO0VBckNXLENBQTlCOztFQXdDQSxJQUFJLENBQUNwQyxnQkFBRXFDLEdBQUYsQ0FBTXZCLHFCQUFOLEVBQTZCRixhQUE3QixDQUFMLEVBQWtEO0lBQ2hELE1BQU0sSUFBSVQsbUJBQU9tQyxtQkFBWCxDQUFnQywyQkFBMEIxQixhQUFjLEtBQXpDLEdBQ2xDLFFBQU9aLGdCQUFFdUMsSUFBRixDQUFPekIscUJBQVAsQ0FBOEIsMEJBRGxDLENBQU47RUFFRDs7RUFDRCxPQUFPLE1BQU0sS0FBS0EscUJBQXFCLENBQUNGLGFBQUQsQ0FBMUIsRUFBMkNDLElBQTNDLENBQWI7QUFDRCxDQTlDRDs7ZUFnRGV2QixVIn0=
@@ -232,4 +232,4 @@ var _default = commands;
232
232
  exports.default = _default;require('source-map-support').install();
233
233
 
234
234
 
235
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9maWxlLWFjdGlvbnMuanMiXSwibmFtZXMiOlsiQ09OVEFJTkVSX1BBVEhfTUFSS0VSIiwiQ09OVEFJTkVSX1BBVEhfUEFUVEVSTiIsIlJlZ0V4cCIsIkFORFJPSURfTUVESUFfUkVTQ0FOX0lOVEVOVCIsImNvbW1hbmRzIiwicGFyc2VDb250YWluZXJQYXRoIiwicmVtb3RlUGF0aCIsIm1hdGNoIiwiZXhlYyIsIkVycm9yIiwicGF0aCIsInBvc2l4IiwicmVzb2x2ZSIsInNjYW5NZWRpYSIsImFkYiIsImxvZyIsImRlYnVnIiwiZ2V0QXBpTGV2ZWwiLCJzaGVsbCIsImUiLCJ3YXJuIiwic3RkZXJyIiwibWVzc2FnZSIsImVzY2FwZVBhdGgiLCJwIiwicmVwbGFjZSIsInB1bGxGaWxlIiwiZW5kc1dpdGgiLCJlcnJvcnMiLCJJbnZhbGlkQXJndW1lbnRFcnJvciIsInRtcERlc3RpbmF0aW9uIiwic3RhcnRzV2l0aCIsInBhY2thZ2VJZCIsInBhdGhJbkNvbnRhaW5lciIsImJhc2VuYW1lIiwiZXJyb3JBbmRUaHJvdyIsImxvY2FsRmlsZSIsInRlbXBEaXIiLCJwcmVmaXgiLCJzdWZmaXgiLCJwdWxsIiwidXRpbCIsInRvSW5NZW1vcnlCYXNlNjQiLCJ0b1N0cmluZyIsImZzIiwiZXhpc3RzIiwidW5saW5rIiwicHVzaEZpbGUiLCJiYXNlNjREYXRhIiwiXyIsImlzQXJyYXkiLCJCdWZmZXIiLCJmcm9tIiwiY29udGVudCIsIndyaXRlRmlsZSIsImRpcm5hbWUiLCJwdXNoIiwicHVsbEZvbGRlciIsImxvY2FsRm9sZGVyIiwiemlwIiwidG9Jbk1lbW9yeVppcCIsImVuY29kZVRvQmFzZTY0IiwiZGVsZXRlRmlsZU9yRm9sZGVyIiwicGVyZm9ybVJlbW90ZUZzQ2hlY2siLCJvcCIsInJ1bkFzIiwicGFzc0ZsYWciLCJjaGVja0NtZCIsImZ1bGxDbWQiLCJpbmNsdWRlcyIsImlnbiIsImlzRmlsZSIsImlzRGlyIiwiaXNQcmVzZW50Iiwi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QyxDQUFWLENBQU47QUFDRDs7QUFDRCxNQUFJLE1BQU1ELFNBQVMsQ0FBQ0MsT0FBRCxFQUFVQyxLQUFWLENBQW5CLEVBQXFDO0FBQ25DLFNBQUs1RCxHQUFMLENBQVNvQixhQUFULENBQXdCLGdCQUFldUMsT0FBUSxzQ0FBeEIsR0FDcEIsaUJBREg7QUFFRDs7QUFDRCxTQUFPLElBQVA7QUFDRDs7QUFrQkR0RSxRQUFRLENBQUMwRSxnQkFBVCxHQUE0QixlQUFlQSxnQkFBZixDQUFpQ0MsSUFBSSxHQUFHLEVBQXhDLEVBQTRDO0FBQ3RFLFFBQU07QUFBQ3pFLElBQUFBO0FBQUQsTUFBZXlFLElBQXJCOztBQUNBLE1BQUksQ0FBQ3pFLFVBQUwsRUFBaUI7QUFDZixVQUFNLElBQUlzQixtQkFBT0Msb0JBQVgsQ0FBaUMsd0NBQWpDLENBQU47QUFDRDs7QUFDRCxNQUFJdkIsVUFBVSxDQUFDcUIsUUFBWCxDQUFvQixHQUFwQixDQUFKLEVBQThCO0FBQzVCLFVBQU0sSUFBSUMsbUJBQU9DLG9CQUFYLENBQ0gsd0VBQUQsR0FDQyxJQUFHdkIsVUFBVyxvQkFGWCxDQUFOO0FBSUQ7O0FBQ0QsU0FBTyxNQUFNd0Qsa0JBQWtCLENBQUMsS0FBS2hELEdBQU4sRUFBV1IsVUFBWCxDQUEvQjtBQUNELENBWkQ7O2VBZWVGLFEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZnMsIHV0aWwsIHppcCwgdGVtcERpciB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuXG5cbmNvbnN0IENPTlRBSU5FUl9QQVRIX01BUktFUiA9ICdAJztcbi8vIGh0dHBzOi8vcmVnZXgxMDEuY29tL3IvUExkQjBHLzJcbmNvbnN0IENPTlRBSU5FUl9QQVRIX1BBVFRFUk4gPSBuZXcgUmVnRXhwKGBeJHtDT05UQUlORVJfUEFUSF9NQVJLRVJ9KFteL10rKS8oLispYCk7XG5jb25zdCBBTkRST0lEX01FRElBX1JFU0NBTl9JTlRFTlQgPSAnYW5kcm9pZC5pbnRlbnQuYWN0aW9uLk1FRElBX1NDQU5ORVJfU0NBTl9GSUxFJztcblxuXG5jb25zdCBjb21tYW5kcyA9IHt9O1xuXG4vKipcbiAqIFBhcnNlcyB0aGUgYWN0dWFsIGRlc3RpbmF0aW9uIHBhdGggZnJvbSB0aGUgZ2l2ZW4gdmFsdWVcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVtb3RlUGF0aCBUaGUgcHJlZm9ybWF0dGVkIHJlbW90ZSBwYXRoLCB3aGljaCBsb29rcyBsaWtlXG4gKiBgQG15LmFwcC5pZC9teS9wYXRoYFxuICogQHJldHVybnMge0FycmF5PHN0cmluZz59IEFuIGFycmF5LCB3aGVyZSB0aGUgZmlyc3QgaXRlbSBpcyB0aGUgcGFyc2VkIHBhY2thZ2VcbiAqIGlkZW50aWZpZXIgYW5kIHRoZSBzZWNvbmQgb25lIGlzIHRoZSBhY3R1YWwgZGVzdGluYXRpb24gcGF0aCBpbnNpZGUgdGhlIHBhY2thZ2UuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGdpdmVuIHN0cmluZyBjYW5ub3QgYmUgcGFyc2VkXG4gKi9cbmZ1bmN0aW9uIHBhcnNlQ29udGFpbmVyUGF0aCAocmVtb3RlUGF0aCkge1xuICBjb25zdCBtYXRjaCA9IENPTlRBSU5FUl9QQVRIX1BBVFRFUk4uZXhlYyhyZW1vdGVQYXRoKTtcbiAgaWYgKCFtYXRjaCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSXQgaXMgZXhwZWN0ZWQgdGhhdCBwYWNrYWdlIGlkZW50aWZpZXIgaXMgc2VwYXJhdGVkIGZyb20gdGhlIHJlbGF0aXZlIHBhdGggd2l0aCBhIHNpbmdsZSBzbGFzaC4gYCArXG4gICAgICBgJyR7cmVtb3RlUGF0aH0nIGlzIGdpdmVuIGluc3RlYWRgKTtcbiAgfVxuICByZXR1cm4gW21hdGNoWzFdLCBwYXRoLnBvc2l4LnJlc29sdmUoYC9kYXRhL2RhdGEvJHttYXRjaFsxXX1gLCBtYXRjaFsyXSldO1xufVxuXG4vKipcbiAqIFNjYW5zIHRoZSBnaXZlbiBmaWxlL2ZvbGRlciBvbiB0aGUgcmVtb3RlIGRldmljZVxuICogYW5kIGFkZHMgbWF0Y2hpbmcgaXRlbXMgdG8gdGhlIGRldmljZSdzIG1lZGlhIGxpYnJhcnkuXG4gKiBFeGNlcHRpb25zIGFyZSBpZ25vcmVkIGFuZCB3cml0dGVuIGludG8gdGhlIGxvZy5cbiAqXG4gKiBAcGFyYW0ge0FEQn0gYWRiIEFEQiBpbnN0YW5jZVxuICogQHBhcmFtIHtPYmplY3Q/fSBsb2cgTG9nZ2VyIGluc3RhbmNlXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVtb3RlUGF0aCBUaGUgZmlsZS9mb2xkZXIgcGF0aCBvbiB0aGUgcmVtb3RlIGRldmljZVxuICovXG5hc3luYyBmdW5jdGlvbiBzY2FuTWVkaWEgKGFkYiwgcmVtb3RlUGF0aCwgbG9nID0gbnVsbCkge1xuICBsb2c/LmRlYnVnKGBQZXJmb3JtaW5nIG1lZGlhIHNjYW4gb2YgJyR7cmVtb3RlUGF0aH0nYCk7XG4gIHRyeSB7XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FwcGl1bS9hcHBpdW0vaXNzdWVzLzE2MTg0XG4gICAgaWYgKGF3YWl0IGFkYi5nZXRBcGlMZXZlbCgpID49IDI5KSB7XG4gICAgICBhd2FpdCBhZGIuc2Nhbk1lZGlhKHJlbW90ZVBhdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBhZGIuc2hlbGwoW1xuICAgICAgICAnYW0nLCAnYnJvYWRjYXN0JyxcbiAgICAgICAgJy1hJywgQU5EUk9JRF9NRURJQV9SRVNDQU5fSU5URU5ULFxuICAgICAgICAnLWQnLCBgZmlsZTovLyR7cmVtb3RlUGF0aH1gXG4gICAgICBdKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2c/Lndhcm4oYElnbm9yaW5nIGFuIHVuZXhwZWN0ZWQgZXJyb3IgdXBvbiBtZWRpYSBzY2FubmluZyBvZiAnJHtyZW1vdGVQYXRofSc6ICR7ZS5zdGRlcnIgfHwgZS5tZXNzYWdlfWApO1xuICB9XG59XG5cbi8qKlxuICogQSBzbWFsbCBoZWxwZXIsIHdoaWNoIGVzY2FwZXMgc2luZ2xlIHF1b3RlcyBpbiBwYXRocyxcbiAqIHNvIHRoZXkgYXJlIHNhZmUgdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50cyBvZiBzaGVsbCBjb21tYW5kc1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwIFRoZSBpbml0aWFsIHJlbW90ZSBwYXRoXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZXNjYXBlZCBwYXRoIHZhbHVlXG4gKi9cbmZ1bmN0aW9uIGVzY2FwZVBhdGggKHApIHtcbiAgcmV0dXJuIHAucmVwbGFjZSgvJy9nLCBgXFxcXCdgKTtcbn1cblxuLyoqXG4gKiBQdWxscyBhIHJlbW90ZSBmaWxlIGZyb20gdGhlIGRldmljZS5cbiAqIEl0IGlzIHJlcXVpcmVkLCB0aGF0IGEgcGFja2FnZSBoYXMgZGVidWdnaW5nIGZsYWcgZW5hYmxlZFxuICogaW4gb3JkZXIgdG8gYWNjZXNzIGl0cyBmaWxlcy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVtb3RlUGF0aCBUaGUgZnVsbCBwYXRoIHRvIHRoZSByZW1vdGUgZmlsZVxuICogb3IgYSBzcGVjaWFsbHkgZm9ybWF0dGVkIHBhdGgsIHdoaWNoIHBvaW50cyB0byBhbiBpdGVtIGluc2lkZSBhcHAgYnVuZGxlXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBCYXNlNjQgZW5jb2RlZCBjb250ZW50IG9mIHRoZSBwdWxsZWQgZmlsZVxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBwdWxsIG9wZXJhdGlvbiBmYWlsZWRcbiAqL1xuY29tbWFuZHMucHVsbEZpbGUgPSBhc3luYyBmdW5jdGlvbiBwdWxsRmlsZSAocmVtb3RlUGF0aCkge1xuICBpZiAocmVtb3RlUGF0aC5lbmRzV2l0aCgnLycpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgSXQgaXMgZXhwZWN0ZWQgdGhhdCByZW1vdGUgcGF0aCBwb2ludHMgdG8gYSBmaWxlIGFuZCBub3QgdG8gYSBmb2xkZXIuIGAgK1xuICAgICAgYCcke3JlbW90ZVBhdGh9JyBpcyBnaXZlbiBpbnN0ZWFkYCk7XG4gIH1cbiAgbGV0IHRtcERlc3RpbmF0aW9uID0gbnVsbDtcbiAgaWYgKHJlbW90ZVBhdGguc3RhcnRzV2l0aChDT05UQUlORVJfUEFUSF9NQVJLRVIpKSB7XG4gICAgY29uc3QgW3BhY2thZ2VJZCwgcGF0aEluQ29udGFpbmVyXSA9IHBhcnNlQ29udGFpbmVyUGF0aChyZW1vdGVQYXRoKTtcbiAgICB0aGlzLmxvZy5kZWJ1ZyhgUGFyc2VkIHBhY2thZ2UgaWRlbnRpZmllciAnJHtwYWNrYWdlSWR9JyBmcm9tICcke3JlbW90ZVBhdGh9Jy4gV2lsbCBnZXQgdGhlIGRhdGEgZnJvbSAnJHtwYXRoSW5Db250YWluZXJ9J2ApO1xuICAgIHRtcERlc3RpbmF0aW9uID0gYC9kYXRhL2xvY2FsL3RtcC8ke3BhdGgucG9zaXguYmFzZW5hbWUocGF0aEluQ29udGFpbmVyKX1gO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmFkYi5zaGVsbChbJ3J1bi1hcycsIHBhY2thZ2VJZCwgYGNobW9kIDc3NyAnJHtlc2NhcGVQYXRoKHBhdGhJbkNvbnRhaW5lcil9J2BdKTtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnNoZWxsKFtcbiAgICAgICAgJ3J1bi1hcycsIHBhY2thZ2VJZCxcbiAgICAgICAgYGNwIC1mICcke2VzY2FwZVBhdGgocGF0aEluQ29udGFpbmVyKX0nICcke2VzY2FwZVBhdGgodG1wRGVzdGluYXRpb24pfSdgXG4gICAgICBdKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBDYW5ub3QgYWNjZXNzIHRoZSBjb250YWluZXIgb2YgJyR7cGFja2FnZUlkfScgYXBwbGljYXRpb24uIGAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgYElzIHRoZSBhcHBsaWNhdGlvbiBpbnN0YWxsZWQgYW5kIGhhcyAnZGVidWdnYWJsZScgYnVpbGQgb3B0aW9uIHNldCB0byB0cnVlPyBgICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IGxvY2FsRmlsZSA9IGF3YWl0IHRlbXBEaXIucGF0aCh7cHJlZml4OiAnYXBwaXVtJywgc3VmZml4OiAnLnRtcCd9KTtcbiAgdHJ5IHtcbiAgICBhd2FpdCB0aGlzLmFkYi5wdWxsKHRtcERlc3RpbmF0aW9uIHx8IHJlbW90ZVBhdGgsIGxvY2FsRmlsZSk7XG4gICAgcmV0dXJuIChhd2FpdCB1dGlsLnRvSW5NZW1vcnlCYXNlNjQobG9jYWxGaWxlKSkudG9TdHJpbmcoKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBpZiAoYXdhaXQgZnMuZXhpc3RzKGxvY2FsRmlsZSkpIHtcbiAgICAgIGF3YWl0IGZzLnVubGluayhsb2NhbEZpbGUpO1xuICAgIH1cbiAgICBpZiAodG1wRGVzdGluYXRpb24pIHtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnNoZWxsKFsncm0nLCAnLWYnLCB0bXBEZXN0aW5hdGlvbl0pO1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBQdXNoZWQgdGhlIGdpdmVuIGRhdGEgdG8gYSBmaWxlIG9uIHRoZSByZW1vdGUgZGV2aWNlXG4gKiBJdCBpcyByZXF1aXJlZCwgdGhhdCBhIHBhY2thZ2UgaGFzIGRlYnVnZ2luZyBmbGFnIGVuYWJsZWRcbiAqIGluIG9yZGVyIHRvIGFjY2VzcyBpdHMgZmlsZXMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHJlbW90ZVBhdGggVGhlIGZ1bGwgcGF0aCB0byB0aGUgcmVtb3RlIGZpbGUgb3JcbiAqIGEgZmlsZSBpbnNpZGUgYSBwYWNrYWdlIGJ1bmRsZVxuICogQHBhcmFtIHtzdHJpbmd9IGJhc2U2NERhdGEgQmFzZTY0IGVuY29kZWQgZGF0YSB0byBiZSB3cml0dGVuIHRvIHRoZVxuICogcmVtb3RlIGZpbGUuIFRoZSByZW1vdGUgZmlsZSB3aWxsIGJlIHNpbGVudGx5IG92ZXJyaWRkZW4gaWYgaXQgYWxyZWFkeSBleGlzdHMuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIHB1c2hpbmcgdGhlIGRhdGFcbiAqL1xuY29tbWFuZHMucHVzaEZpbGUgPSBhc3luYyBmdW5jdGlvbiBwdXNoRmlsZSAocmVtb3RlUGF0aCwgYmFzZTY0RGF0YSkge1xuICBpZiAocmVtb3RlUGF0aC5lbmRzV2l0aCgnLycpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgIGBJdCBpcyBleHBlY3RlZCB0aGF0IHJlbW90ZSBwYXRoIHBvaW50cyB0byBhIGZpbGUgYW5kIG5vdCB0byBhIGZvbGRlci4gYCArXG4gICAgICBgJyR7cmVtb3RlUGF0aH0nIGlzIGdpdmVuIGluc3RlYWRgXG4gICAgKTtcbiAgfVxuICBjb25zdCBsb2NhbEZpbGUgPSBhd2FpdCB0ZW1wRGlyLnBhdGgoe3ByZWZpeDogJ2FwcGl1bScsIHN1ZmZpeDogJy50bXAnfSk7XG4gIGlmIChfLmlzQXJyYXkoYmFzZTY0RGF0YSkpIHtcbiAgICAvLyBzb21lIGNsaWVudHMgKGFoZW0pIGphdmEsIHNlbmQgYSBieXRlIGFycmF5IGVuY29kaW5nIHV0ZjggY2hhcmFjdGVyc1xuICAgIC8vIGluc3RlYWQgb2YgYSBzdHJpbmcsIHdoaWNoIHdvdWxkIGJlIGluZmluaXRlbHkgYmV0dGVyIVxuICAgIGJhc2U2NERhdGEgPSBCdWZmZXIuZnJvbShiYXNlNjREYXRhKS50b1N0cmluZygndXRmOCcpO1xuICB9XG4gIGNvbnN0IGNvbnRlbnQgPSBCdWZmZXIuZnJvbShiYXNlNjREYXRhLCAnYmFzZTY0Jyk7XG4gIGxldCB0bXBEZXN0aW5hdGlvbiA9IG51bGw7XG4gIHRyeSB7XG4gICAgYXdhaXQgZnMud3JpdGVGaWxlKGxvY2FsRmlsZSwgY29udGVudC50b1N0cmluZygnYmluYXJ5JyksICdiaW5hcnknKTtcbiAgICBpZiAocmVtb3RlUGF0aC5zdGFydHNXaXRoKENPTlRBSU5FUl9QQVRIX01BUktFUikpIHtcbiAgICAgIGNvbnN0IFtwYWNrYWdlSWQsIHBhdGhJbkNvbnRhaW5lcl0gPSBwYXJzZUNvbnRhaW5lclBhdGgocmVtb3RlUGF0aCk7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgUGFyc2VkIHBhY2thZ2UgaWRlbnRpZmllciAnJHtwYWNrYWdlSWR9JyBmcm9tICcke3JlbW90ZVBhdGh9Jy4gYCArXG4gICAgICAgIGBXaWxsIHB1dCB0aGUgZGF0YSBpbnRvICcke3BhdGhJbkNvbnRhaW5lcn0nYCk7XG4gICAgICB0bXBEZXN0aW5hdGlvbiA9IGAvZGF0YS9sb2NhbC90bXAvJHtwYXRoLnBvc2l4LmJhc2VuYW1lKHBhdGhJbkNvbnRhaW5lcil9YDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLnNoZWxsKFxuICAgICAgICAgIFsncnVuLWFzJywgcGFja2FnZUlkLCBgbWtkaXIgLXAgJyR7ZXNjYXBlUGF0aChwYXRoLnBvc2l4LmRpcm5hbWUocGF0aEluQ29udGFpbmVyKSl9J2BdXG4gICAgICAgICk7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLnNoZWxsKFsncnVuLWFzJywgcGFja2FnZUlkLCBgdG91Y2ggJyR7ZXNjYXBlUGF0aChwYXRoSW5Db250YWluZXIpfSdgXSk7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLnNoZWxsKFsncnVuLWFzJywgcGFja2FnZUlkLCBgY2htb2QgNzc3ICcke2VzY2FwZVBhdGgocGF0aEluQ29udGFpbmVyKX0nYF0pO1xuICAgICAgICBhd2FpdCB0aGlzLmFkYi5wdXNoKGxvY2FsRmlsZSwgdG1wRGVzdGluYXRpb24pO1xuICAgICAgICBhd2FpdCB0aGlzLmFkYi5zaGVsbChbXG4gICAgICAgICAgJ3J1bi1hcycsIHBhY2thZ2VJZCxcbiAgICAgICAgICBgY3AgLWYgJyR7ZXNjYXBlUGF0aCh0bXBEZXN0aW5hdGlvbil9JyAnJHtlc2NhcGVQYXRoKHBhdGhJbkNvbnRhaW5lcil9J2BcbiAgICAgICAgXSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYENhbm5vdCBhY2Nlc3MgdGhlIGNvbnRhaW5lciBvZiAnJHtwYWNrYWdlSWR9JyBhcHBsaWNhdGlvbi4gYCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBJcyB0aGUgYXBwbGljYXRpb24gaW5zdGFsbGVkIGFuZCBoYXMgJ2RlYnVnZ2FibGUnIGJ1aWxkIG9wdGlvbiBzZXQgdG8gdHJ1ZT8gYCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGFkYiBwdXNoIGNyZWF0ZXMgZm9sZGVycyBhbmQgb3ZlcndyaXRlcyBleGlzdGluZyBmaWxlcy5cbiAgICAgIGF3YWl0IHRoaXMuYWRiLnB1c2gobG9jYWxGaWxlLCByZW1vdGVQYXRoKTtcblxuICAgICAgLy8gaWYgd2UgaGF2ZSBwdXNoZWQgYSBmaWxlLCBpdCBtaWdodCBiZSBhIG1lZGlhIGZpbGUsIHNvIGVuc3VyZSB0aGF0XG4gICAgICAvLyBhcHBzIGtub3cgYWJvdXQgaXRcbiAgICAgIGF3YWl0IHNjYW5NZWRpYSh0aGlzLmFkYiwgcmVtb3RlUGF0aCwgdGhpcy5sb2cpO1xuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICBpZiAoYXdhaXQgZnMuZXhpc3RzKGxvY2FsRmlsZSkpIHtcbiAgICAgIGF3YWl0IGZzLnVubGluayhsb2NhbEZpbGUpO1xuICAgIH1cbiAgICBpZiAodG1wRGVzdGluYXRpb24pIHtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnNoZWxsKFsncm0nLCAnLWYnLCB0bXBEZXN0aW5hdGlvbl0pO1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBQdWxscyB0aGUgd2hvbGUgZm9sZGVyIGZyb20gdGhlIHJlbW90ZSBkZXZpY2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVtb3RlUGF0aCBUaGUgZnVsbCBwYXRoIHRvIGEgZm9sZGVyIG9uIHRoZVxuICogcmVtb3RlIGRldmljZSBvciBhIGZvbGRlciBpbnNpZGUgYW4gYXBwbGljYXRpb24gYnVuZGxlXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBCYXNlNjQtZW5jb2RlZCBhbmQgemlwcGVkIGNvbnRlbnQgb2YgdGhlIGZvbGRlclxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdhcyBhIGZhaWx1cmUgd2hpbGUgZ2V0dGluZyB0aGUgZm9sZGVyIGNvbnRlbnRcbiAqL1xuY29tbWFuZHMucHVsbEZvbGRlciA9IGFzeW5jIGZ1bmN0aW9uIHB1bGxGb2xkZXIgKHJlbW90ZVBhdGgpIHtcbiAgbGV0IGxvY2FsRm9sZGVyID0gYXdhaXQgdGVtcERpci5wYXRoKHtwcmVmaXg6ICdhcHBpdW0nfSk7XG4gIGF3YWl0IHRoaXMuYWRiLnB1bGwocmVtb3RlUGF0aCwgbG9jYWxGb2xkZXIpO1xuICByZXR1cm4gKGF3YWl0IHppcC50b0luTWVtb3J5WmlwKGxvY2FsRm9sZGVyLCB7XG4gICAgZW5jb2RlVG9CYXNlNjQ6IHRydWUsXG4gIH0pKS50b1N0cmluZygpO1xufTtcblxuLyoqXG4gKiBEZWxldGVzIHRoZSBnaXZlbiBmb2xkZXIgb3IgZmlsZSBmcm9tIHRoZSByZW1vdGUgZGV2aWNlXG4gKlxuICogQHBhcmFtIHtBREJ9IGFkYlxuICogQHBhcmFtIHtzdHJpbmd9IHJlbW90ZVBhdGggVGhlIGZ1bGwgcGF0aCB0byB0aGUgcmVtb3RlIGZvbGRlclxuICogb3IgZmlsZSAoZm9sZGVyIG5hbWVzIG11c3QgZW5kIHdpdGggYSBzaW5nbGUgc2xhc2gpXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIHByb3ZpZGVkIHJlbW90ZSBwYXRoIGlzIGludmFsaWQgb3JcbiAqIHRoZSBwYWNrYWdlIGNvbnRlbnQgY2Fubm90IGJlIGFjY2Vzc2VkXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHRoZSByZW1vdGUgaXRlbSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgZGVsZXRlZC5cbiAqIElmIHRoZSByZW1vdGUgcGF0aCBpcyB2YWxpZCwgYnV0IHRoZSByZW1vdGUgcGF0aCBkb2VzIG5vdCBleGlzdFxuICogdGhpcyBmdW5jdGlvbiByZXR1cm4gYGZhbHNlYC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZGVsZXRlRmlsZU9yRm9sZGVyIChhZGIsIHJlbW90ZVBhdGgpIHtcbiAgY29uc3QgcGVyZm9ybVJlbW90ZUZzQ2hlY2sgPSBhc3luYyAocCwgb3AsIHJ1bkFzID0gbnVsbCkgPT4ge1xuICAgIGNvbnN0IHBhc3NGbGFnID0gJ19fUEFTU19fJztcbiAgICBjb25zdCBjaGVja0NtZCA9IGBbIC0ke29wfSAnJHtlc2NhcGVQYXRoKHApfScgXSAmJiBlY2hvICR7cGFzc0ZsYWd9YDtcbiAgICBjb25zdCBmdWxsQ21kID0gcnVuQXMgPyBgcnVuLWFzICR7cnVuQXN9ICR7Y2hlY2tDbWR9YCA6IGNoZWNrQ21kO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gXy5pbmNsdWRlcyhhd2FpdCBhZGIuc2hlbGwoW2Z1bGxDbWRdKSwgcGFzc0ZsYWcpO1xuICAgIH0gY2F0Y2ggKGlnbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgaXNGaWxlID0gYXN5bmMgKHAsIHJ1bkFzID0gbnVsbCkgPT4gYXdhaXQgcGVyZm9ybVJlbW90ZUZzQ2hlY2socCwgJ2YnLCBydW5Bcyk7XG4gIGNvbnN0IGlzRGlyID0gYXN5bmMgKHAsIHJ1bkFzID0gbnVsbCkgPT4gYXdhaXQgcGVyZm9ybVJlbW90ZUZzQ2hlY2socCwgJ2QnLCBydW5Bcyk7XG4gIGNvbnN0IGlzUHJlc2VudCA9IGFzeW5jIChwLCBydW5BcyA9IG51bGwpID0+IGF3YWl0IHBlcmZvcm1SZW1vdGVGc0NoZWNrKHAsICdlJywgcnVuQXMpO1xuXG4gIGxldCBkc3RQYXRoID0gcmVtb3RlUGF0aDtcbiAgbGV0IHBrZ0lkID0gbnVsbDtcbiAgaWYgKHJlbW90ZVBhdGguc3RhcnRzV2l0aChDT05UQUlORVJfUEFUSF9NQVJLRVIpKSB7XG4gICAgY29uc3QgW3BhY2thZ2VJZCwgcGF0aEluQ29udGFpbmVyXSA9IHBhcnNlQ29udGFpbmVyUGF0aChyZW1vdGVQYXRoKTtcbiAgICB0aGlzLmxvZy5kZWJ1ZyhgUGFyc2VkIHBhY2thZ2UgaWRlbnRpZmllciAnJHtwYWNrYWdlSWR9JyBmcm9tICcke3JlbW90ZVBhdGh9J2ApO1xuICAgIGRzdFBhdGggPSBwYXRoSW5Db250YWluZXI7XG4gICAgcGtnSWQgPSBwYWNrYWdlSWQ7XG4gIH1cblxuICBpZiAocGtnSWQpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgYWRiLnNoZWxsKFsncnVuLWFzJywgcGtnSWQsICdscyddKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBDYW5ub3QgYWNjZXNzIHRoZSBjb250YWluZXIgb2YgJyR7cGtnSWR9JyBhcHBsaWNhdGlvbi4gYCArXG4gICAgICAgIGBJcyB0aGUgYXBwbGljYXRpb24gaW5zdGFsbGVkIGFuZCBoYXMgJ2RlYnVnZ2FibGUnIGJ1aWxkIG9wdGlvbiBzZXQgdG8gdHJ1ZT8gYCArXG4gICAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFhd2FpdCBpc1ByZXNlbnQoZHN0UGF0aCwgcGtnSWQpKSB7XG4gICAgdGhpcy5sb2cuaW5mbyhgVGhlIGl0ZW0gYXQgJyR7ZHN0UGF0aH0nIGRvZXMgbm90IGV4aXN0LiBQZXJoYXBzLCBhbHJlYWR5IGRlbGV0ZWQ/YCk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgZXhwZWN0c0ZpbGUgPSAhcmVtb3RlUGF0aC5lbmRzV2l0aCgnLycpO1xuICBpZiAoZXhwZWN0c0ZpbGUgJiYgIWF3YWl0IGlzRmlsZShkc3RQYXRoLCBwa2dJZCkpIHtcbiAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBUaGUgaXRlbSBhdCAnJHtkc3RQYXRofScgaXMgbm90IGEgZmlsZWApO1xuICB9IGVsc2UgaWYgKCFleHBlY3RzRmlsZSAmJiAhYXdhaXQgaXNEaXIoZHN0UGF0aCwgcGtnSWQpKSB7XG4gICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgVGhlIGl0ZW0gYXQgJyR7ZHN0UGF0aH0nIGlzIG5vdCBhIGZvbGRlcmApO1xuICB9XG5cbiAgaWYgKHBrZ0lkKSB7XG4gICAgYXdhaXQgYWRiLnNoZWxsKFxuICAgICAgWydydW4tYXMnLCBwa2dJZCwgYHJtIC1mJHtleHBlY3RzRmlsZSA/ICcnIDogJ3InfSAnJHtlc2NhcGVQYXRoKGRzdFBhdGgpfSdgXSk7XG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgYWRiLnNoZWxsKFsncm0nLCBgLWYke2V4cGVjdHNGaWxlID8gJycgOiAncid9YCwgZHN0UGF0aF0pO1xuICB9XG4gIGlmIChhd2FpdCBpc1ByZXNlbnQoZHN0UGF0aCwgcGtnSWQpKSB7XG4gICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgVGhlIGl0ZW0gYXQgJyR7ZHN0UGF0aH0nIHN0aWxsIGV4aXN0cyBhZnRlciBiZWluZyBkZWxldGVkLiBgICtcbiAgICAgIGBJcyBpdCB3cml0YWJsZT9gKTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBEZWxldGVGaWxlT3B0c1xuICogQHByb3BlcnR5IHshc3RyaW5nfSByZW1vdGVQYXRoIFRoZSBmdWxsIHBhdGggdG8gdGhlIHJlbW90ZSBmaWxlXG4gKiBvciBhIGZpbGUgaW5zaWRlIGFuIGFwcGxpY2F0aW9uIGJ1bmRsZSAoZm9yIGV4YW1wbGUgYEBteS5hcHAuaWQvcGF0aC9pbi9idW5kbGVgKVxuICovXG5cbi8qKlxuICogRGVsZXRlcyBhIGZpbGUgb24gdGhlIHJlbW90ZSBkZXZpY2VcbiAqXG4gKiBAcGFyYW0ge0RlbGV0ZUZpbGVPcHRzfSBvcHRzXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHRoZSByZW1vdGUgZmlsZSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgZGVsZXRlZC5cbiAqIElmIHRoZSBwYXRoIHRvIGEgcmVtb3RlIGZpbGUgaXMgdmFsaWQsIGJ1dCB0aGUgZmlsZSBpdHNlbGYgZG9lcyBub3QgZXhpc3RcbiAqIHRoZW4gYGZhbHNlYCBpcyByZXR1cm5lZC5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgYXJndW1lbnQgaXMgaW52YWxpZCBvciB0aGVyZSB3YXMgYW4gZXJyb3Igd2hpbGVcbiAqIGRlbGV0aW5nIHRoZSBmaWxlXG4gKi9cbmNvbW1hbmRzLm1vYmlsZURlbGV0ZUZpbGUgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVEZWxldGVGaWxlIChvcHRzID0ge30pIHtcbiAgY29uc3Qge3JlbW90ZVBhdGh9ID0gb3B0cztcbiAgaWYgKCFyZW1vdGVQYXRoKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgVGhlICdyZW1vdGVQYXRoJyBhcmd1bWVudCBpcyBtYW5kYXRvcnlgKTtcbiAgfVxuICBpZiAocmVtb3RlUGF0aC5lbmRzV2l0aCgnLycpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgIGBJdCBpcyBleHBlY3RlZCB0aGF0IHJlbW90ZSBwYXRoIHBvaW50cyB0byBhIGZvbGRlciBhbmQgbm90IHRvIGEgZmlsZS4gYCArXG4gICAgICBgJyR7cmVtb3RlUGF0aH0nIGlzIGdpdmVuIGluc3RlYWRgXG4gICAgKTtcbiAgfVxuICByZXR1cm4gYXdhaXQgZGVsZXRlRmlsZU9yRm9sZGVyKHRoaXMuYWRiLCByZW1vdGVQYXRoKTtcbn07XG5cbmV4cG9ydCB7IGNvbW1hbmRzIH07XG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJmaWxlIjoibGliL2NvbW1hbmRzL2ZpbGUtYWN0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
235
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2ZpbGUtYWN0aW9ucy5qcyIsIm5hbWVzIjpbIkNPTlRBSU5FUl9QQVRIX01BUktFUiIsIkNPTlRBSU5FUl9QQVRIX1BBVFRFUk4iLCJSZWdFeHAiLCJBTkRST0lEX01FRElBX1JFU0NBTl9JTlRFTlQiLCJjb21tYW5kcyIsInBhcnNlQ29udGFpbmVyUGF0aCIsInJlbW90ZVBhdGgiLCJtYXRjaCIsImV4ZWMiLCJFcnJvciIsInBhdGgiLCJwb3NpeCIsInJlc29sdmUiLCJzY2FuTWVkaWEiLCJhZGIiLCJsb2ciLCJkZWJ1ZyIsImdldEFwaUxldmVsIiwic2hlbGwiLCJlIiwid2FybiIsInN0ZGVyciIsIm1lc3NhZ2UiLCJlc2NhcGVQYXRoIiwicCIsInJlcGxhY2UiLCJwdWxsRmlsZSIsImVuZHNXaXRoIiwiZXJyb3JzIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJ0bXBEZXN0aW5hdGlvbiIsInN0YXJ0c1dpdGgiLCJwYWNrYWdlSWQiLCJwYXRoSW5Db250YWluZXIiLCJiYXNlbmFtZSIsImVycm9yQW5kVGhyb3ciLCJsb2NhbEZpbGUiLCJ0ZW1wRGlyIiwicHJlZml4Iiwic3VmZml4IiwicHVsbCIsInV0aWwiLCJ0b0luTWVtb3J5QmFzZTY0IiwidG9TdHJpbmciLCJmcyIsImV4aXN0cyIsInVubGluayIsInB1c2hGaWxlIiwiYmFzZTY0RGF0YSIsIl8iLCJpc0FycmF5IiwiQnVmZmVyIiwiZnJvbSIsImNvbnRlbnQiLCJ3cml0ZUZpbGUiLCJkaXJuYW1lIiwicHVzaCIsInB1bGxGb2xkZXIiLCJsb2NhbEZvbGRlciIsInppcCIsInRvSW5NZW1vcnlaaXAiLCJlbmNvZGVUb0Jhc2U2NCIsImRlbGV0ZUZpbGVPckZvbGRlciIsInBlcmZvcm1SZW1vdGVGc0NoZWNrIiwib3AiLCJydW5BcyIsInBhc3NGbGFnIiwiY2hlY2tDbWQiLCJmdWxsQ21kIiwiaW5jbHVkZXMiLCJpZ24iLCJpc0ZpbGUiLCJpc0RpciIsImlzUHJlc2VudCIsImRzdFBhdGgiLCJwa2dJZCIsImluZm8iLCJleHBlY3RzRmlsZSIsIm1vYmlsZURlbGV0ZUZpbGUiLCJvcHRzIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2ZpbGUtYWN0aW9ucy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZnMsIHV0aWwsIHppcCwgdGVtcERpciB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuXG5cbmNvbnN0IENPTlRBSU5FUl9QQVRIX01BUktFUiA9ICdAJztcbi8vIGh0dHBzOi8vcmVnZXgxMDEuY29tL3IvUExkQjBHLzJcbmNvbnN0IENPTlRBSU5FUl9QQVRIX1BBVFRFUk4gPSBuZXcgUmVnRXhwKGBeJHtDT05UQUlORVJfUEFUSF9NQVJLRVJ9KFteL10rKS8oLispYCk7XG5jb25zdCBBTkRST0lEX01FRElBX1JFU0NBTl9JTlRFTlQgPSAnYW5kcm9pZC5pbnRlbnQuYWN0aW9uLk1FRElBX1NDQU5ORVJfU0NBTl9GSUxFJztcblxuXG5jb25zdCBjb21tYW5kcyA9IHt9O1xuXG4vKipcbiAqIFBhcnNlcyB0aGUgYWN0dWFsIGRlc3RpbmF0aW9uIHBhdGggZnJvbSB0aGUgZ2l2ZW4gdmFsdWVcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVtb3RlUGF0aCBUaGUgcHJlZm9ybWF0dGVkIHJlbW90ZSBwYXRoLCB3aGljaCBsb29rcyBsaWtlXG4gKiBgQG15LmFwcC5pZC9teS9wYXRoYFxuICogQHJldHVybnMge0FycmF5PHN0cmluZz59IEFuIGFycmF5LCB3aGVyZSB0aGUgZmlyc3QgaXRlbSBpcyB0aGUgcGFyc2VkIHBhY2thZ2VcbiAqIGlkZW50aWZpZXIgYW5kIHRoZSBzZWNvbmQgb25lIGlzIHRoZSBhY3R1YWwgZGVzdGluYXRpb24gcGF0aCBpbnNpZGUgdGhlIHBhY2thZ2UuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGdpdmVuIHN0cmluZyBjYW5ub3QgYmUgcGFyc2VkXG4gKi9cbmZ1bmN0aW9uIHBhcnNlQ29udGFpbmVyUGF0aCAocmVtb3RlUGF0aCkge1xuICBjb25zdCBtYXRjaCA9IENPTlRBSU5FUl9QQVRIX1BBVFRFUk4uZXhlYyhyZW1vdGVQYXRoKTtcbiAgaWYgKCFtYXRjaCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSXQgaXMgZXhwZWN0ZWQgdGhhdCBwYWNrYWdlIGlkZW50aWZpZXIgaXMgc2VwYXJhdGVkIGZyb20gdGhlIHJlbGF0aXZlIHBhdGggd2l0aCBhIHNpbmdsZSBzbGFzaC4gYCArXG4gICAgICBgJyR7cmVtb3RlUGF0aH0nIGlzIGdpdmVuIGluc3RlYWRgKTtcbiAgfVxuICByZXR1cm4gW21hdGNoWzFdLCBwYXRoLnBvc2l4LnJlc29sdmUoYC9kYXRhL2RhdGEvJHttYXRjaFsxXX1gLCBtYXRjaFsyXSldO1xufVxuXG4vKipcbiAqIFNjYW5zIHRoZSBnaXZlbiBmaWxlL2ZvbGRlciBvbiB0aGUgcmVtb3RlIGRldmljZVxuICogYW5kIGFkZHMgbWF0Y2hpbmcgaXRlbXMgdG8gdGhlIGRldmljZSdzIG1lZGlhIGxpYnJhcnkuXG4gKiBFeGNlcHRpb25zIGFyZSBpZ25vcmVkIGFuZCB3cml0dGVuIGludG8gdGhlIGxvZy5cbiAqXG4gKiBAcGFyYW0ge0FEQn0gYWRiIEFEQiBpbnN0YW5jZVxuICogQHBhcmFtIHtPYmplY3Q/fSBsb2cgTG9nZ2VyIGluc3RhbmNlXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVtb3RlUGF0aCBUaGUgZmlsZS9mb2xkZXIgcGF0aCBvbiB0aGUgcmVtb3RlIGRldmljZVxuICovXG5hc3luYyBmdW5jdGlvbiBzY2FuTWVkaWEgKGFkYiwgcmVtb3RlUGF0aCwgbG9nID0gbnVsbCkge1xuICBsb2c/LmRlYnVnKGBQZXJmb3JtaW5nIG1lZGlhIHNjYW4gb2YgJyR7cmVtb3RlUGF0aH0nYCk7XG4gIHRyeSB7XG4gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FwcGl1bS9hcHBpdW0vaXNzdWVzLzE2MTg0XG4gICAgaWYgKGF3YWl0IGFkYi5nZXRBcGlMZXZlbCgpID49IDI5KSB7XG4gICAgICBhd2FpdCBhZGIuc2Nhbk1lZGlhKHJlbW90ZVBhdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBhZGIuc2hlbGwoW1xuICAgICAgICAnYW0nLCAnYnJvYWRjYXN0JyxcbiAgICAgICAgJy1hJywgQU5EUk9JRF9NRURJQV9SRVNDQU5fSU5URU5ULFxuICAgICAgICAnLWQnLCBgZmlsZTovLyR7cmVtb3RlUGF0aH1gXG4gICAgICBdKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2c/Lndhcm4oYElnbm9yaW5nIGFuIHVuZXhwZWN0ZWQgZXJyb3IgdXBvbiBtZWRpYSBzY2FubmluZyBvZiAnJHtyZW1vdGVQYXRofSc6ICR7ZS5zdGRlcnIgfHwgZS5tZXNzYWdlfWApO1xuICB9XG59XG5cbi8qKlxuICogQSBzbWFsbCBoZWxwZXIsIHdoaWNoIGVzY2FwZXMgc2luZ2xlIHF1b3RlcyBpbiBwYXRocyxcbiAqIHNvIHRoZXkgYXJlIHNhZmUgdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50cyBvZiBzaGVsbCBjb21tYW5kc1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwIFRoZSBpbml0aWFsIHJlbW90ZSBwYXRoXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgZXNjYXBlZCBwYXRoIHZhbHVlXG4gKi9cbmZ1bmN0aW9uIGVzY2FwZVBhdGggKHApIHtcbiAgcmV0dXJuIHAucmVwbGFjZSgvJy9nLCBgXFxcXCdgKTtcbn1cblxuLyoqXG4gKiBQdWxscyBhIHJlbW90ZSBmaWxlIGZyb20gdGhlIGRldmljZS5cbiAqIEl0IGlzIHJlcXVpcmVkLCB0aGF0IGEgcGFja2FnZSBoYXMgZGVidWdnaW5nIGZsYWcgZW5hYmxlZFxuICogaW4gb3JkZXIgdG8gYWNjZXNzIGl0cyBmaWxlcy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVtb3RlUGF0aCBUaGUgZnVsbCBwYXRoIHRvIHRoZSByZW1vdGUgZmlsZVxuICogb3IgYSBzcGVjaWFsbHkgZm9ybWF0dGVkIHBhdGgsIHdoaWNoIHBvaW50cyB0byBhbiBpdGVtIGluc2lkZSBhcHAgYnVuZGxlXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBCYXNlNjQgZW5jb2RlZCBjb250ZW50IG9mIHRoZSBwdWxsZWQgZmlsZVxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBwdWxsIG9wZXJhdGlvbiBmYWlsZWRcbiAqL1xuY29tbWFuZHMucHVsbEZpbGUgPSBhc3luYyBmdW5jdGlvbiBwdWxsRmlsZSAocmVtb3RlUGF0aCkge1xuICBpZiAocmVtb3RlUGF0aC5lbmRzV2l0aCgnLycpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgSXQgaXMgZXhwZWN0ZWQgdGhhdCByZW1vdGUgcGF0aCBwb2ludHMgdG8gYSBmaWxlIGFuZCBub3QgdG8gYSBmb2xkZXIuIGAgK1xuICAgICAgYCcke3JlbW90ZVBhdGh9JyBpcyBnaXZlbiBpbnN0ZWFkYCk7XG4gIH1cbiAgbGV0IHRtcERlc3RpbmF0aW9uID0gbnVsbDtcbiAgaWYgKHJlbW90ZVBhdGguc3RhcnRzV2l0aChDT05UQUlORVJfUEFUSF9NQVJLRVIpKSB7XG4gICAgY29uc3QgW3BhY2thZ2VJZCwgcGF0aEluQ29udGFpbmVyXSA9IHBhcnNlQ29udGFpbmVyUGF0aChyZW1vdGVQYXRoKTtcbiAgICB0aGlzLmxvZy5kZWJ1ZyhgUGFyc2VkIHBhY2thZ2UgaWRlbnRpZmllciAnJHtwYWNrYWdlSWR9JyBmcm9tICcke3JlbW90ZVBhdGh9Jy4gV2lsbCBnZXQgdGhlIGRhdGEgZnJvbSAnJHtwYXRoSW5Db250YWluZXJ9J2ApO1xuICAgIHRtcERlc3RpbmF0aW9uID0gYC9kYXRhL2xvY2FsL3RtcC8ke3BhdGgucG9zaXguYmFzZW5hbWUocGF0aEluQ29udGFpbmVyKX1gO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmFkYi5zaGVsbChbJ3J1bi1hcycsIHBhY2thZ2VJZCwgYGNobW9kIDc3NyAnJHtlc2NhcGVQYXRoKHBhdGhJbkNvbnRhaW5lcil9J2BdKTtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnNoZWxsKFtcbiAgICAgICAgJ3J1bi1hcycsIHBhY2thZ2VJZCxcbiAgICAgICAgYGNwIC1mICcke2VzY2FwZVBhdGgocGF0aEluQ29udGFpbmVyKX0nICcke2VzY2FwZVBhdGgodG1wRGVzdGluYXRpb24pfSdgXG4gICAgICBdKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBDYW5ub3QgYWNjZXNzIHRoZSBjb250YWluZXIgb2YgJyR7cGFja2FnZUlkfScgYXBwbGljYXRpb24uIGAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgYElzIHRoZSBhcHBsaWNhdGlvbiBpbnN0YWxsZWQgYW5kIGhhcyAnZGVidWdnYWJsZScgYnVpbGQgb3B0aW9uIHNldCB0byB0cnVlPyBgICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG4gIGNvbnN0IGxvY2FsRmlsZSA9IGF3YWl0IHRlbXBEaXIucGF0aCh7cHJlZml4OiAnYXBwaXVtJywgc3VmZml4OiAnLnRtcCd9KTtcbiAgdHJ5IHtcbiAgICBhd2FpdCB0aGlzLmFkYi5wdWxsKHRtcERlc3RpbmF0aW9uIHx8IHJlbW90ZVBhdGgsIGxvY2FsRmlsZSk7XG4gICAgcmV0dXJuIChhd2FpdCB1dGlsLnRvSW5NZW1vcnlCYXNlNjQobG9jYWxGaWxlKSkudG9TdHJpbmcoKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBpZiAoYXdhaXQgZnMuZXhpc3RzKGxvY2FsRmlsZSkpIHtcbiAgICAgIGF3YWl0IGZzLnVubGluayhsb2NhbEZpbGUpO1xuICAgIH1cbiAgICBpZiAodG1wRGVzdGluYXRpb24pIHtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnNoZWxsKFsncm0nLCAnLWYnLCB0bXBEZXN0aW5hdGlvbl0pO1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBQdXNoZWQgdGhlIGdpdmVuIGRhdGEgdG8gYSBmaWxlIG9uIHRoZSByZW1vdGUgZGV2aWNlXG4gKiBJdCBpcyByZXF1aXJlZCwgdGhhdCBhIHBhY2thZ2UgaGFzIGRlYnVnZ2luZyBmbGFnIGVuYWJsZWRcbiAqIGluIG9yZGVyIHRvIGFjY2VzcyBpdHMgZmlsZXMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHJlbW90ZVBhdGggVGhlIGZ1bGwgcGF0aCB0byB0aGUgcmVtb3RlIGZpbGUgb3JcbiAqIGEgZmlsZSBpbnNpZGUgYSBwYWNrYWdlIGJ1bmRsZVxuICogQHBhcmFtIHtzdHJpbmd9IGJhc2U2NERhdGEgQmFzZTY0IGVuY29kZWQgZGF0YSB0byBiZSB3cml0dGVuIHRvIHRoZVxuICogcmVtb3RlIGZpbGUuIFRoZSByZW1vdGUgZmlsZSB3aWxsIGJlIHNpbGVudGx5IG92ZXJyaWRkZW4gaWYgaXQgYWxyZWFkeSBleGlzdHMuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIHB1c2hpbmcgdGhlIGRhdGFcbiAqL1xuY29tbWFuZHMucHVzaEZpbGUgPSBhc3luYyBmdW5jdGlvbiBwdXNoRmlsZSAocmVtb3RlUGF0aCwgYmFzZTY0RGF0YSkge1xuICBpZiAocmVtb3RlUGF0aC5lbmRzV2l0aCgnLycpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgIGBJdCBpcyBleHBlY3RlZCB0aGF0IHJlbW90ZSBwYXRoIHBvaW50cyB0byBhIGZpbGUgYW5kIG5vdCB0byBhIGZvbGRlci4gYCArXG4gICAgICBgJyR7cmVtb3RlUGF0aH0nIGlzIGdpdmVuIGluc3RlYWRgXG4gICAgKTtcbiAgfVxuICBjb25zdCBsb2NhbEZpbGUgPSBhd2FpdCB0ZW1wRGlyLnBhdGgoe3ByZWZpeDogJ2FwcGl1bScsIHN1ZmZpeDogJy50bXAnfSk7XG4gIGlmIChfLmlzQXJyYXkoYmFzZTY0RGF0YSkpIHtcbiAgICAvLyBzb21lIGNsaWVudHMgKGFoZW0pIGphdmEsIHNlbmQgYSBieXRlIGFycmF5IGVuY29kaW5nIHV0ZjggY2hhcmFjdGVyc1xuICAgIC8vIGluc3RlYWQgb2YgYSBzdHJpbmcsIHdoaWNoIHdvdWxkIGJlIGluZmluaXRlbHkgYmV0dGVyIVxuICAgIGJhc2U2NERhdGEgPSBCdWZmZXIuZnJvbShiYXNlNjREYXRhKS50b1N0cmluZygndXRmOCcpO1xuICB9XG4gIGNvbnN0IGNvbnRlbnQgPSBCdWZmZXIuZnJvbShiYXNlNjREYXRhLCAnYmFzZTY0Jyk7XG4gIGxldCB0bXBEZXN0aW5hdGlvbiA9IG51bGw7XG4gIHRyeSB7XG4gICAgYXdhaXQgZnMud3JpdGVGaWxlKGxvY2FsRmlsZSwgY29udGVudC50b1N0cmluZygnYmluYXJ5JyksICdiaW5hcnknKTtcbiAgICBpZiAocmVtb3RlUGF0aC5zdGFydHNXaXRoKENPTlRBSU5FUl9QQVRIX01BUktFUikpIHtcbiAgICAgIGNvbnN0IFtwYWNrYWdlSWQsIHBhdGhJbkNvbnRhaW5lcl0gPSBwYXJzZUNvbnRhaW5lclBhdGgocmVtb3RlUGF0aCk7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgUGFyc2VkIHBhY2thZ2UgaWRlbnRpZmllciAnJHtwYWNrYWdlSWR9JyBmcm9tICcke3JlbW90ZVBhdGh9Jy4gYCArXG4gICAgICAgIGBXaWxsIHB1dCB0aGUgZGF0YSBpbnRvICcke3BhdGhJbkNvbnRhaW5lcn0nYCk7XG4gICAgICB0bXBEZXN0aW5hdGlvbiA9IGAvZGF0YS9sb2NhbC90bXAvJHtwYXRoLnBvc2l4LmJhc2VuYW1lKHBhdGhJbkNvbnRhaW5lcil9YDtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLnNoZWxsKFxuICAgICAgICAgIFsncnVuLWFzJywgcGFja2FnZUlkLCBgbWtkaXIgLXAgJyR7ZXNjYXBlUGF0aChwYXRoLnBvc2l4LmRpcm5hbWUocGF0aEluQ29udGFpbmVyKSl9J2BdXG4gICAgICAgICk7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLnNoZWxsKFsncnVuLWFzJywgcGFja2FnZUlkLCBgdG91Y2ggJyR7ZXNjYXBlUGF0aChwYXRoSW5Db250YWluZXIpfSdgXSk7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLnNoZWxsKFsncnVuLWFzJywgcGFja2FnZUlkLCBgY2htb2QgNzc3ICcke2VzY2FwZVBhdGgocGF0aEluQ29udGFpbmVyKX0nYF0pO1xuICAgICAgICBhd2FpdCB0aGlzLmFkYi5wdXNoKGxvY2FsRmlsZSwgdG1wRGVzdGluYXRpb24pO1xuICAgICAgICBhd2FpdCB0aGlzLmFkYi5zaGVsbChbXG4gICAgICAgICAgJ3J1bi1hcycsIHBhY2thZ2VJZCxcbiAgICAgICAgICBgY3AgLWYgJyR7ZXNjYXBlUGF0aCh0bXBEZXN0aW5hdGlvbil9JyAnJHtlc2NhcGVQYXRoKHBhdGhJbkNvbnRhaW5lcil9J2BcbiAgICAgICAgXSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYENhbm5vdCBhY2Nlc3MgdGhlIGNvbnRhaW5lciBvZiAnJHtwYWNrYWdlSWR9JyBhcHBsaWNhdGlvbi4gYCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBJcyB0aGUgYXBwbGljYXRpb24gaW5zdGFsbGVkIGFuZCBoYXMgJ2RlYnVnZ2FibGUnIGJ1aWxkIG9wdGlvbiBzZXQgdG8gdHJ1ZT8gYCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGFkYiBwdXNoIGNyZWF0ZXMgZm9sZGVycyBhbmQgb3ZlcndyaXRlcyBleGlzdGluZyBmaWxlcy5cbiAgICAgIGF3YWl0IHRoaXMuYWRiLnB1c2gobG9jYWxGaWxlLCByZW1vdGVQYXRoKTtcblxuICAgICAgLy8gaWYgd2UgaGF2ZSBwdXNoZWQgYSBmaWxlLCBpdCBtaWdodCBiZSBhIG1lZGlhIGZpbGUsIHNvIGVuc3VyZSB0aGF0XG4gICAgICAvLyBhcHBzIGtub3cgYWJvdXQgaXRcbiAgICAgIGF3YWl0IHNjYW5NZWRpYSh0aGlzLmFkYiwgcmVtb3RlUGF0aCwgdGhpcy5sb2cpO1xuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICBpZiAoYXdhaXQgZnMuZXhpc3RzKGxvY2FsRmlsZSkpIHtcbiAgICAgIGF3YWl0IGZzLnVubGluayhsb2NhbEZpbGUpO1xuICAgIH1cbiAgICBpZiAodG1wRGVzdGluYXRpb24pIHtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnNoZWxsKFsncm0nLCAnLWYnLCB0bXBEZXN0aW5hdGlvbl0pO1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiBQdWxscyB0aGUgd2hvbGUgZm9sZGVyIGZyb20gdGhlIHJlbW90ZSBkZXZpY2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVtb3RlUGF0aCBUaGUgZnVsbCBwYXRoIHRvIGEgZm9sZGVyIG9uIHRoZVxuICogcmVtb3RlIGRldmljZSBvciBhIGZvbGRlciBpbnNpZGUgYW4gYXBwbGljYXRpb24gYnVuZGxlXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBCYXNlNjQtZW5jb2RlZCBhbmQgemlwcGVkIGNvbnRlbnQgb2YgdGhlIGZvbGRlclxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdhcyBhIGZhaWx1cmUgd2hpbGUgZ2V0dGluZyB0aGUgZm9sZGVyIGNvbnRlbnRcbiAqL1xuY29tbWFuZHMucHVsbEZvbGRlciA9IGFzeW5jIGZ1bmN0aW9uIHB1bGxGb2xkZXIgKHJlbW90ZVBhdGgpIHtcbiAgbGV0IGxvY2FsRm9sZGVyID0gYXdhaXQgdGVtcERpci5wYXRoKHtwcmVmaXg6ICdhcHBpdW0nfSk7XG4gIGF3YWl0IHRoaXMuYWRiLnB1bGwocmVtb3RlUGF0aCwgbG9jYWxGb2xkZXIpO1xuICByZXR1cm4gKGF3YWl0IHppcC50b0luTWVtb3J5WmlwKGxvY2FsRm9sZGVyLCB7XG4gICAgZW5jb2RlVG9CYXNlNjQ6IHRydWUsXG4gIH0pKS50b1N0cmluZygpO1xufTtcblxuLyoqXG4gKiBEZWxldGVzIHRoZSBnaXZlbiBmb2xkZXIgb3IgZmlsZSBmcm9tIHRoZSByZW1vdGUgZGV2aWNlXG4gKlxuICogQHBhcmFtIHtBREJ9IGFkYlxuICogQHBhcmFtIHtzdHJpbmd9IHJlbW90ZVBhdGggVGhlIGZ1bGwgcGF0aCB0byB0aGUgcmVtb3RlIGZvbGRlclxuICogb3IgZmlsZSAoZm9sZGVyIG5hbWVzIG11c3QgZW5kIHdpdGggYSBzaW5nbGUgc2xhc2gpXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIHByb3ZpZGVkIHJlbW90ZSBwYXRoIGlzIGludmFsaWQgb3JcbiAqIHRoZSBwYWNrYWdlIGNvbnRlbnQgY2Fubm90IGJlIGFjY2Vzc2VkXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHRoZSByZW1vdGUgaXRlbSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgZGVsZXRlZC5cbiAqIElmIHRoZSByZW1vdGUgcGF0aCBpcyB2YWxpZCwgYnV0IHRoZSByZW1vdGUgcGF0aCBkb2VzIG5vdCBleGlzdFxuICogdGhpcyBmdW5jdGlvbiByZXR1cm4gYGZhbHNlYC5cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZGVsZXRlRmlsZU9yRm9sZGVyIChhZGIsIHJlbW90ZVBhdGgpIHtcbiAgY29uc3QgcGVyZm9ybVJlbW90ZUZzQ2hlY2sgPSBhc3luYyAocCwgb3AsIHJ1bkFzID0gbnVsbCkgPT4ge1xuICAgIGNvbnN0IHBhc3NGbGFnID0gJ19fUEFTU19fJztcbiAgICBjb25zdCBjaGVja0NtZCA9IGBbIC0ke29wfSAnJHtlc2NhcGVQYXRoKHApfScgXSAmJiBlY2hvICR7cGFzc0ZsYWd9YDtcbiAgICBjb25zdCBmdWxsQ21kID0gcnVuQXMgPyBgcnVuLWFzICR7cnVuQXN9ICR7Y2hlY2tDbWR9YCA6IGNoZWNrQ21kO1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gXy5pbmNsdWRlcyhhd2FpdCBhZGIuc2hlbGwoW2Z1bGxDbWRdKSwgcGFzc0ZsYWcpO1xuICAgIH0gY2F0Y2ggKGlnbikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfTtcbiAgY29uc3QgaXNGaWxlID0gYXN5bmMgKHAsIHJ1bkFzID0gbnVsbCkgPT4gYXdhaXQgcGVyZm9ybVJlbW90ZUZzQ2hlY2socCwgJ2YnLCBydW5Bcyk7XG4gIGNvbnN0IGlzRGlyID0gYXN5bmMgKHAsIHJ1bkFzID0gbnVsbCkgPT4gYXdhaXQgcGVyZm9ybVJlbW90ZUZzQ2hlY2socCwgJ2QnLCBydW5Bcyk7XG4gIGNvbnN0IGlzUHJlc2VudCA9IGFzeW5jIChwLCBydW5BcyA9IG51bGwpID0+IGF3YWl0IHBlcmZvcm1SZW1vdGVGc0NoZWNrKHAsICdlJywgcnVuQXMpO1xuXG4gIGxldCBkc3RQYXRoID0gcmVtb3RlUGF0aDtcbiAgbGV0IHBrZ0lkID0gbnVsbDtcbiAgaWYgKHJlbW90ZVBhdGguc3RhcnRzV2l0aChDT05UQUlORVJfUEFUSF9NQVJLRVIpKSB7XG4gICAgY29uc3QgW3BhY2thZ2VJZCwgcGF0aEluQ29udGFpbmVyXSA9IHBhcnNlQ29udGFpbmVyUGF0aChyZW1vdGVQYXRoKTtcbiAgICB0aGlzLmxvZy5kZWJ1ZyhgUGFyc2VkIHBhY2thZ2UgaWRlbnRpZmllciAnJHtwYWNrYWdlSWR9JyBmcm9tICcke3JlbW90ZVBhdGh9J2ApO1xuICAgIGRzdFBhdGggPSBwYXRoSW5Db250YWluZXI7XG4gICAgcGtnSWQgPSBwYWNrYWdlSWQ7XG4gIH1cblxuICBpZiAocGtnSWQpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgYWRiLnNoZWxsKFsncnVuLWFzJywgcGtnSWQsICdscyddKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBDYW5ub3QgYWNjZXNzIHRoZSBjb250YWluZXIgb2YgJyR7cGtnSWR9JyBhcHBsaWNhdGlvbi4gYCArXG4gICAgICAgIGBJcyB0aGUgYXBwbGljYXRpb24gaW5zdGFsbGVkIGFuZCBoYXMgJ2RlYnVnZ2FibGUnIGJ1aWxkIG9wdGlvbiBzZXQgdG8gdHJ1ZT8gYCArXG4gICAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFhd2FpdCBpc1ByZXNlbnQoZHN0UGF0aCwgcGtnSWQpKSB7XG4gICAgdGhpcy5sb2cuaW5mbyhgVGhlIGl0ZW0gYXQgJyR7ZHN0UGF0aH0nIGRvZXMgbm90IGV4aXN0LiBQZXJoYXBzLCBhbHJlYWR5IGRlbGV0ZWQ/YCk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgZXhwZWN0c0ZpbGUgPSAhcmVtb3RlUGF0aC5lbmRzV2l0aCgnLycpO1xuICBpZiAoZXhwZWN0c0ZpbGUgJiYgIWF3YWl0IGlzRmlsZShkc3RQYXRoLCBwa2dJZCkpIHtcbiAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBUaGUgaXRlbSBhdCAnJHtkc3RQYXRofScgaXMgbm90IGEgZmlsZWApO1xuICB9IGVsc2UgaWYgKCFleHBlY3RzRmlsZSAmJiAhYXdhaXQgaXNEaXIoZHN0UGF0aCwgcGtnSWQpKSB7XG4gICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgVGhlIGl0ZW0gYXQgJyR7ZHN0UGF0aH0nIGlzIG5vdCBhIGZvbGRlcmApO1xuICB9XG5cbiAgaWYgKHBrZ0lkKSB7XG4gICAgYXdhaXQgYWRiLnNoZWxsKFxuICAgICAgWydydW4tYXMnLCBwa2dJZCwgYHJtIC1mJHtleHBlY3RzRmlsZSA/ICcnIDogJ3InfSAnJHtlc2NhcGVQYXRoKGRzdFBhdGgpfSdgXSk7XG4gIH0gZWxzZSB7XG4gICAgYXdhaXQgYWRiLnNoZWxsKFsncm0nLCBgLWYke2V4cGVjdHNGaWxlID8gJycgOiAncid9YCwgZHN0UGF0aF0pO1xuICB9XG4gIGlmIChhd2FpdCBpc1ByZXNlbnQoZHN0UGF0aCwgcGtnSWQpKSB7XG4gICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgVGhlIGl0ZW0gYXQgJyR7ZHN0UGF0aH0nIHN0aWxsIGV4aXN0cyBhZnRlciBiZWluZyBkZWxldGVkLiBgICtcbiAgICAgIGBJcyBpdCB3cml0YWJsZT9gKTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBEZWxldGVGaWxlT3B0c1xuICogQHByb3BlcnR5IHshc3RyaW5nfSByZW1vdGVQYXRoIFRoZSBmdWxsIHBhdGggdG8gdGhlIHJlbW90ZSBmaWxlXG4gKiBvciBhIGZpbGUgaW5zaWRlIGFuIGFwcGxpY2F0aW9uIGJ1bmRsZSAoZm9yIGV4YW1wbGUgYEBteS5hcHAuaWQvcGF0aC9pbi9idW5kbGVgKVxuICovXG5cbi8qKlxuICogRGVsZXRlcyBhIGZpbGUgb24gdGhlIHJlbW90ZSBkZXZpY2VcbiAqXG4gKiBAcGFyYW0ge0RlbGV0ZUZpbGVPcHRzfSBvcHRzXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0gYHRydWVgIGlmIHRoZSByZW1vdGUgZmlsZSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgZGVsZXRlZC5cbiAqIElmIHRoZSBwYXRoIHRvIGEgcmVtb3RlIGZpbGUgaXMgdmFsaWQsIGJ1dCB0aGUgZmlsZSBpdHNlbGYgZG9lcyBub3QgZXhpc3RcbiAqIHRoZW4gYGZhbHNlYCBpcyByZXR1cm5lZC5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgYXJndW1lbnQgaXMgaW52YWxpZCBvciB0aGVyZSB3YXMgYW4gZXJyb3Igd2hpbGVcbiAqIGRlbGV0aW5nIHRoZSBmaWxlXG4gKi9cbmNvbW1hbmRzLm1vYmlsZURlbGV0ZUZpbGUgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVEZWxldGVGaWxlIChvcHRzID0ge30pIHtcbiAgY29uc3Qge3JlbW90ZVBhdGh9ID0gb3B0cztcbiAgaWYgKCFyZW1vdGVQYXRoKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgVGhlICdyZW1vdGVQYXRoJyBhcmd1bWVudCBpcyBtYW5kYXRvcnlgKTtcbiAgfVxuICBpZiAocmVtb3RlUGF0aC5lbmRzV2l0aCgnLycpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgIGBJdCBpcyBleHBlY3RlZCB0aGF0IHJlbW90ZSBwYXRoIHBvaW50cyB0byBhIGZvbGRlciBhbmQgbm90IHRvIGEgZmlsZS4gYCArXG4gICAgICBgJyR7cmVtb3RlUGF0aH0nIGlzIGdpdmVuIGluc3RlYWRgXG4gICAgKTtcbiAgfVxuICByZXR1cm4gYXdhaXQgZGVsZXRlRmlsZU9yRm9sZGVyKHRoaXMuYWRiLCByZW1vdGVQYXRoKTtcbn07XG5cbmV4cG9ydCB7IGNvbW1hbmRzIH07XG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQSxNQUFNQSxxQkFBcUIsR0FBRyxHQUE5QjtBQUVBLE1BQU1DLHNCQUFzQixHQUFHLElBQUlDLE1BQUosQ0FBWSxJQUFHRixxQkFBc0IsY0FBckMsQ0FBL0I7QUFDQSxNQUFNRywyQkFBMkIsR0FBRywrQ0FBcEM7QUFHQSxNQUFNQyxRQUFRLEdBQUcsRUFBakI7OztBQVdBLFNBQVNDLGtCQUFULENBQTZCQyxVQUE3QixFQUF5QztFQUN2QyxNQUFNQyxLQUFLLEdBQUdOLHNCQUFzQixDQUFDTyxJQUF2QixDQUE0QkYsVUFBNUIsQ0FBZDs7RUFDQSxJQUFJLENBQUNDLEtBQUwsRUFBWTtJQUNWLE1BQU0sSUFBSUUsS0FBSixDQUFXLGtHQUFELEdBQ2IsSUFBR0gsVUFBVyxvQkFEWCxDQUFOO0VBRUQ7O0VBQ0QsT0FBTyxDQUFDQyxLQUFLLENBQUMsQ0FBRCxDQUFOLEVBQVdHLGNBQUtDLEtBQUwsQ0FBV0MsT0FBWCxDQUFvQixjQUFhTCxLQUFLLENBQUMsQ0FBRCxDQUFJLEVBQTFDLEVBQTZDQSxLQUFLLENBQUMsQ0FBRCxDQUFsRCxDQUFYLENBQVA7QUFDRDs7QUFXRCxlQUFlTSxTQUFmLENBQTBCQyxHQUExQixFQUErQlIsVUFBL0IsRUFBMkNTLEdBQUcsR0FBRyxJQUFq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
@@ -78,4 +78,4 @@ var _default = extensions;
78
78
  exports.default = _default;require('source-map-support').install();
79
79
 
80
80
 
81
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9maW5kLmpzIl0sIm5hbWVzIjpbImhlbHBlcnMiLCJleHRlbnNpb25zIiwiZG9GaW5kRWxlbWVudE9yRWxzIiwicGFyYW1zIiwiYm9vdHN0cmFwIiwic2VuZEFjdGlvbiIsImZpbmRFbE9yRWxzIiwic3RyYXRlZ3kiLCJzZWxlY3RvciIsIm11bHQiLCJjb250ZXh0IiwiRXJyb3IiLCJtdWx0aXBsZSIsImVsZW1lbnQiLCJkb0ZpbmQiLCJlcnIiLCJlcnJvcnMiLCJQcm94eVJlcXVlc3RFcnJvciIsImdldEFjdHVhbEVycm9yIiwiTm9TdWNoRWxlbWVudEVycm9yIiwiXyIsImlzRW1wdHkiLCJpbXBsaWNpdFdhaXRGb3JDb25kaXRpb24iLCJtZXNzYWdlIiwibWF0Y2giLCJPYmplY3QiLCJhc3NpZ24iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBR0EsSUFBSUEsT0FBTyxHQUFHLEVBQWQ7QUFBQSxJQUFrQkMsVUFBVSxHQUFHLEVBQS9COzs7QUFRQUQsT0FBTyxDQUFDRSxrQkFBUixHQUE2QixlQUFlQSxrQkFBZixDQUFtQ0MsTUFBbkMsRUFBMkM7QUFDdEUsU0FBTyxNQUFNLEtBQUtDLFNBQUwsQ0FBZUMsVUFBZixDQUEwQixNQUExQixFQUFrQ0YsTUFBbEMsQ0FBYjtBQUNELENBRkQ7O0FBUUFILE9BQU8sQ0FBQ00sV0FBUixHQUFzQixlQUFlQSxXQUFmLENBQTRCQyxRQUE1QixFQUFzQ0MsUUFBdEMsRUFBZ0RDLElBQWhELEVBQXNEQyxPQUFPLEdBQUcsRUFBaEUsRUFBb0U7QUFDeEYsTUFBSSxDQUFDRixRQUFMLEVBQWU7QUFDYixVQUFNLElBQUlHLEtBQUosQ0FBVSwrQ0FBVixDQUFOO0FBQ0Q7O0FBRUQsTUFBSVIsTUFBTSxHQUFHO0FBQ1hJLElBQUFBLFFBRFc7QUFFWEMsSUFBQUEsUUFGVztBQUdYRSxJQUFBQSxPQUhXO0FBSVhFLElBQUFBLFFBQVEsRUFBRUg7QUFKQyxHQUFiO0FBT0EsTUFBSUksT0FBSjs7QUFDQSxNQUFJQyxNQUFNLEdBQUcsWUFBWTtBQUN2QixRQUFJO0FBQ0ZELE1BQUFBLE9BQU8sR0FBRyxNQUFNLEtBQUtYLGtCQUFMLENBQXdCQyxNQUF4QixDQUFoQjtBQUNELEtBRkQsQ0FFRSxPQUFPWSxHQUFQLEVBQVk7QUFJWixVQUFJLDZCQUFZQSxHQUFaLEVBQWlCQyxtQkFBT0MsaUJBQXhCLENBQUosRUFBZ0Q7QUFDOUNGLFFBQUFBLEdBQUcsR0FBR0EsR0FBRyxDQUFDRyxjQUFKLEVBQU47QUFDRDs7QUFLRCxVQUFJLDZCQUFZSCxHQUFaLEVBQWlCQyxtQkFBT0csa0JBQXhCLENBQUosRUFBaUQ7QUFFL0MsZUFBTyxLQUFQO0FBQ0Q7O0FBQ0QsWUFBTUosR0FBTjtBQUNEOztBQUdELFdBQU8sQ0FBQ0ssZ0JBQUVDLE9BQUYsQ0FBVVIsT0FBVixDQUFSO0FBQ0QsR0F2QkQ7O0FBeUJBLE1BQUk7QUFDRixVQUFNLEtBQUtTLHdCQUFMLENBQThCUixNQUE5QixDQUFOO0FBQ0QsR0FGRCxDQUVFLE9BQU9DLEdBQVAsRUFBWTtBQUNaLFFBQUlBLEdBQUcsQ0FBQ1EsT0FBSixJQUFlUixHQUFHLENBQUNRLE9BQUosQ0FBWUMsS0FBWixDQUFrQixpQkFBbEIsQ0FBbkIsRUFBeUQ7QUFHdkRYLE1BQUFBLE9BQU8sR0FBRyxFQUFWO0FBQ0QsS0FKRCxNQUlPO0FBQ0wsWUFBTUUsR0FBTjtBQUNEO0FBQ0Y7O0FBRUQsTUFBSU4sSUFBSixFQUFVO0FBQ1IsV0FBT0ksT0FBUDtBQUNEOztBQUNELE1BQUlPLGdCQUFFQyxPQUFGLENBQVVSLE9BQVYsQ0FBSixFQUF3QjtBQUN0QixVQUFNLElBQUlHLG1CQUFPRyxrQkFBWCxFQUFOO0FBQ0Q7O0FBQ0QsU0FBT04sT0FBUDtBQUNELENBekREOztBQTJEQVksTUFBTSxDQUFDQyxNQUFQLENBQWN6QixVQUFkLEVBQTBCRCxPQUExQjtlQUVlQyxVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGVycm9ycywgaXNFcnJvclR5cGUgfSBmcm9tICdAYXBwaXVtL2Jhc2UtZHJpdmVyJztcblxuXG5sZXQgaGVscGVycyA9IHt9LCBleHRlbnNpb25zID0ge307XG5cbi8qKlxuICogUmVhc29uIGZvciBpc29sYXRpbmcgZG9GaW5kRWxlbWVudE9yRWxzIGZyb20gZmluZEVsT3JFbHMgaXMgZm9yIHJldXNpbmcgZmluZEVsT3JFbHNcbiAqIGFjcm9zcyBhbmRyb2lkLWRyaXZlcnMgKGxpa2UgYXBwaXVtLXVpYXV0b21hdG9yMi1kcml2ZXIpIHRvIGF2b2lkIGNvZGUgZHVwbGljYXRpb24uXG4gKiBPdGhlciBhbmRyb2lkLWRyaXZlcnMgKGxpa2UgYXBwaXVtLXVpYXV0b21hdG9yMi1kcml2ZXIpIG5lZWQgdG8gb3ZlcnJpZGUgZG9GaW5kRWxlbWVudE9yRWxzXG4gKiB0byBmYWNpbGl0YXRlIGZpbmRFbE9yRWxzLlxuICovXG5oZWxwZXJzLmRvRmluZEVsZW1lbnRPckVscyA9IGFzeW5jIGZ1bmN0aW9uIGRvRmluZEVsZW1lbnRPckVscyAocGFyYW1zKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdmaW5kJywgcGFyYW1zKTtcbn07XG5cbi8vIHN0YXRlZ3k6IGxvY2F0b3Igc3RyYXRlZ3lcbi8vIHNlbGVjdG9yOiB0aGUgYWN0dWFsIHNlbGVjdG9yIGZvciBmaW5kaW5nIGFuIGVsZW1lbnRcbi8vIG11bHQ6IG11bHRpcGxlIGVsZW1lbnRzIG9yIGp1c3Qgb25lP1xuLy8gY29udGV4dDogZmluZGluZyBhbiBlbGVtZW50IGZyb20gdGhlIHJvb3QgY29udGV4dD8gb3Igc3RhcnRpbmcgZnJvbSBhbm90aGVyIGVsZW1lbnRcbmhlbHBlcnMuZmluZEVsT3JFbHMgPSBhc3luYyBmdW5jdGlvbiBmaW5kRWxPckVscyAoc3RyYXRlZ3ksIHNlbGVjdG9yLCBtdWx0LCBjb250ZXh0ID0gJycpIHtcbiAgaWYgKCFzZWxlY3Rvcikge1xuICAgIHRocm93IG5ldyBFcnJvcignTXVzdCBwcm92aWRlIGEgc2VsZWN0b3Igd2hlbiBmaW5kaW5nIGVsZW1lbnRzJyk7XG4gIH1cblxuICBsZXQgcGFyYW1zID0ge1xuICAgIHN0cmF0ZWd5LFxuICAgIHNlbGVjdG9yLFxuICAgIGNvbnRleHQsXG4gICAgbXVsdGlwbGU6IG11bHRcbiAgfTtcblxuICBsZXQgZWxlbWVudDtcbiAgbGV0IGRvRmluZCA9IGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgZWxlbWVudCA9IGF3YWl0IHRoaXMuZG9GaW5kRWxlbWVudE9yRWxzKHBhcmFtcyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG5cbiAgICAgIC8vIGlmIHRoZSBlcnJvciB0aGF0IGNvbWVzIGJhY2sgaXMgZnJvbSBhIHByb3hpZWQgcmVxdWVzdCwgd2UgbmVlZCB0b1xuICAgICAgLy8gdW53cmFwIGl0IHRvIGl0cyBhY3R1YWwgcHJvdG9jb2wgZXJyb3IgZmlyc3RcbiAgICAgIGlmIChpc0Vycm9yVHlwZShlcnIsIGVycm9ycy5Qcm94eVJlcXVlc3RFcnJvcikpIHtcbiAgICAgICAgZXJyID0gZXJyLmdldEFjdHVhbEVycm9yKCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZXgtYXNzaWduXG4gICAgICB9XG5cbiAgICAgIC8vIG5vdyB3ZSBoYXZlIHRvIGluc3BlY3QgdGhlIGVycm9yIHRvIGRldGVybWluZSBpZiBpdCBpcyBhIG5vIHN1Y2hcbiAgICAgIC8vIGVsZW1lbnQgZXJyb3IsIGJhc2VkIG9uIHRoZSBzaGFwZSBvZiB0aGUgZXJyb3Igb2JqZWN0IGZyb21cbiAgICAgIC8vIEBhcHBpdW0vYmFzZS1kcml2ZXJcbiAgICAgIGlmIChpc0Vycm9yVHlwZShlcnIsIGVycm9ycy5Ob1N1Y2hFbGVtZW50RXJyb3IpKSB7XG4gICAgICAgIC8vIHdlIGFyZSBmaW5lIHdpdGggdGhpcywganVzdCBpbmRpY2F0ZSBhIHJldHJ5XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHRocm93IGVycjtcbiAgICB9XG5cbiAgICAvLyB3ZSB3YW50IHRvIHJldHVybiBmYWxzZSBpZiB3ZSB3YW50IHRvIHBvdGVudGlhbGx5IHRyeSBhZ2FpblxuICAgIHJldHVybiAhXy5pc0VtcHR5KGVsZW1lbnQpO1xuICB9O1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgdGhpcy5pbXBsaWNpdFdhaXRGb3JDb25kaXRpb24oZG9GaW5kKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLm1hdGNoKC9Db25kaXRpb24gdW5tZXQvKSkge1xuICAgICAgLy8gb25seSBnZXQgaGVyZSBpZiB3ZSBhcmUgbG9va2luZyBmb3IgbXVsdGlwbGUgZWxlbWVudHNcbiAgICAgIC8vIGNvbmRpdGlvbiB3YXMgbm90IG1ldCBzZXR0aW5nIHJlcyB0byBlbXB0eSBhcnJheVxuICAgICAgZWxlbWVudCA9IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG5cbiAgaWYgKG11bHQpIHtcbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfVxuICBpZiAoXy5pc0VtcHR5KGVsZW1lbnQpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob1N1Y2hFbGVtZW50RXJyb3IoKTtcbiAgfVxuICByZXR1cm4gZWxlbWVudDtcbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgaGVscGVycyk7XG5leHBvcnQgeyBoZWxwZXJzIH07XG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sImZpbGUiOiJsaWIvY29tbWFuZHMvZmluZC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
81
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2ZpbmQuanMiLCJuYW1lcyI6WyJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsImRvRmluZEVsZW1lbnRPckVscyIsInBhcmFtcyIsImJvb3RzdHJhcCIsInNlbmRBY3Rpb24iLCJmaW5kRWxPckVscyIsInN0cmF0ZWd5Iiwic2VsZWN0b3IiLCJtdWx0IiwiY29udGV4dCIsIkVycm9yIiwibXVsdGlwbGUiLCJlbGVtZW50IiwiZG9GaW5kIiwiZXJyIiwiZXJyb3JzIiwiUHJveHlSZXF1ZXN0RXJyb3IiLCJnZXRBY3R1YWxFcnJvciIsIk5vU3VjaEVsZW1lbnRFcnJvciIsIl8iLCJpc0VtcHR5IiwiaW1wbGljaXRXYWl0Rm9yQ29uZGl0aW9uIiwibWVzc2FnZSIsIm1hdGNoIiwiT2JqZWN0IiwiYXNzaWduIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2ZpbmQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGVycm9ycywgaXNFcnJvclR5cGUgfSBmcm9tICdAYXBwaXVtL2Jhc2UtZHJpdmVyJztcblxuXG5sZXQgaGVscGVycyA9IHt9LCBleHRlbnNpb25zID0ge307XG5cbi8qKlxuICogUmVhc29uIGZvciBpc29sYXRpbmcgZG9GaW5kRWxlbWVudE9yRWxzIGZyb20gZmluZEVsT3JFbHMgaXMgZm9yIHJldXNpbmcgZmluZEVsT3JFbHNcbiAqIGFjcm9zcyBhbmRyb2lkLWRyaXZlcnMgKGxpa2UgYXBwaXVtLXVpYXV0b21hdG9yMi1kcml2ZXIpIHRvIGF2b2lkIGNvZGUgZHVwbGljYXRpb24uXG4gKiBPdGhlciBhbmRyb2lkLWRyaXZlcnMgKGxpa2UgYXBwaXVtLXVpYXV0b21hdG9yMi1kcml2ZXIpIG5lZWQgdG8gb3ZlcnJpZGUgZG9GaW5kRWxlbWVudE9yRWxzXG4gKiB0byBmYWNpbGl0YXRlIGZpbmRFbE9yRWxzLlxuICovXG5oZWxwZXJzLmRvRmluZEVsZW1lbnRPckVscyA9IGFzeW5jIGZ1bmN0aW9uIGRvRmluZEVsZW1lbnRPckVscyAocGFyYW1zKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdmaW5kJywgcGFyYW1zKTtcbn07XG5cbi8vIHN0YXRlZ3k6IGxvY2F0b3Igc3RyYXRlZ3lcbi8vIHNlbGVjdG9yOiB0aGUgYWN0dWFsIHNlbGVjdG9yIGZvciBmaW5kaW5nIGFuIGVsZW1lbnRcbi8vIG11bHQ6IG11bHRpcGxlIGVsZW1lbnRzIG9yIGp1c3Qgb25lP1xuLy8gY29udGV4dDogZmluZGluZyBhbiBlbGVtZW50IGZyb20gdGhlIHJvb3QgY29udGV4dD8gb3Igc3RhcnRpbmcgZnJvbSBhbm90aGVyIGVsZW1lbnRcbmhlbHBlcnMuZmluZEVsT3JFbHMgPSBhc3luYyBmdW5jdGlvbiBmaW5kRWxPckVscyAoc3RyYXRlZ3ksIHNlbGVjdG9yLCBtdWx0LCBjb250ZXh0ID0gJycpIHtcbiAgaWYgKCFzZWxlY3Rvcikge1xuICAgIHRocm93IG5ldyBFcnJvcignTXVzdCBwcm92aWRlIGEgc2VsZWN0b3Igd2hlbiBmaW5kaW5nIGVsZW1lbnRzJyk7XG4gIH1cblxuICBsZXQgcGFyYW1zID0ge1xuICAgIHN0cmF0ZWd5LFxuICAgIHNlbGVjdG9yLFxuICAgIGNvbnRleHQsXG4gICAgbXVsdGlwbGU6IG11bHRcbiAgfTtcblxuICBsZXQgZWxlbWVudDtcbiAgbGV0IGRvRmluZCA9IGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgZWxlbWVudCA9IGF3YWl0IHRoaXMuZG9GaW5kRWxlbWVudE9yRWxzKHBhcmFtcyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG5cbiAgICAgIC8vIGlmIHRoZSBlcnJvciB0aGF0IGNvbWVzIGJhY2sgaXMgZnJvbSBhIHByb3hpZWQgcmVxdWVzdCwgd2UgbmVlZCB0b1xuICAgICAgLy8gdW53cmFwIGl0IHRvIGl0cyBhY3R1YWwgcHJvdG9jb2wgZXJyb3IgZmlyc3RcbiAgICAgIGlmIChpc0Vycm9yVHlwZShlcnIsIGVycm9ycy5Qcm94eVJlcXVlc3RFcnJvcikpIHtcbiAgICAgICAgZXJyID0gZXJyLmdldEFjdHVhbEVycm9yKCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tZXgtYXNzaWduXG4gICAgICB9XG5cbiAgICAgIC8vIG5vdyB3ZSBoYXZlIHRvIGluc3BlY3QgdGhlIGVycm9yIHRvIGRldGVybWluZSBpZiBpdCBpcyBhIG5vIHN1Y2hcbiAgICAgIC8vIGVsZW1lbnQgZXJyb3IsIGJhc2VkIG9uIHRoZSBzaGFwZSBvZiB0aGUgZXJyb3Igb2JqZWN0IGZyb21cbiAgICAgIC8vIEBhcHBpdW0vYmFzZS1kcml2ZXJcbiAgICAgIGlmIChpc0Vycm9yVHlwZShlcnIsIGVycm9ycy5Ob1N1Y2hFbGVtZW50RXJyb3IpKSB7XG4gICAgICAgIC8vIHdlIGFyZSBmaW5lIHdpdGggdGhpcywganVzdCBpbmRpY2F0ZSBhIHJldHJ5XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICAgIHRocm93IGVycjtcbiAgICB9XG5cbiAgICAvLyB3ZSB3YW50IHRvIHJldHVybiBmYWxzZSBpZiB3ZSB3YW50IHRvIHBvdGVudGlhbGx5IHRyeSBhZ2FpblxuICAgIHJldHVybiAhXy5pc0VtcHR5KGVsZW1lbnQpO1xuICB9O1xuXG4gIHRyeSB7XG4gICAgYXdhaXQgdGhpcy5pbXBsaWNpdFdhaXRGb3JDb25kaXRpb24oZG9GaW5kKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLm1hdGNoKC9Db25kaXRpb24gdW5tZXQvKSkge1xuICAgICAgLy8gb25seSBnZXQgaGVyZSBpZiB3ZSBhcmUgbG9va2luZyBmb3IgbXVsdGlwbGUgZWxlbWVudHNcbiAgICAgIC8vIGNvbmRpdGlvbiB3YXMgbm90IG1ldCBzZXR0aW5nIHJlcyB0byBlbXB0eSBhcnJheVxuICAgICAgZWxlbWVudCA9IFtdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBlcnI7XG4gICAgfVxuICB9XG5cbiAgaWYgKG11bHQpIHtcbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfVxuICBpZiAoXy5pc0VtcHR5KGVsZW1lbnQpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob1N1Y2hFbGVtZW50RXJyb3IoKTtcbiAgfVxuICByZXR1cm4gZWxlbWVudDtcbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgaGVscGVycyk7XG5leHBvcnQgeyBoZWxwZXJzIH07XG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUdBLElBQUlBLE9BQU8sR0FBRyxFQUFkO0FBQUEsSUFBa0JDLFVBQVUsR0FBRyxFQUEvQjs7O0FBUUFELE9BQU8sQ0FBQ0Usa0JBQVIsR0FBNkIsZUFBZUEsa0JBQWYsQ0FBbUNDLE1BQW5DLEVBQTJDO0VBQ3RFLE9BQU8sTUFBTSxLQUFLQyxTQUFMLENBQWVDLFVBQWYsQ0FBMEIsTUFBMUIsRUFBa0NGLE1BQWxDLENBQWI7QUFDRCxDQUZEOztBQVFBSCxPQUFPLENBQUNNLFdBQVIsR0FBc0IsZUFBZUEsV0FBZixDQUE0QkMsUUFBNUIsRUFBc0NDLFFBQXRDLEVBQWdEQyxJQUFoRCxFQUFzREMsT0FBTyxHQUFHLEVBQWhFLEVBQW9FO0VBQ3hGLElBQUksQ0FBQ0YsUUFBTCxFQUFlO0lBQ2IsTUFBTSxJQUFJRyxLQUFKLENBQVUsK0NBQVYsQ0FBTjtFQUNEOztFQUVELElBQUlSLE1BQU0sR0FBRztJQUNYSSxRQURXO0lBRVhDLFFBRlc7SUFHWEUsT0FIVztJQUlYRSxRQUFRLEVBQUVIO0VBSkMsQ0FBYjtFQU9BLElBQUlJLE9BQUo7O0VBQ0EsSUFBSUMsTUFBTSxHQUFHLFlBQVk7SUFDdkIsSUFBSTtNQUNGRCxPQUFPLEdBQUcsTUFBTSxLQUFLWCxrQkFBTCxDQUF3QkMsTUFBeEIsQ0FBaEI7SUFDRCxDQUZELENBRUUsT0FBT1ksR0FBUCxFQUFZO01BSVosSUFBSSw2QkFBWUEsR0FBWixFQUFpQkMsbUJBQU9DLGlCQUF4QixDQUFKLEVBQWdEO1FBQzlDRixHQUFHLEdBQUdBLEdBQUcsQ0FBQ0csY0FBSixFQUFOO01BQ0Q7O01BS0QsSUFBSSw2QkFBWUgsR0FBWixFQUFpQkMsbUJBQU9HLGtCQUF4QixDQUFKLEVBQWlEO1FBRS9DLE9BQU8sS0FBUDtNQUNEOztNQUNELE1BQU1KLEdBQU47SUFDRDs7SUFHRCxPQUFPLENBQUNLLGdCQUFFQyxPQUFGLENBQVVSLE9BQVYsQ0FBUjtFQUNELENBdkJEOztFQXlCQSxJQUFJO0lBQ0YsTUFBTSxLQUFLUyx3QkFBTCxDQUE4QlIsTUFBOUIsQ0FBTjtFQUNELENBRkQsQ0FFRSxPQUFPQyxHQUFQLEVBQVk7SUFDWixJQUFJQSxHQUFHLENBQUNRLE9BQUosSUFBZVIsR0FBRyxDQUFDUSxPQUFKLENBQVlDLEtBQVosQ0FBa0IsaUJBQWxCLENBQW5CLEVBQXlEO01BR3ZEWCxPQUFPLEdBQUcsRUFBVjtJQUNELENBSkQsTUFJTztNQUNMLE1BQU1FLEdBQU47SUFDRDtFQUNGOztFQUVELElBQUlOLElBQUosRUFBVTtJQUNSLE9BQU9JLE9BQVA7RUFDRDs7RUFDRCxJQUFJTyxnQkFBRUMsT0FBRixDQUFVUixPQUFWLENBQUosRUFBd0I7SUFDdEIsTUFBTSxJQUFJRyxtQkFBT0csa0JBQVgsRUFBTjtFQUNEOztFQUNELE9BQU9OLE9BQVA7QUFDRCxDQXpERDs7QUEyREFZLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjekIsVUFBZCxFQUEwQkQsT0FBMUI7ZUFFZUMsVSJ9
@@ -419,4 +419,4 @@ var _default = extensions;
419
419
  exports.default = _default;require('source-map-support').install();
420
420
 
421
421
 
422
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9nZW5lcmFsLmpzIl0sIm5hbWVzIjpbIk1PTUVOVF9GT1JNQVRfSVNPODYwMSIsImNvbW1hbmRzIiwiaGVscGVycyIsImV4dGVuc2lvbnMiLCJrZXlzIiwiXyIsImlzQXJyYXkiLCJqb2luIiwicGFyYW1zIiwidGV4dCIsInJlcGxhY2UiLCJvcHRzIiwidW5pY29kZUtleWJvYXJkIiwiZG9TZW5kS2V5cyIsImJvb3RzdHJhcCIsInNlbmRBY3Rpb24iLCJnZXREZXZpY2VUaW1lIiwiZm9ybWF0IiwibG9nIiwiZGVidWciLCJkZXZpY2VUaW1lc3RhbXAiLCJhZGIiLCJzaGVsbCIsInRyaW0iLCJwYXJzZWRUaW1lc3RhbXAiLCJtb21lbnQiLCJ1dGMiLCJpc1ZhbGlkIiwid2FybiIsInV0Y09mZnNldCIsIl90em0iLCJtb2JpbGVHZXREZXZpY2VUaW1lIiwiZ2V0UGFnZVNvdXJjZSIsImJhY2siLCJpc0tleWJvYXJkU2hvd24iLCJpc1NvZnRLZXlib2FyZFByZXNlbnQiLCJoaWRlS2V5Ym9hcmQiLCJvcGVuU2V0dGluZ3NBY3Rpdml0eSIsInNldHRpbmciLCJhcHBQYWNrYWdlIiwiYXBwQWN0aXZpdHkiLCJnZXRGb2N1c2VkUGFja2FnZUFuZEFjdGl2aXR5Iiwid2FpdEZvck5vdEFjdGl2aXR5IiwiZ2V0V2luZG93U2l6ZSIsImdldFdpbmRvd1JlY3QiLCJ3aWR0aCIsImhlaWdodCIsIngiLCJ5IiwiZ2V0Q3VycmVudEFjdGl2aXR5IiwiZ2V0Q3VycmVudFBhY2thZ2UiLCJiYWNrZ3JvdW5kIiwic2Vjb25kcyIsImdvVG9Ib21lIiwic2xlZXBNcyIsInRocmVzaG9sZE1zIiwiaW50ZXJ2YWxNcyIsIm1pbiIsInBhcnNlSW50IiwicHJvZ3Jlc3NDYiIsImVsYXBzZWRNcyIsInByb2dyZXNzIiwid2FpdFNlY3MiLCJ0b0ZpeGVkIiwicHJvZ3Jlc3NQY3QiLCJhcmdzIiwiX2NhY2hlZEFjdGl2aXR5QXJncyIsImFjdGl2YXRlQXBwIiwiaWduIiwiYXBwV2FpdFBhY2thZ2UiLCJhcHBXYWl0QWN0aXZpdHkiLCJzcGxpdCIsImluY2x1ZGVzIiwicGtnIiwiYWN0aXZpdHkiLCJhY3Rpb24iLCJpbnRlbnRBY3Rpb24iLCJjYXRlZ29yeSIsImludGVudENhdGVnb3J5IiwiZmxhZ3MiLCJpbnRlbnRGbGFncyIsIndhaXRQa2ciLCJ3YWl0QWN0aXZpdHkiLCJ3YWl0Rm9yTGF1bmNoIiwiYXBwV2FpdEZvckxhdW5jaCIsIndhaXREdXJhdGlvbiIsImFwcFdhaXREdXJhdGlvbiIsIm9wdGlvbmFsSW50ZW50QXJndW1lbnRzIiwic3RvcEFwcCIsInVzZXIiLCJ1c2VyUHJvZmlsZSIsInV0aWwiLCJmaWx0ZXJPYmplY3QiLCJKU09OIiwic3RyaW5naWZ5Iiwic3RhcnRBcHAiLCJnZXRTdHJpbmdzIiwibGFuZ3VhZ2UiLCJnZXREZXZpY2VMYW5ndWFnZSIsImluZm8iLCJwcmVwcm9jZXNzU3RyaW5nc01hcCIsIm1hcHBpbmciLCJyZXN1bHQiLCJrZXkiLCJ2YWx1ZSIsInRvUGFpcnMiLCJpc1N0cmluZyIsImFwa1N0cmluZ3MiLCJhbmRyb2lkSGVscGVycyIsInB1c2hTdHJpbmdzIiwibGF1bmNoQXBwIiwiaW5pdEFVVCIsInN0YXJ0QVVUIiwic3RhcnRBY3Rpdml0eSIsImRvbnRTdG9wQXBwT25SZXNldCIsImhhc1ZhbHVlIiwicmVzZXQiLCJyZXNldEFwcCIsIk9iamVjdCIsImFzc2lnbiIsImZhc3RSZXNldCIsInNldENvbnRleHQiLCJpc0Nocm9tZVNlc3Npb24iLCJzdGFydENocm9tZVNlc3Npb24iLCJzZXRVcmwiLCJ1cmkiLCJzdGFydFVyaSIsImNsb3NlQXBwIiwiZm9yY2VTdG9wIiwiZ2V0RGlzcGxheURlbnNpdHkiLCJvdXQiLCJ2YWwiLCJpc05hTiIsImVycm9yQW5kVGhyb3ciLCJtb2JpbGVQZXJmb3JtRWRpdG9yQWN0aW9uIiwiZXJyb3JzIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJwZXJmb3JtRWRpdG9yQWN0aW9uIiwiUEVSTUlTU0lPTl9BQ1RJT04iLCJHUkFOVCIsIlJFVk9LRSIsIm1vYmlsZUNoYW5nZVBlcm1pc3Npb25zIiwicGVybWlzc2lvbnMiLCJhY3Rpb25GdW5jIiwidG9Mb3dlciIsInBlcm1pc3Npb24iLCJncmFudFBlcm1pc3Npb24iLCJyZXZva2VQZXJtaXNzaW9uIiwidmFsdWVzIiwiUEVSTUlTU0lPTlNfVFlQRSIsIkRFTklFRCIsIkdSQU5URUQiLCJSRVFVRVNURUQiLCJtb2JpbGVHZXRQZXJtaXNzaW9ucyIsInR5cGUiLCJnZXRSZXFQZXJtaXNzaW9ucyIsImdldEdyYW50ZWRQZXJtaXNzaW9ucyIsImdldERlbmllZFBlcm1pc3Npb25zIiwibW9iaWxlR2V0Tm90aWZpY2F0aW9ucyIsImdldE5vdGlmaWNhdGlvbnMiLCJtb2JpbGVMaXN0U21zIiwiZ2V0U21zTGlzdCIsIm1vYmlsZVVubG9jayIsInN0cmF0ZWd5IiwidGltZW91dE1zIiwidW5sb2NrIiwidW5sb2NrS2V5IiwidW5sb2NrVHlwZSIsInVubG9ja1N0cmF0ZWd5IiwidW5sb2NrU3VjY2Vzc1RpbWVvdXQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEscUJBQXFCLEdBQUcsc0JBQTlCO0FBRUEsSUFBSUMsUUFBUSxHQUFHLEVBQWY7QUFBQSxJQUFtQkMsT0FBTyxHQUFHLEVBQTdCO0FBQUEsSUFBaUNDLFVBQVUsR0FBRyxFQUE5Qzs7OztBQUVBRixRQUFRLENBQUNHLElBQVQsR0FBZ0IsZUFBZUEsSUFBZixDQUFxQkEsSUFBckIsRUFBMkI7QUFFekNBLEVBQUFBLElBQUksR0FBR0MsZ0JBQUVDLE9BQUYsQ0FBVUYsSUFBVixJQUFrQkEsSUFBSSxDQUFDRyxJQUFMLENBQVUsRUFBVixDQUFsQixHQUFrQ0gsSUFBekM7QUFDQSxNQUFJSSxNQUFNLEdBQUc7QUFDWEMsSUFBQUEsSUFBSSxFQUFFTCxJQURLO0FBRVhNLElBQUFBLE9BQU8sRUFBRTtBQUZFLEdBQWI7O0FBSUEs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QVNDLGdCQUFULENBQWYsQ0FBMkMsc0JBRC9DLENBQU47QUFYSjs7QUFjQSxTQUFPLE1BQU1OLFVBQVUsQ0FBQ3hHLFVBQUQsQ0FBdkI7QUFDRCxDQXRCRDs7QUE4QkF0QyxRQUFRLENBQUM2SixzQkFBVCxHQUFrQyxlQUFlQSxzQkFBZixHQUF5QztBQUN6RSxTQUFPLE1BQU0sS0FBS3pJLEdBQUwsQ0FBUzBJLGdCQUFULEVBQWI7QUFDRCxDQUZEOztBQWlCQTlKLFFBQVEsQ0FBQytKLGFBQVQsR0FBeUIsZUFBZUEsYUFBZixDQUE4QnJKLElBQUksR0FBRyxFQUFyQyxFQUF5QztBQUNoRSxTQUFPLE1BQU0sS0FBS1UsR0FBTCxDQUFTNEksVUFBVCxDQUFvQnRKLElBQXBCLENBQWI7QUFDRCxDQUZEOztBQXlCQVYsUUFBUSxDQUFDaUssWUFBVCxHQUF3QixlQUFlQSxZQUFmLENBQTZCdkosSUFBSSxHQUFHLEVBQXBDLEVBQXdDO0FBQzlELFFBQU07QUFBRTRGLElBQUFBLEdBQUY7QUFBT21ELElBQUFBLElBQVA7QUFBYVMsSUFBQUEsUUFBYjtBQUF1QkMsSUFBQUE7QUFBdkIsTUFBcUN6SixJQUEzQztBQUNBLFFBQU1pRyx3QkFBZXlELE1BQWYsQ0FBc0IsSUFBdEIsRUFBNEIsS0FBS2hKLEdBQWpDLEVBQXNDO0FBQzFDaUosSUFBQUEsU0FBUyxFQUFFL0QsR0FEK0I7QUFFMUNnRSxJQUFBQSxVQUFVLEVBQUViLElBRjhCO0FBRzFDYyxJQUFBQSxjQUFjLEVBQUVMLFFBSDBCO0FBSTFDTSxJQUFBQSxvQkFBb0IsRUFBRUw7QUFKb0IsR0FBdEMsQ0FBTjtBQU1ELENBUkQ7O0FBVUE5QyxNQUFNLENBQUNDLE1BQVAsQ0FBY3BILFVBQWQsRUFBMEJGLFFBQTFCLEVBQW9DQyxPQUFwQztlQUVlQyxVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBhbmRyb2lkSGVscGVycyBmcm9tICcuLi9hbmRyb2lkLWhlbHBlcnMnO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBsb25nU2xlZXAgfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdAYXBwaXVtL2Jhc2UtZHJpdmVyJztcblxuY29uc3QgTU9NRU5UX0ZPUk1BVF9JU084NjAxID0gJ1lZWVktTU0tRERUSEg6bW06c3NaJztcblxubGV0IGNvbW1hbmRzID0ge30sIGhlbHBlcnMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG5jb21tYW5kcy5rZXlzID0gYXN5bmMgZnVuY3Rpb24ga2V5cyAoa2V5cykge1xuICAvLyBQcm90b2NvbCBzZW5kcyBhbiBhcnJheTsgcmV0aGluayBhcHByb2FjaFxuICBrZXlzID0gXy5pc0FycmF5KGtleXMpID8ga2V5cy5qb2luKCcnKSA6IGtleXM7XG4gIGxldCBwYXJhbXMgPSB7XG4gICAgdGV4dDoga2V5cyxcbiAgICByZXBsYWNlOiBmYWxzZVxuICB9O1xuICBpZiAodGhpcy5vcHRzLnVuaWNvZGVLZXlib2FyZCkge1xuICAgIHBhcmFtcy51bmljb2RlS2V5Ym9hcmQgPSB0cnVlO1xuICB9XG4gIGF3YWl0IHRoaXMuZG9TZW5kS2V5cyhwYXJhbXMpO1xufTtcblxuY29tbWFuZHMuZG9TZW5kS2V5cyA9IGFzeW5jIGZ1bmN0aW9uIGRvU2VuZEtleXMgKHBhcmFtcykge1xuICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbignc2V0VGV4dCcsIHBhcmFtcyk7XG59O1xuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgY3VycmVudCBkZXZpY2UncyB0aW1lc3RhbXAuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGZvcm1hdCAtIFRoZSBzZXQgb2YgZm9ybWF0IHNwZWNpZmllcnMuIFJlYWRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICBodHRwczovL21vbWVudGpzLmNvbS9kb2NzLyB0byBnZXQgdGhlIGZ1bGwgbGlzdCBvZiBzdXBwb3J0ZWRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRldGltZSBmb3JtYXQgc3BlY2lmaWVycy4gVGhlIGRlZmF1bHQgZm9ybWF0IGlzXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgYFlZWVktTU0tRERUSEg6bW06c3NaYCwgd2hpY2ggY29tcGxpZXMgdG8gSVNPLTg2MDFcbiAqIEByZXR1cm4ge3N0cmluZ30gRm9ybWF0dGVkIGRhdGV0aW1lIHN0cmluZyBvciB0aGUgcmF3IGNvbW1hbmQgb3V0cHV0IGlmIGZvcm1hdHRpbmcgZmFpbHNcbiAqL1xuY29tbWFuZHMuZ2V0RGV2aWNlVGltZSA9IGFzeW5jIGZ1bmN0aW9uIGdldERldmljZVRpbWUgKGZvcm1hdCA9IE1PTUVOVF9GT1JNQVRfSVNPODYwMSkge1xuICB0aGlzLmxvZy5kZWJ1ZygnQXR0ZW1wdGluZyB0byBjYXB0dXJlIGFuZHJvaWQgZGV2aWNlIGRhdGUgYW5kIHRpbWUuICcgK1xuICAgIGBUaGUgZm9ybWF0IHNwZWNpZmllciBpcyAnJHtmb3JtYXR9J2ApO1xuICBjb25zdCBkZXZpY2VUaW1lc3RhbXAgPSAoYXdhaXQgdGhpcy5hZGIuc2hlbGwoWydkYXRlJywgJyslWS0lbS0lZFQlVCV6J10pKS50cmltKCk7XG4gIHRoaXMubG9nLmRlYnVnKGBHb3QgZGV2aWNlIHRpbWVzdGFtcDogJHtkZXZpY2VUaW1lc3RhbXB9YCk7XG4gIGNvbnN0IHBhcnNlZFRpbWVzdGFtcCA9IG1vbWVudC51dGMoZGV2aWNlVGltZXN0YW1wLCAnWVlZWS1NTS1ERFRISDptbTpzc1paJyk7XG4gIGlmICghcGFyc2VkVGltZXN0YW1wLmlzVmFsaWQoKSkge1xuICAgIHRoaXMubG9nLndhcm4oJ0Nhbm5vdCBwYXJzZSB0aGUgcmV0dXJuZWQgdGltZXN0YW1wLiBSZXR1cm5pbmcgYXMgaXMnKTtcbiAgICByZXR1cm4gZGV2aWNlVGltZXN0YW1wO1xuICB9XG4gIHJldHVybiBwYXJzZWRUaW1lc3RhbXAudXRjT2Zmc2V0KHBhcnNlZFRpbWVzdGFtcC5fdHptIHx8IDApLmZvcm1hdChmb3JtYXQpO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBEZXZpY2VUaW1lT3B0aW9uc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IGZvcm1hdCBbWVlZWS1NTS1ERFRISDptbTpzc1pdIC0gU2VlIGdldERldmljZVRpbWUjZm9ybWF0XG4gKi9cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgZGV2aWNlIHRpbWVcbiAqXG4gKiBAcGFyYW0ge0RldmljZVRpbWVPcHRpb25zfSBvcHRzXG4gKiBAcmV0dXJuIHtzdHJpbmd9IEZvcm1hdHRlZCBkYXRldGltZSBzdHJpbmcgb3IgdGhlIHJhdyBjb21tYW5kIG91dHB1dCBpZiBmb3JtYXR0aW5nIGZhaWxzXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUdldERldmljZVRpbWUgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVHZXREZXZpY2VUaW1lIChvcHRzID0ge30pIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0RGV2aWNlVGltZShvcHRzLmZvcm1hdCk7XG59O1xuXG5jb21tYW5kcy5nZXRQYWdlU291cmNlID0gYXN5bmMgZnVuY3Rpb24gZ2V0UGFnZVNvdXJjZSAoKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdzb3VyY2UnKTtcbn07XG5cbmNvbW1hbmRzLmJhY2sgPSBhc3luYyBmdW5jdGlvbiBiYWNrICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ3ByZXNzQmFjaycpO1xufTtcblxuY29tbWFuZHMuaXNLZXlib2FyZFNob3duID0gYXN5bmMgZnVuY3Rpb24gaXNLZXlib2FyZFNob3duICgpIHtcbiAgY29uc3Qge2lzS2V5Ym9hcmRTaG93bn0gPSBhd2FpdCB0aGlzLmFkYi5pc1NvZnRLZXlib2FyZFByZXNlbnQoKTtcbiAgcmV0dXJuIGlzS2V5Ym9hcmRTaG93bjtcbn07XG5cbmNvbW1hbmRzLmhpZGVLZXlib2FyZCA9IGFzeW5jIGZ1bmN0aW9uIGhpZGVLZXlib2FyZCAoKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmFkYi5oaWRlS2V5Ym9hcmQoKTtcbn07XG5cbmNvbW1hbmRzLm9wZW5TZXR0aW5nc0FjdGl2aXR5ID0gYXN5bmMgZnVuY3Rpb24gb3BlblNldHRpbmdzQWN0aXZpdHkgKHNldHRpbmcpIHtcbiAgbGV0IHthcHBQYWNrYWdlLCBhcHBBY3Rpdml0eX0gPSBhd2FpdCB0aGlzLmFkYi5nZXRGb2N1c2VkUGFja2FnZUFuZEFjdGl2aXR5KCk7XG4gIGF3YWl0IHRoaXMuYWRiLnNoZWxsKFsnYW0nLCAnc3RhcnQnLCAnLWEnLCBgYW5kcm9pZC5zZXR0aW5ncy4ke3NldHRpbmd9YF0pO1xuICBhd2FpdCB0aGlzLmFkYi53YWl0Rm9yTm90QWN0aXZpdHkoYXBwUGFja2FnZSwgYXBwQWN0aXZpdHksIDUwMDApO1xufTtcblxuY29tbWFuZHMuZ2V0V2luZG93U2l6ZSA9IGFzeW5jIGZ1bmN0aW9uIGdldFdpbmRvd1NpemUgKCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbignZ2V0RGV2aWNlU2l6ZScpO1xufTtcblxuLy8gRm9yIFczQ1xuY29tbWFuZHMuZ2V0V2luZG93UmVjdCA9IGFzeW5jIGZ1bmN0aW9uIGdldFdpbmRvd1JlY3QgKCkge1xuICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGF3YWl0IHRoaXMuZ2V0V2luZG93U2l6ZSgpO1xuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4OiAwLFxuICAgIHk6IDBcbiAgfTtcbn07XG5cbmNvbW1hbmRzLmdldEN1cnJlbnRBY3Rpdml0eSA9IGFzeW5jIGZ1bmN0aW9uIGdldEN1cnJlbnRBY3Rpdml0eSAoKSB7XG4gIHJldHVybiAoYXdhaXQgdGhpcy5hZGIuZ2V0Rm9jdXNlZFBhY2thZ2VBbmRBY3Rpdml0eSgpKS5hcHBBY3Rpdml0eTtcbn07XG5cbmNvbW1hbmRzLmdldEN1cnJlbnRQYWNrYWdlID0gYXN5bmMgZnVuY3Rpb24gZ2V0Q3VycmVudFBhY2thZ2UgKCkge1xuICByZXR1cm4gKGF3YWl0IHRoaXMuYWRiLmdldEZvY3VzZWRQYWNrYWdlQW5kQWN0aXZpdHkoKSkuYXBwUGFja2FnZTtcbn07XG5cbmNvbW1hbmRzLmJhY2tncm91bmQgPSBhc3luYyBmdW5jdGlvbiBiYWNrZ3JvdW5kIChzZWNvbmRzKSB7XG4gIGlmIChzZWNvbmRzIDwgMCkge1xuICAgIC8vIGlmIHVzZXIgcGFzc2VzIGluIGEgbmVnYXRpdmUgc2Vjb25kcyB2YWx1ZSwgaW50ZXJwcmV0IHRoYXQgYXMgdGhlIGluc3RydWN0aW9uXG4gICAgLy8gdG8gbm90IGJyaW5nIHRoZSBhcHAgYmFjayBhdCBhbGxcbiAgICBhd2FpdCB0aGlzLmFkYi5nb1RvSG9tZSgpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGxldCB7YXBwUGFja2FnZSwgYXBwQWN0aXZpdHl9ID0gYXdhaXQgdGhpcy5hZGIuZ2V0Rm9jdXNlZFBhY2thZ2VBbmRBY3Rpdml0eSgpO1xuICBhd2FpdCB0aGlzLmFkYi5nb1RvSG9tZSgpO1xuXG4gIC8vIHBlb3BsZSBjYW4gd2FpdCBmb3IgYSBsb25nIHRpbWUsIHNvIHRvIGJlIHNhZmUgbGV0J3MgdXNlIHRoZSBsb25nU2xlZXAgZnVuY3Rpb24gYW5kIGxvZ1xuICAvLyBwcm9ncmVzcyBwZXJpb2RpY2FsbHkuXG4gIGNvbnN0IHNsZWVwTXMgPSBzZWNvbmRzICogMTAwMDtcbiAgY29uc3QgdGhyZXNob2xkTXMgPSAzMCAqIDEwMDA7IC8vIHVzZSB0aGUgc3Bpbi13YWl0IGZvciBhbnl0aGluZyBvdmVyIHRoaXMgdGhyZXNob2xkXG4gIC8vIGZvciBvdXIgc3BpbiBpbnRlcnZhbCwgdXNlIDElIG9mIHRoZSB0b3RhbCB3YWl0IHRpbWUsIGJ1dCBub3RoaW5nIGJpZ2dlciB0aGFuIDMwc1xuICBjb25zdCBpbnRlcnZhbE1zID0gXy5taW4oWzMwICogMTAwMCwgcGFyc2VJbnQoc2xlZXBNcyAvIDEwMCwgMTApXSk7XG4gIGNvbnN0IHByb2dyZXNzQ2IgPSAoe2VsYXBzZWRNcywgcHJvZ3Jlc3N9KSA9PiB7XG4gICAgY29uc3Qgd2FpdFNlY3MgPSAoZWxhcHNlZE1zIC8gMTAwMCkudG9GaXhlZCgwKTtcbiAgICBjb25zdCBwcm9ncmVzc1BjdCA9IChwcm9ncmVzcyAqIDEwMCkudG9GaXhlZCgyKTtcbiAgICB0aGlzLmxvZy5kZWJ1ZyhgV2FpdGVkICR7d2FpdFNlY3N9cyBzbyBmYXIgKCR7cHJvZ3Jlc3NQY3R9JSlgKTtcbiAgfTtcbiAgYXdhaXQgbG9uZ1NsZWVwKHNsZWVwTXMsIHt0aHJlc2hvbGRNcywgaW50ZXJ2YWxNcywgcHJvZ3Jlc3NDYn0pO1xuXG4gIGxldCBhcmdzO1xuICBpZiAodGhpcy5fY2FjaGVkQWN0aXZpdHlBcmdzICYmIHRoaXMuX2NhY2hlZEFjdGl2aXR5QXJnc1tgJHthcHBQYWNrYWdlfS8ke2FwcEFjdGl2aXR5fWBdKSB7XG4gICAgLy8gdGhlIGFjdGl2aXR5IHdhcyBzdGFydGVkIHdpdGggYHN0YXJ0QWN0aXZpdHlgLCBzbyB1c2UgdGhvc2UgYXJncyB0byByZXN0YXJ0XG4gICAgYXJncyA9IHRoaXMuX2NhY2hlZEFjdGl2aXR5QXJnc1tgJHthcHBQYWNrYWdlfS8ke2FwcEFjdGl2aXR5fWBdO1xuICB9IGVsc2Uge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgQWN0aXZhdGluZyBhcHAgJyR7YXBwUGFja2FnZX0nIGluIG9yZGVyIHRvIHJlc3RvcmUgaXRgKTtcbiAgICAgIGF3YWl0IHRoaXMuYWN0aXZhdGVBcHAoYXBwUGFja2FnZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChpZ24pIHt9XG4gICAgYXJncyA9ICgoYXBwUGFja2FnZSA9PT0gdGhpcy5vcHRzLmFwcFBhY2thZ2UgJiYgYXBwQWN0aXZpdHkgPT09IHRoaXMub3B0cy5hcHBBY3Rpdml0eSkgfHxcbiAgICAgICAgICAgIChhcHBQYWNrYWdlID09PSB0aGlzLm9wdHMuYXBwV2FpdFBhY2thZ2UgJiYgKHRoaXMub3B0cy5hcHBXYWl0QWN0aXZpdHkgfHwgJycpLnNwbGl0KCcsJykuaW5jbHVkZXMoYXBwQWN0aXZpdHkpKSlcbiAgICAgID8gey8vIHRoZSBhY3Rpdml0eSBpcyB0aGUgb3JpZ2luYWwgc2Vzc2lvbiBhY3Rpdml0eSwgc28gdXNlIHRoZSBvcmlnaW5hbCBhcmdzXG4gICAgICAgIHBrZzogdGhpcy5vcHRzLmFwcFBhY2thZ2UsXG4gICAgICAgIGFjdGl2aXR5OiB0aGlzLm9wdHMuYXBwQWN0aXZpdHksXG4gICAgICAgIGFjdGlvbjogdGhpcy5vcHRzLmludGVudEFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IHRoaXMub3B0cy5pbnRlbnRDYXRlZ29yeSxcbiAgICAgICAgZmxhZ3M6IHRoaXMub3B0cy5pbnRlbnRGbGFncyxcbiAgICAgICAgd2FpdFBrZzogdGhpcy5vcHRzLmFwcFdhaXRQYWNrYWdlLFxuICAgICAgICB3YWl0QWN0aXZpdHk6IHRoaXMub3B0cy5hcHBXYWl0QWN0aXZpdHksXG4gICAgICAgIHdhaXRGb3JMYXVuY2g6IHRoaXMub3B0cy5hcHBXYWl0Rm9yTGF1bmNoLFxuICAgICAgICB3YWl0RHVyYXRpb246IHRoaXMub3B0cy5hcHBXYWl0RHVyYXRpb24sXG4gICAgICAgIG9wdGlvbmFsSW50ZW50QXJndW1lbnRzOiB0aGlzLm9wdHMub3B0aW9uYWxJbnRlbnRBcmd1bWVudHMsXG4gICAgICAgIHN0b3BBcHA6IGZhbHNlLFxuICAgICAgICB1c2VyOiB0aGlzLm9wdHMudXNlclByb2ZpbGV9XG4gICAgICA6IHsvLyB0aGUgYWN0aXZpdHkgd2FzIHN0YXJ0ZWQgc29tZSBvdGhlciB3YXksIHNvIHVzZSBkZWZhdWx0c1xuICAgICAgICBwa2c6IGFwcFBhY2thZ2UsXG4gICAgICAgIGFjdGl2aXR5OiBhcHBBY3Rpdml0eSxcbiAgICAgICAgd2FpdFBrZzogYXBwUGFja2FnZSxcbiAgICAgICAgd2FpdEFjdGl2aXR5OiBhcHBBY3Rpdml0eSxcbiAgICAgICAgc3RvcEFwcDogZmFsc2V9O1xuICB9XG4gIGFyZ3MgPSBhd2FpdCB1dGlsLmZpbHRlck9iamVjdChhcmdzKTtcbiAgdGhpcy5sb2cuZGVidWcoYEJyaW5naW5nIGFwcGxpY2F0aW9uIGJhY2sgdG8gZm9yZWdyb3VuZCB3aXRoIGFyZ3VtZW50czogJHtKU09OLnN0cmluZ2lmeShhcmdzKX1gKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLnN0YXJ0QXBwKGFyZ3MpO1xufTtcblxuY29tbWFuZHMuZ2V0U3RyaW5ncyA9IGFzeW5jIGZ1bmN0aW9uIGdldFN0cmluZ3MgKGxhbmd1YWdlKSB7XG4gIGlmICghbGFuZ3VhZ2UpIHtcbiAgICBsYW5ndWFnZSA9IGF3YWl0IHRoaXMuYWRiLmdldERldmljZUxhbmd1YWdlKCk7XG4gICAgdGhpcy5sb2cuaW5mbyhgTm8gbGFuZ3VhZ2Ugc3BlY2lmaWVkLCByZXR1cm5pbmcgc3RyaW5ncyBmb3I6ICR7bGFuZ3VhZ2V9YCk7XG4gIH1cblxuICAvLyBDbGllbnRzIHJlcXVpcmUgdGhlIHJlc3VsdGluZyBtYXBwaW5nIHRvIGhhdmUgYm90aCBrZXlzXG4gIC8vIGFuZCB2YWx1ZXMgb2YgdHlwZSBzdHJpbmdcbiAgY29uc3QgcHJlcHJvY2Vzc1N0cmluZ3NNYXAgPSAobWFwcGluZykgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIF8udG9QYWlycyhtYXBwaW5nKSkge1xuICAgICAgcmVzdWx0W2tleV0gPSBfLmlzU3RyaW5nKHZhbHVlKSA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIGlmICh0aGlzLmFwa1N0cmluZ3NbbGFuZ3VhZ2VdKSB7XG4gICAgLy8gUmV0dXJuIGNhY2hlZCBzdHJpbmdzXG4gICAgcmV0dXJuIHByZXByb2Nlc3NTdHJpbmdzTWFwKHRoaXMuYXBrU3RyaW5nc1tsYW5ndWFnZV0pO1xuICB9XG5cbiAgdGhpcy5hcGtTdHJpbmdzW2xhbmd1YWdlXSA9IGF3YWl0IGFuZHJvaWRIZWxwZXJzLnB1c2hTdHJpbmdzKGxhbmd1YWdlLCB0aGlzLmFkYiwgdGhpcy5vcHRzKTtcbiAgaWYgKHRoaXMuYm9vdHN0cmFwKSB7XG4gICAgLy8gVE9ETzogVGhpcyBpcyBtdXRhdGluZyB0aGUgY3VycmVudCBsYW5ndWFnZSwgYnV0IGl0J3MgaG93IGFwcGl1bSBjdXJyZW50bHkgd29ya3NcbiAgICBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCd1cGRhdGVTdHJpbmdzJyk7XG4gIH1cblxuICByZXR1cm4gcHJlcHJvY2Vzc1N0cmluZ3NNYXAodGhpcy5hcGtTdHJpbmdzW2xhbmd1YWdlXSk7XG59O1xuXG5jb21tYW5kcy5sYXVuY2hBcHAgPSBhc3luYyBmdW5jdGlvbiBsYXVuY2hBcHAgKCkge1xuICBhd2FpdCB0aGlzLmluaXRBVVQoKTtcbiAgYXdhaXQgdGhpcy5zdGFydEFVVCgpO1xufTtcblxuY29tbWFuZHMuc3RhcnRBY3Rpdml0eSA9IGFzeW5jIGZ1bmN0aW9uIHN0YXJ0QWN0aXZpdHkgKGFwcFBhY2thZ2UsIGFwcEFjdGl2aXR5LFxuICBhcHBXYWl0UGFja2FnZSwgYXBwV2FpdEFjdGl2aXR5LCBpbnRlbnRBY3Rpb24sIGludGVudENhdGVnb3J5LCBpbnRlbnRGbGFncyxcbiAgb3B0aW9uYWxJbnRlbnRBcmd1bWVudHMsIGRvbnRTdG9wQXBwT25SZXNldCkge1xuICB0aGlzLmxvZy5kZWJ1ZyhgU3RhcnRpbmcgcGFja2FnZSAnJHthcHBQYWNrYWdlfScgYW5kIGFjdGl2aXR5ICcke2FwcEFjdGl2aXR5fSdgKTtcblxuICAvLyBkb250U3RvcEFwcE9uUmVzZXQgaXMgYm90aCBhbiBhcmd1bWVudCBoZXJlLCBhbmQgYSBkZXNpcmVkIGNhcGFiaWxpdHlcbiAgLy8gaWYgdGhlIGFyZ3VtZW50IGlzIHNldCwgdXNlIGl0LCBvdGhlcndpc2UgdXNlIHRoZSBjYXBcbiAgaWYgKCF1dGlsLmhhc1ZhbHVlKGRvbnRTdG9wQXBwT25SZXNldCkpIHtcbiAgICBkb250U3RvcEFwcE9uUmVzZXQgPSAhIXRoaXMub3B0cy5kb250U3RvcEFwcE9uUmVzZXQ7XG4gIH1cblxuICBsZXQgYXJncyA9IHtcbiAgICBwa2c6IGFwcFBhY2thZ2UsXG4gICAgYWN0aXZpdHk6IGFwcEFjdGl2aXR5LFxuICAgIHdhaXRQa2c6IGFwcFdhaXRQYWNrYWdlIHx8IGFwcFBhY2thZ2UsXG4gICAgd2FpdEFjdGl2aXR5OiBhcHBXYWl0QWN0aXZpdHkgfHwgYXBwQWN0aXZpdHksXG4gICAgYWN0aW9uOiBpbnRlbnRBY3Rpb24sXG4gICAgY2F0ZWdvcnk6IGludGVudENhdGVnb3J5LFxuICAgIGZsYWdzOiBpbnRlbnRGbGFncyxcbiAgICBvcHRpb25hbEludGVudEFyZ3VtZW50cyxcbiAgICBzdG9wQXBwOiAhZG9udFN0b3BBcHBPblJlc2V0XG4gIH07XG4gIHRoaXMuX2NhY2hlZEFjdGl2aXR5QXJncyA9IHRoaXMuX2NhY2hlZEFjdGl2aXR5QXJncyB8fCB7fTtcbiAgdGhpcy5fY2FjaGVkQWN0aXZpdHlBcmdzW2Ake2FyZ3Mud2FpdFBrZ30vJHthcmdzLndhaXRBY3Rpdml0eX1gXSA9IGFyZ3M7XG4gIGF3YWl0IHRoaXMuYWRiLnN0YXJ0QXBwKGFyZ3MpO1xufTtcblxuY29tbWFuZHMucmVzZXQgPSBhc3luYyBmdW5jdGlvbiByZXNldCAoKSB7XG4gIGF3YWl0IGFuZHJvaWRIZWxwZXJzLnJlc2V0QXBwKHRoaXMuYWRiLCBPYmplY3QuYXNzaWduKHt9LCB0aGlzLm9wdHMsIHtmYXN0UmVzZXQ6IHRydWV9KSk7XG4gIC8vIHJlc2V0IGNvbnRleHQgc2luY2Ugd2UgZG9uJ3Qga25vdyB3aGF0IGtpbmQgb24gY29udGV4dCB3ZSB3aWxsIGVuZCB1cCBhZnRlciBhcHAgbGF1bmNoLlxuICBhd2FpdCB0aGlzLnNldENvbnRleHQoKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuaXNDaHJvbWVTZXNzaW9uID8gdGhpcy5zdGFydENocm9tZVNlc3Npb24oKSA6IHRoaXMuc3RhcnRBVVQoKTtcbn07XG5cbmNvbW1hbmRzLnN0YXJ0QVVUID0gYXN5bmMgZnVuY3Rpb24gc3RhcnRBVVQgKCkge1xuICBhd2FpdCB0aGlzLmFkYi5zdGFydEFwcCh7XG4gICAgcGtnOiB0aGlzLm9wdHMuYXBwUGFja2FnZSxcbiAgICBhY3Rpdml0eTogdGhpcy5vcHRzLmFwcEFjdGl2aXR5LFxuICAgIGFjdGlvbjogdGhpcy5vcHRzLmludGVudEFjdGlvbixcbiAgICBjYXRlZ29yeTogdGhpcy5vcHRzLmludGVudENhdGVnb3J5LFxuICAgIGZsYWdzOiB0aGlzLm9wdHMuaW50ZW50RmxhZ3MsXG4gICAgd2FpdFBrZzogdGhpcy5vcHRzLmFwcFdhaXRQYWNrYWdlLFxuICAgIHdhaXRBY3Rpdml0eTogdGhpcy5vcHRzLmFwcFdhaXRBY3Rpdml0eSxcbiAgICB3YWl0Rm9yTGF1bmNoOiB0aGlzLm9wdHMuYXBwV2FpdEZvckxhdW5jaCxcbiAgICB3YWl0RHVyYXRpb246IHRoaXMub3B0cy5hcHBXYWl0RHVyYXRpb24sXG4gICAgb3B0aW9uYWxJbnRlbnRBcmd1bWVudHM6IHRoaXMub3B0cy5vcHRpb25hbEludGVudEFyZ3VtZW50cyxcbiAgICBzdG9wQXBwOiAhdGhpcy5vcHRzLmRvbnRTdG9wQXBwT25SZXNldCxcbiAgICB1c2VyOiB0aGlzLm9wdHMudXNlclByb2ZpbGUsXG4gIH0pO1xufTtcblxuLy8gd2Ugb3ZlcnJpZGUgc2V0VXJsIHRvIHRha2UgYW4gYW5kcm9pZCBVUkkgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIGRlZXAtbGlua2luZ1xuLy8gaW5zaWRlIGFuIGFwcCwgc2ltaWxhciB0byBzdGFydGluZyBhbiBpbnRlbnRcbmNvbW1hbmRzLnNldFVybCA9IGFzeW5jIGZ1bmN0aW9uIHNldFVybCAodXJpKSB7XG4gIGF3YWl0IHRoaXMuYWRiLnN0YXJ0VXJpKHVyaSwgdGhpcy5vcHRzLmFwcFBhY2thZ2UpO1xufTtcblxuLy8gY2xvc2luZyBhcHAgdXNpbmcgZm9yY2Ugc3RvcFxuY29tbWFuZHMuY2xvc2VBcHAgPSBhc3luYyBmdW5jdGlvbiBjbG9zZUFwcCAoKSB7XG4gIGF3YWl0IHRoaXMuYWRiLmZvcmNlU3RvcCh0aGlzLm9wdHMuYXBwUGFja2FnZSk7XG4gIC8vIHJlc2V0IGNvbnRleHQgc2luY2Ugd2UgZG9uJ3Qga25vdyB3aGF0IGtpbmQgb24gY29udGV4dCB3ZSB3aWxsIGVuZCB1cCBhZnRlciBhcHAgbGF1bmNoLlxuICBhd2FpdCB0aGlzLnNldENvbnRleHQoKTtcbn07XG5cbmNvbW1hbmRzLmdldERpc3BsYXlEZW5zaXR5ID0gYXN5bmMgZnVuY3Rpb24gZ2V0RGlzcGxheURlbnNpdHkgKCkge1xuICAvLyBmaXJzdCB0cnkgdGhlIHByb3BlcnR5IGZvciBkZXZpY2VzXG4gIGxldCBvdXQgPSBhd2FpdCB0aGlzLmFkYi5zaGVsbChbJ2dldHByb3AnLCAncm8uc2YubGNkX2RlbnNpdHknXSk7XG4gIGlmIChvdXQpIHtcbiAgICBsZXQgdmFsID0gcGFyc2VJbnQob3V0LCAxMCk7XG4gICAgLy8gaWYgdGhlIHZhbHVlIGlzIE5hTiwgdHJ5IGdldHRpbmcgdGhlIGVtdWxhdG9yIHByb3BlcnR5XG4gICAgaWYgKCFpc05hTih2YWwpKSB7XG4gICAgICByZXR1cm4gdmFsO1xuICAgIH1cbiAgICB0aGlzLmxvZy5kZWJ1ZyhgUGFyc2VkIGRlbnNpdHkgdmFsdWUgd2FzIE5hTjogXCIke291dH1cImApO1xuICB9XG4gIC8vIGZhbGxiYWNrIHRvIHRyeWluZyBwcm9wZXJ0eSBmb3IgZW11bGF0b3JzXG4gIG91dCA9IGF3YWl0IHRoaXMuYWRiLnNoZWxsKFsnZ2V0cHJvcCcsICdxZW11LnNmLmxjZF9kZW5zaXR5J10pO1xuICBpZiAob3V0KSB7XG4gICAgbGV0IHZhbCA9IHBhcnNlSW50KG91dCwgMTApO1xuICAgIGlmICghaXNOYU4odmFsKSkge1xuICAgICAgcmV0dXJuIHZhbDtcbiAgICB9XG4gICAgdGhpcy5sb2cuZGVidWcoYFBhcnNlZCBkZW5zaXR5IHZhbHVlIHdhcyBOYU46IFwiJHtvdXR9XCJgKTtcbiAgfVxuICAvLyBjb3VsZG4ndCBnZXQgYW55dGhpbmcsIHNvIGVycm9yIG91dFxuICB0aGlzLmxvZy5lcnJvckFuZFRocm93KCdGYWlsZWQgdG8gZ2V0IGRpc3BsYXkgZGVuc2l0eSBwcm9wZXJ0eS4nKTtcbn07XG5cbmNvbW1hbmRzLm1vYmlsZVBlcmZvcm1FZGl0b3JBY3Rpb24gPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVQZXJmb3JtRWRpdG9yQWN0aW9uIChvcHRzID0ge30pIHtcbiAgY29uc3Qge2FjdGlvbn0gPSBvcHRzO1xuICBpZiAoIXV0aWwuaGFzVmFsdWUoYWN0aW9uKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYCdhY3Rpb24nIGFyZ3VtZW50IGlzIHJlcXVpcmVkYCk7XG4gIH1cblxuICBhd2FpdCB0aGlzLmFkYi5wZXJmb3JtRWRpdG9yQWN0aW9uKGFjdGlvbik7XG59O1xuXG5jb25zdCBQRVJNSVNTSU9OX0FDVElPTiA9IHtcbiAgR1JBTlQ6ICdncmFudCcsXG4gIFJFVk9LRTogJ3Jldm9rZScsXG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENoYW5nZVBlcm1pc3Npb25zT3B0aW9uc1xuICogQHByb3BlcnR5IHshc3RyaW5nfEFycmF5PHN0cmluZz59IHBlcm1pc3Npb25zIC0gVGhlIGZ1bGwgbmFtZSBvZiB0aGUgcGVybWlzc2lvbiB0byBiZSBjaGFuZ2VkXG4gKiBvciBhIGxpc3Qgb2YgcGVybWlzc2lvbnMuIE1hbmRhdG9yeSBhcmd1bWVudC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhcHBQYWNrYWdlIFt0aGlzLm9wdHMuYXBwUGFja2FnZV0gLSBUaGUgYXBwbGljYXRpb24gcGFja2FnZSB0byBzZXQgY2hhbmdlXG4gKiBwZXJtaXNzaW9ucyBvbi4gRGVmYXVsdHMgdG8gdGhlIHBhY2thZ2UgbmFtZSB1bmRlciB0ZXN0LlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGFjdGlvbiBbZ3JhbnRdIC0gT25lIG9mIGBQRVJNSVNTSU9OX0FDVElPTmAgdmFsdWVzXG4gKi9cblxuLyoqXG4gKiBDaGFuZ2VzIHBhY2thZ2UgcGVybWlzc2lvbnMgaW4gcnVudGltZS5cbiAqXG4gKiBAcGFyYW0gez9DaGFuZ2VQZXJtaXNzaW9uc09wdGlvbnN9IG9wdHMgLSBBdmFpbGFibGUgb3B0aW9ucyBtYXBwaW5nLlxuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZXJlIHdhcyBhIGZhaWx1cmUgd2hpbGUgY2hhbmdpbmcgcGVybWlzc2lvbnNcbiAqL1xuY29tbWFuZHMubW9iaWxlQ2hhbmdlUGVybWlzc2lvbnMgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVDaGFuZ2VQZXJtaXNzaW9ucyAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBwZXJtaXNzaW9ucyxcbiAgICBhcHBQYWNrYWdlID0gdGhpcy5vcHRzLmFwcFBhY2thZ2UsXG4gICAgYWN0aW9uID0gUEVSTUlTU0lPTl9BQ1RJT04uR1JBTlQsXG4gIH0gPSBvcHRzO1xuICBpZiAoIXV0aWwuaGFzVmFsdWUocGVybWlzc2lvbnMpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgJ3Blcm1pc3Npb25zJyBhcmd1bWVudCBpcyByZXF1aXJlZGApO1xuICB9XG5cbiAgbGV0IGFjdGlvbkZ1bmM7XG4gIHN3aXRjaCAoXy50b0xvd2VyKGFjdGlvbikpIHtcbiAgICBjYXNlIFBFUk1JU1NJT05fQUNUSU9OLkdSQU5UOlxuICAgICAgYWN0aW9uRnVuYyA9IChhcHBQYWNrYWdlLCBwZXJtaXNzaW9uKSA9PiB0aGlzLmFkYi5ncmFudFBlcm1pc3Npb24oYXBwUGFja2FnZSwgcGVybWlzc2lvbik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFBFUk1JU1NJT05fQUNUSU9OLlJFVk9LRTpcbiAgICAgIGFjdGlvbkZ1bmMgPSAoYXBwUGFja2FnZSwgcGVybWlzc2lvbikgPT4gdGhpcy5hZGIucmV2b2tlUGVybWlzc2lvbihhcHBQYWNrYWdlLCBwZXJtaXNzaW9uKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGBVbmtub3duIGFjdGlvbiAnJHthY3Rpb259Jy4gYCArXG4gICAgICAgIGBPbmx5ICR7SlNPTi5zdHJpbmdpZnkoXy52YWx1ZXMoUEVSTUlTU0lPTl9BQ1RJT04pKX0gYWN0aW9ucyBhcmUgc3VwcG9ydGVkYCk7XG4gIH1cbiAgZm9yIChjb25zdCBwZXJtaXNzaW9uIG9mIChfLmlzQXJyYXkocGVybWlzc2lvbnMpID8gcGVybWlzc2lvbnMgOiBbcGVybWlzc2lvbnNdKSkge1xuICAgIGF3YWl0IGFjdGlvbkZ1bmMoYXBwUGFja2FnZSwgcGVybWlzc2lvbik7XG4gIH1cbn07XG5cbmNvbnN0IFBFUk1JU1NJT05TX1RZUEUgPSB7XG4gIERFTklFRDogJ2RlbmllZCcsXG4gIEdSQU5URUQ6ICdncmFudGVkJyxcbiAgUkVRVUVTVEVEOiAncmVxdWVzdGVkJyxcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gR2V0UGVybWlzc2lvbnNPcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdHlwZSBbcmVxdWVzdGVkXSAtIE9uZSBvZiBwb3NzaWJsZSBwZXJtaXNzaW9uIHR5cGVzIHRvIGdldC5cbiAqIENhbiBiZSBhbnkgb2YgYFBFUk1JU1NJT05TX1RZUEVgIHZhbHVlcy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhcHBQYWNrYWdlIFt0aGlzLm9wdHMuYXBwUGFja2FnZV0gLSBUaGUgYXBwbGljYXRpb24gcGFja2FnZSB0byBzZXQgY2hhbmdlXG4gKiBwZXJtaXNzaW9ucyBvbi4gRGVmYXVsdHMgdG8gdGhlIHBhY2thZ2UgbmFtZSB1bmRlciB0ZXN0LlxuICovXG5cbi8qKlxuICogR2V0cyBydW50aW1lIHBlcm1pc3Npb25zIGxpc3QgZm9yIHRoZSBnaXZlbiBhcHBsaWNhdGlvbiBwYWNrYWdlLlxuICpcbiAqIEBwYXJhbSB7R2V0UGVybWlzc2lvbnNPcHRpb25zfSBvcHRzIC0gQXZhaWxhYmxlIG9wdGlvbnMgbWFwcGluZy5cbiAqIEByZXR1cm5zIHtBcnJheTxzdHJpbmc+fSBUaGUgbGlzdCBvZiByZXRyaWV2ZWQgcGVybWlzc2lvbnMgZm9yIHRoZSBnaXZlbiB0eXBlXG4gKiAoY2FuIGFsc28gYmUgZW1wdHkpLlxuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBnZXR0aW5nIHBlcm1pc3Npb25zLlxuICovXG5jb21tYW5kcy5tb2JpbGVHZXRQZXJtaXNzaW9ucyA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUdldFBlcm1pc3Npb25zIChvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHR5cGUgPSBQRVJNSVNTSU9OU19UWVBFLlJFUVVFU1RFRCxcbiAgICBhcHBQYWNrYWdlID0gdGhpcy5vcHRzLmFwcFBhY2thZ2UsXG4gIH0gPSBvcHRzO1xuXG4gIGxldCBhY3Rpb25GdW5jO1xuICBzd2l0Y2ggKF8udG9Mb3dlcih0eXBlKSkge1xuICAgIGNhc2UgUEVSTUlTU0lPTlNfVFlQRS5SRVFVRVNURUQ6XG4gICAgICBhY3Rpb25GdW5jID0gKGFwcFBhY2thZ2UpID0+IHRoaXMuYWRiLmdldFJlcVBlcm1pc3Npb25zKGFwcFBhY2thZ2UpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBQRVJNSVNTSU9OU19UWVBFLkdSQU5URUQ6XG4gICAgICBhY3Rpb25GdW5jID0gKGFwcFBhY2thZ2UpID0+IHRoaXMuYWRiLmdldEdyYW50ZWRQZXJtaXNzaW9ucyhhcHBQYWNrYWdlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUEVSTUlTU0lPTlNfVFlQRS5ERU5JRUQ6XG4gICAgICBhY3Rpb25GdW5jID0gKGFwcFBhY2thZ2UpID0+IHRoaXMuYWRiLmdldERlbmllZFBlcm1pc3Npb25zKGFwcFBhY2thZ2UpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYFVua25vd24gcGVybWlzc2lvbnMgdHlwZSAnJHt0eXBlfScuIGAgK1xuICAgICAgICBgT25seSAke0pTT04uc3RyaW5naWZ5KF8udmFsdWVzKFBFUk1JU1NJT05TX1RZUEUpKX0gdHlwZXMgYXJlIHN1cHBvcnRlZGApO1xuICB9XG4gIHJldHVybiBhd2FpdCBhY3Rpb25GdW5jKGFwcFBhY2thZ2UpO1xufTtcblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGxpc3Qgb2YgcmVjZW50IHN5c3RlbSBub3RpZmljYXRpb25zLlxuICpcbiAqIEByZXR1cm5zIHtPYmplY3R9IFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvbiBgYWRiLmdldE5vdGlmaWNhdGlvbnNgIGZvclxuICogbW9yZSBkZXRhaWxzXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUdldE5vdGlmaWNhdGlvbnMgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVHZXROb3RpZmljYXRpb25zICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLmdldE5vdGlmaWNhdGlvbnMoKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU21zTGlzdE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBtYXggWzEwMF0gLSBUaGUgbWF4aW11bSBjb3VudCBvZiByZWNlbnQgU01TIG1lc3NhZ2VzXG4gKiB0byByZXRyaWV2ZVxuICovXG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBsaXN0IG9mIHJlY2VudCBTTVMgbWVzc2FnZXMgd2l0aCB0aGVpciBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwYXJhbSB7U21zTGlzdE9wdGlvbnN9IG9wdHNcbiAqIEByZXR1cm5zIHtPYmplY3R9IFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvbiBgYWRiLmdldFNtc0xpc3RgIGZvclxuICogbW9yZSBkZXRhaWxzXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUxpc3RTbXMgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVMaXN0U21zIChvcHRzID0ge30pIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLmdldFNtc0xpc3Qob3B0cyk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFVubG9ja09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBrZXkgVGhlIHVubG9jayBrZXkuIFRoZSB2YWx1ZSBvZiB0aGlzIGtleSBkZXBlbmRzXG4gKiBvbiB0aGUgYWN0dWFsIHVubG9jayB0eXBlIGFuZCBjb3VsZCBiZSBhIHBpbi9wYXNzd29yZC9wYXR0ZXJuIHZhbHVlIG9yXG4gKiBhIGJpb21ldHJpYyBmaW5nZXIgaWQuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdHlwZSBUaGUgdW5sb2NrIHR5cGUuIFRoZSBmb2xsb3dpbmcgdW5sb2NrIHR5cGVzXG4gKiBhcmUgc3VwcG9ydGVkOiBgcGluYCwgYHBpbldpdGhLZXlFdmVudGAsIGBwYXNzd29yZGAsIGBwYXR0ZXJuYCBhbmQgYGZpbmdlcnByaW50YC5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gc3RyYXRlZ3kgRWl0aGVyICdsb2Nrc2V0dGluZ3MnIChkZWZhdWx0KSBvciAndWlhdXRvbWF0b3InLlxuICogU2V0dGluZyBpdCB0byAndWlhdXRvbWF0b3InIHdpbGwgZW5mb3JjZSB0aGUgZHJpdmVyIHRvIGF2b2lkIHVzaW5nIHNwZWNpYWxcbiAqIEFEQiBzaG9ydGN1dHMgaW4gb3JkZXIgdG8gc3BlZWQgdXAgdGhlIHVubG9jayBwcm9jZWR1cmUuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHRpbWVvdXRNcyBbMjAwMF0gVGhlIG1heGltdW0gdGltZSBpbiBtaWxsaXNlY29uZHNcbiAqIHRvIHdhaXQgdW50aWwgdGhlIHNjcmVlbiBnZXRzIHVubG9ja2VkXG4gKi9cblxuLyoqXG4gKiBVbmxvY2tzIHRoZSBkZXZpY2UgaWYgaXQgaXMgbG9ja2VkLiBOb29wIGlmIHRoZSBkZXZpY2UncyBzY3JlZW4gaXMgbm90IGxvY2tlZC5cbiAqXG4gKiBAcGFyYW0gez9VbmxvY2tPcHRpb25zfSBvcHRzXG4gKiBAdGhyb3dzIHtFcnJvcn0gaWYgdW5sb2NrIG9wZXJhdGlvbiBmYWlscyBvciB0aGUgcHJvdmlkZWRcbiAqIGFyZ3VtZW50cyBhcmUgbm90IHZhbGlkXG4gKi9cbmNvbW1hbmRzLm1vYmlsZVVubG9jayA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVVubG9jayAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHsga2V5LCB0eXBlLCBzdHJhdGVneSwgdGltZW91dE1zIH0gPSBvcHRzO1xuICBhd2FpdCBhbmRyb2lkSGVscGVycy51bmxvY2sodGhpcywgdGhpcy5hZGIsIHtcbiAgICB1bmxvY2tLZXk6IGtleSxcbiAgICB1bmxvY2tUeXBlOiB0eXBlLFxuICAgIHVubG9ja1N0cmF0ZWd5OiBzdHJhdGVneSxcbiAgICB1bmxvY2tTdWNjZXNzVGltZW91dDogdGltZW91dE1zLFxuICB9KTtcbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy9nZW5lcmFsLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
422
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2dlbmVyYWwuanMiLCJuYW1lcyI6WyJNT01FTlRfRk9STUFUX0lTTzg2MDEiLCJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwia2V5cyIsIl8iLCJpc0FycmF5Iiwiam9pbiIsInBhcmFtcyIsInRleHQiLCJyZXBsYWNlIiwib3B0cyIsInVuaWNvZGVLZXlib2FyZCIsImRvU2VuZEtleXMiLCJib290c3RyYXAiLCJzZW5kQWN0aW9uIiwiZ2V0RGV2aWNlVGltZSIsImZvcm1hdCIsImxvZyIsImRlYnVnIiwiZGV2aWNlVGltZXN0YW1wIiwiYWRiIiwic2hlbGwiLCJ0cmltIiwicGFyc2VkVGltZXN0YW1wIiwibW9tZW50IiwidXRjIiwiaXNWYWxpZCIsIndhcm4iLCJ1dGNPZmZzZXQiLCJfdHptIiwibW9iaWxlR2V0RGV2aWNlVGltZSIsImdldFBhZ2VTb3VyY2UiLCJiYWNrIiwiaXNLZXlib2FyZFNob3duIiwiaXNTb2Z0S2V5Ym9hcmRQcmVzZW50IiwiaGlkZUtleWJvYXJkIiwib3BlblNldHRpbmdzQWN0aXZpdHkiLCJzZXR0aW5nIiwiYXBwUGFja2FnZSIsImFwcEFjdGl2aXR5IiwiZ2V0Rm9jdXNlZFBhY2thZ2VBbmRBY3Rpdml0eSIsIndhaXRGb3JOb3RBY3Rpdml0eSIsImdldFdpbmRvd1NpemUiLCJnZXRXaW5kb3dSZWN0Iiwid2lkdGgiLCJoZWlnaHQiLCJ4IiwieSIsImdldEN1cnJlbnRBY3Rpdml0eSIsImdldEN1cnJlbnRQYWNrYWdlIiwiYmFja2dyb3VuZCIsInNlY29uZHMiLCJnb1RvSG9tZSIsInNsZWVwTXMiLCJ0aHJlc2hvbGRNcyIsImludGVydmFsTXMiLCJtaW4iLCJwYXJzZUludCIsInByb2dyZXNzQ2IiLCJlbGFwc2VkTXMiLCJwcm9ncmVzcyIsIndhaXRTZWNzIiwidG9GaXhlZCIsInByb2dyZXNzUGN0IiwiYXJncyIsIl9jYWNoZWRBY3Rpdml0eUFyZ3MiLCJhY3RpdmF0ZUFwcCIsImlnbiIsImFwcFdhaXRQYWNrYWdlIiwiYXBwV2FpdEFjdGl2aXR5Iiwic3BsaXQiLCJpbmNsdWRlcyIsInBrZyIsImFjdGl2aXR5IiwiYWN0aW9uIiwiaW50ZW50QWN0aW9uIiwiY2F0ZWdvcnkiLCJpbnRlbnRDYXRlZ29yeSIsImZsYWdzIiwiaW50ZW50RmxhZ3MiLCJ3YWl0UGtnIiwid2FpdEFjdGl2aXR5Iiwid2FpdEZvckxhdW5jaCIsImFwcFdhaXRGb3JMYXVuY2giLCJ3YWl0RHVyYXRpb24iLCJhcHBXYWl0RHVyYXRpb24iLCJvcHRpb25hbEludGVudEFyZ3VtZW50cyIsInN0b3BBcHAiLCJ1c2VyIiwidXNlclByb2ZpbGUiLCJ1dGlsIiwiZmlsdGVyT2JqZWN0IiwiSlNPTiIsInN0cmluZ2lmeSIsInN0YXJ0QXBwIiwiZ2V0U3RyaW5ncyIsImxhbmd1YWdlIiwiZ2V0RGV2aWNlTGFuZ3VhZ2UiLCJpbmZvIiwicHJlcHJvY2Vzc1N0cmluZ3NNYXAiLCJtYXBwaW5nIiwicmVzdWx0Iiwia2V5IiwidmFsdWUiLCJ0b1BhaXJzIiwiaXNTdHJpbmciLCJhcGtTdHJpbmdzIiwiYW5kcm9pZEhlbHBlcnMiLCJwdXNoU3RyaW5ncyIsImxhdW5jaEFwcCIsImluaXRBVVQiLCJzdGFydEFVVCIsInN0YXJ0QWN0aXZpdHkiLCJkb250U3RvcEFwcE9uUmVzZXQiLCJoYXNWYWx1ZSIsInJlc2V0IiwicmVzZXRBcHAiLCJPYmplY3QiLCJhc3NpZ24iLCJmYXN0UmVzZXQiLCJzZXRDb250ZXh0IiwiaXNDaHJvbWVTZXNzaW9uIiwic3RhcnRDaHJvbWVTZXNzaW9uIiwic2V0VXJsIiwidXJpIiwic3RhcnRVcmkiLCJjbG9zZUFwcCIsImZvcmNlU3RvcCIsImdldERpc3BsYXlEZW5zaXR5Iiwib3V0IiwidmFsIiwiaXNOYU4iLCJlcnJvckFuZFRocm93IiwibW9iaWxlUGVyZm9ybUVkaXRvckFjdGlvbiIsImVycm9ycyIsIkludmFsaWRBcmd1bWVudEVycm9yIiwicGVyZm9ybUVkaXRvckFjdGlvbiIsIlBFUk1JU1NJT05fQUNUSU9OIiwiR1JBTlQiLCJSRVZPS0UiLCJtb2JpbGVDaGFuZ2VQZXJtaXNzaW9ucyIsInBlcm1pc3Npb25zIiwiYWN0aW9uRnVuYyIsInRvTG93ZXIiLCJwZXJtaXNzaW9uIiwiZ3JhbnRQZXJtaXNzaW9uIiwicmV2b2tlUGVybWlzc2lvbiIsInZhbHVlcyIsIlBFUk1JU1NJT05TX1RZUEUiLCJERU5JRUQiLCJHUkFOVEVEIiwiUkVRVUVTVEVEIiwibW9iaWxlR2V0UGVybWlzc2lvbnMiLCJ0eXBlIiwiZ2V0UmVxUGVybWlzc2lvbnMiLCJnZXRHcmFudGVkUGVybWlzc2lvbnMiLCJnZXREZW5pZWRQZXJtaXNzaW9ucyIsIm1vYmlsZUdldE5vdGlmaWNhdGlvbnMiLCJnZXROb3RpZmljYXRpb25zIiwibW9iaWxlTGlzdFNtcyIsImdldFNtc0xpc3QiLCJtb2JpbGVVbmxvY2siLCJzdHJhdGVneSIsInRpbWVvdXRNcyIsInVubG9jayIsInVubG9ja0tleSIsInVubG9ja1R5cGUiLCJ1bmxvY2tTdHJhdGVneSIsInVubG9ja1N1Y2Nlc3NUaW1lb3V0Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL2NvbW1hbmRzL2dlbmVyYWwuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBhbmRyb2lkSGVscGVycyBmcm9tICcuLi9hbmRyb2lkLWhlbHBlcnMnO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBsb25nU2xlZXAgfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdAYXBwaXVtL2Jhc2UtZHJpdmVyJztcblxuY29uc3QgTU9NRU5UX0ZPUk1BVF9JU084NjAxID0gJ1lZWVktTU0tRERUSEg6bW06c3NaJztcblxubGV0IGNvbW1hbmRzID0ge30sIGhlbHBlcnMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG5jb21tYW5kcy5rZXlzID0gYXN5bmMgZnVuY3Rpb24ga2V5cyAoa2V5cykge1xuICAvLyBQcm90b2NvbCBzZW5kcyBhbiBhcnJheTsgcmV0aGluayBhcHByb2FjaFxuICBrZXlzID0gXy5pc0FycmF5KGtleXMpID8ga2V5cy5qb2luKCcnKSA6IGtleXM7XG4gIGxldCBwYXJhbXMgPSB7XG4gICAgdGV4dDoga2V5cyxcbiAgICByZXBsYWNlOiBmYWxzZVxuICB9O1xuICBpZiAodGhpcy5vcHRzLnVuaWNvZGVLZXlib2FyZCkge1xuICAgIHBhcmFtcy51bmljb2RlS2V5Ym9hcmQgPSB0cnVlO1xuICB9XG4gIGF3YWl0IHRoaXMuZG9TZW5kS2V5cyhwYXJhbXMpO1xufTtcblxuY29tbWFuZHMuZG9TZW5kS2V5cyA9IGFzeW5jIGZ1bmN0aW9uIGRvU2VuZEtleXMgKHBhcmFtcykge1xuICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbignc2V0VGV4dCcsIHBhcmFtcyk7XG59O1xuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgY3VycmVudCBkZXZpY2UncyB0aW1lc3RhbXAuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGZvcm1hdCAtIFRoZSBzZXQgb2YgZm9ybWF0IHNwZWNpZmllcnMuIFJlYWRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICBodHRwczovL21vbWVudGpzLmNvbS9kb2NzLyB0byBnZXQgdGhlIGZ1bGwgbGlzdCBvZiBzdXBwb3J0ZWRcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRldGltZSBmb3JtYXQgc3BlY2lmaWVycy4gVGhlIGRlZmF1bHQgZm9ybWF0IGlzXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgYFlZWVktTU0tRERUSEg6bW06c3NaYCwgd2hpY2ggY29tcGxpZXMgdG8gSVNPLTg2MDFcbiAqIEByZXR1cm4ge3N0cmluZ30gRm9ybWF0dGVkIGRhdGV0aW1lIHN0cmluZyBvciB0aGUgcmF3IGNvbW1hbmQgb3V0cHV0IGlmIGZvcm1hdHRpbmcgZmFpbHNcbiAqL1xuY29tbWFuZHMuZ2V0RGV2aWNlVGltZSA9IGFzeW5jIGZ1bmN0aW9uIGdldERldmljZVRpbWUgKGZvcm1hdCA9IE1PTUVOVF9GT1JNQVRfSVNPODYwMSkge1xuICB0aGlzLmxvZy5kZWJ1ZygnQXR0ZW1wdGluZyB0byBjYXB0dXJlIGFuZHJvaWQgZGV2aWNlIGRhdGUgYW5kIHRpbWUuICcgK1xuICAgIGBUaGUgZm9ybWF0IHNwZWNpZmllciBpcyAnJHtmb3JtYXR9J2ApO1xuICBjb25zdCBkZXZpY2VUaW1lc3RhbXAgPSAoYXdhaXQgdGhpcy5hZGIuc2hlbGwoWydkYXRlJywgJyslWS0lbS0lZFQlVCV6J10pKS50cmltKCk7XG4gIHRoaXMubG9nLmRlYnVnKGBHb3QgZGV2aWNlIHRpbWVzdGFtcDogJHtkZXZpY2VUaW1lc3RhbXB9YCk7XG4gIGNvbnN0IHBhcnNlZFRpbWVzdGFtcCA9IG1vbWVudC51dGMoZGV2aWNlVGltZXN0YW1wLCAnWVlZWS1NTS1ERFRISDptbTpzc1paJyk7XG4gIGlmICghcGFyc2VkVGltZXN0YW1wLmlzVmFsaWQoKSkge1xuICAgIHRoaXMubG9nLndhcm4oJ0Nhbm5vdCBwYXJzZSB0aGUgcmV0dXJuZWQgdGltZXN0YW1wLiBSZXR1cm5pbmcgYXMgaXMnKTtcbiAgICByZXR1cm4gZGV2aWNlVGltZXN0YW1wO1xuICB9XG4gIHJldHVybiBwYXJzZWRUaW1lc3RhbXAudXRjT2Zmc2V0KHBhcnNlZFRpbWVzdGFtcC5fdHptIHx8IDApLmZvcm1hdChmb3JtYXQpO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBEZXZpY2VUaW1lT3B0aW9uc1xuICogQHByb3BlcnR5IHtzdHJpbmd9IGZvcm1hdCBbWVlZWS1NTS1ERFRISDptbTpzc1pdIC0gU2VlIGdldERldmljZVRpbWUjZm9ybWF0XG4gKi9cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGN1cnJlbnQgZGV2aWNlIHRpbWVcbiAqXG4gKiBAcGFyYW0ge0RldmljZVRpbWVPcHRpb25zfSBvcHRzXG4gKiBAcmV0dXJuIHtzdHJpbmd9IEZvcm1hdHRlZCBkYXRldGltZSBzdHJpbmcgb3IgdGhlIHJhdyBjb21tYW5kIG91dHB1dCBpZiBmb3JtYXR0aW5nIGZhaWxzXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUdldERldmljZVRpbWUgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVHZXREZXZpY2VUaW1lIChvcHRzID0ge30pIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuZ2V0RGV2aWNlVGltZShvcHRzLmZvcm1hdCk7XG59O1xuXG5jb21tYW5kcy5nZXRQYWdlU291cmNlID0gYXN5bmMgZnVuY3Rpb24gZ2V0UGFnZVNvdXJjZSAoKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdzb3VyY2UnKTtcbn07XG5cbmNvbW1hbmRzLmJhY2sgPSBhc3luYyBmdW5jdGlvbiBiYWNrICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ3ByZXNzQmFjaycpO1xufTtcblxuY29tbWFuZHMuaXNLZXlib2FyZFNob3duID0gYXN5bmMgZnVuY3Rpb24gaXNLZXlib2FyZFNob3duICgpIHtcbiAgY29uc3Qge2lzS2V5Ym9hcmRTaG93bn0gPSBhd2FpdCB0aGlzLmFkYi5pc1NvZnRLZXlib2FyZFByZXNlbnQoKTtcbiAgcmV0dXJuIGlzS2V5Ym9hcmRTaG93bjtcbn07XG5cbmNvbW1hbmRzLmhpZGVLZXlib2FyZCA9IGFzeW5jIGZ1bmN0aW9uIGhpZGVLZXlib2FyZCAoKSB7XG4gIHJldHVybiBhd2FpdCB0aGlzLmFkYi5oaWRlS2V5Ym9hcmQoKTtcbn07XG5cbmNvbW1hbmRzLm9wZW5TZXR0aW5nc0FjdGl2aXR5ID0gYXN5bmMgZnVuY3Rpb24gb3BlblNldHRpbmdzQWN0aXZpdHkgKHNldHRpbmcpIHtcbiAgbGV0IHthcHBQYWNrYWdlLCBhcHBBY3Rpdml0eX0gPSBhd2FpdCB0aGlzLmFkYi5nZXRGb2N1c2VkUGFja2FnZUFuZEFjdGl2aXR5KCk7XG4gIGF3YWl0IHRoaXMuYWRiLnNoZWxsKFsnYW0nLCAnc3RhcnQnLCAnLWEnLCBgYW5kcm9pZC5zZXR0aW5ncy4ke3NldHRpbmd9YF0pO1xuICBhd2FpdCB0aGlzLmFkYi53YWl0Rm9yTm90QWN0aXZpdHkoYXBwUGFja2FnZSwgYXBwQWN0aXZpdHksIDUwMDApO1xufTtcblxuY29tbWFuZHMuZ2V0V2luZG93U2l6ZSA9IGFzeW5jIGZ1bmN0aW9uIGdldFdpbmRvd1NpemUgKCkge1xuICByZXR1cm4gYXdhaXQgdGhpcy5ib290c3RyYXAuc2VuZEFjdGlvbignZ2V0RGV2aWNlU2l6ZScpO1xufTtcblxuLy8gRm9yIFczQ1xuY29tbWFuZHMuZ2V0V2luZG93UmVjdCA9IGFzeW5jIGZ1bmN0aW9uIGdldFdpbmRvd1JlY3QgKCkge1xuICBjb25zdCB7IHdpZHRoLCBoZWlnaHQgfSA9IGF3YWl0IHRoaXMuZ2V0V2luZG93U2l6ZSgpO1xuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4OiAwLFxuICAgIHk6IDBcbiAgfTtcbn07XG5cbmNvbW1hbmRzLmdldEN1cnJlbnRBY3Rpdml0eSA9IGFzeW5jIGZ1bmN0aW9uIGdldEN1cnJlbnRBY3Rpdml0eSAoKSB7XG4gIHJldHVybiAoYXdhaXQgdGhpcy5hZGIuZ2V0Rm9jdXNlZFBhY2thZ2VBbmRBY3Rpdml0eSgpKS5hcHBBY3Rpdml0eTtcbn07XG5cbmNvbW1hbmRzLmdldEN1cnJlbnRQYWNrYWdlID0gYXN5bmMgZnVuY3Rpb24gZ2V0Q3VycmVudFBhY2thZ2UgKCkge1xuICByZXR1cm4gKGF3YWl0IHRoaXMuYWRiLmdldEZvY3VzZWRQYWNrYWdlQW5kQWN0aXZpdHkoKSkuYXBwUGFja2FnZTtcbn07XG5cbmNvbW1hbmRzLmJhY2tncm91bmQgPSBhc3luYyBmdW5jdGlvbiBiYWNrZ3JvdW5kIChzZWNvbmRzKSB7XG4gIGlmIChzZWNvbmRzIDwgMCkge1xuICAgIC8vIGlmIHVzZXIgcGFzc2VzIGluIGEgbmVnYXRpdmUgc2Vjb25kcyB2YWx1ZSwgaW50ZXJwcmV0IHRoYXQgYXMgdGhlIGluc3RydWN0aW9uXG4gICAgLy8gdG8gbm90IGJyaW5nIHRoZSBhcHAgYmFjayBhdCBhbGxcbiAgICBhd2FpdCB0aGlzLmFkYi5nb1RvSG9tZSgpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGxldCB7YXBwUGFja2FnZSwgYXBwQWN0aXZpdHl9ID0gYXdhaXQgdGhpcy5hZGIuZ2V0Rm9jdXNlZFBhY2thZ2VBbmRBY3Rpdml0eSgpO1xuICBhd2FpdCB0aGlzLmFkYi5nb1RvSG9tZSgpO1xuXG4gIC8vIHBlb3BsZSBjYW4gd2FpdCBmb3IgYSBsb25nIHRpbWUsIHNvIHRvIGJlIHNhZmUgbGV0J3MgdXNlIHRoZSBsb25nU2xlZXAgZnVuY3Rpb24gYW5kIGxvZ1xuICAvLyBwcm9ncmVzcyBwZXJpb2RpY2FsbHkuXG4gIGNvbnN0IHNsZWVwTXMgPSBzZWNvbmRzICogMTAwMDtcbiAgY29uc3QgdGhyZXNob2xkTXMgPSAzMCAqIDEwMDA7IC8vIHVzZSB0aGUgc3Bpbi13YWl0IGZvciBhbnl0aGluZyBvdmVyIHRoaXMgdGhyZXNob2xkXG4gIC8vIGZvciBvdXIgc3BpbiBpbnRlcnZhbCwgdXNlIDElIG9mIHRoZSB0b3RhbCB3YWl0IHRpbWUsIGJ1dCBub3RoaW5nIGJpZ2dlciB0aGFuIDMwc1xuICBjb25zdCBpbnRlcnZhbE1zID0gXy5taW4oWzMwICogMTAwMCwgcGFyc2VJbnQoc2xlZXBNcyAvIDEwMCwgMTApXSk7XG4gIGNvbnN0IHByb2dyZXNzQ2IgPSAoe2VsYXBzZWRNcywgcHJvZ3Jlc3N9KSA9PiB7XG4gICAgY29uc3Qgd2FpdFNlY3MgPSAoZWxhcHNlZE1zIC8gMTAwMCkudG9GaXhlZCgwKTtcbiAgICBjb25zdCBwcm9ncmVzc1BjdCA9IChwcm9ncmVzcyAqIDEwMCkudG9GaXhlZCgyKTtcbiAgICB0aGlzLmxvZy5kZWJ1ZyhgV2FpdGVkICR7d2FpdFNlY3N9cyBzbyBmYXIgKCR7cHJvZ3Jlc3NQY3R9JSlgKTtcbiAgfTtcbiAgYXdhaXQgbG9uZ1NsZWVwKHNsZWVwTXMsIHt0aHJlc2hvbGRNcywgaW50ZXJ2YWxNcywgcHJvZ3Jlc3NDYn0pO1xuXG4gIGxldCBhcmdzO1xuICBpZiAodGhpcy5fY2FjaGVkQWN0aXZpdHlBcmdzICYmIHRoaXMuX2NhY2hlZEFjdGl2aXR5QXJnc1tgJHthcHBQYWNrYWdlfS8ke2FwcEFjdGl2aXR5fWBdKSB7XG4gICAgLy8gdGhlIGFjdGl2aXR5IHdhcyBzdGFydGVkIHdpdGggYHN0YXJ0QWN0aXZpdHlgLCBzbyB1c2UgdGhvc2UgYXJncyB0byByZXN0YXJ0XG4gICAgYXJncyA9IHRoaXMuX2NhY2hlZEFjdGl2aXR5QXJnc1tgJHthcHBQYWNrYWdlfS8ke2FwcEFjdGl2aXR5fWBdO1xuICB9IGVsc2Uge1xuICAgIHRyeSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgQWN0aXZhdGluZyBhcHAgJyR7YXBwUGFja2FnZX0nIGluIG9yZGVyIHRvIHJlc3RvcmUgaXRgKTtcbiAgICAgIGF3YWl0IHRoaXMuYWN0aXZhdGVBcHAoYXBwUGFja2FnZSk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGNhdGNoIChpZ24pIHt9XG4gICAgYXJncyA9ICgoYXBwUGFja2FnZSA9PT0gdGhpcy5vcHRzLmFwcFBhY2thZ2UgJiYgYXBwQWN0aXZpdHkgPT09IHRoaXMub3B0cy5hcHBBY3Rpdml0eSkgfHxcbiAgICAgICAgICAgIChhcHBQYWNrYWdlID09PSB0aGlzLm9wdHMuYXBwV2FpdFBhY2thZ2UgJiYgKHRoaXMub3B0cy5hcHBXYWl0QWN0aXZpdHkgfHwgJycpLnNwbGl0KCcsJykuaW5jbHVkZXMoYXBwQWN0aXZpdHkpKSlcbiAgICAgID8gey8vIHRoZSBhY3Rpdml0eSBpcyB0aGUgb3JpZ2luYWwgc2Vzc2lvbiBhY3Rpdml0eSwgc28gdXNlIHRoZSBvcmlnaW5hbCBhcmdzXG4gICAgICAgIHBrZzogdGhpcy5vcHRzLmFwcFBhY2thZ2UsXG4gICAgICAgIGFjdGl2aXR5OiB0aGlzLm9wdHMuYXBwQWN0aXZpdHksXG4gICAgICAgIGFjdGlvbjogdGhpcy5vcHRzLmludGVudEFjdGlvbixcbiAgICAgICAgY2F0ZWdvcnk6IHRoaXMub3B0cy5pbnRlbnRDYXRlZ29yeSxcbiAgICAgICAgZmxhZ3M6IHRoaXMub3B0cy5pbnRlbnRGbGFncyxcbiAgICAgICAgd2FpdFBrZzogdGhpcy5vcHRzLmFwcFdhaXRQYWNrYWdlLFxuICAgICAgICB3YWl0QWN0aXZpdHk6IHRoaXMub3B0cy5hcHBXYWl0QWN0aXZpdHksXG4gICAgICAgIHdhaXRGb3JMYXVuY2g6IHRoaXMub3B0cy5hcHBXYWl0Rm9yTGF1bmNoLFxuICAgICAgICB3YWl0RHVyYXRpb246IHRoaXMub3B0cy5hcHBXYWl0RHVyYXRpb24sXG4gICAgICAgIG9wdGlvbmFsSW50ZW50QXJndW1lbnRzOiB0aGlzLm9wdHMub3B0aW9uYWxJbnRlbnRBcmd1bWVudHMsXG4gICAgICAgIHN0b3BBcHA6IGZhbHNlLFxuICAgICAgICB1c2VyOiB0aGlzLm9wdHMudXNlclByb2ZpbGV9XG4gICAgICA6IHsvLyB0aGUgYWN0aXZpdHkgd2FzIHN0YXJ0ZWQgc29tZSBvdGhlciB3YXksIHNvIHVzZSBkZWZhdWx0c1xuICAgICAgICBwa2c6IGFwcFBhY2thZ2UsXG4gICAgICAgIGFjdGl2aXR5OiBhcHBBY3Rpdml0eSxcbiAgICAgICAgd2FpdFBrZzogYXBwUGFja2FnZSxcbiAgICAgICAgd2FpdEFjdGl2aXR5OiBhcHBBY3Rpdml0eSxcbiAgICAgICAgc3RvcEFwcDogZmFsc2V9O1xuICB9XG4gIGFyZ3MgPSBhd2FpdCB1dGlsLmZpbHRlck9iamVjdChhcmdzKTtcbiAgdGhpcy5sb2cuZGVidWcoYEJyaW5naW5nIGFwcGxpY2F0aW9uIGJhY2sgdG8gZm9yZWdyb3VuZCB3aXRoIGFyZ3VtZW50czogJHtKU09OLnN0cmluZ2lmeShhcmdzKX1gKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLnN0YXJ0QXBwKGFyZ3MpO1xufTtcblxuY29tbWFuZHMuZ2V0U3RyaW5ncyA9IGFzeW5jIGZ1bmN0aW9uIGdldFN0cmluZ3MgKGxhbmd1YWdlKSB7XG4gIGlmICghbGFuZ3VhZ2UpIHtcbiAgICBsYW5ndWFnZSA9IGF3YWl0IHRoaXMuYWRiLmdldERldmljZUxhbmd1YWdlKCk7XG4gICAgdGhpcy5sb2cuaW5mbyhgTm8gbGFuZ3VhZ2Ugc3BlY2lmaWVkLCByZXR1cm5pbmcgc3RyaW5ncyBmb3I6ICR7bGFuZ3VhZ2V9YCk7XG4gIH1cblxuICAvLyBDbGllbnRzIHJlcXVpcmUgdGhlIHJlc3VsdGluZyBtYXBwaW5nIHRvIGhhdmUgYm90aCBrZXlzXG4gIC8vIGFuZCB2YWx1ZXMgb2YgdHlwZSBzdHJpbmdcbiAgY29uc3QgcHJlcHJvY2Vzc1N0cmluZ3NNYXAgPSAobWFwcGluZykgPT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHt9O1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIF8udG9QYWlycyhtYXBwaW5nKSkge1xuICAgICAgcmVzdWx0W2tleV0gPSBfLmlzU3RyaW5nKHZhbHVlKSA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9O1xuXG4gIGlmICh0aGlzLmFwa1N0cmluZ3NbbGFuZ3VhZ2VdKSB7XG4gICAgLy8gUmV0dXJuIGNhY2hlZCBzdHJpbmdzXG4gICAgcmV0dXJuIHByZXByb2Nlc3NTdHJpbmdzTWFwKHRoaXMuYXBrU3RyaW5nc1tsYW5ndWFnZV0pO1xuICB9XG5cbiAgdGhpcy5hcGtTdHJpbmdzW2xhbmd1YWdlXSA9IGF3YWl0IGFuZHJvaWRIZWxwZXJzLnB1c2hTdHJpbmdzKGxhbmd1YWdlLCB0aGlzLmFkYiwgdGhpcy5vcHRzKTtcbiAgaWYgKHRoaXMuYm9vdHN0cmFwKSB7XG4gICAgLy8gVE9ETzogVGhpcyBpcyBtdXRhdGluZyB0aGUgY3VycmVudCBsYW5ndWFnZSwgYnV0IGl0J3MgaG93IGFwcGl1bSBjdXJyZW50bHkgd29ya3NcbiAgICBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCd1cGRhdGVTdHJpbmdzJyk7XG4gIH1cblxuICByZXR1cm4gcHJlcHJvY2Vzc1N0cmluZ3NNYXAodGhpcy5hcGtTdHJpbmdzW2xhbmd1YWdlXSk7XG59O1xuXG5jb21tYW5kcy5sYXVuY2hBcHAgPSBhc3luYyBmdW5jdGlvbiBsYXVuY2hBcHAgKCkge1xuICBhd2FpdCB0aGlzLmluaXRBVVQoKTtcbiAgYXdhaXQgdGhpcy5zdGFydEFVVCgpO1xufTtcblxuY29tbWFuZHMuc3RhcnRBY3Rpdml0eSA9IGFzeW5jIGZ1bmN0aW9uIHN0YXJ0QWN0aXZpdHkgKGFwcFBhY2thZ2UsIGFwcEFjdGl2aXR5LFxuICBhcHBXYWl0UGFja2FnZSwgYXBwV2FpdEFjdGl2aXR5LCBpbnRlbnRBY3Rpb24sIGludGVudENhdGVnb3J5LCBpbnRlbnRGbGFncyxcbiAgb3B0aW9uYWxJbnRlbnRBcmd1bWVudHMsIGRvbnRTdG9wQXBwT25SZXNldCkge1xuICB0aGlzLmxvZy5kZWJ1ZyhgU3RhcnRpbmcgcGFja2FnZSAnJHthcHBQYWNrYWdlfScgYW5kIGFjdGl2aXR5ICcke2FwcEFjdGl2aXR5fSdgKTtcblxuICAvLyBkb250U3RvcEFwcE9uUmVzZXQgaXMgYm90aCBhbiBhcmd1bWVudCBoZXJlLCBhbmQgYSBkZXNpcmVkIGNhcGFiaWxpdHlcbiAgLy8gaWYgdGhlIGFyZ3VtZW50IGlzIHNldCwgdXNlIGl0LCBvdGhlcndpc2UgdXNlIHRoZSBjYXBcbiAgaWYgKCF1dGlsLmhhc1ZhbHVlKGRvbnRTdG9wQXBwT25SZXNldCkpIHtcbiAgICBkb250U3RvcEFwcE9uUmVzZXQgPSAhIXRoaXMub3B0cy5kb250U3RvcEFwcE9uUmVzZXQ7XG4gIH1cblxuICBsZXQgYXJncyA9IHtcbiAgICBwa2c6IGFwcFBhY2thZ2UsXG4gICAgYWN0aXZpdHk6IGFwcEFjdGl2aXR5LFxuICAgIHdhaXRQa2c6IGFwcFdhaXRQYWNrYWdlIHx8IGFwcFBhY2thZ2UsXG4gICAgd2FpdEFjdGl2aXR5OiBhcHBXYWl0QWN0aXZpdHkgfHwgYXBwQWN0aXZpdHksXG4gICAgYWN0aW9uOiBpbnRlbnRBY3Rpb24sXG4gICAgY2F0ZWdvcnk6IGludGVudENhdGVnb3J5LFxuICAgIGZsYWdzOiBpbnRlbnRGbGFncyxcbiAgICBvcHRpb25hbEludGVudEFyZ3VtZW50cyxcbiAgICBzdG9wQXBwOiAhZG9udFN0b3BBcHBPblJlc2V0XG4gIH07XG4gIHRoaXMuX2NhY2hlZEFjdGl2aXR5QXJncyA9IHRoaXMuX2NhY2hlZEFjdGl2aXR5QXJncyB8fCB7fTtcbiAgdGhpcy5fY2FjaGVkQWN0aXZpdHlBcmdzW2Ake2FyZ3Mud2FpdFBrZ30vJHthcmdzLndhaXRBY3Rpdml0eX1gXSA9IGFyZ3M7XG4gIGF3YWl0IHRoaXMuYWRiLnN0YXJ0QXBwKGFyZ3MpO1xufTtcblxuY29tbWFuZHMucmVzZXQgPSBhc3luYyBmdW5jdGlvbiByZXNldCAoKSB7XG4gIGF3YWl0IGFuZHJvaWRIZWxwZXJzLnJlc2V0QXBwKHRoaXMuYWRiLCBPYmplY3QuYXNzaWduKHt9LCB0aGlzLm9wdHMsIHtmYXN0UmVzZXQ6IHRydWV9KSk7XG4gIC8vIHJlc2V0IGNvbnRleHQgc2luY2Ugd2UgZG9uJ3Qga25vdyB3aGF0IGtpbmQgb24gY29udGV4dCB3ZSB3aWxsIGVuZCB1cCBhZnRlciBhcHAgbGF1bmNoLlxuICBhd2FpdCB0aGlzLnNldENvbnRleHQoKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuaXNDaHJvbWVTZXNzaW9uID8gdGhpcy5zdGFydENocm9tZVNlc3Npb24oKSA6IHRoaXMuc3RhcnRBVVQoKTtcbn07XG5cbmNvbW1hbmRzLnN0YXJ0QVVUID0gYXN5bmMgZnVuY3Rpb24gc3RhcnRBVVQgKCkge1xuICBhd2FpdCB0aGlzLmFkYi5zdGFydEFwcCh7XG4gICAgcGtnOiB0aGlzLm9wdHMuYXBwUGFja2FnZSxcbiAgICBhY3Rpdml0eTogdGhpcy5vcHRzLmFwcEFjdGl2aXR5LFxuICAgIGFjdGlvbjogdGhpcy5vcHRzLmludGVudEFjdGlvbixcbiAgICBjYXRlZ29yeTogdGhpcy5vcHRzLmludGVudENhdGVnb3J5LFxuICAgIGZsYWdzOiB0aGlzLm9wdHMuaW50ZW50RmxhZ3MsXG4gICAgd2FpdFBrZzogdGhpcy5vcHRzLmFwcFdhaXRQYWNrYWdlLFxuICAgIHdhaXRBY3Rpdml0eTogdGhpcy5vcHRzLmFwcFdhaXRBY3Rpdml0eSxcbiAgICB3YWl0Rm9yTGF1bmNoOiB0aGlzLm9wdHMuYXBwV2FpdEZvckxhdW5jaCxcbiAgICB3YWl0RHVyYXRpb246IHRoaXMub3B0cy5hcHBXYWl0RHVyYXRpb24sXG4gICAgb3B0aW9uYWxJbnRlbnRBcmd1bWVudHM6IHRoaXMub3B0cy5vcHRpb25hbEludGVudEFyZ3VtZW50cyxcbiAgICBzdG9wQXBwOiAhdGhpcy5vcHRzLmRvbnRTdG9wQXBwT25SZXNldCxcbiAgICB1c2VyOiB0aGlzLm9wdHMudXNlclByb2ZpbGUsXG4gIH0pO1xufTtcblxuLy8gd2Ugb3ZlcnJpZGUgc2V0VXJsIHRvIHRha2UgYW4gYW5kcm9pZCBVUkkgd2hpY2ggY2FuIGJlIHVzZWQgZm9yIGRlZXAtbGlua2luZ1xuLy8gaW5zaWRlIGFuIGFwcCwgc2ltaWxhciB0byBzdGFydGluZyBhbiBpbnRlbnRcbmNvbW1hbmRzLnNldFVybCA9IGFzeW5jIGZ1bmN0aW9uIHNldFVybCAodXJpKSB7XG4gIGF3YWl0IHRoaXMuYWRiLnN0YXJ0VXJpKHVyaSwgdGhpcy5vcHRzLmFwcFBhY2thZ2UpO1xufTtcblxuLy8gY2xvc2luZyBhcHAgdXNpbmcgZm9yY2Ugc3RvcFxuY29tbWFuZHMuY2xvc2VBcHAgPSBhc3luYyBmdW5jdGlvbiBjbG9zZUFwcCAoKSB7XG4gIGF3YWl0IHRoaXMuYWRiLmZvcmNlU3RvcCh0aGlzLm9wdHMuYXBwUGFja2FnZSk7XG4gIC8vIHJlc2V0IGNvbnRleHQgc2luY2Ugd2UgZG9uJ3Qga25vdyB3aGF0IGtpbmQgb24gY29udGV4dCB3ZSB3aWxsIGVuZCB1cCBhZnRlciBhcHAgbGF1bmNoLlxuICBhd2FpdCB0aGlzLnNldENvbnRleHQoKTtcbn07XG5cbmNvbW1hbmRzLmdldERpc3BsYXlEZW5zaXR5ID0gYXN5bmMgZnVuY3Rpb24gZ2V0RGlzcGxheURlbnNpdHkgKCkge1xuICAvLyBmaXJzdCB0cnkgdGhlIHByb3BlcnR5IGZvciBkZXZpY2VzXG4gIGxldCBvdXQgPSBhd2FpdCB0aGlzLmFkYi5zaGVsbChbJ2dldHByb3AnLCAncm8uc2YubGNkX2RlbnNpdHknXSk7XG4gIGlmIChvdXQpIHtcbiAgICBsZXQgdmFsID0gcGFyc2VJbnQob3V0LCAxMCk7XG4gICAgLy8gaWYgdGhlIHZhbHVlIGlzIE5hTiwgdHJ5IGdldHRpbmcgdGhlIGVtdWxhdG9yIHByb3BlcnR5XG4gICAgaWYgKCFpc05hTih2YWwpKSB7XG4gICAgICByZXR1cm4gdmFsO1xuICAgIH1cbiAgICB0aGlzLmxvZy5kZWJ1ZyhgUGFyc2VkIGRlbnNpdHkgdmFsdWUgd2FzIE5hTjogXCIke291dH1cImApO1xuICB9XG4gIC8vIGZhbGxiYWNrIHRvIHRyeWluZyBwcm9wZXJ0eSBmb3IgZW11bGF0b3JzXG4gIG91dCA9IGF3YWl0IHRoaXMuYWRiLnNoZWxsKFsnZ2V0cHJvcCcsICdxZW11LnNmLmxjZF9kZW5zaXR5J10pO1xuICBpZiAob3V0KSB7XG4gICAgbGV0IHZhbCA9IHBhcnNlSW50KG91dCwgMTApO1xuICAgIGlmICghaXNOYU4odmFsKSkge1xuICAgICAgcmV0dXJuIHZhbDtcbiAgICB9XG4gICAgdGhpcy5sb2cuZGVidWcoYFBhcnNlZCBkZW5zaXR5IHZhbHVlIHdhcyBOYU46IFwiJHtvdXR9XCJgKTtcbiAgfVxuICAvLyBjb3VsZG4ndCBnZXQgYW55dGhpbmcsIHNvIGVycm9yIG91dFxuICB0aGlzLmxvZy5lcnJvckFuZFRocm93KCdGYWlsZWQgdG8gZ2V0IGRpc3BsYXkgZGVuc2l0eSBwcm9wZXJ0eS4nKTtcbn07XG5cbmNvbW1hbmRzLm1vYmlsZVBlcmZvcm1FZGl0b3JBY3Rpb24gPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVQZXJmb3JtRWRpdG9yQWN0aW9uIChvcHRzID0ge30pIHtcbiAgY29uc3Qge2FjdGlvbn0gPSBvcHRzO1xuICBpZiAoIXV0aWwuaGFzVmFsdWUoYWN0aW9uKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYCdhY3Rpb24nIGFyZ3VtZW50IGlzIHJlcXVpcmVkYCk7XG4gIH1cblxuICBhd2FpdCB0aGlzLmFkYi5wZXJmb3JtRWRpdG9yQWN0aW9uKGFjdGlvbik7XG59O1xuXG5jb25zdCBQRVJNSVNTSU9OX0FDVElPTiA9IHtcbiAgR1JBTlQ6ICdncmFudCcsXG4gIFJFVk9LRTogJ3Jldm9rZScsXG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENoYW5nZVBlcm1pc3Npb25zT3B0aW9uc1xuICogQHByb3BlcnR5IHshc3RyaW5nfEFycmF5PHN0cmluZz59IHBlcm1pc3Npb25zIC0gVGhlIGZ1bGwgbmFtZSBvZiB0aGUgcGVybWlzc2lvbiB0byBiZSBjaGFuZ2VkXG4gKiBvciBhIGxpc3Qgb2YgcGVybWlzc2lvbnMuIE1hbmRhdG9yeSBhcmd1bWVudC5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhcHBQYWNrYWdlIFt0aGlzLm9wdHMuYXBwUGFja2FnZV0gLSBUaGUgYXBwbGljYXRpb24gcGFja2FnZSB0byBzZXQgY2hhbmdlXG4gKiBwZXJtaXNzaW9ucyBvbi4gRGVmYXVsdHMgdG8gdGhlIHBhY2thZ2UgbmFtZSB1bmRlciB0ZXN0LlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGFjdGlvbiBbZ3JhbnRdIC0gT25lIG9mIGBQRVJNSVNTSU9OX0FDVElPTmAgdmFsdWVzXG4gKi9cblxuLyoqXG4gKiBDaGFuZ2VzIHBhY2thZ2UgcGVybWlzc2lvbnMgaW4gcnVudGltZS5cbiAqXG4gKiBAcGFyYW0gez9DaGFuZ2VQZXJtaXNzaW9uc09wdGlvbnN9IG9wdHMgLSBBdmFpbGFibGUgb3B0aW9ucyBtYXBwaW5nLlxuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZXJlIHdhcyBhIGZhaWx1cmUgd2hpbGUgY2hhbmdpbmcgcGVybWlzc2lvbnNcbiAqL1xuY29tbWFuZHMubW9iaWxlQ2hhbmdlUGVybWlzc2lvbnMgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVDaGFuZ2VQZXJtaXNzaW9ucyAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBwZXJtaXNzaW9ucyxcbiAgICBhcHBQYWNrYWdlID0gdGhpcy5vcHRzLmFwcFBhY2thZ2UsXG4gICAgYWN0aW9uID0gUEVSTUlTU0lPTl9BQ1RJT04uR1JBTlQsXG4gIH0gPSBvcHRzO1xuICBpZiAoIXV0aWwuaGFzVmFsdWUocGVybWlzc2lvbnMpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihgJ3Blcm1pc3Npb25zJyBhcmd1bWVudCBpcyByZXF1aXJlZGApO1xuICB9XG5cbiAgbGV0IGFjdGlvbkZ1bmM7XG4gIHN3aXRjaCAoXy50b0xvd2VyKGFjdGlvbikpIHtcbiAgICBjYXNlIFBFUk1JU1NJT05fQUNUSU9OLkdSQU5UOlxuICAgICAgYWN0aW9uRnVuYyA9IChhcHBQYWNrYWdlLCBwZXJtaXNzaW9uKSA9PiB0aGlzLmFkYi5ncmFudFBlcm1pc3Npb24oYXBwUGFja2FnZSwgcGVybWlzc2lvbik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFBFUk1JU1NJT05fQUNUSU9OLlJFVk9LRTpcbiAgICAgIGFjdGlvbkZ1bmMgPSAoYXBwUGFja2FnZSwgcGVybWlzc2lvbikgPT4gdGhpcy5hZGIucmV2b2tlUGVybWlzc2lvbihhcHBQYWNrYWdlLCBwZXJtaXNzaW9uKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGBVbmtub3duIGFjdGlvbiAnJHthY3Rpb259Jy4gYCArXG4gICAgICAgIGBPbmx5ICR7SlNPTi5zdHJpbmdpZnkoXy52YWx1ZXMoUEVSTUlTU0lPTl9BQ1RJT04pKX0gYWN0aW9ucyBhcmUgc3VwcG9ydGVkYCk7XG4gIH1cbiAgZm9yIChjb25zdCBwZXJtaXNzaW9uIG9mIChfLmlzQXJyYXkocGVybWlzc2lvbnMpID8gcGVybWlzc2lvbnMgOiBbcGVybWlzc2lvbnNdKSkge1xuICAgIGF3YWl0IGFjdGlvbkZ1bmMoYXBwUGFja2FnZSwgcGVybWlzc2lvbik7XG4gIH1cbn07XG5cbmNvbnN0IFBFUk1JU1NJT05TX1RZUEUgPSB7XG4gIERFTklFRDogJ2RlbmllZCcsXG4gIEdSQU5URUQ6ICdncmFudGVkJyxcbiAgUkVRVUVTVEVEOiAncmVxdWVzdGVkJyxcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gR2V0UGVybWlzc2lvbnNPcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdHlwZSBbcmVxdWVzdGVkXSAtIE9uZSBvZiBwb3NzaWJsZSBwZXJtaXNzaW9uIHR5cGVzIHRvIGdldC5cbiAqIENhbiBiZSBhbnkgb2YgYFBFUk1JU1NJT05TX1RZUEVgIHZhbHVlcy5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhcHBQYWNrYWdlIFt0aGlzLm9wdHMuYXBwUGFja2FnZV0gLSBUaGUgYXBwbGljYXRpb24gcGFja2FnZSB0byBzZXQgY2hhbmdlXG4gKiBwZXJtaXNzaW9ucyBvbi4gRGVmYXVsdHMgdG8gdGhlIHBhY2thZ2UgbmFtZSB1bmRlciB0ZXN0LlxuICovXG5cbi8qKlxuICogR2V0cyBydW50aW1lIHBlcm1pc3Npb25zIGxpc3QgZm9yIHRoZSBnaXZlbiBhcHBsaWNhdGlvbiBwYWNrYWdlLlxuICpcbiAqIEBwYXJhbSB7R2V0UGVybWlzc2lvbnNPcHRpb25zfSBvcHRzIC0gQXZhaWxhYmxlIG9wdGlvbnMgbWFwcGluZy5cbiAqIEByZXR1cm5zIHtBcnJheTxzdHJpbmc+fSBUaGUgbGlzdCBvZiByZXRyaWV2ZWQgcGVybWlzc2lvbnMgZm9yIHRoZSBnaXZlbiB0eXBlXG4gKiAoY2FuIGFsc28gYmUgZW1wdHkpLlxuICogQHRocm93cyB7RXJyb3J9IGlmIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBnZXR0aW5nIHBlcm1pc3Npb25zLlxuICovXG5jb21tYW5kcy5tb2JpbGVHZXRQZXJtaXNzaW9ucyA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZUdldFBlcm1pc3Npb25zIChvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHR5cGUgPSBQRVJNSVNTSU9OU19UWVBFLlJFUVVFU1RFRCxcbiAgICBhcHBQYWNrYWdlID0gdGhpcy5vcHRzLmFwcFBhY2thZ2UsXG4gIH0gPSBvcHRzO1xuXG4gIGxldCBhY3Rpb25GdW5jO1xuICBzd2l0Y2ggKF8udG9Mb3dlcih0eXBlKSkge1xuICAgIGNhc2UgUEVSTUlTU0lPTlNfVFlQRS5SRVFVRVNURUQ6XG4gICAgICBhY3Rpb25GdW5jID0gKGFwcFBhY2thZ2UpID0+IHRoaXMuYWRiLmdldFJlcVBlcm1pc3Npb25zKGFwcFBhY2thZ2UpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBQRVJNSVNTSU9OU19UWVBFLkdSQU5URUQ6XG4gICAgICBhY3Rpb25GdW5jID0gKGFwcFBhY2thZ2UpID0+IHRoaXMuYWRiLmdldEdyYW50ZWRQZXJtaXNzaW9ucyhhcHBQYWNrYWdlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgUEVSTUlTU0lPTlNfVFlQRS5ERU5JRUQ6XG4gICAgICBhY3Rpb25GdW5jID0gKGFwcFBhY2thZ2UpID0+IHRoaXMuYWRiLmdldERlbmllZFBlcm1pc3Npb25zKGFwcFBhY2thZ2UpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYFVua25vd24gcGVybWlzc2lvbnMgdHlwZSAnJHt0eXBlfScuIGAgK1xuICAgICAgICBgT25seSAke0pTT04uc3RyaW5naWZ5KF8udmFsdWVzKFBFUk1JU1NJT05TX1RZUEUpKX0gdHlwZXMgYXJlIHN1cHBvcnRlZGApO1xuICB9XG4gIHJldHVybiBhd2FpdCBhY3Rpb25GdW5jKGFwcFBhY2thZ2UpO1xufTtcblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGxpc3Qgb2YgcmVjZW50IHN5c3RlbSBub3RpZmljYXRpb25zLlxuICpcbiAqIEByZXR1cm5zIHtPYmplY3R9IFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvbiBgYWRiLmdldE5vdGlmaWNhdGlvbnNgIGZvclxuICogbW9yZSBkZXRhaWxzXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUdldE5vdGlmaWNhdGlvbnMgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVHZXROb3RpZmljYXRpb25zICgpIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLmdldE5vdGlmaWNhdGlvbnMoKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU21zTGlzdE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBtYXggWzEwMF0gLSBUaGUgbWF4aW11bSBjb3VudCBvZiByZWNlbnQgU01TIG1lc3NhZ2VzXG4gKiB0byByZXRyaWV2ZVxuICovXG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBsaXN0IG9mIHJlY2VudCBTTVMgbWVzc2FnZXMgd2l0aCB0aGVpciBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwYXJhbSB7U21zTGlzdE9wdGlvbnN9IG9wdHNcbiAqIEByZXR1cm5zIHtPYmplY3R9IFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvbiBgYWRiLmdldFNtc0xpc3RgIGZvclxuICogbW9yZSBkZXRhaWxzXG4gKi9cbmNvbW1hbmRzLm1vYmlsZUxpc3RTbXMgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVMaXN0U21zIChvcHRzID0ge30pIHtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLmdldFNtc0xpc3Qob3B0cyk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFVubG9ja09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBrZXkgVGhlIHVubG9jayBrZXkuIFRoZSB2YWx1ZSBvZiB0aGlzIGtleSBkZXBlbmRzXG4gKiBvbiB0aGUgYWN0dWFsIHVubG9jayB0eXBlIGFuZCBjb3VsZCBiZSBhIHBpbi9wYXNzd29yZC9wYXR0ZXJuIHZhbHVlIG9yXG4gKiBhIGJpb21ldHJpYyBmaW5nZXIgaWQuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gdHlwZSBUaGUgdW5sb2NrIHR5cGUuIFRoZSBmb2xsb3dpbmcgdW5sb2NrIHR5cGVzXG4gKiBhcmUgc3VwcG9ydGVkOiBgcGluYCwgYHBpbldpdGhLZXlFdmVudGAsIGBwYXNzd29yZGAsIGBwYXR0ZXJuYCBhbmQgYGZpbmdlcnByaW50YC5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gc3RyYXRlZ3kgRWl0aGVyICdsb2Nrc2V0dGluZ3MnIChkZWZhdWx0KSBvciAndWlhdXRvbWF0b3InLlxuICogU2V0dGluZyBpdCB0byAndWlhdXRvbWF0b3InIHdpbGwgZW5mb3JjZSB0aGUgZHJpdmVyIHRvIGF2b2lkIHVzaW5nIHNwZWNpYWxcbiAqIEFEQiBzaG9ydGN1dHMgaW4gb3JkZXIgdG8gc3BlZWQgdXAgdGhlIHVubG9jayBwcm9jZWR1cmUuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHRpbWVvdXRNcyBbMjAwMF0gVGhlIG1heGltdW0gdGltZSBpbiBtaWxsaXNlY29uZHNcbiAqIHRvIHdhaXQgdW50aWwgdGhlIHNjcmVlbiBnZXRzIHVubG9ja2VkXG4gKi9cblxuLyoqXG4gKiBVbmxvY2tzIHRoZSBkZXZpY2UgaWYgaXQgaXMgbG9ja2VkLiBOb29wIGlmIHRoZSBkZXZpY2UncyBzY3JlZW4gaXMgbm90IGxvY2tlZC5cbiAqXG4gKiBAcGFyYW0gez9VbmxvY2tPcHRpb25zfSBvcHRzXG4gKiBAdGhyb3dzIHtFcnJvcn0gaWYgdW5sb2NrIG9wZXJhdGlvbiBmYWlscyBvciB0aGUgcHJvdmlkZWRcbiAqIGFyZ3VtZW50cyBhcmUgbm90IHZhbGlkXG4gKi9cbmNvbW1hbmRzLm1vYmlsZVVubG9jayA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVVubG9jayAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHsga2V5LCB0eXBlLCBzdHJhdGVneSwgdGltZW91dE1zIH0gPSBvcHRzO1xuICBhd2FpdCBhbmRyb2lkSGVscGVycy51bmxvY2sodGhpcywgdGhpcy5hZGIsIHtcbiAgICB1bmxvY2tLZXk6IGtleSxcbiAgICB1bmxvY2tUeXBlOiB0eXBlLFxuICAgIHVubG9ja1N0cmF0ZWd5OiBzdHJhdGVneSxcbiAgICB1bmxvY2tTdWNjZXNzVGltZW91dDogdGltZW91dE1zLFxuICB9KTtcbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEscUJBQXFCLEdBQUcsc0JBQTlCO0FBRUEsSUFBSUMsUUFBUSxHQUFHLEVBQWY7QUFBQSxJQUFtQkMsT0FBTyxHQUFHLEVBQTdCO0FBQUEsSUFBaUNDLFVBQVUsR0FBRyxFQUE5Qzs7OztBQUVBRixRQUFRLENBQUNHLElBQVQsR0FBZ0IsZUFBZUEsSUFBZixDQUFxQkEsSUFBckIsRUFBMkI7RUFFekNBLElBQUksR0FBR0MsZ0JBQUVDLE9BQUYsQ0FBVUYsSUFBVixJQUFrQkEsSUFBSSxDQUFDRyxJQUFMLENBQVUsRUFBVixDQUFsQixHQUFrQ0gsSUFBekM7RUFDQSxJQUFJSSxNQUFNLEdBQUc7SUFDWEMsSUFBSSxFQUFFTCxJQURLO0lBRVhNLE9BQU8sRUFBRTtFQUZFLENBQWI7O0VBSUEsSUFBSSxLQUFLQyxJQUFMLENBQVVDLGVBQWQsRUFBK0I7SUFDN0JKLE1BQU0sQ0FBQ0ksZUFBUCxHQUF5QixJQUF6QjtFQUNEOztFQUNELE1BQU0sS0FBS0MsVUFBTCxDQUFnQkwsTUFBaEIsQ0FBTjtBQUNELENBWEQ7O0FBYUFQLFFBQVEsQ0FBQ1ksVUFBVCxHQUFzQixlQUFlQSxVQUFmLENBQTJCTCxNQUEzQixFQUFtQztFQUN2RCxPQUFPLE1BQU0sS0FBS00sU0FBTCxDQUFlQyxVQUFmLENBQTBCLFNBQTFCLEVBQXFDUCxNQUFyQyxDQUFiO0FBQ0QsQ0FGRDs7QUFhQVAsUUFBUSxDQUFDZSxh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
@@ -56,4 +56,4 @@ var _default = extensions;
56
56
  exports.default = _default;require('source-map-support').install();
57
57
 
58
58
 
59
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9pbWUuanMiXSwibmFtZXMiOlsiY29tbWFuZHMiLCJoZWxwZXJzIiwiZXh0ZW5zaW9ucyIsImlzSU1FQWN0aXZhdGVkIiwiYXZhaWxhYmxlSU1FRW5naW5lcyIsImxvZyIsImRlYnVnIiwiZW5naW5lcyIsImFkYiIsImF2YWlsYWJsZUlNRXMiLCJKU09OIiwic3RyaW5naWZ5IiwiZ2V0QWN0aXZlSU1FRW5naW5lIiwiZGVmYXVsdElNRSIsImFjdGl2YXRlSU1FRW5naW5lIiwiaW1lSWQiLCJhdmFpbGFibGVFbmdpbmVzIiwiaW5kZXhPZiIsImVycm9ycyIsIklNRU5vdEF2YWlsYWJsZUVycm9yIiwiZW5hYmxlSU1FIiwic2V0SU1FIiwiZGVhY3RpdmF0ZUlNRUVuZ2luZSIsImN1cnJlbnRFbmdpbmUiLCJkaXNhYmxlSU1FIiwiT2JqZWN0IiwiYXNzaWduIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFFQSxJQUFJQSxRQUFRLEdBQUcsRUFBZjtBQUFBLElBQW1CQyxPQUFPLEdBQUcsRUFBN0I7QUFBQSxJQUFpQ0MsVUFBVSxHQUFHLEVBQTlDOzs7O0FBRUFGLFFBQVEsQ0FBQ0csY0FBVCxHQUEwQixlQUFlQSxjQUFmLEdBQWlDO0FBRXpELFNBQU8sSUFBUDtBQUNELENBSEQ7O0FBS0FILFFBQVEsQ0FBQ0ksbUJBQVQsR0FBK0IsZUFBZUEsbUJBQWYsR0FBc0M7QUFDbkUsT0FBS0MsR0FBTCxDQUFTQyxLQUFULENBQWUsMkJBQWY7QUFDQSxNQUFJQyxPQUFPLEdBQUcsTUFBTSxLQUFLQyxHQUFMLENBQVNDLGFBQVQsRUFBcEI7QUFDQSxPQUFLSixHQUFMLENBQVNDLEtBQVQsQ0FBZ0IsWUFBV0ksSUFBSSxDQUFDQyxTQUFMLENBQWVKLE9BQWYsQ0FBd0IsRUFBbkQ7QUFDQSxTQUFPQSxPQUFQO0FBQ0QsQ0FMRDs7QUFPQVAsUUFBUSxDQUFDWSxrQkFBVCxHQUE4QixlQUFlQSxrQkFBZixHQUFxQztBQUNqRSxPQUFLUCxHQUFMLENBQVNDLEtBQVQsQ0FBZSxnQ0FBZjtBQUNBLFNBQU8sTUFBTSxLQUFLRSxHQUFMLENBQVNLLFVBQVQsRUFBYjtBQUNELENBSEQ7O0FBS0FiLFFBQVEsQ0FBQ2MsaUJBQVQsR0FBNkIsZUFBZUEsaUJBQWYsQ0FBa0NDLEtBQWxDLEVBQXlDO0FBQ3BFLE9BQUtWLEdBQUwsQ0FBU0MsS0FBVCxDQUFnQiw4QkFBNkJTLEtBQU0sRUFBbkQ7QUFDQSxNQUFJQyxnQkFBZ0IsR0FBRyxNQUFNLEtBQUtSLEdBQUwsQ0FBU0MsYUFBVCxFQUE3Qjs7QUFDQSxNQUFJTyxnQkFBZ0IsQ0FBQ0MsT0FBakIsQ0FBeUJGLEtBQXpCLE1BQW9DLENBQUMsQ0FBekMsRUFBNEM7QUFDMUMsU0FBS1YsR0FBTCxDQUFTQyxLQUFULENBQWUsd0JBQWY7QUFDQSxVQUFNLElBQUlZLG1CQUFPQyxvQkFBWCxFQUFOO0FBQ0Q7O0FBQ0QsT0FBS2QsR0FBTCxDQUFTQyxLQUFULENBQWUsNkNBQWY7QUFDQSxRQUFNLEtBQUtFLEdBQUwsQ0FBU1ksU0FBVCxDQUFtQkwsS0FBbkIsQ0FBTjtBQUNBLFFBQU0sS0FBS1AsR0FBTCxDQUFTYSxNQUFULENBQWdCTixLQUFoQixDQUFOO0FBQ0QsQ0FWRDs7QUFZQWYsUUFBUSxDQUFDc0IsbUJBQVQsR0FBK0IsZUFBZUEsbUJBQWYsR0FBc0M7QUFDbkUsTUFBSUMsYUFBYSxHQUFHLE1BQU0sS0FBS1gsa0JBQUwsRUFBMUI7QUFDQSxPQUFLUCxHQUFMLENBQVNDLEtBQVQsQ0FBZ0IsNEJBQTJCaUIsYUFBYyxFQUF6RDtBQUNBLFFBQU0sS0FBS2YsR0FBTCxDQUFTZ0IsVUFBVCxDQUFvQkQsYUFBcEIsQ0FBTjtBQUNELENBSkQ7O0FBTUFFLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjeEIsVUFBZCxFQUEwQkYsUUFBMUIsRUFBb0NDLE9BQXBDO2VBRWVDLFUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdAYXBwaXVtL2Jhc2UtZHJpdmVyJztcblxubGV0IGNvbW1hbmRzID0ge30sIGhlbHBlcnMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG5jb21tYW5kcy5pc0lNRUFjdGl2YXRlZCA9IGFzeW5jIGZ1bmN0aW9uIGlzSU1FQWN0aXZhdGVkICgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gIC8vIElNRSBpcyBhbHdheXMgYWN0aXZhdGVkIG9uIEFuZHJvaWQgZGV2aWNlc1xuICByZXR1cm4gdHJ1ZTtcbn07XG5cbmNvbW1hbmRzLmF2YWlsYWJsZUlNRUVuZ2luZXMgPSBhc3luYyBmdW5jdGlvbiBhdmFpbGFibGVJTUVFbmdpbmVzICgpIHtcbiAgdGhpcy5sb2cuZGVidWcoJ1JldHJpZXZpbmcgYXZhaWxhYmxlIElNRXMnKTtcbiAgbGV0IGVuZ2luZXMgPSBhd2FpdCB0aGlzLmFkYi5hdmFpbGFibGVJTUVzKCk7XG4gIHRoaXMubG9nLmRlYnVnKGBFbmdpbmVzOiAke0pTT04uc3RyaW5naWZ5KGVuZ2luZXMpfWApO1xuICByZXR1cm4gZW5naW5lcztcbn07XG5cbmNvbW1hbmRzLmdldEFjdGl2ZUlNRUVuZ2luZSA9IGFzeW5jIGZ1bmN0aW9uIGdldEFjdGl2ZUlNRUVuZ2luZSAoKSB7XG4gIHRoaXMubG9nLmRlYnVnKCdSZXRyaWV2aW5nIGN1cnJlbnQgZGVmYXVsdCBJTUUnKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLmRlZmF1bHRJTUUoKTtcbn07XG5cbmNvbW1hbmRzLmFjdGl2YXRlSU1FRW5naW5lID0gYXN5bmMgZnVuY3Rpb24gYWN0aXZhdGVJTUVFbmdpbmUgKGltZUlkKSB7XG4gIHRoaXMubG9nLmRlYnVnKGBBdHRlbXB0aW5nIHRvIGFjdGl2YXRlIElNRSAke2ltZUlkfWApO1xuICBsZXQgYXZhaWxhYmxlRW5naW5lcyA9IGF3YWl0IHRoaXMuYWRiLmF2YWlsYWJsZUlNRXMoKTtcbiAgaWYgKGF2YWlsYWJsZUVuZ2luZXMuaW5kZXhPZihpbWVJZCkgPT09IC0xKSB7XG4gICAgdGhpcy5sb2cuZGVidWcoJ0lNRSBub3QgZm91bmQsIGZhaWxpbmcnKTtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLklNRU5vdEF2YWlsYWJsZUVycm9yKCk7XG4gIH1cbiAgdGhpcy5sb2cuZGVidWcoJ0ZvdW5kIGluc3RhbGxlZCBJTUUsIGF0dGVtcHRpbmcgdG8gYWN0aXZhdGUnKTtcbiAgYXdhaXQgdGhpcy5hZGIuZW5hYmxlSU1FKGltZUlkKTtcbiAgYXdhaXQgdGhpcy5hZGIuc2V0SU1FKGltZUlkKTtcbn07XG5cbmNvbW1hbmRzLmRlYWN0aXZhdGVJTUVFbmdpbmUgPSBhc3luYyBmdW5jdGlvbiBkZWFjdGl2YXRlSU1FRW5naW5lICgpIHtcbiAgbGV0IGN1cnJlbnRFbmdpbmUgPSBhd2FpdCB0aGlzLmdldEFjdGl2ZUlNRUVuZ2luZSgpO1xuICB0aGlzLmxvZy5kZWJ1ZyhgQXR0ZW1wdGluZyB0byBkZWFjdGl2YXRlICR7Y3VycmVudEVuZ2luZX1gKTtcbiAgYXdhaXQgdGhpcy5hZGIuZGlzYWJsZUlNRShjdXJyZW50RW5naW5lKTtcbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy9pbWUuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
59
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2ltZS5qcyIsIm5hbWVzIjpbImNvbW1hbmRzIiwiaGVscGVycyIsImV4dGVuc2lvbnMiLCJpc0lNRUFjdGl2YXRlZCIsImF2YWlsYWJsZUlNRUVuZ2luZXMiLCJsb2ciLCJkZWJ1ZyIsImVuZ2luZXMiLCJhZGIiLCJhdmFpbGFibGVJTUVzIiwiSlNPTiIsInN0cmluZ2lmeSIsImdldEFjdGl2ZUlNRUVuZ2luZSIsImRlZmF1bHRJTUUiLCJhY3RpdmF0ZUlNRUVuZ2luZSIsImltZUlkIiwiYXZhaWxhYmxlRW5naW5lcyIsImluZGV4T2YiLCJlcnJvcnMiLCJJTUVOb3RBdmFpbGFibGVFcnJvciIsImVuYWJsZUlNRSIsInNldElNRSIsImRlYWN0aXZhdGVJTUVFbmdpbmUiLCJjdXJyZW50RW5naW5lIiwiZGlzYWJsZUlNRSIsIk9iamVjdCIsImFzc2lnbiJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9pbWUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5cbmxldCBjb21tYW5kcyA9IHt9LCBoZWxwZXJzID0ge30sIGV4dGVuc2lvbnMgPSB7fTtcblxuY29tbWFuZHMuaXNJTUVBY3RpdmF0ZWQgPSBhc3luYyBmdW5jdGlvbiBpc0lNRUFjdGl2YXRlZCAoKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcmVxdWlyZS1hd2FpdFxuICAvLyBJTUUgaXMgYWx3YXlzIGFjdGl2YXRlZCBvbiBBbmRyb2lkIGRldmljZXNcbiAgcmV0dXJuIHRydWU7XG59O1xuXG5jb21tYW5kcy5hdmFpbGFibGVJTUVFbmdpbmVzID0gYXN5bmMgZnVuY3Rpb24gYXZhaWxhYmxlSU1FRW5naW5lcyAoKSB7XG4gIHRoaXMubG9nLmRlYnVnKCdSZXRyaWV2aW5nIGF2YWlsYWJsZSBJTUVzJyk7XG4gIGxldCBlbmdpbmVzID0gYXdhaXQgdGhpcy5hZGIuYXZhaWxhYmxlSU1FcygpO1xuICB0aGlzLmxvZy5kZWJ1ZyhgRW5naW5lczogJHtKU09OLnN0cmluZ2lmeShlbmdpbmVzKX1gKTtcbiAgcmV0dXJuIGVuZ2luZXM7XG59O1xuXG5jb21tYW5kcy5nZXRBY3RpdmVJTUVFbmdpbmUgPSBhc3luYyBmdW5jdGlvbiBnZXRBY3RpdmVJTUVFbmdpbmUgKCkge1xuICB0aGlzLmxvZy5kZWJ1ZygnUmV0cmlldmluZyBjdXJyZW50IGRlZmF1bHQgSU1FJyk7XG4gIHJldHVybiBhd2FpdCB0aGlzLmFkYi5kZWZhdWx0SU1FKCk7XG59O1xuXG5jb21tYW5kcy5hY3RpdmF0ZUlNRUVuZ2luZSA9IGFzeW5jIGZ1bmN0aW9uIGFjdGl2YXRlSU1FRW5naW5lIChpbWVJZCkge1xuICB0aGlzLmxvZy5kZWJ1ZyhgQXR0ZW1wdGluZyB0byBhY3RpdmF0ZSBJTUUgJHtpbWVJZH1gKTtcbiAgbGV0IGF2YWlsYWJsZUVuZ2luZXMgPSBhd2FpdCB0aGlzLmFkYi5hdmFpbGFibGVJTUVzKCk7XG4gIGlmIChhdmFpbGFibGVFbmdpbmVzLmluZGV4T2YoaW1lSWQpID09PSAtMSkge1xuICAgIHRoaXMubG9nLmRlYnVnKCdJTUUgbm90IGZvdW5kLCBmYWlsaW5nJyk7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5JTUVOb3RBdmFpbGFibGVFcnJvcigpO1xuICB9XG4gIHRoaXMubG9nLmRlYnVnKCdGb3VuZCBpbnN0YWxsZWQgSU1FLCBhdHRlbXB0aW5nIHRvIGFjdGl2YXRlJyk7XG4gIGF3YWl0IHRoaXMuYWRiLmVuYWJsZUlNRShpbWVJZCk7XG4gIGF3YWl0IHRoaXMuYWRiLnNldElNRShpbWVJZCk7XG59O1xuXG5jb21tYW5kcy5kZWFjdGl2YXRlSU1FRW5naW5lID0gYXN5bmMgZnVuY3Rpb24gZGVhY3RpdmF0ZUlNRUVuZ2luZSAoKSB7XG4gIGxldCBjdXJyZW50RW5naW5lID0gYXdhaXQgdGhpcy5nZXRBY3RpdmVJTUVFbmdpbmUoKTtcbiAgdGhpcy5sb2cuZGVidWcoYEF0dGVtcHRpbmcgdG8gZGVhY3RpdmF0ZSAke2N1cnJlbnRFbmdpbmV9YCk7XG4gIGF3YWl0IHRoaXMuYWRiLmRpc2FibGVJTUUoY3VycmVudEVuZ2luZSk7XG59O1xuXG5PYmplY3QuYXNzaWduKGV4dGVuc2lvbnMsIGNvbW1hbmRzLCBoZWxwZXJzKTtcbmV4cG9ydCB7IGNvbW1hbmRzLCBoZWxwZXJzIH07XG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFFQSxJQUFJQSxRQUFRLEdBQUcsRUFBZjtBQUFBLElBQW1CQyxPQUFPLEdBQUcsRUFBN0I7QUFBQSxJQUFpQ0MsVUFBVSxHQUFHLEVBQTlDOzs7O0FBRUFGLFFBQVEsQ0FBQ0csY0FBVCxHQUEwQixlQUFlQSxjQUFmLEdBQWlDO0VBRXpELE9BQU8sSUFBUDtBQUNELENBSEQ7O0FBS0FILFFBQVEsQ0FBQ0ksbUJBQVQsR0FBK0IsZUFBZUEsbUJBQWYsR0FBc0M7RUFDbkUsS0FBS0MsR0FBTCxDQUFTQyxLQUFULENBQWUsMkJBQWY7RUFDQSxJQUFJQyxPQUFPLEdBQUcsTUFBTSxLQUFLQyxHQUFMLENBQVNDLGFBQVQsRUFBcEI7RUFDQSxLQUFLSixHQUFMLENBQVNDLEtBQVQsQ0FBZ0IsWUFBV0ksSUFBSSxDQUFDQyxTQUFMLENBQWVKLE9BQWYsQ0FBd0IsRUFBbkQ7RUFDQSxPQUFPQSxPQUFQO0FBQ0QsQ0FMRDs7QUFPQVAsUUFBUSxDQUFDWSxrQkFBVCxHQUE4QixlQUFlQSxrQkFBZixHQUFxQztFQUNqRSxLQUFLUCxHQUFMLENBQVNDLEtBQVQsQ0FBZSxnQ0FBZjtFQUNBLE9BQU8sTUFBTSxLQUFLRSxHQUFMLENBQVNLLFVBQVQsRUFBYjtBQUNELENBSEQ7O0FBS0FiLFFBQVEsQ0FBQ2MsaUJBQVQsR0FBNkIsZUFBZUEsaUJBQWYsQ0FBa0NDLEtBQWxDLEVBQXlDO0VBQ3BFLEtBQUtWLEdBQUwsQ0FBU0MsS0FBVCxDQUFnQiw4QkFBNkJTLEtBQU0sRUFBbkQ7RUFDQSxJQUFJQyxnQkFBZ0IsR0FBRyxNQUFNLEtBQUtSLEdBQUwsQ0FBU0MsYUFBVCxFQUE3Qjs7RUFDQSxJQUFJTyxnQkFBZ0IsQ0FBQ0MsT0FBakIsQ0FBeUJGLEtBQXpCLE1BQW9DLENBQUMsQ0FBekMsRUFBNEM7SUFDMUMsS0FBS1YsR0FBTCxDQUFTQyxLQUFULENBQWUsd0JBQWY7SUFDQSxNQUFNLElBQUlZLG1CQUFPQyxvQkFBWCxFQUFOO0VBQ0Q7O0VBQ0QsS0FBS2QsR0FBTCxDQUFTQyxLQUFULENBQWUsNkNBQWY7RUFDQSxNQUFNLEtBQUtFLEdBQUwsQ0FBU1ksU0FBVCxDQUFtQkwsS0FBbkIsQ0FBTjtFQUNBLE1BQU0sS0FBS1AsR0FBTCxDQUFTYSxNQUFULENBQWdCTixLQUFoQixDQUFOO0FBQ0QsQ0FWRDs7QUFZQWYsUUFBUSxDQUFDc0IsbUJBQVQsR0FBK0IsZUFBZUEsbUJBQWYsR0FBc0M7RUFDbkUsSUFBSUMsYUFBYSxHQUFHLE1BQU0sS0FBS1gsa0JBQUwsRUFBMUI7RUFDQSxLQUFLUCxHQUFMLENBQVNDLEtBQVQsQ0FBZ0IsNEJBQTJCaUIsYUFBYyxFQUF6RDtFQUNBLE1BQU0sS0FBS2YsR0FBTCxDQUFTZ0IsVUFBVCxDQUFvQkQsYUFBcEIsQ0FBTjtBQUNELENBSkQ7O0FBTUFFLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjeEIsVUFBZCxFQUEwQkYsUUFBMUIsRUFBb0NDLE9BQXBDO2VBRWVDLFUifQ==
@@ -58,4 +58,4 @@ var _default = commands;
58
58
  exports.default = _default;require('source-map-support').install();
59
59
 
60
60
 
61
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9pbmRleC5qcyJdLCJuYW1lcyI6WyJjb21tYW5kcyIsIk9iamVjdCIsImFzc2lnbiIsImZpbmRDbWRzIiwiZ2VuZXJhbENtZHMiLCJhbGVydENtZHMiLCJlbGVtZW50Q21kcyIsImNvbnRleHRDbWRzIiwiYWN0aW9uQ21kcyIsInRvdWNoQ21kcyIsImltZUNtZHMiLCJuZXR3b3JrQ21kcyIsImNvdmVyYWdlQ21kcyIsInJlY29yZHNjcmVlbkNtZHMiLCJpbnRlbnRDbWRzIiwic2NyZWVuU3RyZWFtQ21kcyIsInBlcmZvcm1hbmNlQ21kcyIsImV4ZWN1dGVDbWRzIiwic2hlbGxDbWRzIiwiZW11Q29uc29sZUNtZHMiLCJzeXN0ZW1CYXJzQ21kcyIsImFwcE1hbmFnZW1lbnRDbWRzIiwiZmlsZUFjdGlvbnNDbWRzIiwibG9nQ21kcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQSxJQUFJQSxRQUFRLEdBQUcsRUFBZjs7QUFDQUMsTUFBTSxDQUFDQyxNQUFQLENBQ0VGLFFBREYsRUFFRUcsYUFGRixFQUdFQyxnQkFIRixFQUlFQyxjQUpGLEVBS0VDLGdCQUxGLEVBTUVDLGdCQU5GLEVBT0VDLGdCQVBGLEVBUUVDLGNBUkYsRUFTRUMsWUFURixFQVVFQyxnQkFWRixFQVdFQyxpQkFYRixFQVlFQyxxQkFaRixFQWFFQyxlQWJGLEVBY0VDLHFCQWRGLEVBZUVDLG9CQWZGLEVBZ0JFQyxnQkFoQkYsRUFpQkVDLGNBakJGLEVBa0JFQyxtQkFsQkYsRUFtQkVDLG1CQW5CRixFQW9CRUMsc0JBcEJGLEVBcUJFQyxvQkFyQkYsRUFzQkVDLFlBdEJGO2VBMkJldkIsUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBmaW5kQ21kcyBmcm9tICcuL2ZpbmQnO1xuaW1wb3J0IGdlbmVyYWxDbWRzIGZyb20gJy4vZ2VuZXJhbCc7XG5pbXBvcnQgYWxlcnRDbWRzIGZyb20gJy4vYWxlcnQnO1xuaW1wb3J0IGVsZW1lbnRDbWRzIGZyb20gJy4vZWxlbWVudCc7XG5pbXBvcnQgY29udGV4dENtZHMgZnJvbSAnLi9jb250ZXh0JztcbmltcG9ydCBhY3Rpb25DbWRzIGZyb20gJy4vYWN0aW9ucyc7XG5pbXBvcnQgdG91Y2hDbWRzIGZyb20gJy4vdG91Y2gnO1xuaW1wb3J0IGltZUNtZHMgZnJvbSAnLi9pbWUnO1xuaW1wb3J0IG5ldHdvcmtDbWRzIGZyb20gJy4vbmV0d29yayc7XG5pbXBvcnQgY292ZXJhZ2VDbWRzIGZyb20gJy4vY292ZXJhZ2UnO1xuaW1wb3J0IHJlY29yZHNjcmVlbkNtZHMgZnJvbSAnLi9yZWNvcmRzY3JlZW4nO1xuaW1wb3J0IHNjcmVlblN0cmVhbUNtZHMgZnJvbSAnLi9zdHJlYW1zY3JlZW4nO1xuaW1wb3J0IHBlcmZvcm1hbmNlQ21kcyBmcm9tICcuL3BlcmZvcm1hbmNlJztcbmltcG9ydCBleGVjdXRlQ21kcyBmcm9tICcuL2V4ZWN1dGUnO1xuaW1wb3J0IHNoZWxsQ21kcyBmcm9tICcuL3NoZWxsJztcbmltcG9ydCBlbXVDb25zb2xlQ21kcyBmcm9tICcuL2VtdS1jb25zb2xlJztcbmltcG9ydCBmaWxlQWN0aW9uc0NtZHMgZnJvbSAnLi9maWxlLWFjdGlvbnMnO1xuaW1wb3J0IGFwcE1hbmFnZW1lbnRDbWRzIGZyb20gJy4vYXBwLW1hbmFnZW1lbnQnO1xuaW1wb3J0IGludGVudENtZHMgZnJvbSAnLi9pbnRlbnQnO1xuaW1wb3J0IHN5c3RlbUJhcnNDbWRzIGZyb20gJy4vc3lzdGVtLWJhcnMnO1xuaW1wb3J0IGxvZ0NtZHMgZnJvbSAnLi9sb2cnO1xuXG5cbmxldCBjb21tYW5kcyA9IHt9O1xuT2JqZWN0LmFzc2lnbihcbiAgY29tbWFuZHMsXG4gIGZpbmRDbWRzLFxuICBnZW5lcmFsQ21kcyxcbiAgYWxlcnRDbWRzLFxuICBlbGVtZW50Q21kcyxcbiAgY29udGV4dENtZHMsXG4gIGFjdGlvbkNtZHMsXG4gIHRvdWNoQ21kcyxcbiAgaW1lQ21kcyxcbiAgbmV0d29ya0NtZHMsXG4gIGNvdmVyYWdlQ21kcyxcbiAgcmVjb3Jkc2NyZWVuQ21kcyxcbiAgaW50ZW50Q21kcyxcbiAgc2NyZWVuU3RyZWFtQ21kcyxcbiAgcGVyZm9ybWFuY2VDbWRzLFxuICBleGVjdXRlQ21kcyxcbiAgc2hlbGxDbWRzLFxuICBlbXVDb25zb2xlQ21kcyxcbiAgc3lzdGVtQmFyc0NtZHMsXG4gIGFwcE1hbmFnZW1lbnRDbWRzLFxuICBmaWxlQWN0aW9uc0NtZHMsXG4gIGxvZ0NtZHMsXG4gIC8vIGFkZCBvdGhlciBjb21tYW5kIHR5cGVzIGhlcmVcbik7XG5cbmV4cG9ydCB7IGNvbW1hbmRzIH07XG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJmaWxlIjoibGliL2NvbW1hbmRzL2luZGV4LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
61
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2luZGV4LmpzIiwibmFtZXMiOlsiY29tbWFuZHMiLCJPYmplY3QiLCJhc3NpZ24iLCJmaW5kQ21kcyIsImdlbmVyYWxDbWRzIiwiYWxlcnRDbWRzIiwiZWxlbWVudENtZHMiLCJjb250ZXh0Q21kcyIsImFjdGlvbkNtZHMiLCJ0b3VjaENtZHMiLCJpbWVDbWRzIiwibmV0d29ya0NtZHMiLCJjb3ZlcmFnZUNtZHMiLCJyZWNvcmRzY3JlZW5DbWRzIiwiaW50ZW50Q21kcyIsInNjcmVlblN0cmVhbUNtZHMiLCJwZXJmb3JtYW5jZUNtZHMiLCJleGVjdXRlQ21kcyIsInNoZWxsQ21kcyIsImVtdUNvbnNvbGVDbWRzIiwic3lzdGVtQmFyc0NtZHMiLCJhcHBNYW5hZ2VtZW50Q21kcyIsImZpbGVBY3Rpb25zQ21kcyIsImxvZ0NtZHMiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvY29tbWFuZHMvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZpbmRDbWRzIGZyb20gJy4vZmluZCc7XG5pbXBvcnQgZ2VuZXJhbENtZHMgZnJvbSAnLi9nZW5lcmFsJztcbmltcG9ydCBhbGVydENtZHMgZnJvbSAnLi9hbGVydCc7XG5pbXBvcnQgZWxlbWVudENtZHMgZnJvbSAnLi9lbGVtZW50JztcbmltcG9ydCBjb250ZXh0Q21kcyBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IGFjdGlvbkNtZHMgZnJvbSAnLi9hY3Rpb25zJztcbmltcG9ydCB0b3VjaENtZHMgZnJvbSAnLi90b3VjaCc7XG5pbXBvcnQgaW1lQ21kcyBmcm9tICcuL2ltZSc7XG5pbXBvcnQgbmV0d29ya0NtZHMgZnJvbSAnLi9uZXR3b3JrJztcbmltcG9ydCBjb3ZlcmFnZUNtZHMgZnJvbSAnLi9jb3ZlcmFnZSc7XG5pbXBvcnQgcmVjb3Jkc2NyZWVuQ21kcyBmcm9tICcuL3JlY29yZHNjcmVlbic7XG5pbXBvcnQgc2NyZWVuU3RyZWFtQ21kcyBmcm9tICcuL3N0cmVhbXNjcmVlbic7XG5pbXBvcnQgcGVyZm9ybWFuY2VDbWRzIGZyb20gJy4vcGVyZm9ybWFuY2UnO1xuaW1wb3J0IGV4ZWN1dGVDbWRzIGZyb20gJy4vZXhlY3V0ZSc7XG5pbXBvcnQgc2hlbGxDbWRzIGZyb20gJy4vc2hlbGwnO1xuaW1wb3J0IGVtdUNvbnNvbGVDbWRzIGZyb20gJy4vZW11LWNvbnNvbGUnO1xuaW1wb3J0IGZpbGVBY3Rpb25zQ21kcyBmcm9tICcuL2ZpbGUtYWN0aW9ucyc7XG5pbXBvcnQgYXBwTWFuYWdlbWVudENtZHMgZnJvbSAnLi9hcHAtbWFuYWdlbWVudCc7XG5pbXBvcnQgaW50ZW50Q21kcyBmcm9tICcuL2ludGVudCc7XG5pbXBvcnQgc3lzdGVtQmFyc0NtZHMgZnJvbSAnLi9zeXN0ZW0tYmFycyc7XG5pbXBvcnQgbG9nQ21kcyBmcm9tICcuL2xvZyc7XG5cblxubGV0IGNvbW1hbmRzID0ge307XG5PYmplY3QuYXNzaWduKFxuICBjb21tYW5kcyxcbiAgZmluZENtZHMsXG4gIGdlbmVyYWxDbWRzLFxuICBhbGVydENtZHMsXG4gIGVsZW1lbnRDbWRzLFxuICBjb250ZXh0Q21kcyxcbiAgYWN0aW9uQ21kcyxcbiAgdG91Y2hDbWRzLFxuICBpbWVDbWRzLFxuICBuZXR3b3JrQ21kcyxcbiAgY292ZXJhZ2VDbWRzLFxuICByZWNvcmRzY3JlZW5DbWRzLFxuICBpbnRlbnRDbWRzLFxuICBzY3JlZW5TdHJlYW1DbWRzLFxuICBwZXJmb3JtYW5jZUNtZHMsXG4gIGV4ZWN1dGVDbWRzLFxuICBzaGVsbENtZHMsXG4gIGVtdUNvbnNvbGVDbWRzLFxuICBzeXN0ZW1CYXJzQ21kcyxcbiAgYXBwTWFuYWdlbWVudENtZHMsXG4gIGZpbGVBY3Rpb25zQ21kcyxcbiAgbG9nQ21kcyxcbiAgLy8gYWRkIG90aGVyIGNvbW1hbmQgdHlwZXMgaGVyZVxuKTtcblxuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUdBLElBQUlBLFFBQVEsR0FBRyxFQUFmOztBQUNBQyxNQUFNLENBQUNDLE1BQVAsQ0FDRUYsUUFERixFQUVFRyxhQUZGLEVBR0VDLGdCQUhGLEVBSUVDLGNBSkYsRUFLRUMsZ0JBTEYsRUFNRUMsZ0JBTkYsRUFPRUMsZ0JBUEYsRUFRRUMsY0FSRixFQVNFQyxZQVRGLEVBVUVDLGdCQVZGLEVBV0VDLGlCQVhGLEVBWUVDLHFCQVpGLEVBYUVDLGVBYkYsRUFjRUMscUJBZEYsRUFlRUMsb0JBZkYsRUFnQkVDLGdCQWhCRixFQWlCRUMsY0FqQkYsRUFrQkVDLG1CQWxCRixFQW1CRUMsbUJBbkJGLEVBb0JFQyxzQkFwQkYsRUFxQkVDLG9CQXJCRixFQXNCRUMsWUF0QkY7ZUEyQmV2QixRIn0=
@@ -208,4 +208,4 @@ var _default = commands;
208
208
  exports.default = _default;require('source-map-support').install();
209
209
 
210
210
 
211
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9pbnRlbnQuanMiXSwibmFtZXMiOlsiTk9fVkFMVUVfQVJHX1RZUEUiLCJTVVBQT1JURURfRVhUUkFfVFlQRVMiLCJBUElfTEVWRUxfQU5EUk9JRF84IiwiY29tbWFuZHMiLCJwYXJzZUludGVudFNwZWMiLCJvcHRzIiwiaW50ZW50IiwiYWN0aW9uIiwidXJpIiwibWltZVR5cGUiLCJpZGVudGlmaWVyIiwiY2F0ZWdvcmllcyIsImNvbXBvbmVudCIsImV4dHJhcyIsImZsYWdzIiwicmVzdWx0QXJncyIsInB1c2giLCJfIiwiaXNOaWwiLCJpc0FycmF5IiwiZmxhdE1hcCIsIm1hcCIsImNOYW1lIiwicGFja2FnZSIsImVycm9ycyIsIkludmFsaWRBcmd1bWVudEVycm9yIiwiaXRlbSIsInR5cGUiLCJrZXkiLCJ2YWx1ZSIsImluY2x1ZGVzIiwiaXNFbXB0eSIsImlzU3RyaW5nIiwidHJpbSIsIkpTT04iLCJzdHJpbmdpZnkiLCJpc1VuZGVmaW5lZCIsIm1vYmlsZVN0YXJ0QWN0aXZpdHkiLCJ1c2VyIiwid2FpdCIsInN0b3AiLCJ3aW5kb3dpbmdNb2RlIiwiYWN0aXZpdHlUeXBlIiwiZGlzcGxheSIsImNtZCIsImFkYiIsImdldEFwaUxldmVsIiwic2hlbGwiLCJtb2JpbGVCcm9hZGNhc3QiLCJyZWNlaXZlclBlcm1pc3Npb24iLCJhbGxvd0JhY2tncm91bmRBY3Rpdml0eVN0YXJ0cyIsIm1vYmlsZVN0YXJ0U2VydmljZSIsImZvcmVncm91bmQiLCJtb2JpbGVTdG9wU2VydmljZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQSxNQUFNQSxpQkFBaUIsR0FBRyxJQUExQjtBQUNBLE1BQU1DLHFCQUFxQixHQUFHLENBQzVCLEdBRDRCLEVBQ3ZCRCxpQkFEdUIsRUFDSixHQURJLEVBQ0MsR0FERCxFQUNNLEdBRE4sRUFDVyxHQURYLEVBQ2dCLEdBRGhCLEVBQ3FCLElBRHJCLEVBRTVCLElBRjRCLEVBRXRCLEtBRnNCLEVBRWYsSUFGZSxFQUVULEtBRlMsRUFFRixJQUZFLEVBRUksS0FGSixFQUVXLElBRlgsRUFFaUIsS0FGakIsQ0FBOUI7QUFJQSxNQUFNRSxtQkFBbUIsR0FBRyxFQUE1QjtBQUVBLE1BQU1DLFFBQVEsR0FBRyxFQUFqQjs7O0FBRUEsU0FBU0MsZUFBVCxDQUEwQkMsSUFBSSxHQUFHLEVBQWpDLEVBQXFDO0FBQ25DLFFBQU07QUFDSkMsSUFBQUEsTUFESTtBQUVKQyxJQUFBQSxNQUZJO0FBR0pDLElBQUFBLEdBSEk7QUFJSkMsSUFBQUEsUUFKSTtBQUtKQyxJQUFBQSxVQUxJO0FBTUpDLElBQUFBLFVBTkk7QUFPSkMsSUFBQUEsU0FQSTtBQVFKQyxJQUFBQSxNQVJJO0FBU0pDLElBQUFBO0FBVEksTUFVRlQsSUFWSjtBQVdBLFFBQU1VLFVBQVUsR0FBRyxFQUFuQjs7QUFDQSxNQUFJVCxNQUFKLEVBQVk7QUFDVlMsSUFBQUEsVUFBVSxDQUFDQyxJQUFYLENBQWdCVixNQUFoQjtBQUNEOztBQUNELE1BQUlDLE1BQUosRUFBWTtBQUNWUSxJQUFBQSxVQUFVLENBQUNDLElBQVgsQ0FBZ0IsSUFBaEIsRUFBc0JULE1BQXRCO0FBQ0Q7O0FBQ0QsTUFBSUMsR0FBSixFQUFTO0FBQ1BPLElBQUFBLFVBQVUsQ0FBQ0MsSUFBWCxDQUFnQixJQUFoQixFQUFzQlIsR0FBdEI7QUFDRDs7QUFDRCxNQUFJQyxRQUFKLEVBQWM7QUFDWk0sSUFBQUEsVUFBVSxDQUFDQyxJQUFYLENBQWdCLElBQWhCLEVBQXNCUCxRQUF0QjtBQUNEOztBQUNELE1BQUksQ0FBQ1EsZ0JBQUVDLEtBQUYsQ0FBUVIsVUFBUixDQUFMLEVBQTBCO0FBQ3hCSyxJQUFBQSxVQUFVLENBQUNDLElBQVgsQ0FBZ0IsSUFBaEIsRUFBc0JOLFVBQXRCO0FBQ0Q7O0FBQ0QsTUFBSUMsVUFBSixFQUFnQjtBQUNkLFFBQUlNLGdCQUFFRSxPQUFGLENBQVVSLFVBQVYsQ0FBSixFQUEyQjtBQUN6QkksTUFBQUEsVUFBVSxDQUFDQyxJQUFYLENBQWdCLEdBQUlDLGdCQUFFRyxPQUFGLENBQVVULFVBQVUsQ0FBQ1UsR0FBWCxDQUFnQkMsS0FBRCxJQUFXLENBQUMsSUFBRCxFQUFPQSxLQUFQLENBQTFCLENBQVYsQ0FBcEI7QUFDRCxLQUZELE1BRU87QUFDTFAsTUFBQUEsVUFBVSxDQUFDQyxJQUFYLENBQWdCLElBQWhCLEVBQXNCTCxVQUF0QjtBQUNEO0FBQ0Y7O0FBQ0QsTUFBSUMsU0FBSixFQUFlO0FBQ2JHLElBQUFBLFVBQVUsQ0FBQ0MsSUFBWCxDQUFnQixJQUFoQixFQUFzQkosU0FBdEI7QUFDRDs7QUFDRCxNQUFJUCxJQUFJLENBQUNrQixPQUFULEVBQWtCO0FBQ2hCUixJQUFBQSxVQUFVLENBQUNDLElBQVgsQ0FBZ0IsSUFBaEIsRUFBc0JYLElBQUksQ0FBQ2tCLE9BQTNCO0FBQ0Q7O0FBQ0QsTUFBSVYsTUFBSixFQUFZO0FBQ1YsUUFBSSxDQUFDSSxnQkFBRUUsT0FBRixDQUFVTixNQUFWLENBQUwsRUFBd0I7QUFDdEIsWUFBTSxJQUFJVyxtQkFBT0Msb0JBQVgsQ0FBaUMsMkJBQWpDLENBQU47QUFDRDs7QUFDRCxTQUFLLE1BQU1DLElBQVgsSUFBbUJiLE1BQW5CLEVBQTJCO0FBQ3pCLFVBQUksQ0FBQ0ksZ0JBQUVFLE9BQUYsQ0FBVU8sSUFBVixDQUFMLEVBQXNCO0FBQ3BCLGNBQU0sSUFBSUYsbUJBQU9DLG9CQUFYLENBQWlDLG1CQUFrQkMsSUFBSyxvQkFBeEQsQ0FBTjtBQUNEOztBQUNELFlBQU0sQ0FBQ0MsSUFBRCxFQUFPQyxHQUFQLEVBQVlDLEtBQVosSUFBcUJILElBQTNCOztBQUNBLFVBQUksQ0FBQ1QsZ0JBQUVhLFFBQUYsQ0FBVzdCLHFCQUFYLEVBQWtDMEIsSUFBbEMsQ0FBTCxFQUE4QztBQUM1QyxjQUFNLElBQUlILG1CQUFPQyxvQkFBWCxDQUNILHdCQUF1QkUsSUFBSyxrQkFBN0IsR0FDQyx3Q0FBdUMxQixxQkFBc0IsRUFGMUQsQ0FBTjtBQUlEOztBQUNELFVBQUlnQixnQkFBRWMsT0FBRixDQUFVSCxHQUFWLEtBQW1CWCxnQkFBRWUsUUFBRixDQUFXSixHQUFYLEtBQW1CWCxnQkFBRWdCLElBQUYsQ0FBT0wsR0FBUCxNQUFnQixFQUExRCxFQUErRDtBQUM3RCxjQUFNLElBQUlKLG1CQUFPQyxvQkFBWCxDQUNILDRCQUEyQlMsSUFBSSxDQUFDQyxTQUFMLENBQWVULElBQWYsQ0FBcUIscUNBRDdDLENBQU47QUFHRDs7QUFDRCxVQUFJQyxJQUFJLEtBQUszQixpQkFBYixFQUFnQztBQUM5QmUsUUFBQUEsVUFBVSxDQUFDQyxJQUFYLENBQWlCLE1BQUtXLElBQUssRUFBM0IsRUFBOEJDLEdBQTlCO0FBQ0QsT0FGRCxNQUVPLElBQUlYLGdCQUFFbUIsV0FBRixDQUFjUCxLQUFkLENBQUosRUFBMEI7QUFDL0IsY0FBTSxJQUFJTCxtQkFBT0Msb0JBQVgsQ0FDSCx5QkFBd0JFLElBQUssU0FBUU8sSUFBSSxDQUFDQyxTQUFMLENBQWVULElBQWYsQ0FBcUIsZUFBM0QsR0FDQyw0QkFGRyxDQUFOO0FBSUQsT0FMTSxNQUtBO0FBQ0xYLFFBQUFBLFVBQVUsQ0FBQ0MsSUFBWCxDQUFpQixNQUFLVyxJQUFLLEVBQTNCLEVBQThCQyxHQUE5QixFQUFtQ0MsS0FBbkM7QUFDRDtBQUNGO0FBQ0Y7O0FBQ0QsTUFBSWYsS0FBSixFQUFXO0FBQ1RDLElBQUFBLFVBQVUsQ0FBQ0MsSUFBWCxDQUFnQixJQUFoQixFQUFzQkYsS0FBdEI7QUFDRDs7QUFDRCxTQUFPQyxVQUFQO0FBQ0Q7O0FBaUVEWixRQUFRLENBQUNrQyxtQkFBVCxHQUErQixlQUFlQSxtQkFBZixDQUFvQ2hDLElBQUksR0FBRyxFQUEzQyxFQUErQztBQUM1RSxRQUFNO0FBQ0ppQyxJQUFBQSxJQURJO0FBRUpDLElBQUFBLElBRkk7QUFHSkMsSUFBQUEsSUFISTtBQUlKQyxJQUFBQSxhQUpJO0FBS0pDLElBQUFBLFlBTEk7QUFNSkMsSUFBQUE7QUFOSSxNQU9GdEMsSUFQSjtBQVFBLFFBQU11QyxHQUFHLEdBQUcsQ0FDVixJQURVLEVBQ0gsT0FBTSxLQUFLQyxHQUFMLENBQVNDLFdBQVQsRUFBTixJQUErQjVDLG1CQUFoQyxHQUF1RCxPQUF2RCxHQUFpRSxnQkFEN0QsQ0FBWjs7QUFHQSxNQUFJLENBQUNlLGdCQUFFQyxLQUFGLENBQVFvQixJQUFSLENBQUwsRUFBb0I7QUFDbEJNLElBQUFBLEdBQUcsQ0FBQzVCLElBQUosQ0FBUyxRQUFULEVBQW1Cc0IsSUFBbkI7QUFDRDs7QUFDRCxNQUFJQyxJQUFKLEVBQVU7QUFDUkssSUFBQUEsR0FBRyxDQUFDNUIsSUFBSixDQUFTLElBQVQ7QUFDRDs7QUFDRCxNQUFJd0IsSUFBSixFQUFVO0FBQ1JJLElBQUFBLEdBQUcsQ0FBQzVCLElBQUosQ0FBUyxJQUFUO0FBQ0Q7O0FBQ0QsTUFBSSxDQUFDQyxnQkFBRUMsS0FBRixDQUFRdUIsYUFBUixDQUFMLEVBQTZCO0FBQzNCRyxJQUFBQSxHQUFHLENBQUM1QixJQUFKLENBQVMsaUJBQVQsRUFBNEJ5QixhQUE1QjtBQUNEOztBQUNELE1BQUksQ0FBQ3hCLGdCQUFFQyxLQUFGLENBQVF3QixZQUFSLENBQUwsRUFBNEI7QUFDMUJFLElBQUFBLEdBQUcsQ0FBQzVCLElBQUosQ0FBUyxnQkFBVCxFQUEyQjBCLFlBQTNCO0FBQ0Q7O0FBQ0QsTUFBSSxDQUFDekIsZ0JBQUVDLEtBQUYsQ0FBUXlCLE9BQVIsQ0FBTCxFQUF1QjtBQUNyQkMsSUFBQUEsR0FBRyxDQUFDNUIsSUFBSixDQUFTLFdBQVQsRUFBc0IyQixPQUF0QjtBQUNEOztBQUNEQyxFQUFBQSxHQUFHLENBQUM1QixJQUFKLENBQVMsR0FBSVosZUFBZSxDQUFDQyxJQUFELENBQTVCO0FBQ0EsU0FBTyxNQUFNLEtBQUt3QyxHQUFMLENBQVNFLEtBQVQsQ0FBZUgsR0FBZixDQUFiO0FBQ0QsQ0FoQ0Q7O0FBaUVBekMsUUFBUSxDQUFDNkMsZUFBVCxHQUEyQixlQUFlQSxlQUFmLENBQWdDM0MsSUFBSSxHQUFHLEVBQXZDLEVBQTJDO0FBQ3BFLFFBQU07QUFDSmlDLElBQUFBLElBREk7QUFFSlcsSUFBQUEsa0JBRkk7QUFHSkMsSUFBQUE7QUFISSxNQUlGN0MsSUFKSjtBQUtBLFFBQU11QyxHQUFHLEdBQUcsQ0FBQyxJQUFELEVBQU8sV0FBUCxDQUFaOztBQUNBLE1BQUksQ0FBQzNCLGdCQUFFQyxLQUFGLENBQVFvQixJQUFSLENBQUwsRUFBb0I7QUFDbEJNLElBQUFBLEdBQUcsQ0FBQzVCLElBQUosQ0FBUyxRQUFULEVBQW1Cc0IsSUFBbkI7QUFDRDs7QUFDRCxNQUFJVyxrQkFBSixFQUF3QjtBQUN0QkwsSUFBQUEsR0FBRyxDQUFDNUIsSUFBSixDQUFTLHVCQUFULEVBQWtDaUMsa0JBQWxDO0FBQ0Q7O0FBQ0QsTUFBSUMsNkJBQUosRUFBbUM7QUFDakNOLElBQUFBLEdBQUcsQ0FBQzVCLElBQUosQ0FBUyxvQ0FBVDtBQUNEOztBQUNENEIsRUFBQUEsR0FBRyxDQUFDNUIsSUFBSixDQUFTLEdBQUlaLGVBQWUsQ0FBQ0MsSUFBRCxDQUE1QjtBQUNBLFNBQU8sTUFBTSxLQUFLd0MsR0FBTCxDQUFTRSxLQUFULENBQWVILEdBQWYsQ0FBYjtBQUNELENBbEJEOztBQWtEQXpDLFFBQVEsQ0FBQ2dELGtCQUFULEdBQThCLGVBQWVBLGtCQUFmLENBQW1DOUMsSUFBSSxHQUFHLEVBQTFDLEVBQThDO0FBQzFFLFFBQU07QUFDSmlDLElBQUFBLElBREk7QUFFSmMsSUFBQUE7QUFGSSxNQUdGL0MsSUFISjtBQUlBLFFBQU11QyxHQUFHLEdBQUcsQ0FBQyxJQUFELENBQVo7O0FBQ0EsTUFBSSxPQUFNLEtBQUtDLEdBQUwsQ0FBU0MsV0FBVCxFQUFOLElBQStCNUMsbUJBQW5DLEVBQXdEO0FBQ3REMEMsSUFBQUEsR0FBRyxDQUFDNUIsSUFBSixDQUFTLGNBQVQ7QUFDRCxHQUZELE1BRU87QUFDTDRCLElBQUFBLEdBQUcsQ0FBQzVCLElBQUosQ0FBU29DLFVBQVUsR0FBRywwQkFBSCxHQUFnQyxlQUFuRDtBQUNEOztBQUNELE1BQUksQ0FBQ25DLGdCQUFFQyxLQUFGLENBQVFvQixJQUFSLENBQUwsRUFBb0I7QUFDbEJNLElBQUFBLEdBQUcsQ0FBQzVCLElBQUosQ0FBUyxRQUFULEVBQW1Cc0IsSUFBbkI7QUFDRDs7QUFDRE0sRUFBQUEsR0FBRyxDQUFDNUIsSUFBSixDQUFTLEdBQUlaLGVBQWUsQ0FBQ0MsSUFBRCxDQUE1QjtBQUNBLFNBQU8sTUFBTSxLQUFLd0MsR0FBTCxDQUFTRSxLQUFULENBQWVILEdBQWYsQ0FBYjtBQUNELENBaEJEOztBQTRDQXpDLFFBQVEsQ0FBQ2tELGlCQUFULEdBQTZCLGVBQWVBLGlCQUFmLENBQWtDaEQsSUFBSSxHQUFHLEVBQXpDLEVBQTZDO0FBQ3hFLFFBQU07QUFDSmlDLElBQUFBO0FBREksTUFFRmpDLElBRko7QUFHQSxRQUFNdUMsR0FBRyxHQUFHLENBQ1YsSUFEVSxFQUVULE9BQU0sS0FBS0MsR0FBTCxDQUFTQyxXQUFULEVBQU4sSUFBK0I1QyxtQkFBaEMsR0FBdUQsYUFBdkQsR0FBdUUsY0FGN0QsQ0FBWjs7QUFJQSxNQUFJLENBQUNlLGdCQUFFQyxLQUFGLENBQVFvQixJQUFSLENBQUwsRUFBb0I7QUFDbEJNLElBQUFBLEdBQUcsQ0FBQzVCLElBQUosQ0FBUyxRQUFULEVBQW1Cc0IsSUFBbkI7QUFDRDs7QUFDRE0sRUFBQUEsR0FBRyxDQUFDNUIsSUFBSixDQUFTLEdBQUlaLGVBQWUsQ0FBQ0MsSUFBRCxDQUE1QjtBQUNBLFNBQU8sTUFBTSxLQUFLd0MsR0FBTCxDQUFTRSxLQUFULENBQWVILEdBQWYsQ0FBYjtBQUNELENBYkQ7O2VBaUJlekMsUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdAYXBwaXVtL2Jhc2UtZHJpdmVyJztcblxuY29uc3QgTk9fVkFMVUVfQVJHX1RZUEUgPSAnc24nO1xuY29uc3QgU1VQUE9SVEVEX0VYVFJBX1RZUEVTID0gW1xuICAncycsIE5PX1ZBTFVFX0FSR19UWVBFLCAneicsICdpJywgJ2wnLCAnZicsICd1JywgJ2NuJyxcbiAgJ2lhJywgJ2lhbCcsICdsYScsICdsYWwnLCAnZmEnLCAnZmFsJywgJ3NhJywgJ3NhbCcsXG5dO1xuY29uc3QgQVBJX0xFVkVMX0FORFJPSURfOCA9IDI2O1xuXG5jb25zdCBjb21tYW5kcyA9IHt9O1xuXG5mdW5jdGlvbiBwYXJzZUludGVudFNwZWMgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgaW50ZW50LFxuICAgIGFjdGlvbixcbiAgICB1cmksXG4gICAgbWltZVR5cGUsXG4gICAgaWRlbnRpZmllcixcbiAgICBjYXRlZ29yaWVzLFxuICAgIGNvbXBvbmVudCxcbiAgICBleHRyYXMsXG4gICAgZmxhZ3MsXG4gIH0gPSBvcHRzO1xuICBjb25zdCByZXN1bHRBcmdzID0gW107XG4gIGlmIChpbnRlbnQpIHtcbiAgICByZXN1bHRBcmdzLnB1c2goaW50ZW50KTtcbiAgfVxuICBpZiAoYWN0aW9uKSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctYScsIGFjdGlvbik7XG4gIH1cbiAgaWYgKHVyaSkge1xuICAgIHJlc3VsdEFyZ3MucHVzaCgnLWQnLCB1cmkpO1xuICB9XG4gIGlmIChtaW1lVHlwZSkge1xuICAgIHJlc3VsdEFyZ3MucHVzaCgnLXQnLCBtaW1lVHlwZSk7XG4gIH1cbiAgaWYgKCFfLmlzTmlsKGlkZW50aWZpZXIpKSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctaScsIGlkZW50aWZpZXIpO1xuICB9XG4gIGlmIChjYXRlZ29yaWVzKSB7XG4gICAgaWYgKF8uaXNBcnJheShjYXRlZ29yaWVzKSkge1xuICAgICAgcmVzdWx0QXJncy5wdXNoKC4uLihfLmZsYXRNYXAoY2F0ZWdvcmllcy5tYXAoKGNOYW1lKSA9PiBbJy1jJywgY05hbWVdKSkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0QXJncy5wdXNoKCctYycsIGNhdGVnb3JpZXMpO1xuICAgIH1cbiAgfVxuICBpZiAoY29tcG9uZW50KSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctbicsIGNvbXBvbmVudCk7XG4gIH1cbiAgaWYgKG9wdHMucGFja2FnZSkge1xuICAgIHJlc3VsdEFyZ3MucHVzaCgnLXAnLCBvcHRzLnBhY2thZ2UpO1xuICB9XG4gIGlmIChleHRyYXMpIHtcbiAgICBpZiAoIV8uaXNBcnJheShleHRyYXMpKSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGAnZXh0cmFzJyBtdXN0IGJlIGFuIGFycmF5YCk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBleHRyYXMpIHtcbiAgICAgIGlmICghXy5pc0FycmF5KGl0ZW0pKSB7XG4gICAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYEV4dHJhIGFyZ3VtZW50ICcke2l0ZW19JyBtdXN0IGJlIGFuIGFycmF5YCk7XG4gICAgICB9XG4gICAgICBjb25zdCBbdHlwZSwga2V5LCB2YWx1ZV0gPSBpdGVtO1xuICAgICAgaWYgKCFfLmluY2x1ZGVzKFNVUFBPUlRFRF9FWFRSQV9UWVBFUywgdHlwZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICAgICBgRXh0cmEgYXJndW1lbnQgdHlwZSAnJHt0eXBlfScgaXMgbm90IGtub3duLiBgICtcbiAgICAgICAgICBgU3VwcG9ydGVkIGludGVudCBhcmd1bWVudCB0eXBlcyBhcmU6ICR7U1VQUE9SVEVEX0VYVFJBX1RZUEVTfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChfLmlzRW1wdHkoa2V5KSB8fCAoXy5pc1N0cmluZyhrZXkpICYmIF8udHJpbShrZXkpID09PSAnJykpIHtcbiAgICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICAgICBgRXh0cmEgYXJndW1lbnQncyBrZXkgaW4gJyR7SlNPTi5zdHJpbmdpZnkoaXRlbSl9JyBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nIGlkZW50aWZpZXJgXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAodHlwZSA9PT0gTk9fVkFMVUVfQVJHX1RZUEUpIHtcbiAgICAgICAgcmVzdWx0QXJncy5wdXNoKGAtLWUke3R5cGV9YCwga2V5KTtcbiAgICAgIH0gZWxzZSBpZiAoXy5pc1VuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICAgICBgSW50ZW50IGFyZ3VtZW50IHR5cGUgJyR7dHlwZX0nIGluICcke0pTT04uc3RyaW5naWZ5KGl0ZW0pfScgcmVxdWlyZXMgYSBgICtcbiAgICAgICAgICBgdmFsaWQgdmFsdWUgdG8gYmUgcHJvdmlkZWRgXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHRBcmdzLnB1c2goYC0tZSR7dHlwZX1gLCBrZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKGZsYWdzKSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctZicsIGZsYWdzKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0QXJncztcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTdGFydEFjdGl2aXR5T3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfG51bWJlcn0gdXNlciBbJ2N1cnJlbnQnXSAtIFRoZSB1c2VyIElEIGZvciB3aGljaCB0aGUgc2VydmljZSBpcyBzdGFydGVkLlxuICogVGhlIGBjdXJyZW50YCB1c2VyIGlkIGlzIHVzZWQgYnkgZGVmYXVsdFxuICogQHByb3BlcnR5IHs/Ym9vbGVhbn0gd2FpdCBbZmFsc2VdIC0gU2V0IGl0IHRvIGB0cnVlYCBpZiB5b3Ugd2FudCB0byBibG9jayB0aGUgbWV0aG9kIGNhbGxcbiAqIHVudGlsIHRoZSBhY3Rpdml0eSBtYW5hZ2VyJ3MgcHJvY2VzcyByZXR1cm5zIHRoZSBjb250cm9sIHRvIHRoZSBzeXN0ZW0uXG4gKiBAcHJvcGVydHkgez9ib29sZWFufSBzdG9wIFtmYWxzZV0gLSBTZXQgaXQgdG8gYHRydWVgIHRvIGZvcmNlIHN0b3AgdGhlIHRhcmdldFxuICogYXBwIGJlZm9yZSBzdGFydGluZyB0aGUgYWN0aXZpdHlcbiAqIEBwcm9wZXJ0eSB7P251bWJlcnxzdHJpbmd9IHdpbmRvd2luZ01vZGUgLSBUaGUgd2luZG93aW5nIG1vZGUgdG8gbGF1bmNoIHRoZSBhY3Rpdml0eSBpbnRvLlxuICogQ2hlY2sgaHR0cHM6Ly9hbmRyb2lkLmdvb2dsZXNvdXJjZS5jb20vcGxhdGZvcm0vZnJhbWV3b3Jrcy9iYXNlLysvbWFzdGVyL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9XaW5kb3dDb25maWd1cmF0aW9uLmphdmFcbiAqIGZvciBtb3JlIGRldGFpbHMgb24gcG9zc2libGUgd2luZG93aW5nIG1vZGVzIChjb25zdGFudHMgc3RhcnRpbmcgd2l0aCBgV0lORE9XSU5HX01PREVfYCkuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ8c3RyaW5nfSBhY3Rpdml0eVR5cGUgLSBUaGUgYWN0aXZpdHkgdHlwZSB0byBsYXVuY2ggdGhlIGFjdGl2aXR5IGFzLlxuICogQ2hlY2sgaHR0cHM6Ly9hbmRyb2lkLmdvb2dsZXNvdXJjZS5jb20vcGxhdGZvcm0vZnJhbWV3b3Jrcy9iYXNlLysvbWFzdGVyL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9XaW5kb3dDb25maWd1cmF0aW9uLmphdmFcbiAqIGZvciBtb3JlIGRldGFpbHMgb24gcG9zc2libGUgYWN0aXZpdHkgdHlwZXMgKGNvbnN0YW50cyBzdGFydGluZyB3aXRoIGBBQ1RJVklUWV9UWVBFX2ApLlxuICogQHByb3BlcnR5IHs/bnVtYmVyfHN0cmluZ30gZGlzcGxheSAtIFRoZSBkaXNwbGF5IGlkZW50aWZpZXIgdG8gbGF1bmNoIHRoZSBhY3Rpdml0eSBpbnRvLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBpbnRlbnQgLSBUaGUgbmFtZSBvZiB0aGUgYWN0aXZpdHkgaW50ZW50IHRvIHN0YXJ0LCBmb3IgZXhhbXBsZVxuICogYGNvbS5zb21lLnBhY2thZ2UubmFtZS8uWW91clNlcnZpY2VTdWJDbGFzc05hbWVgXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGFjdGlvbiAtIEFjdGlvbiBuYW1lXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHBhY2thZ2UgLSBQYWNrYWdlIG5hbWVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdXJpIC0gVW5pZmllZCByZXNvdXJjZSBpZGVudGlmaWVyXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IG1pbWVUeXBlIC0gTWltZSB0eXBlXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGlkZW50aWZpZXIgLSBPcHRpb25hbCBpZGVudGlmaWVyXG4gKiBAcHJvcGVydHkgez9zdHJpbmd8QXJyYXk8c3RyaW5nPn0gY2F0ZWdvcmllcyAtIE9uZSBvciBtb3JlIGNhdGVnb3J5IG5hbWVzXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGNvbXBvbmVudCAtIENvbXBvbmVudCBuYW1lXG4gKiBAcHJvcGVydHkge0FycmF5PHN0cmluZ3xBcnJheTxzdHJpbmc+Pn0gZXh0cmFzIC0gT3B0aW9uYWwgaW50ZW50IGFyZ3VtZW50cy4gTXVzdCBiZSByZXByZXNlbnRlZFxuICogYXMgYXJyYXkgb2YgYXJyYXlzLCB3aGVyZSBlYWNoIHN1YmFycmF5IGl0ZW0gY29udGFpbnMgdHdvIG9yIHRocmVlIHN0cmluZyBpdGVtczpcbiAqIHZhbHVlIHR5cGUsIGtleSBuYW1lIGFuZCB0aGUgdmFsdWUgaXRzZWxmLlxuICogU3VwcG9ydGVkIHZhbHVlIHR5cGVzIGFyZTpcbiAqIC0gczogc3RyaW5nLiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nXG4gKiAtIHNuOiBudWxsLiBWYWx1ZSBpcyBpZ25vcmVkIGZvciB0aGlzIHR5cGVcbiAqIC0gejogYm9vbGVhbi4gVmFsdWUgbXVzdCBiZSBlaXRoZXIgYHRydWVgIG9yIGBmYWxzZWBcbiAqIC0gaTogaW50ZWdlci4gVmFsdWUgbXVzdCBiZSBhIHZhbGlkIDQtYnl0ZSBpbnRlZ2VyIG51bWJlclxuICogLSBsOiBsb25nLiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgOC1ieXRlIGxvbmcgbnVtYmVyXG4gKiAtIGY6IGZsb2F0OiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgZmxvYXQgbnVtYmVyXG4gKiAtIHU6IHVyaS4gVmFsdWUgbXVzdCBiZSBhIHZhbGlkIHVuaWZvcm0gcmVzb3VyY2UgaWRlbnRpZmllciBzdHJpbmdcbiAqIC0gY246IGNvbXBvbmVudCBuYW1lLiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgY29tcG9uZW50IG5hbWUgc3RyaW5nXG4gKiAtIGlhOiBJbnRlZ2VyW10uIFZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2YgY29tbWEtc2VwYXJhdGVkIGludGVnZXJzXG4gKiAtIGlhbDogTGlzdDxJbnRlZ2VyPi4gVmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQgaW50ZWdlcnNcbiAqIC0gbGE6IExvbmdbXS4gVmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQgbG9uZyBudW1iZXJzXG4gKiAtIGxhbDogTGlzdDxMb25nPi4gVmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQgbG9uZyBudW1iZXJzXG4gKiAtIGZhOiBGbG9hdFtdLiBWYWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9mIGNvbW1hLXNlcGFyYXRlZCBmbG9hdCBudW1iZXJzXG4gKiAtIGZhbDogTGlzdDxGbG9hdD4uIFZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2YgY29tbWEtc2VwYXJhdGVkIGZsb2F0IG51bWJlcnNcbiAqIC0gc2E6IFN0cmluZ1tdLiBWYWx1ZSBtdXN0IGJlIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmdzLiBUbyBlbWJlZCBhIGNvbW1hIGludG8gYSBzdHJpbmcsXG4gKiBlc2NhcGUgaXQgdXNpbmcgXCJcXCxcIlxuICogLSBzYWw6IExpc3Q8U3RyaW5nPi4gVmFsdWUgbXVzdCBiZSBjb21tYS1zZXBhcmF0ZWQgc3RyaW5ncy4gVG8gZW1iZWQgYSBjb21tYSBpbnRvIGEgc3RyaW5nLFxuICogZXNjYXBlIGl0IHVzaW5nIFwiXFwsXCJcbiAqIEZvciBleGFtcGxlOiBbWydzJywgJ3Zhck5hbWUxJywgJ015IFN0cmluZzEnXSwgWydzJywgJ3Zhck5hbWUyJywgJ015IFN0cmluZzInXSwgWydpYScsICdhcnJOYW1lJywgJzEsMiwzLDQnXV1cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZmxhZ3MgLSBJbnRlbnQgc3RhcnR1cC1zcGVjaWZpYyBmbGFncyBhcyBhIGhleGFkZWNpbWFsIHN0cmluZy5cbiAqIFNlZSBodHRwczovL2RldmVsb3Blci5hbmRyb2lkLmNvbS9yZWZlcmVuY2UvYW5kcm9pZC9jb250ZW50L0ludGVudC5odG1sXG4gKiBmb3IgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGZsYWcgdmFsdWVzIChjb25zdGFudHMgc3RhcnRpbmcgd2l0aCBGTEFHX0FDVElWSVRZXykuXG4gKiBGbGFnIHZhbHVlcyBjb3VsZCBiZSBtZXJnZWQgdXNpbmcgdGhlIGxvZ2ljYWwgJ29yJyBvcGVyYXRpb24uXG4gKiBGb3IgZXhhbXBsZSwgMHgxMDIwMDAwMCBpcyB0aGUgY29tYmluYXRpb24gb2YgdHdvIGZsYWdzOlxuICogMHgxMDAwMDAwMCBgRkxBR19BQ1RJVklUWV9ORVdfVEFTS2AgfCAweDAwMjAwMDAwIGBGTEFHX0FDVElWSVRZX1JFU0VUX1RBU0tfSUZfTkVFREVEYFxuICovXG5cbi8qKlxuICogU3RhcnRzIHRoZSBnaXZlbiBhY3Rpdml0eSBpbnRlbnQuXG4gKlxuICogQHBhcmFtIHtTdGFydEFjdGl2aXR5T3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbW1hbmQgb3V0cHV0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSBzdGFydGluZyB0aGUgYWN0aXZpdHlcbiAqIG9yIHJlcXVpcmVkIG9wdGlvbnMgYXJlIG1pc3NpbmdcbiAqL1xuY29tbWFuZHMubW9iaWxlU3RhcnRBY3Rpdml0eSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVN0YXJ0QWN0aXZpdHkgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgdXNlcixcbiAgICB3YWl0LFxuICAgIHN0b3AsXG4gICAgd2luZG93aW5nTW9kZSxcbiAgICBhY3Rpdml0eVR5cGUsXG4gICAgZGlzcGxheSxcbiAgfSA9IG9wdHM7XG4gIGNvbnN0IGNtZCA9IFtcbiAgICAnYW0nLCAoYXdhaXQgdGhpcy5hZGIuZ2V0QXBpTGV2ZWwoKSA8IEFQSV9MRVZFTF9BTkRST0lEXzgpID8gJ3N0YXJ0JyA6ICdzdGFydC1hY3Rpdml0eScsXG4gIF07XG4gIGlmICghXy5pc05pbCh1c2VyKSkge1xuICAgIGNtZC5wdXNoKCctLXVzZXInLCB1c2VyKTtcbiAgfVxuICBpZiAod2FpdCkge1xuICAgIGNtZC5wdXNoKCctVycpO1xuICB9XG4gIGlmIChzdG9wKSB7XG4gICAgY21kLnB1c2goJy1TJyk7XG4gIH1cbiAgaWYgKCFfLmlzTmlsKHdpbmRvd2luZ01vZGUpKSB7XG4gICAgY21kLnB1c2goJy0td2luZG93aW5nTW9kZScsIHdpbmRvd2luZ01vZGUpO1xuICB9XG4gIGlmICghXy5pc05pbChhY3Rpdml0eVR5cGUpKSB7XG4gICAgY21kLnB1c2goJy0tYWN0aXZpdHlUeXBlJywgYWN0aXZpdHlUeXBlKTtcbiAgfVxuICBpZiAoIV8uaXNOaWwoZGlzcGxheSkpIHtcbiAgICBjbWQucHVzaCgnLS1kaXNwbGF5JywgZGlzcGxheSk7XG4gIH1cbiAgY21kLnB1c2goLi4uKHBhcnNlSW50ZW50U3BlYyhvcHRzKSkpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQnJvYWRjYXN0T3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfG51bWJlcn0gdXNlciBbJ2FsbCddIC0gVGhlIHVzZXIgSUQgZm9yIHdoaWNoIHRoZSBicm9hZGNhc3QgaXMgc2VudC5cbiAqIFRoZSBgY3VycmVudGAgYWxpYXMgYXNzdW1lcyB0aGUgY3VycmVudCB1c2VyIElELlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSByZWNlaXZlclBlcm1pc3Npb24gLSBSZXF1aXJlIHJlY2VpdmVyIHRvIGhvbGQgdGhlIGdpdmVuIHBlcm1pc3Npb24uXG4gKiBAcHJvcGVydHkgez9ib29sZWFufSBhbGxvd0JhY2tncm91bmRBY3Rpdml0eVN0YXJ0cyBbZmFsc2VdIC0gV2hldGhlciB0aGUgcmVjZWl2ZXIgbWF5XG4gKiBzdGFydCBhY3Rpdml0aWVzIGV2ZW4gaWYgaW4gdGhlIGJhY2tncm91bmQuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGludGVudCAtIFRoZSBuYW1lIG9mIHRoZSBpbnRlbnQgdG8gYnJvYWRjYXN0IHRvLCBmb3IgZXhhbXBsZVxuICogYGNvbS5zb21lLnBhY2thZ2UubmFtZS8uWW91clNlcnZpY2VTdWJDbGFzc05hbWVgLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBhY3Rpb24gLSBBY3Rpb24gbmFtZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB1cmkgLSBVbmlmaWVkIHJlc291cmNlIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbWltZVR5cGUgLSBNaW1lIHR5cGVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaWRlbnRpZmllciAtIE9wdGlvbmFsIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xBcnJheTxzdHJpbmc+fSBjYXRlZ29yaWVzIC0gT25lIG9yIG1vcmUgY2F0ZWdvcnkgbmFtZXNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gY29tcG9uZW50IC0gQ29tcG9uZW50IG5hbWVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gcGFja2FnZSAtIFBhY2thZ2UgbmFtZVxuICogQHByb3BlcnR5IHtBcnJheTxBcnJheTxzdHJpbmc+Pn0gZXh0cmFzIC0gT3B0aW9uYWwgaW50ZW50IGFyZ3VtZW50cy5cbiAqIFNlZSBhYm92ZSBmb3IgdGhlIGRldGFpbGVkIGRlc2NyaXB0aW9uLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBmbGFncyAtIEludGVudCBzdGFydHVwLXNwZWNpZmljIGZsYWdzIGFzIGEgaGV4YWRlY2ltYWwgc3RyaW5nLlxuICogU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKi9cblxuXG4vKipcbiAqIFNlbmQgYSBicm9hZGNhc3QgaW50ZW50LlxuICpcbiAqIEBwYXJhbSB7QnJvYWRjYXN0T3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbW1hbmQgb3V0cHV0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSBzdGFydGluZyB0aGUgYWN0aXZpdHlcbiAqIG9yIHJlcXVpcmVkIG9wdGlvbnMgYXJlIG1pc3NpbmdcbiAqL1xuY29tbWFuZHMubW9iaWxlQnJvYWRjYXN0ID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlQnJvYWRjYXN0IChvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHVzZXIsXG4gICAgcmVjZWl2ZXJQZXJtaXNzaW9uLFxuICAgIGFsbG93QmFja2dyb3VuZEFjdGl2aXR5U3RhcnRzLFxuICB9ID0gb3B0cztcbiAgY29uc3QgY21kID0gWydhbScsICdicm9hZGNhc3QnXTtcbiAgaWYgKCFfLmlzTmlsKHVzZXIpKSB7XG4gICAgY21kLnB1c2goJy0tdXNlcicsIHVzZXIpO1xuICB9XG4gIGlmIChyZWNlaXZlclBlcm1pc3Npb24pIHtcbiAgICBjbWQucHVzaCgnLS1yZWNlaXZlci1wZXJtaXNzaW9uJywgcmVjZWl2ZXJQZXJtaXNzaW9uKTtcbiAgfVxuICBpZiAoYWxsb3dCYWNrZ3JvdW5kQWN0aXZpdHlTdGFydHMpIHtcbiAgICBjbWQucHVzaCgnLS1hbGxvdy1iYWNrZ3JvdW5kLWFjdGl2aXR5LXN0YXJ0cycpO1xuICB9XG4gIGNtZC5wdXNoKC4uLihwYXJzZUludGVudFNwZWMob3B0cykpKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLnNoZWxsKGNtZCk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFN0YXJ0U2VydmljZU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xudW1iZXJ9IHVzZXIgWydjdXJyZW50J10gLSBUaGUgdXNlciBJRCBmb3Igd2hpY2ggdGhlIHNlcnZpY2UgaXMgc3RhcnRlZC5cbiAqIFRoZSBgY3VycmVudGAgdXNlciBpZCBpcyB1c2VkIGJ5IGRlZmF1bHRcbiAqIEBwcm9wZXJ0eSB7P2Jvb2xlYW59IGZvcmVncm91bmQgW2ZhbHNlXSAtIFNldCBpdCB0byBgdHJ1ZWAgaWYgeW91ciBzZXJ2aWNlIG11c3QgYmVcbiAqIHN0YXJ0ZWQgYXMgZm9yZWdyb3VuZCBzZXJ2aWNlLiBUaGlzIG9wdGlvbiBpcyBpZ25vcmVkIGlmIHRoZSBBUEkgbGV2ZWwgb2YgdGhlXG4gKiBkZXZpY2UgdW5kZXIgdGVzdCBpcyBiZWxvdyAyNiAoQW5kcm9pZCA4KS5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaW50ZW50IC0gVGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UgaW50ZW50IHRvIHN0YXJ0LCBmb3IgZXhhbXBsZVxuICogYGNvbS5zb21lLnBhY2thZ2UubmFtZS8uWW91clNlcnZpY2VTdWJDbGFzc05hbWVgLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBhY3Rpb24gLSBBY3Rpb24gbmFtZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB1cmkgLSBVbmlmaWVkIHJlc291cmNlIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbWltZVR5cGUgLSBNaW1lIHR5cGVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaWRlbnRpZmllciAtIE9wdGlvbmFsIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xBcnJheTxzdHJpbmc+fSBjYXRlZ29yaWVzIC0gT25lIG9yIG1vcmUgY2F0ZWdvcnkgbmFtZXNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gY29tcG9uZW50IC0gQ29tcG9uZW50IG5hbWVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gcGFja2FnZSAtIFBhY2thZ2UgbmFtZVxuICogQHByb3BlcnR5IHtBcnJheTxBcnJheTxzdHJpbmc+Pn0gZXh0cmFzIC0gT3B0aW9uYWwgaW50ZW50IGFyZ3VtZW50cy5cbiAqIFNlZSBhYm92ZSBmb3IgdGhlIGRldGFpbGVkIGRlc2NyaXB0aW9uLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBmbGFncyAtIEludGVudCBzdGFydHVwLXNwZWNpZmljIGZsYWdzIGFzIGEgaGV4YWRlY2ltYWwgc3RyaW5nLlxuICogU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKi9cblxuLyoqXG4gKiBTdGFydHMgdGhlIGdpdmVuIHNlcnZpY2UgaW50ZW50LlxuICpcbiAqIEBwYXJhbSB7U3RhcnRTZXJ2aWNlT3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbW1hbmQgb3V0cHV0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSBzdGFydGluZyB0aGUgc2VydmljZVxuICogb3IgcmVxdWlyZWQgb3B0aW9ucyBhcmUgbWlzc2luZ1xuICovXG5jb21tYW5kcy5tb2JpbGVTdGFydFNlcnZpY2UgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTdGFydFNlcnZpY2UgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgdXNlcixcbiAgICBmb3JlZ3JvdW5kLFxuICB9ID0gb3B0cztcbiAgY29uc3QgY21kID0gWydhbSddO1xuICBpZiAoYXdhaXQgdGhpcy5hZGIuZ2V0QXBpTGV2ZWwoKSA8IEFQSV9MRVZFTF9BTkRST0lEXzgpIHtcbiAgICBjbWQucHVzaCgnc3RhcnRzZXJ2aWNlJyk7XG4gIH0gZWxzZSB7XG4gICAgY21kLnB1c2goZm9yZWdyb3VuZCA/ICdzdGFydC1mb3JlZ3JvdW5kLXNlcnZpY2UnIDogJ3N0YXJ0LXNlcnZpY2UnKTtcbiAgfVxuICBpZiAoIV8uaXNOaWwodXNlcikpIHtcbiAgICBjbWQucHVzaCgnLS11c2VyJywgdXNlcik7XG4gIH1cbiAgY21kLnB1c2goLi4uKHBhcnNlSW50ZW50U3BlYyhvcHRzKSkpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU3RvcFNlcnZpY2VPcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ3xudW1iZXJ9IHVzZXIgWydjdXJyZW50J10gLSBUaGUgdXNlciBJRCBmb3Igd2hpY2ggdGhlIHNlcnZpY2UgaXMgcnVubmluZy5cbiAqIFRoZSBgY3VycmVudGAgdXNlciBpZCBpcyB1c2VkIGJ5IGRlZmF1bHRcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaW50ZW50IC0gVGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UgaW50ZW50IHRvIHN0b3AsIGZvciBleGFtcGxlXG4gKiBgY29tLnNvbWUucGFja2FnZS5uYW1lLy5Zb3VyU2VydmljZVN1YkNsYXNzTmFtZWAuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGFjdGlvbiAtIEFjdGlvbiBuYW1lXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHVyaSAtIFVuaWZpZWQgcmVzb3VyY2UgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBtaW1lVHlwZSAtIE1pbWUgdHlwZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBpZGVudGlmaWVyIC0gT3B0aW9uYWwgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHs/c3RyaW5nfEFycmF5PHN0cmluZz59IGNhdGVnb3JpZXMgLSBPbmUgb3IgbW9yZSBjYXRlZ29yeSBuYW1lc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBjb21wb25lbnQgLSBDb21wb25lbnQgbmFtZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBwYWNrYWdlIC0gUGFja2FnZSBuYW1lXG4gKiBAcHJvcGVydHkge0FycmF5PEFycmF5PHN0cmluZz4+fSBleHRyYXMgLSBPcHRpb25hbCBpbnRlbnQgYXJndW1lbnRzLlxuICogU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGZsYWdzIC0gU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKi9cblxuLyoqXG4gKiBTdG9wcyB0aGUgZ2l2ZW4gc2VydmljZSBpbnRlbnQuXG4gKlxuICogQHBhcmFtIHtTdG9wU2VydmljZU9wdGlvbnN9IG9wdHNcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjb21tYW5kIG91dHB1dFxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdhcyBhIGZhaWx1cmUgd2hpbGUgc3RvcHBpbmcgdGhlIHNlcnZpY2VcbiAqIG9yIHJlcXVpcmVkIG9wdGlvbnMgYXJlIG1pc3NpbmdcbiAqL1xuY29tbWFuZHMubW9iaWxlU3RvcFNlcnZpY2UgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTdG9wU2VydmljZSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB1c2VyLFxuICB9ID0gb3B0cztcbiAgY29uc3QgY21kID0gW1xuICAgICdhbScsXG4gICAgKGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCkgPCBBUElfTEVWRUxfQU5EUk9JRF84KSA/ICdzdG9wc2VydmljZScgOiAnc3RvcC1zZXJ2aWNlJ1xuICBdO1xuICBpZiAoIV8uaXNOaWwodXNlcikpIHtcbiAgICBjbWQucHVzaCgnLS11c2VyJywgdXNlcik7XG4gIH1cbiAgY21kLnB1c2goLi4uKHBhcnNlSW50ZW50U3BlYyhvcHRzKSkpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbn07XG5cblxuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sImZpbGUiOiJsaWIvY29tbWFuZHMvaW50ZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
211
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2NvbW1hbmRzL2ludGVudC5qcyIsIm5hbWVzIjpbIk5PX1ZBTFVFX0FSR19UWVBFIiwiU1VQUE9SVEVEX0VYVFJBX1RZUEVTIiwiQVBJX0xFVkVMX0FORFJPSURfOCIsImNvbW1hbmRzIiwicGFyc2VJbnRlbnRTcGVjIiwib3B0cyIsImludGVudCIsImFjdGlvbiIsInVyaSIsIm1pbWVUeXBlIiwiaWRlbnRpZmllciIsImNhdGVnb3JpZXMiLCJjb21wb25lbnQiLCJleHRyYXMiLCJmbGFncyIsInJlc3VsdEFyZ3MiLCJwdXNoIiwiXyIsImlzTmlsIiwiaXNBcnJheSIsImZsYXRNYXAiLCJtYXAiLCJjTmFtZSIsInBhY2thZ2UiLCJlcnJvcnMiLCJJbnZhbGlkQXJndW1lbnRFcnJvciIsIml0ZW0iLCJ0eXBlIiwia2V5IiwidmFsdWUiLCJpbmNsdWRlcyIsImlzRW1wdHkiLCJpc1N0cmluZyIsInRyaW0iLCJKU09OIiwic3RyaW5naWZ5IiwiaXNVbmRlZmluZWQiLCJtb2JpbGVTdGFydEFjdGl2aXR5IiwidXNlciIsIndhaXQiLCJzdG9wIiwid2luZG93aW5nTW9kZSIsImFjdGl2aXR5VHlwZSIsImRpc3BsYXkiLCJjbWQiLCJhZGIiLCJnZXRBcGlMZXZlbCIsInNoZWxsIiwibW9iaWxlQnJvYWRjYXN0IiwicmVjZWl2ZXJQZXJtaXNzaW9uIiwiYWxsb3dCYWNrZ3JvdW5kQWN0aXZpdHlTdGFydHMiLCJtb2JpbGVTdGFydFNlcnZpY2UiLCJmb3JlZ3JvdW5kIiwibW9iaWxlU3RvcFNlcnZpY2UiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvY29tbWFuZHMvaW50ZW50LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdAYXBwaXVtL2Jhc2UtZHJpdmVyJztcblxuY29uc3QgTk9fVkFMVUVfQVJHX1RZUEUgPSAnc24nO1xuY29uc3QgU1VQUE9SVEVEX0VYVFJBX1RZUEVTID0gW1xuICAncycsIE5PX1ZBTFVFX0FSR19UWVBFLCAneicsICdpJywgJ2wnLCAnZicsICd1JywgJ2NuJyxcbiAgJ2lhJywgJ2lhbCcsICdsYScsICdsYWwnLCAnZmEnLCAnZmFsJywgJ3NhJywgJ3NhbCcsXG5dO1xuY29uc3QgQVBJX0xFVkVMX0FORFJPSURfOCA9IDI2O1xuXG5jb25zdCBjb21tYW5kcyA9IHt9O1xuXG5mdW5jdGlvbiBwYXJzZUludGVudFNwZWMgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgaW50ZW50LFxuICAgIGFjdGlvbixcbiAgICB1cmksXG4gICAgbWltZVR5cGUsXG4gICAgaWRlbnRpZmllcixcbiAgICBjYXRlZ29yaWVzLFxuICAgIGNvbXBvbmVudCxcbiAgICBleHRyYXMsXG4gICAgZmxhZ3MsXG4gIH0gPSBvcHRzO1xuICBjb25zdCByZXN1bHRBcmdzID0gW107XG4gIGlmIChpbnRlbnQpIHtcbiAgICByZXN1bHRBcmdzLnB1c2goaW50ZW50KTtcbiAgfVxuICBpZiAoYWN0aW9uKSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctYScsIGFjdGlvbik7XG4gIH1cbiAgaWYgKHVyaSkge1xuICAgIHJlc3VsdEFyZ3MucHVzaCgnLWQnLCB1cmkpO1xuICB9XG4gIGlmIChtaW1lVHlwZSkge1xuICAgIHJlc3VsdEFyZ3MucHVzaCgnLXQnLCBtaW1lVHlwZSk7XG4gIH1cbiAgaWYgKCFfLmlzTmlsKGlkZW50aWZpZXIpKSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctaScsIGlkZW50aWZpZXIpO1xuICB9XG4gIGlmIChjYXRlZ29yaWVzKSB7XG4gICAgaWYgKF8uaXNBcnJheShjYXRlZ29yaWVzKSkge1xuICAgICAgcmVzdWx0QXJncy5wdXNoKC4uLihfLmZsYXRNYXAoY2F0ZWdvcmllcy5tYXAoKGNOYW1lKSA9PiBbJy1jJywgY05hbWVdKSkpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0QXJncy5wdXNoKCctYycsIGNhdGVnb3JpZXMpO1xuICAgIH1cbiAgfVxuICBpZiAoY29tcG9uZW50KSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctbicsIGNvbXBvbmVudCk7XG4gIH1cbiAgaWYgKG9wdHMucGFja2FnZSkge1xuICAgIHJlc3VsdEFyZ3MucHVzaCgnLXAnLCBvcHRzLnBhY2thZ2UpO1xuICB9XG4gIGlmIChleHRyYXMpIHtcbiAgICBpZiAoIV8uaXNBcnJheShleHRyYXMpKSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGAnZXh0cmFzJyBtdXN0IGJlIGFuIGFycmF5YCk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgaXRlbSBvZiBleHRyYXMpIHtcbiAgICAgIGlmICghXy5pc0FycmF5KGl0ZW0pKSB7XG4gICAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYEV4dHJhIGFyZ3VtZW50ICcke2l0ZW19JyBtdXN0IGJlIGFuIGFycmF5YCk7XG4gICAgICB9XG4gICAgICBjb25zdCBbdHlwZSwga2V5LCB2YWx1ZV0gPSBpdGVtO1xuICAgICAgaWYgKCFfLmluY2x1ZGVzKFNVUFBPUlRFRF9FWFRSQV9UWVBFUywgdHlwZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICAgICBgRXh0cmEgYXJndW1lbnQgdHlwZSAnJHt0eXBlfScgaXMgbm90IGtub3duLiBgICtcbiAgICAgICAgICBgU3VwcG9ydGVkIGludGVudCBhcmd1bWVudCB0eXBlcyBhcmU6ICR7U1VQUE9SVEVEX0VYVFJBX1RZUEVTfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChfLmlzRW1wdHkoa2V5KSB8fCAoXy5pc1N0cmluZyhrZXkpICYmIF8udHJpbShrZXkpID09PSAnJykpIHtcbiAgICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICAgICBgRXh0cmEgYXJndW1lbnQncyBrZXkgaW4gJyR7SlNPTi5zdHJpbmdpZnkoaXRlbSl9JyBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nIGlkZW50aWZpZXJgXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAodHlwZSA9PT0gTk9fVkFMVUVfQVJHX1RZUEUpIHtcbiAgICAgICAgcmVzdWx0QXJncy5wdXNoKGAtLWUke3R5cGV9YCwga2V5KTtcbiAgICAgIH0gZWxzZSBpZiAoXy5pc1VuZGVmaW5lZCh2YWx1ZSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IGVycm9ycy5JbnZhbGlkQXJndW1lbnRFcnJvcihcbiAgICAgICAgICBgSW50ZW50IGFyZ3VtZW50IHR5cGUgJyR7dHlwZX0nIGluICcke0pTT04uc3RyaW5naWZ5KGl0ZW0pfScgcmVxdWlyZXMgYSBgICtcbiAgICAgICAgICBgdmFsaWQgdmFsdWUgdG8gYmUgcHJvdmlkZWRgXG4gICAgICAgICk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXN1bHRBcmdzLnB1c2goYC0tZSR7dHlwZX1gLCBrZXksIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKGZsYWdzKSB7XG4gICAgcmVzdWx0QXJncy5wdXNoKCctZicsIGZsYWdzKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0QXJncztcbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBTdGFydEFjdGl2aXR5T3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfG51bWJlcn0gdXNlciBbJ2N1cnJlbnQnXSAtIFRoZSB1c2VyIElEIGZvciB3aGljaCB0aGUgc2VydmljZSBpcyBzdGFydGVkLlxuICogVGhlIGBjdXJyZW50YCB1c2VyIGlkIGlzIHVzZWQgYnkgZGVmYXVsdFxuICogQHByb3BlcnR5IHs/Ym9vbGVhbn0gd2FpdCBbZmFsc2VdIC0gU2V0IGl0IHRvIGB0cnVlYCBpZiB5b3Ugd2FudCB0byBibG9jayB0aGUgbWV0aG9kIGNhbGxcbiAqIHVudGlsIHRoZSBhY3Rpdml0eSBtYW5hZ2VyJ3MgcHJvY2VzcyByZXR1cm5zIHRoZSBjb250cm9sIHRvIHRoZSBzeXN0ZW0uXG4gKiBAcHJvcGVydHkgez9ib29sZWFufSBzdG9wIFtmYWxzZV0gLSBTZXQgaXQgdG8gYHRydWVgIHRvIGZvcmNlIHN0b3AgdGhlIHRhcmdldFxuICogYXBwIGJlZm9yZSBzdGFydGluZyB0aGUgYWN0aXZpdHlcbiAqIEBwcm9wZXJ0eSB7P251bWJlcnxzdHJpbmd9IHdpbmRvd2luZ01vZGUgLSBUaGUgd2luZG93aW5nIG1vZGUgdG8gbGF1bmNoIHRoZSBhY3Rpdml0eSBpbnRvLlxuICogQ2hlY2sgaHR0cHM6Ly9hbmRyb2lkLmdvb2dsZXNvdXJjZS5jb20vcGxhdGZvcm0vZnJhbWV3b3Jrcy9iYXNlLysvbWFzdGVyL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9XaW5kb3dDb25maWd1cmF0aW9uLmphdmFcbiAqIGZvciBtb3JlIGRldGFpbHMgb24gcG9zc2libGUgd2luZG93aW5nIG1vZGVzIChjb25zdGFudHMgc3RhcnRpbmcgd2l0aCBgV0lORE9XSU5HX01PREVfYCkuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ8c3RyaW5nfSBhY3Rpdml0eVR5cGUgLSBUaGUgYWN0aXZpdHkgdHlwZSB0byBsYXVuY2ggdGhlIGFjdGl2aXR5IGFzLlxuICogQ2hlY2sgaHR0cHM6Ly9hbmRyb2lkLmdvb2dsZXNvdXJjZS5jb20vcGxhdGZvcm0vZnJhbWV3b3Jrcy9iYXNlLysvbWFzdGVyL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9XaW5kb3dDb25maWd1cmF0aW9uLmphdmFcbiAqIGZvciBtb3JlIGRldGFpbHMgb24gcG9zc2libGUgYWN0aXZpdHkgdHlwZXMgKGNvbnN0YW50cyBzdGFydGluZyB3aXRoIGBBQ1RJVklUWV9UWVBFX2ApLlxuICogQHByb3BlcnR5IHs/bnVtYmVyfHN0cmluZ30gZGlzcGxheSAtIFRoZSBkaXNwbGF5IGlkZW50aWZpZXIgdG8gbGF1bmNoIHRoZSBhY3Rpdml0eSBpbnRvLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBpbnRlbnQgLSBUaGUgbmFtZSBvZiB0aGUgYWN0aXZpdHkgaW50ZW50IHRvIHN0YXJ0LCBmb3IgZXhhbXBsZVxuICogYGNvbS5zb21lLnBhY2thZ2UubmFtZS8uWW91clNlcnZpY2VTdWJDbGFzc05hbWVgXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGFjdGlvbiAtIEFjdGlvbiBuYW1lXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHBhY2thZ2UgLSBQYWNrYWdlIG5hbWVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gdXJpIC0gVW5pZmllZCByZXNvdXJjZSBpZGVudGlmaWVyXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IG1pbWVUeXBlIC0gTWltZSB0eXBlXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGlkZW50aWZpZXIgLSBPcHRpb25hbCBpZGVudGlmaWVyXG4gKiBAcHJvcGVydHkgez9zdHJpbmd8QXJyYXk8c3RyaW5nPn0gY2F0ZWdvcmllcyAtIE9uZSBvciBtb3JlIGNhdGVnb3J5IG5hbWVzXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGNvbXBvbmVudCAtIENvbXBvbmVudCBuYW1lXG4gKiBAcHJvcGVydHkge0FycmF5PHN0cmluZ3xBcnJheTxzdHJpbmc+Pn0gZXh0cmFzIC0gT3B0aW9uYWwgaW50ZW50IGFyZ3VtZW50cy4gTXVzdCBiZSByZXByZXNlbnRlZFxuICogYXMgYXJyYXkgb2YgYXJyYXlzLCB3aGVyZSBlYWNoIHN1YmFycmF5IGl0ZW0gY29udGFpbnMgdHdvIG9yIHRocmVlIHN0cmluZyBpdGVtczpcbiAqIHZhbHVlIHR5cGUsIGtleSBuYW1lIGFuZCB0aGUgdmFsdWUgaXRzZWxmLlxuICogU3VwcG9ydGVkIHZhbHVlIHR5cGVzIGFyZTpcbiAqIC0gczogc3RyaW5nLiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nXG4gKiAtIHNuOiBudWxsLiBWYWx1ZSBpcyBpZ25vcmVkIGZvciB0aGlzIHR5cGVcbiAqIC0gejogYm9vbGVhbi4gVmFsdWUgbXVzdCBiZSBlaXRoZXIgYHRydWVgIG9yIGBmYWxzZWBcbiAqIC0gaTogaW50ZWdlci4gVmFsdWUgbXVzdCBiZSBhIHZhbGlkIDQtYnl0ZSBpbnRlZ2VyIG51bWJlclxuICogLSBsOiBsb25nLiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgOC1ieXRlIGxvbmcgbnVtYmVyXG4gKiAtIGY6IGZsb2F0OiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgZmxvYXQgbnVtYmVyXG4gKiAtIHU6IHVyaS4gVmFsdWUgbXVzdCBiZSBhIHZhbGlkIHVuaWZvcm0gcmVzb3VyY2UgaWRlbnRpZmllciBzdHJpbmdcbiAqIC0gY246IGNvbXBvbmVudCBuYW1lLiBWYWx1ZSBtdXN0IGJlIGEgdmFsaWQgY29tcG9uZW50IG5hbWUgc3RyaW5nXG4gKiAtIGlhOiBJbnRlZ2VyW10uIFZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2YgY29tbWEtc2VwYXJhdGVkIGludGVnZXJzXG4gKiAtIGlhbDogTGlzdDxJbnRlZ2VyPi4gVmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQgaW50ZWdlcnNcbiAqIC0gbGE6IExvbmdbXS4gVmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQgbG9uZyBudW1iZXJzXG4gKiAtIGxhbDogTGlzdDxMb25nPi4gVmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvZiBjb21tYS1zZXBhcmF0ZWQgbG9uZyBudW1iZXJzXG4gKiAtIGZhOiBGbG9hdFtdLiBWYWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9mIGNvbW1hLXNlcGFyYXRlZCBmbG9hdCBudW1iZXJzXG4gKiAtIGZhbDogTGlzdDxGbG9hdD4uIFZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2YgY29tbWEtc2VwYXJhdGVkIGZsb2F0IG51bWJlcnNcbiAqIC0gc2E6IFN0cmluZ1tdLiBWYWx1ZSBtdXN0IGJlIGNvbW1hLXNlcGFyYXRlZCBzdHJpbmdzLiBUbyBlbWJlZCBhIGNvbW1hIGludG8gYSBzdHJpbmcsXG4gKiBlc2NhcGUgaXQgdXNpbmcgXCJcXCxcIlxuICogLSBzYWw6IExpc3Q8U3RyaW5nPi4gVmFsdWUgbXVzdCBiZSBjb21tYS1zZXBhcmF0ZWQgc3RyaW5ncy4gVG8gZW1iZWQgYSBjb21tYSBpbnRvIGEgc3RyaW5nLFxuICogZXNjYXBlIGl0IHVzaW5nIFwiXFwsXCJcbiAqIEZvciBleGFtcGxlOiBbWydzJywgJ3Zhck5hbWUxJywgJ015IFN0cmluZzEnXSwgWydzJywgJ3Zhck5hbWUyJywgJ015IFN0cmluZzInXSwgWydpYScsICdhcnJOYW1lJywgJzEsMiwzLDQnXV1cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZmxhZ3MgLSBJbnRlbnQgc3RhcnR1cC1zcGVjaWZpYyBmbGFncyBhcyBhIGhleGFkZWNpbWFsIHN0cmluZy5cbiAqIFNlZSBodHRwczovL2RldmVsb3Blci5hbmRyb2lkLmNvbS9yZWZlcmVuY2UvYW5kcm9pZC9jb250ZW50L0ludGVudC5odG1sXG4gKiBmb3IgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGZsYWcgdmFsdWVzIChjb25zdGFudHMgc3RhcnRpbmcgd2l0aCBGTEFHX0FDVElWSVRZXykuXG4gKiBGbGFnIHZhbHVlcyBjb3VsZCBiZSBtZXJnZWQgdXNpbmcgdGhlIGxvZ2ljYWwgJ29yJyBvcGVyYXRpb24uXG4gKiBGb3IgZXhhbXBsZSwgMHgxMDIwMDAwMCBpcyB0aGUgY29tYmluYXRpb24gb2YgdHdvIGZsYWdzOlxuICogMHgxMDAwMDAwMCBgRkxBR19BQ1RJVklUWV9ORVdfVEFTS2AgfCAweDAwMjAwMDAwIGBGTEFHX0FDVElWSVRZX1JFU0VUX1RBU0tfSUZfTkVFREVEYFxuICovXG5cbi8qKlxuICogU3RhcnRzIHRoZSBnaXZlbiBhY3Rpdml0eSBpbnRlbnQuXG4gKlxuICogQHBhcmFtIHtTdGFydEFjdGl2aXR5T3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbW1hbmQgb3V0cHV0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSBzdGFydGluZyB0aGUgYWN0aXZpdHlcbiAqIG9yIHJlcXVpcmVkIG9wdGlvbnMgYXJlIG1pc3NpbmdcbiAqL1xuY29tbWFuZHMubW9iaWxlU3RhcnRBY3Rpdml0eSA9IGFzeW5jIGZ1bmN0aW9uIG1vYmlsZVN0YXJ0QWN0aXZpdHkgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgdXNlcixcbiAgICB3YWl0LFxuICAgIHN0b3AsXG4gICAgd2luZG93aW5nTW9kZSxcbiAgICBhY3Rpdml0eVR5cGUsXG4gICAgZGlzcGxheSxcbiAgfSA9IG9wdHM7XG4gIGNvbnN0IGNtZCA9IFtcbiAgICAnYW0nLCAoYXdhaXQgdGhpcy5hZGIuZ2V0QXBpTGV2ZWwoKSA8IEFQSV9MRVZFTF9BTkRST0lEXzgpID8gJ3N0YXJ0JyA6ICdzdGFydC1hY3Rpdml0eScsXG4gIF07XG4gIGlmICghXy5pc05pbCh1c2VyKSkge1xuICAgIGNtZC5wdXNoKCctLXVzZXInLCB1c2VyKTtcbiAgfVxuICBpZiAod2FpdCkge1xuICAgIGNtZC5wdXNoKCctVycpO1xuICB9XG4gIGlmIChzdG9wKSB7XG4gICAgY21kLnB1c2goJy1TJyk7XG4gIH1cbiAgaWYgKCFfLmlzTmlsKHdpbmRvd2luZ01vZGUpKSB7XG4gICAgY21kLnB1c2goJy0td2luZG93aW5nTW9kZScsIHdpbmRvd2luZ01vZGUpO1xuICB9XG4gIGlmICghXy5pc05pbChhY3Rpdml0eVR5cGUpKSB7XG4gICAgY21kLnB1c2goJy0tYWN0aXZpdHlUeXBlJywgYWN0aXZpdHlUeXBlKTtcbiAgfVxuICBpZiAoIV8uaXNOaWwoZGlzcGxheSkpIHtcbiAgICBjbWQucHVzaCgnLS1kaXNwbGF5JywgZGlzcGxheSk7XG4gIH1cbiAgY21kLnB1c2goLi4uKHBhcnNlSW50ZW50U3BlYyhvcHRzKSkpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQnJvYWRjYXN0T3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfG51bWJlcn0gdXNlciBbJ2FsbCddIC0gVGhlIHVzZXIgSUQgZm9yIHdoaWNoIHRoZSBicm9hZGNhc3QgaXMgc2VudC5cbiAqIFRoZSBgY3VycmVudGAgYWxpYXMgYXNzdW1lcyB0aGUgY3VycmVudCB1c2VyIElELlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSByZWNlaXZlclBlcm1pc3Npb24gLSBSZXF1aXJlIHJlY2VpdmVyIHRvIGhvbGQgdGhlIGdpdmVuIHBlcm1pc3Npb24uXG4gKiBAcHJvcGVydHkgez9ib29sZWFufSBhbGxvd0JhY2tncm91bmRBY3Rpdml0eVN0YXJ0cyBbZmFsc2VdIC0gV2hldGhlciB0aGUgcmVjZWl2ZXIgbWF5XG4gKiBzdGFydCBhY3Rpdml0aWVzIGV2ZW4gaWYgaW4gdGhlIGJhY2tncm91bmQuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGludGVudCAtIFRoZSBuYW1lIG9mIHRoZSBpbnRlbnQgdG8gYnJvYWRjYXN0IHRvLCBmb3IgZXhhbXBsZVxuICogYGNvbS5zb21lLnBhY2thZ2UubmFtZS8uWW91clNlcnZpY2VTdWJDbGFzc05hbWVgLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBhY3Rpb24gLSBBY3Rpb24gbmFtZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB1cmkgLSBVbmlmaWVkIHJlc291cmNlIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbWltZVR5cGUgLSBNaW1lIHR5cGVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaWRlbnRpZmllciAtIE9wdGlvbmFsIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xBcnJheTxzdHJpbmc+fSBjYXRlZ29yaWVzIC0gT25lIG9yIG1vcmUgY2F0ZWdvcnkgbmFtZXNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gY29tcG9uZW50IC0gQ29tcG9uZW50IG5hbWVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gcGFja2FnZSAtIFBhY2thZ2UgbmFtZVxuICogQHByb3BlcnR5IHtBcnJheTxBcnJheTxzdHJpbmc+Pn0gZXh0cmFzIC0gT3B0aW9uYWwgaW50ZW50IGFyZ3VtZW50cy5cbiAqIFNlZSBhYm92ZSBmb3IgdGhlIGRldGFpbGVkIGRlc2NyaXB0aW9uLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBmbGFncyAtIEludGVudCBzdGFydHVwLXNwZWNpZmljIGZsYWdzIGFzIGEgaGV4YWRlY2ltYWwgc3RyaW5nLlxuICogU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKi9cblxuXG4vKipcbiAqIFNlbmQgYSBicm9hZGNhc3QgaW50ZW50LlxuICpcbiAqIEBwYXJhbSB7QnJvYWRjYXN0T3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbW1hbmQgb3V0cHV0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSBzdGFydGluZyB0aGUgYWN0aXZpdHlcbiAqIG9yIHJlcXVpcmVkIG9wdGlvbnMgYXJlIG1pc3NpbmdcbiAqL1xuY29tbWFuZHMubW9iaWxlQnJvYWRjYXN0ID0gYXN5bmMgZnVuY3Rpb24gbW9iaWxlQnJvYWRjYXN0IChvcHRzID0ge30pIHtcbiAgY29uc3Qge1xuICAgIHVzZXIsXG4gICAgcmVjZWl2ZXJQZXJtaXNzaW9uLFxuICAgIGFsbG93QmFja2dyb3VuZEFjdGl2aXR5U3RhcnRzLFxuICB9ID0gb3B0cztcbiAgY29uc3QgY21kID0gWydhbScsICdicm9hZGNhc3QnXTtcbiAgaWYgKCFfLmlzTmlsKHVzZXIpKSB7XG4gICAgY21kLnB1c2goJy0tdXNlcicsIHVzZXIpO1xuICB9XG4gIGlmIChyZWNlaXZlclBlcm1pc3Npb24pIHtcbiAgICBjbWQucHVzaCgnLS1yZWNlaXZlci1wZXJtaXNzaW9uJywgcmVjZWl2ZXJQZXJtaXNzaW9uKTtcbiAgfVxuICBpZiAoYWxsb3dCYWNrZ3JvdW5kQWN0aXZpdHlTdGFydHMpIHtcbiAgICBjbWQucHVzaCgnLS1hbGxvdy1iYWNrZ3JvdW5kLWFjdGl2aXR5LXN0YXJ0cycpO1xuICB9XG4gIGNtZC5wdXNoKC4uLihwYXJzZUludGVudFNwZWMob3B0cykpKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMuYWRiLnNoZWxsKGNtZCk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFN0YXJ0U2VydmljZU9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xudW1iZXJ9IHVzZXIgWydjdXJyZW50J10gLSBUaGUgdXNlciBJRCBmb3Igd2hpY2ggdGhlIHNlcnZpY2UgaXMgc3RhcnRlZC5cbiAqIFRoZSBgY3VycmVudGAgdXNlciBpZCBpcyB1c2VkIGJ5IGRlZmF1bHRcbiAqIEBwcm9wZXJ0eSB7P2Jvb2xlYW59IGZvcmVncm91bmQgW2ZhbHNlXSAtIFNldCBpdCB0byBgdHJ1ZWAgaWYgeW91ciBzZXJ2aWNlIG11c3QgYmVcbiAqIHN0YXJ0ZWQgYXMgZm9yZWdyb3VuZCBzZXJ2aWNlLiBUaGlzIG9wdGlvbiBpcyBpZ25vcmVkIGlmIHRoZSBBUEkgbGV2ZWwgb2YgdGhlXG4gKiBkZXZpY2UgdW5kZXIgdGVzdCBpcyBiZWxvdyAyNiAoQW5kcm9pZCA4KS5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaW50ZW50IC0gVGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UgaW50ZW50IHRvIHN0YXJ0LCBmb3IgZXhhbXBsZVxuICogYGNvbS5zb21lLnBhY2thZ2UubmFtZS8uWW91clNlcnZpY2VTdWJDbGFzc05hbWVgLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBhY3Rpb24gLSBBY3Rpb24gbmFtZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSB1cmkgLSBVbmlmaWVkIHJlc291cmNlIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbWltZVR5cGUgLSBNaW1lIHR5cGVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaWRlbnRpZmllciAtIE9wdGlvbmFsIGlkZW50aWZpZXJcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ3xBcnJheTxzdHJpbmc+fSBjYXRlZ29yaWVzIC0gT25lIG9yIG1vcmUgY2F0ZWdvcnkgbmFtZXNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gY29tcG9uZW50IC0gQ29tcG9uZW50IG5hbWVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gcGFja2FnZSAtIFBhY2thZ2UgbmFtZVxuICogQHByb3BlcnR5IHtBcnJheTxBcnJheTxzdHJpbmc+Pn0gZXh0cmFzIC0gT3B0aW9uYWwgaW50ZW50IGFyZ3VtZW50cy5cbiAqIFNlZSBhYm92ZSBmb3IgdGhlIGRldGFpbGVkIGRlc2NyaXB0aW9uLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBmbGFncyAtIEludGVudCBzdGFydHVwLXNwZWNpZmljIGZsYWdzIGFzIGEgaGV4YWRlY2ltYWwgc3RyaW5nLlxuICogU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKi9cblxuLyoqXG4gKiBTdGFydHMgdGhlIGdpdmVuIHNlcnZpY2UgaW50ZW50LlxuICpcbiAqIEBwYXJhbSB7U3RhcnRTZXJ2aWNlT3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbW1hbmQgb3V0cHV0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSBzdGFydGluZyB0aGUgc2VydmljZVxuICogb3IgcmVxdWlyZWQgb3B0aW9ucyBhcmUgbWlzc2luZ1xuICovXG5jb21tYW5kcy5tb2JpbGVTdGFydFNlcnZpY2UgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTdGFydFNlcnZpY2UgKG9wdHMgPSB7fSkge1xuICBjb25zdCB7XG4gICAgdXNlcixcbiAgICBmb3JlZ3JvdW5kLFxuICB9ID0gb3B0cztcbiAgY29uc3QgY21kID0gWydhbSddO1xuICBpZiAoYXdhaXQgdGhpcy5hZGIuZ2V0QXBpTGV2ZWwoKSA8IEFQSV9MRVZFTF9BTkRST0lEXzgpIHtcbiAgICBjbWQucHVzaCgnc3RhcnRzZXJ2aWNlJyk7XG4gIH0gZWxzZSB7XG4gICAgY21kLnB1c2goZm9yZWdyb3VuZCA/ICdzdGFydC1mb3JlZ3JvdW5kLXNlcnZpY2UnIDogJ3N0YXJ0LXNlcnZpY2UnKTtcbiAgfVxuICBpZiAoIV8uaXNOaWwodXNlcikpIHtcbiAgICBjbWQucHVzaCgnLS11c2VyJywgdXNlcik7XG4gIH1cbiAgY21kLnB1c2goLi4uKHBhcnNlSW50ZW50U3BlYyhvcHRzKSkpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU3RvcFNlcnZpY2VPcHRpb25zXG4gKiBAcHJvcGVydHkge3N0cmluZ3xudW1iZXJ9IHVzZXIgWydjdXJyZW50J10gLSBUaGUgdXNlciBJRCBmb3Igd2hpY2ggdGhlIHNlcnZpY2UgaXMgcnVubmluZy5cbiAqIFRoZSBgY3VycmVudGAgdXNlciBpZCBpcyB1c2VkIGJ5IGRlZmF1bHRcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gaW50ZW50IC0gVGhlIG5hbWUgb2YgdGhlIHNlcnZpY2UgaW50ZW50IHRvIHN0b3AsIGZvciBleGFtcGxlXG4gKiBgY29tLnNvbWUucGFja2FnZS5uYW1lLy5Zb3VyU2VydmljZVN1YkNsYXNzTmFtZWAuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGFjdGlvbiAtIEFjdGlvbiBuYW1lXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHVyaSAtIFVuaWZpZWQgcmVzb3VyY2UgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBtaW1lVHlwZSAtIE1pbWUgdHlwZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBpZGVudGlmaWVyIC0gT3B0aW9uYWwgaWRlbnRpZmllclxuICogQHByb3BlcnR5IHs/c3RyaW5nfEFycmF5PHN0cmluZz59IGNhdGVnb3JpZXMgLSBPbmUgb3IgbW9yZSBjYXRlZ29yeSBuYW1lc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBjb21wb25lbnQgLSBDb21wb25lbnQgbmFtZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBwYWNrYWdlIC0gUGFja2FnZSBuYW1lXG4gKiBAcHJvcGVydHkge0FycmF5PEFycmF5PHN0cmluZz4+fSBleHRyYXMgLSBPcHRpb25hbCBpbnRlbnQgYXJndW1lbnRzLlxuICogU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGZsYWdzIC0gU2VlIGFib3ZlIGZvciB0aGUgZGV0YWlsZWQgZGVzY3JpcHRpb24uXG4gKi9cblxuLyoqXG4gKiBTdG9wcyB0aGUgZ2l2ZW4gc2VydmljZSBpbnRlbnQuXG4gKlxuICogQHBhcmFtIHtTdG9wU2VydmljZU9wdGlvbnN9IG9wdHNcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBjb21tYW5kIG91dHB1dFxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZXJlIHdhcyBhIGZhaWx1cmUgd2hpbGUgc3RvcHBpbmcgdGhlIHNlcnZpY2VcbiAqIG9yIHJlcXVpcmVkIG9wdGlvbnMgYXJlIG1pc3NpbmdcbiAqL1xuY29tbWFuZHMubW9iaWxlU3RvcFNlcnZpY2UgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVTdG9wU2VydmljZSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICB1c2VyLFxuICB9ID0gb3B0cztcbiAgY29uc3QgY21kID0gW1xuICAgICdhbScsXG4gICAgKGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCkgPCBBUElfTEVWRUxfQU5EUk9JRF84KSA/ICdzdG9wc2VydmljZScgOiAnc3RvcC1zZXJ2aWNlJ1xuICBdO1xuICBpZiAoIV8uaXNOaWwodXNlcikpIHtcbiAgICBjbWQucHVzaCgnLS11c2VyJywgdXNlcik7XG4gIH1cbiAgY21kLnB1c2goLi4uKHBhcnNlSW50ZW50U3BlYyhvcHRzKSkpO1xuICByZXR1cm4gYXdhaXQgdGhpcy5hZGIuc2hlbGwoY21kKTtcbn07XG5cblxuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUVBLE1BQU1BLGlCQUFpQixHQUFHLElBQTFC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