appium-adb 9.2.3 → 9.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -394,4 +394,4 @@ var _default = emuMethods;
394
394
  exports.default = _default;require('source-map-support').install();
395
395
 
396
396
 
397
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL3Rvb2xzL2FkYi1lbXUtY29tbWFuZHMuanMiLCJuYW1lcyI6WyJQSE9ORV9OVU1CRVJfUEFUVEVSTiIsImVtdU1ldGhvZHMiLCJQT1dFUl9BQ19TVEFURVMiLCJPYmplY3QiLCJmcmVlemUiLCJQT1dFUl9BQ19PTiIsIlBPV0VSX0FDX09GRiIsIkdTTV9DQUxMX0FDVElPTlMiLCJHU01fQ0FMTCIsIkdTTV9BQ0NFUFQiLCJHU01fQ0FOQ0VMIiwiR1NNX0hPTEQiLCJHU01fVk9JQ0VfU1RBVEVTIiwiR1NNX1ZPSUNFX1VOUkVHSVNURVJFRCIsIkdTTV9WT0lDRV9IT01FIiwiR1NNX1ZPSUNFX1JPQU1JTkciLCJHU01fVk9JQ0VfU0VBUkNISU5HIiwiR1NNX1ZPSUNFX0RFTklFRCIsIkdTTV9WT0lDRV9PRkYiLCJHU01fVk9JQ0VfT04iLCJHU01fU0lHTkFMX1NUUkVOR1RIUyIsIk5FVFdPUktfU1BFRUQiLCJHU00iLCJTQ1NEIiwiR1BSUyIsIkVER0UiLCJVTVRTIiwiSFNEUEEiLCJMVEUiLCJFVkRPIiwiRlVMTCIsIlNFTlNPUlMiLCJBQ0NFTEVSQVRJT04iLCJHWVJPU0NPUEUiLCJNQUdORVRJQ19GSUVMRCIsIk9SSUVOVEFUSU9OIiwiVEVNUEVSQVRVUkUiLCJQUk9YSU1JVFkiLCJMSUdIVCIsIlBSRVNTVVJFIiwiSFVNSURJVFkiLCJNQUdORVRJQ19GSUVMRF9VTkNBTElCUkFURUQiLCJHWVJPU0NPUEVfVU5DQUxJQlJBVEVEIiwiSElOR0VfQU5HTEUwIiwiSElOR0VfQU5HTEUxIiwiSElOR0VfQU5HTEUyIiwiSEVBUlRfUkFURSIsIlJHQkNfTElHSFQiLCJsaXN0RW11bGF0b3JzIiwiYXZkc1Jvb3QiLCJwcm9jZXNzIiwiZW52IiwiQU5EUk9JRF9BVkRfSE9NRSIsImdldEF2ZENvbmZpZ1BhdGhzIiwibG9nIiwid2FybiIsInByZWZzUm9vdCIsInBhdGgiLCJyZXNvbHZlIiwiZGVidWciLCJjb25maWdzIiwiZnMiLCJnbG9iIiwiY3dkIiwiYWJzb2x1dGUiLCJtYXAiLCJjb25mUGF0aCIsImF2ZE5hbWUiLCJiYXNlbmFtZSIsInNwbGl0Iiwic2xpY2UiLCJqb2luIiwibmFtZSIsImNvbmZpZyIsImZpbHRlciIsIl8iLCJ0cmltIiwiaXNFbXVsYXRvckNvbm5lY3RlZCIsImVtdWxhdG9ycyIsImdldENvbm5lY3RlZEVtdWxhdG9ycyIsImZpbmQiLCJ4IiwidWRpZCIsImN1ckRldmljZUlkIiwidmVyaWZ5RW11bGF0b3JDb25uZWN0ZWQiLCJFcnJvciIsImZpbmdlcnByaW50IiwiZmluZ2VycHJpbnRJZCIsImxldmVsIiwiZ2V0QXBpTGV2ZWwiLCJhZGJFeGVjRW11Iiwicm90YXRlIiwicG93ZXJBQyIsInN0YXRlIiwidmFsdWVzIiwiaW5kZXhPZiIsIlR5cGVFcnJvciIsInNlbnNvclNldCIsInNlbnNvciIsInZhbHVlIiwiaW5jbHVkZXMiLCJpc05pbCIsInBvd2VyQ2FwYWNpdHkiLCJwZXJjZW50IiwicGFyc2VJbnQiLCJpc05hTiIsInBvd2VyT0ZGIiwic2VuZFNNUyIsInBob25lTnVtYmVyIiwibWVzc2FnZSIsInJlcGxhY2UiLCJ0ZXN0IiwiZ3NtQ2FsbCIsImFjdGlvbiIsImdzbVNpZ25hbCIsInN0cmVuZ3RoIiwiaW5mbyIsImdzbVZvaWNlIiwibmV0d29ya1NwZWVkIiwic3BlZWQiLCJleGVjRW11Q29uc29sZUNvbW1hbmQiLCJleGVjVGVsbmV0IiwiY21kIiwib3B0cyIsInBvcnQiLCJwb3J0TWF0Y2giLCJleGVjIiwiaG9zdCIsImV4ZWNUaW1lb3V0IiwiY29ublRpbWVvdXQiLCJpbml0VGltZW91dCIsInJlc2V0VGVsbmV0QXV0aFRva2VuIiwib2tGbGFnIiwibm9rRmxhZyIsImVvbCIsImNsaWVudCIsIm5ldCIsImNvbm5lY3QiLCJCIiwicmVqZWN0IiwiY29ublRpbWVvdXRPYmoiLCJzZXRUaW1lb3V0IiwiZXhlY1RpbWVvdXRPYmoiLCJpbml0VGltZW91dE9iaiIsImlzQ29tbWFuZFNlbnQiLCJzZXJ2ZXJSZXNwb25zZSIsIm9uY2UiLCJlIiwiY2xlYXJUaW1lb3V0Iiwib24iLCJjaHVuayIsInB1c2giLCJvdXRwdXQiLCJCdWZmZXIiLCJjb25jYXQiLCJ0b1N0cmluZyIsImNtZFN0ciIsImlzQXJyYXkiLCJ1dGlsIiwicXVvdGUiLCJ3cml0ZSIsImVuZCIsIm91dHB1dEFyciIsImxlbmd0aCIsImxhc3QiLCJnZXRFbXVWZXJzaW9uSW5mbyIsInByb3BzUGF0aCIsInNka1Jvb3QiLCJleGlzdHMiLCJjb250ZW50IiwicmVhZEZpbGUiLCJyZXZpc2lvbk1hdGNoIiwicmVzdWx0IiwicmV2aXNpb24iLCJidWlsZElkTWF0Y2giLCJidWlsZElkIiwiZ2V0RW11SW1hZ2VQcm9wZXJ0aWVzIiwiYXZkcyIsImF2ZCIsIm1zZyIsImlzRW1wdHkiLCJpbmkiLCJwYXJzZSIsImNoZWNrQXZkRXhpc3QiLCJzb21lIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL3Rvb2xzL2FkYi1lbXUtY29tbWFuZHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXIuanMnO1xuaW1wb3J0IHsgZ2V0QW5kcm9pZFByZWZzUm9vdCwgZGlyRXhpc3RzIH0gZnJvbSAnLi4vaGVscGVycyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IG5ldCBmcm9tICduZXQnO1xuaW1wb3J0IHsgdXRpbCwgZnMgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgaW5pIGZyb20gJ2luaSc7XG5cbmNvbnN0IFBIT05FX05VTUJFUl9QQVRURVJOID0gL15bK10/WyhdP1swLTldKlspXT9bLVxccy5dP1swLTldKlstXFxzLl0/WzAtOV17Mix9JC9pbTtcblxuY29uc3QgZW11TWV0aG9kcyA9IHt9O1xuZW11TWV0aG9kcy5QT1dFUl9BQ19TVEFURVMgPSBPYmplY3QuZnJlZXplKHtcbiAgUE9XRVJfQUNfT046ICdvbicsXG4gIFBPV0VSX0FDX09GRjogJ29mZidcbn0pO1xuZW11TWV0aG9kcy5HU01fQ0FMTF9BQ1RJT05TID0gT2JqZWN0LmZyZWV6ZSh7XG4gIEdTTV9DQUxMOiAnY2FsbCcsXG4gIEdTTV9BQ0NFUFQ6ICdhY2NlcHQnLFxuICBHU01fQ0FOQ0VMOiAnY2FuY2VsJyxcbiAgR1NNX0hPTEQ6ICdob2xkJ1xufSk7XG5lbXVNZXRob2RzLkdTTV9WT0lDRV9TVEFURVMgPSBPYmplY3QuZnJlZXplKHtcbiAgR1NNX1ZPSUNFX1VOUkVHSVNURVJFRDogJ3VucmVnaXN0ZXJlZCcsXG4gIEdTTV9WT0lDRV9IT01FOiAnaG9tZScsXG4gIEdTTV9WT0lDRV9ST0FNSU5HOiAncm9hbWluZycsXG4gIEdTTV9WT0lDRV9TRUFSQ0hJTkc6ICdzZWFyY2hpbmcnLFxuICBHU01fVk9JQ0VfREVOSUVEOiAnZGVuaWVkJyxcbiAgR1NNX1ZPSUNFX09GRjogJ29mZicsXG4gIEdTTV9WT0lDRV9PTjogJ29uJ1xufSk7XG5lbXVNZXRob2RzLkdTTV9TSUdOQUxfU1RSRU5HVEhTID0gWzAsIDEsIDIsIDMsIDRdO1xuXG5lbXVNZXRob2RzLk5FVFdPUktfU1BFRUQgPSBPYmplY3QuZnJlZXplKHtcbiAgR1NNOiAnZ3NtJywgLy8gR1NNL0NTRCAodXA6IDE0LjQsIGRvd246IDE0LjQpLlxuICBTQ1NEOiAnc2NzZCcsIC8vIEhTQ1NEICh1cDogMTQuNCwgZG93bjogNTcuNikuXG4gIEdQUlM6ICdncHJzJywgLy8gR1BSUyAodXA6IDI4LjgsIGRvd246IDU3LjYpLlxuICBFREdFOiAnZWRnZScsIC8vIEVER0UvRUdQUlMgKHVwOiA0NzMuNiwgZG93bjogNDczLjYpLlxuICBVTVRTOiAndW10cycsIC8vIFVNVFMvM0cgKHVwOiAzODQuMCwgZG93bjogMzg0LjApLlxuICBIU0RQQTogJ2hzZHBhJywgLy8gSFNEUEEgKHVwOiA1NzYwLjAsIGRvd246IDEzLDk4MC4wKS5cbiAgTFRFOiAnbHRlJywgLy8gTFRFICh1cDogNTgsMDAwLCBkb3duOiAxNzMsMDAwKS5cbiAgRVZETzogJ2V2ZG8nLCAvLyBFVkRPICh1cDogNzUsMDAwLCBkb3duOiAyODAsMDAwKS5cbiAgRlVMTDogJ2Z1bGwnIC8vIE5vIGxpbWl0LCB0aGUgZGVmYXVsdCAodXA6IDAuMCwgZG93bjogMC4wKS5cbn0pO1xuXG5lbXVNZXRob2RzLlNFTlNPUlMgPSBPYmplY3QuZnJlZXplKHtcbiAgQUNDRUxFUkFUSU9OOiAnYWNjZWxlcmF0aW9uJyxcbiAgR1lST1NDT1BFOiAnZ3lyb3Njb3BlJyxcbiAgTUFHTkVUSUNfRklFTEQ6ICdtYWduZXRpYy1maWVsZCcsXG4gIE9SSUVOVEFUSU9OOiAnb3JpZW50YXRpb24nLFxuICBURU1QRVJBVFVSRTogJ3RlbXBlcmF0dXJlJyxcbiAgUFJPWElNSVRZOiAncHJveGltaXR5JyxcbiAgTElHSFQ6ICdsaWdodCcsXG4gIFBSRVNTVVJFOiAncHJlc3N1cmUnLFxuICBIVU1JRElUWTogJ2h1bWlkaXR5JyxcbiAgTUFHTkVUSUNfRklFTERfVU5DQUxJQlJBVEVEOiAnbWFnbmV0aWMtZmllbGQtdW5jYWxpYnJhdGVkJyxcbiAgR1lST1NDT1BFX1VOQ0FMSUJSQVRFRDogJ2d5cm9zY29wZS11bmNhbGlicmF0ZWQnLFxuICBISU5HRV9BTkdMRTA6ICdoaW5nZS1hbmdsZTAnLFxuICBISU5HRV9BTkdMRTE6ICdoaW5nZS1hbmdsZTEnLFxuICBISU5HRV9BTkdMRTI6ICdoaW5nZS1hbmdsZTInLFxuICBIRUFSVF9SQVRFOiAnaGVhcnQtcmF0ZScsXG4gIFJHQkNfTElHSFQ6ICdyZ2JjLWxpZ2h0Jyxcbn0pO1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEVtdUluZm9cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBuYW1lIEVtdWxhdG9yIG5hbWUsIGZvciBleGFtcGxlIGBQaXhlbF9YTF9BUElfMzBgXG4gKiBAcHJvcGVydHkge3N0cmluZ30gY29uZmlnIEZ1bGwgcGF0aCB0byB0aGUgZW11bGF0b3IgY29uZmlnIC5pbmkgZmlsZSxcbiAqIGZvciBleGFtcGxlIGAvVXNlcnMvdXNlci8uYW5kcm9pZC9hdmQvUGl4ZWxfWExfQVBJXzMwLmluaWBcbiAqL1xuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgbGlzdCBvZiBhdmFpbGFibGUgQW5kcm9pZCBlbXVsYXRvcnNcbiAqXG4gKiBAcmV0dXJucyB7QXJyYXk8RW11SW5mbz59XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGxpc3RFbXVsYXRvcnMgKCkge1xuICBsZXQgYXZkc1Jvb3QgPSBwcm9jZXNzLmVudi5BTkRST0lEX0FWRF9IT01FO1xuICBpZiAoYXdhaXQgZGlyRXhpc3RzKGF2ZHNSb290KSkge1xuICAgIHJldHVybiBhd2FpdCBnZXRBdmRDb25maWdQYXRocyhhdmRzUm9vdCk7XG4gIH1cblxuICBpZiAoYXZkc1Jvb3QpIHtcbiAgICBsb2cud2FybihgVGhlIHZhbHVlIG9mIHRoZSBBTkRST0lEX0FWRF9IT01FIGVudmlyb25tZW50IHZhcmlhYmxlICcke2F2ZHNSb290fScgaXMgbm90IGFuIGV4aXN0aW5nIGRpcmVjdG9yeWApO1xuICB9XG5cbiAgY29uc3QgcHJlZnNSb290ID0gYXdhaXQgZ2V0QW5kcm9pZFByZWZzUm9vdCgpO1xuICBpZiAoIXByZWZzUm9vdCkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGF2ZHNSb290ID0gcGF0aC5yZXNvbHZlKHByZWZzUm9vdCwgJ2F2ZCcpO1xuICBpZiAoIWF3YWl0IGRpckV4aXN0cyhhdmRzUm9vdCkpIHtcbiAgICBsb2cuZGVidWcoYFZpcnR1YWwgZGV2aWNlcyBjb25maWcgcm9vdCAnJHthdmRzUm9vdH0nIGlzIG5vdCBhbiBleGlzdGluZyBkaXJlY3RvcnlgKTtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICByZXR1cm4gYXdhaXQgZ2V0QXZkQ29uZmlnUGF0aHMoYXZkc1Jvb3QpO1xufVxuXG4vKipcbiAqIEdldCBjb25maWd1cmF0aW9uIHBhdGhzIG9mIGFsbCB2aXJ0dWFsIGRldmljZXNcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXZkc1Jvb3QgUGF0aCB0byB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGhlIEFWRCAuaW5pIGZpbGVzXG4gKiBAcmV0dXJucyB7QXJyYXk8RW11SW5mbz59XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldEF2ZENvbmZpZ1BhdGhzIChhdmRzUm9vdCkge1xuICBjb25zdCBjb25maWdzID0gYXdhaXQgZnMuZ2xvYignKi5pbmknLCB7XG4gICAgY3dkOiBhdmRzUm9vdCxcbiAgICBhYnNvbHV0ZTogdHJ1ZSxcbiAgfSk7XG4gIHJldHVybiBjb25maWdzLm1hcCgoY29uZlBhdGgpID0+IHtcbiAgICBjb25zdCBhdmROYW1lID0gcGF0aC5iYXNlbmFtZShjb25mUGF0aCkuc3BsaXQoJy4nKS5zbGljZSgwLCAtMSkuam9pbignLicpO1xuICAgIHJldHVybiB7bmFtZTogYXZkTmFtZSwgY29uZmlnOiBjb25mUGF0aH07XG4gIH0pLmZpbHRlcigoe25hbWV9KSA9PiBfLnRyaW0obmFtZSkpO1xufVxuXG4vKipcbiAqIENoZWNrIHRoZSBlbXVsYXRvciBzdGF0ZS5cbiAqXG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIEVtdWxhdG9yIGlzIHZpc2libGUgdG8gYWRiLlxuICovXG5lbXVNZXRob2RzLmlzRW11bGF0b3JDb25uZWN0ZWQgPSBhc3luYyBmdW5jdGlvbiBpc0VtdWxhdG9yQ29ubmVjdGVkICgpIHtcbiAgbGV0IGVtdWxhdG9ycyA9IGF3YWl0IHRoaXMuZ2V0Q29ubmVjdGVkRW11bGF0b3JzKCk7XG4gIHJldHVybiAhIV8uZmluZChlbXVsYXRvcnMsICh4KSA9PiB4ICYmIHgudWRpZCA9PT0gdGhpcy5jdXJEZXZpY2VJZCk7XG59O1xuXG4vKipcbiAqIFZlcmlmeSB0aGUgZW11bGF0b3IgaXMgY29ubmVjdGVkLlxuICpcbiAqIEB0aHJvd3Mge2Vycm9yfSBJZiBFbXVsYXRvciBpcyBub3QgdmlzaWJsZSB0byBhZGIuXG4gKi9cbmVtdU1ldGhvZHMudmVyaWZ5RW11bGF0b3JDb25uZWN0ZWQgPSBhc3luYyBmdW5jdGlvbiB2ZXJpZnlFbXVsYXRvckNvbm5lY3RlZCAoKSB7XG4gIGlmICghKGF3YWl0IHRoaXMuaXNFbXVsYXRvckNvbm5lY3RlZCgpKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGVtdWxhdG9yIFwiJHt0aGlzLmN1ckRldmljZUlkfVwiIHdhcyB1bmV4cGVjdGVkbHkgZGlzY29ubmVjdGVkYCk7XG4gIH1cbn07XG5cbi8qKlxuICogRW11bGF0ZSBmaW5nZXJwcmludCB0b3VjaCBldmVudCBvbiB0aGUgY29ubmVjdGVkIGVtdWxhdG9yLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBmaW5nZXJwcmludElkIC0gVGhlIElEIG9mIHRoZSBmaW5nZXJwcmludC5cbiAqL1xuZW11TWV0aG9kcy5maW5nZXJwcmludCA9IGFzeW5jIGZ1bmN0aW9uIGZpbmdlcnByaW50IChmaW5nZXJwcmludElkKSB7XG4gIGlmICghZmluZ2VycHJpbnRJZCkge1xuICAgIHRocm93IG5ldyBFcnJvcignRmluZ2VycHJpbnQgaWQgcGFyYW1ldGVyIG11c3QgYmUgZGVmaW5lZCcpO1xuICB9XG4gIC8vIHRoZSBtZXRob2QgdXNlZCBvbmx5IHdvcmtzIGZvciBBUEkgbGV2ZWwgMjMgYW5kIGFib3ZlXG4gIGxldCBsZXZlbCA9IGF3YWl0IHRoaXMuZ2V0QXBpTGV2ZWwoKTtcbiAgaWYgKGxldmVsIDwgMjMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYERldmljZSBBUEkgTGV2ZWwgbXVzdCBiZSA+PSAyMy4gQ3VycmVudCBBcGkgbGV2ZWwgJyR7bGV2ZWx9J2ApO1xuICB9XG4gIGF3YWl0IHRoaXMuYWRiRXhlY0VtdShbJ2ZpbmdlcicsICd0b3VjaCcsIGZpbmdlcnByaW50SWRdKTtcbn07XG5cbi8qKlxuICogQ2hhbmdlIHRoZSBkaXNwbGF5IG9yaWVudGF0aW9uIG9uIHRoZSBjb25uZWN0ZWQgZW11bGF0b3IuXG4gKiBUaGUgb3JpZW50YXRpb24gaXMgY2hhbmdlZCAoUEkvMiBpcyBhZGRlZCkgZXZlcnkgdGltZVxuICogdGhpcyBtZXRob2QgaXMgY2FsbGVkLlxuICovXG5lbXVNZXRob2RzLnJvdGF0ZSA9IGFzeW5jIGZ1bmN0aW9uIHJvdGF0ZSAoKSB7XG4gIGF3YWl0IHRoaXMuYWRiRXhlY0VtdShbJ3JvdGF0ZSddKTtcbn07XG5cbi8qKlxuICogRW11bGF0ZSBwb3dlciBzdGF0ZSBjaGFuZ2Ugb24gdGhlIGNvbm5lY3RlZCBlbXVsYXRvci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RhdGUgWydvbiddIC0gRWl0aGVyICdvbicgb3IgJ29mZicuXG4gKi9cbmVtdU1ldGhvZHMucG93ZXJBQyA9IGFzeW5jIGZ1bmN0aW9uIHBvd2VyQUMgKHN0YXRlID0gJ29uJykge1xuICBpZiAoXy52YWx1ZXMoZW11TWV0aG9kcy5QT1dFUl9BQ19TVEFURVMpLmluZGV4T2Yoc3RhdGUpID09PSAtMSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFdyb25nIHBvd2VyIEFDIHN0YXRlIHNlbnQgJyR7c3RhdGV9Jy4gYFxuICAgICAgKyBgU3VwcG9ydGVkIHZhbHVlczogJHtfLnZhbHVlcyhlbXVNZXRob2RzLlBPV0VSX0FDX1NUQVRFUyl9XWApO1xuICB9XG4gIGF3YWl0IHRoaXMuYWRiRXhlY0VtdShbJ3Bvd2VyJywgJ2FjJywgc3RhdGVdKTtcbn07XG5cbi8qKlxuICogRW11bGF0ZSBzZW5zb3JzIHZhbHVlcyBvbiB0aGUgY29ubmVjdGVkIGVtdWxhdG9yLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzZW5zb3IgLSBTZW5zb3IgdHlwZSBkZWNsYXJlZCBpbiBTRU5TT1JTIGl0ZW1zLlxuICogQHBhcmFtIHtudW1iZXJ8c3RyaW5nfSB2YWx1ZSAgLSBOdW1iZXIgdG8gc2V0IGFzIHRoZSBzZW5zb3IgdmFsdWUuXG4gKiBAdGhyb3dzIHtFcnJvcn0gLSBJZiBzZW5zb3IgdHlwZSBvciBzZW5zb3IgdmFsdWUgaXMgbm90IGRlZmluZWRcbiAqL1xuZW11TWV0aG9kcy5zZW5zb3JTZXQgPSBhc3luYyBmdW5jdGlvbiBzZW5zb3JTZXQgKHNlbnNvciwgdmFsdWUpIHtcbiAgaWYgKCFfLmluY2x1ZGVzKGVtdU1ldGhvZHMuU0VOU09SUywgc2Vuc29yKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYFVuc3VwcG9ydGVkIHNlbnNvciBzZW50ICcke3NlbnNvcn0nLiBgXG4gICAgICArIGBTdXBwb3J0ZWQgdmFsdWVzOiAke18udmFsdWVzKGVtdU1ldGhvZHMuU0VOU09SUyl9XWApO1xuICB9XG4gIGlmIChfLmlzTmlsKHZhbHVlKSB8fCB2YWx1ZSA9PT0gJycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBNaXNzaW5nL2ludmFsaWQgc2Vuc29yIHZhbHVlIGFyZ3VtZW50LiBgXG4gICAgICArIGBZb3UgbmVlZCB0byBwcm92aWRlIGEgdmFsaWQgdmFsdWUgdG8gc2V0IHRvIHRoZSBzZW5zb3IgaW4gYFxuICAgICAgKyBgZm9ybWF0IDx2YWx1ZS1hPls6PHZhbHVlLWI+Wzo8dmFsdWUtYz5bLi4uXV1dLmApO1xuICB9XG4gIGF3YWl0IHRoaXMuYWRiRXhlY0VtdShbJ3NlbnNvcicsICdzZXQnLCBzZW5zb3IsIHZhbHVlXSk7XG59O1xuXG4vKipcbiAqIEVtdWxhdGUgcG93ZXIgY2FwYWNpdHkgY2hhbmdlIG9uIHRoZSBjb25uZWN0ZWQgZW11bGF0b3IuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSBwZXJjZW50IFsxMDBdIC0gUGVyY2VudGFnZSB2YWx1ZSBpbiByYW5nZSBbMCwgMTAwXS5cbiAqL1xuZW11TWV0aG9kcy5wb3dlckNhcGFjaXR5ID0gYXN5bmMgZnVuY3Rpb24gcG93ZXJDYXBhY2l0eSAocGVyY2VudCA9IDEwMCkge1xuICBwZXJjZW50ID0gcGFyc2VJbnQocGVyY2VudCwgMTApO1xuICBpZiAoaXNOYU4ocGVyY2VudCkgfHwgcGVyY2VudCA8IDAgfHwgcGVyY2VudCA+IDEwMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVGhlIHBlcmNlbnRhZ2UgdmFsdWUgc2hvdWxkIGJlIHZhbGlkIGludGVnZXIgYmV0d2VlbiAwIGFuZCAxMDBgKTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYkV4ZWNFbXUoWydwb3dlcicsICdjYXBhY2l0eScsIHBlcmNlbnRdKTtcbn07XG5cbi8qKlxuICogRW11bGF0ZSBwb3dlciBvZmYgZXZlbnQgb24gdGhlIGNvbm5lY3RlZCBlbXVsYXRvci5cbiAqL1xuZW11TWV0aG9kcy5wb3dlck9GRiA9IGFzeW5jIGZ1bmN0aW9uIHBvd2VyT0ZGICgpIHtcbiAgYXdhaXQgdGhpcy5wb3dlckFDKGVtdU1ldGhvZHMuUE9XRVJfQUNfU1RBVEVTLlBPV0VSX0FDX09GRik7XG4gIGF3YWl0IHRoaXMucG93ZXJDYXBhY2l0eSgwKTtcbn07XG5cbi8qKlxuICogRW11bGF0ZSBzZW5kIFNNUyBldmVudCBvbiB0aGUgY29ubmVjdGVkIGVtdWxhdG9yLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gcGhvbmVOdW1iZXIgLSBUaGUgcGhvbmUgbnVtYmVyIG9mIG1lc3NhZ2Ugc2VuZGVyLlxuICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgWycnXSAtIFRoZSBtZXNzYWdlIGNvbnRlbnQuXG4gKiBAdGhyb3dzIHtlcnJvcn0gSWYgcGhvbmUgbnVtYmVyIGhhcyBpbnZhbGlkIGZvcm1hdC5cbiAqL1xuZW11TWV0aG9kcy5zZW5kU01TID0gYXN5bmMgZnVuY3Rpb24gc2VuZFNNUyAocGhvbmVOdW1iZXIsIG1lc3NhZ2UgPSAnJykge1xuICBtZXNzYWdlID0gbWVzc2FnZS50cmltKCk7XG4gIGlmIChtZXNzYWdlID09PSAnJykge1xuICAgIHRocm93IG5ldyBFcnJvcignU2VuZGluZyBhbiBTTVMgcmVxdWlyZXMgYSBtZXNzYWdlJyk7XG4gIH1cbiAgcGhvbmVOdW1iZXIgPSBgJHtwaG9uZU51bWJlcn1gLnJlcGxhY2UoL1xccyovLCAnJyk7XG4gIGlmICghUEhPTkVfTlVNQkVSX1BBVFRFUk4udGVzdChwaG9uZU51bWJlcikpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc2VuZFNNUyBwaG9uZU51bWJlciBwYXJhbSAke3Bob25lTnVtYmVyfWApO1xuICB9XG4gIGF3YWl0IHRoaXMuYWRiRXhlY0VtdShbJ3NtcycsICdzZW5kJywgcGhvbmVOdW1iZXIsIG1lc3NhZ2VdKTtcbn07XG5cbi8qKlxuICogRW11bGF0ZSBHU00gY2FsbCBldmVudCBvbiB0aGUgY29ubmVjdGVkIGVtdWxhdG9yLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gcGhvbmVOdW1iZXIgLSBUaGUgcGhvbmUgbnVtYmVyIG9mIHRoZSBjYWxsZXIuXG4gKiBAcGFyYW0ge3N0cmluZ30gYWN0aW9uIFsnJ10gLSBPbmUgb2YgYXZhaWxhYmxlIEdTTSBjYWxsIGFjdGlvbnMuXG4gKiBAdGhyb3dzIHtlcnJvcn0gSWYgcGhvbmUgbnVtYmVyIGhhcyBpbnZhbGlkIGZvcm1hdC5cbiAqIEB0aHJvd3Mge2Vycm9yfSBJZiBfYWN0aW9uXyB2YWx1ZSBpcyBpbnZhbGlkLlxuICovXG5lbXVNZXRob2RzLmdzbUNhbGwgPSBhc3luYyBmdW5jdGlvbiBnc21DYWxsIChwaG9uZU51bWJlciwgYWN0aW9uID0gJycpIHtcbiAgaWYgKF8udmFsdWVzKGVtdU1ldGhvZHMuR1NNX0NBTExfQUNUSU9OUykuaW5kZXhPZihhY3Rpb24pID09PSAtMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBnc20gYWN0aW9uIHBhcmFtICR7YWN0aW9ufS4gU3VwcG9ydGVkIHZhbHVlczogJHtfLnZhbHVlcyhlbXVNZXRob2RzLkdTTV9DQUxMX0FDVElPTlMpfWApO1xuICB9XG4gIHBob25lTnVtYmVyID0gYCR7cGhvbmVOdW1iZXJ9YC5yZXBsYWNlKC9cXHMqLywgJycpO1xuICBpZiAoIVBIT05FX05VTUJFUl9QQVRURVJOLnRlc3QocGhvbmVOdW1iZXIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGdzbUNhbGwgcGhvbmVOdW1iZXIgcGFyYW0gJHtwaG9uZU51bWJlcn1gKTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYkV4ZWNFbXUoWydnc20nLCBhY3Rpb24sIHBob25lTnVtYmVyXSk7XG59O1xuXG4vKipcbiAqIEVtdWxhdGUgR1NNIHNpZ25hbCBzdHJlbmd0aCBjaGFuZ2UgZXZlbnQgb24gdGhlIGNvbm5lY3RlZCBlbXVsYXRvci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IHN0cmVuZ3RoIFs0XSAtIEEgbnVtYmVyIGluIHJhbmdlIFswLCA0XTtcbiAqIEB0aHJvd3Mge2Vycm9yfSBJZiBfc3RyZW5ndGhfIHZhbHVlIGlzIGludmFsaWQuXG4gKi9cbmVtdU1ldGhvZHMuZ3NtU2lnbmFsID0gYXN5bmMgZnVuY3Rpb24gZ3NtU2lnbmFsIChzdHJlbmd0aCA9IDQpIHtcbiAgc3RyZW5ndGggPSBwYXJzZUludChzdHJlbmd0aCwgMTApO1xuICBpZiAoZW11TWV0aG9kcy5HU01fU0lHTkFMX1NUUkVOR1RIUy5pbmRleE9mKHN0cmVuZ3RoKSA9PT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc2lnbmFsIHN0cmVuZ3RoIHBhcmFtICR7c3RyZW5ndGh9LiBTdXBwb3J0ZWQgdmFsdWVzOiAke18udmFsdWVzKGVtdU1ldGhvZHMuR1NNX1NJR05BTF9TVFJFTkdUSFMpfWApO1xuICB9XG4gIGxvZy5pbmZvKCdnc20gc2lnbmFsLXByb2ZpbGUgPHN0cmVuZ3RoPiBjaGFuZ2VzIHRoZSByZXBvcnRlZCBzdHJlbmd0aCBvbiBuZXh0ICgxNXMpIHVwZGF0ZS4nKTtcbiAgYXdhaXQgdGhpcy5hZGJFeGVjRW11KFsnZ3NtJywgJ3NpZ25hbC1wcm9maWxlJywgc3RyZW5ndGhdKTtcbn07XG5cbi8qKlxuICogRW11bGF0ZSBHU00gdm9pY2UgZXZlbnQgb24gdGhlIGNvbm5lY3RlZCBlbXVsYXRvci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RhdGUgWydvbiddIC0gRWl0aGVyICdvbicgb3IgJ29mZicuXG4gKiBAdGhyb3dzIHtlcnJvcn0gSWYgX3N0YXRlXyB2YWx1ZSBpcyBpbnZhbGlkLlxuICovXG5lbXVNZXRob2RzLmdzbVZvaWNlID0gYXN5bmMgZnVuY3Rpb24gZ3NtVm9pY2UgKHN0YXRlID0gJ29uJykge1xuICAvLyBnc20gdm9pY2UgPHN0YXRlPiBhbGxvd3MgeW91IHRvIGNoYW5nZSB0aGUgc3RhdGUgb2YgeW91ciBHUFJTIGNvbm5lY3Rpb25cbiAgaWYgKF8udmFsdWVzKGVtdU1ldGhvZHMuR1NNX1ZPSUNFX1NUQVRFUykuaW5kZXhPZihzdGF0ZSkgPT09IC0xKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGdzbSB2b2ljZSBzdGF0ZSBwYXJhbSAke3N0YXRlfS4gU3VwcG9ydGVkIHZhbHVlczogJHtfLnZhbHVlcyhlbXVNZXRob2RzLkdTTV9WT0lDRV9TVEFURVMpfWApO1xuICB9XG4gIGF3YWl0IHRoaXMuYWRiRXhlY0VtdShbJ2dzbScsICd2b2ljZScsIHN0YXRlXSk7XG59O1xuXG4vKipcbiAqIEVtdWxhdGUgbmV0d29yayBzcGVlZCBjaGFuZ2UgZXZlbnQgb24gdGhlIGNvbm5lY3RlZCBlbXVsYXRvci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3BlZWQgWydmdWxsJ10gLSBPbmUgb2YgcG9zc2libGUgTkVUV09SS19TUEVFRCB2YWx1ZXMuXG4gKiBAdGhyb3dzIHtlcnJvcn0gSWYgX3NwZWVkXyB2YWx1ZSBpcyBpbnZhbGlkLlxuICovXG5lbXVNZXRob2RzLm5ldHdvcmtTcGVlZCA9IGFzeW5jIGZ1bmN0aW9uIG5ldHdvcmtTcGVlZCAoc3BlZWQgPSAnZnVsbCcpIHtcbiAgLy8gbmV0d29yayBzcGVlZCA8c3BlZWQ+IGFsbG93cyB5b3UgdG8gc2V0IHRoZSBuZXR3b3JrIHNwZWVkIGVtdWxhdGlvbi5cbiAgaWYgKF8udmFsdWVzKGVtdU1ldGhvZHMuTkVUV09SS19TUEVFRCkuaW5kZXhPZihzcGVlZCkgPT09IC0xKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIG5ldHdvcmsgc3BlZWQgcGFyYW0gJHtzcGVlZH0uIFN1cHBvcnRlZCB2YWx1ZXM6ICR7Xy52YWx1ZXMoZW11TWV0aG9kcy5ORVRXT1JLX1NQRUVEKX1gKTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYkV4ZWNFbXUoWyduZXR3b3JrJywgJ3NwZWVkJywgc3BlZWRdKTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gRXhlY1RlbG5ldE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBleGVjVGltZW91dCBbNjAwMDBdIEEgdGltZW91dCB1c2VkIHRvIHdhaXQgZm9yIGEgc2VydmVyXG4gKiByZXBseSB0byB0aGUgZ2l2ZW4gY29tbWFuZFxuICogQHByb3BlcnR5IHtudW1iZXJ9IGNvbm5UaW1lb3V0IFs1MDAwXSBDb25zb2xlIGNvbm5lY3Rpb24gdGltZW91dCBpbiBtaWxsaXNlY29uZHNcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBpbml0VGltZW91dCBbNTAwMF0gVGVsbmV0IGNvbnNvbGUgaW5pdGlhbGl6YXRpb24gdGltZW91dFxuICogaW4gbWlsbGlzZWNvbmRzICh0aGUgdGltZSBiZXR3ZWVuIGNvbm5lY3Rpb24gaGFwcGVucyBhbmQgdGhlIGNvbW1hbmQgcHJvbXB0XG4gKiBpcyBhdmFpbGFibGUpXG4gKiBAcHJvcGVydHkgez9udW1iZXJ8c3RyaW5nfSBwb3J0IFRoZSBlbXVsYXRvciBwb3J0IG51bWJlci4gVGhlIG1ldGhvZCB3aWxsIHRyeSB0byBwYXJzZSBpdFxuICogZnJvbSB0aGUgY3VycmVudCBkZXZpY2UgaWRlbnRpZmllciBpZiB1bnNldFxuICovXG5cbi8qKlxuICogRXhlY3V0ZXMgYSBjb21tYW5kIHRocm91Z2ggZW11bGF0b3IgdGVsbmV0IGNvbnNvbGUgaW50ZXJmYWNlIGFuZCByZXR1cm5zIGl0cyBvdXRwdXRcbiAqXG4gKiBAcGFyYW0ge0FycmF5PHN0cmluZz58c3RyaW5nfSBjbWQgLSBUaGUgYWN0dWFsIGNvbW1hbmQgdG8gZXhlY3V0ZS4gU2VlXG4gKiBodHRwczovL2RldmVsb3Blci5hbmRyb2lkLmNvbS9zdHVkaW8vcnVuL2VtdWxhdG9yLWNvbnNvbGUgZm9yIG1vcmUgZGV0YWlsc1xuICogb24gYXZhaWxhYmxlIGNvbW1hbmRzXG4gKiBAcGFyYW0ge0V4ZWNUZWxuZXRPcHRpb25zfSBvcHRzXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgY29tbWFuZCBvdXRwdXRcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgY29ubmVjdGluZyB0byB0aGUgVGVsbmV0IGNvbnNvbGVcbiAqIG9yIGlmIHRoZSBnaXZlbiBjb21tYW5kIHJldHVybmVkIG5vbi1PSyByZXNwb25zZVxuICovXG5lbXVNZXRob2RzLmV4ZWNFbXVDb25zb2xlQ29tbWFuZCA9IGFzeW5jIGZ1bmN0aW9uIGV4ZWNUZWxuZXQgKGNtZCwgb3B0cyA9IHt9KSB7XG4gIGxldCBwb3J0ID0gcGFyc2VJbnQob3B0cy5wb3J0LCAxMCk7XG4gIGlmICghcG9ydCkge1xuICAgIGNvbnN0IHBvcnRNYXRjaCA9IC9lbXVsYXRvci0oXFxkKykvaS5leGVjKHRoaXMuY3VyRGV2aWNlSWQpO1xuICAgIGlmICghcG9ydE1hdGNoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBwYXJzZSB0aGUgY29uc29sZSBwb3J0IG51bWJlciBmcm9tIHRoZSBkZXZpY2UgaWRlbnRpZmllciAnJHt0aGlzLmN1ckRldmljZUlkfScuIGAgK1xuICAgICAgICBgSXMgaXQgYW4gZW11bGF0b3I/YCk7XG4gICAgfVxuICAgIHBvcnQgPSBwYXJzZUludChwb3J0TWF0Y2hbMV0sIDEwKTtcbiAgfVxuICBjb25zdCBob3N0ID0gJzEyNy4wLjAuMSc7XG4gIGNvbnN0IHtcbiAgICBleGVjVGltZW91dCA9IDYwMDAwLFxuICAgIGNvbm5UaW1lb3V0ID0gNTAwMCxcbiAgICBpbml0VGltZW91dCA9IDUwMDAsXG4gIH0gPSBvcHRzO1xuICBhd2FpdCB0aGlzLnJlc2V0VGVsbmV0QXV0aFRva2VuKCk7XG5cbiAgY29uc3Qgb2tGbGFnID0gL15PSyQvbTtcbiAgY29uc3Qgbm9rRmxhZyA9IC9eS09cXGIvbTtcbiAgY29uc3QgZW9sID0gJ1xcclxcbic7XG4gIGNvbnN0IGNsaWVudCA9IG5ldC5jb25uZWN0KHtcbiAgICBob3N0LFxuICAgIHBvcnQsXG4gIH0pO1xuXG4gIHJldHVybiBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgY29ublRpbWVvdXRPYmogPSBzZXRUaW1lb3V0KFxuICAgICAgKCkgPT4gcmVqZWN0KG5ldyBFcnJvcihgQ2Fubm90IGNvbm5lY3QgdG8gdGhlIEVtdWxhdG9yIGNvbnNvbGUgYXQgJHtob3N0fToke3BvcnR9IGAgK1xuICAgICAgICBgYWZ0ZXIgJHtjb25uVGltZW91dH1tc2ApKSwgY29ublRpbWVvdXQpO1xuICAgIGxldCBleGVjVGltZW91dE9iajtcbiAgICBsZXQgaW5pdFRpbWVvdXRPYmo7XG4gICAgbGV0IGlzQ29tbWFuZFNlbnQgPSBmYWxzZTtcbiAgICBsZXQgc2VydmVyUmVzcG9uc2UgPSBbXTtcblxuICAgIGNsaWVudC5vbmNlKCdlcnJvcicsIChlKSA9PiB7XG4gICAgICBjbGVhclRpbWVvdXQoY29ublRpbWVvdXRPYmopO1xuICAgICAgcmVqZWN0KG5ldyBFcnJvcihgQ2Fubm90IGNvbm5lY3QgdG8gdGhlIEVtdWxhdG9yIGNvbnNvbGUgYXQgJHtob3N0fToke3BvcnR9LiBgICtcbiAgICAgICAgYE9yaWdpbmFsIGVycm9yOiAke2UubWVzc2FnZX1gKSk7XG4gICAgfSk7XG5cbiAgICBjbGllbnQub25jZSgnY29ubmVjdCcsICgpID0+IHtcbiAgICAgIGNsZWFyVGltZW91dChjb25uVGltZW91dE9iaik7XG4gICAgICBpbml0VGltZW91dE9iaiA9IHNldFRpbWVvdXQoXG4gICAgICAgICgpID0+IHJlamVjdChuZXcgRXJyb3IoYERpZCBub3QgZ2V0IHRoZSBpbml0aWFsIHJlc3BvbnNlIGZyb20gdGhlIEVtdWxhdG9yIGNvbnNvbGUgYXQgJHtob3N0fToke3BvcnR9IGAgK1xuICAgICAgICAgIGBhZnRlciAke2luaXRUaW1lb3V0fW1zYCkpLCBpbml0VGltZW91dCk7XG4gICAgfSk7XG5cbiAgICBjbGllbnQub24oJ2RhdGEnLCAoY2h1bmspID0+IHtcbiAgICAgIHNlcnZlclJlc3BvbnNlLnB1c2goY2h1bmspO1xuICAgICAgY29uc3Qgb3V0cHV0ID0gQnVmZmVyLmNvbmNhdChzZXJ2ZXJSZXNwb25zZSkudG9TdHJpbmcoJ3V0ZjgnKS50cmltKCk7XG4gICAgICBpZiAob2tGbGFnLnRlc3Qob3V0cHV0KSkge1xuICAgICAgICAvLyBUaGUgaW5pdGlhbCBpbmNvbWluZyBkYXRhIGNodW5rIGNvbmZpcm1zIHRoZSBpbnRlcmZhY2UgaXMgcmVhZHkgZm9yIGlucHV0XG4gICAgICAgIGlmICghaXNDb21tYW5kU2VudCkge1xuICAgICAgICAgIGNsZWFyVGltZW91dChpbml0VGltZW91dE9iaik7XG4gICAgICAgICAgc2VydmVyUmVzcG9uc2UgPSBbXTtcbiAgICAgICAgICBjb25zdCBjbWRTdHIgPSBfLmlzQXJyYXkoY21kKSA/IHV0aWwucXVvdGUoY21kKSA6IGAke2NtZH1gO1xuICAgICAgICAgIGxvZy5kZWJ1ZyhgRXhlY3V0aW5nIEVtdWxhdG9yIGNvbnNvbGUgY29tbWFuZDogJHtjbWRTdHJ9YCk7XG4gICAgICAgICAgY2xpZW50LndyaXRlKGNtZFN0cik7XG4gICAgICAgICAgY2xpZW50LndyaXRlKGVvbCk7XG4gICAgICAgICAgaXNDb21tYW5kU2VudCA9IHRydWU7XG4gICAgICAgICAgZXhlY1RpbWVvdXRPYmogPSBzZXRUaW1lb3V0KFxuICAgICAgICAgICAgKCkgPT4gcmVqZWN0KG5ldyBFcnJvcihgRGlkIG5vdCBnZXQgYW55IHJlc3BvbnNlIGZyb20gdGhlIEVtdWxhdG9yIGNvbnNvbGUgYXQgJHtob3N0fToke3BvcnR9IGAgK1xuICAgICAgICAgICAgICBgdG8gJyR7Y21kfScgY29tbWFuZCBhZnRlciAke2V4ZWNUaW1lb3V0fW1zYCkpLCBleGVjVGltZW91dCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNsZWFyVGltZW91dChleGVjVGltZW91dE9iaik7XG4gICAgICAgIGNsaWVudC5lbmQoKTtcbiAgICAgICAgY29uc3Qgb3V0cHV0QXJyID0gb3V0cHV0LnNwbGl0KGVvbCk7XG4gICAgICAgIC8vIHJlbW92ZSB0aGUgcmVkdW5kYW50IE9LIGZsYWcgZnJvbSB0aGUgcmVzdWx0aW5nIGNvbW1hbmQgb3V0cHV0XG4gICAgICAgIHJldHVybiByZXNvbHZlKG91dHB1dEFyci5zbGljZSgwLCBvdXRwdXRBcnIubGVuZ3RoIC0gMSkuam9pbignXFxuJykudHJpbSgpKTtcbiAgICAgIH0gZWxzZSBpZiAobm9rRmxhZy50ZXN0KG91dHB1dCkpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KGluaXRUaW1lb3V0T2JqKTtcbiAgICAgICAgY2xlYXJUaW1lb3V0KGV4ZWNUaW1lb3V0T2JqKTtcbiAgICAgICAgY2xpZW50LmVuZCgpO1xuICAgICAgICBjb25zdCBvdXRwdXRBcnIgPSBvdXRwdXQuc3BsaXQoZW9sKTtcbiAgICAgICAgcmV0dXJuIHJlamVjdChfLnRyaW0oXy5sYXN0KG91dHB1dEFycikpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEVtdVZlcnNpb25JbmZvXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHJldmlzaW9uIFRoZSBhY3R1YWwgcmV2aXNpb24gbnVtYmVyLCBmb3IgZXhhbXBsZSAnMzAuMC41J1xuICogQHByb3BlcnR5IHs/bnVtYmVyfSBidWlsZElkIFRoZSBidWlsZCBpZGVudGlmaWVyLCBmb3IgZXhhbXBsZSA2MzA2MDQ3XG4gKi9cblxuLyoqXG4gKiBSZXRyaWV2ZXMgZW11bGF0b3IgdmVyc2lvbiBmcm9tIHRoZSBmaWxlIHN5c3RlbVxuICpcbiAqIEByZXR1cm5zIHtFbXVWZXJzaW9uSW5mb30gSWYgbm8gdmVyc2lvbiBpbmZvIGNvdWxkIGJlIHBhcnNlZCB0aGVuIGFuIGVtcHR5XG4gKiBvYmplY3QgaXMgcmV0dXJuZWRcbiAqL1xuZW11TWV0aG9kcy5nZXRFbXVWZXJzaW9uSW5mbyA9IGFzeW5jIGZ1bmN0aW9uIGdldEVtdVZlcnNpb25JbmZvICgpIHtcbiAgY29uc3QgcHJvcHNQYXRoID0gcGF0aC5qb2luKHRoaXMuc2RrUm9vdCwgJ2VtdWxhdG9yJywgJ3NvdXJjZS5wcm9wZXJ0aWVzJyk7XG4gIGlmICghYXdhaXQgZnMuZXhpc3RzKHByb3BzUGF0aCkpIHtcbiAgICByZXR1cm4ge307XG4gIH1cblxuICBjb25zdCBjb250ZW50ID0gYXdhaXQgZnMucmVhZEZpbGUocHJvcHNQYXRoLCAndXRmOCcpO1xuICBjb25zdCByZXZpc2lvbk1hdGNoID0gL15Qa2dcXC5SZXZpc2lvbj0oW1xcZC5dKykkL20uZXhlYyhjb250ZW50KTtcbiAgY29uc3QgcmVzdWx0ID0ge307XG4gIGlmIChyZXZpc2lvbk1hdGNoKSB7XG4gICAgcmVzdWx0LnJldmlzaW9uID0gcmV2aXNpb25NYXRjaFsxXTtcbiAgfVxuICBjb25zdCBidWlsZElkTWF0Y2ggPSAvXlBrZ1xcLkJ1aWxkSWQ9KFxcZCspJC9tLmV4ZWMoY29udGVudCk7XG4gIGlmIChidWlsZElkTWF0Y2gpIHtcbiAgICByZXN1bHQuYnVpbGRJZCA9IHBhcnNlSW50KGJ1aWxkSWRNYXRjaFsxXSwgMTApO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuXG4vKipcbiAqIFJldHJpZXZlcyBlbXVsYXRvciBpbWFnZSBwcm9wZXJ0aWVzIGZyb20gdGhlIGxvY2FsIGZpbGUgc3lzdGVtXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGF2ZE5hbWUgRW11bGF0b3IgbmFtZS4gU2hvdWxkIE5PVCBzdGFydCB3aXRoICdAJyBjaGFyYWN0ZXJcbiAqIEB0aHJvd3Mge0Vycm9yfSBpZiB0aGVyZSB3YXMgYSBmYWlsdXJlIHdoaWxlIGV4dHJhY3RpbmcgdGhlIHByb3BlcnRpZXNcbiAqIEByZXR1cm5zIHtPYmplY3R9IFRoZSBjb250ZW50IG9mIGVtdWxhdG9yIGltYWdlIHByb3BlcnRpZXMgZmlsZS5cbiAqIFVzdWFsbHkgdGhpcyBjb25maWd1cmF0aW9uIC5pbmkgZmlsZSBoYXMgdGhlIGZvbGxvd2luZyBjb250ZW50OlxuICogICBhdmQuaW5pLmVuY29kaW5nPVVURi04XG4gKiAgIHBhdGg9L1VzZXJzL3VzZXJuYW1lLy5hbmRyb2lkL2F2ZC9QaXhlbF9YTF9BUElfMzAuYXZkXG4gKiAgIHBhdGgucmVsPWF2ZC9QaXhlbF9YTF9BUElfMzAuYXZkXG4gKiAgIHRhcmdldD1hbmRyb2lkLTMwXG4gKi9cbmVtdU1ldGhvZHMuZ2V0RW11SW1hZ2VQcm9wZXJ0aWVzID0gYXN5bmMgZnVuY3Rpb24gZ2V0RW11SW1hZ2VQcm9wZXJ0aWVzIChhdmROYW1lKSB7XG4gIGNvbnN0IGF2ZHMgPSBhd2FpdCBsaXN0RW11bGF0b3JzKCk7XG4gIGNvbnN0IGF2ZCA9IGF2ZHMuZmluZCgoe25hbWV9KSA9PiBuYW1lID09PSBhdmROYW1lKTtcbiAgaWYgKCFhdmQpIHtcbiAgICBsZXQgbXNnID0gYENhbm5vdCBmaW5kICcke2F2ZE5hbWV9JyBlbXVsYXRvci4gYDtcbiAgICBpZiAoXy5pc0VtcHR5KGF2ZHMpKSB7XG4gICAgICBtc2cgKz0gYE5vIGVtdWxhdG9ycyBoYXZlIGJlZW4gZGV0ZWN0ZWQgb24geW91ciBzeXN0ZW1gO1xuICAgIH0gZWxzZSB7XG4gICAgICBtc2cgKz0gYEF2YWlsYWJsZSBhdmQgbmFtZXMgYXJlOiAke2F2ZHMubWFwKCh7bmFtZX0pID0+IG5hbWUpfWA7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICB9XG4gIHJldHVybiBpbmkucGFyc2UoYXdhaXQgZnMucmVhZEZpbGUoYXZkLmNvbmZpZywgJ3V0ZjgnKSk7XG59O1xuXG4vKipcbiAqIENoZWNrIGlmIGdpdmVuIGVtdWxhdG9yIGV4aXN0cyBpbiB0aGUgbGlzdCBvZiBhdmFpbGFibGUgYXZkcy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXZkTmFtZSAtIFRoZSBuYW1lIG9mIGVtdWxhdG9yIHRvIHZlcmlmeSBmb3IgZXhpc3RlbmNlLlxuICogU2hvdWxkIE5PVCBzdGFydCB3aXRoICdAJyBjaGFyYWN0ZXJcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgZW11bGF0b3Igd2l0aCBnaXZlbiBuYW1lIGRvZXMgbm90IGV4aXN0LlxuICovXG5lbXVNZXRob2RzLmNoZWNrQXZkRXhpc3QgPSBhc3luYyBmdW5jdGlvbiBjaGVja0F2ZEV4aXN0IChhdmROYW1lKSB7XG4gIGNvbnN0IGF2ZHMgPSBhd2FpdCBsaXN0RW11bGF0b3JzKCk7XG4gIGlmICghYXZkcy5zb21lKCh7bmFtZX0pID0+IG5hbWUgPT09IGF2ZE5hbWUpKSB7XG4gICAgbGV0IG1zZyA9IGBBdmQgJyR7YXZkTmFtZX0nIGlzIG5vdCBhdmFpbGFibGUuIGA7XG4gICAgaWYgKF8uaXNFbXB0eShhdmRzKSkge1xuICAgICAgbXNnICs9IGBObyBlbXVsYXRvcnMgaGF2ZSBiZWVuIGRldGVjdGVkIG9uIHlvdXIgc3lzdGVtYDtcbiAgICB9IGVsc2Uge1xuICAgICAgbXNnICs9IGBQbGVhc2Ugc2VsZWN0IHlvdXIgYXZkIG5hbWUgZnJvbSBvbmUgb2YgdGhlc2U6ICcke2F2ZHMubWFwKCh7bmFtZX0pID0+IG5hbWUpfSdgO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGVtdU1ldGhvZHM7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsb0JBQW9CLEdBQUcscURBQTdCO0FBRUEsTUFBTUMsVUFBVSxHQUFHLEVBQW5CO0FBQ0FBLFVBQVUsQ0FBQ0MsZUFBWCxHQUE2QkMsTUFBTSxDQUFDQyxNQUFQLENBQWM7RUFDekNDLFdBQVcsRUFBRSxJQUQ0QjtFQUV6Q0MsWUFBWSxFQUFFO0FBRjJCLENB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
397
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL3Rvb2xzL2FkYi1lbXUtY29tbWFuZHMuanMiLCJuYW1lcyI6WyJQSE9ORV9OVU1CRVJfUEFUVEVSTiIsImVtdU1ldGhvZHMiLCJQT1dFUl9BQ19TVEFURVMiLCJPYmplY3QiLCJmcmVlemUiLCJQT1dFUl9BQ19PTiIsIlBPV0VSX0FDX09GRiIsIkdTTV9DQUxMX0FDVElPTlMiLCJHU01fQ0FMTCIsIkdTTV9BQ0NFUFQiLCJHU01fQ0FOQ0VMIiwiR1NNX0hPTEQiLCJHU01fVk9JQ0VfU1RBVEVTIiwiR1NNX1ZPSUNFX1VOUkVHSVNURVJFRCIsIkdTTV9WT0lDRV9IT01FIiwiR1NNX1ZPSUNFX1JPQU1JTkciLCJHU01fVk9JQ0VfU0VBUkNISU5HIiwiR1NNX1ZPSUNFX0RFTklFRCIsIkdTTV9WT0lDRV9PRkYiLCJHU01fVk9JQ0VfT04iLCJHU01fU0lHTkFMX1NUUkVOR1RIUyIsIk5FVFdPUktfU1BFRUQiLCJHU00iLCJTQ1NEIiwiR1BSUyIsIkVER0UiLCJVTVRTIiwiSFNEUEEiLCJMVEUiLCJFVkRPIiwiRlVMTCIsIlNFTlNPUlMiLCJBQ0NFTEVSQVRJT04iLCJHWVJPU0NPUEUiLCJNQUdORVRJQ19GSUVMRCIsIk9SSUVOVEFUSU9OIiwiVEVNUEVSQVRVUkUiLCJQUk9YSU1JVFkiLCJMSUdIVCIsIlBSRVNTVVJFIiwiSFVNSURJVFkiLCJNQUdORVRJQ19GSUVMRF9VTkNBTElCUkFURUQiLCJHWVJPU0NPUEVfVU5DQUxJQlJBVEVEIiwiSElOR0VfQU5HTEUwIiwiSElOR0VfQU5HTEUxIiwiSElOR0VfQU5HTEUyIiwiSEVBUlRfUkFURSIsIlJHQkNfTElHSFQiLCJsaXN0RW11bGF0b3JzIiwiYXZkc1Jvb3QiLCJwcm9jZXNzIiwiZW52IiwiQU5EUk9JRF9BVkRfSE9NRSIsImRpckV4aXN0cyIsImdldEF2ZENvbmZpZ1BhdGhzIiwibG9nIiwid2FybiIsInByZWZzUm9vdCIsImdldEFuZHJvaWRQcmVmc1Jvb3QiLCJwYXRoIiwicmVzb2x2ZSIsImRlYnVnIiwiY29uZmlncyIsImZzIiwiZ2xvYiIsImN3ZCIsImFic29sdXRlIiwibWFwIiwiY29uZlBhdGgiLCJhdmROYW1lIiwiYmFzZW5hbWUiLCJzcGxpdCIsInNsaWNlIiwiam9pbiIsIm5hbWUiLCJjb25maWciLCJmaWx0ZXIiLCJfIiwidHJpbSIsImlzRW11bGF0b3JDb25uZWN0ZWQiLCJlbXVsYXRvcnMiLCJnZXRDb25uZWN0ZWRFbXVsYXRvcnMiLCJmaW5kIiwieCIsInVkaWQiLCJjdXJEZXZpY2VJZCIsInZlcmlmeUVtdWxhdG9yQ29ubmVjdGVkIiwiRXJyb3IiLCJmaW5nZXJwcmludCIsImZpbmdlcnByaW50SWQiLCJsZXZlbCIsImdldEFwaUxldmVsIiwiYWRiRXhlY0VtdSIsInJvdGF0ZSIsInBvd2VyQUMiLCJzdGF0ZSIsInZhbHVlcyIsImluZGV4T2YiLCJUeXBlRXJyb3IiLCJzZW5zb3JTZXQiLCJzZW5zb3IiLCJ2YWx1ZSIsImluY2x1ZGVzIiwiaXNOaWwiLCJwb3dlckNhcGFjaXR5IiwicGVyY2VudCIsInBhcnNlSW50IiwiaXNOYU4iLCJwb3dlck9GRiIsInNlbmRTTVMiLCJwaG9uZU51bWJlciIsIm1lc3NhZ2UiLCJyZXBsYWNlIiwidGVzdCIsImdzbUNhbGwiLCJhY3Rpb24iLCJnc21TaWduYWwiLCJzdHJlbmd0aCIsImluZm8iLCJnc21Wb2ljZSIsIm5ldHdvcmtTcGVlZCIsInNwZWVkIiwiZXhlY0VtdUNvbnNvbGVDb21tYW5kIiwiZXhlY1RlbG5ldCIsImNtZCIsIm9wdHMiLCJwb3J0IiwicG9ydE1hdGNoIiwiZXhlYyIsImhvc3QiLCJleGVjVGltZW91dCIsImNvbm5UaW1lb3V0IiwiaW5pdFRpbWVvdXQiLCJyZXNldFRlbG5ldEF1dGhUb2tlbiIsIm9rRmxhZyIsIm5va0ZsYWciLCJlb2wiLCJjbGllbnQiLCJuZXQiLCJjb25uZWN0IiwiQiIsInJlamVjdCIsImNvbm5UaW1lb3V0T2JqIiwic2V0VGltZW91dCIsImV4ZWNUaW1lb3V0T2JqIiwiaW5pdFRpbWVvdXRPYmoiLCJpc0NvbW1hbmRTZW50Iiwic2VydmVyUmVzcG9uc2UiLCJvbmNlIiwiZSIsImNsZWFyVGltZW91dCIsIm9uIiwiY2h1bmsiLCJwdXNoIiwib3V0cHV0IiwiQnVmZmVyIiwiY29uY2F0IiwidG9TdHJpbmciLCJjbWRTdHIiLCJpc0FycmF5IiwidXRpbCIsInF1b3RlIiwid3JpdGUiLCJlbmQiLCJvdXRwdXRBcnIiLCJsZW5ndGgiLCJsYXN0IiwiZ2V0RW11VmVyc2lvbkluZm8iLCJwcm9wc1BhdGgiLCJzZGtSb290IiwiZXhpc3RzIiwiY29udGVudCIsInJlYWRGaWxlIiwicmV2aXNpb25NYXRjaCIsInJlc3VsdCIsInJldmlzaW9uIiwiYnVpbGRJZE1hdGNoIiwiYnVpbGRJZCIsImdldEVtdUltYWdlUHJvcGVydGllcyIsImF2ZHMiLCJhdmQiLCJtc2ciLCJpc0VtcHR5IiwiaW5pIiwicGFyc2UiLCJjaGVja0F2ZEV4aXN0Iiwic29tZSJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi90b29scy9hZGItZW11LWNvbW1hbmRzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyLmpzJztcbmltcG9ydCB7IGdldEFuZHJvaWRQcmVmc1Jvb3QsIGRpckV4aXN0cyB9IGZyb20gJy4uL2hlbHBlcnMnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBuZXQgZnJvbSAnbmV0JztcbmltcG9ydCB7IHV0aWwsIGZzIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IGluaSBmcm9tICdpbmknO1xuXG5jb25zdCBQSE9ORV9OVU1CRVJfUEFUVEVSTiA9IC9eWytdP1soXT9bMC05XSpbKV0/Wy1cXHMuXT9bMC05XSpbLVxccy5dP1swLTldezIsfSQvaW07XG5cbmNvbnN0IGVtdU1ldGhvZHMgPSB7fTtcbmVtdU1ldGhvZHMuUE9XRVJfQUNfU1RBVEVTID0gT2JqZWN0LmZyZWV6ZSh7XG4gIFBPV0VSX0FDX09OOiAnb24nLFxuICBQT1dFUl9BQ19PRkY6ICdvZmYnXG59KTtcbmVtdU1ldGhvZHMuR1NNX0NBTExfQUNUSU9OUyA9IE9iamVjdC5mcmVlemUoe1xuICBHU01fQ0FMTDogJ2NhbGwnLFxuICBHU01fQUNDRVBUOiAnYWNjZXB0JyxcbiAgR1NNX0NBTkNFTDogJ2NhbmNlbCcsXG4gIEdTTV9IT0xEOiAnaG9sZCdcbn0pO1xuZW11TWV0aG9kcy5HU01fVk9JQ0VfU1RBVEVTID0gT2JqZWN0LmZyZWV6ZSh7XG4gIEdTTV9WT0lDRV9VTlJFR0lTVEVSRUQ6ICd1bnJlZ2lzdGVyZWQnLFxuICBHU01fVk9JQ0VfSE9NRTogJ2hvbWUnLFxuICBHU01fVk9JQ0VfUk9BTUlORzogJ3JvYW1pbmcnLFxuICBHU01fVk9JQ0VfU0VBUkNISU5HOiAnc2VhcmNoaW5nJyxcbiAgR1NNX1ZPSUNFX0RFTklFRDogJ2RlbmllZCcsXG4gIEdTTV9WT0lDRV9PRkY6ICdvZmYnLFxuICBHU01fVk9JQ0VfT046ICdvbidcbn0pO1xuZW11TWV0aG9kcy5HU01fU0lHTkFMX1NUUkVOR1RIUyA9IFswLCAxLCAyLCAzLCA0XTtcblxuZW11TWV0aG9kcy5ORVRXT1JLX1NQRUVEID0gT2JqZWN0LmZyZWV6ZSh7XG4gIEdTTTogJ2dzbScsIC8vIEdTTS9DU0QgKHVwOiAxNC40LCBkb3duOiAxNC40KS5cbiAgU0NTRDogJ3Njc2QnLCAvLyBIU0NTRCAodXA6IDE0LjQsIGRvd246IDU3LjYpLlxuICBHUFJTOiAnZ3BycycsIC8vIEdQUlMgKHVwOiAyOC44LCBkb3duOiA1Ny42KS5cbiAgRURHRTogJ2VkZ2UnLCAvLyBFREdFL0VHUFJTICh1cDogNDczLjYsIGRvd246IDQ3My42KS5cbiAgVU1UUzogJ3VtdHMnLCAvLyBVTVRTLzNHICh1cDogMzg0LjAsIGRvd246IDM4NC4wKS5cbiAgSFNEUEE6ICdoc2RwYScsIC8vIEhTRFBBICh1cDogNTc2MC4wLCBkb3duOiAxMyw5ODAuMCkuXG4gIExURTogJ2x0ZScsIC8vIExURSAodXA6IDU4LDAwMCwgZG93bjogMTczLDAwMCkuXG4gIEVWRE86ICdldmRvJywgLy8gRVZETyAodXA6IDc1LDAwMCwgZG93bjogMjgwLDAwMCkuXG4gIEZVTEw6ICdmdWxsJyAvLyBObyBsaW1pdCwgdGhlIGRlZmF1bHQgKHVwOiAwLjAsIGRvd246IDAuMCkuXG59KTtcblxuZW11TWV0aG9kcy5TRU5TT1JTID0gT2JqZWN0LmZyZWV6ZSh7XG4gIEFDQ0VMRVJBVElPTjogJ2FjY2VsZXJhdGlvbicsXG4gIEdZUk9TQ09QRTogJ2d5cm9zY29wZScsXG4gIE1BR05FVElDX0ZJRUxEOiAnbWFnbmV0aWMtZmllbGQnLFxuICBPUklFTlRBVElPTjogJ29yaWVudGF0aW9uJyxcbiAgVEVNUEVSQVRVUkU6ICd0ZW1wZXJhdHVyZScsXG4gIFBST1hJTUlUWTogJ3Byb3hpbWl0eScsXG4gIExJR0hUOiAnbGlnaHQnLFxuICBQUkVTU1VSRTogJ3ByZXNzdXJlJyxcbiAgSFVNSURJVFk6ICdodW1pZGl0eScsXG4gIE1BR05FVElDX0ZJRUxEX1VOQ0FMSUJSQVRFRDogJ21hZ25ldGljLWZpZWxkLXVuY2FsaWJyYXRlZCcsXG4gIEdZUk9TQ09QRV9VTkNBTElCUkFURUQ6ICdneXJvc2NvcGUtdW5jYWxpYnJhdGVkJyxcbiAgSElOR0VfQU5HTEUwOiAnaGluZ2UtYW5nbGUwJyxcbiAgSElOR0VfQU5HTEUxOiAnaGluZ2UtYW5nbGUxJyxcbiAgSElOR0VfQU5HTEUyOiAnaGluZ2UtYW5nbGUyJyxcbiAgSEVBUlRfUkFURTogJ2hlYXJ0LXJhdGUnLFxuICBSR0JDX0xJR0hUOiAncmdiYy1saWdodCcsXG59KTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBFbXVJbmZvXG4gKiBAcHJvcGVydHkge3N0cmluZ30gbmFtZSBFbXVsYXRvciBuYW1lLCBmb3IgZXhhbXBsZSBgUGl4ZWxfWExfQVBJXzMwYFxuICogQHByb3BlcnR5IHtzdHJpbmd9IGNvbmZpZyBGdWxsIHBhdGggdG8gdGhlIGVtdWxhdG9yIGNvbmZpZyAuaW5pIGZpbGUsXG4gKiBmb3IgZXhhbXBsZSBgL1VzZXJzL3VzZXIvLmFuZHJvaWQvYXZkL1BpeGVsX1hMX0FQSV8zMC5pbmlgXG4gKi9cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIEFuZHJvaWQgZW11bGF0b3JzXG4gKlxuICogQHJldHVybnMge0FycmF5PEVtdUluZm8+fVxuICovXG5hc3luYyBmdW5jdGlvbiBsaXN0RW11bGF0b3JzICgpIHtcbiAgbGV0IGF2ZHNSb290ID0gcHJvY2Vzcy5lbnYuQU5EUk9JRF9BVkRfSE9NRTtcbiAgaWYgKGF3YWl0IGRpckV4aXN0cyhhdmRzUm9vdCkpIHtcbiAgICByZXR1cm4gYXdhaXQgZ2V0QXZkQ29uZmlnUGF0aHMoYXZkc1Jvb3QpO1xuICB9XG5cbiAgaWYgKGF2ZHNSb290KSB7XG4gICAgbG9nLndhcm4oYFRoZSB2YWx1ZSBvZiB0aGUgQU5EUk9JRF9BVkRfSE9NRSBlbnZpcm9ubWVudCB2YXJpYWJsZSAnJHthdmRzUm9vdH0nIGlzIG5vdCBhbiBleGlzdGluZyBkaXJlY3RvcnlgKTtcbiAgfVxuXG4gIGNvbnN0IHByZWZzUm9vdCA9IGF3YWl0IGdldEFuZHJvaWRQcmVmc1Jvb3QoKTtcbiAgaWYgKCFwcmVmc1Jvb3QpIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBhdmRzUm9vdCA9IHBhdGgucmVzb2x2ZShwcmVmc1Jvb3QsICdhdmQnKTtcbiAgaWYgKCFhd2FpdCBkaXJFeGlzdHMoYXZkc1Jvb3QpKSB7XG4gICAgbG9nLmRlYnVnKGBWaXJ0dWFsIGRldmljZXMgY29uZmlnIHJvb3QgJyR7YXZkc1Jvb3R9JyBpcyBub3QgYW4gZXhpc3RpbmcgZGlyZWN0b3J5YCk7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcmV0dXJuIGF3YWl0IGdldEF2ZENvbmZpZ1BhdGhzKGF2ZHNSb290KTtcbn1cblxuLyoqXG4gKiBHZXQgY29uZmlndXJhdGlvbiBwYXRocyBvZiBhbGwgdmlydHVhbCBkZXZpY2VzXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGF2ZHNSb290IFBhdGggdG8gdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRoZSBBVkQgLmluaSBmaWxlc1xuICogQHJldHVybnMge0FycmF5PEVtdUluZm8+fVxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRBdmRDb25maWdQYXRocyAoYXZkc1Jvb3QpIHtcbiAgY29uc3QgY29uZmlncyA9IGF3YWl0IGZzLmdsb2IoJyouaW5pJywge1xuICAgIGN3ZDogYXZkc1Jvb3QsXG4gICAgYWJzb2x1dGU6IHRydWUsXG4gIH0pO1xuICByZXR1cm4gY29uZmlncy5tYXAoKGNvbmZQYXRoKSA9PiB7XG4gICAgY29uc3QgYXZkTmFtZSA9IHBhdGguYmFzZW5hbWUoY29uZlBhdGgpLnNwbGl0KCcuJykuc2xpY2UoMCwgLTEpLmpvaW4oJy4nKTtcbiAgICByZXR1cm4ge25hbWU6IGF2ZE5hbWUsIGNvbmZpZzogY29uZlBhdGh9O1xuICB9KS5maWx0ZXIoKHtuYW1lfSkgPT4gXy50cmltKG5hbWUpKTtcbn1cblxuLyoqXG4gKiBDaGVjayB0aGUgZW11bGF0b3Igc3RhdGUuXG4gKlxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBFbXVsYXRvciBpcyB2aXNpYmxlIHRvIGFkYi5cbiAqL1xuZW11TWV0aG9kcy5pc0VtdWxhdG9yQ29ubmVjdGVkID0gYXN5bmMgZnVuY3Rpb24gaXNFbXVsYXRvckNvbm5lY3RlZCAoKSB7XG4gIGxldCBlbXVsYXRvcnMgPSBhd2FpdCB0aGlzLmdldENvbm5lY3RlZEVtdWxhdG9ycygpO1xuICByZXR1cm4gISFfLmZpbmQoZW11bGF0b3JzLCAoeCkgPT4geCAmJiB4LnVkaWQgPT09IHRoaXMuY3VyRGV2aWNlSWQpO1xufTtcblxuLyoqXG4gKiBWZXJpZnkgdGhlIGVtdWxhdG9yIGlzIGNvbm5lY3RlZC5cbiAqXG4gKiBAdGhyb3dzIHtlcnJvcn0gSWYgRW11bGF0b3IgaXMgbm90IHZpc2libGUgdG8gYWRiLlxuICovXG5lbXVNZXRob2RzLnZlcmlmeUVtdWxhdG9yQ29ubmVjdGVkID0gYXN5bmMgZnVuY3Rpb24gdmVyaWZ5RW11bGF0b3JDb25uZWN0ZWQgKCkge1xuICBpZiAoIShhd2FpdCB0aGlzLmlzRW11bGF0b3JDb25uZWN0ZWQoKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBlbXVsYXRvciBcIiR7dGhpcy5jdXJEZXZpY2VJZH1cIiB3YXMgdW5leHBlY3RlZGx5IGRpc2Nvbm5lY3RlZGApO1xuICB9XG59O1xuXG4vKipcbiAqIEVtdWxhdGUgZmluZ2VycHJpbnQgdG91Y2ggZXZlbnQgb24gdGhlIGNvbm5lY3RlZCBlbXVsYXRvci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gZmluZ2VycHJpbnRJZCAtIFRoZSBJRCBvZiB0aGUgZmluZ2VycHJpbnQuXG4gKi9cbmVtdU1ldGhvZHMuZmluZ2VycHJpbnQgPSBhc3luYyBmdW5jdGlvbiBmaW5nZXJwcmludCAoZmluZ2VycHJpbnRJZCkge1xuICBpZiAoIWZpbmdlcnByaW50SWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZpbmdlcnByaW50IGlkIHBhcmFtZXRlciBtdXN0IGJlIGRlZmluZWQnKTtcbiAgfVxuICAvLyB0aGUgbWV0aG9kIHVzZWQgb25seSB3b3JrcyBmb3IgQVBJIGxldmVsIDIzIGFuZCBhYm92ZVxuICBsZXQgbGV2ZWwgPSBhd2FpdCB0aGlzLmdldEFwaUxldmVsKCk7XG4gIGlmIChsZXZlbCA8IDIzKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBEZXZpY2UgQVBJIExldmVsIG11c3QgYmUgPj0gMjMuIEN1cnJlbnQgQXBpIGxldmVsICcke2xldmVsfSdgKTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYkV4ZWNFbXUoWydmaW5nZXInLCAndG91Y2gnLCBmaW5nZXJwcmludElkXSk7XG59O1xuXG4vKipcbiAqIENoYW5nZSB0aGUgZGlzcGxheSBvcmllbnRhdGlvbiBvbiB0aGUgY29ubmVjdGVkIGVtdWxhdG9yLlxuICogVGhlIG9yaWVudGF0aW9uIGlzIGNoYW5nZWQgKFBJLzIgaXMgYWRkZWQpIGV2ZXJ5IHRpbWVcbiAqIHRoaXMgbWV0aG9kIGlzIGNhbGxlZC5cbiAqL1xuZW11TWV0aG9kcy5yb3RhdGUgPSBhc3luYyBmdW5jdGlvbiByb3RhdGUgKCkge1xuICBhd2FpdCB0aGlzLmFkYkV4ZWNFbXUoWydyb3RhdGUnXSk7XG59O1xuXG4vKipcbiAqIEVtdWxhdGUgcG93ZXIgc3RhdGUgY2hhbmdlIG9uIHRoZSBjb25uZWN0ZWQgZW11bGF0b3IuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0YXRlIFsnb24nXSAtIEVpdGhlciAnb24nIG9yICdvZmYnLlxuICovXG5lbXVNZXRob2RzLnBvd2VyQUMgPSBhc3luYyBmdW5jdGlvbiBwb3dlckFDIChzdGF0ZSA9ICdvbicpIHtcbiAgaWYgKF8udmFsdWVzKGVtdU1ldGhvZHMuUE9XRVJfQUNfU1RBVEVTKS5pbmRleE9mKHN0YXRlKSA9PT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBXcm9uZyBwb3dlciBBQyBzdGF0ZSBzZW50ICcke3N0YXRlfScuIGBcbiAgICAgICsgYFN1cHBvcnRlZCB2YWx1ZXM6ICR7Xy52YWx1ZXMoZW11TWV0aG9kcy5QT1dFUl9BQ19TVEFURVMpfV1gKTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYkV4ZWNFbXUoWydwb3dlcicsICdhYycsIHN0YXRlXSk7XG59O1xuXG4vKipcbiAqIEVtdWxhdGUgc2Vuc29ycyB2YWx1ZXMgb24gdGhlIGNvbm5lY3RlZCBlbXVsYXRvci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc2Vuc29yIC0gU2Vuc29yIHR5cGUgZGVjbGFyZWQgaW4gU0VOU09SUyBpdGVtcy5cbiAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gdmFsdWUgIC0gTnVtYmVyIHRvIHNldCBhcyB0aGUgc2Vuc29yIHZhbHVlLlxuICogQHRocm93cyB7RXJyb3J9IC0gSWYgc2Vuc29yIHR5cGUgb3Igc2Vuc29yIHZhbHVlIGlzIG5vdCBkZWZpbmVkXG4gKi9cbmVtdU1ldGhvZHMuc2Vuc29yU2V0ID0gYXN5bmMgZnVuY3Rpb24gc2Vuc29yU2V0IChzZW5zb3IsIHZhbHVlKSB7XG4gIGlmICghXy5pbmNsdWRlcyhlbXVNZXRob2RzLlNFTlNPUlMsIHNlbnNvcikpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBVbnN1cHBvcnRlZCBzZW5zb3Igc2VudCAnJHtzZW5zb3J9Jy4gYFxuICAgICAgKyBgU3VwcG9ydGVkIHZhbHVlczogJHtfLnZhbHVlcyhlbXVNZXRob2RzLlNFTlNPUlMpfV1gKTtcbiAgfVxuICBpZiAoXy5pc05pbCh2YWx1ZSkgfHwgdmFsdWUgPT09ICcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgTWlzc2luZy9pbnZhbGlkIHNlbnNvciB2YWx1ZSBhcmd1bWVudC4gYFxuICAgICAgKyBgWW91IG5lZWQgdG8gcHJvdmlkZSBhIHZhbGlkIHZhbHVlIHRvIHNldCB0byB0aGUgc2Vuc29yIGluIGBcbiAgICAgICsgYGZvcm1hdCA8dmFsdWUtYT5bOjx2YWx1ZS1iPls6PHZhbHVlLWM+Wy4uLl1dXS5gKTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYkV4ZWNFbXUoWydzZW5zb3InLCAnc2V0Jywgc2Vuc29yLCB2YWx1ZV0pO1xufTtcblxuLyoqXG4gKiBFbXVsYXRlIHBvd2VyIGNhcGFjaXR5IGNoYW5nZSBvbiB0aGUgY29ubmVjdGVkIGVtdWxhdG9yLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfG51bWJlcn0gcGVyY2VudCBbMTAwXSAtIFBlcmNlbnRhZ2UgdmFsdWUgaW4gcmFuZ2UgWzAsIDEwMF0uXG4gKi9cbmVtdU1ldGhvZHMucG93ZXJDYXBhY2l0eSA9IGFzeW5jIGZ1bmN0aW9uIHBvd2VyQ2FwYWNpdHkgKHBlcmNlbnQgPSAxMDApIHtcbiAgcGVyY2VudCA9IHBhcnNlSW50KHBlcmNlbnQsIDEwKTtcbiAgaWYgKGlzTmFOKHBlcmNlbnQpIHx8IHBlcmNlbnQgPCAwIHx8IHBlcmNlbnQgPiAxMDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBwZXJjZW50YWdlIHZhbHVlIHNob3VsZCBiZSB2YWxpZCBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgMTAwYCk7XG4gIH1cbiAgYXdhaXQgdGhpcy5hZGJFeGVjRW11KFsncG93ZXInLCAnY2FwYWNpdHknLCBwZXJjZW50XSk7XG59O1xuXG4vKipcbiAqIEVtdWxhdGUgcG93ZXIgb2ZmIGV2ZW50IG9uIHRoZSBjb25uZWN0ZWQgZW11bGF0b3IuXG4gKi9cbmVtdU1ldGhvZHMucG93ZXJPRkYgPSBhc3luYyBmdW5jdGlvbiBwb3dlck9GRiAoKSB7XG4gIGF3YWl0IHRoaXMucG93ZXJBQyhlbXVNZXRob2RzLlBPV0VSX0FDX1NUQVRFUy5QT1dFUl9BQ19PRkYpO1xuICBhd2FpdCB0aGlzLnBvd2VyQ2FwYWNpdHkoMCk7XG59O1xuXG4vKipcbiAqIEVtdWxhdGUgc2VuZCBTTVMgZXZlbnQgb24gdGhlIGNvbm5lY3RlZCBlbXVsYXRvci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IHBob25lTnVtYmVyIC0gVGhlIHBob25lIG51bWJlciBvZiBtZXNzYWdlIHNlbmRlci5cbiAqIEBwYXJhbSB7c3RyaW5nfSBtZXNzYWdlIFsnJ10gLSBUaGUgbWVzc2FnZSBjb250ZW50LlxuICogQHRocm93cyB7ZXJyb3J9IElmIHBob25lIG51bWJlciBoYXMgaW52YWxpZCBmb3JtYXQuXG4gKi9cbmVtdU1ldGhvZHMuc2VuZFNNUyA9IGFzeW5jIGZ1bmN0aW9uIHNlbmRTTVMgKHBob25lTnVtYmVyLCBtZXNzYWdlID0gJycpIHtcbiAgbWVzc2FnZSA9IG1lc3NhZ2UudHJpbSgpO1xuICBpZiAobWVzc2FnZSA9PT0gJycpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1NlbmRpbmcgYW4gU01TIHJlcXVpcmVzIGEgbWVzc2FnZScpO1xuICB9XG4gIHBob25lTnVtYmVyID0gYCR7cGhvbmVOdW1iZXJ9YC5yZXBsYWNlKC9cXHMqLywgJycpO1xuICBpZiAoIVBIT05FX05VTUJFUl9QQVRURVJOLnRlc3QocGhvbmVOdW1iZXIpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHNlbmRTTVMgcGhvbmVOdW1iZXIgcGFyYW0gJHtwaG9uZU51bWJlcn1gKTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYkV4ZWNFbXUoWydzbXMnLCAnc2VuZCcsIHBob25lTnVtYmVyLCBtZXNzYWdlXSk7XG59O1xuXG4vKipcbiAqIEVtdWxhdGUgR1NNIGNhbGwgZXZlbnQgb24gdGhlIGNvbm5lY3RlZCBlbXVsYXRvci5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ3xudW1iZXJ9IHBob25lTnVtYmVyIC0gVGhlIHBob25lIG51bWJlciBvZiB0aGUgY2FsbGVyLlxuICogQHBhcmFtIHtzdHJpbmd9IGFjdGlvbiBbJyddIC0gT25lIG9mIGF2YWlsYWJsZSBHU00gY2FsbCBhY3Rpb25zLlxuICogQHRocm93cyB7ZXJyb3J9IElmIHBob25lIG51bWJlciBoYXMgaW52YWxpZCBmb3JtYXQuXG4gKiBAdGhyb3dzIHtlcnJvcn0gSWYgX2FjdGlvbl8gdmFsdWUgaXMgaW52YWxpZC5cbiAqL1xuZW11TWV0aG9kcy5nc21DYWxsID0gYXN5bmMgZnVuY3Rpb24gZ3NtQ2FsbCAocGhvbmVOdW1iZXIsIGFjdGlvbiA9ICcnKSB7XG4gIGlmIChfLnZhbHVlcyhlbXVNZXRob2RzLkdTTV9DQUxMX0FDVElPTlMpLmluZGV4T2YoYWN0aW9uKSA9PT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgZ3NtIGFjdGlvbiBwYXJhbSAke2FjdGlvbn0uIFN1cHBvcnRlZCB2YWx1ZXM6ICR7Xy52YWx1ZXMoZW11TWV0aG9kcy5HU01fQ0FMTF9BQ1RJT05TKX1gKTtcbiAgfVxuICBwaG9uZU51bWJlciA9IGAke3Bob25lTnVtYmVyfWAucmVwbGFjZSgvXFxzKi8sICcnKTtcbiAgaWYgKCFQSE9ORV9OVU1CRVJfUEFUVEVSTi50ZXN0KHBob25lTnVtYmVyKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBnc21DYWxsIHBob25lTnVtYmVyIHBhcmFtICR7cGhvbmVOdW1iZXJ9YCk7XG4gIH1cbiAgYXdhaXQgdGhpcy5hZGJFeGVjRW11KFsnZ3NtJywgYWN0aW9uLCBwaG9uZU51bWJlcl0pO1xufTtcblxuLyoqXG4gKiBFbXVsYXRlIEdTTSBzaWduYWwgc3RyZW5ndGggY2hhbmdlIGV2ZW50IG9uIHRoZSBjb25uZWN0ZWQgZW11bGF0b3IuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd8bnVtYmVyfSBzdHJlbmd0aCBbNF0gLSBBIG51bWJlciBpbiByYW5nZSBbMCwgNF07XG4gKiBAdGhyb3dzIHtlcnJvcn0gSWYgX3N0cmVuZ3RoXyB2YWx1ZSBpcyBpbnZhbGlkLlxuICovXG5lbXVNZXRob2RzLmdzbVNpZ25hbCA9IGFzeW5jIGZ1bmN0aW9uIGdzbVNpZ25hbCAoc3RyZW5ndGggPSA0KSB7XG4gIHN0cmVuZ3RoID0gcGFyc2VJbnQoc3RyZW5ndGgsIDEwKTtcbiAgaWYgKGVtdU1ldGhvZHMuR1NNX1NJR05BTF9TVFJFTkdUSFMuaW5kZXhPZihzdHJlbmd0aCkgPT09IC0xKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHNpZ25hbCBzdHJlbmd0aCBwYXJhbSAke3N0cmVuZ3RofS4gU3VwcG9ydGVkIHZhbHVlczogJHtfLnZhbHVlcyhlbXVNZXRob2RzLkdTTV9TSUdOQUxfU1RSRU5HVEhTKX1gKTtcbiAgfVxuICBsb2cuaW5mbygnZ3NtIHNpZ25hbC1wcm9maWxlIDxzdHJlbmd0aD4gY2hhbmdlcyB0aGUgcmVwb3J0ZWQgc3RyZW5ndGggb24gbmV4dCAoMTVzKSB1cGRhdGUuJyk7XG4gIGF3YWl0IHRoaXMuYWRiRXhlY0VtdShbJ2dzbScsICdzaWduYWwtcHJvZmlsZScsIHN0cmVuZ3RoXSk7XG59O1xuXG4vKipcbiAqIEVtdWxhdGUgR1NNIHZvaWNlIGV2ZW50IG9uIHRoZSBjb25uZWN0ZWQgZW11bGF0b3IuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0YXRlIFsnb24nXSAtIEVpdGhlciAnb24nIG9yICdvZmYnLlxuICogQHRocm93cyB7ZXJyb3J9IElmIF9zdGF0ZV8gdmFsdWUgaXMgaW52YWxpZC5cbiAqL1xuZW11TWV0aG9kcy5nc21Wb2ljZSA9IGFzeW5jIGZ1bmN0aW9uIGdzbVZvaWNlIChzdGF0ZSA9ICdvbicpIHtcbiAgLy8gZ3NtIHZvaWNlIDxzdGF0ZT4gYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhlIHN0YXRlIG9mIHlvdXIgR1BSUyBjb25uZWN0aW9uXG4gIGlmIChfLnZhbHVlcyhlbXVNZXRob2RzLkdTTV9WT0lDRV9TVEFURVMpLmluZGV4T2Yoc3RhdGUpID09PSAtMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBnc20gdm9pY2Ugc3RhdGUgcGFyYW0gJHtzdGF0ZX0uIFN1cHBvcnRlZCB2YWx1ZXM6ICR7Xy52YWx1ZXMoZW11TWV0aG9kcy5HU01fVk9JQ0VfU1RBVEVTKX1gKTtcbiAgfVxuICBhd2FpdCB0aGlzLmFkYkV4ZWNFbXUoWydnc20nLCAndm9pY2UnLCBzdGF0ZV0pO1xufTtcblxuLyoqXG4gKiBFbXVsYXRlIG5ldHdvcmsgc3BlZWQgY2hhbmdlIGV2ZW50IG9uIHRoZSBjb25uZWN0ZWQgZW11bGF0b3IuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHNwZWVkIFsnZnVsbCddIC0gT25lIG9mIHBvc3NpYmxlIE5FVFdPUktfU1BFRUQgdmFsdWVzLlxuICogQHRocm93cyB7ZXJyb3J9IElmIF9zcGVlZF8gdmFsdWUgaXMgaW52YWxpZC5cbiAqL1xuZW11TWV0aG9kcy5uZXR3b3JrU3BlZWQgPSBhc3luYyBmdW5jdGlvbiBuZXR3b3JrU3BlZWQgKHNwZWVkID0gJ2Z1bGwnKSB7XG4gIC8vIG5ldHdvcmsgc3BlZWQgPHNwZWVkPiBhbGxvd3MgeW91IHRvIHNldCB0aGUgbmV0d29yayBzcGVlZCBlbXVsYXRpb24uXG4gIGlmIChfLnZhbHVlcyhlbXVNZXRob2RzLk5FVFdPUktfU1BFRUQpLmluZGV4T2Yoc3BlZWQpID09PSAtMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBuZXR3b3JrIHNwZWVkIHBhcmFtICR7c3BlZWR9LiBTdXBwb3J0ZWQgdmFsdWVzOiAke18udmFsdWVzKGVtdU1ldGhvZHMuTkVUV09SS19TUEVFRCl9YCk7XG4gIH1cbiAgYXdhaXQgdGhpcy5hZGJFeGVjRW11KFsnbmV0d29yaycsICdzcGVlZCcsIHNwZWVkXSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEV4ZWNUZWxuZXRPcHRpb25zXG4gKiBAcHJvcGVydHkge251bWJlcn0gZXhlY1RpbWVvdXQgWzYwMDAwXSBBIHRpbWVvdXQgdXNlZCB0byB3YWl0IGZvciBhIHNlcnZlclxuICogcmVwbHkgdG8gdGhlIGdpdmVuIGNvbW1hbmRcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBjb25uVGltZW91dCBbNTAwMF0gQ29uc29sZSBjb25uZWN0aW9uIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzXG4gKiBAcHJvcGVydHkge251bWJlcn0gaW5pdFRpbWVvdXQgWzUwMDBdIFRlbG5ldCBjb25zb2xlIGluaXRpYWxpemF0aW9uIHRpbWVvdXRcbiAqIGluIG1pbGxpc2Vjb25kcyAodGhlIHRpbWUgYmV0d2VlbiBjb25uZWN0aW9uIGhhcHBlbnMgYW5kIHRoZSBjb21tYW5kIHByb21wdFxuICogaXMgYXZhaWxhYmxlKVxuICogQHByb3BlcnR5IHs/bnVtYmVyfHN0cmluZ30gcG9ydCBUaGUgZW11bGF0b3IgcG9ydCBudW1iZXIuIFRoZSBtZXRob2Qgd2lsbCB0cnkgdG8gcGFyc2UgaXRcbiAqIGZyb20gdGhlIGN1cnJlbnQgZGV2aWNlIGlkZW50aWZpZXIgaWYgdW5zZXRcbiAqL1xuXG4vKipcbiAqIEV4ZWN1dGVzIGEgY29tbWFuZCB0aHJvdWdoIGVtdWxhdG9yIHRlbG5ldCBjb25zb2xlIGludGVyZmFjZSBhbmQgcmV0dXJucyBpdHMgb3V0cHV0XG4gKlxuICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fHN0cmluZ30gY21kIC0gVGhlIGFjdHVhbCBjb21tYW5kIHRvIGV4ZWN1dGUuIFNlZVxuICogaHR0cHM6Ly9kZXZlbG9wZXIuYW5kcm9pZC5jb20vc3R1ZGlvL3J1bi9lbXVsYXRvci1jb25zb2xlIGZvciBtb3JlIGRldGFpbHNcbiAqIG9uIGF2YWlsYWJsZSBjb21tYW5kc1xuICogQHBhcmFtIHtFeGVjVGVsbmV0T3B0aW9uc30gb3B0c1xuICogQHJldHVybnMge3N0cmluZ30gVGhlIGNvbW1hbmQgb3V0cHV0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIGNvbm5lY3RpbmcgdG8gdGhlIFRlbG5ldCBjb25zb2xlXG4gKiBvciBpZiB0aGUgZ2l2ZW4gY29tbWFuZCByZXR1cm5lZCBub24tT0sgcmVzcG9uc2VcbiAqL1xuZW11TWV0aG9kcy5leGVjRW11Q29uc29sZUNvbW1hbmQgPSBhc3luYyBmdW5jdGlvbiBleGVjVGVsbmV0IChjbWQsIG9wdHMgPSB7fSkge1xuICBsZXQgcG9ydCA9IHBhcnNlSW50KG9wdHMucG9ydCwgMTApO1xuICBpZiAoIXBvcnQpIHtcbiAgICBjb25zdCBwb3J0TWF0Y2ggPSAvZW11bGF0b3ItKFxcZCspL2kuZXhlYyh0aGlzLmN1ckRldmljZUlkKTtcbiAgICBpZiAoIXBvcnRNYXRjaCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgcGFyc2UgdGhlIGNvbnNvbGUgcG9ydCBudW1iZXIgZnJvbSB0aGUgZGV2aWNlIGlkZW50aWZpZXIgJyR7dGhpcy5jdXJEZXZpY2VJZH0nLiBgICtcbiAgICAgICAgYElzIGl0IGFuIGVtdWxhdG9yP2ApO1xuICAgIH1cbiAgICBwb3J0ID0gcGFyc2VJbnQocG9ydE1hdGNoWzFdLCAxMCk7XG4gIH1cbiAgY29uc3QgaG9zdCA9ICcxMjcuMC4wLjEnO1xuICBjb25zdCB7XG4gICAgZXhlY1RpbWVvdXQgPSA2MDAwMCxcbiAgICBjb25uVGltZW91dCA9IDUwMDAsXG4gICAgaW5pdFRpbWVvdXQgPSA1MDAwLFxuICB9ID0gb3B0cztcbiAgYXdhaXQgdGhpcy5yZXNldFRlbG5ldEF1dGhUb2tlbigpO1xuXG4gIGNvbnN0IG9rRmxhZyA9IC9eT0skL207XG4gIGNvbnN0IG5va0ZsYWcgPSAvXktPXFxiL207XG4gIGNvbnN0IGVvbCA9ICdcXHJcXG4nO1xuICBjb25zdCBjbGllbnQgPSBuZXQuY29ubmVjdCh7XG4gICAgaG9zdCxcbiAgICBwb3J0LFxuICB9KTtcblxuICByZXR1cm4gYXdhaXQgbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IGNvbm5UaW1lb3V0T2JqID0gc2V0VGltZW91dChcbiAgICAgICgpID0+IHJlamVjdChuZXcgRXJyb3IoYENhbm5vdCBjb25uZWN0IHRvIHRoZSBFbXVsYXRvciBjb25zb2xlIGF0ICR7aG9zdH06JHtwb3J0fSBgICtcbiAgICAgICAgYGFmdGVyICR7Y29ublRpbWVvdXR9bXNgKSksIGNvbm5UaW1lb3V0KTtcbiAgICBsZXQgZXhlY1RpbWVvdXRPYmo7XG4gICAgbGV0IGluaXRUaW1lb3V0T2JqO1xuICAgIGxldCBpc0NvbW1hbmRTZW50ID0gZmFsc2U7XG4gICAgbGV0IHNlcnZlclJlc3BvbnNlID0gW107XG5cbiAgICBjbGllbnQub25jZSgnZXJyb3InLCAoZSkgPT4ge1xuICAgICAgY2xlYXJUaW1lb3V0KGNvbm5UaW1lb3V0T2JqKTtcbiAgICAgIHJlamVjdChuZXcgRXJyb3IoYENhbm5vdCBjb25uZWN0IHRvIHRoZSBFbXVsYXRvciBjb25zb2xlIGF0ICR7aG9zdH06JHtwb3J0fS4gYCArXG4gICAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCkpO1xuICAgIH0pO1xuXG4gICAgY2xpZW50Lm9uY2UoJ2Nvbm5lY3QnLCAoKSA9PiB7XG4gICAgICBjbGVhclRpbWVvdXQoY29ublRpbWVvdXRPYmopO1xuICAgICAgaW5pdFRpbWVvdXRPYmogPSBzZXRUaW1lb3V0KFxuICAgICAgICAoKSA9PiByZWplY3QobmV3IEVycm9yKGBEaWQgbm90IGdldCB0aGUgaW5pdGlhbCByZXNwb25zZSBmcm9tIHRoZSBFbXVsYXRvciBjb25zb2xlIGF0ICR7aG9zdH06JHtwb3J0fSBgICtcbiAgICAgICAgICBgYWZ0ZXIgJHtpbml0VGltZW91dH1tc2ApKSwgaW5pdFRpbWVvdXQpO1xuICAgIH0pO1xuXG4gICAgY2xpZW50Lm9uKCdkYXRhJywgKGNodW5rKSA9PiB7XG4gICAgICBzZXJ2ZXJSZXNwb25zZS5wdXNoKGNodW5rKTtcbiAgICAgIGNvbnN0IG91dHB1dCA9IEJ1ZmZlci5jb25jYXQoc2VydmVyUmVzcG9uc2UpLnRvU3RyaW5nKCd1dGY4JykudHJpbSgpO1xuICAgICAgaWYgKG9rRmxhZy50ZXN0KG91dHB1dCkpIHtcbiAgICAgICAgLy8gVGhlIGluaXRpYWwgaW5jb21pbmcgZGF0YSBjaHVuayBjb25maXJtcyB0aGUgaW50ZXJmYWNlIGlzIHJlYWR5IGZvciBpbnB1dFxuICAgICAgICBpZiAoIWlzQ29tbWFuZFNlbnQpIHtcbiAgICAgICAgICBjbGVhclRpbWVvdXQoaW5pdFRpbWVvdXRPYmopO1xuICAgICAgICAgIHNlcnZlclJlc3BvbnNlID0gW107XG4gICAgICAgICAgY29uc3QgY21kU3RyID0gXy5pc0FycmF5KGNtZCkgPyB1dGlsLnF1b3RlKGNtZCkgOiBgJHtjbWR9YDtcbiAgICAgICAgICBsb2cuZGVidWcoYEV4ZWN1dGluZyBFbXVsYXRvciBjb25zb2xlIGNvbW1hbmQ6ICR7Y21kU3RyfWApO1xuICAgICAgICAgIGNsaWVudC53cml0ZShjbWRTdHIpO1xuICAgICAgICAgIGNsaWVudC53cml0ZShlb2wpO1xuICAgICAgICAgIGlzQ29tbWFuZFNlbnQgPSB0cnVlO1xuICAgICAgICAgIGV4ZWNUaW1lb3V0T2JqID0gc2V0VGltZW91dChcbiAgICAgICAgICAgICgpID0+IHJlamVjdChuZXcgRXJyb3IoYERpZCBub3QgZ2V0IGFueSByZXNwb25zZSBmcm9tIHRoZSBFbXVsYXRvciBjb25zb2xlIGF0ICR7aG9zdH06JHtwb3J0fSBgICtcbiAgICAgICAgICAgICAgYHRvICcke2NtZH0nIGNvbW1hbmQgYWZ0ZXIgJHtleGVjVGltZW91dH1tc2ApKSwgZXhlY1RpbWVvdXQpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjbGVhclRpbWVvdXQoZXhlY1RpbWVvdXRPYmopO1xuICAgICAgICBjbGllbnQuZW5kKCk7XG4gICAgICAgIGNvbnN0IG91dHB1dEFyciA9IG91dHB1dC5zcGxpdChlb2wpO1xuICAgICAgICAvLyByZW1vdmUgdGhlIHJlZHVuZGFudCBPSyBmbGFnIGZyb20gdGhlIHJlc3VsdGluZyBjb21tYW5kIG91dHB1dFxuICAgICAgICByZXR1cm4gcmVzb2x2ZShvdXRwdXRBcnIuc2xpY2UoMCwgb3V0cHV0QXJyLmxlbmd0aCAtIDEpLmpvaW4oJ1xcbicpLnRyaW0oKSk7XG4gICAgICB9IGVsc2UgaWYgKG5va0ZsYWcudGVzdChvdXRwdXQpKSB7XG4gICAgICAgIGNsZWFyVGltZW91dChpbml0VGltZW91dE9iaik7XG4gICAgICAgIGNsZWFyVGltZW91dChleGVjVGltZW91dE9iaik7XG4gICAgICAgIGNsaWVudC5lbmQoKTtcbiAgICAgICAgY29uc3Qgb3V0cHV0QXJyID0gb3V0cHV0LnNwbGl0KGVvbCk7XG4gICAgICAgIHJldHVybiByZWplY3QoXy50cmltKF8ubGFzdChvdXRwdXRBcnIpKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBFbXVWZXJzaW9uSW5mb1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSByZXZpc2lvbiBUaGUgYWN0dWFsIHJldmlzaW9uIG51bWJlciwgZm9yIGV4YW1wbGUgJzMwLjAuNSdcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gYnVpbGRJZCBUaGUgYnVpbGQgaWRlbnRpZmllciwgZm9yIGV4YW1wbGUgNjMwNjA0N1xuICovXG5cbi8qKlxuICogUmV0cmlldmVzIGVtdWxhdG9yIHZlcnNpb24gZnJvbSB0aGUgZmlsZSBzeXN0ZW1cbiAqXG4gKiBAcmV0dXJucyB7RW11VmVyc2lvbkluZm99IElmIG5vIHZlcnNpb24gaW5mbyBjb3VsZCBiZSBwYXJzZWQgdGhlbiBhbiBlbXB0eVxuICogb2JqZWN0IGlzIHJldHVybmVkXG4gKi9cbmVtdU1ldGhvZHMuZ2V0RW11VmVyc2lvbkluZm8gPSBhc3luYyBmdW5jdGlvbiBnZXRFbXVWZXJzaW9uSW5mbyAoKSB7XG4gIGNvbnN0IHByb3BzUGF0aCA9IHBhdGguam9pbih0aGlzLnNka1Jvb3QsICdlbXVsYXRvcicsICdzb3VyY2UucHJvcGVydGllcycpO1xuICBpZiAoIWF3YWl0IGZzLmV4aXN0cyhwcm9wc1BhdGgpKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgY29uc3QgY29udGVudCA9IGF3YWl0IGZzLnJlYWRGaWxlKHByb3BzUGF0aCwgJ3V0ZjgnKTtcbiAgY29uc3QgcmV2aXNpb25NYXRjaCA9IC9eUGtnXFwuUmV2aXNpb249KFtcXGQuXSspJC9tLmV4ZWMoY29udGVudCk7XG4gIGNvbnN0IHJlc3VsdCA9IHt9O1xuICBpZiAocmV2aXNpb25NYXRjaCkge1xuICAgIHJlc3VsdC5yZXZpc2lvbiA9IHJldmlzaW9uTWF0Y2hbMV07XG4gIH1cbiAgY29uc3QgYnVpbGRJZE1hdGNoID0gL15Qa2dcXC5CdWlsZElkPShcXGQrKSQvbS5leGVjKGNvbnRlbnQpO1xuICBpZiAoYnVpbGRJZE1hdGNoKSB7XG4gICAgcmVzdWx0LmJ1aWxkSWQgPSBwYXJzZUludChidWlsZElkTWF0Y2hbMV0sIDEwKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuLyoqXG4gKiBSZXRyaWV2ZXMgZW11bGF0b3IgaW1hZ2UgcHJvcGVydGllcyBmcm9tIHRoZSBsb2NhbCBmaWxlIHN5c3RlbVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhdmROYW1lIEVtdWxhdG9yIG5hbWUuIFNob3VsZCBOT1Qgc3RhcnQgd2l0aCAnQCcgY2hhcmFjdGVyXG4gKiBAdGhyb3dzIHtFcnJvcn0gaWYgdGhlcmUgd2FzIGEgZmFpbHVyZSB3aGlsZSBleHRyYWN0aW5nIHRoZSBwcm9wZXJ0aWVzXG4gKiBAcmV0dXJucyB7T2JqZWN0fSBUaGUgY29udGVudCBvZiBlbXVsYXRvciBpbWFnZSBwcm9wZXJ0aWVzIGZpbGUuXG4gKiBVc3VhbGx5IHRoaXMgY29uZmlndXJhdGlvbiAuaW5pIGZpbGUgaGFzIHRoZSBmb2xsb3dpbmcgY29udGVudDpcbiAqICAgYXZkLmluaS5lbmNvZGluZz1VVEYtOFxuICogICBwYXRoPS9Vc2Vycy91c2VybmFtZS8uYW5kcm9pZC9hdmQvUGl4ZWxfWExfQVBJXzMwLmF2ZFxuICogICBwYXRoLnJlbD1hdmQvUGl4ZWxfWExfQVBJXzMwLmF2ZFxuICogICB0YXJnZXQ9YW5kcm9pZC0zMFxuICovXG5lbXVNZXRob2RzLmdldEVtdUltYWdlUHJvcGVydGllcyA9IGFzeW5jIGZ1bmN0aW9uIGdldEVtdUltYWdlUHJvcGVydGllcyAoYXZkTmFtZSkge1xuICBjb25zdCBhdmRzID0gYXdhaXQgbGlzdEVtdWxhdG9ycygpO1xuICBjb25zdCBhdmQgPSBhdmRzLmZpbmQoKHtuYW1lfSkgPT4gbmFtZSA9PT0gYXZkTmFtZSk7XG4gIGlmICghYXZkKSB7XG4gICAgbGV0IG1zZyA9IGBDYW5ub3QgZmluZCAnJHthdmROYW1lfScgZW11bGF0b3IuIGA7XG4gICAgaWYgKF8uaXNFbXB0eShhdmRzKSkge1xuICAgICAgbXNnICs9IGBObyBlbXVsYXRvcnMgaGF2ZSBiZWVuIGRldGVjdGVkIG9uIHlvdXIgc3lzdGVtYDtcbiAgICB9IGVsc2Uge1xuICAgICAgbXNnICs9IGBBdmFpbGFibGUgYXZkIG5hbWVzIGFyZTogJHthdmRzLm1hcCgoe25hbWV9KSA9PiBuYW1lKX1gO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IobXNnKTtcbiAgfVxuICByZXR1cm4gaW5pLnBhcnNlKGF3YWl0IGZzLnJlYWRGaWxlKGF2ZC5jb25maWcsICd1dGY4JykpO1xufTtcblxuLyoqXG4gKiBDaGVjayBpZiBnaXZlbiBlbXVsYXRvciBleGlzdHMgaW4gdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGF2ZHMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGF2ZE5hbWUgLSBUaGUgbmFtZSBvZiBlbXVsYXRvciB0byB2ZXJpZnkgZm9yIGV4aXN0ZW5jZS5cbiAqIFNob3VsZCBOT1Qgc3RhcnQgd2l0aCAnQCcgY2hhcmFjdGVyXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIGVtdWxhdG9yIHdpdGggZ2l2ZW4gbmFtZSBkb2VzIG5vdCBleGlzdC5cbiAqL1xuZW11TWV0aG9kcy5jaGVja0F2ZEV4aXN0ID0gYXN5bmMgZnVuY3Rpb24gY2hlY2tBdmRFeGlzdCAoYXZkTmFtZSkge1xuICBjb25zdCBhdmRzID0gYXdhaXQgbGlzdEVtdWxhdG9ycygpO1xuICBpZiAoIWF2ZHMuc29tZSgoe25hbWV9KSA9PiBuYW1lID09PSBhdmROYW1lKSkge1xuICAgIGxldCBtc2cgPSBgQXZkICcke2F2ZE5hbWV9JyBpcyBub3QgYXZhaWxhYmxlLiBgO1xuICAgIGlmIChfLmlzRW1wdHkoYXZkcykpIHtcbiAgICAgIG1zZyArPSBgTm8gZW11bGF0b3JzIGhhdmUgYmVlbiBkZXRlY3RlZCBvbiB5b3VyIHN5c3RlbWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1zZyArPSBgUGxlYXNlIHNlbGVjdCB5b3VyIGF2ZCBuYW1lIGZyb20gb25lIG9mIHRoZXNlOiAnJHthdmRzLm1hcCgoe25hbWV9KSA9PiBuYW1lKX0nYDtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBlbXVNZXRob2RzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLE1BQU1BLG9CQUFvQixHQUFHLHFEQUE3QjtBQUVBLE1BQU1DLFVBQVUsR0FBRyxFQUFuQjtBQUNBQSxVQUFVLENBQUNDLGVBQVgsR0FBNkJDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjO0VBQ3pDQyxXQUFXLEVB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
@@ -228,4 +228,4 @@ var _default = manifestMethods;
228
228
  exports.default = _default;require('source-map-support').install();
229
229
 
230
230
 
231
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL3Rvb2xzL2FuZHJvaWQtbWFuaWZlc3QuanMiLCJuYW1lcyI6WyJtYW5pZmVzdE1ldGhvZHMiLCJwYWNrYWdlQW5kTGF1bmNoQWN0aXZpdHlGcm9tTWFuaWZlc3QiLCJhcHBQYXRoIiwiZW5kc1dpdGgiLCJBUEtTX0VYVEVOU0lPTiIsImV4dHJhY3RCYXNlQXBrIiwibWFuaWZlc3QiLCJhcGtSZWFkZXIiLCJBcGtSZWFkZXIiLCJvcGVuIiwicmVhZE1hbmlmZXN0IiwiZSIsImxvZyIsImRlYnVnIiwiRXJyb3IiLCJwa2ciLCJhY3Rpdml0eSIsImluZm8iLCJhcGtQYWNrYWdlIiwiYXBrQWN0aXZpdHkiLCJ0YXJnZXRTZGtWZXJzaW9uRnJvbU1hbmlmZXN0Iiwib3JpZ2luYWxBcHBQYXRoIiwiZ2V0VGFyZ2V0U2RrVmlhQXBrUmVhZGVyIiwidXNlc1NkayIsIl8iLCJpc0ludGVnZXIiLCJ0YXJnZXRTZGtWZXJzaW9uIiwiZ2V0VGFyZ2V0U2RrVmlhQWFwdCIsImluaXRBYXB0IiwiYXJncyIsInN0ZG91dCIsImJpbmFyaWVzIiwiYWFwdCIsImV4ZWMiLCJwYXJzZUludCIsInZlcnNpb25HZXR0ZXJzIiwidG9vbE5hbWUiLCJ2ZXJzaW9uR2V0dGVyIiwibWVzc2FnZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJtYXAiLCJwYWlyIiwidGFyZ2V0U2RrVmVyc2lvblVzaW5nUEtHIiwiY21kT3V0cHV0Iiwic2hlbGwiLCJSZWdFeHAiLCJsZW5ndGgiLCJjb21waWxlTWFuaWZlc3QiLCJtYW5pZmVzdFBhY2thZ2UiLCJ0YXJnZXRQYWNrYWdlIiwicGxhdGZvcm0iLCJwbGF0Zm9ybVBhdGgiLCJzZGtSb290IiwicmVzdWx0UGF0aCIsImFuZHJvaWRKYXJQYXRoIiwicGF0aCIsInJlc29sdmUiLCJmcyIsImV4aXN0cyIsInJpbXJhZiIsImluaXRBYXB0MiIsInV0aWwiLCJxdW90ZSIsImFhcHQyIiwic3RkZXJyIiwiZTEiLCJpbnNlcnRNYW5pZmVzdCIsInNyY0FwayIsImRzdEFwayIsInppcCIsImFzc2VydFZhbGlkWmlwIiwibWFuaWZlc3ROYW1lIiwiYmFzZW5hbWUiLCJjb3B5RmlsZSIsImlnbiIsImN3ZCIsImRpcm5hbWUiLCJ0bXBSb290IiwidGVtcERpciIsIm9wZW5EaXIiLCJleHRyYWN0QWxsVG8iLCJtdiIsInRvQXJjaGl2ZSIsImhhc0ludGVybmV0UGVybWlzc2lvbkZyb21NYW5pZmVzdCIsInVzZXNQZXJtaXNzaW9ucyIsInNvbWUiLCJuYW1lIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL3Rvb2xzL2FuZHJvaWQtbWFuaWZlc3QuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhlYyB9IGZyb20gJ3RlZW5fcHJvY2Vzcyc7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlci5qcyc7XG5pbXBvcnQge1xuICBnZXRBbmRyb2lkUGxhdGZvcm1BbmRQYXRoLCB1bnppcEZpbGUsXG4gIEFQS1NfRVhURU5TSU9OLCBwYXJzZU1hbmlmZXN0IH0gZnJvbSAnLi4vaGVscGVycy5qcyc7XG5pbXBvcnQgeyBmcywgemlwLCB0ZW1wRGlyLCB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBBcGtSZWFkZXIgZnJvbSAnYWRia2l0LWFwa3JlYWRlcic7XG5cbmxldCBtYW5pZmVzdE1ldGhvZHMgPSB7fTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBBUEtJbmZvXG4gKiBAcHJvcGVydHkge3N0cmluZ30gYXBrUGFja2FnZSAtIFRoZSBuYW1lIG9mIGFwcGxpY2F0aW9uIHBhY2thZ2UsIGZvciBleGFtcGxlICdjb20uYWNtZS5hcHAnLlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGFwa0FjdGl2aXR5IC0gVGhlIG5hbWUgb2YgbWFpbiBhcHBsaWNhdGlvbiBhY3Rpdml0eS5cbiAqL1xuXG4vKipcbiAqIEV4dHJhY3QgcGFja2FnZSBhbmQgbWFpbiBhY3Rpdml0eSBuYW1lIGZyb20gYXBwbGljYXRpb24gbWFuaWZlc3QuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFwcFBhdGggLSBUaGUgZnVsbCBwYXRoIHRvIGFwcGxpY2F0aW9uIC5hcGsocykgcGFja2FnZVxuICogQHJldHVybiB7QVBLSW5mb30gVGhlIHBhcnNlZCBhcHBsaWNhdGlvbiBpbmZvLlxuICogQHRocm93cyB7ZXJyb3J9IElmIHRoZXJlIHdhcyBhbiBlcnJvciB3aGlsZSBnZXR0aW5nIHRoZSBkYXRhIGZyb20gdGhlIGdpdmVuXG4gKiAgICAgICAgICAgICAgICAgYXBwbGljYXRpb24gcGFja2FnZS5cbiAqL1xubWFuaWZlc3RNZXRob2RzLnBhY2thZ2VBbmRMYXVuY2hBY3Rpdml0eUZyb21NYW5pZmVzdCA9IGFzeW5jIGZ1bmN0aW9uIHBhY2thZ2VBbmRMYXVuY2hBY3Rpdml0eUZyb21NYW5pZmVzdCAoYXBwUGF0aCkge1xuICBpZiAoYXBwUGF0aC5lbmRzV2l0aChBUEtTX0VYVEVOU0lPTikpIHtcbiAgICBhcHBQYXRoID0gYXdhaXQgdGhpcy5leHRyYWN0QmFzZUFwayhhcHBQYXRoKTtcbiAgfVxuXG4gIGxldCBtYW5pZmVzdDtcbiAgdHJ5IHtcbiAgICBjb25zdCBhcGtSZWFkZXIgPSBhd2FpdCBBcGtSZWFkZXIub3BlbihhcHBQYXRoKTtcbiAgICBtYW5pZmVzdCA9IGF3YWl0IGFwa1JlYWRlci5yZWFkTWFuaWZlc3QoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZy5kZWJ1ZyhlKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBleHRyYWN0IGEgbWFuaWZlc3QgZnJvbSAnJHthcHBQYXRofScuIGAgK1xuICAgICAgYElzIGl0IGEgdmFsaWQgQW5kcm9pZCBhcHBsaWNhdGlvbj9gKTtcbiAgfVxuICBjb25zdCB7cGtnLCBhY3Rpdml0eX0gPSBwYXJzZU1hbmlmZXN0KG1hbmlmZXN0KTtcbiAgbG9nLmluZm8oYFBhY2thZ2UgbmFtZTogJyR7cGtnfSdgKTtcbiAgbG9nLmluZm8oYE1haW4gYWN0aXZpdHkgbmFtZTogJyR7YWN0aXZpdHl9J2ApO1xuICByZXR1cm4ge1xuICAgIGFwa1BhY2thZ2U6IHBrZyxcbiAgICBhcGtBY3Rpdml0eTogYWN0aXZpdHksXG4gIH07XG59O1xuXG4vKipcbiAqIEV4dHJhY3QgdGFyZ2V0IFNESyB2ZXJzaW9uIGZyb20gYXBwbGljYXRpb24gbWFuaWZlc3QuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFwcFBhdGggLSBUaGUgZnVsbCBwYXRoIHRvIC5hcGsocykgcGFja2FnZS5cbiAqIEByZXR1cm4ge251bWJlcn0gVGhlIHZlcnNpb24gb2YgdGhlIHRhcmdldCBTREsuXG4gKiBAdGhyb3dzIHtlcnJvcn0gSWYgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIGdldHRpbmcgdGhlIGRhdGEgZnJvbSB0aGUgZ2l2ZW5cbiAqICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbiBwYWNrYWdlLlxuICovXG5tYW5pZmVzdE1ldGhvZHMudGFyZ2V0U2RrVmVyc2lvbkZyb21NYW5pZmVzdCA9IGFzeW5jIGZ1bmN0aW9uIHRhcmdldFNka1ZlcnNpb25Gcm9tTWFuaWZlc3QgKGFwcFBhdGgpIHtcbiAgbG9nLmRlYnVnKGBFeHRyYWN0aW5nIHRhcmdldCBTREsgdmVyc2lvbiBvZiAnJHthcHBQYXRofSdgKTtcbiAgY29uc3Qgb3JpZ2luYWxBcHBQYXRoID0gYXBwUGF0aDtcbiAgaWYgKGFwcFBhdGguZW5kc1dpdGgoQVBLU19FWFRFTlNJT04pKSB7XG4gICAgYXBwUGF0aCA9IGF3YWl0IHRoaXMuZXh0cmFjdEJhc2VBcGsoYXBwUGF0aCk7XG4gIH1cblxuICBjb25zdCBnZXRUYXJnZXRTZGtWaWFBcGtSZWFkZXIgPSBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgYXBrUmVhZGVyID0gYXdhaXQgQXBrUmVhZGVyLm9wZW4oYXBwUGF0aCk7XG4gICAgY29uc3QgbWFuaWZlc3QgPSBhd2FpdCBhcGtSZWFkZXIucmVhZE1hbmlmZXN0KCk7XG4gICAgaWYgKG1hbmlmZXN0LnVzZXNTZGsgJiYgXy5pc0ludGVnZXIobWFuaWZlc3QudXNlc1Nkay50YXJnZXRTZGtWZXJzaW9uKSkge1xuICAgICAgcmV0dXJuIG1hbmlmZXN0LnVzZXNTZGsudGFyZ2V0U2RrVmVyc2lvbjtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgZmluZCB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGFyZ2V0U2RrVmVyc2lvbiBpbiB0aGUgbWFuaWZlc3QnKTtcbiAgfTtcbiAgY29uc3QgZ2V0VGFyZ2V0U2RrVmlhQWFwdCA9IGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCB0aGlzLmluaXRBYXB0KCk7XG4gICAgY29uc3QgYXJncyA9IFsnZHVtcCcsICdiYWRnaW5nJywgYXBwUGF0aF07XG4gICAgY29uc3Qge3N0ZG91dH0gPSBhd2FpdCBleGVjKHRoaXMuYmluYXJpZXMuYWFwdCwgYXJncyk7XG4gICAgY29uc3QgdGFyZ2V0U2RrVmVyc2lvbiA9IC90YXJnZXRTZGtWZXJzaW9uOicoW14nXSspJy9nLmV4ZWMoc3Rkb3V0KTtcbiAgICBpZiAoIXRhcmdldFNka1ZlcnNpb24pIHtcbiAgICAgIGxvZy5kZWJ1ZyhzdGRvdXQpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgcGFyc2UgdGhlIGNvbW1hbmQgb3V0cHV0Jyk7XG4gICAgfVxuICAgIHJldHVybiBwYXJzZUludCh0YXJnZXRTZGtWZXJzaW9uWzFdLCAxMCk7XG4gIH07XG4gIGNvbnN0IHZlcnNpb25HZXR0ZXJzID0gW1xuICAgIFsnQXBrUmVhZGVyJywgZ2V0VGFyZ2V0U2RrVmlhQXBrUmVhZGVyXSxcbiAgICBbJ2FhcHQnLCBnZXRUYXJnZXRTZGtWaWFBYXB0XSxcbiAgXTtcbiAgZm9yIChjb25zdCBbdG9vbE5hbWUsIHZlcnNpb25HZXR0ZXJdIG9mIHZlcnNpb25HZXR0ZXJzKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCB2ZXJzaW9uR2V0dGVyKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgbG9nLmluZm8oYENhbm5vdCBleHRyYWN0IHRhcmdldFNka1ZlcnNpb24gb2YgJyR7b3JpZ2luYWxBcHBQYXRofScgdXNpbmcgJHt0b29sTmFtZX0uIGAgK1xuICAgICAgICBgT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBleHRyYWN0IHRoZSB0YXJnZXQgU0RLIHZlcnNpb24gbnVtYmVyIG9mICcke29yaWdpbmFsQXBwUGF0aH0nIHVzaW5nIGVpdGhlciBvZiBgICtcbiAgICBgJHtKU09OLnN0cmluZ2lmeSh2ZXJzaW9uR2V0dGVycy5tYXAoKHBhaXIpID0+IHBhaXJbMF0pKX0gdG9vbHMuIGAgK1xuICAgIGBDaGVjayB0aGUgc2VydmVyIGxvZyBmb3IgbW9yZSBkZXRhaWxzYCk7XG59O1xuXG4vKipcbiAqIEV4dHJhY3QgdGFyZ2V0IFNESyB2ZXJzaW9uIGZyb20gcGFja2FnZSBpbmZvcm1hdGlvbi5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gcGtnIC0gVGhlIGNsYXNzIG5hbWUgb2YgdGhlIHBhY2thZ2UgaW5zdGFsbGVkIG9uIHRoZSBkZXZpY2UgdW5kZXIgdGVzdC5cbiAqIEBwYXJhbSB7P3N0cmluZ30gY21kT3V0cHV0IC0gT3B0aW9uYWwgcGFyYW1ldGVyIGNvbnRhaW5pbmcgdGhlIG91dHB1dCBvZlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZHVtcHN5cyBwYWNrYWdlXyBjb21tYW5kLiBJdCBtYXkgc3BlZWQgdXAgdGhlIG1ldGhvZCBleGVjdXRpb24uXG4gKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSB2ZXJzaW9uIG9mIHRoZSB0YXJnZXQgU0RLLlxuICovXG5tYW5pZmVzdE1ldGhvZHMudGFyZ2V0U2RrVmVyc2lvblVzaW5nUEtHID0gYXN5bmMgZnVuY3Rpb24gdGFyZ2V0U2RrVmVyc2lvblVzaW5nUEtHIChwa2csIGNtZE91dHB1dCA9IG51bGwpIHtcbiAgbGV0IHN0ZG91dCA9IGNtZE91dHB1dCB8fCBhd2FpdCB0aGlzLnNoZWxsKFsnZHVtcHN5cycsICdwYWNrYWdlJywgcGtnXSk7XG4gIGxldCB0YXJnZXRTZGtWZXJzaW9uID0gbmV3IFJlZ0V4cCgvdGFyZ2V0U2RrPShbXlxcc1xcc10rKS9nKS5leGVjKHN0ZG91dCk7XG4gIGlmICh0YXJnZXRTZGtWZXJzaW9uICYmIHRhcmdldFNka1ZlcnNpb24ubGVuZ3RoID49IDIpIHtcbiAgICB0YXJnZXRTZGtWZXJzaW9uID0gdGFyZ2V0U2RrVmVyc2lvblsxXTtcbiAgfSBlbHNlIHtcbiAgICAvLyB0YXJnZXRTZGsgbm90IGZvdW5kIGluIHRoZSBkdW1wLCBhc3NpZ25pbmcgMCB0byB0YXJnZXRTZGtWZXJzaW9uXG4gICAgdGFyZ2V0U2RrVmVyc2lvbiA9IDA7XG4gIH1cbiAgcmV0dXJuIHBhcnNlSW50KHRhcmdldFNka1ZlcnNpb24sIDEwKTtcbn07XG5cbi8qKlxuICogQ3JlYXRlIGJpbmFyeSByZXByZXNlbnRhdGlvbiBvZiBwYWNrYWdlIG1hbmlmZXN0ICh1c3VhbGx5IEFuZHJvaWRNYW5pZmVzdC54bWwpLlxuICogYCR7bWFuaWZlc3R9LmFwa2AgZmlsZSB3aWxsIGJlIGNyZWF0ZWQgYXMgdGhlIHJlc3VsdCBvZiB0aGlzIG1ldGhvZFxuICogY29udGFpbmluZyB0aGUgY29tcGlsZWQgbWFuaWZlc3QuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IG1hbmlmZXN0IC0gRnVsbCBwYXRoIHRvIHRoZSBpbml0aWFsIG1hbmlmZXN0IHRlbXBsYXRlXG4gKiBAcGFyYW0ge3N0cmluZ30gbWFuaWZlc3RQYWNrYWdlIC0gVGhlIG5hbWUgb2YgdGhlIG1hbmlmZXN0IHBhY2thZ2VcbiAqIEBwYXJhbSB7c3RyaW5nfSB0YXJnZXRQYWNrYWdlIC0gVGhlIG5hbWUgb2YgdGhlIGRlc3RpbmF0aW9uIHBhY2thZ2VcbiAqL1xubWFuaWZlc3RNZXRob2RzLmNvbXBpbGVNYW5pZmVzdCA9IGFzeW5jIGZ1bmN0aW9uIGNvbXBpbGVNYW5pZmVzdCAobWFuaWZlc3QsIG1hbmlmZXN0UGFja2FnZSwgdGFyZ2V0UGFja2FnZSkge1xuICBjb25zdCB7cGxhdGZvcm0sIHBsYXRmb3JtUGF0aH0gPSBhd2FpdCBnZXRBbmRyb2lkUGxhdGZvcm1BbmRQYXRoKHRoaXMuc2RrUm9vdCk7XG4gIGlmICghcGxhdGZvcm0pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBjb21waWxlIHRoZSBtYW5pZmVzdC4gVGhlIHJlcXVpcmVkIHBsYXRmb3JtIGRvZXMgbm90IGV4aXN0IChBUEkgbGV2ZWwgPj0gMTcpJyk7XG4gIH1cbiAgY29uc3QgcmVzdWx0UGF0aCA9IGAke21hbmlmZXN0fS5hcGtgO1xuICBjb25zdCBhbmRyb2lkSmFyUGF0aCA9IHBhdGgucmVzb2x2ZShwbGF0Zm9ybVBhdGgsICdhbmRyb2lkLmphcicpO1xuICBpZiAoYXdhaXQgZnMuZXhpc3RzKHJlc3VsdFBhdGgpKSB7XG4gICAgYXdhaXQgZnMucmltcmFmKHJlc3VsdFBhdGgpO1xuICB9XG4gIHRyeSB7XG4gICAgYXdhaXQgdGhpcy5pbml0QWFwdDIoKTtcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hbmRyb2lkLmNvbS9zdHVkaW8vY29tbWFuZC1saW5lL2FhcHQyXG4gICAgY29uc3QgYXJncyA9IFtcbiAgICAgICdsaW5rJyxcbiAgICAgICctbycsIHJlc3VsdFBhdGgsXG4gICAgICAnLS1tYW5pZmVzdCcsIG1hbmlmZXN0LFxuICAgICAgJy0tcmVuYW1lLW1hbmlmZXN0LXBhY2thZ2UnLCBtYW5pZmVzdFBhY2thZ2UsXG4gICAgICAnLS1yZW5hbWUtaW5zdHJ1bWVudGF0aW9uLXRhcmdldC1wYWNrYWdlJywgdGFyZ2V0UGFja2FnZSxcbiAgICAgICctSScsIGFuZHJvaWRKYXJQYXRoLFxuICAgICAgJy12JyxcbiAgICBdO1xuICAgIGxvZy5kZWJ1ZyhgQ29tcGlsaW5nIHRoZSBtYW5pZmVzdCB1c2luZyAnJHt1dGlsLnF1b3RlKFt0aGlzLmJpbmFyaWVzLmFhcHQyLCAuLi5hcmdzXSl9J2ApO1xuICAgIGF3YWl0IGV4ZWModGhpcy5iaW5hcmllcy5hYXB0MiwgYXJncyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2cuZGVidWcoJ0Nhbm5vdCBjb21waWxlIHRoZSBtYW5pZmVzdCB1c2luZyBhYXB0Mi4gRGVmYXVsdGluZyB0byBhYXB0LiAnICtcbiAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlLnN0ZGVyciB8fCBlLm1lc3NhZ2V9YCk7XG4gICAgYXdhaXQgdGhpcy5pbml0QWFwdCgpO1xuICAgIGNvbnN0IGFyZ3MgPSBbXG4gICAgICAncGFja2FnZScsXG4gICAgICAnLU0nLCBtYW5pZmVzdCxcbiAgICAgICctLXJlbmFtZS1tYW5pZmVzdC1wYWNrYWdlJywgbWFuaWZlc3RQYWNrYWdlLFxuICAgICAgJy0tcmVuYW1lLWluc3RydW1lbnRhdGlvbi10YXJnZXQtcGFja2FnZScsIHRhcmdldFBhY2thZ2UsXG4gICAgICAnLUknLCBhbmRyb2lkSmFyUGF0aCxcbiAgICAgICctRicsIHJlc3VsdFBhdGgsXG4gICAgICAnLWYnLFxuICAgIF07XG4gICAgbG9nLmRlYnVnKGBDb21waWxpbmcgdGhlIG1hbmlmZXN0IHVzaW5nICcke3V0aWwucXVvdGUoW3RoaXMuYmluYXJpZXMuYWFwdCwgLi4uYXJnc10pfSdgKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZXhlYyh0aGlzLmJpbmFyaWVzLmFhcHQsIGFyZ3MpO1xuICAgIH0gY2F0Y2ggKGUxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBjb21waWxlIHRoZSBtYW5pZmVzdC4gT3JpZ2luYWwgZXJyb3I6ICR7ZTEuc3RkZXJyIHx8IGUxLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG4gIGxvZy5kZWJ1ZyhgQ29tcGlsZWQgdGhlIG1hbmlmZXN0IGF0ICcke3Jlc3VsdFBhdGh9J2ApO1xufTtcblxuLyoqXG4gKiBSZXBsYWNlL2luc2VydCB0aGUgc3BlY2lhbGx5IHByZWNvbXBpbGVkIG1hbmlmZXN0IGZpbGUgaW50byB0aGVcbiAqIHBhcnRpY3VsYXIgcGFja2FnZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWFuaWZlc3QgLSBGdWxsIHBhdGggdG8gdGhlIHByZWNvbXBpbGVkIG1hbmlmZXN0XG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkIGJ5IGBjb21waWxlTWFuaWZlc3RgIG1ldGhvZCBjYWxsXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRob3V0IC5hcGsgZXh0ZW5zaW9uXG4gKiBAcGFyYW0ge3N0cmluZ30gc3JjQXBrIC0gRnVsbCBwYXRoIHRvIHRoZSBleGlzdGluZyB2YWxpZCBhcHBsaWNhdGlvbiBwYWNrYWdlLCB3aGVyZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMgbWFuaWZlc3QgaGFzIHRvIGJlIGluc2V0cmVkIHRvLiBUaGlzIHBhY2thZ2VcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICB3aWxsIE5PVCBiZSBtb2RpZmllZC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkc3RBcGsgLSBGdWxsIHBhdGggdG8gdGhlIHJlc3VsdGluZyBwYWNrYWdlLlxuICogICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmaWxlIHdpbGwgYmUgb3ZlcnJpZGRlbiBpZiBpdCBhbHJlYWR5IGV4aXN0cy5cbiAqL1xubWFuaWZlc3RNZXRob2RzLmluc2VydE1hbmlmZXN0ID0gYXN5bmMgZnVuY3Rpb24gaW5zZXJ0TWFuaWZlc3QgKG1hbmlmZXN0LCBzcmNBcGssIGRzdEFwaykge1xuICBsb2cuZGVidWcoYEluc2VydGluZyBtYW5pZmVzdCAnJHttYW5pZmVzdH0nLCBzcmM6ICcke3NyY0Fwa30nLCBkc3Q6ICcke2RzdEFwa30nYCk7XG4gIGF3YWl0IHppcC5hc3NlcnRWYWxpZFppcChzcmNBcGspO1xuICBhd2FpdCB1bnppcEZpbGUoYCR7bWFuaWZlc3R9LmFwa2ApO1xuICBjb25zdCBtYW5pZmVzdE5hbWUgPSBwYXRoLmJhc2VuYW1lKG1hbmlmZXN0KTtcbiAgdHJ5IHtcbiAgICBhd2FpdCB0aGlzLmluaXRBYXB0KCk7XG4gICAgYXdhaXQgZnMuY29weUZpbGUoc3JjQXBrLCBkc3RBcGspO1xuICAgIGxvZy5kZWJ1ZygnTW92aW5nIG1hbmlmZXN0Jyk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGV4ZWModGhpcy5iaW5hcmllcy5hYXB0LCBbXG4gICAgICAgICdyZW1vdmUnLCBkc3RBcGssIG1hbmlmZXN0TmFtZVxuICAgICAgXSk7XG4gICAgfSBjYXRjaCAoaWduKSB7fVxuICAgIGF3YWl0IGV4ZWModGhpcy5iaW5hcmllcy5hYXB0LCBbXG4gICAgICAnYWRkJywgZHN0QXBrLCBtYW5pZmVzdE5hbWVcbiAgICBdLCB7Y3dkOiBwYXRoLmRpcm5hbWUobWFuaWZlc3QpfSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2cuZGVidWcoJ0Nhbm5vdCBpbnNlcnQgbWFuaWZlc3QgdXNpbmcgYWFwdC4gRGVmYXVsdGluZyB0byB6aXAuICcgK1xuICAgICAgYE9yaWdpbmFsIGVycm9yOiAke2Uuc3RkZXJyIHx8IGUubWVzc2FnZX1gKTtcbiAgICBjb25zdCB0bXBSb290ID0gYXdhaXQgdGVtcERpci5vcGVuRGlyKCk7XG4gICAgdHJ5IHtcbiAgICAgIC8vIFVuZm9ydHVuYXRlbHkgTm9kZUpTIGRvZXMgbm90IHByb3ZpZGUgYW55IHJlbGlhYmxlIG1ldGhvZHNcbiAgICAgIC8vIHRvIHJlcGxhY2UgZmlsZXMgaW5zaWRlIHppcCBhcmNoaXZlcyB3aXRob3V0IGxvYWRpbmcgdGhlXG4gICAgICAvLyB3aG9sZSBhcmNoaXZlIGNvbnRlbnQgaW50byBSQU1cbiAgICAgIGxvZy5kZWJ1ZyhgRXh0cmFjdGluZyB0aGUgc291cmNlIGFwayBhdCAnJHtzcmNBcGt9J2ApO1xuICAgICAgYXdhaXQgemlwLmV4dHJhY3RBbGxUbyhzcmNBcGssIHRtcFJvb3QpO1xuICAgICAgbG9nLmRlYnVnKCdNb3ZpbmcgbWFuaWZlc3QnKTtcbiAgICAgIGF3YWl0IGZzLm12KG1hbmlmZXN0LCBwYXRoLnJlc29sdmUodG1wUm9vdCwgbWFuaWZlc3ROYW1lKSk7XG4gICAgICBsb2cuZGVidWcoYENvbGxlY3RpbmcgdGhlIGRlc3RpbmF0aW9uIGFwayBhdCAnJHtkc3RBcGt9J2ApO1xuICAgICAgYXdhaXQgemlwLnRvQXJjaGl2ZShkc3RBcGssIHtcbiAgICAgICAgY3dkOiB0bXBSb290LFxuICAgICAgfSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGF3YWl0IGZzLnJpbXJhZih0bXBSb290KTtcbiAgICB9XG4gIH1cbiAgbG9nLmRlYnVnKGBNYW5pZmVzdCBpbnNlcnRpb24gaW50byAnJHtkc3RBcGt9JyBpcyBjb21wbGV0ZWRgKTtcbn07XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciBwYWNrYWdlIG1hbmlmZXN0IGNvbnRhaW5zIEludGVybmV0IHBlcm1pc3Npb25zLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcHBQYXRoIC0gVGhlIGZ1bGwgcGF0aCB0byAuYXBrKHMpIHBhY2thZ2UuXG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBtYW5pZmVzdCByZXF1aXJlcyBJbnRlcm5ldCBhY2Nlc3MgcGVybWlzc2lvbi5cbiAqL1xubWFuaWZlc3RNZXRob2RzLmhhc0ludGVybmV0UGVybWlzc2lvbkZyb21NYW5pZmVzdCA9IGFzeW5jIGZ1bmN0aW9uIGhhc0ludGVybmV0UGVybWlzc2lvbkZyb21NYW5pZmVzdCAoYXBwUGF0aCkge1xuICBsb2cuZGVidWcoYENoZWNraW5nIGlmICcke2FwcFBhdGh9JyByZXF1aXJlcyBpbnRlcm5ldCBhY2Nlc3MgcGVybWlzc2lvbiBpbiB0aGUgbWFuaWZlc3RgKTtcbiAgaWYgKGFwcFBhdGguZW5kc1dpdGgoQVBLU19FWFRFTlNJT04pKSB7XG4gICAgYXBwUGF0aCA9IGF3YWl0IHRoaXMuZXh0cmFjdEJhc2VBcGsoYXBwUGF0aCk7XG4gIH1cblxuICBjb25zdCBhcGtSZWFkZXIgPSBhd2FpdCBBcGtSZWFkZXIub3BlbihhcHBQYXRoKTtcbiAgY29uc3QgbWFuaWZlc3QgPSBhd2FpdCBhcGtSZWFkZXIucmVhZE1hbmlmZXN0KCk7XG4gIHJldHVybiAobWFuaWZlc3QudXNlc1Blcm1pc3Npb25zIHx8IFtdKS5zb21lKCh7bmFtZX0pID0+IG5hbWUgPT09ICdhbmRyb2lkLnBlcm1pc3Npb24uSU5URVJORVQnKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG1hbmlmZXN0TWV0aG9kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxJQUFJQSxlQUFlLEdBQUcsRUFBdEI7O0FBZ0JBQSxlQUFlLENBQUNDLG9DQUFoQixHQUF1RCxlQUFlQSxvQ0FBZixDQUFxREMsT0FBckQsRUFBOEQ7RUFDbkgsSUFBSUEsT0FBTyxDQUFDQyxRQUFSLENBQWlCQyx1QkFBakIsQ0FBSixFQUFzQztJQUNwQ0YsT0FBTyxHQUFHLE1BQU0sS0FBS0csY0FBTCxDQUFvQkgsT0FBcEIsQ0FBaEI7RUFDRDs7RUFFRCxJQUFJSSxRQUFKOztFQUNBLElBQUk7SUFDRixNQUFNQyxTQUFTLEdBQUcsTUFBTUMseUJBQVVDLElBQVYsQ0FBZVAsT0FBZixDQUF4QjtJQUNBSSxRQUFRLEdBQUcsTUFBTUMsU0FBUyxDQUFDRyxZQUFWLEVBQWpCO0VBQ0QsQ0FIRCxDQUdFLE9BQU9DLENBQVAsRUFBVTtJQUNWQyxnQkFBSUMsS0FBSixDQUFVRixDQUFWOztJQUNBLE1BQU0sSUFBSUcsS0FBSixDQUFXLG1DQUFrQ1osT0FBUSxLQUEzQyxHQUNiLG9DQURHLENBQU47RUFFRDs7RUFDRCxNQUFNO0lBQUNhLEdBQUQ7SUFBTUM7RUFBTixJQUFrQiw0QkFBY1YsUUFBZCxDQUF4Qjs7RUFDQU0sZ0JBQUlLLElBQUosQ0FBVSxrQkFBaUJGLEdBQUksR0FBL0I7O0VBQ0FILGdCQUFJSyxJQUFKLENBQVUsd0JBQXVCRCxRQUFTLEdBQTFDOztFQUNBLE9BQU87SUFDTEUsVUFBVSxFQUFFSCxHQURQO0lBRUxJLFdBQVcsRUFBRUg7RUFGUixDQUFQO0FBSUQsQ0FyQkQ7O0FBK0JBaEIsZUFBZSxDQUFDb0IsNEJBQWhCLEdBQStDLGVBQWVBLDRCQUFmLENBQTZDbEIsT0FBN0MsRUFBc0Q7RUFDbkdVLGdCQUFJQyxLQUFKLENBQVcscUNBQW9DWCxPQUFRLEdBQXZEOztFQUNBLE1BQU1tQixlQUFlLEdBQUduQixPQUF4Qjs7RUFDQSxJQUFJQSxPQUFPLENBQUNDLFFBQVIsQ0FBaUJDLHVCQUFqQixDQUFKLEVBQXNDO0lBQ3BDRixPQUFPLEdBQUcsTUFBTSxLQUFLRyxjQUFMLENBQW9CSCxPQUFwQixDQUFoQjtFQUNEOztFQUVELE1BQU1vQix3QkFBd0IsR0FBRyxZQUFZO0lBQzNDLE1BQU1mLFNBQVMsR0FBRyxNQUFNQyx5QkFBVUMsSUFBVixDQUFlUCxPQUFmLENBQXhCO0lBQ0EsTUFBTUksUUFBUSxHQUFHLE1BQU1DLFNBQVMsQ0FBQ0csWUFBVixFQUF2Qjs7SUFDQSxJQUFJSixRQUFRLENBQUNpQixPQUFULElBQW9CQyxnQkFBRUMsU0FBRixDQUFZbkIsUUFBUSxDQUFDaUIsT0FBVCxDQUFpQkcsZ0JBQTdCLENBQXhCLEVBQXdFO01BQ3RFLE9BQU9wQixRQUFRLENBQUNpQixPQUFULENBQWlCRyxnQkFBeEI7SUFDRDs7SUFDRCxNQUFNLElBQUlaLEtBQUosQ0FBVSxvRUFBVixDQUFOO0VBQ0QsQ0FQRDs7RUFRQSxNQUFNYSxtQkFBbUIsR0FBRyxZQUFZO0lBQ3RDLE1BQU0sS0FBS0MsUUFBTCxFQUFOO0lBQ0EsTUFBTUMsSUFBSSxHQUFHLENBQUMsTUFBRCxFQUFTLFNBQVQsRUFBb0IzQixPQUFwQixDQUFiO0lBQ0EsTUFBTTtNQUFDNEI7SUFBRCxJQUFXLE1BQU0sd0JBQUssS0FBS0MsUUFBTCxDQUFjQyxJQUFuQixFQUF5QkgsSUFBekIsQ0FBdkI7SUFDQSxNQUFNSCxnQkFBZ0IsR0FBRyw4QkFBOEJPLElBQTlCLENBQW1DSCxNQUFuQyxDQUF6Qjs7SUFDQSxJQUFJLENBQUNKLGdCQUFMLEVBQXVCO01BQ3JCZCxnQkFBSUMsS0FBSixDQUFVaUIsTUFBVjs7TUFDQSxNQUFNLElBQUloQixLQUFKLENBQVUsaUNBQVYsQ0FBTjtJQUNEOztJQUNELE9BQU9vQixRQUFRLENBQUNSLGdCQUFnQixDQUFDLENBQUQsQ0FBakIsRUFBc0IsRUFBdEIsQ0FBZjtFQUNELENBVkQ7O0VBV0EsTUFBTVMsY0FBYyxHQUFHLENBQ3JCLENBQUMsV0FBRCxFQUFjYix3QkFBZCxDQURxQixFQUVyQixDQUFDLE1BQUQsRUFBU0ssbUJBQVQsQ0FGcUIsQ0FBdkI7O0VBSUEsS0FBSyxNQUFNLENBQUNTLFFBQUQsRUFBV0MsYUFBWCxDQUFYLElBQXdDRixjQUF4QyxFQUF3RDtJQUN0RCxJQUFJO01BQ0YsT0FBTyxNQUFNRSxhQUFhLEVBQTFCO0lBQ0QsQ0FGRCxDQUVFLE9BQU8xQixDQUFQLEVBQVU7TUFDVkMsZ0JBQUlLLElBQUosQ0FBVSx1Q0FBc0NJLGVBQWdCLFdBQVVlLFFBQVMsSUFBMUUsR0FDTixtQkFBa0J6QixDQUFDLENBQUMyQixPQUFRLEVBRC9CO0lBRUQ7RUFDRjs7RUFDRCxNQUFNLElBQUl4QixLQUFKLENBQVcsb0RBQW1ETyxlQUFnQixvQkFBcEUsR0FDYixHQUFFa0IsSUFBSSxDQUFDQyxTQUFMLENBQWVMLGNBQWMsQ0FBQ00sR0FBZixDQUFvQkMsSUFBRCxJQUFVQSxJQUFJLENBQUMsQ0FBRCxDQUFqQyxDQUFmLENBQXNELFVBRDNDLEdBRWIsdUNBRkcsQ0FBTjtBQUdELENBekNEOztBQW1EQTFDLGVBQWUsQ0FBQzJDLHdCQUFoQixHQUEyQyxlQUFlQSx3QkFBZixDQUF5QzVCLEdBQXpDLEVBQThDNkIsU0FBUyxHQUFHLElBQTFELEVBQWdFO0VBQ3pHLElBQUlkLE1BQU0sR0FBR2MsU0FBUyxLQUFJLE1BQU0sS0FBS0MsS0FBTCxDQUFXLENBQUMsU0FBRCxFQUFZLFNBQVosRUFBdUI5QixHQUF2QixDQUFYLENBQVYsQ0FBdEI7RUFDQSxJQUFJVyxnQkFBZ0IsR0FBRyxJQUFJb0IsTUFBSixDQUFXLHVCQUFYLEVBQW9DYixJQUFwQyxDQUF5Q0gsTUFBekMsQ0FBdkI7O0VBQ0EsSUFBSUosZ0JBQWdCLElBQUlBLGdCQUFnQixDQUFDcUIsTUFBakIsSUFBMkIsQ0FBbkQsRUFBc0Q7SUFDcERyQixnQkFBZ0IsR0FBR0EsZ0JBQWdCLENBQUMsQ0FBRCxDQUFuQztFQUNELENBRkQsTUFFTztJQUVMQSxnQkFBZ0IsR0FBRyxDQUFuQjtFQUNEOztFQUNELE9BQU9RLFFBQVEsQ0FBQ1IsZ0JBQUQsRUFBbUIsRUFBbkIsQ0FBZjtBQUNELENBVkQ7O0FBcUJBMUIsZUFBZSxDQUFDZ0QsZUFBaEIsR0FBa0MsZUFBZUEsZUFBZixDQUFnQzFDLFFBQWhDLEVBQTBDMkMsZUFBMUMsRUFBMkRDLGFBQTNELEVBQTBFO0VBQzFHLE1BQU07SUFBQ0MsUUFBRDtJQUFXQztFQUFYLElBQTJCLE1BQU0sd0NBQTBCLEtBQUtDLE9BQS9CLENBQXZDOztFQUNBLElBQUksQ0FBQ0YsUUFBTCxFQUFlO0lBQ2IsTUFBTSxJQUFJckMsS0FBSixDQUFVLHFGQUFWLENBQU47RUFDRDs7RUFDRCxNQUFNd0MsVUFBVSxHQUFJLEdBQUVoRCxRQUFTLE1BQS9COztFQUNBLE1BQU1pRCxjQUFjLEdBQUdDLGNBQUtDLE9BQUwsQ0FBYUwsWUFBYixFQUEyQixhQUEzQixDQUF2Qjs7RUFDQSxJQUFJLE1BQU1NLFlBQUdDLE1BQUgsQ0FBVUwsVUFBVixDQUFWLEVBQWlDO0lBQy9CLE1BQU1JLFlBQUdFLE1BQUgsQ0FBVU4sVUFBVixDQUFOO0VBQ0Q7O0VBQ0QsSUFBSTtJQUNGLE1BQU0sS0FBS08sU0FBTCxFQUFOO0lBRUEsTUFBTWhDLElBQUksR0FBRyxDQUNYLE1BRFcsRUFFWCxJQUZXLEVBRUx5QixVQUZLLEVBR1gsWUFIVyxFQUdHaEQsUUFISCxFQUlYLDJCQUpXLEVBSWtCMkMsZUFKbEIsRUFLWCx5Q0FMVyxFQUtnQ0MsYUFMaEMsRUFNWCxJQU5XLEVBTUxLLGNBTkssRUFPWCxJQVBXLENBQWI7O0lBU0EzQyxnQkFBSUMsS0FBSixDQUFXLGlDQUFnQ2lELGNBQUtDLEtBQUwsQ0FBVyxDQUFDLEtBQUtoQyxRQUFMLENBQWNpQyxLQUFmLEVBQXNCLEdBQUduQyxJQUF6QixDQUFYLENBQTJDLEdBQXRGOztJQUNBLE1BQU0sd0JBQUssS0FBS0UsUUFBTCxDQUFjaUMsS0FBbkIsRUFBMEJuQyxJQUExQixDQUFOO0VBQ0QsQ0FkRCxDQWNFLE9BQU9sQixDQUFQLEVBQVU7SUFDVkMsZ0JBQUlDLEtBQUosQ0FBVSxrRUFDUCxtQkFBa0JGLENBQUMsQ0FBQ3NELE1BQUYsSUFBWXRELENBQUMsQ0FBQzJCLE9BQVEsRUFEM0M7O0lBRUEsTUFBTSxLQUFLVixRQUFMLEVBQU47SUFDQSxNQUFNQyxJQUFJLEdBQUcsQ0FDWCxTQURXLEVBRVgsSUFGVyxFQUVMdkIsUUFGSyxFQUdYLDJCQUhXLEVBR2tCMkMsZUFIbEIsRUFJWCx5Q0FKVyxFQUlnQ0MsYUFKaEMsRUFLWCxJQUxXLEVBS0xLLGNBTEssRUFNWCxJQU5XLEVBTUxELFVBTkssRUFPWCxJQVBXLENBQWI7O0lBU0ExQyxnQkFBSUMsS0FBSixDQUFXLGlDQUFnQ2lELGNBQUtDLEtBQUwsQ0FBVyxDQUFDLEtBQUtoQyxRQUFMLENBQWNDLElBQWYsRUFBcUIsR0FBR0gsSUFBeEIsQ0FBWCxDQUEwQyxHQUFyRjs7SUFDQSxJQUFJO01BQ0YsTUFBTSx3QkFBSyxLQUFLRSxRQUFMLENBQWNDLElBQW5CLEVBQXlCSCxJQUF6QixDQUFOO0lBQ0QsQ0FGRCxDQUVFLE9BQU9xQyxFQUFQLEVBQVc7TUFDWCxNQUFNLElBQUlwRCxLQUFKLENBQVcsZ0RBQStDb0QsRUFBRSxDQUFDRCxNQUFILElBQWFDLEVBQUUsQ0FBQzVCLE9BQVEsRUFBbEYsQ0FBTjtJQUNEO0VBQ0Y7O0VBQ0QxQixnQkFBSUMsS0FBSixDQUFXLDZCQUE0QnlDLFVBQVcsR0FBbEQ7QUFDRCxDQTdDRDs7QUE0REF0RCxlQUFlLENBQUNtRSxjQUFoQixHQUFpQyxlQUFlQSxjQUFmLENBQStCN0QsUUFBL0IsRUFBeUM4RCxNQUF6QyxFQUFpREMsTUFBakQsRUFBeUQ7RUFDeEZ6RCxnQkFBSUMsS0FBSixDQUFXLHVCQUFzQlAsUUFBUyxZQUFXOEQsTUFBTyxZQUFXQyxNQUFPLEdBQTlFOztFQUNBLE1BQU1DLGFBQUlDLGNBQUosQ0FBbUJILE1BQW5CLENBQU47RUFDQSxNQUFNLHdCQUFXLEdBQUU5RCxRQUFTLE1BQXRCLENBQU47O0VBQ0EsTUFBTWtFLFlBQVksR0FBR2hCLGNBQUtpQixRQUFMLENBQWNuRSxRQUFkLENBQXJCOztFQUNBLElBQUk7SUFDRixNQUFNLEtBQUtzQixRQUFMLEVBQU47SUFDQSxNQUFNOEIsWUFBR2dCLFFBQUgsQ0FBWU4sTUFBWixFQUFvQkMsTUFBcEIsQ0FBTjs7SUFDQXpELGdCQUFJQyxLQUFKLENBQVUsaUJBQVY7O0lBQ0EsSUFBSTtNQUNGLE1BQU0sd0JBQUssS0FBS2tCLFFBQUwsQ0FBY0MsSUFBbkIsRUFBeUIsQ0FDN0IsUUFENkIsRUFDbkJxQyxNQURtQixFQUNYRyxZQURXLENBQXpCLENBQU47SUFHRCxDQUpELENBSUUsT0FBT0csR0FBUCxFQUFZLENBQUU7O0lBQ2hCLE1BQU0sd0JBQUssS0FBSzVDLFFBQUwsQ0FBY0MsSUFBbkIsRUFBeUIsQ0FDN0IsS0FENkIsRUFDdEJxQyxNQURzQixFQUNkRyxZQURjLENBQXpCLEVBRUg7TUFBQ0ksR0FBRyxFQUFFcEIsY0FBS3FCLE9BQUwsQ0FBYXZFLFFBQWI7SUFBTixDQUZHLENBQU47RUFHRCxDQVpELENBWUUsT0FBT0ssQ0FBUCxFQUFVO0lBQ1ZDLGdCQUFJQyxLQUFKLENBQVUsMkRBQ1AsbUJBQWtCRixDQUFDLENBQUNzRCxNQUFGLElBQVl0RCxDQUFDLENBQUMyQixPQUFRLEVBRDNDOztJQUVBLE1BQU13QyxPQUFPLEdBQUcsTUFBTUMsaUJBQVFDLE9BQVIsRUFBdEI7O0lBQ0EsSUFBSTtNQUlGcEUsZ0JBQUlDLEtBQUosQ0FBVyxpQ0FBZ0N1RCxNQUFPLEdBQWxEOztNQUNBLE1BQU1FLGFBQUlXLFlBQUosQ0FBaUJiLE1BQWpCLEVBQXlCVSxPQUF6QixDQUFOOztNQUNBbEUsZ0JBQUlDLEtBQUosQ0FBVSxpQkFBVjs7TUFDQSxNQUFNNkMsWUFBR3dCLEVBQUgsQ0FBTTVFLFFBQU4sRUFBZ0JrRCxjQUFLQyxPQUFMLENBQWFxQixPQUFiLEVBQXNCTixZQUF0QixDQUFoQixDQUFOOztNQUNBNUQsZ0JBQUlDLEtBQUosQ0FBVyxzQ0FBcUN3RCxNQUFPLEdBQXZEOztNQUNBLE1BQU1DLGFBQUlhLFNBQUosQ0FBY2QsTUFBZCxFQUFzQjtRQUMxQk8sR0FBRyxFQUFFRTtNQURxQixDQUF0QixDQUFOO0lBR0QsQ0FaRCxTQVlVO01BQ1IsTUFBTXBCLFlBQUdFLE1BQUgsQ0FBVWtCLE9BQVYsQ0FBTjtJQUNEO0VBQ0Y7O0VBQ0RsRSxnQkFBSUMsS0FBSixDQUFXLDRCQUEyQndELE1BQU8sZ0JBQTdDO0FBQ0QsQ0F0Q0Q7O0FBOENBckUsZUFBZSxDQUFDb0YsaUNBQWhCLEdBQW9ELGVBQWVBLGlDQUFmLENBQWtEbEYsT0FBbEQsRUFBMkQ7RUFDN0dVLGdCQUFJQyxLQUFKLENBQVcsZ0JBQWVYLE9BQVEsdURBQWxDOztFQUNBLElBQUlBLE9BQU8sQ0FBQ0MsUUFBUixDQUFpQkMsdUJBQWpCLENBQUosRUFBc0M7SUFDcENGLE9BQU8sR0FBRyxNQUFNLEtBQUtHLGNBQUwsQ0FBb0JILE9BQXBCLENBQWhCO0VBQ0Q7O0VBRUQsTUFBTUssU0FBUyxHQUFHLE1BQU1DLHlCQUFVQyxJQUFWLENBQWVQLE9BQWYsQ0FBeEI7RUFDQSxNQUFNSSxRQUFRLEdBQUcsTUFBTUMsU0FBUyxDQUFDRyxZQUFWLEVBQXZCO0VBQ0EsT0FBTyxDQUFDSixRQUFRLENBQUMrRSxlQUFULElBQTRCLEVBQTdCLEVBQWlDQyxJQUFqQyxDQUFzQyxDQUFDO0lBQUNDO0VBQUQsQ0FBRCxLQUFZQSxJQUFJLEtBQUssNkJBQTNELENBQVA7QUFDRCxDQVREOztlQVdldkYsZSJ9
231
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL3Rvb2xzL2FuZHJvaWQtbWFuaWZlc3QuanMiLCJuYW1lcyI6WyJtYW5pZmVzdE1ldGhvZHMiLCJwYWNrYWdlQW5kTGF1bmNoQWN0aXZpdHlGcm9tTWFuaWZlc3QiLCJhcHBQYXRoIiwiZW5kc1dpdGgiLCJBUEtTX0VYVEVOU0lPTiIsImV4dHJhY3RCYXNlQXBrIiwibWFuaWZlc3QiLCJhcGtSZWFkZXIiLCJBcGtSZWFkZXIiLCJvcGVuIiwicmVhZE1hbmlmZXN0IiwiZSIsImxvZyIsImRlYnVnIiwiRXJyb3IiLCJwa2ciLCJhY3Rpdml0eSIsInBhcnNlTWFuaWZlc3QiLCJpbmZvIiwiYXBrUGFja2FnZSIsImFwa0FjdGl2aXR5IiwidGFyZ2V0U2RrVmVyc2lvbkZyb21NYW5pZmVzdCIsIm9yaWdpbmFsQXBwUGF0aCIsImdldFRhcmdldFNka1ZpYUFwa1JlYWRlciIsInVzZXNTZGsiLCJfIiwiaXNJbnRlZ2VyIiwidGFyZ2V0U2RrVmVyc2lvbiIsImdldFRhcmdldFNka1ZpYUFhcHQiLCJpbml0QWFwdCIsImFyZ3MiLCJzdGRvdXQiLCJleGVjIiwiYmluYXJpZXMiLCJhYXB0IiwicGFyc2VJbnQiLCJ2ZXJzaW9uR2V0dGVycyIsInRvb2xOYW1lIiwidmVyc2lvbkdldHRlciIsIm1lc3NhZ2UiLCJKU09OIiwic3RyaW5naWZ5IiwibWFwIiwicGFpciIsInRhcmdldFNka1ZlcnNpb25Vc2luZ1BLRyIsImNtZE91dHB1dCIsInNoZWxsIiwiUmVnRXhwIiwibGVuZ3RoIiwiY29tcGlsZU1hbmlmZXN0IiwibWFuaWZlc3RQYWNrYWdlIiwidGFyZ2V0UGFja2FnZSIsInBsYXRmb3JtIiwicGxhdGZvcm1QYXRoIiwiZ2V0QW5kcm9pZFBsYXRmb3JtQW5kUGF0aCIsInNka1Jvb3QiLCJyZXN1bHRQYXRoIiwiYW5kcm9pZEphclBhdGgiLCJwYXRoIiwicmVzb2x2ZSIsImZzIiwiZXhpc3RzIiwicmltcmFmIiwiaW5pdEFhcHQyIiwidXRpbCIsInF1b3RlIiwiYWFwdDIiLCJzdGRlcnIiLCJlMSIsImluc2VydE1hbmlmZXN0Iiwic3JjQXBrIiwiZHN0QXBrIiwiemlwIiwiYXNzZXJ0VmFsaWRaaXAiLCJ1bnppcEZpbGUiLCJtYW5pZmVzdE5hbWUiLCJiYXNlbmFtZSIsImNvcHlGaWxlIiwiaWduIiwiY3dkIiwiZGlybmFtZSIsInRtcFJvb3QiLCJ0ZW1wRGlyIiwib3BlbkRpciIsImV4dHJhY3RBbGxUbyIsIm12IiwidG9BcmNoaXZlIiwiaGFzSW50ZXJuZXRQZXJtaXNzaW9uRnJvbU1hbmlmZXN0IiwidXNlc1Blcm1pc3Npb25zIiwic29tZSIsIm5hbWUiXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIiwic291cmNlcyI6WyJsaWIvdG9vbHMvYW5kcm9pZC1tYW5pZmVzdC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGVjIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyLmpzJztcbmltcG9ydCB7XG4gIGdldEFuZHJvaWRQbGF0Zm9ybUFuZFBhdGgsIHVuemlwRmlsZSxcbiAgQVBLU19FWFRFTlNJT04sIHBhcnNlTWFuaWZlc3QgfSBmcm9tICcuLi9oZWxwZXJzLmpzJztcbmltcG9ydCB7IGZzLCB6aXAsIHRlbXBEaXIsIHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IEFwa1JlYWRlciBmcm9tICdhZGJraXQtYXBrcmVhZGVyJztcblxubGV0IG1hbmlmZXN0TWV0aG9kcyA9IHt9O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEFQS0luZm9cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSBhcGtQYWNrYWdlIC0gVGhlIG5hbWUgb2YgYXBwbGljYXRpb24gcGFja2FnZSwgZm9yIGV4YW1wbGUgJ2NvbS5hY21lLmFwcCcuXG4gKiBAcHJvcGVydHkge3N0cmluZ30gYXBrQWN0aXZpdHkgLSBUaGUgbmFtZSBvZiBtYWluIGFwcGxpY2F0aW9uIGFjdGl2aXR5LlxuICovXG5cbi8qKlxuICogRXh0cmFjdCBwYWNrYWdlIGFuZCBtYWluIGFjdGl2aXR5IG5hbWUgZnJvbSBhcHBsaWNhdGlvbiBtYW5pZmVzdC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBwUGF0aCAtIFRoZSBmdWxsIHBhdGggdG8gYXBwbGljYXRpb24gLmFwayhzKSBwYWNrYWdlXG4gKiBAcmV0dXJuIHtBUEtJbmZvfSBUaGUgcGFyc2VkIGFwcGxpY2F0aW9uIGluZm8uXG4gKiBAdGhyb3dzIHtlcnJvcn0gSWYgdGhlcmUgd2FzIGFuIGVycm9yIHdoaWxlIGdldHRpbmcgdGhlIGRhdGEgZnJvbSB0aGUgZ2l2ZW5cbiAqICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbiBwYWNrYWdlLlxuICovXG5tYW5pZmVzdE1ldGhvZHMucGFja2FnZUFuZExhdW5jaEFjdGl2aXR5RnJvbU1hbmlmZXN0ID0gYXN5bmMgZnVuY3Rpb24gcGFja2FnZUFuZExhdW5jaEFjdGl2aXR5RnJvbU1hbmlmZXN0IChhcHBQYXRoKSB7XG4gIGlmIChhcHBQYXRoLmVuZHNXaXRoKEFQS1NfRVhURU5TSU9OKSkge1xuICAgIGFwcFBhdGggPSBhd2FpdCB0aGlzLmV4dHJhY3RCYXNlQXBrKGFwcFBhdGgpO1xuICB9XG5cbiAgbGV0IG1hbmlmZXN0O1xuICB0cnkge1xuICAgIGNvbnN0IGFwa1JlYWRlciA9IGF3YWl0IEFwa1JlYWRlci5vcGVuKGFwcFBhdGgpO1xuICAgIG1hbmlmZXN0ID0gYXdhaXQgYXBrUmVhZGVyLnJlYWRNYW5pZmVzdCgpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nLmRlYnVnKGUpO1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGV4dHJhY3QgYSBtYW5pZmVzdCBmcm9tICcke2FwcFBhdGh9Jy4gYCArXG4gICAgICBgSXMgaXQgYSB2YWxpZCBBbmRyb2lkIGFwcGxpY2F0aW9uP2ApO1xuICB9XG4gIGNvbnN0IHtwa2csIGFjdGl2aXR5fSA9IHBhcnNlTWFuaWZlc3QobWFuaWZlc3QpO1xuICBsb2cuaW5mbyhgUGFja2FnZSBuYW1lOiAnJHtwa2d9J2ApO1xuICBsb2cuaW5mbyhgTWFpbiBhY3Rpdml0eSBuYW1lOiAnJHthY3Rpdml0eX0nYCk7XG4gIHJldHVybiB7XG4gICAgYXBrUGFja2FnZTogcGtnLFxuICAgIGFwa0FjdGl2aXR5OiBhY3Rpdml0eSxcbiAgfTtcbn07XG5cbi8qKlxuICogRXh0cmFjdCB0YXJnZXQgU0RLIHZlcnNpb24gZnJvbSBhcHBsaWNhdGlvbiBtYW5pZmVzdC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBwUGF0aCAtIFRoZSBmdWxsIHBhdGggdG8gLmFwayhzKSBwYWNrYWdlLlxuICogQHJldHVybiB7bnVtYmVyfSBUaGUgdmVyc2lvbiBvZiB0aGUgdGFyZ2V0IFNESy5cbiAqIEB0aHJvd3Mge2Vycm9yfSBJZiB0aGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgZ2V0dGluZyB0aGUgZGF0YSBmcm9tIHRoZSBnaXZlblxuICogICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uIHBhY2thZ2UuXG4gKi9cbm1hbmlmZXN0TWV0aG9kcy50YXJnZXRTZGtWZXJzaW9uRnJvbU1hbmlmZXN0ID0gYXN5bmMgZnVuY3Rpb24gdGFyZ2V0U2RrVmVyc2lvbkZyb21NYW5pZmVzdCAoYXBwUGF0aCkge1xuICBsb2cuZGVidWcoYEV4dHJhY3RpbmcgdGFyZ2V0IFNESyB2ZXJzaW9uIG9mICcke2FwcFBhdGh9J2ApO1xuICBjb25zdCBvcmlnaW5hbEFwcFBhdGggPSBhcHBQYXRoO1xuICBpZiAoYXBwUGF0aC5lbmRzV2l0aChBUEtTX0VYVEVOU0lPTikpIHtcbiAgICBhcHBQYXRoID0gYXdhaXQgdGhpcy5leHRyYWN0QmFzZUFwayhhcHBQYXRoKTtcbiAgfVxuXG4gIGNvbnN0IGdldFRhcmdldFNka1ZpYUFwa1JlYWRlciA9IGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBhcGtSZWFkZXIgPSBhd2FpdCBBcGtSZWFkZXIub3BlbihhcHBQYXRoKTtcbiAgICBjb25zdCBtYW5pZmVzdCA9IGF3YWl0IGFwa1JlYWRlci5yZWFkTWFuaWZlc3QoKTtcbiAgICBpZiAobWFuaWZlc3QudXNlc1NkayAmJiBfLmlzSW50ZWdlcihtYW5pZmVzdC51c2VzU2RrLnRhcmdldFNka1ZlcnNpb24pKSB7XG4gICAgICByZXR1cm4gbWFuaWZlc3QudXNlc1Nkay50YXJnZXRTZGtWZXJzaW9uO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBmaW5kIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0YXJnZXRTZGtWZXJzaW9uIGluIHRoZSBtYW5pZmVzdCcpO1xuICB9O1xuICBjb25zdCBnZXRUYXJnZXRTZGtWaWFBYXB0ID0gYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IHRoaXMuaW5pdEFhcHQoKTtcbiAgICBjb25zdCBhcmdzID0gWydkdW1wJywgJ2JhZGdpbmcnLCBhcHBQYXRoXTtcbiAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IGV4ZWModGhpcy5iaW5hcmllcy5hYXB0LCBhcmdzKTtcbiAgICBjb25zdCB0YXJnZXRTZGtWZXJzaW9uID0gL3RhcmdldFNka1ZlcnNpb246JyhbXiddKyknL2cuZXhlYyhzdGRvdXQpO1xuICAgIGlmICghdGFyZ2V0U2RrVmVyc2lvbikge1xuICAgICAgbG9nLmRlYnVnKHN0ZG91dCk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBwYXJzZSB0aGUgY29tbWFuZCBvdXRwdXQnKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhcnNlSW50KHRhcmdldFNka1ZlcnNpb25bMV0sIDEwKTtcbiAgfTtcbiAgY29uc3QgdmVyc2lvbkdldHRlcnMgPSBbXG4gICAgWydBcGtSZWFkZXInLCBnZXRUYXJnZXRTZGtWaWFBcGtSZWFkZXJdLFxuICAgIFsnYWFwdCcsIGdldFRhcmdldFNka1ZpYUFhcHRdLFxuICBdO1xuICBmb3IgKGNvbnN0IFt0b29sTmFtZSwgdmVyc2lvbkdldHRlcl0gb2YgdmVyc2lvbkdldHRlcnMpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IHZlcnNpb25HZXR0ZXIoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBsb2cuaW5mbyhgQ2Fubm90IGV4dHJhY3QgdGFyZ2V0U2RrVmVyc2lvbiBvZiAnJHtvcmlnaW5hbEFwcFBhdGh9JyB1c2luZyAke3Rvb2xOYW1lfS4gYCArXG4gICAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG4gIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGV4dHJhY3QgdGhlIHRhcmdldCBTREsgdmVyc2lvbiBudW1iZXIgb2YgJyR7b3JpZ2luYWxBcHBQYXRofScgdXNpbmcgZWl0aGVyIG9mIGAgK1xuICAgIGAke0pTT04uc3RyaW5naWZ5KHZlcnNpb25HZXR0ZXJzLm1hcCgocGFpcikgPT4gcGFpclswXSkpfSB0b29scy4gYCArXG4gICAgYENoZWNrIHRoZSBzZXJ2ZXIgbG9nIGZvciBtb3JlIGRldGFpbHNgKTtcbn07XG5cbi8qKlxuICogRXh0cmFjdCB0YXJnZXQgU0RLIHZlcnNpb24gZnJvbSBwYWNrYWdlIGluZm9ybWF0aW9uLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBwa2cgLSBUaGUgY2xhc3MgbmFtZSBvZiB0aGUgcGFja2FnZSBpbnN0YWxsZWQgb24gdGhlIGRldmljZSB1bmRlciB0ZXN0LlxuICogQHBhcmFtIHs/c3RyaW5nfSBjbWRPdXRwdXQgLSBPcHRpb25hbCBwYXJhbWV0ZXIgY29udGFpbmluZyB0aGUgb3V0cHV0IG9mXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9kdW1wc3lzIHBhY2thZ2VfIGNvbW1hbmQuIEl0IG1heSBzcGVlZCB1cCB0aGUgbWV0aG9kIGV4ZWN1dGlvbi5cbiAqIEByZXR1cm4ge251bWJlcn0gVGhlIHZlcnNpb24gb2YgdGhlIHRhcmdldCBTREsuXG4gKi9cbm1hbmlmZXN0TWV0aG9kcy50YXJnZXRTZGtWZXJzaW9uVXNpbmdQS0cgPSBhc3luYyBmdW5jdGlvbiB0YXJnZXRTZGtWZXJzaW9uVXNpbmdQS0cgKHBrZywgY21kT3V0cHV0ID0gbnVsbCkge1xuICBsZXQgc3Rkb3V0ID0gY21kT3V0cHV0IHx8IGF3YWl0IHRoaXMuc2hlbGwoWydkdW1wc3lzJywgJ3BhY2thZ2UnLCBwa2ddKTtcbiAgbGV0IHRhcmdldFNka1ZlcnNpb24gPSBuZXcgUmVnRXhwKC90YXJnZXRTZGs9KFteXFxzXFxzXSspL2cpLmV4ZWMoc3Rkb3V0KTtcbiAgaWYgKHRhcmdldFNka1ZlcnNpb24gJiYgdGFyZ2V0U2RrVmVyc2lvbi5sZW5ndGggPj0gMikge1xuICAgIHRhcmdldFNka1ZlcnNpb24gPSB0YXJnZXRTZGtWZXJzaW9uWzFdO1xuICB9IGVsc2Uge1xuICAgIC8vIHRhcmdldFNkayBub3QgZm91bmQgaW4gdGhlIGR1bXAsIGFzc2lnbmluZyAwIHRvIHRhcmdldFNka1ZlcnNpb25cbiAgICB0YXJnZXRTZGtWZXJzaW9uID0gMDtcbiAgfVxuICByZXR1cm4gcGFyc2VJbnQodGFyZ2V0U2RrVmVyc2lvbiwgMTApO1xufTtcblxuLyoqXG4gKiBDcmVhdGUgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIHBhY2thZ2UgbWFuaWZlc3QgKHVzdWFsbHkgQW5kcm9pZE1hbmlmZXN0LnhtbCkuXG4gKiBgJHttYW5pZmVzdH0uYXBrYCBmaWxlIHdpbGwgYmUgY3JlYXRlZCBhcyB0aGUgcmVzdWx0IG9mIHRoaXMgbWV0aG9kXG4gKiBjb250YWluaW5nIHRoZSBjb21waWxlZCBtYW5pZmVzdC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWFuaWZlc3QgLSBGdWxsIHBhdGggdG8gdGhlIGluaXRpYWwgbWFuaWZlc3QgdGVtcGxhdGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBtYW5pZmVzdFBhY2thZ2UgLSBUaGUgbmFtZSBvZiB0aGUgbWFuaWZlc3QgcGFja2FnZVxuICogQHBhcmFtIHtzdHJpbmd9IHRhcmdldFBhY2thZ2UgLSBUaGUgbmFtZSBvZiB0aGUgZGVzdGluYXRpb24gcGFja2FnZVxuICovXG5tYW5pZmVzdE1ldGhvZHMuY29tcGlsZU1hbmlmZXN0ID0gYXN5bmMgZnVuY3Rpb24gY29tcGlsZU1hbmlmZXN0IChtYW5pZmVzdCwgbWFuaWZlc3RQYWNrYWdlLCB0YXJnZXRQYWNrYWdlKSB7XG4gIGNvbnN0IHtwbGF0Zm9ybSwgcGxhdGZvcm1QYXRofSA9IGF3YWl0IGdldEFuZHJvaWRQbGF0Zm9ybUFuZFBhdGgodGhpcy5zZGtSb290KTtcbiAgaWYgKCFwbGF0Zm9ybSkge1xuICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IGNvbXBpbGUgdGhlIG1hbmlmZXN0LiBUaGUgcmVxdWlyZWQgcGxhdGZvcm0gZG9lcyBub3QgZXhpc3QgKEFQSSBsZXZlbCA+PSAxNyknKTtcbiAgfVxuICBjb25zdCByZXN1bHRQYXRoID0gYCR7bWFuaWZlc3R9LmFwa2A7XG4gIGNvbnN0IGFuZHJvaWRKYXJQYXRoID0gcGF0aC5yZXNvbHZlKHBsYXRmb3JtUGF0aCwgJ2FuZHJvaWQuamFyJyk7XG4gIGlmIChhd2FpdCBmcy5leGlzdHMocmVzdWx0UGF0aCkpIHtcbiAgICBhd2FpdCBmcy5yaW1yYWYocmVzdWx0UGF0aCk7XG4gIH1cbiAgdHJ5IHtcbiAgICBhd2FpdCB0aGlzLmluaXRBYXB0MigpO1xuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFuZHJvaWQuY29tL3N0dWRpby9jb21tYW5kLWxpbmUvYWFwdDJcbiAgICBjb25zdCBhcmdzID0gW1xuICAgICAgJ2xpbmsnLFxuICAgICAgJy1vJywgcmVzdWx0UGF0aCxcbiAgICAgICctLW1hbmlmZXN0JywgbWFuaWZlc3QsXG4gICAgICAnLS1yZW5hbWUtbWFuaWZlc3QtcGFja2FnZScsIG1hbmlmZXN0UGFja2FnZSxcbiAgICAgICctLXJlbmFtZS1pbnN0cnVtZW50YXRpb24tdGFyZ2V0LXBhY2thZ2UnLCB0YXJnZXRQYWNrYWdlLFxuICAgICAgJy1JJywgYW5kcm9pZEphclBhdGgsXG4gICAgICAnLXYnLFxuICAgIF07XG4gICAgbG9nLmRlYnVnKGBDb21waWxpbmcgdGhlIG1hbmlmZXN0IHVzaW5nICcke3V0aWwucXVvdGUoW3RoaXMuYmluYXJpZXMuYWFwdDIsIC4uLmFyZ3NdKX0nYCk7XG4gICAgYXdhaXQgZXhlYyh0aGlzLmJpbmFyaWVzLmFhcHQyLCBhcmdzKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZy5kZWJ1ZygnQ2Fubm90IGNvbXBpbGUgdGhlIG1hbmlmZXN0IHVzaW5nIGFhcHQyLiBEZWZhdWx0aW5nIHRvIGFhcHQuICcgK1xuICAgICAgYE9yaWdpbmFsIGVycm9yOiAke2Uuc3RkZXJyIHx8IGUubWVzc2FnZX1gKTtcbiAgICBhd2FpdCB0aGlzLmluaXRBYXB0KCk7XG4gICAgY29uc3QgYXJncyA9IFtcbiAgICAgICdwYWNrYWdlJyxcbiAgICAgICctTScsIG1hbmlmZXN0LFxuICAgICAgJy0tcmVuYW1lLW1hbmlmZXN0LXBhY2thZ2UnLCBtYW5pZmVzdFBhY2thZ2UsXG4gICAgICAnLS1yZW5hbWUtaW5zdHJ1bWVudGF0aW9uLXRhcmdldC1wYWNrYWdlJywgdGFyZ2V0UGFja2FnZSxcbiAgICAgICctSScsIGFuZHJvaWRKYXJQYXRoLFxuICAgICAgJy1GJywgcmVzdWx0UGF0aCxcbiAgICAgICctZicsXG4gICAgXTtcbiAgICBsb2cuZGVidWcoYENvbXBpbGluZyB0aGUgbWFuaWZlc3QgdXNpbmcgJyR7dXRpbC5xdW90ZShbdGhpcy5iaW5hcmllcy5hYXB0LCAuLi5hcmdzXSl9J2ApO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBleGVjKHRoaXMuYmluYXJpZXMuYWFwdCwgYXJncyk7XG4gICAgfSBjYXRjaCAoZTEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGNvbXBpbGUgdGhlIG1hbmlmZXN0LiBPcmlnaW5hbCBlcnJvcjogJHtlMS5zdGRlcnIgfHwgZTEubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cbiAgbG9nLmRlYnVnKGBDb21waWxlZCB0aGUgbWFuaWZlc3QgYXQgJyR7cmVzdWx0UGF0aH0nYCk7XG59O1xuXG4vKipcbiAqIFJlcGxhY2UvaW5zZXJ0IHRoZSBzcGVjaWFsbHkgcHJlY29tcGlsZWQgbWFuaWZlc3QgZmlsZSBpbnRvIHRoZVxuICogcGFydGljdWxhciBwYWNrYWdlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtYW5pZmVzdCAtIEZ1bGwgcGF0aCB0byB0aGUgcHJlY29tcGlsZWQgbWFuaWZlc3RcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWQgYnkgYGNvbXBpbGVNYW5pZmVzdGAgbWV0aG9kIGNhbGxcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhvdXQgLmFwayBleHRlbnNpb25cbiAqIEBwYXJhbSB7c3RyaW5nfSBzcmNBcGsgLSBGdWxsIHBhdGggdG8gdGhlIGV4aXN0aW5nIHZhbGlkIGFwcGxpY2F0aW9uIHBhY2thZ2UsIHdoZXJlXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcyBtYW5pZmVzdCBoYXMgdG8gYmUgaW5zZXRyZWQgdG8uIFRoaXMgcGFja2FnZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgTk9UIGJlIG1vZGlmaWVkLlxuICogQHBhcmFtIHtzdHJpbmd9IGRzdEFwayAtIEZ1bGwgcGF0aCB0byB0aGUgcmVzdWx0aW5nIHBhY2thZ2UuXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGZpbGUgd2lsbCBiZSBvdmVycmlkZGVuIGlmIGl0IGFscmVhZHkgZXhpc3RzLlxuICovXG5tYW5pZmVzdE1ldGhvZHMuaW5zZXJ0TWFuaWZlc3QgPSBhc3luYyBmdW5jdGlvbiBpbnNlcnRNYW5pZmVzdCAobWFuaWZlc3QsIHNyY0FwaywgZHN0QXBrKSB7XG4gIGxvZy5kZWJ1ZyhgSW5zZXJ0aW5nIG1hbmlmZXN0ICcke21hbmlmZXN0fScsIHNyYzogJyR7c3JjQXBrfScsIGRzdDogJyR7ZHN0QXBrfSdgKTtcbiAgYXdhaXQgemlwLmFzc2VydFZhbGlkWmlwKHNyY0Fwayk7XG4gIGF3YWl0IHVuemlwRmlsZShgJHttYW5pZmVzdH0uYXBrYCk7XG4gIGNvbnN0IG1hbmlmZXN0TmFtZSA9IHBhdGguYmFzZW5hbWUobWFuaWZlc3QpO1xuICB0cnkge1xuICAgIGF3YWl0IHRoaXMuaW5pdEFhcHQoKTtcbiAgICBhd2FpdCBmcy5jb3B5RmlsZShzcmNBcGssIGRzdEFwayk7XG4gICAgbG9nLmRlYnVnKCdNb3ZpbmcgbWFuaWZlc3QnKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgZXhlYyh0aGlzLmJpbmFyaWVzLmFhcHQsIFtcbiAgICAgICAgJ3JlbW92ZScsIGRzdEFwaywgbWFuaWZlc3ROYW1lXG4gICAgICBdKTtcbiAgICB9IGNhdGNoIChpZ24pIHt9XG4gICAgYXdhaXQgZXhlYyh0aGlzLmJpbmFyaWVzLmFhcHQsIFtcbiAgICAgICdhZGQnLCBkc3RBcGssIG1hbmlmZXN0TmFtZVxuICAgIF0sIHtjd2Q6IHBhdGguZGlybmFtZShtYW5pZmVzdCl9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZy5kZWJ1ZygnQ2Fubm90IGluc2VydCBtYW5pZmVzdCB1c2luZyBhYXB0LiBEZWZhdWx0aW5nIHRvIHppcC4gJyArXG4gICAgICBgT3JpZ2luYWwgZXJyb3I6ICR7ZS5zdGRlcnIgfHwgZS5tZXNzYWdlfWApO1xuICAgIGNvbnN0IHRtcFJvb3QgPSBhd2FpdCB0ZW1wRGlyLm9wZW5EaXIoKTtcbiAgICB0cnkge1xuICAgICAgLy8gVW5mb3J0dW5hdGVseSBOb2RlSlMgZG9lcyBub3QgcHJvdmlkZSBhbnkgcmVsaWFibGUgbWV0aG9kc1xuICAgICAgLy8gdG8gcmVwbGFjZSBmaWxlcyBpbnNpZGUgemlwIGFyY2hpdmVzIHdpdGhvdXQgbG9hZGluZyB0aGVcbiAgICAgIC8vIHdob2xlIGFyY2hpdmUgY29udGVudCBpbnRvIFJBTVxuICAgICAgbG9nLmRlYnVnKGBFeHRyYWN0aW5nIHRoZSBzb3VyY2UgYXBrIGF0ICcke3NyY0Fwa30nYCk7XG4gICAgICBhd2FpdCB6aXAuZXh0cmFjdEFsbFRvKHNyY0FwaywgdG1wUm9vdCk7XG4gICAgICBsb2cuZGVidWcoJ01vdmluZyBtYW5pZmVzdCcpO1xuICAgICAgYXdhaXQgZnMubXYobWFuaWZlc3QsIHBhdGgucmVzb2x2ZSh0bXBSb290LCBtYW5pZmVzdE5hbWUpKTtcbiAgICAgIGxvZy5kZWJ1ZyhgQ29sbGVjdGluZyB0aGUgZGVzdGluYXRpb24gYXBrIGF0ICcke2RzdEFwa30nYCk7XG4gICAgICBhd2FpdCB6aXAudG9BcmNoaXZlKGRzdEFwaywge1xuICAgICAgICBjd2Q6IHRtcFJvb3QsXG4gICAgICB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgYXdhaXQgZnMucmltcmFmKHRtcFJvb3QpO1xuICAgIH1cbiAgfVxuICBsb2cuZGVidWcoYE1hbmlmZXN0IGluc2VydGlvbiBpbnRvICcke2RzdEFwa30nIGlzIGNvbXBsZXRlZGApO1xufTtcblxuLyoqXG4gKiBDaGVjayB3aGV0aGVyIHBhY2thZ2UgbWFuaWZlc3QgY29udGFpbnMgSW50ZXJuZXQgcGVybWlzc2lvbnMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFwcFBhdGggLSBUaGUgZnVsbCBwYXRoIHRvIC5hcGsocykgcGFja2FnZS5cbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIG1hbmlmZXN0IHJlcXVpcmVzIEludGVybmV0IGFjY2VzcyBwZXJtaXNzaW9uLlxuICovXG5tYW5pZmVzdE1ldGhvZHMuaGFzSW50ZXJuZXRQZXJtaXNzaW9uRnJvbU1hbmlmZXN0ID0gYXN5bmMgZnVuY3Rpb24gaGFzSW50ZXJuZXRQZXJtaXNzaW9uRnJvbU1hbmlmZXN0IChhcHBQYXRoKSB7XG4gIGxvZy5kZWJ1ZyhgQ2hlY2tpbmcgaWYgJyR7YXBwUGF0aH0nIHJlcXVpcmVzIGludGVybmV0IGFjY2VzcyBwZXJtaXNzaW9uIGluIHRoZSBtYW5pZmVzdGApO1xuICBpZiAoYXBwUGF0aC5lbmRzV2l0aChBUEtTX0VYVEVOU0lPTikpIHtcbiAgICBhcHBQYXRoID0gYXdhaXQgdGhpcy5leHRyYWN0QmFzZUFwayhhcHBQYXRoKTtcbiAgfVxuXG4gIGNvbnN0IGFwa1JlYWRlciA9IGF3YWl0IEFwa1JlYWRlci5vcGVuKGFwcFBhdGgpO1xuICBjb25zdCBtYW5pZmVzdCA9IGF3YWl0IGFwa1JlYWRlci5yZWFkTWFuaWZlc3QoKTtcbiAgcmV0dXJuIChtYW5pZmVzdC51c2VzUGVybWlzc2lvbnMgfHwgW10pLnNvbWUoKHtuYW1lfSkgPT4gbmFtZSA9PT0gJ2FuZHJvaWQucGVybWlzc2lvbi5JTlRFUk5FVCcpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgbWFuaWZlc3RNZXRob2RzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUdBOztBQUNBOztBQUNBOztBQUNBOztBQUVBLElBQUlBLGVBQWUsR0FBRyxFQUF0Qjs7QUFnQkFBLGVBQWUsQ0FBQ0Msb0NBQWhCLEdBQXVELGVBQWVBLG9DQUFmLENBQXFEQyxPQUFyRCxFQUE4RDtFQUNuSCxJQUFJQSxPQUFPLENBQUNDLFFBQVIsQ0FBaUJDLHVCQUFqQixDQUFKLEVBQXNDO0lBQ3BDRixPQUFPLEdBQUcsTUFBTSxLQUFLRyxjQUFMLENBQW9CSCxPQUFwQixDQUFoQjtFQUNEOztFQUVELElBQUlJLFFBQUo7O0VBQ0EsSUFBSTtJQUNGLE1BQU1DLFNBQVMsR0FBRyxNQUFNQyx3QkFBQSxDQUFVQyxJQUFWLENBQWVQLE9BQWYsQ0FBeEI7SUFDQUksUUFBUSxHQUFHLE1BQU1DLFNBQVMsQ0FBQ0csWUFBVixFQUFqQjtFQUNELENBSEQsQ0FHRSxPQUFPQyxDQUFQLEVBQVU7SUFDVkMsZUFBQSxDQUFJQyxLQUFKLENBQVVGLENBQVY7O0lBQ0EsTUFBTSxJQUFJRyxLQUFKLENBQVcsbUNBQWtDWixPQUFRLEtBQTNDLEdBQ2Isb0NBREcsQ0FBTjtFQUVEOztFQUNELE1BQU07SUFBQ2EsR0FBRDtJQUFNQztFQUFOLElBQWtCLElBQUFDLHNCQUFBLEVBQWNYLFFBQWQsQ0FBeEI7O0VBQ0FNLGVBQUEsQ0FBSU0sSUFBSixDQUFVLGtCQUFpQkgsR0FBSSxHQUEv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
@@ -330,4 +330,4 @@ var _default = apkSigningMethods;
330
330
  exports.default = _default;require('source-map-support').install();
331
331
 
332
332
 
333
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL3Rvb2xzL2Fway1zaWduaW5nLmpzIiwibmFtZXMiOlsiREVGQVVMVF9QUklWQVRFX0tFWSIsInBhdGgiLCJyZXNvbHZlIiwicm9vdERpciIsIkRFRkFVTFRfQ0VSVElGSUNBVEUiLCJCVU5ETEVUT09MX1RVVE9SSUFMIiwiQVBLU0lHTkVSX1ZFUklGWV9GQUlMIiwiU0hBMSIsIlNIQTI1NiIsIlNIQTUxMiIsIk1ENSIsIkRFRkFVTFRfQ0VSVF9IQVNIIiwiSkFWQV9QUk9QU19JTklUX0VSUk9SIiwiU0lHTkVEX0FQUFNfQ0FDSEUiLCJMUlUiLCJtYXgiLCJhcGtTaWduaW5nTWV0aG9kcyIsImV4ZWN1dGVBcGtzaWduZXIiLCJhcmdzIiwiYXBrU2lnbmVySmFyIiwiZnVsbENtZCIsImxvZyIsImRlYnVnIiwidXRpbCIsInF1b3RlIiwic3Rkb3V0Iiwic3RkZXJyIiwic2xpY2UiLCJjd2QiLCJkaXJuYW1lIiwid2luZG93c1ZlcmJhdGltQXJndW1lbnRzIiwic3lzdGVtIiwiaXNXaW5kb3dzIiwibmFtZSIsInN0cmVhbSIsIl8iLCJ0cmltIiwic3BsaXQiLCJmaWx0ZXIiLCJsaW5lIiwiaW5jbHVkZXMiLCJqb2luIiwic2lnbldpdGhEZWZhdWx0Q2VydCIsImFwayIsImZzIiwiZXhpc3RzIiwiRXJyb3IiLCJlIiwibWVzc2FnZSIsInNpZ25XaXRoQ3VzdG9tQ2VydCIsImtleXN0b3JlUGF0aCIsImtleUFsaWFzIiwia2V5c3RvcmVQYXNzd29yZCIsImtleVBhc3N3b3JkIiwiZXJyIiwid2FybiIsImphcnNpZ25lciIsInNpZ24iLCJhcHBQYXRoIiwiZW5kc1dpdGgiLCJBUEtTX0VYVEVOU0lPTiIsInVzZUtleXN0b3JlIiwiemlwQWxpZ25BcGsiLCJpbml0WmlwQWxpZ24iLCJiaW5hcmllcyIsInppcGFsaWduIiwiYWNjZXNzIiwiX2ZzIiwiV19PSyIsImFsaWduZWRBcGsiLCJ0ZW1wRGlyIiwicHJlZml4Iiwic3VmZml4IiwibXYiLCJta2RpcnAiLCJ1bmxpbmsiLCJjaGVja0Fwa0NlcnQiLCJwa2ciLCJvcHRzIiwiZXh0bmFtZSIsImV4dHJhY3RCYXNlQXBrIiwiaGFzaE1hdGNoZXMiLCJhcGtzaWduZXJPdXRwdXQiLCJleHBlY3RlZEhhc2hlcyIsInZhbHVlIiwidG9QYWlycyIsIlJlZ0V4cCIsInRlc3QiLCJiYXNlbmFtZSIsInJlcXVpcmVEZWZhdWx0Q2VydCIsImFwcEhhc2giLCJoYXNoIiwiaGFzIiwib3V0cHV0IiwiZXhwZWN0ZWQiLCJnZXQiLCJnZXRLZXlzdG9yZUhhc2giLCJoYXNNYXRjaCIsImluZm8iLCJpc1NpZ25lZCIsInNldCIsImVyck1zZyIsImtleXRvb2wiLCJyZXN1bHQiLCJoYXNoTmFtZSIsImhhc2hSZSIsIm1hdGNoIiwiZXhlYyIsInJlcGxhY2UiLCJ0b0xvd2VyQ2FzZSIsImlzRW1wdHkiLCJKU09OIiwic3RyaW5naWZ5Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiIsInNvdXJjZXMiOlsibGliL3Rvb2xzL2Fway1zaWduaW5nLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgX2ZzIGZyb20gJ2ZzJztcbmltcG9ydCB7IGV4ZWMgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlci5qcyc7XG5pbXBvcnQgeyB0ZW1wRGlyLCBzeXN0ZW0sIG1rZGlycCwgZnMsIHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IExSVSBmcm9tICdscnUtY2FjaGUnO1xuaW1wb3J0IHtcbiAgZ2V0SmF2YUZvck9zLCBnZXRBcGtzaWduZXJGb3JPcywgZ2V0SmF2YUhvbWUsXG4gIHJvb3REaXIsIEFQS1NfRVhURU5TSU9OLCB1bnNpZ25BcGssXG59IGZyb20gJy4uL2hlbHBlcnMuanMnO1xuXG5jb25zdCBERUZBVUxUX1BSSVZBVEVfS0VZID0gcGF0aC5yZXNvbHZlKHJvb3REaXIsICdrZXlzJywgJ3Rlc3RrZXkucGs4Jyk7XG5jb25zdCBERUZBVUxUX0NFUlRJRklDQVRFID0gcGF0aC5yZXNvbHZlKHJvb3REaXIsICdrZXlzJywgJ3Rlc3RrZXkueDUwOS5wZW0nKTtcbmNvbnN0IEJVTkRMRVRPT0xfVFVUT1JJQUwgPSAnaHR0cHM6Ly9kZXZlbG9wZXIuYW5kcm9pZC5jb20vc3R1ZGlvL2NvbW1hbmQtbGluZS9idW5kbGV0b29sJztcbmNvbnN0IEFQS1NJR05FUl9WRVJJRllfRkFJTCA9ICdET0VTIE5PVCBWRVJJRlknO1xuY29uc3QgU0hBMSA9ICdzaGExJztcbmNvbnN0IFNIQTI1NiA9ICdzaGEyNTYnO1xuY29uc3QgU0hBNTEyID0gJ3NoYTUxMic7XG5jb25zdCBNRDUgPSAnbWQ1JztcbmNvbnN0IERFRkFVTFRfQ0VSVF9IQVNIID0ge1xuICBbU0hBMjU2XTogJ2E0MGRhODBhNTlkMTcwY2FhOTUwY2YxNWMxOGM0NTRkNDdhMzliMjY5ODlkOGI2NDBlY2Q3NDViYTcxYmY1ZGMnXG59O1xuY29uc3QgSkFWQV9QUk9QU19JTklUX0VSUk9SID0gJ2phdmEubGFuZy5FcnJvcjogUHJvcGVydGllcyBpbml0JztcbmNvbnN0IFNJR05FRF9BUFBTX0NBQ0hFID0gbmV3IExSVSh7XG4gIG1heDogMzAsXG59KTtcblxuXG5jb25zdCBhcGtTaWduaW5nTWV0aG9kcyA9IHt9O1xuXG4vKipcbiAqIEV4ZWN1dGUgYXBrc2lnbmVyIHV0aWxpdHkgd2l0aCBnaXZlbiBhcmd1bWVudHMuXG4gKlxuICogQHBhcmFtIHs/QXJyYXk8U3RyaW5nPn0gYXJncyAtIFRoZSBsaXN0IG9mIHRvb2wgYXJndW1lbnRzLlxuICogQHJldHVybiB7c3RyaW5nfSAtIENvbW1hbmQgc3Rkb3V0XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgYXBrc2lnbmVyIGJpbmFyeSBpcyBub3QgcHJlc2VudCBvbiB0aGUgbG9jYWwgZmlsZSBzeXN0ZW1cbiAqICAgICAgICAgICAgICAgICBvciB0aGUgcmV0dXJuIGNvZGUgaXMgbm90IGVxdWFsIHRvIHplcm8uXG4gKi9cbmFwa1NpZ25pbmdNZXRob2RzLmV4ZWN1dGVBcGtzaWduZXIgPSBhc3luYyBmdW5jdGlvbiBleGVjdXRlQXBrc2lnbmVyIChhcmdzID0gW10pIHtcbiAgY29uc3QgYXBrU2lnbmVySmFyID0gYXdhaXQgZ2V0QXBrc2lnbmVyRm9yT3ModGhpcyk7XG4gIGNvbnN0IGZ1bGxDbWQgPSBbXG4gICAgYXdhaXQgZ2V0SmF2YUZvck9zKCksICctWG14MTAyNE0nLCAnLVhzczFtJyxcbiAgICAnLWphcicsIGFwa1NpZ25lckphcixcbiAgICAuLi5hcmdzXG4gIF07XG4gIGxvZy5kZWJ1ZyhgU3RhcnRpbmcgYXBrc2lnbmVyOiAke3V0aWwucXVvdGUoZnVsbENtZCl9YCk7XG4gIC8vIEl0IGlzIG5lY2Vzc2FyeSB0byBzcGVjaWZ5IENXRCBleHBsaWNpdGx5OyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL2FwcGl1bS9hcHBpdW0vaXNzdWVzLzE0NzI0I2lzc3VlY29tbWVudC03Mzc0NDY3MTVcbiAgY29uc3Qge3N0ZG91dCwgc3RkZXJyfSA9IGF3YWl0IGV4ZWMoZnVsbENtZFswXSwgZnVsbENtZC5zbGljZSgxKSwge1xuICAgIGN3ZDogcGF0aC5kaXJuYW1lKGFwa1NpZ25lckphciksIHdpbmRvd3NWZXJiYXRpbUFyZ3VtZW50czogc3lzdGVtLmlzV2luZG93cygpXG4gIH0pO1xuICBmb3IgKGxldCBbbmFtZSwgc3RyZWFtXSBvZiBbWydzdGRvdXQnLCBzdGRvdXRdLCBbJ3N0ZGVycicsIHN0ZGVycl1dKSB7XG4gICAgaWYgKCFfLnRyaW0oc3RyZWFtKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKG5hbWUgPT09ICdzdGRvdXQnKSB7XG4gICAgICAvLyBNYWtlIHRoZSBvdXRwdXQgbGVzcyB0YWxrYXRpdmVcbiAgICAgIHN0cmVhbSA9IHN0cmVhbS5zcGxpdCgnXFxuJylcbiAgICAgICAgLmZpbHRlcigobGluZSkgPT4gIWxpbmUuaW5jbHVkZXMoJ1dBUk5JTkc6JykpXG4gICAgICAgIC5qb2luKCdcXG4nKTtcbiAgICB9XG4gICAgbG9nLmRlYnVnKGBhcGtzaWduZXIgJHtuYW1lfTogJHtzdHJlYW19YCk7XG4gIH1cbiAgcmV0dXJuIHN0ZG91dDtcbn07XG5cbi8qKlxuICogKFJlKXNpZ24gdGhlIGdpdmVuIGFwayBmaWxlIG9uIHRoZSBsb2NhbCBmaWxlIHN5c3RlbSB3aXRoIHRoZSBkZWZhdWx0IGNlcnRpZmljYXRlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcGsgLSBUaGUgZnVsbCBwYXRoIHRvIHRoZSBsb2NhbCBhcGsgZmlsZS5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBzaWduaW5nIGZhaWxzLlxuICovXG5hcGtTaWduaW5nTWV0aG9kcy5zaWduV2l0aERlZmF1bHRDZXJ0ID0gYXN5bmMgZnVuY3Rpb24gc2lnbldpdGhEZWZhdWx0Q2VydCAoYXBrKSB7XG4gIGxvZy5kZWJ1ZyhgU2lnbmluZyAnJHthcGt9JyB3aXRoIGRlZmF1bHQgY2VydGApO1xuICBpZiAoIShhd2FpdCBmcy5leGlzdHMoYXBrKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCR7YXBrfSBmaWxlIGRvZXNuJ3QgZXhpc3QuYCk7XG4gIH1cblxuICBjb25zdCBhcmdzID0gW1xuICAgICdzaWduJyxcbiAgICAnLS1rZXknLCBERUZBVUxUX1BSSVZBVEVfS0VZLFxuICAgICctLWNlcnQnLCBERUZBVUxUX0NFUlRJRklDQVRFLFxuICAgIGFwayxcbiAgXTtcbiAgdHJ5IHtcbiAgICBhd2FpdCB0aGlzLmV4ZWN1dGVBcGtzaWduZXIoYXJncyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBzaWduICcke2Fwa30nIHdpdGggdGhlIGRlZmF1bHQgY2VydGlmaWNhdGUuIGAgK1xuICAgICAgYE9yaWdpbmFsIGVycm9yOiAke2Uuc3RkZXJyIHx8IGUuc3Rkb3V0IHx8IGUubWVzc2FnZX1gKTtcbiAgfVxufTtcblxuLyoqXG4gKiAoUmUpc2lnbiB0aGUgZ2l2ZW4gYXBrIGZpbGUgb24gdGhlIGxvY2FsIGZpbGUgc3lzdGVtIHdpdGggYSBjdXN0b20gY2VydGlmaWNhdGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFwayAtIFRoZSBmdWxsIHBhdGggdG8gdGhlIGxvY2FsIGFwayBmaWxlLlxuICogQHRocm93cyB7RXJyb3J9IElmIHNpZ25pbmcgZmFpbHMuXG4gKi9cbmFwa1NpZ25pbmdNZXRob2RzLnNpZ25XaXRoQ3VzdG9tQ2VydCA9IGFzeW5jIGZ1bmN0aW9uIHNpZ25XaXRoQ3VzdG9tQ2VydCAoYXBrKSB7XG4gIGxvZy5kZWJ1ZyhgU2lnbmluZyAnJHthcGt9JyB3aXRoIGN1c3RvbSBjZXJ0YCk7XG4gIGlmICghKGF3YWl0IGZzLmV4aXN0cyh0aGlzLmtleXN0b3JlUGF0aCkpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBLZXlzdG9yZTogJHt0aGlzLmtleXN0b3JlUGF0aH0gZG9lc24ndCBleGlzdC5gKTtcbiAgfVxuICBpZiAoIShhd2FpdCBmcy5leGlzdHMoYXBrKSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYCcke2Fwa30nIGRvZXNuJ3QgZXhpc3QuYCk7XG4gIH1cblxuICB0cnkge1xuICAgIGF3YWl0IHRoaXMuZXhlY3V0ZUFwa3NpZ25lcihbJ3NpZ24nLFxuICAgICAgJy0ta3MnLCB0aGlzLmtleXN0b3JlUGF0aCxcbiAgICAgICctLWtzLWtleS1hbGlhcycsIHRoaXMua2V5QWxpYXMsXG4gICAgICAnLS1rcy1wYXNzJywgYHBhc3M6JHt0aGlzLmtleXN0b3JlUGFzc3dvcmR9YCxcbiAgICAgICctLWtleS1wYXNzJywgYHBhc3M6JHt0aGlzLmtleVBhc3N3b3JkfWAsXG4gICAgICBhcGtdKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nLndhcm4oYENhbm5vdCB1c2UgYXBrc2lnbmVyIHRvb2wgZm9yIHNpZ25pbmcuIERlZmF1bHRpbmcgdG8gamFyc2lnbmVyLiBgICtcbiAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlcnIuc3RkZXJyIHx8IGVyci5zdGRvdXQgfHwgZXJyLm1lc3NhZ2V9YCk7XG4gICAgdHJ5IHtcbiAgICAgIGlmIChhd2FpdCB1bnNpZ25BcGsoYXBrKSkge1xuICAgICAgICBsb2cuZGVidWcoYCcke2Fwa30nIGhhcyBiZWVuIHN1Y2Nlc3NmdWxseSB1bnNpZ25lZGApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nLmRlYnVnKGAnJHthcGt9JyBkb2VzIG5vdCBuZWVkIHRvIGJlIHVuc2lnbmVkYCk7XG4gICAgICB9XG4gICAgICBjb25zdCBqYXJzaWduZXIgPSBwYXRoLnJlc29sdmUoYXdhaXQgZ2V0SmF2YUhvbWUoKSwgJ2JpbicsXG4gICAgICAgIGBqYXJzaWduZXIke3N5c3RlbS5pc1dpbmRvd3MoKSA/ICcuZXhlJyA6ICcnfWApO1xuICAgICAgY29uc3QgZnVsbENtZCA9IFtqYXJzaWduZXIsXG4gICAgICAgICctc2lnYWxnJywgJ01ENXdpdGhSU0EnLFxuICAgICAgICAnLWRpZ2VzdGFsZycsICdTSEExJyxcbiAgICAgICAgJy1rZXlzdG9yZScsIHRoaXMua2V5c3RvcmVQYXRoLFxuICAgICAgICAnLXN0b3JlcGFzcycsIHRoaXMua2V5c3RvcmVQYXNzd29yZCxcbiAgICAgICAgJy1rZXlwYXNzJywgdGhpcy5rZXlQYXNzd29yZCxcbiAgICAgICAgYXBrLCB0aGlzLmtleUFsaWFzXTtcbiAgICAgIGxvZy5kZWJ1ZyhgU3RhcnRpbmcgamFyc2lnbmVyOiAke3V0aWwucXVvdGUoZnVsbENtZCl9YCk7XG4gICAgICBhd2FpdCBleGVjKGZ1bGxDbWRbMF0sIGZ1bGxDbWQuc2xpY2UoMSksIHsgd2luZG93c1ZlcmJhdGltQXJndW1lbnRzOiBzeXN0ZW0uaXNXaW5kb3dzKCkgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3Qgc2lnbiB3aXRoIGN1c3RvbSBjZXJ0aWZpY2F0ZS4gYCArXG4gICAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlLnN0ZGVyciB8fCBlLm1lc3NhZ2V9YCk7XG4gICAgfVxuICB9XG59O1xuXG4vKipcbiAqIChSZSlzaWduIHRoZSBnaXZlbiBhcGsgZmlsZSBvbiB0aGUgbG9jYWwgZmlsZSBzeXN0ZW0gd2l0aCBlaXRoZXJcbiAqIGN1c3RvbSBvciBkZWZhdWx0IGNlcnRpZmljYXRlIGJhc2VkIG9uIF90aGlzLnVzZUtleXN0b3JlXyBwcm9wZXJ0eSB2YWx1ZVxuICogYW5kIFppcC1hbGlnbnMgaXQgYWZ0ZXIgc2lnbmluZy5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBwUGF0aCAtIFRoZSBmdWxsIHBhdGggdG8gdGhlIGxvY2FsIC5hcGsocykgZmlsZS5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBzaWduaW5nIGZhaWxzLlxuICovXG5hcGtTaWduaW5nTWV0aG9kcy5zaWduID0gYXN5bmMgZnVuY3Rpb24gc2lnbiAoYXBwUGF0aCkge1xuICBpZiAoYXBwUGF0aC5lbmRzV2l0aChBUEtTX0VYVEVOU0lPTikpIHtcbiAgICBsZXQgbWVzc2FnZSA9ICdTaWduaW5nIG9mIC5hcGtzLWZpbGVzIGlzIG5vdCBzdXBwb3J0ZWQuICc7XG4gICAgaWYgKHRoaXMudXNlS2V5c3RvcmUpIHtcbiAgICAgIG1lc3NhZ2UgKz0gJ0NvbnNpZGVyIG1hbnVhbCBhcHBsaWNhdGlvbiBidW5kbGUgc2lnbmluZyB3aXRoIHRoZSBjdXN0b20ga2V5c3RvcmUgJyArXG4gICAgICAgIGBsaWtlIGl0IGlzIGRlc2NyaWJlZCBhdCAke0JVTkRMRVRPT0xfVFVUT1JJQUx9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgbWVzc2FnZSArPSBgQ29uc2lkZXIgbWFudWFsIGFwcGxpY2F0aW9uIGJ1bmRsZSBzaWduaW5nIHdpdGggdGhlIGtleSBhdCAnJHtERUZBVUxUX1BSSVZBVEVfS0VZfScgYCArXG4gICAgICAgIGBhbmQgdGhlIGNlcnRpZmljYXRlIGF0ICcke0RFRkFVTFRfQ0VSVElGSUNBVEV9Jy4gUmVhZCAke0JVTkRMRVRPT0xfVFVUT1JJQUx9IGZvciBtb3JlIGRldGFpbHMuYDtcbiAgICB9XG4gICAgbG9nLndhcm4obWVzc2FnZSk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gaXQgaXMgbmVjZXNzYXJ5IHRvIGFwcGx5IHppcGFsaWduIG9ubHkgYmVmb3JlIHNpZ25pbmdcbiAgLy8gaWYgYXBrc2lnbmVyIGlzIHVzZWRcbiAgYXdhaXQgdGhpcy56aXBBbGlnbkFwayhhcHBQYXRoKTtcblxuICBpZiAodGhpcy51c2VLZXlzdG9yZSkge1xuICAgIGF3YWl0IHRoaXMuc2lnbldpdGhDdXN0b21DZXJ0KGFwcFBhdGgpO1xuICB9IGVsc2Uge1xuICAgIGF3YWl0IHRoaXMuc2lnbldpdGhEZWZhdWx0Q2VydChhcHBQYXRoKTtcbiAgfVxufTtcblxuLyoqXG4gKiBQZXJmb3JtIHppcC1hbGlnbmluZyB0byB0aGUgZ2l2ZW4gbG9jYWwgYXBrIGZpbGUuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFwayAtIFRoZSBmdWxsIHBhdGggdG8gdGhlIGxvY2FsIGFwayBmaWxlLlxuICogQHJldHVybnMge2Jvb2xlYW59IFRydWUgaWYgdGhlIGFwayBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgYWxpZ25lZFxuICogb3IgZmFsc2UgaWYgdGhlIGFwayBoYXMgYmVlbiBhbHJlYWR5IGFsaWduZWQuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgemlwLWFsaWduIGZhaWxzLlxuICovXG5hcGtTaWduaW5nTWV0aG9kcy56aXBBbGlnbkFwayA9IGFzeW5jIGZ1bmN0aW9uIHppcEFsaWduQXBrIChhcGspIHtcbiAgYXdhaXQgdGhpcy5pbml0WmlwQWxpZ24oKTtcbiAgdHJ5IHtcbiAgICBhd2FpdCBleGVjKHRoaXMuYmluYXJpZXMuemlwYWxpZ24sIFsnLWMnLCAnNCcsIGFwa10pO1xuICAgIGxvZy5kZWJ1ZyhgJHthcGt9JyBpcyBhbHJlYWR5IHppcC1hbGlnbmVkLiBEb2luZyBub3RoaW5nYCk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nLmRlYnVnKGAnJHthcGt9JyBpcyBub3QgemlwLWFsaWduZWQuIEFsaWduaW5nYCk7XG4gIH1cbiAgdHJ5IHtcbiAgICBhd2FpdCBmcy5hY2Nlc3MoYXBrLCBfZnMuV19PSyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBmaWxlIGF0ICcke2Fwa30nIGlzIG5vdCB3cml0ZWFibGUuIGAgK1xuICAgICAgYFBsZWFzZSBncmFudCB3cml0ZSBwZXJtaXNzaW9ucyB0byB0aGlzIGZpbGUgb3IgdG8gaXRzIHBhcmVudCBmb2xkZXIgJyR7cGF0aC5kaXJuYW1lKGFwayl9JyBgICtcbiAgICAgIGBmb3IgdGhlIEFwcGl1bSBwcm9jZXNzLCBzbyBpdCBjYW4gemlwLWFsaWduIHRoZSBmaWxlYCk7XG4gIH1cbiAgY29uc3QgYWxpZ25lZEFwayA9IGF3YWl0IHRlbXBEaXIucGF0aCh7cHJlZml4OiAnYXBwaXVtJywgc3VmZml4OiAnLnRtcCd9KTtcbiAgYXdhaXQgbWtkaXJwKHBhdGguZGlybmFtZShhbGlnbmVkQXBrKSk7XG4gIHRyeSB7XG4gICAgYXdhaXQgZXhlYyh0aGlzLmJpbmFyaWVzLnppcGFsaWduLCBbJy1mJywgJzQnLCBhcGssIGFsaWduZWRBcGtdKTtcbiAgICBhd2FpdCBmcy5tdihhbGlnbmVkQXBrLCBhcGssIHsgbWtkaXJwOiB0cnVlIH0pO1xuICAgIHJldHVybiB0cnVlO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKGF3YWl0IGZzLmV4aXN0cyhhbGlnbmVkQXBrKSkge1xuICAgICAgYXdhaXQgZnMudW5saW5rKGFsaWduZWRBcGspO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYHppcEFsaWduQXBrIGZhaWxlZC4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5zdGRlcnIgfHwgZS5tZXNzYWdlfWApO1xuICB9XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IENlcnRDaGVja09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7Ym9vbGVhbn0gcmVxdWlyZURlZmF1bHRDZXJ0IFt0cnVlXSBXaGV0aGVyIHRvIHJlcXVpcmUgdGhhdCB0aGUgZGVzdGluYXRpb24gQVBLXG4gKiBpcyBzaWduZWQgd2l0aCB0aGUgZGVmYXVsdCBBcHBpdW0gY2VydGlmaWNhdGUgb3IgYW55IHZhbGlkIGNlcnRpZmljYXRlLiBUaGlzIG9wdGlvblxuICogb25seSBoYXMgZWZmZWN0IGlmIGB1c2VLZXlzdG9yZWAgcHJvcGVydHkgaXMgdW5zZXQuXG4gKi9cblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgYXBwIGlzIGFscmVhZHkgc2lnbmVkIHdpdGggdGhlIGRlZmF1bHQgQXBwaXVtIGNlcnRpZmljYXRlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcHBQYXRoIC0gVGhlIGZ1bGwgcGF0aCB0byB0aGUgbG9jYWwgLmFwayhzKSBmaWxlLlxuICogQHBhcmFtIHtzdHJpbmd9IHBnayAtIFRoZSBuYW1lIG9mIGFwcGxpY2F0aW9uIHBhY2thZ2UuXG4gKiBAcGFyYW0ge0NlcnRDaGVja09wdGlvbnN9IG9wdHMgLSBDZXJ0aWZpY2F0ZSBjaGVja2luZyBvcHRpb25zXG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGdpdmVuIGFwcGxpY2F0aW9uIGlzIGFscmVhZHkgc2lnbmVkLlxuICovXG5hcGtTaWduaW5nTWV0aG9kcy5jaGVja0Fwa0NlcnQgPSBhc3luYyBmdW5jdGlvbiBjaGVja0Fwa0NlcnQgKGFwcFBhdGgsIHBrZywgb3B0cyA9IHt9KSB7XG4gIGxvZy5kZWJ1ZyhgQ2hlY2tpbmcgYXBwIGNlcnQgZm9yICR7YXBwUGF0aH1gKTtcbiAgaWYgKCFhd2FpdCBmcy5leGlzdHMoYXBwUGF0aCkpIHtcbiAgICBsb2cuZGVidWcoYCcke2FwcFBhdGh9JyBkb2VzIG5vdCBleGlzdGApO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChwYXRoLmV4dG5hbWUoYXBwUGF0aCkgPT09IEFQS1NfRVhURU5TSU9OKSB7XG4gICAgYXBwUGF0aCA9IGF3YWl0IHRoaXMuZXh0cmFjdEJhc2VBcGsoYXBwUGF0aCk7XG4gIH1cblxuICBjb25zdCBoYXNoTWF0Y2hlcyA9IChhcGtzaWduZXJPdXRwdXQsIGV4cGVjdGVkSGFzaGVzKSA9PiB7XG4gICAgZm9yIChjb25zdCBbbmFtZSwgdmFsdWVdIG9mIF8udG9QYWlycyhleHBlY3RlZEhhc2hlcykpIHtcbiAgICAgIGlmIChuZXcgUmVnRXhwKGBkaWdlc3Q6XFxcXHMrJHt2YWx1ZX1cXFxcYmAsICdpJykudGVzdChhcGtzaWduZXJPdXRwdXQpKSB7XG4gICAgICAgIGxvZy5kZWJ1ZyhgJHtuYW1lfSBoYXNoIGRpZCBtYXRjaCBmb3IgJyR7cGF0aC5iYXNlbmFtZShhcHBQYXRoKX0nYCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cbiAgY29uc3Qge1xuICAgIHJlcXVpcmVEZWZhdWx0Q2VydCA9IHRydWUsXG4gIH0gPSBvcHRzO1xuXG4gIGNvbnN0IGFwcEhhc2ggPSBhd2FpdCBmcy5oYXNoKGFwcFBhdGgpO1xuICBpZiAoU0lHTkVEX0FQUFNfQ0FDSEUuaGFzKGFwcEhhc2gpKSB7XG4gICAgbG9nLmRlYnVnKGBVc2luZyB0aGUgcHJldmlvdXNseSBjYWNoZWQgc2lnbmF0dXJlIGVudHJ5IGZvciAnJHtwYXRoLmJhc2VuYW1lKGFwcFBhdGgpfSdgKTtcbiAgICBjb25zdCB7a2V5c3RvcmVQYXRoLCBvdXRwdXQsIGV4cGVjdGVkfSA9IFNJR05FRF9BUFBTX0NBQ0hFLmdldChhcHBIYXNoKTtcbiAgICBpZiAodGhpcy51c2VLZXlzdG9yZSAmJiB0aGlzLmtleXN0b3JlUGF0aCA9PT0ga2V5c3RvcmVQYXRoIHx8ICF0aGlzLnVzZUtleXN0b3JlKSB7XG4gICAgICByZXR1cm4gKCF0aGlzLnVzZUtleXN0b3JlICYmICFyZXF1aXJlRGVmYXVsdENlcnQpIHx8IGhhc2hNYXRjaGVzKG91dHB1dCwgZXhwZWN0ZWQpO1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGV4cGVjdGVkID0gdGhpcy51c2VLZXlzdG9yZVxuICAgID8gYXdhaXQgdGhpcy5nZXRLZXlzdG9yZUhhc2goYXBwUGF0aCwgcGtnKVxuICAgIDogREVGQVVMVF9DRVJUX0hBU0g7XG4gIHRyeSB7XG4gICAgYXdhaXQgZ2V0QXBrc2lnbmVyRm9yT3ModGhpcyk7XG4gICAgY29uc3Qgb3V0cHV0ID0gYXdhaXQgdGhpcy5leGVjdXRlQXBrc2lnbmVyKFsndmVyaWZ5JywgJy0tcHJpbnQtY2VydHMnLCBhcHBQYXRoXSk7XG4gICAgY29uc3QgaGFzTWF0Y2ggPSBoYXNoTWF0Y2hlcyhvdXRwdXQsIGV4cGVjdGVkKTtcbiAgICBpZiAoaGFzTWF0Y2gpIHtcbiAgICAgIGxvZy5pbmZvKGAnJHthcHBQYXRofScgaXMgc2lnbmVkIHdpdGggdGhlIGAgK1xuICAgICAgICBgJHt0aGlzLnVzZUtleXN0b3JlID8gJ2tleXN0b3JlJyA6ICdkZWZhdWx0J30gY2VydGlmaWNhdGVgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nLmluZm8oYCcke2FwcFBhdGh9JyBpcyBzaWduZWQgd2l0aCBhIGAgK1xuICAgICAgICBgbm9uLSR7dGhpcy51c2VLZXlzdG9yZSA/ICdrZXlzdG9yZScgOiAnZGVmYXVsdCd9IGNlcnRpZmljYXRlYCk7XG4gICAgfVxuICAgIGNvbnN0IGlzU2lnbmVkID0gKCF0aGlzLnVzZUtleXN0b3JlICYmICFyZXF1aXJlRGVmYXVsdENlcnQpIHx8IGhhc01hdGNoO1xuICAgIGlmIChpc1NpZ25lZCkge1xuICAgICAgU0lHTkVEX0FQUFNfQ0FDSEUuc2V0KGFwcEhhc2gsIHtcbiAgICAgICAgb3V0cHV0LFxuICAgICAgICBleHBlY3RlZCxcbiAgICAgICAga2V5c3RvcmVQYXRoOiB0aGlzLmtleXN0b3JlUGF0aCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gaXNTaWduZWQ7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIC8vIGNoZWNrIGlmIHRoZXJlIGlzIG5vIHNpZ25hdHVyZVxuICAgIGlmIChfLmluY2x1ZGVzKGVyci5zdGRlcnIsIEFQS1NJR05FUl9WRVJJRllfRkFJTCkpIHtcbiAgICAgIGxvZy5pbmZvKGAnJHthcHBQYXRofScgaXMgbm90IHNpZ25lZGApO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBlcnJNc2cgPSBlcnIuc3RkZXJyIHx8IGVyci5zdGRvdXQgfHwgZXJyLm1lc3NhZ2U7XG4gICAgaWYgKF8uaW5jbHVkZXMoZXJyTXNnLCBKQVZBX1BST1BTX0lOSVRfRVJST1IpKSB7XG4gICAgICAvLyBUaGlzIGVycm9yIHBvcHMgdXAgcmFuZG9tbHkgYW5kIHdlIGFyZSBub3QgcXVpdGUgc3VyZSB3aHkuXG4gICAgICAvLyBNeSBndWVzcyAtIGEgcmFjZSBjb25kaXRpb24gaW4gamF2YSB2bSBpbml0aWFsaXphdGlvbi5cbiAgICAgIC8vIE5ldmVydGhlbGVzcywgbGV0cyBtYWtlIEFwcGl1bSB0byBiZWxpZXZlIHRoZSBmaWxlIGlzIGFscmVhZHkgc2lnbmVkLFxuICAgICAgLy8gYmVjYXVzZSBpdCB3b3VsZCBiZSB0cnVlIGZvciA5OSUgb2YgVUlBdXRvbWF0b3IyLWJhc2VkXG4gICAgICAvLyB0ZXN0cywgd2hlcmUgd2UgcHJlc2lnbiBzZXJ2ZXIgYmluYXJpZXMgd2hpbGUgcHVibGlzaGluZyB0aGVpciBOUE0gbW9kdWxlLlxuICAgICAgLy8gSWYgdGhlc2UgYXJlIG5vdCBzaWduZWQsIGUuZy4gaW4gY2FzZSBvZiBFc3ByZXNzbywgdGhlbiB0aGUgbmV4dCBzdGVwKHMpXG4gICAgICAvLyB3b3VsZCBhbnl3YXkgZmFpbC5cbiAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYXBwaXVtL2FwcGl1bS9pc3N1ZXMvMTQ3MjQgZm9yIG1vcmUgZGV0YWlscy5cbiAgICAgIGxvZy53YXJuKGVyck1zZyk7XG4gICAgICBsb2cud2FybihgQXNzdW1pbmcgJyR7YXBwUGF0aH0nIGlzIGFscmVhZHkgc2lnbmVkIGFuZCBjb250aW51aW5nIGFueXdheWApO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IHZlcmlmeSB0aGUgc2lnbmF0dXJlIG9mICcke2FwcFBhdGh9Jy4gYCArXG4gICAgICBgT3JpZ2luYWwgZXJyb3I6ICR7ZXJyTXNnfWApO1xuICB9XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEtleXN0b3JlSGFzaFxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBtZDUgdGhlIG1kNSBoYXNoIHZhbHVlIG9mIHRoZSBrZXlzdG9yZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBzaGExIHRoZSBzaGExIGhhc2ggdmFsdWUgb2YgdGhlIGtleXN0b3JlXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHNoYTI1NiB0aGUgc2hhMjU2IGhhc2ggdmFsdWUgb2YgdGhlIGtleXN0b3JlXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHNoYTUxMiB0aGUgc2hhNTEyIGhhc2ggdmFsdWUgb2YgdGhlIGtleXN0b3JlXG4gKi9cblxuLyoqXG4gKiBSZXRyaWV2ZSB0aGUgdGhlIGhhc2ggb2YgdGhlIGdpdmVuIGtleXN0b3JlLlxuICpcbiAqIEByZXR1cm4ge0tleXN0b3JlSGFzaH1cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBnZXR0aW5nIGtleXN0b3JlIGhhc2ggZmFpbHMuXG4gKi9cbmFwa1NpZ25pbmdNZXRob2RzLmdldEtleXN0b3JlSGFzaCA9IGFzeW5jIGZ1bmN0aW9uIGdldEtleXN0b3JlSGFzaCAoKSB7XG4gIGxvZy5kZWJ1ZyhgR2V0dGluZyBoYXNoIG9mIHRoZSAnJHt0aGlzLmtleXN0b3JlUGF0aH0nIGtleXN0b3JlYCk7XG4gIGNvbnN0IGtleXRvb2wgPSBwYXRoLnJlc29sdmUoYXdhaXQgZ2V0SmF2YUhvbWUoKSwgJ2JpbicsXG4gICAgYGtleXRvb2wke3N5c3RlbS5pc1dpbmRvd3MoKSA/ICcuZXhlJyA6ICcnfWApO1xuICBpZiAoIWF3YWl0IGZzLmV4aXN0cyhrZXl0b29sKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGtleXRvb2wgdXRpbGl0eSBjYW5ub3QgYmUgZm91bmQgYXQgJyR7a2V5dG9vbH0nYCk7XG4gIH1cbiAgY29uc3QgYXJncyA9IFtcbiAgICAnLXYnLCAnLWxpc3QnLFxuICAgICctYWxpYXMnLCB0aGlzLmtleUFsaWFzLFxuICAgICcta2V5c3RvcmUnLCB0aGlzLmtleXN0b3JlUGF0aCxcbiAgICAnLXN0b3JlcGFzcycsIHRoaXMua2V5c3RvcmVQYXNzd29yZFxuICBdO1xuICBsb2cuaW5mbyhgUnVubmluZyAnJHtrZXl0b29sfScgd2l0aCBhcmd1bWVudHM6ICR7dXRpbC5xdW90ZShhcmdzKX1gKTtcbiAgdHJ5IHtcbiAgICBjb25zdCB7c3Rkb3V0fSA9IGF3YWl0IGV4ZWMoa2V5dG9vbCwgYXJncywgeyB3aW5kb3dzVmVyYmF0aW1Bcmd1bWVudHM6IHN5c3RlbS5pc1dpbmRvd3MoKSB9KTtcbiAgICBjb25zdCByZXN1bHQgPSB7fTtcbiAgICBmb3IgKGNvbnN0IGhhc2hOYW1lIG9mIFtTSEE1MTIsIFNIQTI1NiwgU0hBMSwgTUQ1XSkge1xuICAgICAgY29uc3QgaGFzaFJlID0gbmV3IFJlZ0V4cChgXlxcXFxzKiR7aGFzaE5hbWV9OlxcXFxzKihbYS1mMC05Ol0rKWAsICdtaScpO1xuICAgICAgY29uc3QgbWF0Y2ggPSBoYXNoUmUuZXhlYyhzdGRvdXQpO1xuICAgICAgaWYgKCFtYXRjaCkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHJlc3VsdFtoYXNoTmFtZV0gPSBtYXRjaFsxXS5yZXBsYWNlKC86L2csICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgIH1cbiAgICBpZiAoXy5pc0VtcHR5KHJlc3VsdCkpIHtcbiAgICAgIGxvZy5kZWJ1ZyhzdGRvdXQpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3QgcGFyc2UgdGhlIGhhc2ggdmFsdWUgZnJvbSB0aGUga2V5dG9vbCBvdXRwdXQnKTtcbiAgICB9XG4gICAgbG9nLmRlYnVnKGBLZXlzdG9yZSBoYXNoOiAke0pTT04uc3RyaW5naWZ5KHJlc3VsdCl9YCk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGdldCB0aGUgaGFzaCBvZiAnJHt0aGlzLmtleXN0b3JlUGF0aH0nIGtleXN0b3JlLiBgICtcbiAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlLnN0ZGVyciB8fCBlLm1lc3NhZ2V9YCk7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IGFwa1NpZ25pbmdNZXRob2RzO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUtBLE1BQU1BLG1CQUFtQixHQUFHQyxjQUFLQyxPQUFMLENBQWFDLGdCQUFiLEVBQXNCLE1BQXRCLEVBQThCLGFBQTlCLENBQTVCOztBQUNBLE1BQU1DLG1CQUFtQixHQUFHSCxjQUFLQyxPQUFMLENBQWFDLGdCQUFiLEVBQXNCLE1BQXRCLEVBQThCLGtCQUE5QixDQUE1Qjs7QUFDQSxNQUFNRSxtQkFBbUIsR0FBRyw4REFBNUI7QUFDQSxNQUFNQyxxQkFBcUIsR0FBRyxpQkFBOUI7QUFDQSxNQUFNQyxJQUFJLEdBQUcsTUFBYjtBQUNBLE1BQU1DLE1BQU0sR0FBRyxRQUFmO0FBQ0EsTUFBTUMsTUFBTSxHQUFHLFFBQWY7QUFDQSxNQUFNQyxHQUFHLEdBQUcsS0FBWjtBQUNBLE1BQU1DLGlCQUFpQixHQUFHO0VBQ3hCLENBQUNILE1BQUQsR0FBVTtBQURjLENBQTFCO0FBR0EsTUFBTUkscUJBQXFCLEdBQUcsa0NBQTlCO0FBQ0EsTUFBTUMsaUJBQWlCLEdBQUcsSUFBSUMsaUJBQUosQ0FBUTtFQUNoQ0MsR0FBRyxFQUFFO0FBRDJCLENBQVIsQ0FBMUI7QUFLQSxNQUFNQyxpQkFBaUIsR0FBRyxFQUExQjs7QUFVQUEsaUJBQWlCLENBQUNDLGdCQUFsQixHQUFxQyxlQUFlQSxnQkFBZixDQUFpQ0MsSUFBSSxHQUFHLEVBQXhDLEVBQTRD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
333
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL3Rvb2xzL2Fway1zaWduaW5nLmpzIiwibmFtZXMiOlsiREVGQVVMVF9QUklWQVRFX0tFWSIsInBhdGgiLCJyZXNvbHZlIiwicm9vdERpciIsIkRFRkFVTFRfQ0VSVElGSUNBVEUiLCJCVU5ETEVUT09MX1RVVE9SSUFMIiwiQVBLU0lHTkVSX1ZFUklGWV9GQUlMIiwiU0hBMSIsIlNIQTI1NiIsIlNIQTUxMiIsIk1ENSIsIkRFRkFVTFRfQ0VSVF9IQVNIIiwiSkFWQV9QUk9QU19JTklUX0VSUk9SIiwiU0lHTkVEX0FQUFNfQ0FDSEUiLCJMUlUiLCJtYXgiLCJhcGtTaWduaW5nTWV0aG9kcyIsImV4ZWN1dGVBcGtzaWduZXIiLCJhcmdzIiwiYXBrU2lnbmVySmFyIiwiZ2V0QXBrc2lnbmVyRm9yT3MiLCJmdWxsQ21kIiwiZ2V0SmF2YUZvck9zIiwibG9nIiwiZGVidWciLCJ1dGlsIiwicXVvdGUiLCJzdGRvdXQiLCJzdGRlcnIiLCJleGVjIiwic2xpY2UiLCJjd2QiLCJkaXJuYW1lIiwid2luZG93c1ZlcmJhdGltQXJndW1lbnRzIiwic3lzdGVtIiwiaXNXaW5kb3dzIiwibmFtZSIsInN0cmVhbSIsIl8iLCJ0cmltIiwic3BsaXQiLCJmaWx0ZXIiLCJsaW5lIiwiaW5jbHVkZXMiLCJqb2luIiwic2lnbldpdGhEZWZhdWx0Q2VydCIsImFwayIsImZzIiwiZXhpc3RzIiwiRXJyb3IiLCJlIiwibWVzc2FnZSIsInNpZ25XaXRoQ3VzdG9tQ2VydCIsImtleXN0b3JlUGF0aCIsImtleUFsaWFzIiwia2V5c3RvcmVQYXNzd29yZCIsImtleVBhc3N3b3JkIiwiZXJyIiwid2FybiIsInVuc2lnbkFwayIsImphcnNpZ25lciIsImdldEphdmFIb21lIiwic2lnbiIsImFwcFBhdGgiLCJlbmRzV2l0aCIsIkFQS1NfRVhURU5TSU9OIiwidXNlS2V5c3RvcmUiLCJ6aXBBbGlnbkFwayIsImluaXRaaXBBbGlnbiIsImJpbmFyaWVzIiwiemlwYWxpZ24iLCJhY2Nlc3MiLCJfZnMiLCJXX09LIiwiYWxpZ25lZEFwayIsInRlbXBEaXIiLCJwcmVmaXgiLCJzdWZmaXgiLCJta2RpcnAiLCJtdiIsInVubGluayIsImNoZWNrQXBrQ2VydCIsInBrZyIsIm9wdHMiLCJleHRuYW1lIiwiZXh0cmFjdEJhc2VBcGsiLCJoYXNoTWF0Y2hlcyIsImFwa3NpZ25lck91dHB1dCIsImV4cGVjdGVkSGFzaGVzIiwidmFsdWUiLCJ0b1BhaXJzIiwiUmVnRXhwIiwidGVzdCIsImJhc2VuYW1lIiwicmVxdWlyZURlZmF1bHRDZXJ0IiwiYXBwSGFzaCIsImhhc2giLCJoYXMiLCJvdXRwdXQiLCJleHBlY3RlZCIsImdldCIsImdldEtleXN0b3JlSGFzaCIsImhhc01hdGNoIiwiaW5mbyIsImlzU2lnbmVkIiwic2V0IiwiZXJyTXNnIiwia2V5dG9vbCIsInJlc3VsdCIsImhhc2hOYW1lIiwiaGFzaFJlIiwibWF0Y2giLCJyZXBsYWNlIiwidG9Mb3dlckNhc2UiLCJpc0VtcHR5IiwiSlNPTiIsInN0cmluZ2lmeSJdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4iLCJzb3VyY2VzIjpbImxpYi90b29scy9hcGstc2lnbmluZy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IF9mcyBmcm9tICdmcyc7XG5pbXBvcnQgeyBleGVjIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXIuanMnO1xuaW1wb3J0IHsgdGVtcERpciwgc3lzdGVtLCBta2RpcnAsIGZzLCB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBMUlUgZnJvbSAnbHJ1LWNhY2hlJztcbmltcG9ydCB7XG4gIGdldEphdmFGb3JPcywgZ2V0QXBrc2lnbmVyRm9yT3MsIGdldEphdmFIb21lLFxuICByb290RGlyLCBBUEtTX0VYVEVOU0lPTiwgdW5zaWduQXBrLFxufSBmcm9tICcuLi9oZWxwZXJzLmpzJztcblxuY29uc3QgREVGQVVMVF9QUklWQVRFX0tFWSA9IHBhdGgucmVzb2x2ZShyb290RGlyLCAna2V5cycsICd0ZXN0a2V5LnBrOCcpO1xuY29uc3QgREVGQVVMVF9DRVJUSUZJQ0FURSA9IHBhdGgucmVzb2x2ZShyb290RGlyLCAna2V5cycsICd0ZXN0a2V5Lng1MDkucGVtJyk7XG5jb25zdCBCVU5ETEVUT09MX1RVVE9SSUFMID0gJ2h0dHBzOi8vZGV2ZWxvcGVyLmFuZHJvaWQuY29tL3N0dWRpby9jb21tYW5kLWxpbmUvYnVuZGxldG9vbCc7XG5jb25zdCBBUEtTSUdORVJfVkVSSUZZX0ZBSUwgPSAnRE9FUyBOT1QgVkVSSUZZJztcbmNvbnN0IFNIQTEgPSAnc2hhMSc7XG5jb25zdCBTSEEyNTYgPSAnc2hhMjU2JztcbmNvbnN0IFNIQTUxMiA9ICdzaGE1MTInO1xuY29uc3QgTUQ1ID0gJ21kNSc7XG5jb25zdCBERUZBVUxUX0NFUlRfSEFTSCA9IHtcbiAgW1NIQTI1Nl06ICdhNDBkYTgwYTU5ZDE3MGNhYTk1MGNmMTVjMThjNDU0ZDQ3YTM5YjI2OTg5ZDhiNjQwZWNkNzQ1YmE3MWJmNWRjJ1xufTtcbmNvbnN0IEpBVkFfUFJPUFNfSU5JVF9FUlJPUiA9ICdqYXZhLmxhbmcuRXJyb3I6IFByb3BlcnRpZXMgaW5pdCc7XG5jb25zdCBTSUdORURfQVBQU19DQUNIRSA9IG5ldyBMUlUoe1xuICBtYXg6IDMwLFxufSk7XG5cblxuY29uc3QgYXBrU2lnbmluZ01ldGhvZHMgPSB7fTtcblxuLyoqXG4gKiBFeGVjdXRlIGFwa3NpZ25lciB1dGlsaXR5IHdpdGggZ2l2ZW4gYXJndW1lbnRzLlxuICpcbiAqIEBwYXJhbSB7P0FycmF5PFN0cmluZz59IGFyZ3MgLSBUaGUgbGlzdCBvZiB0b29sIGFyZ3VtZW50cy5cbiAqIEByZXR1cm4ge3N0cmluZ30gLSBDb21tYW5kIHN0ZG91dFxuICogQHRocm93cyB7RXJyb3J9IElmIGFwa3NpZ25lciBiaW5hcnkgaXMgbm90IHByZXNlbnQgb24gdGhlIGxvY2FsIGZpbGUgc3lzdGVtXG4gKiAgICAgICAgICAgICAgICAgb3IgdGhlIHJldHVybiBjb2RlIGlzIG5vdCBlcXVhbCB0byB6ZXJvLlxuICovXG5hcGtTaWduaW5nTWV0aG9kcy5leGVjdXRlQXBrc2lnbmVyID0gYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZUFwa3NpZ25lciAoYXJncyA9IFtdKSB7XG4gIGNvbnN0IGFwa1NpZ25lckphciA9IGF3YWl0IGdldEFwa3NpZ25lckZvck9zKHRoaXMpO1xuICBjb25zdCBmdWxsQ21kID0gW1xuICAgIGF3YWl0IGdldEphdmFGb3JPcygpLCAnLVhteDEwMjRNJywgJy1Yc3MxbScsXG4gICAgJy1qYXInLCBhcGtTaWduZXJKYXIsXG4gICAgLi4uYXJnc1xuICBdO1xuICBsb2cuZGVidWcoYFN0YXJ0aW5nIGFwa3NpZ25lcjogJHt1dGlsLnF1b3RlKGZ1bGxDbWQpfWApO1xuICAvLyBJdCBpcyBuZWNlc3NhcnkgdG8gc3BlY2lmeSBDV0QgZXhwbGljaXRseTsgc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hcHBpdW0vYXBwaXVtL2lzc3Vlcy8xNDcyNCNpc3N1ZWNvbW1lbnQtNzM3NDQ2NzE1XG4gIGNvbnN0IHtzdGRvdXQsIHN0ZGVycn0gPSBhd2FpdCBleGVjKGZ1bGxDbWRbMF0sIGZ1bGxDbWQuc2xpY2UoMSksIHtcbiAgICBjd2Q6IHBhdGguZGlybmFtZShhcGtTaWduZXJKYXIpLCB3aW5kb3dzVmVyYmF0aW1Bcmd1bWVudHM6IHN5c3RlbS5pc1dpbmRvd3MoKVxuICB9KTtcbiAgZm9yIChsZXQgW25hbWUsIHN0cmVhbV0gb2YgW1snc3Rkb3V0Jywgc3Rkb3V0XSwgWydzdGRlcnInLCBzdGRlcnJdXSkge1xuICAgIGlmICghXy50cmltKHN0cmVhbSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmIChuYW1lID09PSAnc3Rkb3V0Jykge1xuICAgICAgLy8gTWFrZSB0aGUgb3V0cHV0IGxlc3MgdGFsa2F0aXZlXG4gICAgICBzdHJlYW0gPSBzdHJlYW0uc3BsaXQoJ1xcbicpXG4gICAgICAgIC5maWx0ZXIoKGxpbmUpID0+ICFsaW5lLmluY2x1ZGVzKCdXQVJOSU5HOicpKVxuICAgICAgICAuam9pbignXFxuJyk7XG4gICAgfVxuICAgIGxvZy5kZWJ1ZyhgYXBrc2lnbmVyICR7bmFtZX06ICR7c3RyZWFtfWApO1xuICB9XG4gIHJldHVybiBzdGRvdXQ7XG59O1xuXG4vKipcbiAqIChSZSlzaWduIHRoZSBnaXZlbiBhcGsgZmlsZSBvbiB0aGUgbG9jYWwgZmlsZSBzeXN0ZW0gd2l0aCB0aGUgZGVmYXVsdCBjZXJ0aWZpY2F0ZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBrIC0gVGhlIGZ1bGwgcGF0aCB0byB0aGUgbG9jYWwgYXBrIGZpbGUuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgc2lnbmluZyBmYWlscy5cbiAqL1xuYXBrU2lnbmluZ01ldGhvZHMuc2lnbldpdGhEZWZhdWx0Q2VydCA9IGFzeW5jIGZ1bmN0aW9uIHNpZ25XaXRoRGVmYXVsdENlcnQgKGFwaykge1xuICBsb2cuZGVidWcoYFNpZ25pbmcgJyR7YXBrfScgd2l0aCBkZWZhdWx0IGNlcnRgKTtcbiAgaWYgKCEoYXdhaXQgZnMuZXhpc3RzKGFwaykpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAke2Fwa30gZmlsZSBkb2Vzbid0IGV4aXN0LmApO1xuICB9XG5cbiAgY29uc3QgYXJncyA9IFtcbiAgICAnc2lnbicsXG4gICAgJy0ta2V5JywgREVGQVVMVF9QUklWQVRFX0tFWSxcbiAgICAnLS1jZXJ0JywgREVGQVVMVF9DRVJUSUZJQ0FURSxcbiAgICBhcGssXG4gIF07XG4gIHRyeSB7XG4gICAgYXdhaXQgdGhpcy5leGVjdXRlQXBrc2lnbmVyKGFyZ3MpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3Qgc2lnbiAnJHthcGt9JyB3aXRoIHRoZSBkZWZhdWx0IGNlcnRpZmljYXRlLiBgICtcbiAgICAgIGBPcmlnaW5hbCBlcnJvcjogJHtlLnN0ZGVyciB8fCBlLnN0ZG91dCB8fCBlLm1lc3NhZ2V9YCk7XG4gIH1cbn07XG5cbi8qKlxuICogKFJlKXNpZ24gdGhlIGdpdmVuIGFwayBmaWxlIG9uIHRoZSBsb2NhbCBmaWxlIHN5c3RlbSB3aXRoIGEgY3VzdG9tIGNlcnRpZmljYXRlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcGsgLSBUaGUgZnVsbCBwYXRoIHRvIHRoZSBsb2NhbCBhcGsgZmlsZS5cbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiBzaWduaW5nIGZhaWxzLlxuICovXG5hcGtTaWduaW5nTWV0aG9kcy5zaWduV2l0aEN1c3RvbUNlcnQgPSBhc3luYyBmdW5jdGlvbiBzaWduV2l0aEN1c3RvbUNlcnQgKGFwaykge1xuICBsb2cuZGVidWcoYFNpZ25pbmcgJyR7YXBrfScgd2l0aCBjdXN0b20gY2VydGApO1xuICBpZiAoIShhd2FpdCBmcy5leGlzdHModGhpcy5rZXlzdG9yZVBhdGgpKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgS2V5c3RvcmU6ICR7dGhpcy5rZXlzdG9yZVBhdGh9IGRvZXNuJ3QgZXhpc3QuYCk7XG4gIH1cbiAgaWYgKCEoYXdhaXQgZnMuZXhpc3RzKGFwaykpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGAnJHthcGt9JyBkb2Vzbid0IGV4aXN0LmApO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCB0aGlzLmV4ZWN1dGVBcGtzaWduZXIoWydzaWduJyxcbiAgICAgICctLWtzJywgdGhpcy5rZXlzdG9yZVBhdGgsXG4gICAgICAnLS1rcy1rZXktYWxpYXMnLCB0aGlzLmtleUFsaWFzLFxuICAgICAgJy0ta3MtcGFzcycsIGBwYXNzOiR7dGhpcy5rZXlzdG9yZVBhc3N3b3JkfWAsXG4gICAgICAnLS1rZXktcGFzcycsIGBwYXNzOiR7dGhpcy5rZXlQYXNzd29yZH1gLFxuICAgICAgYXBrXSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZy53YXJuKGBDYW5ub3QgdXNlIGFwa3NpZ25lciB0b29sIGZvciBzaWduaW5nLiBEZWZhdWx0aW5nIHRvIGphcnNpZ25lci4gYCArXG4gICAgICBgT3JpZ2luYWwgZXJyb3I6ICR7ZXJyLnN0ZGVyciB8fCBlcnIuc3Rkb3V0IHx8IGVyci5tZXNzYWdlfWApO1xuICAgIHRyeSB7XG4gICAgICBpZiAoYXdhaXQgdW5zaWduQXBrKGFwaykpIHtcbiAgICAgICAgbG9nLmRlYnVnKGAnJHthcGt9JyBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgdW5zaWduZWRgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvZy5kZWJ1ZyhgJyR7YXBrfScgZG9lcyBub3QgbmVlZCB0byBiZSB1bnNpZ25lZGApO1xuICAgICAgfVxuICAgICAgY29uc3QgamFyc2lnbmVyID0gcGF0aC5yZXNvbHZlKGF3YWl0IGdldEphdmFIb21lKCksICdiaW4nLFxuICAgICAgICBgamFyc2lnbmVyJHtzeXN0ZW0uaXNXaW5kb3dzKCkgPyAnLmV4ZScgOiAnJ31gKTtcbiAgICAgIGNvbnN0IGZ1bGxDbWQgPSBbamFyc2lnbmVyLFxuICAgICAgICAnLXNpZ2FsZycsICdNRDV3aXRoUlNBJyxcbiAgICAgICAgJy1kaWdlc3RhbGcnLCAnU0hBMScsXG4gICAgICAgICcta2V5c3RvcmUnLCB0aGlzLmtleXN0b3JlUGF0aCxcbiAgICAgICAgJy1zdG9yZXBhc3MnLCB0aGlzLmtleXN0b3JlUGFzc3dvcmQsXG4gICAgICAgICcta2V5cGFzcycsIHRoaXMua2V5UGFzc3dvcmQsXG4gICAgICAgIGFwaywgdGhpcy5rZXlBbGlhc107XG4gICAgICBsb2cuZGVidWcoYFN0YXJ0aW5nIGphcnNpZ25lcjogJHt1dGlsLnF1b3RlKGZ1bGxDbWQpfWApO1xuICAgICAgYXdhaXQgZXhlYyhmdWxsQ21kWzBdLCBmdWxsQ21kLnNsaWNlKDEpLCB7IHdpbmRvd3NWZXJiYXRpbUFyZ3VtZW50czogc3lzdGVtLmlzV2luZG93cygpIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IHNpZ24gd2l0aCBjdXN0b20gY2VydGlmaWNhdGUuIGAgK1xuICAgICAgICBgT3JpZ2luYWwgZXJyb3I6ICR7ZS5zdGRlcnIgfHwgZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxufTtcblxuLyoqXG4gKiAoUmUpc2lnbiB0aGUgZ2l2ZW4gYXBrIGZpbGUgb24gdGhlIGxvY2FsIGZpbGUgc3lzdGVtIHdpdGggZWl0aGVyXG4gKiBjdXN0b20gb3IgZGVmYXVsdCBjZXJ0aWZpY2F0ZSBiYXNlZCBvbiBfdGhpcy51c2VLZXlzdG9yZV8gcHJvcGVydHkgdmFsdWVcbiAqIGFuZCBaaXAtYWxpZ25zIGl0IGFmdGVyIHNpZ25pbmcuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFwcFBhdGggLSBUaGUgZnVsbCBwYXRoIHRvIHRoZSBsb2NhbCAuYXBrKHMpIGZpbGUuXG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgc2lnbmluZyBmYWlscy5cbiAqL1xuYXBrU2lnbmluZ01ldGhvZHMuc2lnbiA9IGFzeW5jIGZ1bmN0aW9uIHNpZ24gKGFwcFBhdGgpIHtcbiAgaWYgKGFwcFBhdGguZW5kc1dpdGgoQVBLU19FWFRFTlNJT04pKSB7XG4gICAgbGV0IG1lc3NhZ2UgPSAnU2lnbmluZyBvZiAuYXBrcy1maWxlcyBpcyBub3Qgc3VwcG9ydGVkLiAnO1xuICAgIGlmICh0aGlzLnVzZUtleXN0b3JlKSB7XG4gICAgICBtZXNzYWdlICs9ICdDb25zaWRlciBtYW51YWwgYXBwbGljYXRpb24gYnVuZGxlIHNpZ25pbmcgd2l0aCB0aGUgY3VzdG9tIGtleXN0b3JlICcgK1xuICAgICAgICBgbGlrZSBpdCBpcyBkZXNjcmliZWQgYXQgJHtCVU5ETEVUT09MX1RVVE9SSUFMfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1lc3NhZ2UgKz0gYENvbnNpZGVyIG1hbnVhbCBhcHBsaWNhdGlvbiBidW5kbGUgc2lnbmluZyB3aXRoIHRoZSBrZXkgYXQgJyR7REVGQVVMVF9QUklWQVRFX0tFWX0nIGAgK1xuICAgICAgICBgYW5kIHRoZSBjZXJ0aWZpY2F0ZSBhdCAnJHtERUZBVUxUX0NFUlRJRklDQVRFfScuIFJlYWQgJHtCVU5ETEVUT09MX1RVVE9SSUFMfSBmb3IgbW9yZSBkZXRhaWxzLmA7XG4gICAgfVxuICAgIGxvZy53YXJuKG1lc3NhZ2UpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIGl0IGlzIG5lY2Vzc2FyeSB0byBhcHBseSB6aXBhbGlnbiBvbmx5IGJlZm9yZSBzaWduaW5nXG4gIC8vIGlmIGFwa3NpZ25lciBpcyB1c2VkXG4gIGF3YWl0IHRoaXMuemlwQWxpZ25BcGsoYXBwUGF0aCk7XG5cbiAgaWYgKHRoaXMudXNlS2V5c3RvcmUpIHtcbiAgICBhd2FpdCB0aGlzLnNpZ25XaXRoQ3VzdG9tQ2VydChhcHBQYXRoKTtcbiAgfSBlbHNlIHtcbiAgICBhd2FpdCB0aGlzLnNpZ25XaXRoRGVmYXVsdENlcnQoYXBwUGF0aCk7XG4gIH1cbn07XG5cbi8qKlxuICogUGVyZm9ybSB6aXAtYWxpZ25pbmcgdG8gdGhlIGdpdmVuIGxvY2FsIGFwayBmaWxlLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhcGsgLSBUaGUgZnVsbCBwYXRoIHRvIHRoZSBsb2NhbCBhcGsgZmlsZS5cbiAqIEByZXR1cm5zIHtib29sZWFufSBUcnVlIGlmIHRoZSBhcGsgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGFsaWduZWRcbiAqIG9yIGZhbHNlIGlmIHRoZSBhcGsgaGFzIGJlZW4gYWxyZWFkeSBhbGlnbmVkLlxuICogQHRocm93cyB7RXJyb3J9IElmIHppcC1hbGlnbiBmYWlscy5cbiAqL1xuYXBrU2lnbmluZ01ldGhvZHMuemlwQWxpZ25BcGsgPSBhc3luYyBmdW5jdGlvbiB6aXBBbGlnbkFwayAoYXBrKSB7XG4gIGF3YWl0IHRoaXMuaW5pdFppcEFsaWduKCk7XG4gIHRyeSB7XG4gICAgYXdhaXQgZXhlYyh0aGlzLmJpbmFyaWVzLnppcGFsaWduLCBbJy1jJywgJzQnLCBhcGtdKTtcbiAgICBsb2cuZGVidWcoYCR7YXBrfScgaXMgYWxyZWFkeSB6aXAtYWxpZ25lZC4gRG9pbmcgbm90aGluZ2ApO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZy5kZWJ1ZyhgJyR7YXBrfScgaXMgbm90IHppcC1hbGlnbmVkLiBBbGlnbmluZ2ApO1xuICB9XG4gIHRyeSB7XG4gICAgYXdhaXQgZnMuYWNjZXNzKGFwaywgX2ZzLldfT0spO1xuICB9IGNhdGNoIChlKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgZmlsZSBhdCAnJHthcGt9JyBpcyBub3Qgd3JpdGVhYmxlLiBgICtcbiAgICAgIGBQbGVhc2UgZ3JhbnQgd3JpdGUgcGVybWlzc2lvbnMgdG8gdGhpcyBmaWxlIG9yIHRvIGl0cyBwYXJlbnQgZm9sZGVyICcke3BhdGguZGlybmFtZShhcGspfScgYCArXG4gICAgICBgZm9yIHRoZSBBcHBpdW0gcHJvY2Vzcywgc28gaXQgY2FuIHppcC1hbGlnbiB0aGUgZmlsZWApO1xuICB9XG4gIGNvbnN0IGFsaWduZWRBcGsgPSBhd2FpdCB0ZW1wRGlyLnBhdGgoe3ByZWZpeDogJ2FwcGl1bScsIHN1ZmZpeDogJy50bXAnfSk7XG4gIGF3YWl0IG1rZGlycChwYXRoLmRpcm5hbWUoYWxpZ25lZEFwaykpO1xuICB0cnkge1xuICAgIGF3YWl0IGV4ZWModGhpcy5iaW5hcmllcy56aXBhbGlnbiwgWyctZicsICc0JywgYXBrLCBhbGlnbmVkQXBrXSk7XG4gICAgYXdhaXQgZnMubXYoYWxpZ25lZEFwaywgYXBrLCB7IG1rZGlycDogdHJ1ZSB9KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGlmIChhd2FpdCBmcy5leGlzdHMoYWxpZ25lZEFwaykpIHtcbiAgICAgIGF3YWl0IGZzLnVubGluayhhbGlnbmVkQXBrKTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGB6aXBBbGlnbkFwayBmYWlsZWQuIE9yaWdpbmFsIGVycm9yOiAke2Uuc3RkZXJyIHx8IGUubWVzc2FnZX1gKTtcbiAgfVxufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBDZXJ0Q2hlY2tPcHRpb25zXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHJlcXVpcmVEZWZhdWx0Q2VydCBbdHJ1ZV0gV2hldGhlciB0byByZXF1aXJlIHRoYXQgdGhlIGRlc3RpbmF0aW9uIEFQS1xuICogaXMgc2lnbmVkIHdpdGggdGhlIGRlZmF1bHQgQXBwaXVtIGNlcnRpZmljYXRlIG9yIGFueSB2YWxpZCBjZXJ0aWZpY2F0ZS4gVGhpcyBvcHRpb25cbiAqIG9ubHkgaGFzIGVmZmVjdCBpZiBgdXNlS2V5c3RvcmVgIHByb3BlcnR5IGlzIHVuc2V0LlxuICovXG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGFwcCBpcyBhbHJlYWR5IHNpZ25lZCB3aXRoIHRoZSBkZWZhdWx0IEFwcGl1bSBjZXJ0aWZpY2F0ZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gYXBwUGF0aCAtIFRoZSBmdWxsIHBhdGggdG8gdGhlIGxvY2FsIC5hcGsocykgZmlsZS5cbiAqIEBwYXJhbSB7c3RyaW5nfSBwZ2sgLSBUaGUgbmFtZSBvZiBhcHBsaWNhdGlvbiBwYWNrYWdlLlxuICogQHBhcmFtIHtDZXJ0Q2hlY2tPcHRpb25zfSBvcHRzIC0gQ2VydGlmaWNhdGUgY2hlY2tpbmcgb3B0aW9uc1xuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBnaXZlbiBhcHBsaWNhdGlvbiBpcyBhbHJlYWR5IHNpZ25lZC5cbiAqL1xuYXBrU2lnbmluZ01ldGhvZHMuY2hlY2tBcGtDZXJ0ID0gYXN5bmMgZnVuY3Rpb24gY2hlY2tBcGtDZXJ0IChhcHBQYXRoLCBwa2csIG9wdHMgPSB7fSkge1xuICBsb2cuZGVidWcoYENoZWNraW5nIGFwcCBjZXJ0IGZvciAke2FwcFBhdGh9YCk7XG4gIGlmICghYXdhaXQgZnMuZXhpc3RzKGFwcFBhdGgpKSB7XG4gICAgbG9nLmRlYnVnKGAnJHthcHBQYXRofScgZG9lcyBub3QgZXhpc3RgKTtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAocGF0aC5leHRuYW1lKGFwcFBhdGgpID09PSBBUEtTX0VYVEVOU0lPTikge1xuICAgIGFwcFBhdGggPSBhd2FpdCB0aGlzLmV4dHJhY3RCYXNlQXBrKGFwcFBhdGgpO1xuICB9XG5cbiAgY29uc3QgaGFzaE1hdGNoZXMgPSAoYXBrc2lnbmVyT3V0cHV0LCBleHBlY3RlZEhhc2hlcykgPT4ge1xuICAgIGZvciAoY29uc3QgW25hbWUsIHZhbHVlXSBvZiBfLnRvUGFpcnMoZXhwZWN0ZWRIYXNoZXMpKSB7XG4gICAgICBpZiAobmV3IFJlZ0V4cChgZGlnZXN0OlxcXFxzKyR7dmFsdWV9XFxcXGJgLCAnaScpLnRlc3QoYXBrc2lnbmVyT3V0cHV0KSkge1xuICAgICAgICBsb2cuZGVidWcoYCR7bmFtZX0gaGFzaCBkaWQgbWF0Y2ggZm9yICcke3BhdGguYmFzZW5hbWUoYXBwUGF0aCl9J2ApO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG4gIGNvbnN0IHtcbiAgICByZXF1aXJlRGVmYXVsdENlcnQgPSB0cnVlLFxuICB9ID0gb3B0cztcblxuICBjb25zdCBhcHBIYXNoID0gYXdhaXQgZnMuaGFzaChhcHBQYXRoKTtcbiAgaWYgKFNJR05FRF9BUFBTX0NBQ0hFLmhhcyhhcHBIYXNoKSkge1xuICAgIGxvZy5kZWJ1ZyhgVXNpbmcgdGhlIHByZXZpb3VzbHkgY2FjaGVkIHNpZ25hdHVyZSBlbnRyeSBmb3IgJyR7cGF0aC5iYXNlbmFtZShhcHBQYXRoKX0nYCk7XG4gICAgY29uc3Qge2tleXN0b3JlUGF0aCwgb3V0cHV0LCBleHBlY3RlZH0gPSBTSUdORURfQVBQU19DQUNIRS5nZXQoYXBwSGFzaCk7XG4gICAgaWYgKHRoaXMudXNlS2V5c3RvcmUgJiYgdGhpcy5rZXlzdG9yZVBhdGggPT09IGtleXN0b3JlUGF0aCB8fCAhdGhpcy51c2VLZXlzdG9yZSkge1xuICAgICAgcmV0dXJuICghdGhpcy51c2VLZXlzdG9yZSAmJiAhcmVxdWlyZURlZmF1bHRDZXJ0KSB8fCBoYXNoTWF0Y2hlcyhvdXRwdXQsIGV4cGVjdGVkKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBleHBlY3RlZCA9IHRoaXMudXNlS2V5c3RvcmVcbiAgICA/IGF3YWl0IHRoaXMuZ2V0S2V5c3RvcmVIYXNoKGFwcFBhdGgsIHBrZylcbiAgICA6IERFRkFVTFRfQ0VSVF9IQVNIO1xuICB0cnkge1xuICAgIGF3YWl0IGdldEFwa3NpZ25lckZvck9zKHRoaXMpO1xuICAgIGNvbnN0IG91dHB1dCA9IGF3YWl0IHRoaXMuZXhlY3V0ZUFwa3NpZ25lcihbJ3ZlcmlmeScsICctLXByaW50LWNlcnRzJywgYXBwUGF0aF0pO1xuICAgIGNvbnN0IGhhc01hdGNoID0gaGFzaE1hdGNoZXMob3V0cHV0LCBleHBlY3RlZCk7XG4gICAgaWYgKGhhc01hdGNoKSB7XG4gICAgICBsb2cuaW5mbyhgJyR7YXBwUGF0aH0nIGlzIHNpZ25lZCB3aXRoIHRoZSBgICtcbiAgICAgICAgYCR7dGhpcy51c2VLZXlzdG9yZSA/ICdrZXlzdG9yZScgOiAnZGVmYXVsdCd9IGNlcnRpZmljYXRlYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZy5pbmZvKGAnJHthcHBQYXRofScgaXMgc2lnbmVkIHdpdGggYSBgICtcbiAgICAgICAgYG5vbi0ke3RoaXMudXNlS2V5c3RvcmUgPyAna2V5c3RvcmUnIDogJ2RlZmF1bHQnfSBjZXJ0aWZpY2F0ZWApO1xuICAgIH1cbiAgICBjb25zdCBpc1NpZ25lZCA9ICghdGhpcy51c2VLZXlzdG9yZSAmJiAhcmVxdWlyZURlZmF1bHRDZXJ0KSB8fCBoYXNNYXRjaDtcbiAgICBpZiAoaXNTaWduZWQpIHtcbiAgICAgIFNJR05FRF9BUFBTX0NBQ0hFLnNldChhcHBIYXNoLCB7XG4gICAgICAgIG91dHB1dCxcbiAgICAgICAgZXhwZWN0ZWQsXG4gICAgICAgIGtleXN0b3JlUGF0aDogdGhpcy5rZXlzdG9yZVBhdGgsXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGlzU2lnbmVkO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICAvLyBjaGVjayBpZiB0aGVyZSBpcyBubyBzaWduYXR1cmVcbiAgICBpZiAoXy5pbmNsdWRlcyhlcnIuc3RkZXJyLCBBUEtTSUdORVJfVkVSSUZZX0ZBSUwpKSB7XG4gICAgICBsb2cuaW5mbyhgJyR7YXBwUGF0aH0nIGlzIG5vdCBzaWduZWRgKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3QgZXJyTXNnID0gZXJyLnN0ZGVyciB8fCBlcnIuc3Rkb3V0IHx8IGVyci5tZXNzYWdlO1xuICAgIGlmIChfLmluY2x1ZGVzKGVyck1zZywgSkFWQV9QUk9QU19JTklUX0VSUk9SKSkge1xuICAgICAgLy8gVGhpcyBlcnJvciBwb3BzIHVwIHJhbmRvbWx5IGFuZCB3ZSBhcmUgbm90IHF1aXRlIHN1cmUgd2h5LlxuICAgICAgLy8gTXkgZ3Vlc3MgLSBhIHJhY2UgY29uZGl0aW9uIGluIGphdmEgdm0gaW5pdGlhbGl6YXRpb24uXG4gICAgICAvLyBOZXZlcnRoZWxlc3MsIGxldHMgbWFrZSBBcHBpdW0gdG8gYmVsaWV2ZSB0aGUgZmlsZSBpcyBhbHJlYWR5IHNpZ25lZCxcbiAgICAgIC8vIGJlY2F1c2UgaXQgd291bGQgYmUgdHJ1ZSBmb3IgOTklIG9mIFVJQXV0b21hdG9yMi1iYXNlZFxuICAgICAgLy8gdGVzdHMsIHdoZXJlIHdlIHByZXNpZ24gc2VydmVyIGJpbmFyaWVzIHdoaWxlIHB1Ymxpc2hpbmcgdGhlaXIgTlBNIG1vZHVsZS5cbiAgICAgIC8vIElmIHRoZXNlIGFyZSBub3Qgc2lnbmVkLCBlLmcuIGluIGNhc2Ugb2YgRXNwcmVzc28sIHRoZW4gdGhlIG5leHQgc3RlcChzKVxuICAgICAgLy8gd291bGQgYW55d2F5IGZhaWwuXG4gICAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2FwcGl1bS9hcHBpdW0vaXNzdWVzLzE0NzI0IGZvciBtb3JlIGRldGFpbHMuXG4gICAgICBsb2cud2FybihlcnJNc2cpO1xuICAgICAgbG9nLndhcm4oYEFzc3VtaW5nICcke2FwcFBhdGh9JyBpcyBhbHJlYWR5IHNpZ25lZCBhbmQgY29udGludWluZyBhbnl3YXlgKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCB2ZXJpZnkgdGhlIHNpZ25hdHVyZSBvZiAnJHthcHBQYXRofScuIGAgK1xuICAgICAgYE9yaWdpbmFsIGVycm9yOiAke2Vyck1zZ31gKTtcbiAgfVxufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBLZXlzdG9yZUhhc2hcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbWQ1IHRoZSBtZDUgaGFzaCB2YWx1ZSBvZiB0aGUga2V5c3RvcmVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gc2hhMSB0aGUgc2hhMSBoYXNoIHZhbHVlIG9mIHRoZSBrZXlzdG9yZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBzaGEyNTYgdGhlIHNoYTI1NiBoYXNoIHZhbHVlIG9mIHRoZSBrZXlzdG9yZVxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBzaGE1MTIgdGhlIHNoYTUxMiBoYXNoIHZhbHVlIG9mIHRoZSBrZXlzdG9yZVxuICovXG5cbi8qKlxuICogUmV0cmlldmUgdGhlIHRoZSBoYXNoIG9mIHRoZSBnaXZlbiBrZXlzdG9yZS5cbiAqXG4gKiBAcmV0dXJuIHtLZXlzdG9yZUhhc2h9XG4gKiBAdGhyb3dzIHtFcnJvcn0gSWYgZ2V0dGluZyBrZXlzdG9yZSBoYXNoIGZhaWxzLlxuICovXG5hcGtTaWduaW5nTWV0aG9kcy5nZXRLZXlzdG9yZUhhc2ggPSBhc3luYyBmdW5jdGlvbiBnZXRLZXlzdG9yZUhhc2ggKCkge1xuICBsb2cuZGVidWcoYEdldHRpbmcgaGFzaCBvZiB0aGUgJyR7dGhpcy5rZXlzdG9yZVBhdGh9JyBrZXlzdG9yZWApO1xuICBjb25zdCBrZXl0b29sID0gcGF0aC5yZXNvbHZlKGF3YWl0IGdldEphdmFIb21lKCksICdiaW4nLFxuICAgIGBrZXl0b29sJHtzeXN0ZW0uaXNXaW5kb3dzKCkgPyAnLmV4ZScgOiAnJ31gKTtcbiAgaWYgKCFhd2FpdCBmcy5leGlzdHMoa2V5dG9vbCkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBrZXl0b29sIHV0aWxpdHkgY2Fubm90IGJlIGZvdW5kIGF0ICcke2tleXRvb2x9J2ApO1xuICB9XG4gIGNvbnN0IGFyZ3MgPSBbXG4gICAgJy12JywgJy1saXN0JyxcbiAgICAnLWFsaWFzJywgdGhpcy5rZXlBbGlhcyxcbiAgICAnLWtleXN0b3JlJywgdGhpcy5rZXlzdG9yZVBhdGgsXG4gICAgJy1zdG9yZXBhc3MnLCB0aGlzLmtleXN0b3JlUGFzc3dvcmRcbiAgXTtcbiAgbG9nLmluZm8oYFJ1bm5pbmcgJyR7a2V5dG9vbH0nIHdpdGggYXJndW1lbnRzOiAke3V0aWwucXVvdGUoYXJncyl9YCk7XG4gIHRyeSB7XG4gICAgY29uc3Qge3N0ZG91dH0gPSBhd2FpdCBleGVjKGtleXRvb2wsIGFyZ3MsIHsgd2luZG93c1ZlcmJhdGltQXJndW1lbnRzOiBzeXN0ZW0uaXNXaW5kb3dzKCkgfSk7XG4gICAgY29uc3QgcmVzdWx0ID0ge307XG4gICAgZm9yIChjb25zdCBoYXNoTmFtZSBvZiBbU0hBNTEyLCBTSEEyNTYsIFNIQTEsIE1ENV0pIHtcbiAgICAgIGNvbnN0IGhhc2hSZSA9IG5ldyBSZWdFeHAoYF5cXFxccyoke2hhc2hOYW1lfTpcXFxccyooW2EtZjAtOTpdKylgLCAnbWknKTtcbiAgICAgIGNvbnN0IG1hdGNoID0gaGFzaFJlLmV4ZWMoc3Rkb3V0KTtcbiAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICByZXN1bHRbaGFzaE5hbWVdID0gbWF0Y2hbMV0ucmVwbGFjZSgvOi9nLCAnJykudG9Mb3dlckNhc2UoKTtcbiAgICB9XG4gICAgaWYgKF8uaXNFbXB0eShyZXN1bHQpKSB7XG4gICAgICBsb2cuZGVidWcoc3Rkb3V0KTtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ2Fubm90IHBhcnNlIHRoZSBoYXNoIHZhbHVlIGZyb20gdGhlIGtleXRvb2wgb3V0cHV0Jyk7XG4gICAgfVxuICAgIGxvZy5kZWJ1ZyhgS2V5c3RvcmUgaGFzaDogJHtKU09OLnN0cmluZ2lmeShyZXN1bHQpfWApO1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBnZXQgdGhlIGhhc2ggb2YgJyR7dGhpcy5rZXlzdG9yZVBhdGh9JyBrZXlzdG9yZS4gYCArXG4gICAgICBgT3JpZ2luYWwgZXJyb3I6ICR7ZS5zdGRlcnIgfHwgZS5tZXNzYWdlfWApO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBhcGtTaWduaW5nTWV0aG9kcztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFLQSxNQUFNQSxtQkFBbUIsR0FBR0MsYUFBQSxDQUFLQyxPQUFMLENBQWFDLGdCQUFiLEVBQXNCLE1BQXRCLEVBQThCLGFBQTlCLENBQTVCOztBQUNBLE1BQU1DLG1CQUFtQixHQUFHSCxhQUFBLENBQUtDLE9BQUwsQ0FBYUMsZ0JBQWIsRUFBc0IsTUFBdEIsRUFBOEIsa0JBQTlCLENBQTVCOztBQUNBLE1BQU1FLG1CQUFtQixHQUFHLDhEQUE1QjtBQUNBLE1BQU1DLHFCQUFxQixHQUFHLGlCQUE5QjtBQUNBLE1BQU1DLElBQUksR0FBRyxNQUFiO0FBQ0EsTUFBTUMsTUFBTSxHQUFHLFFBQWY7QUFDQSxNQUFNQyxNQUFNLEdBQUcsUUFBZjtBQUNBLE1BQU1DLEdBQUcsR0FBRyxLQUFaO0FBQ0EsTUFBTUMsaUJBQWlCLEdBQUc7RUFDeEIsQ0FBQ0gsTUFBRCxHQUFVO0FBRGMsQ0FBMUI7QUFHQSxNQUFNSSxxQkFBcUIsR0FBRyxrQ0FBOUI7QUFDQSxNQUFNQyxpQkFBaUIsR0FBRyxJQUFJQyxpQkFBSixDQUFRO0VBQ2hDQyxHQUFHLEVBQUU7QUFEMkIsQ0FBUixDQUExQjtBQUtBLE1BQU1DLGlCQUFpQixHQUFHLEVBQTFCOztB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