israeli-bank-scrapers 6.4.1 → 6.5.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.
@@ -112,7 +112,7 @@ function createLoginFields(credentials) {
112
112
  value: credentials.password
113
113
  }];
114
114
  }
115
- function convertParsedDataToTransactions(data, pendingData) {
115
+ function convertParsedDataToTransactions(data, pendingData, options) {
116
116
  const pendingTransactions = pendingData?.result ? pendingData.result.cardsList.flatMap(card => card.authDetalisList) : [];
117
117
  const bankAccounts = data.flatMap(monthData => monthData.result.bankAccounts);
118
118
  const regularDebitDays = bankAccounts.flatMap(accounts => accounts.debitDates);
@@ -145,6 +145,9 @@ function convertParsedDataToTransactions(data, pendingData) {
145
145
  if (installments) {
146
146
  result.installments = installments;
147
147
  }
148
+ if (options?.includeRawTransaction) {
149
+ result.rawTransaction = transaction;
150
+ }
148
151
  return result;
149
152
  });
150
153
  }
@@ -259,7 +262,7 @@ class VisaCalScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
259
262
  const finalMonthToFetchMoment = (0, _moment.default)().add(futureMonthsToScrape, 'month');
260
263
  const months = finalMonthToFetchMoment.diff(startMoment, 'months');
261
264
  const allMonthsData = [];
262
- const frame = _lodash.default.find(frames.result.bankIssuedCards.cardLevelFrames, {
265
+ const frame = _lodash.default.find(frames.result.bankIssuedCards?.cardLevelFrames, {
263
266
  cardUniqueId: card.cardUniqueId
264
267
  });
265
268
  debug(`fetch pending transactions for card ${card.cardUniqueId}`);
@@ -297,7 +300,7 @@ class VisaCalScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
297
300
  debug('pendingData is not of type CardTransactionDetails');
298
301
  pendingData = null;
299
302
  }
300
- const transactions = convertParsedDataToTransactions(allMonthsData, pendingData);
303
+ const transactions = convertParsedDataToTransactions(allMonthsData, pendingData, this.options);
301
304
  debug('filter out old transactions');
302
305
  const txns = this.options.outputData?.enableTransactionsFilterByDate ?? true ? (0, _transactions.filterOldTransactions)(transactions, (0, _moment.default)(startDate), this.options.combineInstallments || false) : transactions;
303
306
  return {
@@ -315,4 +318,4 @@ class VisaCalScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
315
318
  }
316
319
  }
317
320
  var _default = exports.default = VisaCalScraper;
318
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZGVidWciLCJfZWxlbWVudHNJbnRlcmFjdGlvbnMiLCJfZmV0Y2giLCJfbmF2aWdhdGlvbiIsIl9zdG9yYWdlIiwiX3RyYW5zYWN0aW9ucyIsIl93YWl0aW5nIiwiX3RyYW5zYWN0aW9uczIiLCJfYmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsIl9sb2Rhc2giLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJhcGlIZWFkZXJzIiwiT3JpZ2luIiwiUmVmZXJlciIsIkxPR0lOX1VSTCIsIlRSQU5TQUNUSU9OU19SRVFVRVNUX0VORFBPSU5UIiwiRlJBTUVTX1JFUVVFU1RfRU5EUE9JTlQiLCJQRU5ESU5HX1RSQU5TQUNUSU9OU19SRVFVRVNUX0VORFBPSU5UIiwiU1NPX0FVVEhPUklaQVRJT05fUkVRVUVTVF9FTkRQT0lOVCIsIkludmFsaWRQYXNzd29yZE1lc3NhZ2UiLCJkZWJ1ZyIsImdldERlYnVnIiwiVHJuVHlwZUNvZGUiLCJpc0F1dGhNb2R1bGUiLCJyZXN1bHQiLCJCb29sZWFuIiwiYXV0aCIsImNhbENvbm5lY3RUb2tlbiIsIlN0cmluZyIsInRyaW0iLCJhdXRoTW9kdWxlT3JVbmRlZmluZWQiLCJ1bmRlZmluZWQiLCJpc1BlbmRpbmciLCJ0cmFuc2FjdGlvbiIsImRlYkNyZERhdGUiLCJpc0NhcmRUcmFuc2FjdGlvbkRldGFpbHMiLCJpc0NhcmRQZW5kaW5nVHJhbnNhY3Rpb25EZXRhaWxzIiwiZ2V0TG9naW5GcmFtZSIsInBhZ2UiLCJmcmFtZSIsIndhaXRVbnRpbCIsImZyYW1lcyIsImZpbmQiLCJmIiwidXJsIiwiaW5jbHVkZXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsIkVycm9yIiwiaGFzSW52YWxpZFBhc3N3b3JkRXJyb3IiLCJlcnJvckZvdW5kIiwiZWxlbWVudFByZXNlbnRPblBhZ2UiLCJlcnJvck1lc3NhZ2UiLCJwYWdlRXZhbCIsIml0ZW0iLCJpbm5lclRleHQiLCJoYXNDaGFuZ2VQYXNzd29yZEZvcm0iLCJnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyIsInVybHMiLCJMb2dpblJlc3VsdHMiLCJTdWNjZXNzIiwiSW52YWxpZFBhc3N3b3JkIiwib3B0aW9ucyIsIkNoYW5nZVBhc3N3b3JkIiwiY3JlYXRlTG9naW5GaWVsZHMiLCJjcmVkZW50aWFscyIsInNlbGVjdG9yIiwidmFsdWUiLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwiY29udmVydFBhcnNlZERhdGFUb1RyYW5zYWN0aW9ucyIsImRhdGEiLCJwZW5kaW5nRGF0YSIsInBlbmRpbmdUcmFuc2FjdGlvbnMiLCJjYXJkc0xpc3QiLCJmbGF0TWFwIiwiY2FyZCIsImF1dGhEZXRhbGlzTGlzdCIsImJhbmtBY2NvdW50cyIsIm1vbnRoRGF0YSIsInJlZ3VsYXJEZWJpdERheXMiLCJhY2NvdW50cyIsImRlYml0RGF0ZXMiLCJpbW1lZGlhdGVEZWJpdERheXMiLCJpbW1pZGlhdGVEZWJpdHMiLCJkZWJpdERheXMiLCJjb21wbGV0ZWRUcmFuc2FjdGlvbnMiLCJkZWJpdERhdGUiLCJ0cmFuc2FjdGlvbnMiLCJhbGwiLCJtYXAiLCJudW1PZlBheW1lbnRzIiwibnVtYmVyT2ZQYXltZW50cyIsImluc3RhbGxtZW50cyIsIm51bWJlciIsImN1clBheW1lbnROdW0iLCJ0b3RhbCIsImRhdGUiLCJtb21lbnQiLCJ0cm5QdXJjaGFzZURhdGUiLCJjaGFyZ2VkQW1vdW50IiwidHJuQW10IiwiYW10QmVmb3JlQ29udkFuZEluZGV4Iiwib3JpZ2luYWxBbW91bnQiLCJ0cm5UeXBlQ29kZSIsImNyZWRpdCIsImlkZW50aWZpZXIiLCJ0cm5JbnRJZCIsInR5cGUiLCJyZWd1bGFyIiwic3RhbmRpbmdPcmRlciIsIlRyYW5zYWN0aW9uVHlwZXMiLCJOb3JtYWwiLCJJbnN0YWxsbWVudHMiLCJzdGF0dXMiLCJUcmFuc2FjdGlvblN0YXR1c2VzIiwiUGVuZGluZyIsIkNvbXBsZXRlZCIsImFkZCIsInRvSVNPU3RyaW5nIiwicHJvY2Vzc2VkRGF0ZSIsIkRhdGUiLCJvcmlnaW5hbEN1cnJlbmN5IiwidHJuQ3VycmVuY3lTeW1ib2wiLCJjaGFyZ2VkQ3VycmVuY3kiLCJkZWJDcmRDdXJyZW5jeVN5bWJvbCIsImRlc2NyaXB0aW9uIiwibWVyY2hhbnROYW1lIiwibWVtbyIsInRyYW5zVHlwZUNvbW1lbnREZXRhaWxzIiwidG9TdHJpbmciLCJjYXRlZ29yeSIsImJyYW5jaENvZGVEZXNjIiwiVmlzYUNhbFNjcmFwZXIiLCJCYXNlU2NyYXBlcldpdGhCcm93c2VyIiwiYXV0aG9yaXphdGlvbiIsIm9wZW5Mb2dpblBvcHVwIiwid2FpdFVudGlsRWxlbWVudEZvdW5kIiwiY2xpY2tCdXR0b24iLCJnZXRDYXJkcyIsImluaXREYXRhIiwiZ2V0RnJvbVNlc3Npb25TdG9yYWdlIiwiY2FyZHMiLCJjYXJkVW5pcXVlSWQiLCJsYXN0NERpZ2l0cyIsImdldEF1dGhvcml6YXRpb25IZWFkZXIiLCJhdXRoTW9kdWxlIiwiZ2V0WFNpdGVJZCIsImdldExvZ2luT3B0aW9ucyIsImF1dGhSZXF1ZXN0UHJvbWlzZSIsIndhaXRGb3JSZXF1ZXN0IiwidGltZW91dCIsImNhdGNoIiwibG9naW5VcmwiLCJmaWVsZHMiLCJzdWJtaXRCdXR0b25TZWxlY3RvciIsInBvc3NpYmxlUmVzdWx0cyIsImNoZWNrUmVhZGluZXNzIiwicHJlQWN0aW9uIiwicG9zdEFjdGlvbiIsIndhaXRGb3JOYXZpZ2F0aW9uIiwiY3VycmVudFVybCIsImdldEN1cnJlbnRVcmwiLCJlbmRzV2l0aCIsInJlcXVlc3QiLCJoZWFkZXJzIiwicmVxdWlyZXNDaGFuZ2VQYXNzd29yZCIsInVzZXJBZ2VudCIsImZldGNoRGF0YSIsImRlZmF1bHRTdGFydE1vbWVudCIsInN1YnRyYWN0Iiwic3RhcnREYXRlIiwidG9EYXRlIiwic3RhcnRNb21lbnQiLCJtYXgiLCJmb3JtYXQiLCJ4U2l0ZUlkIiwiQXV0aG9yaXphdGlvbiIsImZ1dHVyZU1vbnRoc1RvU2NyYXBlIiwiZmV0Y2hQb3N0IiwiY2FyZHNGb3JGcmFtZURhdGEiLCJmaW5hbE1vbnRoVG9GZXRjaE1vbWVudCIsIm1vbnRocyIsImRpZmYiLCJhbGxNb250aHNEYXRhIiwiXyIsImJhbmtJc3N1ZWRDYXJkcyIsImNhcmRMZXZlbEZyYW1lcyIsImNhcmRVbmlxdWVJREFycmF5IiwiaSIsIm1vbnRoIiwiY2xvbmUiLCJ5ZWFyIiwic3RhdHVzQ29kZSIsInRpdGxlIiwicHVzaCIsInR4bnMiLCJvdXRwdXREYXRhIiwiZW5hYmxlVHJhbnNhY3Rpb25zRmlsdGVyQnlEYXRlIiwiZmlsdGVyT2xkVHJhbnNhY3Rpb25zIiwiY29tYmluZUluc3RhbGxtZW50cyIsImJhbGFuY2UiLCJuZXh0VG90YWxEZWJpdCIsImFjY291bnROdW1iZXIiLCJKU09OIiwic3RyaW5naWZ5Iiwic3VjY2VzcyIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy92aXNhLWNhbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyB0eXBlIEhUVFBSZXF1ZXN0LCB0eXBlIEZyYW1lLCB0eXBlIFBhZ2UgfSBmcm9tICdwdXBwZXRlZXInO1xuaW1wb3J0IHsgZ2V0RGVidWcgfSBmcm9tICcuLi9oZWxwZXJzL2RlYnVnJztcbmltcG9ydCB7IGNsaWNrQnV0dG9uLCBlbGVtZW50UHJlc2VudE9uUGFnZSwgcGFnZUV2YWwsIHdhaXRVbnRpbEVsZW1lbnRGb3VuZCB9IGZyb20gJy4uL2hlbHBlcnMvZWxlbWVudHMtaW50ZXJhY3Rpb25zJztcbmltcG9ydCB7IGZldGNoUG9zdCB9IGZyb20gJy4uL2hlbHBlcnMvZmV0Y2gnO1xuaW1wb3J0IHsgZ2V0Q3VycmVudFVybCwgd2FpdEZvck5hdmlnYXRpb24gfSBmcm9tICcuLi9oZWxwZXJzL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgZ2V0RnJvbVNlc3Npb25TdG9yYWdlIH0gZnJvbSAnLi4vaGVscGVycy9zdG9yYWdlJztcbmltcG9ydCB7IGZpbHRlck9sZFRyYW5zYWN0aW9ucyB9IGZyb20gJy4uL2hlbHBlcnMvdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IHdhaXRVbnRpbCB9IGZyb20gJy4uL2hlbHBlcnMvd2FpdGluZyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblN0YXR1c2VzLCBUcmFuc2FjdGlvblR5cGVzLCB0eXBlIFRyYW5zYWN0aW9uLCB0eXBlIFRyYW5zYWN0aW9uc0FjY291bnQgfSBmcm9tICcuLi90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgQmFzZVNjcmFwZXJXaXRoQnJvd3NlciwgTG9naW5SZXN1bHRzLCB0eXBlIExvZ2luT3B0aW9ucyB9IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQgeyB0eXBlIFNjcmFwZXJTY3JhcGluZ1Jlc3VsdCB9IGZyb20gJy4vaW50ZXJmYWNlJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmNvbnN0IGFwaUhlYWRlcnMgPSB7XG4gICdVc2VyLUFnZW50JzpcbiAgICAnTW96aWxsYS81LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggMTBfMTVfNykgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzE0Mi4wLjAuMCBTYWZhcmkvNTM3LjM2JyxcbiAgT3JpZ2luOiAnaHR0cHM6Ly9kaWdpdGFsLXdlYi5jYWwtb25saW5lLmNvLmlsJyxcbiAgUmVmZXJlcjogJ2h0dHBzOi8vZGlnaXRhbC13ZWIuY2FsLW9ubGluZS5jby5pbCcsXG4gICdBY2NlcHQtTGFuZ3VhZ2UnOiAnaGUtSUwsaGU7cT0wLjksZW4tVVM7cT0wLjgsZW47cT0wLjcnLFxuICAnU2VjLUZldGNoLVNpdGUnOiAnc2FtZS1zaXRlJyxcbiAgJ1NlYy1GZXRjaC1Nb2RlJzogJ2NvcnMnLFxuICAnU2VjLUZldGNoLURlc3QnOiAnZW1wdHknLFxufTtcbmNvbnN0IExPR0lOX1VSTCA9ICdodHRwczovL3d3dy5jYWwtb25saW5lLmNvLmlsLyc7XG5jb25zdCBUUkFOU0FDVElPTlNfUkVRVUVTVF9FTkRQT0lOVCA9XG4gICdodHRwczovL2FwaS5jYWwtb25saW5lLmNvLmlsL1RyYW5zYWN0aW9ucy9hcGkvdHJhbnNhY3Rpb25zRGV0YWlscy9nZXRDYXJkVHJhbnNhY3Rpb25zRGV0YWlscyc7XG5jb25zdCBGUkFNRVNfUkVRVUVTVF9FTkRQT0lOVCA9ICdodHRwczovL2FwaS5jYWwtb25saW5lLmNvLmlsL0ZyYW1lcy9hcGkvRnJhbWVzL0dldEZyYW1lU3RhdHVzJztcbmNvbnN0IFBFTkRJTkdfVFJBTlNBQ1RJT05TX1JFUVVFU1RfRU5EUE9JTlQgPVxuICAnaHR0cHM6Ly9hcGkuY2FsLW9ubGluZS5jby5pbC9UcmFuc2FjdGlvbnMvYXBpL2FwcHJvdmFscy9nZXRDbGVhcmFuY2VSZXF1ZXN0cyc7XG5jb25zdCBTU09fQVVUSE9SSVpBVElPTl9SRVFVRVNUX0VORFBPSU5UID0gJ2h0dHBzOi8vY29ubmVjdC5jYWwtb25saW5lLmNvLmlsL2NvbC1yZXN0L2NhbGNvbm5lY3QvYXV0aGVudGljYXRpb24vU1NPJztcblxuY29uc3QgSW52YWxpZFBhc3N3b3JkTWVzc2FnZSA9ICfXqdedINeU157Xqdeq157XqSDXkNeVINeU16HXmdeh157XlCDXqdeU15XXlteg15Ug16nXkteV15nXmdedJztcblxuY29uc3QgZGVidWcgPSBnZXREZWJ1ZygndmlzYS1jYWwnKTtcblxuZW51bSBUcm5UeXBlQ29kZSB7XG4gIHJlZ3VsYXIgPSAnNScsXG4gIGNyZWRpdCA9ICc2JyxcbiAgaW5zdGFsbG1lbnRzID0gJzgnLFxuICBzdGFuZGluZ09yZGVyID0gJzknLFxufVxuXG5pbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uIHtcbiAgYW10QmVmb3JlQ29udkFuZEluZGV4OiBudW1iZXI7XG4gIGJyYW5jaENvZGVEZXNjOiBzdHJpbmc7XG4gIGNhc2hBY2NNYW5hZ2VyTmFtZTogbnVsbDtcbiAgY2FzaEFjY291bnRNYW5hZ2VyOiBudWxsO1xuICBjYXNoQWNjb3VudFRybkFtdDogbnVtYmVyO1xuICBjaGFyZ2VFeHRlcm5hbFRvQ2FyZENvbW1lbnQ6IHN0cmluZztcbiAgY29tbWVudHM6IFtdO1xuICBjdXJQYXltZW50TnVtOiBudW1iZXI7XG4gIGRlYkNyZEN1cnJlbmN5U3ltYm9sOiBDdXJyZW5jeVN5bWJvbDtcbiAgZGViQ3JkRGF0ZTogc3RyaW5nO1xuICBkZWJpdFNwcmVhZEluZDogYm9vbGVhbjtcbiAgZGlzY291bnRBbW91bnQ6IHVua25vd247XG4gIGRpc2NvdW50UmVhc29uOiB1bmtub3duO1xuICBpbW1lZGlhdGVDb21tZW50czogW107XG4gIGlzSW1tZWRpYXRlQ29tbWVudEluZDogYm9vbGVhbjtcbiAgaXNJbW1lZGlhdGVISEtJbmQ6IGJvb2xlYW47XG4gIGlzTWFyZ2FyaXRhOiBib29sZWFuO1xuICBpc1NwcmVhZFBheW1lbnN0QWJyb2FkOiBib29sZWFuO1xuICBsaW5rZWRDb21tZW50czogW107XG4gIG1lcmNoYW50QWRkcmVzczogc3RyaW5nO1xuICBtZXJjaGFudE5hbWU6IHN0cmluZztcbiAgbWVyY2hhbnRQaG9uZU5vOiBzdHJpbmc7XG4gIG51bU9mUGF5bWVudHM6IG51bWJlcjtcbiAgb25Hb2luZ1RyYW5zYWN0aW9uc0NvbW1lbnQ6IHN0cmluZztcbiAgcmVmdW5kSW5kOiBib29sZWFuO1xuICByb3VuZGluZ0Ftb3VudDogdW5rbm93bjtcbiAgcm91bmRpbmdSZWFzb246IHVua25vd247XG4gIHRva2VuSW5kOiAwO1xuICB0b2tlbk51bWJlclBhcnQ0OiAnJztcbiAgdHJhbnNDYXJkUHJlc2VudEluZDogYm9vbGVhbjtcbiAgdHJhbnNUeXBlQ29tbWVudERldGFpbHM6IFtdO1xuICB0cm5BbXQ6IG51bWJlcjtcbiAgdHJuQ3VycmVuY3lTeW1ib2w6IEN1cnJlbmN5U3ltYm9sO1xuICB0cm5FeGFjV2F5OiBudW1iZXI7XG4gIHRybkludElkOiBzdHJpbmc7XG4gIHRybk51bWFyZXRvcjogbnVtYmVyO1xuICB0cm5QdXJjaGFzZURhdGU6IHN0cmluZztcbiAgdHJuVHlwZTogc3RyaW5nO1xuICB0cm5UeXBlQ29kZTogVHJuVHlwZUNvZGU7XG4gIHdhbGxldFByb3ZpZGVyQ29kZTogMDtcbiAgd2FsbGV0UHJvdmlkZXJEZXNjOiAnJztcbiAgZWFybHlQYXltZW50SW5kOiBib29sZWFuO1xufVxuaW50ZXJmYWNlIFNjcmFwZWRQZW5kaW5nVHJhbnNhY3Rpb24ge1xuICBtZXJjaGFudElEOiBzdHJpbmc7XG4gIG1lcmNoYW50TmFtZTogc3RyaW5nO1xuICB0cm5QdXJjaGFzZURhdGU6IHN0cmluZztcbiAgd2FsbGV0VHJhbkluZDogbnVtYmVyO1xuICB0cmFuc2FjdGlvbnNPcmlnaW46IG51bWJlcjtcbiAgdHJuQW10OiBudW1iZXI7XG4gIHRwYUFwcHJvdmFsQW1vdW50OiB1bmtub3duO1xuICB0cm5DdXJyZW5jeVN5bWJvbDogQ3VycmVuY3lTeW1ib2w7XG4gIHRyblR5cGVDb2RlOiBUcm5UeXBlQ29kZTtcbiAgdHJuVHlwZTogc3RyaW5nO1xuICBicmFuY2hDb2RlRGVzYzogc3RyaW5nO1xuICB0cmFuc0NhcmRQcmVzZW50SW5kOiBib29sZWFuO1xuICBqNUluZGljYXRvcjogc3RyaW5nO1xuICBudW1iZXJPZlBheW1lbnRzOiBudW1iZXI7XG4gIGZpcnN0UGF5bWVudEFtb3VudDogbnVtYmVyO1xuICB0cmFuc1R5cGVDb21tZW50RGV0YWlsczogW107XG59XG5pbnRlcmZhY2UgSW5pdFJlc3BvbnNlIHtcbiAgcmVzdWx0OiB7XG4gICAgY2FyZHM6IHtcbiAgICAgIGNhcmRVbmlxdWVJZDogc3RyaW5nO1xuICAgICAgbGFzdDREaWdpdHM6IHN0cmluZztcbiAgICAgIFtrZXk6IHN0cmluZ106IHVua25vd247XG4gICAgfVtdO1xuICB9O1xufVxudHlwZSBDdXJyZW5jeVN5bWJvbCA9IHN0cmluZztcbmludGVyZmFjZSBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzRXJyb3Ige1xuICB0aXRsZTogc3RyaW5nO1xuICBzdGF0dXNDb2RlOiBudW1iZXI7XG59XG5pbnRlcmZhY2UgQ2FyZFRyYW5zYWN0aW9uRGV0YWlscyBleHRlbmRzIENhcmRUcmFuc2FjdGlvbkRldGFpbHNFcnJvciB7XG4gIHJlc3VsdDoge1xuICAgIGJhbmtBY2NvdW50czoge1xuICAgICAgYmFua0FjY291bnROdW06IHN0cmluZztcbiAgICAgIGJhbmtOYW1lOiBzdHJpbmc7XG4gICAgICBjaG9pY2VFeHRlcm5hbFRyYW5zYWN0aW9uczogYW55O1xuICAgICAgY3VycmVudEJhbmtBY2NvdW50SW5kOiBib29sZWFuO1xuICAgICAgZGViaXREYXRlczoge1xuICAgICAgICBiYXNrZXRBbW91bnRDb21tZW50OiB1bmtub3duO1xuICAgICAgICBjaG9pY2VISEtEZWJpdDogbnVtYmVyO1xuICAgICAgICBkYXRlOiBzdHJpbmc7XG4gICAgICAgIGRlYml0UmVhc29uOiB1bmtub3duO1xuICAgICAgICBmaXhEZWJpdEFtb3VudDogbnVtYmVyO1xuICAgICAgICBmcm9tUHVyY2hhc2VEYXRlOiBzdHJpbmc7XG4gICAgICAgIGlzQ2hvaWNlUmVwYWltZW50OiBib29sZWFuO1xuICAgICAgICB0b1B1cmNoYXNlRGF0ZTogc3RyaW5nO1xuICAgICAgICB0b3RhbEJhc2tldEFtb3VudDogbnVtYmVyO1xuICAgICAgICB0b3RhbERlYml0czoge1xuICAgICAgICAgIGN1cnJlbmN5U3ltYm9sOiBDdXJyZW5jeVN5bWJvbDtcbiAgICAgICAgICBhbW91bnQ6IG51bWJlcjtcbiAgICAgICAgfVtdO1xuICAgICAgICB0cmFuc2FjdGlvbnM6IFNjcmFwZWRUcmFuc2FjdGlvbltdO1xuICAgICAgfVtdO1xuICAgICAgaW1taWRpYXRlRGViaXRzOiB7IHRvdGFsRGViaXRzOiBbXTsgZGViaXREYXlzOiBbXSB9O1xuICAgIH1bXTtcbiAgICBibG9ja2VkQ2FyZEluZDogYm9vbGVhbjtcbiAgfTtcbiAgc3RhdHVzQ29kZTogMTtcbiAgc3RhdHVzRGVzY3JpcHRpb246IHN0cmluZztcbiAgc3RhdHVzVGl0bGU6IHN0cmluZztcbn1cbmludGVyZmFjZSBDYXJkUGVuZGluZ1RyYW5zYWN0aW9uRGV0YWlscyBleHRlbmRzIENhcmRUcmFuc2FjdGlvbkRldGFpbHNFcnJvciB7XG4gIHJlc3VsdDoge1xuICAgIGNhcmRzTGlzdDoge1xuICAgICAgY2FyZFVuaXF1ZUlEOiBzdHJpbmc7XG4gICAgICBhdXRoRGV0YWxpc0xpc3Q6IFNjcmFwZWRQZW5kaW5nVHJhbnNhY3Rpb25bXTtcbiAgICB9W107XG4gIH07XG4gIHN0YXR1c0NvZGU6IDE7XG4gIHN0YXR1c0Rlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHN0YXR1c1RpdGxlOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBBdXRoTW9kdWxlIHtcbiAgYXV0aDoge1xuICAgIGNhbENvbm5lY3RUb2tlbjogc3RyaW5nIHwgbnVsbDtcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNBdXRoTW9kdWxlKHJlc3VsdDogYW55KTogcmVzdWx0IGlzIEF1dGhNb2R1bGUge1xuICByZXR1cm4gQm9vbGVhbihyZXN1bHQ/LmF1dGg/LmNhbENvbm5lY3RUb2tlbiAmJiBTdHJpbmcocmVzdWx0LmF1dGguY2FsQ29ubmVjdFRva2VuKS50cmltKCkpO1xufVxuXG5mdW5jdGlvbiBhdXRoTW9kdWxlT3JVbmRlZmluZWQocmVzdWx0OiBhbnkpOiBBdXRoTW9kdWxlIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGlzQXV0aE1vZHVsZShyZXN1bHQpID8gcmVzdWx0IDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBpc1BlbmRpbmcoXG4gIHRyYW5zYWN0aW9uOiBTY3JhcGVkVHJhbnNhY3Rpb24gfCBTY3JhcGVkUGVuZGluZ1RyYW5zYWN0aW9uLFxuKTogdHJhbnNhY3Rpb24gaXMgU2NyYXBlZFBlbmRpbmdUcmFuc2FjdGlvbiB7XG4gIHJldHVybiAodHJhbnNhY3Rpb24gYXMgU2NyYXBlZFRyYW5zYWN0aW9uKS5kZWJDcmREYXRlID09PSB1bmRlZmluZWQ7IC8vIGFuIGFyYml0cmFyeSBmaWVsZCB0aGF0IG9ubHkgYXBwZWFycyBpbiBhIGNvbXBsZXRlZCB0cmFuc2FjdGlvblxufVxuXG5mdW5jdGlvbiBpc0NhcmRUcmFuc2FjdGlvbkRldGFpbHMoXG4gIHJlc3VsdDogQ2FyZFRyYW5zYWN0aW9uRGV0YWlscyB8IENhcmRUcmFuc2FjdGlvbkRldGFpbHNFcnJvcixcbik6IHJlc3VsdCBpcyBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzIHtcbiAgcmV0dXJuIChyZXN1bHQgYXMgQ2FyZFRyYW5zYWN0aW9uRGV0YWlscykucmVzdWx0ICE9PSB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGlzQ2FyZFBlbmRpbmdUcmFuc2FjdGlvbkRldGFpbHMoXG4gIHJlc3VsdDogQ2FyZFBlbmRpbmdUcmFuc2FjdGlvbkRldGFpbHMgfCBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzRXJyb3IsXG4pOiByZXN1bHQgaXMgQ2FyZFBlbmRpbmdUcmFuc2FjdGlvbkRldGFpbHMge1xuICByZXR1cm4gKHJlc3VsdCBhcyBDYXJkUGVuZGluZ1RyYW5zYWN0aW9uRGV0YWlscykucmVzdWx0ICE9PSB1bmRlZmluZWQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldExvZ2luRnJhbWUocGFnZTogUGFnZSkge1xuICBsZXQgZnJhbWU6IEZyYW1lIHwgbnVsbCA9IG51bGw7XG4gIGRlYnVnKCd3YWl0IHVudGlsIGxvZ2luIGZyYW1lIGZvdW5kJyk7XG4gIGF3YWl0IHdhaXRVbnRpbChcbiAgICAoKSA9PiB7XG4gICAgICBmcmFtZSA9IHBhZ2UuZnJhbWVzKCkuZmluZChmID0+IGYudXJsKCkuaW5jbHVkZXMoJ2Nvbm5lY3QnKSkgfHwgbnVsbDtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoISFmcmFtZSk7XG4gICAgfSxcbiAgICAnd2FpdCBmb3IgaWZyYW1lIHdpdGggbG9naW4gZm9ybScsXG4gICAgMTAwMDAsXG4gICAgMTAwMCxcbiAgKTtcblxuICBpZiAoIWZyYW1lKSB7XG4gICAgZGVidWcoJ2ZhaWxlZCB0byBmaW5kIGxvZ2luIGZyYW1lIGZvciAxMCBzZWNvbmRzJyk7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdmYWlsZWQgdG8gZXh0cmFjdCBsb2dpbiBpZnJhbWUnKTtcbiAgfVxuXG4gIHJldHVybiBmcmFtZTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaGFzSW52YWxpZFBhc3N3b3JkRXJyb3IocGFnZTogUGFnZSkge1xuICBjb25zdCBmcmFtZSA9IGF3YWl0IGdldExvZ2luRnJhbWUocGFnZSk7XG4gIGNvbnN0IGVycm9yRm91bmQgPSBhd2FpdCBlbGVtZW50UHJlc2VudE9uUGFnZShmcmFtZSwgJ2Rpdi5nZW5lcmFsLWVycm9yID4gZGl2Jyk7XG4gIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yRm91bmRcbiAgICA/IGF3YWl0IHBhZ2VFdmFsKGZyYW1lLCAnZGl2LmdlbmVyYWwtZXJyb3IgPiBkaXYnLCAnJywgaXRlbSA9PiB7XG4gICAgICAgIHJldHVybiAoaXRlbSBhcyBIVE1MRGl2RWxlbWVudCkuaW5uZXJUZXh0O1xuICAgICAgfSlcbiAgICA6ICcnO1xuICByZXR1cm4gZXJyb3JNZXNzYWdlID09PSBJbnZhbGlkUGFzc3dvcmRNZXNzYWdlO1xufVxuXG5hc3luYyBmdW5jdGlvbiBoYXNDaGFuZ2VQYXNzd29yZEZvcm0ocGFnZTogUGFnZSkge1xuICBjb25zdCBmcmFtZSA9IGF3YWl0IGdldExvZ2luRnJhbWUocGFnZSk7XG4gIGNvbnN0IGVycm9yRm91bmQgPSBhd2FpdCBlbGVtZW50UHJlc2VudE9uUGFnZShmcmFtZSwgJy5jaGFuZ2UtcGFzc3dvcmQtc3VidGl0bGUnKTtcbiAgcmV0dXJuIGVycm9yRm91bmQ7XG59XG5cbmZ1bmN0aW9uIGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKCkge1xuICBkZWJ1ZygncmV0dXJuIHBvc3NpYmxlIGxvZ2luIHJlc3VsdHMnKTtcbiAgY29uc3QgdXJsczogTG9naW5PcHRpb25zWydwb3NzaWJsZVJlc3VsdHMnXSA9IHtcbiAgICBbTG9naW5SZXN1bHRzLlN1Y2Nlc3NdOiBbL2Rhc2hib2FyZC9pXSxcbiAgICBbTG9naW5SZXN1bHRzLkludmFsaWRQYXNzd29yZF06IFtcbiAgICAgIGFzeW5jIChvcHRpb25zPzogeyBwYWdlPzogUGFnZSB9KSA9PiB7XG4gICAgICAgIGNvbnN0IHBhZ2UgPSBvcHRpb25zPy5wYWdlO1xuICAgICAgICBpZiAoIXBhZ2UpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhhc0ludmFsaWRQYXNzd29yZEVycm9yKHBhZ2UpO1xuICAgICAgfSxcbiAgICBdLFxuICAgIC8vIFtMb2dpblJlc3VsdHMuQWNjb3VudEJsb2NrZWRdOiBbXSwgLy8gVE9ETyBhZGQgd2hlbiByZWFjaGluZyB0aGlzIHNjZW5hcmlvXG4gICAgW0xvZ2luUmVzdWx0cy5DaGFuZ2VQYXNzd29yZF06IFtcbiAgICAgIGFzeW5jIChvcHRpb25zPzogeyBwYWdlPzogUGFnZSB9KSA9PiB7XG4gICAgICAgIGNvbnN0IHBhZ2UgPSBvcHRpb25zPy5wYWdlO1xuICAgICAgICBpZiAoIXBhZ2UpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhhc0NoYW5nZVBhc3N3b3JkRm9ybShwYWdlKTtcbiAgICAgIH0sXG4gICAgXSxcbiAgfTtcbiAgcmV0dXJuIHVybHM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICBkZWJ1ZygnY3JlYXRlIGxvZ2luIGZpZWxkcyBmb3IgdXNlcm5hbWUgYW5kIHBhc3N3b3JkJyk7XG4gIHJldHVybiBbXG4gICAgeyBzZWxlY3RvcjogJ1tmb3JtY29udHJvbG5hbWU9XCJ1c2VyTmFtZVwiXScsIHZhbHVlOiBjcmVkZW50aWFscy51c2VybmFtZSB9LFxuICAgIHsgc2VsZWN0b3I6ICdbZm9ybWNvbnRyb2xuYW1lPVwicGFzc3dvcmRcIl0nLCB2YWx1ZTogY3JlZGVudGlhbHMucGFzc3dvcmQgfSxcbiAgXTtcbn1cblxuZnVuY3Rpb24gY29udmVydFBhcnNlZERhdGFUb1RyYW5zYWN0aW9ucyhcbiAgZGF0YTogQ2FyZFRyYW5zYWN0aW9uRGV0YWlsc1tdLFxuICBwZW5kaW5nRGF0YT86IENhcmRQZW5kaW5nVHJhbnNhY3Rpb25EZXRhaWxzIHwgbnVsbCxcbik6IFRyYW5zYWN0aW9uW10ge1xuICBjb25zdCBwZW5kaW5nVHJhbnNhY3Rpb25zID0gcGVuZGluZ0RhdGE/LnJlc3VsdFxuICAgID8gcGVuZGluZ0RhdGEucmVzdWx0LmNhcmRzTGlzdC5mbGF0TWFwKGNhcmQgPT4gY2FyZC5hdXRoRGV0YWxpc0xpc3QpXG4gICAgOiBbXTtcblxuICBjb25zdCBiYW5rQWNjb3VudHMgPSBkYXRhLmZsYXRNYXAobW9udGhEYXRhID0+IG1vbnRoRGF0YS5yZXN1bHQuYmFua0FjY291bnRzKTtcbiAgY29uc3QgcmVndWxhckRlYml0RGF5cyA9IGJhbmtBY2NvdW50cy5mbGF0TWFwKGFjY291bnRzID0+IGFjY291bnRzLmRlYml0RGF0ZXMpO1xuICBjb25zdCBpbW1lZGlhdGVEZWJpdERheXMgPSBiYW5rQWNjb3VudHMuZmxhdE1hcChhY2NvdW50cyA9PiBhY2NvdW50cy5pbW1pZGlhdGVEZWJpdHMuZGViaXREYXlzKTtcbiAgY29uc3QgY29tcGxldGVkVHJhbnNhY3Rpb25zID0gWy4uLnJlZ3VsYXJEZWJpdERheXMsIC4uLmltbWVkaWF0ZURlYml0RGF5c10uZmxhdE1hcChcbiAgICBkZWJpdERhdGUgPT4gZGViaXREYXRlLnRyYW5zYWN0aW9ucyxcbiAgKTtcblxuICBjb25zdCBhbGw6IChTY3JhcGVkVHJhbnNhY3Rpb24gfCBTY3JhcGVkUGVuZGluZ1RyYW5zYWN0aW9uKVtdID0gWy4uLnBlbmRpbmdUcmFuc2FjdGlvbnMsIC4uLmNvbXBsZXRlZFRyYW5zYWN0aW9uc107XG5cbiAgcmV0dXJuIGFsbC5tYXAodHJhbnNhY3Rpb24gPT4ge1xuICAgIGNvbnN0IG51bU9mUGF5bWVudHMgPSBpc1BlbmRpbmcodHJhbnNhY3Rpb24pID8gdHJhbnNhY3Rpb24ubnVtYmVyT2ZQYXltZW50cyA6IHRyYW5zYWN0aW9uLm51bU9mUGF5bWVudHM7XG4gICAgY29uc3QgaW5zdGFsbG1lbnRzID0gbnVtT2ZQYXltZW50c1xuICAgICAgPyB7XG4gICAgICAgICAgbnVtYmVyOiBpc1BlbmRpbmcodHJhbnNhY3Rpb24pID8gMSA6IHRyYW5zYWN0aW9uLmN1clBheW1lbnROdW0sXG4gICAgICAgICAgdG90YWw6IG51bU9mUGF5bWVudHMsXG4gICAgICAgIH1cbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgZGF0ZSA9IG1vbWVudCh0cmFuc2FjdGlvbi50cm5QdXJjaGFzZURhdGUpO1xuXG4gICAgY29uc3QgY2hhcmdlZEFtb3VudCA9IChpc1BlbmRpbmcodHJhbnNhY3Rpb24pID8gdHJhbnNhY3Rpb24udHJuQW10IDogdHJhbnNhY3Rpb24uYW10QmVmb3JlQ29udkFuZEluZGV4KSAqIC0xO1xuICAgIGNvbnN0IG9yaWdpbmFsQW1vdW50ID0gdHJhbnNhY3Rpb24udHJuQW10ICogKHRyYW5zYWN0aW9uLnRyblR5cGVDb2RlID09PSBUcm5UeXBlQ29kZS5jcmVkaXQgPyAxIDogLTEpO1xuXG4gICAgY29uc3QgcmVzdWx0OiBUcmFuc2FjdGlvbiA9IHtcbiAgICAgIGlkZW50aWZpZXI6ICFpc1BlbmRpbmcodHJhbnNhY3Rpb24pID8gdHJhbnNhY3Rpb24udHJuSW50SWQgOiB1bmRlZmluZWQsXG4gICAgICB0eXBlOiBbVHJuVHlwZUNvZGUucmVndWxhciwgVHJuVHlwZUNvZGUuc3RhbmRpbmdPcmRlcl0uaW5jbHVkZXModHJhbnNhY3Rpb24udHJuVHlwZUNvZGUpXG4gICAgICAgID8gVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWxcbiAgICAgICAgOiBUcmFuc2FjdGlvblR5cGVzLkluc3RhbGxtZW50cyxcbiAgICAgIHN0YXR1czogaXNQZW5kaW5nKHRyYW5zYWN0aW9uKSA/IFRyYW5zYWN0aW9uU3RhdHVzZXMuUGVuZGluZyA6IFRyYW5zYWN0aW9uU3RhdHVzZXMuQ29tcGxldGVkLFxuICAgICAgZGF0ZTogaW5zdGFsbG1lbnRzID8gZGF0ZS5hZGQoaW5zdGFsbG1lbnRzLm51bWJlciAtIDEsICdtb250aCcpLnRvSVNPU3RyaW5nKCkgOiBkYXRlLnRvSVNPU3RyaW5nKCksXG4gICAgICBwcm9jZXNzZWREYXRlOiBpc1BlbmRpbmcodHJhbnNhY3Rpb24pID8gZGF0ZS50b0lTT1N0cmluZygpIDogbmV3IERhdGUodHJhbnNhY3Rpb24uZGViQ3JkRGF0ZSkudG9JU09TdHJpbmcoKSxcbiAgICAgIG9yaWdpbmFsQW1vdW50LFxuICAgICAgb3JpZ2luYWxDdXJyZW5jeTogdHJhbnNhY3Rpb24udHJuQ3VycmVuY3lTeW1ib2wsXG4gICAgICBjaGFyZ2VkQW1vdW50LFxuICAgICAgY2hhcmdlZEN1cnJlbmN5OiAhaXNQZW5kaW5nKHRyYW5zYWN0aW9uKSA/IHRyYW5zYWN0aW9uLmRlYkNyZEN1cnJlbmN5U3ltYm9sIDogdW5kZWZpbmVkLFxuICAgICAgZGVzY3JpcHRpb246IHRyYW5zYWN0aW9uLm1lcmNoYW50TmFtZSxcbiAgICAgIG1lbW86IHRyYW5zYWN0aW9uLnRyYW5zVHlwZUNvbW1lbnREZXRhaWxzLnRvU3RyaW5nKCksXG4gICAgICBjYXRlZ29yeTogdHJhbnNhY3Rpb24uYnJhbmNoQ29kZURlc2MsXG4gICAgfTtcblxuICAgIGlmIChpbnN0YWxsbWVudHMpIHtcbiAgICAgIHJlc3VsdC5pbnN0YWxsbWVudHMgPSBpbnN0YWxsbWVudHM7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59XG5cbnR5cGUgU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMgPSB7IHVzZXJuYW1lOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmcgfTtcblxuY2xhc3MgVmlzYUNhbFNjcmFwZXIgZXh0ZW5kcyBCYXNlU2NyYXBlcldpdGhCcm93c2VyPFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzPiB7XG4gIHByaXZhdGUgYXV0aG9yaXphdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgYXV0aFJlcXVlc3RQcm9taXNlOiBQcm9taXNlPEhUVFBSZXF1ZXN0IHwgdW5kZWZpbmVkPiB8IHVuZGVmaW5lZDtcblxuICBvcGVuTG9naW5Qb3B1cCA9IGFzeW5jICgpID0+IHtcbiAgICBkZWJ1Zygnb3BlbiBsb2dpbiBwb3B1cCwgd2FpdCB1bnRpbCBsb2dpbiBidXR0b24gYXZhaWxhYmxlJyk7XG4gICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHRoaXMucGFnZSwgJyNjY0xvZ2luRGVza3RvcEJ0bicsIHRydWUpO1xuICAgIGRlYnVnKCdjbGljayBvbiB0aGUgbG9naW4gYnV0dG9uJyk7XG4gICAgYXdhaXQgY2xpY2tCdXR0b24odGhpcy5wYWdlLCAnI2NjTG9naW5EZXNrdG9wQnRuJyk7XG4gICAgZGVidWcoJ2dldCB0aGUgZnJhbWUgdGhhdCBob2xkcyB0aGUgbG9naW4nKTtcbiAgICBjb25zdCBmcmFtZSA9IGF3YWl0IGdldExvZ2luRnJhbWUodGhpcy5wYWdlKTtcbiAgICBkZWJ1Zygnd2FpdCB1bnRpbCB0aGUgcGFzc3dvcmQgbG9naW4gdGFiIGhlYWRlciBpcyBhdmFpbGFibGUnKTtcbiAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQoZnJhbWUsICcjcmVndWxhci1sb2dpbicpO1xuICAgIGRlYnVnKCduYXZpZ2F0ZSB0byB0aGUgcGFzc3dvcmQgbG9naW4gdGFiJyk7XG4gICAgYXdhaXQgY2xpY2tCdXR0b24oZnJhbWUsICcjcmVndWxhci1sb2dpbicpO1xuICAgIGRlYnVnKCd3YWl0IHVudGlsIHRoZSBwYXNzd29yZCBsb2dpbiB0YWIgaXMgYWN0aXZlJyk7XG4gICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKGZyYW1lLCAncmVndWxhci1sb2dpbicpO1xuXG4gICAgcmV0dXJuIGZyYW1lO1xuICB9O1xuXG4gIGFzeW5jIGdldENhcmRzKCkge1xuICAgIGNvbnN0IGluaXREYXRhID0gYXdhaXQgd2FpdFVudGlsKFxuICAgICAgKCkgPT4gZ2V0RnJvbVNlc3Npb25TdG9yYWdlPEluaXRSZXNwb25zZT4odGhpcy5wYWdlLCAnaW5pdCcpLFxuICAgICAgJ2dldCBpbml0IGRhdGEgaW4gc2Vzc2lvbiBzdG9yYWdlJyxcbiAgICAgIDEwMDAwLFxuICAgICAgMTAwMCxcbiAgICApO1xuICAgIGlmICghaW5pdERhdGEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IGZpbmQgXCJpbml0XCIgZGF0YSBpbiBzZXNzaW9uIHN0b3JhZ2UnKTtcbiAgICB9XG4gICAgcmV0dXJuIGluaXREYXRhPy5yZXN1bHQuY2FyZHMubWFwKCh7IGNhcmRVbmlxdWVJZCwgbGFzdDREaWdpdHMgfSkgPT4gKHsgY2FyZFVuaXF1ZUlkLCBsYXN0NERpZ2l0cyB9KSk7XG4gIH1cblxuICBhc3luYyBnZXRBdXRob3JpemF0aW9uSGVhZGVyKCkge1xuICAgIGlmICghdGhpcy5hdXRob3JpemF0aW9uKSB7XG4gICAgICBkZWJ1ZygnZmV0Y2hpbmcgYXV0aG9yaXphdGlvbiBoZWFkZXInKTtcbiAgICAgIGNvbnN0IGF1dGhNb2R1bGUgPSBhd2FpdCB3YWl0VW50aWwoXG4gICAgICAgIGFzeW5jICgpID0+IGF1dGhNb2R1bGVPclVuZGVmaW5lZChhd2FpdCBnZXRGcm9tU2Vzc2lvblN0b3JhZ2U8QXV0aE1vZHVsZT4odGhpcy5wYWdlLCAnYXV0aC1tb2R1bGUnKSksXG4gICAgICAgICdnZXQgYXV0aG9yaXphdGlvbiBoZWFkZXIgd2l0aCB2YWxpZCB0b2tlbiBpbiBzZXNzaW9uIHN0b3JhZ2UnLFxuICAgICAgICAxMF8wMDAsXG4gICAgICAgIDUwLFxuICAgICAgKTtcbiAgICAgIHJldHVybiBgQ0FMQXV0aFNjaGVtZSAke2F1dGhNb2R1bGUuYXV0aC5jYWxDb25uZWN0VG9rZW59YDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYXV0aG9yaXphdGlvbjtcbiAgfVxuXG4gIGFzeW5jIGdldFhTaXRlSWQoKSB7XG4gICAgLypcbiAgICAgIEkgZG9uJ3Qga25vdyBpZiB0aGUgY29uc3RhbnQgYmVsb3cgd2lsbCBjaGFuZ2UgaW4gdGhlIGZlYXR1cmUuXG4gICAgICBJZiBzbywgdXNlIHRoZSBuZXh0IGNvZGU6XG5cbiAgICAgIHJldHVybiB0aGlzLnBhZ2UuZXZhbHVhdGUoKCkgPT4gbmV3IFV0KCkueFNpdGVJZCk7XG5cbiAgICAgIFRvIGdldCB0aGUgY2xhc3NuYW1lIHNlYXJjaCBmb3IgJ3hTaXRlSWQnIGluIHRoZSBwYWdlIHNvdXJjZVxuICAgICAgY2xhc3MgVXQge1xuICAgICAgICBjb25zdHJ1Y3RvcihfZSwgb24sIHluKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlID0gX2UsXG4gICAgICAgICAgICB0aGlzLmNvbmZpZyA9IG9uLFxuICAgICAgICAgICAgdGhpcy5ldmVudEJ1c1NlcnZpY2UgPSB5bixcbiAgICAgICAgICAgIHRoaXMueFNpdGVJZCA9IFwiMDkwMzE5ODctMjczRS0yMzExLTkwNkMtOEFGODVCMTdDOEQ5XCIsXG4gICAgKi9cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCcwOTAzMTk4Ny0yNzNFLTIzMTEtOTA2Qy04QUY4NUIxN0M4RDknKTtcbiAgfVxuXG4gIGdldExvZ2luT3B0aW9ucyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpOiBMb2dpbk9wdGlvbnMge1xuICAgIHRoaXMuYXV0aFJlcXVlc3RQcm9taXNlID0gdGhpcy5wYWdlXG4gICAgICAud2FpdEZvclJlcXVlc3QoU1NPX0FVVEhPUklaQVRJT05fUkVRVUVTVF9FTkRQT0lOVCwgeyB0aW1lb3V0OiAxMF8wMDAgfSlcbiAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgZGVidWcoJ2Vycm9yIHdoaWxlIHdhaXRpbmcgZm9yIHRoZSB0b2tlbiByZXF1ZXN0JywgZSk7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgbG9naW5Vcmw6IGAke0xPR0lOX1VSTH1gLFxuICAgICAgZmllbGRzOiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFscyksXG4gICAgICBzdWJtaXRCdXR0b25TZWxlY3RvcjogJ2J1dHRvblt0eXBlPVwic3VibWl0XCJdJyxcbiAgICAgIHBvc3NpYmxlUmVzdWx0czogZ2V0UG9zc2libGVMb2dpblJlc3VsdHMoKSxcbiAgICAgIGNoZWNrUmVhZGluZXNzOiBhc3luYyAoKSA9PiB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCAnI2NjTG9naW5EZXNrdG9wQnRuJyksXG4gICAgICBwcmVBY3Rpb246IHRoaXMub3BlbkxvZ2luUG9wdXAsXG4gICAgICBwb3N0QWN0aW9uOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgd2FpdEZvck5hdmlnYXRpb24odGhpcy5wYWdlKTtcbiAgICAgICAgICBjb25zdCBjdXJyZW50VXJsID0gYXdhaXQgZ2V0Q3VycmVudFVybCh0aGlzLnBhZ2UpO1xuICAgICAgICAgIGlmIChjdXJyZW50VXJsLmVuZHNXaXRoKCdzaXRlLXR1dG9yaWFsJykpIHtcbiAgICAgICAgICAgIGF3YWl0IGNsaWNrQnV0dG9uKHRoaXMucGFnZSwgJ2J1dHRvbi5idG4tY2xvc2UnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgcmVxdWVzdCA9IGF3YWl0IHRoaXMuYXV0aFJlcXVlc3RQcm9taXNlO1xuICAgICAgICAgIHRoaXMuYXV0aG9yaXphdGlvbiA9IFN0cmluZyhyZXF1ZXN0Py5oZWFkZXJzKCkuYXV0aG9yaXphdGlvbiB8fCAnJykudHJpbSgpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc3QgY3VycmVudFVybCA9IGF3YWl0IGdldEN1cnJlbnRVcmwodGhpcy5wYWdlKTtcbiAgICAgICAgICBpZiAoY3VycmVudFVybC5lbmRzV2l0aCgnZGFzaGJvYXJkJykpIHJldHVybjtcbiAgICAgICAgICBjb25zdCByZXF1aXJlc0NoYW5nZVBhc3N3b3JkID0gYXdhaXQgaGFzQ2hhbmdlUGFzc3dvcmRGb3JtKHRoaXMucGFnZSk7XG4gICAgICAgICAgaWYgKHJlcXVpcmVzQ2hhbmdlUGFzc3dvcmQpIHJldHVybjtcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdXNlckFnZW50OiBhcGlIZWFkZXJzWydVc2VyLUFnZW50J10sXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoRGF0YSgpOiBQcm9taXNlPFNjcmFwZXJTY3JhcGluZ1Jlc3VsdD4ge1xuICAgIGNvbnN0IGRlZmF1bHRTdGFydE1vbWVudCA9IG1vbWVudCgpLnN1YnRyYWN0KDEsICd5ZWFycycpLnN1YnRyYWN0KDYsICdtb250aHMnKS5hZGQoMSwgJ2RheScpO1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHRoaXMub3B0aW9ucy5zdGFydERhdGUgfHwgZGVmYXVsdFN0YXJ0TW9tZW50LnRvRGF0ZSgpO1xuICAgIGNvbnN0IHN0YXJ0TW9tZW50ID0gbW9tZW50Lm1heChkZWZhdWx0U3RhcnRNb21lbnQsIG1vbWVudChzdGFydERhdGUpKTtcbiAgICBkZWJ1ZyhgZmV0Y2ggdHJhbnNhY3Rpb25zIHN0YXJ0aW5nICR7c3RhcnRNb21lbnQuZm9ybWF0KCl9YCk7XG5cbiAgICBjb25zdCBbY2FyZHMsIHhTaXRlSWQsIEF1dGhvcml6YXRpb25dID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgdGhpcy5nZXRDYXJkcygpLFxuICAgICAgdGhpcy5nZXRYU2l0ZUlkKCksXG4gICAgICB0aGlzLmdldEF1dGhvcml6YXRpb25IZWFkZXIoKSxcbiAgICBdKTtcblxuICAgIGNvbnN0IGZ1dHVyZU1vbnRoc1RvU2NyYXBlID0gdGhpcy5vcHRpb25zLmZ1dHVyZU1vbnRoc1RvU2NyYXBlID8/IDE7XG5cbiAgICBkZWJ1ZygnZmV0Y2ggZnJhbWVzIChtaXNnYXJvdCkgb2YgY2FyZHMnKTtcbiAgICBjb25zdCBmcmFtZXMgPSBhd2FpdCBmZXRjaFBvc3QoXG4gICAgICBGUkFNRVNfUkVRVUVTVF9FTkRQT0lOVCxcbiAgICAgIHsgY2FyZHNGb3JGcmFtZURhdGE6IGNhcmRzLm1hcCgoeyBjYXJkVW5pcXVlSWQgfSkgPT4gKHsgY2FyZFVuaXF1ZUlkIH0pKSB9LFxuICAgICAge1xuICAgICAgICBBdXRob3JpemF0aW9uLFxuICAgICAgICAnWC1TaXRlLUlkJzogeFNpdGVJZCxcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgLi4uYXBpSGVhZGVycyxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGNvbnN0IGFjY291bnRzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBjYXJkcy5tYXAoYXN5bmMgY2FyZCA9PiB7XG4gICAgICAgIGNvbnN0IGZpbmFsTW9udGhUb0ZldGNoTW9tZW50ID0gbW9tZW50KCkuYWRkKGZ1dHVyZU1vbnRoc1RvU2NyYXBlLCAnbW9udGgnKTtcbiAgICAgICAgY29uc3QgbW9udGhzID0gZmluYWxNb250aFRvRmV0Y2hNb21lbnQuZGlmZihzdGFydE1vbWVudCwgJ21vbnRocycpO1xuICAgICAgICBjb25zdCBhbGxNb250aHNEYXRhOiBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzW10gPSBbXTtcbiAgICAgICAgY29uc3QgZnJhbWUgPSBfLmZpbmQoZnJhbWVzLnJlc3VsdC5iYW5rSXNzdWVkQ2FyZHMuY2FyZExldmVsRnJhbWVzLCB7IGNhcmRVbmlxdWVJZDogY2FyZC5jYXJkVW5pcXVlSWQgfSk7XG5cbiAgICAgICAgZGVidWcoYGZldGNoIHBlbmRpbmcgdHJhbnNhY3Rpb25zIGZvciBjYXJkICR7Y2FyZC5jYXJkVW5pcXVlSWR9YCk7XG4gICAgICAgIGxldCBwZW5kaW5nRGF0YSA9IGF3YWl0IGZldGNoUG9zdChcbiAgICAgICAgICBQRU5ESU5HX1RSQU5TQUNUSU9OU19SRVFVRVNUX0VORFBPSU5ULFxuICAgICAgICAgIHsgY2FyZFVuaXF1ZUlEQXJyYXk6IFtjYXJkLmNhcmRVbmlxdWVJZF0gfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBBdXRob3JpemF0aW9uLFxuICAgICAgICAgICAgJ1gtU2l0ZS1JZCc6IHhTaXRlSWQsXG4gICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgLi4uYXBpSGVhZGVycyxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuXG4gICAgICAgIGRlYnVnKGBmZXRjaCBjb21wbGV0ZWQgdHJhbnNhY3Rpb25zIGZvciBjYXJkICR7Y2FyZC5jYXJkVW5pcXVlSWR9YCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IG1vbnRoczsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgbW9udGggPSBmaW5hbE1vbnRoVG9GZXRjaE1vbWVudC5jbG9uZSgpLnN1YnRyYWN0KGksICdtb250aHMnKTtcbiAgICAgICAgICBjb25zdCBtb250aERhdGEgPSBhd2FpdCBmZXRjaFBvc3QoXG4gICAgICAgICAgICBUUkFOU0FDVElPTlNfUkVRVUVTVF9FTkRQT0lOVCxcbiAgICAgICAgICAgIHsgY2FyZFVuaXF1ZUlkOiBjYXJkLmNhcmRVbmlxdWVJZCwgbW9udGg6IG1vbnRoLmZvcm1hdCgnTScpLCB5ZWFyOiBtb250aC5mb3JtYXQoJ1lZWVknKSB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBBdXRob3JpemF0aW9uLFxuICAgICAgICAgICAgICAnWC1TaXRlLUlkJzogeFNpdGVJZCxcbiAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgICAgLi4uYXBpSGVhZGVycyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChtb250aERhdGE/LnN0YXR1c0NvZGUgIT09IDEpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgIGBmYWlsZWQgdG8gZmV0Y2ggdHJhbnNhY3Rpb25zIGZvciBjYXJkICR7Y2FyZC5sYXN0NERpZ2l0c30uIE1lc3NhZ2U6ICR7bW9udGhEYXRhPy50aXRsZSB8fCAnJ31gLFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgIGlmICghaXNDYXJkVHJhbnNhY3Rpb25EZXRhaWxzKG1vbnRoRGF0YSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignbW9udGhEYXRhIGlzIG5vdCBvZiB0eXBlIENhcmRUcmFuc2FjdGlvbkRldGFpbHMnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBhbGxNb250aHNEYXRhLnB1c2gobW9udGhEYXRhKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwZW5kaW5nRGF0YT8uc3RhdHVzQ29kZSAhPT0gMSAmJiBwZW5kaW5nRGF0YT8uc3RhdHVzQ29kZSAhPT0gOTYpIHtcbiAgICAgICAgICBkZWJ1ZyhcbiAgICAgICAgICAgIGBmYWlsZWQgdG8gZmV0Y2ggcGVuZGluZyB0cmFuc2FjdGlvbnMgZm9yIGNhcmQgJHtjYXJkLmxhc3Q0RGlnaXRzfS4gTWVzc2FnZTogJHtwZW5kaW5nRGF0YT8udGl0bGUgfHwgJyd9YCxcbiAgICAgICAgICApO1xuICAgICAgICAgIHBlbmRpbmdEYXRhID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIGlmICghaXNDYXJkUGVuZGluZ1RyYW5zYWN0aW9uRGV0YWlscyhwZW5kaW5nRGF0YSkpIHtcbiAgICAgICAgICBkZWJ1ZygncGVuZGluZ0RhdGEgaXMgbm90IG9mIHR5cGUgQ2FyZFRyYW5zYWN0aW9uRGV0YWlscycpO1xuICAgICAgICAgIHBlbmRpbmdEYXRhID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRyYW5zYWN0aW9ucyA9IGNvbnZlcnRQYXJzZWREYXRhVG9UcmFuc2FjdGlvbnMoYWxsTW9udGhzRGF0YSwgcGVuZGluZ0RhdGEpO1xuXG4gICAgICAgIGRlYnVnKCdmaWx0ZXIgb3V0IG9sZCB0cmFuc2FjdGlvbnMnKTtcbiAgICAgICAgY29uc3QgdHhucyA9XG4gICAgICAgICAgKHRoaXMub3B0aW9ucy5vdXRwdXREYXRhPy5lbmFibGVUcmFuc2FjdGlvbnNGaWx0ZXJCeURhdGUgPz8gdHJ1ZSlcbiAgICAgICAgICAgID8gZmlsdGVyT2xkVHJhbnNhY3Rpb25zKHRyYW5zYWN0aW9ucywgbW9tZW50KHN0YXJ0RGF0ZSksIHRoaXMub3B0aW9ucy5jb21iaW5lSW5zdGFsbG1lbnRzIHx8IGZhbHNlKVxuICAgICAgICAgICAgOiB0cmFuc2FjdGlvbnM7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eG5zLFxuICAgICAgICAgIGJhbGFuY2U6IC1mcmFtZT8ubmV4dFRvdGFsRGViaXQsXG4gICAgICAgICAgYWNjb3VudE51bWJlcjogY2FyZC5sYXN0NERpZ2l0cyxcbiAgICAgICAgfSBhcyBUcmFuc2FjdGlvbnNBY2NvdW50O1xuICAgICAgfSksXG4gICAgKTtcblxuICAgIGRlYnVnKCdyZXR1cm4gdGhlIHNjcmFwZWQgYWNjb3VudHMnKTtcblxuICAgIGRlYnVnKEpTT04uc3RyaW5naWZ5KGFjY291bnRzLCBudWxsLCAyKSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICBhY2NvdW50cyxcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFZpc2FDYWxTY3JhcGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxxQkFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsTUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksV0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssUUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sYUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sUUFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsY0FBQSxHQUFBUixPQUFBO0FBQ0Es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
321
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZGVidWciLCJfZWxlbWVudHNJbnRlcmFjdGlvbnMiLCJfZmV0Y2giLCJfbmF2aWdhdGlvbiIsIl9zdG9yYWdlIiwiX3RyYW5zYWN0aW9ucyIsIl93YWl0aW5nIiwiX3RyYW5zYWN0aW9uczIiLCJfYmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsIl9sb2Rhc2giLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJhcGlIZWFkZXJzIiwiT3JpZ2luIiwiUmVmZXJlciIsIkxPR0lOX1VSTCIsIlRSQU5TQUNUSU9OU19SRVFVRVNUX0VORFBPSU5UIiwiRlJBTUVTX1JFUVVFU1RfRU5EUE9JTlQiLCJQRU5ESU5HX1RSQU5TQUNUSU9OU19SRVFVRVNUX0VORFBPSU5UIiwiU1NPX0FVVEhPUklaQVRJT05fUkVRVUVTVF9FTkRQT0lOVCIsIkludmFsaWRQYXNzd29yZE1lc3NhZ2UiLCJkZWJ1ZyIsImdldERlYnVnIiwiVHJuVHlwZUNvZGUiLCJpc0F1dGhNb2R1bGUiLCJyZXN1bHQiLCJCb29sZWFuIiwiYXV0aCIsImNhbENvbm5lY3RUb2tlbiIsIlN0cmluZyIsInRyaW0iLCJhdXRoTW9kdWxlT3JVbmRlZmluZWQiLCJ1bmRlZmluZWQiLCJpc1BlbmRpbmciLCJ0cmFuc2FjdGlvbiIsImRlYkNyZERhdGUiLCJpc0NhcmRUcmFuc2FjdGlvbkRldGFpbHMiLCJpc0NhcmRQZW5kaW5nVHJhbnNhY3Rpb25EZXRhaWxzIiwiZ2V0TG9naW5GcmFtZSIsInBhZ2UiLCJmcmFtZSIsIndhaXRVbnRpbCIsImZyYW1lcyIsImZpbmQiLCJmIiwidXJsIiwiaW5jbHVkZXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsIkVycm9yIiwiaGFzSW52YWxpZFBhc3N3b3JkRXJyb3IiLCJlcnJvckZvdW5kIiwiZWxlbWVudFByZXNlbnRPblBhZ2UiLCJlcnJvck1lc3NhZ2UiLCJwYWdlRXZhbCIsIml0ZW0iLCJpbm5lclRleHQiLCJoYXNDaGFuZ2VQYXNzd29yZEZvcm0iLCJnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyIsInVybHMiLCJMb2dpblJlc3VsdHMiLCJTdWNjZXNzIiwiSW52YWxpZFBhc3N3b3JkIiwib3B0aW9ucyIsIkNoYW5nZVBhc3N3b3JkIiwiY3JlYXRlTG9naW5GaWVsZHMiLCJjcmVkZW50aWFscyIsInNlbGVjdG9yIiwidmFsdWUiLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwiY29udmVydFBhcnNlZERhdGFUb1RyYW5zYWN0aW9ucyIsImRhdGEiLCJwZW5kaW5nRGF0YSIsInBlbmRpbmdUcmFuc2FjdGlvbnMiLCJjYXJkc0xpc3QiLCJmbGF0TWFwIiwiY2FyZCIsImF1dGhEZXRhbGlzTGlzdCIsImJhbmtBY2NvdW50cyIsIm1vbnRoRGF0YSIsInJlZ3VsYXJEZWJpdERheXMiLCJhY2NvdW50cyIsImRlYml0RGF0ZXMiLCJpbW1lZGlhdGVEZWJpdERheXMiLCJpbW1pZGlhdGVEZWJpdHMiLCJkZWJpdERheXMiLCJjb21wbGV0ZWRUcmFuc2FjdGlvbnMiLCJkZWJpdERhdGUiLCJ0cmFuc2FjdGlvbnMiLCJhbGwiLCJtYXAiLCJudW1PZlBheW1lbnRzIiwibnVtYmVyT2ZQYXltZW50cyIsImluc3RhbGxtZW50cyIsIm51bWJlciIsImN1clBheW1lbnROdW0iLCJ0b3RhbCIsImRhdGUiLCJtb21lbnQiLCJ0cm5QdXJjaGFzZURhdGUiLCJjaGFyZ2VkQW1vdW50IiwidHJuQW10IiwiYW10QmVmb3JlQ29udkFuZEluZGV4Iiwib3JpZ2luYWxBbW91bnQiLCJ0cm5UeXBlQ29kZSIsImNyZWRpdCIsImlkZW50aWZpZXIiLCJ0cm5JbnRJZCIsInR5cGUiLCJyZWd1bGFyIiwic3RhbmRpbmdPcmRlciIsIlRyYW5zYWN0aW9uVHlwZXMiLCJOb3JtYWwiLCJJbnN0YWxsbWVudHMiLCJzdGF0dXMiLCJUcmFuc2FjdGlvblN0YXR1c2VzIiwiUGVuZGluZyIsIkNvbXBsZXRlZCIsImFkZCIsInRvSVNPU3RyaW5nIiwicHJvY2Vzc2VkRGF0ZSIsIkRhdGUiLCJvcmlnaW5hbEN1cnJlbmN5IiwidHJuQ3VycmVuY3lTeW1ib2wiLCJjaGFyZ2VkQ3VycmVuY3kiLCJkZWJDcmRDdXJyZW5jeVN5bWJvbCIsImRlc2NyaXB0aW9uIiwibWVyY2hhbnROYW1lIiwibWVtbyIsInRyYW5zVHlwZUNvbW1lbnREZXRhaWxzIiwidG9TdHJpbmciLCJjYXRlZ29yeSIsImJyYW5jaENvZGVEZXNjIiwiaW5jbHVkZVJhd1RyYW5zYWN0aW9uIiwicmF3VHJhbnNhY3Rpb24iLCJWaXNhQ2FsU2NyYXBlciIsIkJhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJhdXRob3JpemF0aW9uIiwib3BlbkxvZ2luUG9wdXAiLCJ3YWl0VW50aWxFbGVtZW50Rm91bmQiLCJjbGlja0J1dHRvbiIsImdldENhcmRzIiwiaW5pdERhdGEiLCJnZXRGcm9tU2Vzc2lvblN0b3JhZ2UiLCJjYXJkcyIsImNhcmRVbmlxdWVJZCIsImxhc3Q0RGlnaXRzIiwiZ2V0QXV0aG9yaXphdGlvbkhlYWRlciIsImF1dGhNb2R1bGUiLCJnZXRYU2l0ZUlkIiwiZ2V0TG9naW5PcHRpb25zIiwiYXV0aFJlcXVlc3RQcm9taXNlIiwid2FpdEZvclJlcXVlc3QiLCJ0aW1lb3V0IiwiY2F0Y2giLCJsb2dpblVybCIsImZpZWxkcyIsInN1Ym1pdEJ1dHRvblNlbGVjdG9yIiwicG9zc2libGVSZXN1bHRzIiwiY2hlY2tSZWFkaW5lc3MiLCJwcmVBY3Rpb24iLCJwb3N0QWN0aW9uIiwid2FpdEZvck5hdmlnYXRpb24iLCJjdXJyZW50VXJsIiwiZ2V0Q3VycmVudFVybCIsImVuZHNXaXRoIiwicmVxdWVzdCIsImhlYWRlcnMiLCJyZXF1aXJlc0NoYW5nZVBhc3N3b3JkIiwidXNlckFnZW50IiwiZmV0Y2hEYXRhIiwiZGVmYXVsdFN0YXJ0TW9tZW50Iiwic3VidHJhY3QiLCJzdGFydERhdGUiLCJ0b0RhdGUiLCJzdGFydE1vbWVudCIsIm1heCIsImZvcm1hdCIsInhTaXRlSWQiLCJBdXRob3JpemF0aW9uIiwiZnV0dXJlTW9udGhzVG9TY3JhcGUiLCJmZXRjaFBvc3QiLCJjYXJkc0ZvckZyYW1lRGF0YSIsImZpbmFsTW9udGhUb0ZldGNoTW9tZW50IiwibW9udGhzIiwiZGlmZiIsImFsbE1vbnRoc0RhdGEiLCJfIiwiYmFua0lzc3VlZENhcmRzIiwiY2FyZExldmVsRnJhbWVzIiwiY2FyZFVuaXF1ZUlEQXJyYXkiLCJpIiwibW9udGgiLCJjbG9uZSIsInllYXIiLCJzdGF0dXNDb2RlIiwidGl0bGUiLCJwdXNoIiwidHhucyIsIm91dHB1dERhdGEiLCJlbmFibGVUcmFuc2FjdGlvbnNGaWx0ZXJCeURhdGUiLCJmaWx0ZXJPbGRUcmFuc2FjdGlvbnMiLCJjb21iaW5lSW5zdGFsbG1lbnRzIiwiYmFsYW5jZSIsIm5leHRUb3RhbERlYml0IiwiYWNjb3VudE51bWJlciIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdWNjZXNzIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL3Zpc2EtY2FsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IHR5cGUgSFRUUFJlcXVlc3QsIHR5cGUgRnJhbWUsIHR5cGUgUGFnZSB9IGZyb20gJ3B1cHBldGVlcic7XG5pbXBvcnQgeyBnZXREZWJ1ZyB9IGZyb20gJy4uL2hlbHBlcnMvZGVidWcnO1xuaW1wb3J0IHsgY2xpY2tCdXR0b24sIGVsZW1lbnRQcmVzZW50T25QYWdlLCBwYWdlRXZhbCwgd2FpdFVudGlsRWxlbWVudEZvdW5kIH0gZnJvbSAnLi4vaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMnO1xuaW1wb3J0IHsgZmV0Y2hQb3N0IH0gZnJvbSAnLi4vaGVscGVycy9mZXRjaCc7XG5pbXBvcnQgeyBnZXRDdXJyZW50VXJsLCB3YWl0Rm9yTmF2aWdhdGlvbiB9IGZyb20gJy4uL2hlbHBlcnMvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyBnZXRGcm9tU2Vzc2lvblN0b3JhZ2UgfSBmcm9tICcuLi9oZWxwZXJzL3N0b3JhZ2UnO1xuaW1wb3J0IHsgZmlsdGVyT2xkVHJhbnNhY3Rpb25zIH0gZnJvbSAnLi4vaGVscGVycy90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgd2FpdFVudGlsIH0gZnJvbSAnLi4vaGVscGVycy93YWl0aW5nJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uU3RhdHVzZXMsIFRyYW5zYWN0aW9uVHlwZXMsIHR5cGUgVHJhbnNhY3Rpb24sIHR5cGUgVHJhbnNhY3Rpb25zQWNjb3VudCB9IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBCYXNlU2NyYXBlcldpdGhCcm93c2VyLCBMb2dpblJlc3VsdHMsIHR5cGUgTG9naW5PcHRpb25zIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXItd2l0aC1icm93c2VyJztcbmltcG9ydCB7IHR5cGUgU2NyYXBlclNjcmFwaW5nUmVzdWx0LCB0eXBlIFNjcmFwZXJPcHRpb25zIH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuY29uc3QgYXBpSGVhZGVycyA9IHtcbiAgJ1VzZXItQWdlbnQnOlxuICAgICdNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAxMF8xNV83KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvMTQyLjAuMC4wIFNhZmFyaS81MzcuMzYnLFxuICBPcmlnaW46ICdodHRwczovL2RpZ2l0YWwtd2ViLmNhbC1vbmxpbmUuY28uaWwnLFxuICBSZWZlcmVyOiAnaHR0cHM6Ly9kaWdpdGFsLXdlYi5jYWwtb25saW5lLmNvLmlsJyxcbiAgJ0FjY2VwdC1MYW5ndWFnZSc6ICdoZS1JTCxoZTtxPTAuOSxlbi1VUztxPTAuOCxlbjtxPTAuNycsXG4gICdTZWMtRmV0Y2gtU2l0ZSc6ICdzYW1lLXNpdGUnLFxuICAnU2VjLUZldGNoLU1vZGUnOiAnY29ycycsXG4gICdTZWMtRmV0Y2gtRGVzdCc6ICdlbXB0eScsXG59O1xuY29uc3QgTE9HSU5fVVJMID0gJ2h0dHBzOi8vd3d3LmNhbC1vbmxpbmUuY28uaWwvJztcbmNvbnN0IFRSQU5TQUNUSU9OU19SRVFVRVNUX0VORFBPSU5UID1cbiAgJ2h0dHBzOi8vYXBpLmNhbC1vbmxpbmUuY28uaWwvVHJhbnNhY3Rpb25zL2FwaS90cmFuc2FjdGlvbnNEZXRhaWxzL2dldENhcmRUcmFuc2FjdGlvbnNEZXRhaWxzJztcbmNvbnN0IEZSQU1FU19SRVFVRVNUX0VORFBPSU5UID0gJ2h0dHBzOi8vYXBpLmNhbC1vbmxpbmUuY28uaWwvRnJhbWVzL2FwaS9GcmFtZXMvR2V0RnJhbWVTdGF0dXMnO1xuY29uc3QgUEVORElOR19UUkFOU0FDVElPTlNfUkVRVUVTVF9FTkRQT0lOVCA9XG4gICdodHRwczovL2FwaS5jYWwtb25saW5lLmNvLmlsL1RyYW5zYWN0aW9ucy9hcGkvYXBwcm92YWxzL2dldENsZWFyYW5jZVJlcXVlc3RzJztcbmNvbnN0IFNTT19BVVRIT1JJWkFUSU9OX1JFUVVFU1RfRU5EUE9JTlQgPSAnaHR0cHM6Ly9jb25uZWN0LmNhbC1vbmxpbmUuY28uaWwvY29sLXJlc3QvY2FsY29ubmVjdC9hdXRoZW50aWNhdGlvbi9TU08nO1xuXG5jb25zdCBJbnZhbGlkUGFzc3dvcmRNZXNzYWdlID0gJ9ep150g15TXntep16rXntepINeQ15Ug15TXodeZ16HXnteUINep15TXldeW16DXlSDXqdeS15XXmdeZ150nO1xuXG5jb25zdCBkZWJ1ZyA9IGdldERlYnVnKCd2aXNhLWNhbCcpO1xuXG5lbnVtIFRyblR5cGVDb2RlIHtcbiAgcmVndWxhciA9ICc1JyxcbiAgY3JlZGl0ID0gJzYnLFxuICBpbnN0YWxsbWVudHMgPSAnOCcsXG4gIHN0YW5kaW5nT3JkZXIgPSAnOScsXG59XG5cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb24ge1xuICBhbXRCZWZvcmVDb252QW5kSW5kZXg6IG51bWJlcjtcbiAgYnJhbmNoQ29kZURlc2M6IHN0cmluZztcbiAgY2FzaEFjY01hbmFnZXJOYW1lOiBudWxsO1xuICBjYXNoQWNjb3VudE1hbmFnZXI6IG51bGw7XG4gIGNhc2hBY2NvdW50VHJuQW10OiBudW1iZXI7XG4gIGNoYXJnZUV4dGVybmFsVG9DYXJkQ29tbWVudDogc3RyaW5nO1xuICBjb21tZW50czogW107XG4gIGN1clBheW1lbnROdW06IG51bWJlcjtcbiAgZGViQ3JkQ3VycmVuY3lTeW1ib2w6IEN1cnJlbmN5U3ltYm9sO1xuICBkZWJDcmREYXRlOiBzdHJpbmc7XG4gIGRlYml0U3ByZWFkSW5kOiBib29sZWFuO1xuICBkaXNjb3VudEFtb3VudDogdW5rbm93bjtcbiAgZGlzY291bnRSZWFzb246IHVua25vd247XG4gIGltbWVkaWF0ZUNvbW1lbnRzOiBbXTtcbiAgaXNJbW1lZGlhdGVDb21tZW50SW5kOiBib29sZWFuO1xuICBpc0ltbWVkaWF0ZUhIS0luZDogYm9vbGVhbjtcbiAgaXNNYXJnYXJpdGE6IGJvb2xlYW47XG4gIGlzU3ByZWFkUGF5bWVuc3RBYnJvYWQ6IGJvb2xlYW47XG4gIGxpbmtlZENvbW1lbnRzOiBbXTtcbiAgbWVyY2hhbnRBZGRyZXNzOiBzdHJpbmc7XG4gIG1lcmNoYW50TmFtZTogc3RyaW5nO1xuICBtZXJjaGFudFBob25lTm86IHN0cmluZztcbiAgbnVtT2ZQYXltZW50czogbnVtYmVyO1xuICBvbkdvaW5nVHJhbnNhY3Rpb25zQ29tbWVudDogc3RyaW5nO1xuICByZWZ1bmRJbmQ6IGJvb2xlYW47XG4gIHJvdW5kaW5nQW1vdW50OiB1bmtub3duO1xuICByb3VuZGluZ1JlYXNvbjogdW5rbm93bjtcbiAgdG9rZW5JbmQ6IDA7XG4gIHRva2VuTnVtYmVyUGFydDQ6ICcnO1xuICB0cmFuc0NhcmRQcmVzZW50SW5kOiBib29sZWFuO1xuICB0cmFuc1R5cGVDb21tZW50RGV0YWlsczogW107XG4gIHRybkFtdDogbnVtYmVyO1xuICB0cm5DdXJyZW5jeVN5bWJvbDogQ3VycmVuY3lTeW1ib2w7XG4gIHRybkV4YWNXYXk6IG51bWJlcjtcbiAgdHJuSW50SWQ6IHN0cmluZztcbiAgdHJuTnVtYXJldG9yOiBudW1iZXI7XG4gIHRyblB1cmNoYXNlRGF0ZTogc3RyaW5nO1xuICB0cm5UeXBlOiBzdHJpbmc7XG4gIHRyblR5cGVDb2RlOiBUcm5UeXBlQ29kZTtcbiAgd2FsbGV0UHJvdmlkZXJDb2RlOiAwO1xuICB3YWxsZXRQcm92aWRlckRlc2M6ICcnO1xuICBlYXJseVBheW1lbnRJbmQ6IGJvb2xlYW47XG59XG5pbnRlcmZhY2UgU2NyYXBlZFBlbmRpbmdUcmFuc2FjdGlvbiB7XG4gIG1lcmNoYW50SUQ6IHN0cmluZztcbiAgbWVyY2hhbnROYW1lOiBzdHJpbmc7XG4gIHRyblB1cmNoYXNlRGF0ZTogc3RyaW5nO1xuICB3YWxsZXRUcmFuSW5kOiBudW1iZXI7XG4gIHRyYW5zYWN0aW9uc09yaWdpbjogbnVtYmVyO1xuICB0cm5BbXQ6IG51bWJlcjtcbiAgdHBhQXBwcm92YWxBbW91bnQ6IHVua25vd247XG4gIHRybkN1cnJlbmN5U3ltYm9sOiBDdXJyZW5jeVN5bWJvbDtcbiAgdHJuVHlwZUNvZGU6IFRyblR5cGVDb2RlO1xuICB0cm5UeXBlOiBzdHJpbmc7XG4gIGJyYW5jaENvZGVEZXNjOiBzdHJpbmc7XG4gIHRyYW5zQ2FyZFByZXNlbnRJbmQ6IGJvb2xlYW47XG4gIGo1SW5kaWNhdG9yOiBzdHJpbmc7XG4gIG51bWJlck9mUGF5bWVudHM6IG51bWJlcjtcbiAgZmlyc3RQYXltZW50QW1vdW50OiBudW1iZXI7XG4gIHRyYW5zVHlwZUNvbW1lbnREZXRhaWxzOiBbXTtcbn1cbmludGVyZmFjZSBJbml0UmVzcG9uc2Uge1xuICByZXN1bHQ6IHtcbiAgICBjYXJkczoge1xuICAgICAgY2FyZFVuaXF1ZUlkOiBzdHJpbmc7XG4gICAgICBsYXN0NERpZ2l0czogc3RyaW5nO1xuICAgICAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbiAgICB9W107XG4gIH07XG59XG50eXBlIEN1cnJlbmN5U3ltYm9sID0gc3RyaW5nO1xuaW50ZXJmYWNlIENhcmRUcmFuc2FjdGlvbkRldGFpbHNFcnJvciB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHN0YXR1c0NvZGU6IG51bWJlcjtcbn1cbmludGVyZmFjZSBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzIGV4dGVuZHMgQ2FyZFRyYW5zYWN0aW9uRGV0YWlsc0Vycm9yIHtcbiAgcmVzdWx0OiB7XG4gICAgYmFua0FjY291bnRzOiB7XG4gICAgICBiYW5rQWNjb3VudE51bTogc3RyaW5nO1xuICAgICAgYmFua05hbWU6IHN0cmluZztcbiAgICAgIGNob2ljZUV4dGVybmFsVHJhbnNhY3Rpb25zOiBhbnk7XG4gICAgICBjdXJyZW50QmFua0FjY291bnRJbmQ6IGJvb2xlYW47XG4gICAgICBkZWJpdERhdGVzOiB7XG4gICAgICAgIGJhc2tldEFtb3VudENvbW1lbnQ6IHVua25vd247XG4gICAgICAgIGNob2ljZUhIS0RlYml0OiBudW1iZXI7XG4gICAgICAgIGRhdGU6IHN0cmluZztcbiAgICAgICAgZGViaXRSZWFzb246IHVua25vd247XG4gICAgICAgIGZpeERlYml0QW1vdW50OiBudW1iZXI7XG4gICAgICAgIGZyb21QdXJjaGFzZURhdGU6IHN0cmluZztcbiAgICAgICAgaXNDaG9pY2VSZXBhaW1lbnQ6IGJvb2xlYW47XG4gICAgICAgIHRvUHVyY2hhc2VEYXRlOiBzdHJpbmc7XG4gICAgICAgIHRvdGFsQmFza2V0QW1vdW50OiBudW1iZXI7XG4gICAgICAgIHRvdGFsRGViaXRzOiB7XG4gICAgICAgICAgY3VycmVuY3lTeW1ib2w6IEN1cnJlbmN5U3ltYm9sO1xuICAgICAgICAgIGFtb3VudDogbnVtYmVyO1xuICAgICAgICB9W107XG4gICAgICAgIHRyYW5zYWN0aW9uczogU2NyYXBlZFRyYW5zYWN0aW9uW107XG4gICAgICB9W107XG4gICAgICBpbW1pZGlhdGVEZWJpdHM6IHsgdG90YWxEZWJpdHM6IFtdOyBkZWJpdERheXM6IFtdIH07XG4gICAgfVtdO1xuICAgIGJsb2NrZWRDYXJkSW5kOiBib29sZWFuO1xuICB9O1xuICBzdGF0dXNDb2RlOiAxO1xuICBzdGF0dXNEZXNjcmlwdGlvbjogc3RyaW5nO1xuICBzdGF0dXNUaXRsZTogc3RyaW5nO1xufVxuaW50ZXJmYWNlIENhcmRQZW5kaW5nVHJhbnNhY3Rpb25EZXRhaWxzIGV4dGVuZHMgQ2FyZFRyYW5zYWN0aW9uRGV0YWlsc0Vycm9yIHtcbiAgcmVzdWx0OiB7XG4gICAgY2FyZHNMaXN0OiB7XG4gICAgICBjYXJkVW5pcXVlSUQ6IHN0cmluZztcbiAgICAgIGF1dGhEZXRhbGlzTGlzdDogU2NyYXBlZFBlbmRpbmdUcmFuc2FjdGlvbltdO1xuICAgIH1bXTtcbiAgfTtcbiAgc3RhdHVzQ29kZTogMTtcbiAgc3RhdHVzRGVzY3JpcHRpb246IHN0cmluZztcbiAgc3RhdHVzVGl0bGU6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEF1dGhNb2R1bGUge1xuICBhdXRoOiB7XG4gICAgY2FsQ29ubmVjdFRva2VuOiBzdHJpbmcgfCBudWxsO1xuICB9O1xufVxuXG5mdW5jdGlvbiBpc0F1dGhNb2R1bGUocmVzdWx0OiBhbnkpOiByZXN1bHQgaXMgQXV0aE1vZHVsZSB7XG4gIHJldHVybiBCb29sZWFuKHJlc3VsdD8uYXV0aD8uY2FsQ29ubmVjdFRva2VuICYmIFN0cmluZyhyZXN1bHQuYXV0aC5jYWxDb25uZWN0VG9rZW4pLnRyaW0oKSk7XG59XG5cbmZ1bmN0aW9uIGF1dGhNb2R1bGVPclVuZGVmaW5lZChyZXN1bHQ6IGFueSk6IEF1dGhNb2R1bGUgfCB1bmRlZmluZWQge1xuICByZXR1cm4gaXNBdXRoTW9kdWxlKHJlc3VsdCkgPyByZXN1bHQgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGlzUGVuZGluZyhcbiAgdHJhbnNhY3Rpb246IFNjcmFwZWRUcmFuc2FjdGlvbiB8IFNjcmFwZWRQZW5kaW5nVHJhbnNhY3Rpb24sXG4pOiB0cmFuc2FjdGlvbiBpcyBTY3JhcGVkUGVuZGluZ1RyYW5zYWN0aW9uIHtcbiAgcmV0dXJuICh0cmFuc2FjdGlvbiBhcyBTY3JhcGVkVHJhbnNhY3Rpb24pLmRlYkNyZERhdGUgPT09IHVuZGVmaW5lZDsgLy8gYW4gYXJiaXRyYXJ5IGZpZWxkIHRoYXQgb25seSBhcHBlYXJzIGluIGEgY29tcGxldGVkIHRyYW5zYWN0aW9uXG59XG5cbmZ1bmN0aW9uIGlzQ2FyZFRyYW5zYWN0aW9uRGV0YWlscyhcbiAgcmVzdWx0OiBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzIHwgQ2FyZFRyYW5zYWN0aW9uRGV0YWlsc0Vycm9yLFxuKTogcmVzdWx0IGlzIENhcmRUcmFuc2FjdGlvbkRldGFpbHMge1xuICByZXR1cm4gKHJlc3VsdCBhcyBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzKS5yZXN1bHQgIT09IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gaXNDYXJkUGVuZGluZ1RyYW5zYWN0aW9uRGV0YWlscyhcbiAgcmVzdWx0OiBDYXJkUGVuZGluZ1RyYW5zYWN0aW9uRGV0YWlscyB8IENhcmRUcmFuc2FjdGlvbkRldGFpbHNFcnJvcixcbik6IHJlc3VsdCBpcyBDYXJkUGVuZGluZ1RyYW5zYWN0aW9uRGV0YWlscyB7XG4gIHJldHVybiAocmVzdWx0IGFzIENhcmRQZW5kaW5nVHJhbnNhY3Rpb25EZXRhaWxzKS5yZXN1bHQgIT09IHVuZGVmaW5lZDtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0TG9naW5GcmFtZShwYWdlOiBQYWdlKSB7XG4gIGxldCBmcmFtZTogRnJhbWUgfCBudWxsID0gbnVsbDtcbiAgZGVidWcoJ3dhaXQgdW50aWwgbG9naW4gZnJhbWUgZm91bmQnKTtcbiAgYXdhaXQgd2FpdFVudGlsKFxuICAgICgpID0+IHtcbiAgICAgIGZyYW1lID0gcGFnZS5mcmFtZXMoKS5maW5kKGYgPT4gZi51cmwoKS5pbmNsdWRlcygnY29ubmVjdCcpKSB8fCBudWxsO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSghIWZyYW1lKTtcbiAgICB9LFxuICAgICd3YWl0IGZvciBpZnJhbWUgd2l0aCBsb2dpbiBmb3JtJyxcbiAgICAxMDAwMCxcbiAgICAxMDAwLFxuICApO1xuXG4gIGlmICghZnJhbWUpIHtcbiAgICBkZWJ1ZygnZmFpbGVkIHRvIGZpbmQgbG9naW4gZnJhbWUgZm9yIDEwIHNlY29uZHMnKTtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2ZhaWxlZCB0byBleHRyYWN0IGxvZ2luIGlmcmFtZScpO1xuICB9XG5cbiAgcmV0dXJuIGZyYW1lO1xufVxuXG5hc3luYyBmdW5jdGlvbiBoYXNJbnZhbGlkUGFzc3dvcmRFcnJvcihwYWdlOiBQYWdlKSB7XG4gIGNvbnN0IGZyYW1lID0gYXdhaXQgZ2V0TG9naW5GcmFtZShwYWdlKTtcbiAgY29uc3QgZXJyb3JGb3VuZCA9IGF3YWl0IGVsZW1lbnRQcmVzZW50T25QYWdlKGZyYW1lLCAnZGl2LmdlbmVyYWwtZXJyb3IgPiBkaXYnKTtcbiAgY29uc3QgZXJyb3JNZXNzYWdlID0gZXJyb3JGb3VuZFxuICAgID8gYXdhaXQgcGFnZUV2YWwoZnJhbWUsICdkaXYuZ2VuZXJhbC1lcnJvciA+IGRpdicsICcnLCBpdGVtID0+IHtcbiAgICAgICAgcmV0dXJuIChpdGVtIGFzIEhUTUxEaXZFbGVtZW50KS5pbm5lclRleHQ7XG4gICAgICB9KVxuICAgIDogJyc7XG4gIHJldHVybiBlcnJvck1lc3NhZ2UgPT09IEludmFsaWRQYXNzd29yZE1lc3NhZ2U7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGhhc0NoYW5nZVBhc3N3b3JkRm9ybShwYWdlOiBQYWdlKSB7XG4gIGNvbnN0IGZyYW1lID0gYXdhaXQgZ2V0TG9naW5GcmFtZShwYWdlKTtcbiAgY29uc3QgZXJyb3JGb3VuZCA9IGF3YWl0IGVsZW1lbnRQcmVzZW50T25QYWdlKGZyYW1lLCAnLmNoYW5nZS1wYXNzd29yZC1zdWJ0aXRsZScpO1xuICByZXR1cm4gZXJyb3JGb3VuZDtcbn1cblxuZnVuY3Rpb24gZ2V0UG9zc2libGVMb2dpblJlc3VsdHMoKSB7XG4gIGRlYnVnKCdyZXR1cm4gcG9zc2libGUgbG9naW4gcmVzdWx0cycpO1xuICBjb25zdCB1cmxzOiBMb2dpbk9wdGlvbnNbJ3Bvc3NpYmxlUmVzdWx0cyddID0ge1xuICAgIFtMb2dpblJlc3VsdHMuU3VjY2Vzc106IFsvZGFzaGJvYXJkL2ldLFxuICAgIFtMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkXTogW1xuICAgICAgYXN5bmMgKG9wdGlvbnM/OiB7IHBhZ2U/OiBQYWdlIH0pID0+IHtcbiAgICAgICAgY29uc3QgcGFnZSA9IG9wdGlvbnM/LnBhZ2U7XG4gICAgICAgIGlmICghcGFnZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaGFzSW52YWxpZFBhc3N3b3JkRXJyb3IocGFnZSk7XG4gICAgICB9LFxuICAgIF0sXG4gICAgLy8gW0xvZ2luUmVzdWx0cy5BY2NvdW50QmxvY2tlZF06IFtdLCAvLyBUT0RPIGFkZCB3aGVuIHJlYWNoaW5nIHRoaXMgc2NlbmFyaW9cbiAgICBbTG9naW5SZXN1bHRzLkNoYW5nZVBhc3N3b3JkXTogW1xuICAgICAgYXN5bmMgKG9wdGlvbnM/OiB7IHBhZ2U/OiBQYWdlIH0pID0+IHtcbiAgICAgICAgY29uc3QgcGFnZSA9IG9wdGlvbnM/LnBhZ2U7XG4gICAgICAgIGlmICghcGFnZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaGFzQ2hhbmdlUGFzc3dvcmRGb3JtKHBhZ2UpO1xuICAgICAgfSxcbiAgICBdLFxuICB9O1xuICByZXR1cm4gdXJscztcbn1cblxuZnVuY3Rpb24gY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHM6IFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzKSB7XG4gIGRlYnVnKCdjcmVhdGUgbG9naW4gZmllbGRzIGZvciB1c2VybmFtZSBhbmQgcGFzc3dvcmQnKTtcbiAgcmV0dXJuIFtcbiAgICB7IHNlbGVjdG9yOiAnW2Zvcm1jb250cm9sbmFtZT1cInVzZXJOYW1lXCJdJywgdmFsdWU6IGNyZWRlbnRpYWxzLnVzZXJuYW1lIH0sXG4gICAgeyBzZWxlY3RvcjogJ1tmb3JtY29udHJvbG5hbWU9XCJwYXNzd29yZFwiXScsIHZhbHVlOiBjcmVkZW50aWFscy5wYXNzd29yZCB9LFxuICBdO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0UGFyc2VkRGF0YVRvVHJhbnNhY3Rpb25zKFxuICBkYXRhOiBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzW10sXG4gIHBlbmRpbmdEYXRhPzogQ2FyZFBlbmRpbmdUcmFuc2FjdGlvbkRldGFpbHMgfCBudWxsLFxuICBvcHRpb25zPzogU2NyYXBlck9wdGlvbnMsXG4pOiBUcmFuc2FjdGlvbltdIHtcbiAgY29uc3QgcGVuZGluZ1RyYW5zYWN0aW9ucyA9IHBlbmRpbmdEYXRhPy5yZXN1bHRcbiAgICA/IHBlbmRpbmdEYXRhLnJlc3VsdC5jYXJkc0xpc3QuZmxhdE1hcChjYXJkID0+IGNhcmQuYXV0aERldGFsaXNMaXN0KVxuICAgIDogW107XG5cbiAgY29uc3QgYmFua0FjY291bnRzID0gZGF0YS5mbGF0TWFwKG1vbnRoRGF0YSA9PiBtb250aERhdGEucmVzdWx0LmJhbmtBY2NvdW50cyk7XG4gIGNvbnN0IHJlZ3VsYXJEZWJpdERheXMgPSBiYW5rQWNjb3VudHMuZmxhdE1hcChhY2NvdW50cyA9PiBhY2NvdW50cy5kZWJpdERhdGVzKTtcbiAgY29uc3QgaW1tZWRpYXRlRGViaXREYXlzID0gYmFua0FjY291bnRzLmZsYXRNYXAoYWNjb3VudHMgPT4gYWNjb3VudHMuaW1taWRpYXRlRGViaXRzLmRlYml0RGF5cyk7XG4gIGNvbnN0IGNvbXBsZXRlZFRyYW5zYWN0aW9ucyA9IFsuLi5yZWd1bGFyRGViaXREYXlzLCAuLi5pbW1lZGlhdGVEZWJpdERheXNdLmZsYXRNYXAoXG4gICAgZGViaXREYXRlID0+IGRlYml0RGF0ZS50cmFuc2FjdGlvbnMsXG4gICk7XG5cbiAgY29uc3QgYWxsOiAoU2NyYXBlZFRyYW5zYWN0aW9uIHwgU2NyYXBlZFBlbmRpbmdUcmFuc2FjdGlvbilbXSA9IFsuLi5wZW5kaW5nVHJhbnNhY3Rpb25zLCAuLi5jb21wbGV0ZWRUcmFuc2FjdGlvbnNdO1xuXG4gIHJldHVybiBhbGwubWFwKHRyYW5zYWN0aW9uID0+IHtcbiAgICBjb25zdCBudW1PZlBheW1lbnRzID0gaXNQZW5kaW5nKHRyYW5zYWN0aW9uKSA/IHRyYW5zYWN0aW9uLm51bWJlck9mUGF5bWVudHMgOiB0cmFuc2FjdGlvbi5udW1PZlBheW1lbnRzO1xuICAgIGNvbnN0IGluc3RhbGxtZW50cyA9IG51bU9mUGF5bWVudHNcbiAgICAgID8ge1xuICAgICAgICAgIG51bWJlcjogaXNQZW5kaW5nKHRyYW5zYWN0aW9uKSA/IDEgOiB0cmFuc2FjdGlvbi5jdXJQYXltZW50TnVtLFxuICAgICAgICAgIHRvdGFsOiBudW1PZlBheW1lbnRzLFxuICAgICAgICB9XG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGRhdGUgPSBtb21lbnQodHJhbnNhY3Rpb24udHJuUHVyY2hhc2VEYXRlKTtcblxuICAgIGNvbnN0IGNoYXJnZWRBbW91bnQgPSAoaXNQZW5kaW5nKHRyYW5zYWN0aW9uKSA/IHRyYW5zYWN0aW9uLnRybkFtdCA6IHRyYW5zYWN0aW9uLmFtdEJlZm9yZUNvbnZBbmRJbmRleCkgKiAtMTtcbiAgICBjb25zdCBvcmlnaW5hbEFtb3VudCA9IHRyYW5zYWN0aW9uLnRybkFtdCAqICh0cmFuc2FjdGlvbi50cm5UeXBlQ29kZSA9PT0gVHJuVHlwZUNvZGUuY3JlZGl0ID8gMSA6IC0xKTtcblxuICAgIGNvbnN0IHJlc3VsdDogVHJhbnNhY3Rpb24gPSB7XG4gICAgICBpZGVudGlmaWVyOiAhaXNQZW5kaW5nKHRyYW5zYWN0aW9uKSA/IHRyYW5zYWN0aW9uLnRybkludElkIDogdW5kZWZpbmVkLFxuICAgICAgdHlwZTogW1RyblR5cGVDb2RlLnJlZ3VsYXIsIFRyblR5cGVDb2RlLnN0YW5kaW5nT3JkZXJdLmluY2x1ZGVzKHRyYW5zYWN0aW9uLnRyblR5cGVDb2RlKVxuICAgICAgICA/IFRyYW5zYWN0aW9uVHlwZXMuTm9ybWFsXG4gICAgICAgIDogVHJhbnNhY3Rpb25UeXBlcy5JbnN0YWxsbWVudHMsXG4gICAgICBzdGF0dXM6IGlzUGVuZGluZyh0cmFuc2FjdGlvbikgPyBUcmFuc2FjdGlvblN0YXR1c2VzLlBlbmRpbmcgOiBUcmFuc2FjdGlvblN0YXR1c2VzLkNvbXBsZXRlZCxcbiAgICAgIGRhdGU6IGluc3RhbGxtZW50cyA/IGRhdGUuYWRkKGluc3RhbGxtZW50cy5udW1iZXIgLSAxLCAnbW9udGgnKS50b0lTT1N0cmluZygpIDogZGF0ZS50b0lTT1N0cmluZygpLFxuICAgICAgcHJvY2Vzc2VkRGF0ZTogaXNQZW5kaW5nKHRyYW5zYWN0aW9uKSA/IGRhdGUudG9JU09TdHJpbmcoKSA6IG5ldyBEYXRlKHRyYW5zYWN0aW9uLmRlYkNyZERhdGUpLnRvSVNPU3RyaW5nKCksXG4gICAgICBvcmlnaW5hbEFtb3VudCxcbiAgICAgIG9yaWdpbmFsQ3VycmVuY3k6IHRyYW5zYWN0aW9uLnRybkN1cnJlbmN5U3ltYm9sLFxuICAgICAgY2hhcmdlZEFtb3VudCxcbiAgICAgIGNoYXJnZWRDdXJyZW5jeTogIWlzUGVuZGluZyh0cmFuc2FjdGlvbikgPyB0cmFuc2FjdGlvbi5kZWJDcmRDdXJyZW5jeVN5bWJvbCA6IHVuZGVmaW5lZCxcbiAgICAgIGRlc2NyaXB0aW9uOiB0cmFuc2FjdGlvbi5tZXJjaGFudE5hbWUsXG4gICAgICBtZW1vOiB0cmFuc2FjdGlvbi50cmFuc1R5cGVDb21tZW50RGV0YWlscy50b1N0cmluZygpLFxuICAgICAgY2F0ZWdvcnk6IHRyYW5zYWN0aW9uLmJyYW5jaENvZGVEZXNjLFxuICAgIH07XG5cbiAgICBpZiAoaW5zdGFsbG1lbnRzKSB7XG4gICAgICByZXN1bHQuaW5zdGFsbG1lbnRzID0gaW5zdGFsbG1lbnRzO1xuICAgIH1cblxuICAgIGlmIChvcHRpb25zPy5pbmNsdWRlUmF3VHJhbnNhY3Rpb24pIHtcbiAgICAgIHJlc3VsdC5yYXdUcmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0pO1xufVxuXG50eXBlIFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzID0geyB1c2VybmFtZTogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH07XG5cbmNsYXNzIFZpc2FDYWxTY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXJXaXRoQnJvd3NlcjxTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscz4ge1xuICBwcml2YXRlIGF1dGhvcml6YXRpb246IHN0cmluZyB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICBwcml2YXRlIGF1dGhSZXF1ZXN0UHJvbWlzZTogUHJvbWlzZTxIVFRQUmVxdWVzdCB8IHVuZGVmaW5lZD4gfCB1bmRlZmluZWQ7XG5cbiAgb3BlbkxvZ2luUG9wdXAgPSBhc3luYyAoKSA9PiB7XG4gICAgZGVidWcoJ29wZW4gbG9naW4gcG9wdXAsIHdhaXQgdW50aWwgbG9naW4gYnV0dG9uIGF2YWlsYWJsZScpO1xuICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsICcjY2NMb2dpbkRlc2t0b3BCdG4nLCB0cnVlKTtcbiAgICBkZWJ1ZygnY2xpY2sgb24gdGhlIGxvZ2luIGJ1dHRvbicpO1xuICAgIGF3YWl0IGNsaWNrQnV0dG9uKHRoaXMucGFnZSwgJyNjY0xvZ2luRGVza3RvcEJ0bicpO1xuICAgIGRlYnVnKCdnZXQgdGhlIGZyYW1lIHRoYXQgaG9sZHMgdGhlIGxvZ2luJyk7XG4gICAgY29uc3QgZnJhbWUgPSBhd2FpdCBnZXRMb2dpbkZyYW1lKHRoaXMucGFnZSk7XG4gICAgZGVidWcoJ3dhaXQgdW50aWwgdGhlIHBhc3N3b3JkIGxvZ2luIHRhYiBoZWFkZXIgaXMgYXZhaWxhYmxlJyk7XG4gICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKGZyYW1lLCAnI3JlZ3VsYXItbG9naW4nKTtcbiAgICBkZWJ1ZygnbmF2aWdhdGUgdG8gdGhlIHBhc3N3b3JkIGxvZ2luIHRhYicpO1xuICAgIGF3YWl0IGNsaWNrQnV0dG9uKGZyYW1lLCAnI3JlZ3VsYXItbG9naW4nKTtcbiAgICBkZWJ1Zygnd2FpdCB1bnRpbCB0aGUgcGFzc3dvcmQgbG9naW4gdGFiIGlzIGFjdGl2ZScpO1xuICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChmcmFtZSwgJ3JlZ3VsYXItbG9naW4nKTtcblxuICAgIHJldHVybiBmcmFtZTtcbiAgfTtcblxuICBhc3luYyBnZXRDYXJkcygpIHtcbiAgICBjb25zdCBpbml0RGF0YSA9IGF3YWl0IHdhaXRVbnRpbChcbiAgICAgICgpID0+IGdldEZyb21TZXNzaW9uU3RvcmFnZTxJbml0UmVzcG9uc2U+KHRoaXMucGFnZSwgJ2luaXQnKSxcbiAgICAgICdnZXQgaW5pdCBkYXRhIGluIHNlc3Npb24gc3RvcmFnZScsXG4gICAgICAxMDAwMCxcbiAgICAgIDEwMDAsXG4gICAgKTtcbiAgICBpZiAoIWluaXREYXRhKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCBmaW5kIFwiaW5pdFwiIGRhdGEgaW4gc2Vzc2lvbiBzdG9yYWdlJyk7XG4gICAgfVxuICAgIHJldHVybiBpbml0RGF0YT8ucmVzdWx0LmNhcmRzLm1hcCgoeyBjYXJkVW5pcXVlSWQsIGxhc3Q0RGlnaXRzIH0pID0+ICh7IGNhcmRVbmlxdWVJZCwgbGFzdDREaWdpdHMgfSkpO1xuICB9XG5cbiAgYXN5bmMgZ2V0QXV0aG9yaXphdGlvbkhlYWRlcigpIHtcbiAgICBpZiAoIXRoaXMuYXV0aG9yaXphdGlvbikge1xuICAgICAgZGVidWcoJ2ZldGNoaW5nIGF1dGhvcml6YXRpb24gaGVhZGVyJyk7XG4gICAgICBjb25zdCBhdXRoTW9kdWxlID0gYXdhaXQgd2FpdFVudGlsKFxuICAgICAgICBhc3luYyAoKSA9PiBhdXRoTW9kdWxlT3JVbmRlZmluZWQoYXdhaXQgZ2V0RnJvbVNlc3Npb25TdG9yYWdlPEF1dGhNb2R1bGU+KHRoaXMucGFnZSwgJ2F1dGgtbW9kdWxlJykpLFxuICAgICAgICAnZ2V0IGF1dGhvcml6YXRpb24gaGVhZGVyIHdpdGggdmFsaWQgdG9rZW4gaW4gc2Vzc2lvbiBzdG9yYWdlJyxcbiAgICAgICAgMTBfMDAwLFxuICAgICAgICA1MCxcbiAgICAgICk7XG4gICAgICByZXR1cm4gYENBTEF1dGhTY2hlbWUgJHthdXRoTW9kdWxlLmF1dGguY2FsQ29ubmVjdFRva2VufWA7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmF1dGhvcml6YXRpb247XG4gIH1cblxuICBhc3luYyBnZXRYU2l0ZUlkKCkge1xuICAgIC8qXG4gICAgICBJIGRvbid0IGtub3cgaWYgdGhlIGNvbnN0YW50IGJlbG93IHdpbGwgY2hhbmdlIGluIHRoZSBmZWF0dXJlLlxuICAgICAgSWYgc28sIHVzZSB0aGUgbmV4dCBjb2RlOlxuXG4gICAgICByZXR1cm4gdGhpcy5wYWdlLmV2YWx1YXRlKCgpID0+IG5ldyBVdCgpLnhTaXRlSWQpO1xuXG4gICAgICBUbyBnZXQgdGhlIGNsYXNzbmFtZSBzZWFyY2ggZm9yICd4U2l0ZUlkJyBpbiB0aGUgcGFnZSBzb3VyY2VcbiAgICAgIGNsYXNzIFV0IHtcbiAgICAgICAgY29uc3RydWN0b3IoX2UsIG9uLCB5bikge1xuICAgICAgICAgICAgdGhpcy5zdG9yZSA9IF9lLFxuICAgICAgICAgICAgdGhpcy5jb25maWcgPSBvbixcbiAgICAgICAgICAgIHRoaXMuZXZlbnRCdXNTZXJ2aWNlID0geW4sXG4gICAgICAgICAgICB0aGlzLnhTaXRlSWQgPSBcIjA5MDMxOTg3LTI3M0UtMjMxMS05MDZDLThBRjg1QjE3QzhEOVwiLFxuICAgICovXG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgnMDkwMzE5ODctMjczRS0yMzExLTkwNkMtOEFGODVCMTdDOEQ5Jyk7XG4gIH1cblxuICBnZXRMb2dpbk9wdGlvbnMoY3JlZGVudGlhbHM6IFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzKTogTG9naW5PcHRpb25zIHtcbiAgICB0aGlzLmF1dGhSZXF1ZXN0UHJvbWlzZSA9IHRoaXMucGFnZVxuICAgICAgLndhaXRGb3JSZXF1ZXN0KFNTT19BVVRIT1JJWkFUSU9OX1JFUVVFU1RfRU5EUE9JTlQsIHsgdGltZW91dDogMTBfMDAwIH0pXG4gICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgIGRlYnVnKCdlcnJvciB3aGlsZSB3YWl0aW5nIGZvciB0aGUgdG9rZW4gcmVxdWVzdCcsIGUpO1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvZ2luVXJsOiBgJHtMT0dJTl9VUkx9YCxcbiAgICAgIGZpZWxkczogY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHMpLFxuICAgICAgc3VibWl0QnV0dG9uU2VsZWN0b3I6ICdidXR0b25bdHlwZT1cInN1Ym1pdFwiXScsXG4gICAgICBwb3NzaWJsZVJlc3VsdHM6IGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKCksXG4gICAgICBjaGVja1JlYWRpbmVzczogYXN5bmMgKCkgPT4gd2FpdFVudGlsRWxlbWVudEZvdW5kKHRoaXMucGFnZSwgJyNjY0xvZ2luRGVza3RvcEJ0bicpLFxuICAgICAgcHJlQWN0aW9uOiB0aGlzLm9wZW5Mb2dpblBvcHVwLFxuICAgICAgcG9zdEFjdGlvbjogYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHdhaXRGb3JOYXZpZ2F0aW9uKHRoaXMucGFnZSk7XG4gICAgICAgICAgY29uc3QgY3VycmVudFVybCA9IGF3YWl0IGdldEN1cnJlbnRVcmwodGhpcy5wYWdlKTtcbiAgICAgICAgICBpZiAoY3VycmVudFVybC5lbmRzV2l0aCgnc2l0ZS10dXRvcmlhbCcpKSB7XG4gICAgICAgICAgICBhd2FpdCBjbGlja0J1dHRvbih0aGlzLnBhZ2UsICdidXR0b24uYnRuLWNsb3NlJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHJlcXVlc3QgPSBhd2FpdCB0aGlzLmF1dGhSZXF1ZXN0UHJvbWlzZTtcbiAgICAgICAgICB0aGlzLmF1dGhvcml6YXRpb24gPSBTdHJpbmcocmVxdWVzdD8uaGVhZGVycygpLmF1dGhvcml6YXRpb24gfHwgJycpLnRyaW0oKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRVcmwgPSBhd2FpdCBnZXRDdXJyZW50VXJsKHRoaXMucGFnZSk7XG4gICAgICAgICAgaWYgKGN1cnJlbnRVcmwuZW5kc1dpdGgoJ2Rhc2hib2FyZCcpKSByZXR1cm47XG4gICAgICAgICAgY29uc3QgcmVxdWlyZXNDaGFuZ2VQYXNzd29yZCA9IGF3YWl0IGhhc0NoYW5nZVBhc3N3b3JkRm9ybSh0aGlzLnBhZ2UpO1xuICAgICAgICAgIGlmIChyZXF1aXJlc0NoYW5nZVBhc3N3b3JkKSByZXR1cm47XG4gICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHVzZXJBZ2VudDogYXBpSGVhZGVyc1snVXNlci1BZ2VudCddLFxuICAgIH07XG4gIH1cblxuICBhc3luYyBmZXRjaERhdGEoKTogUHJvbWlzZTxTY3JhcGVyU2NyYXBpbmdSZXN1bHQ+IHtcbiAgICBjb25zdCBkZWZhdWx0U3RhcnRNb21lbnQgPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAneWVhcnMnKS5zdWJ0cmFjdCg2LCAnbW9udGhzJykuYWRkKDEsICdkYXknKTtcbiAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLm9wdGlvbnMuc3RhcnREYXRlIHx8IGRlZmF1bHRTdGFydE1vbWVudC50b0RhdGUoKTtcbiAgICBjb25zdCBzdGFydE1vbWVudCA9IG1vbWVudC5tYXgoZGVmYXVsdFN0YXJ0TW9tZW50LCBtb21lbnQoc3RhcnREYXRlKSk7XG4gICAgZGVidWcoYGZldGNoIHRyYW5zYWN0aW9ucyBzdGFydGluZyAke3N0YXJ0TW9tZW50LmZvcm1hdCgpfWApO1xuXG4gICAgY29uc3QgW2NhcmRzLCB4U2l0ZUlkLCBBdXRob3JpemF0aW9uXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgIHRoaXMuZ2V0Q2FyZHMoKSxcbiAgICAgIHRoaXMuZ2V0WFNpdGVJZCgpLFxuICAgICAgdGhpcy5nZXRBdXRob3JpemF0aW9uSGVhZGVyKCksXG4gICAgXSk7XG5cbiAgICBjb25zdCBmdXR1cmVNb250aHNUb1NjcmFwZSA9IHRoaXMub3B0aW9ucy5mdXR1cmVNb250aHNUb1NjcmFwZSA/PyAxO1xuXG4gICAgZGVidWcoJ2ZldGNoIGZyYW1lcyAobWlzZ2Fyb3QpIG9mIGNhcmRzJyk7XG4gICAgY29uc3QgZnJhbWVzID0gYXdhaXQgZmV0Y2hQb3N0KFxuICAgICAgRlJBTUVTX1JFUVVFU1RfRU5EUE9JTlQsXG4gICAgICB7IGNhcmRzRm9yRnJhbWVEYXRhOiBjYXJkcy5tYXAoKHsgY2FyZFVuaXF1ZUlkIH0pID0+ICh7IGNhcmRVbmlxdWVJZCB9KSkgfSxcbiAgICAgIHtcbiAgICAgICAgQXV0aG9yaXphdGlvbixcbiAgICAgICAgJ1gtU2l0ZS1JZCc6IHhTaXRlSWQsXG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIC4uLmFwaUhlYWRlcnMsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICBjb25zdCBhY2NvdW50cyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgY2FyZHMubWFwKGFzeW5jIGNhcmQgPT4ge1xuICAgICAgICBjb25zdCBmaW5hbE1vbnRoVG9GZXRjaE1vbWVudCA9IG1vbWVudCgpLmFkZChmdXR1cmVNb250aHNUb1NjcmFwZSwgJ21vbnRoJyk7XG4gICAgICAgIGNvbnN0IG1vbnRocyA9IGZpbmFsTW9udGhUb0ZldGNoTW9tZW50LmRpZmYoc3RhcnRNb21lbnQsICdtb250aHMnKTtcbiAgICAgICAgY29uc3QgYWxsTW9udGhzRGF0YTogQ2FyZFRyYW5zYWN0aW9uRGV0YWlsc1tdID0gW107XG4gICAgICAgIGNvbnN0IGZyYW1lID0gXy5maW5kKGZyYW1lcy5yZXN1bHQuYmFua0lzc3VlZENhcmRzPy5jYXJkTGV2ZWxGcmFtZXMsIHsgY2FyZFVuaXF1ZUlkOiBjYXJkLmNhcmRVbmlxdWVJZCB9KTtcblxuICAgICAgICBkZWJ1ZyhgZmV0Y2ggcGVuZGluZyB0cmFuc2FjdGlvbnMgZm9yIGNhcmQgJHtjYXJkLmNhcmRVbmlxdWVJZH1gKTtcbiAgICAgICAgbGV0IHBlbmRpbmdEYXRhID0gYXdhaXQgZmV0Y2hQb3N0KFxuICAgICAgICAgIFBFTkRJTkdfVFJBTlNBQ1RJT05TX1JFUVVFU1RfRU5EUE9JTlQsXG4gICAgICAgICAgeyBjYXJkVW5pcXVlSURBcnJheTogW2NhcmQuY2FyZFVuaXF1ZUlkXSB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIEF1dGhvcml6YXRpb24sXG4gICAgICAgICAgICAnWC1TaXRlLUlkJzogeFNpdGVJZCxcbiAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICAuLi5hcGlIZWFkZXJzLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG5cbiAgICAgICAgZGVidWcoYGZldGNoIGNvbXBsZXRlZCB0cmFuc2FjdGlvbnMgZm9yIGNhcmQgJHtjYXJkLmNhcmRVbmlxdWVJZH1gKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gbW9udGhzOyBpKyspIHtcbiAgICAgICAgICBjb25zdCBtb250aCA9IGZpbmFsTW9udGhUb0ZldGNoTW9tZW50LmNsb25lKCkuc3VidHJhY3QoaSwgJ21vbnRocycpO1xuICAgICAgICAgIGNvbnN0IG1vbnRoRGF0YSA9IGF3YWl0IGZldGNoUG9zdChcbiAgICAgICAgICAgIFRSQU5TQUNUSU9OU19SRVFVRVNUX0VORFBPSU5ULFxuICAgICAgICAgICAgeyBjYXJkVW5pcXVlSWQ6IGNhcmQuY2FyZFVuaXF1ZUlkLCBtb250aDogbW9udGguZm9ybWF0KCdNJyksIHllYXI6IG1vbnRoLmZvcm1hdCgnWVlZWScpIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEF1dGhvcml6YXRpb24sXG4gICAgICAgICAgICAgICdYLVNpdGUtSWQnOiB4U2l0ZUlkLFxuICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgICAuLi5hcGlIZWFkZXJzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKG1vbnRoRGF0YT8uc3RhdHVzQ29kZSAhPT0gMSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgYGZhaWxlZCB0byBmZXRjaCB0cmFuc2FjdGlvbnMgZm9yIGNhcmQgJHtjYXJkLmxhc3Q0RGlnaXRzfS4gTWVzc2FnZTogJHttb250aERhdGE/LnRpdGxlIHx8ICcnfWAsXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKCFpc0NhcmRUcmFuc2FjdGlvbkRldGFpbHMobW9udGhEYXRhKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdtb250aERhdGEgaXMgbm90IG9mIHR5cGUgQ2FyZFRyYW5zYWN0aW9uRGV0YWlscycpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGFsbE1vbnRoc0RhdGEucHVzaChtb250aERhdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBlbmRpbmdEYXRhPy5zdGF0dXNDb2RlICE9PSAxICYmIHBlbmRpbmdEYXRhPy5zdGF0dXNDb2RlICE9PSA5Nikge1xuICAgICAgICAgIGRlYnVnKFxuICAgICAgICAgICAgYGZhaWxlZCB0byBmZXRjaCBwZW5kaW5nIHRyYW5zYWN0aW9ucyBmb3IgY2FyZCAke2NhcmQubGFzdDREaWdpdHN9LiBNZXNzYWdlOiAke3BlbmRpbmdEYXRhPy50aXRsZSB8fCAnJ31gLFxuICAgICAgICAgICk7XG4gICAgICAgICAgcGVuZGluZ0RhdGEgPSBudWxsO1xuICAgICAgICB9IGVsc2UgaWYgKCFpc0NhcmRQZW5kaW5nVHJhbnNhY3Rpb25EZXRhaWxzKHBlbmRpbmdEYXRhKSkge1xuICAgICAgICAgIGRlYnVnKCdwZW5kaW5nRGF0YSBpcyBub3Qgb2YgdHlwZSBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzJyk7XG4gICAgICAgICAgcGVuZGluZ0RhdGEgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdHJhbnNhY3Rpb25zID0gY29udmVydFBhcnNlZERhdGFUb1RyYW5zYWN0aW9ucyhhbGxNb250aHNEYXRhLCBwZW5kaW5nRGF0YSwgdGhpcy5vcHRpb25zKTtcblxuICAgICAgICBkZWJ1ZygnZmlsdGVyIG91dCBvbGQgdHJhbnNhY3Rpb25zJyk7XG4gICAgICAgIGNvbnN0IHR4bnMgPVxuICAgICAgICAgICh0aGlzLm9wdGlvbnMub3V0cHV0RGF0YT8uZW5hYmxlVHJhbnNhY3Rpb25zRmlsdGVyQnlEYXRlID8/IHRydWUpXG4gICAgICAgICAgICA/IGZpbHRlck9sZFRyYW5zYWN0aW9ucyh0cmFuc2FjdGlvbnMsIG1vbWVudChzdGFydERhdGUpLCB0aGlzLm9wdGlvbnMuY29tYmluZUluc3RhbGxtZW50cyB8fCBmYWxzZSlcbiAgICAgICAgICAgIDogdHJhbnNhY3Rpb25zO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHhucyxcbiAgICAgICAgICBiYWxhbmNlOiAtZnJhbWU/Lm5leHRUb3RhbERlYml0LFxuICAgICAgICAgIGFjY291bnROdW1iZXI6IGNhcmQubGFzdDREaWdpdHMsXG4gICAgICAgIH0gYXMgVHJhbnNhY3Rpb25zQWNjb3VudDtcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICBkZWJ1ZygncmV0dXJuIHRoZSBzY3JhcGVkIGFjY291bnRzJyk7XG5cbiAgICBkZWJ1ZyhKU09OLnN0cmluZ2lmeShhY2NvdW50cywgbnVsbCwgMikpO1xuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgYWNjb3VudHMsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBWaXNhQ2FsU2NyYXBlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUscUJBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFdBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFFBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLGFBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLFFBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLGNBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLHVCQUFBLEdBQUFULE9BQUE7QUFFQSxJQUFBVSxPQUFBLEdBQUFYLHNCQUFBLENBQUFDLE9BQUE7QUFBdUIsU0FBQUQsdUJBQUFZLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFFdkIsTUFBTUcsVUFBVSxHQUFHO0VBQ2pCLFlBQVksRUFDVix1SEFBdUg7RUFDekhDLE1BQU0sRUFBRSxzQ0FBc0M7RUFDOUNDLE9BQU8sRUFBRSxzQ0FBc0M7RUFDL0MsaUJBQWlCLEVBQUUscUNBQXFDO0VBQ3hELGdCQUFnQixFQUFFLFdBQVc7RUFDN0IsZ0JBQWdCLEVBQUUsTUFBTTtFQUN4QixnQkFBZ0IsRUFBRTtBQUNwQixDQUFDO0FBQ0QsTUFBTUMsU0FBUyxHQUFHLCtCQUErQjtBQUNqRCxNQUFNQyw2QkFBNkIsR0FDakMsOEZBQThGO0FBQ2hHLE1BQU1DLHVCQUF1QixHQUFHLCtEQUErRDtBQUMvRixNQUFNQyxxQ0FBcUMsR0FDekMsOEVBQThFO0FBQ2hGLE1BQU1DLGtDQUFrQyxHQUFHLHlFQUF5RTtBQUVwSCxNQUFNQyxzQkFBc0IsR0FBRyxtQ0FBbUM7QUFFbEUsTUFBTUMsS0FBSyxHQUFHLElBQUFDLGVBQVEsRUFBQyxVQUFVLENBQUM7QUFBQyxJQUU5QkMsV0FBVywwQkFBWEEsV0FBVztFQUFYQSxXQUFXO0VBQVhBLFdBQVc7RUFBWEEsV0FBVztFQUFYQSxXQUFXO0VBQUEsT0FBWEEsV0FBVztBQUFBLEVBQVhBLFdBQVc7QUFvSWhCLFNBQVNDLFlBQVlBLENBQUNDLE1BQVcsRUFBd0I7RUFDdkQsT0FBT0MsT0FBTyxDQUFDRCxNQUFNLEVBQUVFLElBQUksRUFBRUMsZUFBZSxJQUFJQyxNQUFNLENBQUNKLE1BQU0sQ0FBQ0UsSUFBSSxDQUFDQyxlQUFlLENBQUMsQ0FBQ0UsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUM3RjtBQUVBLFNBQVNDLHFCQUFxQkEsQ0FBQ04sTUFBVyxFQUEwQjtFQUNsRSxPQUFPRCxZQUFZLENBQUNDLE1BQU0sQ0FBQyxHQUFHQSxNQUFNLEdBQUdPLFNBQVM7QUFDbEQ7QUFFQSxTQUFTQyxTQUFTQSxDQUNoQkMsV0FBMkQsRUFDakI7RUFDMUMsT0FBUUEsV0FBVyxDQUF3QkMsVUFBVSxLQUFLSCxTQUFTLENBQUMsQ0FBQztBQUN2RTtBQUVBLFNBQVNJLHdCQUF3QkEsQ0FDL0JYLE1BQTRELEVBQzFCO0VBQ2xDLE9BQVFBLE1BQU0sQ0FBNEJBLE1BQU0sS0FBS08sU0FBUztBQUNoRTtBQUVBLFNBQVNLLCtCQUErQkEsQ0FDdENaLE1BQW1FLEVBQzFCO0VBQ3pDLE9BQVFBLE1BQU0sQ0FBbUNBLE1BQU0sS0FBS08sU0FBUztBQUN2RTtBQUVBLGVBQWVNLGFBQWFBLENBQUNDLElBQVUsRUFBRTtFQUN2QyxJQUFJQyxLQUFtQixHQUFHLElBQUk7RUFDOUJuQixLQUFLLENBQUMsOEJBQThCLENBQUM7RUFDckMsTUFBTSxJQUFBb0Isa0JBQVMsRUFDYixNQUFNO0lBQ0pELEtBQUssR0FBR0QsSUFBSSxDQUFDRyxNQUFNLENBQUMsQ0FBQyxDQUFDQyxJQUFJLENBQUNDLENBQUMsSUFBSUEsQ0FBQyxDQUFDQyxHQUFHLENBQUMsQ0FBQyxDQUFDQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxJQUFJO0lBQ3BFLE9BQU9DLE9BQU8sQ0FBQ0MsT0FBTyxDQUFDLENBQUMsQ0FBQ1IsS0FBSyxDQUFDO0VBQ2pDLENBQUMsRUFDRCxpQ0FBaUMsRUFDakMsS0FBSyxFQUNMLElBQ0YsQ0FBQztFQUVELElBQUksQ0FBQ0EsS0FBSyxFQUFFO0lBQ1ZuQixLQUFLLENBQUMsMkNBQTJDLENBQUM7SUFDbEQsTUFBTSxJQUFJNEIsS0FBSyxDQUFDLGdDQUFnQyxDQUFDO0VBQ25EO0VBRUEsT0FBT1QsS0FBSztBQUNkO0FBRUEsZUFBZVUsdUJBQXVCQSxDQUFDWCxJQUFVLEVBQUU7RUFDakQsTUFBTUMsS0FBSyxHQUFHLE1BQU1GLGFBQWEsQ0FBQ0MsSUFBSSxDQUFDO0VBQ3ZDLE1BQU1ZLFVBQVUsR0FBRyxNQUFNLElBQUFDLDBDQUFvQixFQUFDWixLQUFLLEVBQUUseUJBQXlCLENBQUM7RUFDL0UsTUFBTWEsWUFBWSxHQUFHRixVQUFVLEdBQzNCLE1BQU0sSUFBQUcsOEJBQVEsRUFBQ2QsS0FBSyxFQUFFLHlCQUF5QixFQUFFLEVBQUUsRUFBRWUsSUFBSSxJQUFJO0lBQzNELE9BQVFBLElBQUksQ0FBb0JDLFNBQVM7RUFDM0MsQ0FBQyxDQUFDLEdBQ0YsRUFBRTtFQUNOLE9BQU9ILFlBQVksS0FBS2pDLHNCQUFzQjtBQUNoRDtBQUVBLGVBQWVxQyxxQkFBcUJBLENBQUNsQixJQUFVLEVBQUU7RUFDL0MsTUFBTUMsS0FBSyxHQUFHLE1BQU1GLGFBQWEsQ0FBQ0MsSUFBSSxDQUFDO0VBQ3ZDLE1BQU1ZLFVBQVUsR0FBRyxNQUFNLElBQUFDLDBDQUFvQixFQUFDWixLQUFLLEVBQUUsMkJBQTJCLENBQUM7RUFDakYsT0FBT1csVUFBVTtBQUNuQjtBQUVBLFNBQVNPLHVCQUF1QkEsQ0FBQSxFQUFHO0VBQ2pDckMsS0FBSyxDQUFDLCtCQUErQixDQUFDO0VBQ3RDLE1BQU1zQyxJQUFxQyxHQUFHO0lBQzVDLENBQUNDLG9DQUFZLENBQUNDLE9BQU8sR0FBRyxDQUFDLFlBQVksQ0FBQztJQUN0QyxDQUFDRCxvQ0FBWSxDQUFDRSxlQUFlLEdBQUcsQ0FDOUIsTUFBT0MsT0FBeUIsSUFBSztNQUNuQyxNQUFNeEIsSUFBSSxHQUFHd0IsT0FBTyxFQUFFeEIsSUFBSTtNQUMxQixJQUFJLENBQUNBLElBQUksRUFBRTtRQUNULE9BQU8sS0FBSztNQUNkO01BQ0EsT0FBT1csdUJBQXVCLENBQUNYLElBQUksQ0FBQztJQUN0QyxDQUFDLENBQ0Y7SUFDRDtJQUNBLENBQUNxQixvQ0FBWSxDQUFDSSxjQUFjLEdBQUcsQ0FDN0IsTUFBT0QsT0FBeUIsSUFBSztNQUNuQyxNQUFNeEIsSUFBSSxHQUFHd0IsT0FBTyxFQUFFeEIsSUFBSTtNQUMxQixJQUFJLENBQUNBLElBQUksRUFBRTtRQUNULE9BQU8sS0FBSztNQUNkO01BQ0EsT0FBT2tCLHFCQUFxQixDQUFDbEIsSUFBSSxDQUFDO0lBQ3BDLENBQUM7RUFFTCxDQUFDO0VBQ0QsT0FBT29CLElBQUk7QUFDYjtBQUVBLFNBQVNNLGlCQUFpQkEsQ0FBQ0MsV0FBdUMsRUFBRTtFQUNsRTdDLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQztFQUN0RCxPQUFPLENBQ0w7SUFBRThDLFFBQVEsRUFBRSw4QkFBOEI7SUFBRUMsS0FBSyxFQUFFRixXQUFXLENBQUNHO0VBQVMsQ0FBQyxFQUN6RTtJQUFFRixRQUFRLEVBQUUsOEJBQThCO0lBQUVDLEtBQUssRUFBRUYsV0FBVyxDQUFDSTtFQUFTLENBQUMsQ0FDMUU7QUFDSDtBQUVBLFNBQVNDLCtCQUErQkEsQ0FDdENDLElBQThCLEVBQzlCQyxXQUFrRCxFQUNsRFYsT0FBd0IsRUFDVDtFQUNmLE1BQU1XLG1CQUFtQixHQUFHRCxXQUFXLEVBQUVoRCxNQUFNLEdBQzNDZ0QsV0FBVyxDQUFDaEQsTUFBTSxDQUFDa0QsU0FBUyxDQUFDQyxPQUFPLENBQUNDLElBQUksSUFBSUEsSUFBSSxDQUFDQyxlQUFlLENBQUMsR0FDbEUsRUFBRTtFQUVOLE1BQU1DLFlBQVksR0FBR1AsSUFBSSxDQUFDSSxPQUFPLENBQUNJLFNBQVMsSUFBSUEsU0FBUyxDQUFDdkQsTUFBTSxDQUFDc0QsWUFBWSxDQUFDO0VBQzdFLE1BQU1FLGdCQUFnQixHQUFHRixZQUFZLENBQUNILE9BQU8sQ0FBQ00sUUFBUSxJQUFJQSxRQUFRLENBQUNDLFVBQVUsQ0FBQztFQUM5RSxNQUFNQyxrQkFBa0IsR0FBR0wsWUFBWSxDQUFDSCxPQUFPLENBQUNNLFFBQVEsSUFBSUEsUUFBUSxDQUFDRyxlQUFlLENBQUNDLFNBQVMsQ0FBQztFQUMvRixNQUFNQyxxQkFBcUIsR0FBRyxDQUFDLEdBQUdOLGdCQUFnQixFQUFFLEdBQUdHLGtCQUFrQixDQUFDLENBQUNSLE9BQU8sQ0FDaEZZLFNBQVMsSUFBSUEsU0FBUyxDQUFDQyxZQUN6QixDQUFDO0VBRUQsTUFBTUMsR0FBdUQsR0FBRyxDQUFDLEdBQUdoQixtQkFBbUIsRUFBRSxHQUFHYSxxQkFBcUIsQ0FBQztFQUVsSCxPQUFPRyxHQUFHLENBQUNDLEdBQUcsQ0FBQ3pELFdBQVcsSUFBSTtJQUM1QixNQUFNMEQsYUFBYSxHQUFHM0QsU0FBUyxDQUFDQyxXQUFXLENBQUMsR0FBR0EsV0FBVyxDQUFDMkQsZ0JBQWdCLEdBQUczRCxXQUFXLENBQUMwRCxhQUFhO0lBQ3ZHLE1BQU1FLFlBQVksR0FBR0YsYUFBYSxHQUM5QjtNQUNFRyxNQUFNLEVBQUU5RCxTQUFTLENBQUNDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBR0EsV0FBVyxDQUFDOEQsYUFBYTtNQUM5REMsS0FBSyxFQUFFTDtJQUNULENBQUMsR0FDRDVELFNBQVM7SUFFYixNQUFNa0UsSUFBSSxHQUFHLElBQUFDLGVBQU0sRUFBQ2pFLFdBQVcsQ0FBQ2tFLGVBQWUsQ0FBQztJQUVoRCxNQUFNQyxhQUFhLEdBQUcsQ0FBQ3BFLFNBQVMsQ0FBQ0MsV0FBVyxDQUFDLEdBQUdBLFdBQVcsQ0FBQ29FLE1BQU0sR0FBR3BFLFdBQVcsQ0FBQ3FFLHFCQUFxQixJQUFJLENBQUMsQ0FBQztJQUM1RyxNQUFNQyxjQUFjLEdBQUd0RSxXQUFXLENBQUNvRSxNQUFNLElBQUlwRSxXQUFXLENBQUN1RSxXQUFXLEtBQUtsRixXQUFXLENBQUNtRixNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBRXJHLE1BQU1qRixNQUFtQixHQUFHO01BQzFCa0YsVUFBVSxFQUFFLENBQUMxRSxTQUFTLENBQUNDLFdBQVcsQ0FBQyxHQUFHQSxXQUFXLENBQUMwRSxRQUFRLEdBQUc1RSxTQUFTO01BQ3RFNkUsSUFBSSxFQUFFLENBQUN0RixXQUFXLENBQUN1RixPQUFPLEVBQUV2RixXQUFXLENBQUN3RixhQUFhLENBQUMsQ0FBQ2pFLFFBQVEsQ0FBQ1osV0FBVyxDQUFDdUUsV0FBVyxDQUFDLEdBQ3BGTywrQkFBZ0IsQ0FBQ0MsTUFBTSxHQUN2QkQsK0JBQWdCLENBQUNFLFlBQVk7TUFDakNDLE1BQU0sRUFBRWxGLFNBQVMsQ0FBQ0MsV0FBVyxDQUFDLEdBQUdrRixrQ0FBbUIsQ0FBQ0MsT0FBTyxHQUFHRCxrQ0FBbUIsQ0FBQ0UsU0FBUztNQUM1RnBCLElBQUksRUFBRUosWUFBWSxHQUFHSSxJQUFJLENBQUNxQixHQUFHLENBQUN6QixZQUFZLENBQUNDLE1BQU0sR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUN5QixXQUFXLENBQUMsQ0FBQyxHQUFHdEIsSUFBSSxDQUFDc0IsV0FBVyxDQUFDLENBQUM7TUFDbEdDLGFBQWEsRUFBRXhGLFNBQVMsQ0FBQ0MsV0FBVyxDQUFDLEdBQUdnRSxJQUFJLENBQUNzQixXQUFXLENBQUMsQ0FBQyxHQUFHLElBQUlFLElBQUksQ0FBQ3hGLFdBQVcsQ0FBQ0MsVUFBVSxDQUFDLENBQUNxRixXQUFXLENBQUMsQ0FBQztNQUMzR2hCLGNBQWM7TUFDZG1CLGdCQUFnQixFQUFFekYsV0FBVyxDQUFDMEYsaUJBQWlCO01BQy9DdkIsYUFBYTtNQUNid0IsZUFBZSxFQUFFLENBQUM1RixTQUFTLENBQUNDLFdBQVcsQ0FBQyxHQUFHQSxXQUFXLENBQUM0RixvQkFBb0IsR0FBRzlGLFNBQVM7TUFDdkYrRixXQUFXLEVBQUU3RixXQUFXLENBQUM4RixZQUFZO01BQ3JDQyxJQUFJLEVBQUUvRixXQUFXLENBQUNnRyx1QkFBdUIsQ0FBQ0MsUUFBUSxDQUFDLENBQUM7TUFDcERDLFFBQVEsRUFBRWxHLFdBQVcsQ0FBQ21HO0lBQ3hCLENBQUM7SUFFRCxJQUFJdkMsWUFBWSxFQUFFO01BQ2hCckUsTUFBTSxDQUFDcUUsWUFBWSxHQUFHQSxZQUFZO0lBQ3BDO0lBRUEsSUFBSS9CLE9BQU8sRUFBRXVFLHFCQUFxQixFQUFFO01BQ2xDN0csTUFBTSxDQUFDOEcsY0FBYyxHQUFHckcsV0FBVztJQUNyQztJQUVBLE9BQU9ULE1BQU07RUFDZixDQUFDLENBQUM7QUFDSjtBQUlBLE1BQU0rRyxjQUFjLFNBQVNDLDhDQUFzQixDQUE2QjtFQUN0RUMsYUFBYSxHQUF1QjFHLFNBQVM7RUFJckQyRyxjQUFjLEdBQUcsTUFBQUEsQ0FBQSxLQUFZO0lBQzNCdEgsS0FBSyxDQUFDLHFEQUFxRCxDQUFDO0lBQzVELE1BQU0sSUFBQXVILDJDQUFxQixFQUFDLElBQUksQ0FBQ3JHLElBQUksRUFBRSxvQkFBb0IsRUFBRSxJQUFJLENBQUM7SUFDbEVsQixLQUFLLENBQUMsMkJBQTJCLENBQUM7SUFDbEMsTUFBTSxJQUFBd0gsaUNBQVcsRUFBQyxJQUFJLENBQUN0RyxJQUFJLEVBQUUsb0JBQW9CLENBQUM7SUFDbERsQixLQUFLLENBQUMsb0NBQW9DLENBQUM7SUFDM0MsTUFBTW1CLEtBQUssR0FBRyxNQUFNRixhQUFhLENBQUMsSUFBSSxDQUFDQyxJQUFJLENBQUM7SUFDNUNsQixLQUFLLENBQUMsdURBQXVELENBQUM7SUFDOUQsTUFBTSxJQUFBdUgsMkNBQXFCLEVBQUNwRyxLQUFLLEVBQUUsZ0JBQWdCLENBQUM7SUFDcERuQixLQUFLLENBQUMsb0NBQW9DLENBQUM7SUFDM0MsTUFBTSxJQUFBd0gsaUNBQVcsRUFBQ3JHLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQztJQUMxQ25CLEtBQUssQ0FBQyw2Q0FBNkMsQ0FBQztJQUNwRCxNQUFNLElBQUF1SCwyQ0FBcUIsRUFBQ3BHLEtBQUssRUFBRSxlQUFlLENBQUM7SUFFbkQsT0FBT0EsS0FBSztFQUNkLENBQUM7RUFFRCxNQUFNc0csUUFBUUEsQ0FBQSxFQUFHO0lBQ2YsTUFBTUMsUUFBUSxHQUFHLE1BQU0sSUFBQXRHLGtCQUFTLEVBQzlCLE1BQU0sSUFBQXVHLDhCQUFxQixFQUFlLElBQUksQ0FBQ3pHLElBQUksRUFBRSxNQUFNLENBQUMsRUFDNUQsa0NBQWtDLEVBQ2xDLEtBQUssRUFDTCxJQUNGLENBQUM7SUFDRCxJQUFJLENBQUN3RyxRQUFRLEVBQUU7TUFDYixNQUFNLElBQUk5RixLQUFLLENBQUMsK0NBQStDLENBQUM7SUFDbEU7SUFDQSxPQUFPOEYsUUFBUSxFQUFFdEgsTUFBTSxDQUFDd0gsS0FBSyxDQUFDdEQsR0FBRyxDQUFDLENBQUM7TUFBRXVELFlBQVk7TUFBRUM7SUFBWSxDQUFDLE1BQU07TUFBRUQsWUFBWTtNQUFFQztJQUFZLENBQUMsQ0FBQyxDQUFDO0VBQ3ZHO0VBRUEsTUFBTUMsc0JBQXNCQSxDQUFBLEVBQUc7SUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQ1YsYUFBYSxFQUFFO01BQ3ZCckgsS0FBSyxDQUFDLCtCQUErQixDQUFDO01BQ3RDLE1BQU1nSSxVQUFVLEdBQUcsTUFBTSxJQUFBNUcsa0JBQVMsRUFDaEMsWUFBWVYscUJBQXFCLENBQUMsTUFBTSxJQUFBaUgsOEJBQXFCLEVBQWEsSUFBSSxDQUFDekcsSUFBSSxFQUFFLGFBQWEsQ0FBQyxDQUFDLEVBQ3BHLDhEQUE4RCxFQUM5RCxNQUFNLEVBQ04sRUFDRixDQUFDO01BQ0QsT0FBTyxpQkFBaUI4RyxVQUFVLENBQUMxSCxJQUFJLENBQUNDLGVBQWUsRUFBRTtJQUMzRDtJQUNBLE9BQU8sSUFBSSxDQUFDOEcsYUFBYTtFQUMzQjtFQUVBLE1BQU1ZLFVBQVVBLENBQUEsRUFBRztJQUNqQjtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFHSSxPQUFPdkcsT0FBTyxDQUFDQyxPQUFPLENBQUMsc0NBQXNDLENBQUM7RUFDaEU7RUFFQXVHLGVBQWVBLENBQUNyRixXQUF1QyxFQUFnQjtJQUNyRSxJQUFJLENBQUNzRixrQkFBa0IsR0FBRyxJQUFJLENBQUNqSCxJQUFJLENBQ2hDa0gsY0FBYyxDQUFDdEksa0NBQWtDLEVBQUU7TUFBRXVJLE9BQU8sRUFBRTtJQUFPLENBQUMsQ0FBQyxDQUN2RUMsS0FBSyxDQUFDbEosQ0FBQyxJQUFJO01BQ1ZZLEtBQUssQ0FBQywyQ0FBMkMsRUFBRVosQ0FBQyxDQUFDO01BQ3JELE9BQU91QixTQUFTO0lBQ2xCLENBQUMsQ0FBQztJQUNKLE9BQU87TUFDTDRILFFBQVEsRUFBRSxHQUFHN0ksU0FBUyxFQUFFO01BQ3hCOEksTUFBTSxFQUFFNUYsaUJBQWlCLENBQUNDLFdBQVcsQ0FBQztNQUN0QzRGLG9CQUFvQixFQUFFLHVCQUF1QjtNQUM3Q0MsZUFBZSxFQUFFckcsdUJBQXVCLENBQUMsQ0FBQztNQUMxQ3NHLGNBQWMsRUFBRSxNQUFBQSxDQUFBLEtBQVksSUFBQXBCLDJDQUFxQixFQUFDLElBQUksQ0FBQ3JHLElBQUksRUFBRSxvQkFBb0IsQ0FBQztNQUNsRjBILFNBQVMsRUFBRSxJQUFJLENBQUN0QixjQUFjO01BQzlCdUIsVUFBVSxFQUFFLE1BQUFBLENBQUEsS0FBWTtRQUN0QixJQUFJO1VBQ0YsTUFBTSxJQUFBQyw2QkFBaUIsRUFBQyxJQUFJLENBQUM1SCxJQUFJLENBQUM7VUFDbEMsTUFBTTZILFVBQVUsR0FBRyxNQUFNLElBQUFDLHlCQUFhLEVBQUMsSUFBSSxDQUFDOUgsSUFBSSxDQUFDO1VBQ2pELElBQUk2SCxVQUFVLENBQUNFLFFBQVEsQ0FBQyxlQUFlLENBQUMsRUFBRTtZQUN4QyxNQUFNLElBQUF6QixpQ0FBVyxFQUFDLElBQUksQ0FBQ3RHLElBQUksRUFBRSxrQkFBa0IsQ0FBQztVQUNsRDtVQUNBLE1BQU1nSSxPQUFPLEdBQUcsTUFBTSxJQUFJLENBQUNmLGtCQUFrQjtVQUM3QyxJQUFJLENBQUNkLGFBQWEsR0FBRzdHLE1BQU0sQ0FBQzBJLE9BQU8sRUFBRUMsT0FBTyxDQUFDLENBQUMsQ0FBQzlCLGFBQWEsSUFBSSxFQUFFLENBQUMsQ0FBQzVHLElBQUksQ0FBQyxDQUFDO1FBQzVFLENBQUMsQ0FBQyxPQUFPckIsQ0FBQyxFQUFFO1VBQ1YsTUFBTTJKLFVBQVUsR0FBRyxNQUFNLElBQUFDLHlCQUFhLEVBQUMsSUFBSSxDQUFDOUgsSUFBSSxDQUFDO1VBQ2pELElBQUk2SCxVQUFVLENBQUNFLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRTtVQUN0QyxNQUFNRyxzQkFBc0IsR0FBRyxNQUFNaEgscUJBQXFCLENBQUMsSUFBSSxDQUFDbEIsSUFBSSxDQUFDO1VBQ3JFLElBQUlrSSxzQkFBc0IsRUFBRTtVQUM1QixNQUFNaEssQ0FBQztRQUNUO01BQ0YsQ0FBQztNQUNEaUssU0FBUyxFQUFFOUosVUFBVSxDQUFDLFlBQVk7SUFDcEMsQ0FBQztFQUNIO0VBRUEsTUFBTStKLFNBQVNBLENBQUEsRUFBbUM7SUFDaEQsTUFBTUMsa0JBQWtCLEdBQUcsSUFBQXpFLGVBQU0sRUFBQyxDQUFDLENBQUMwRSxRQUFRLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDQSxRQUFRLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDdEQsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7SUFDNUYsTUFBTXVELFNBQVMsR0FBRyxJQUFJLENBQUMvRyxPQUFPLENBQUMrRyxTQUFTLElBQUlGLGtCQUFrQixDQUFDRyxNQUFNLENBQUMsQ0FBQztJQUN2RSxNQUFNQyxXQUFXLEdBQUc3RSxlQUFNLENBQUM4RSxHQUFHLENBQUNMLGtCQUFrQixFQUFFLElBQUF6RSxlQUFNLEVBQUMyRSxTQUFTLENBQUMsQ0FBQztJQUNyRXpKLEtBQUssQ0FBQywrQkFBK0IySixXQUFXLENBQUNFLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUU1RCxNQUFNLENBQUNqQyxLQUFLLEVBQUVrQyxPQUFPLEVBQUVDLGFBQWEsQ0FBQyxHQUFHLE1BQU1ySSxPQUFPLENBQUMyQyxHQUFHLENBQUMsQ0FDeEQsSUFBSSxDQUFDb0QsUUFBUSxDQUFDLENBQUMsRUFDZixJQUFJLENBQUNRLFVBQVUsQ0FBQyxDQUFDLEVBQ2pCLElBQUksQ0FBQ0Ysc0JBQXNCLENBQUMsQ0FBQyxDQUM5QixDQUFDO0lBRUYsTUFBTWlDLG9CQUFvQixHQUFHLElBQUksQ0FBQ3RILE9BQU8sQ0FBQ3NILG9CQUFvQixJQUFJLENBQUM7SUFFbkVoSyxLQUFLLENBQUMsa0NBQWtDLENBQUM7SUFDekMsTUFBTXFCLE1BQU0sR0FBRyxNQUFNLElBQUE0SSxnQkFBUyxFQUM1QnJLLHVCQUF1QixFQUN2QjtNQUFFc0ssaUJBQWlCLEVBQUV0QyxLQUFLLENBQUN0RCxHQUFHLENBQUMsQ0FBQztRQUFFdUQ7TUFBYSxDQUFDLE1BQU07UUFBRUE7TUFBYSxDQUFDLENBQUM7SUFBRSxDQUFDLEVBQzFFO01BQ0VrQyxhQUFhO01BQ2IsV0FBVyxFQUFFRCxPQUFPO01BQ3BCLGNBQWMsRUFBRSxrQkFBa0I7TUFDbEMsR0FBR3ZLO0lBQ0wsQ0FDRixDQUFDO0lBRUQsTUFBTXNFLFFBQVEsR0FBRyxNQUFNbkMsT0FBTyxDQUFDMkMsR0FBRyxDQUNoQ3VELEtBQUssQ0FBQ3RELEdBQUcsQ0FBQyxNQUFNZCxJQUFJLElBQUk7TUFDdEIsTUFBTTJHLHVCQUF1QixHQUFHLElBQUFyRixlQUFNLEVBQUMsQ0FBQyxDQUFDb0IsR0FBRyxDQUFDOEQsb0JBQW9CLEVBQUUsT0FBTyxDQUFDO01BQzNFLE1BQU1JLE1BQU0sR0FBR0QsdUJBQXVCLENBQUNFLElBQUksQ0FBQ1YsV0FBVyxFQUFFLFFBQVEsQ0FBQztNQUNsRSxNQUFNVyxhQUF1QyxHQUFHLEVBQUU7TUFDbEQsTUFBTW5KLEtBQUssR0FBR29KLGVBQUMsQ0FBQ2pKLElBQUksQ0FBQ0QsTUFBTSxDQUFDakIsTUFBTSxDQUFDb0ssZUFBZSxFQUFFQyxlQUFlLEVBQUU7UUFBRTVDLFlBQVksRUFBRXJFLElBQUksQ0FBQ3FFO01BQWEsQ0FBQyxDQUFDO01BRXpHN0gsS0FBSyxDQUFDLHVDQUF1Q3dELElBQUksQ0FBQ3FFLFlBQVksRUFBRSxDQUFDO01BQ2pFLElBQUl6RSxXQUFXLEdBQUcsTUFBTSxJQUFBNkcsZ0JBQVMsRUFDL0JwSyxxQ0FBcUMsRUFDckM7UUFBRTZLLGlCQUFpQixFQUFFLENBQUNsSCxJQUFJLENBQUNxRSxZQUFZO01BQUUsQ0FBQyxFQUMxQztRQUNFa0MsYUFBYTtRQUNiLFdBQVcsRUFBRUQsT0FBTztRQUNwQixjQUFjLEVBQUUsa0JBQWtCO1FBQ2xDLEdBQUd2SztNQUNMLENBQ0YsQ0FBQztNQUVEUyxLQUFLLENBQUMseUNBQXlDd0QsSUFBSSxDQUFDcUUsWUFBWSxFQUFFLENBQUM7TUFDbkUsS0FBSyxJQUFJOEMsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxJQUFJUCxNQUFNLEVBQUVPLENBQUMsRUFBRSxFQUFFO1FBQ2hDLE1BQU1DLEtBQUssR0FBR1QsdUJBQXVCLENBQUNVLEtBQUssQ0FBQyxDQUFDLENBQUNyQixRQUFRLENBQUNtQixDQUFDLEVBQUUsUUFBUSxDQUFDO1FBQ25FLE1BQU1oSCxTQUFTLEdBQUcsTUFBTSxJQUFBc0csZ0JBQVMsRUFDL0J0Syw2QkFBNkIsRUFDN0I7VUFBRWtJLFlBQVksRUFBRXJFLElBQUksQ0FBQ3FFLFlBQVk7VUFBRStDLEtBQUssRUFBRUEsS0FBSyxDQUFDZixNQUFNLENBQUMsR0FBRyxDQUFDO1VBQUVpQixJQUFJLEVBQUVGLEtBQUssQ0FBQ2YsTUFBTSxDQUFDLE1BQU07UUFBRSxDQUFDLEVBQ3pGO1VBQ0VFLGFBQWE7VUFDYixXQUFXLEVBQUVELE9BQU87VUFDcEIsY0FBYyxFQUFFLGtCQUFrQjtVQUNsQyxHQUFHdks7UUFDTCxDQUNGLENBQUM7UUFFRCxJQUFJb0UsU0FBUyxFQUFFb0gsVUFBVSxLQUFLLENBQUMsRUFDN0IsTUFBTSxJQUFJbkosS0FBSyxDQUNiLHlDQUF5QzRCLElBQUksQ0FBQ3NFLFdBQVcsY0FBY25FLFNBQVMsRUFBRXFILEtBQUssSUFBSSxFQUFFLEVBQy9GLENBQUM7UUFFSCxJQUFJLENBQUNqSyx3QkFBd0IsQ0FBQzRDLFNBQVMsQ0FBQyxFQUFFO1VBQ3hDLE1BQU0sSUFBSS9CLEtBQUssQ0FBQyxpREFBaUQsQ0FBQztRQUNwRTtRQUVBMEksYUFBYSxDQUFDVyxJQUFJLENBQUN0SCxTQUFTLENBQUM7TUFDL0I7TUFFQSxJQUFJUCxXQUFXLEVBQUUySCxVQUFVLEtBQUssQ0FBQyxJQUFJM0gsV0FBVyxFQUFFMkgsVUFBVSxLQUFLLEVBQUUsRUFBRTtRQUNuRS9LLEtBQUssQ0FDSCxpREFBaUR3RCxJQUFJLENBQUNzRSxXQUFXLGNBQWMxRSxXQUFXLEVBQUU0SCxLQUFLLElBQUksRUFBRSxFQUN6RyxDQUFDO1FBQ0Q1SCxXQUFXLEdBQUcsSUFBSTtNQUNwQixDQUFDLE1BQU0sSUFBSSxDQUFDcEMsK0JBQStCLENBQUNvQyxXQUFXLENBQUMsRUFBRTtRQUN4RHBELEtBQUssQ0FBQyxtREFBbUQsQ0FBQztRQUMxRG9ELFdBQVcsR0FBRyxJQUFJO01BQ3BCO01BRUEsTUFBTWdCLFlBQVksR0FBR2xCLCtCQUErQixDQUFDb0gsYUFBYSxFQUFFbEgsV0FBVyxFQUFFLElBQUksQ0FBQ1YsT0FBTyxDQUFDO01BRTlGMUMsS0FBSyxDQUFDLDZCQUE2QixDQUFDO01BQ3BDLE1BQU1rTCxJQUFJLEdBQ1AsSUFBSSxDQUFDeEksT0FBTyxDQUFDeUksVUFBVSxFQUFFQyw4QkFBOEIsSUFBSSxJQUFJLEdBQzVELElBQUFDLG1DQUFxQixFQUFDakgsWUFBWSxFQUFFLElBQUFVLGVBQU0sRUFBQzJFLFNBQVMsQ0FBQyxFQUFFLElBQUksQ0FBQy9HLE9BQU8sQ0FBQzRJLG1CQUFtQixJQUFJLEtBQUssQ0FBQyxHQUNqR2xILFlBQVk7TUFFbEIsT0FBTztRQUNMOEcsSUFBSTtRQUNKSyxPQUFPLEVBQUUsQ0FBQ3BLLEtBQUssRUFBRXFLLGNBQWM7UUFDL0JDLGFBQWEsRUFBRWpJLElBQUksQ0FBQ3NFO01BQ3RCLENBQUM7SUFDSCxDQUFDLENBQ0gsQ0FBQztJQUVEOUgsS0FBSyxDQUFDLDZCQUE2QixDQUFDO0lBRXBDQSxLQUFLLENBQUMwTCxJQUFJLENBQUNDLFNBQVMsQ0FBQzlILFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEMsT0FBTztNQUNMK0gsT0FBTyxFQUFFLElBQUk7TUFDYi9IO0lBQ0YsQ0FBQztFQUNIO0FBQ0Y7QUFBQyxJQUFBZ0ksUUFBQSxHQUFBQyxPQUFBLENBQUF4TSxPQUFBLEdBRWM2SCxjQUFjIiwiaWdub3JlTGlzdCI6W119
@@ -55,11 +55,11 @@ function getTxnAmount(txn) {
55
55
  const debit = getAmountData(txn.debit);
56
56
  return (Number.isNaN(credit) ? 0 : credit) - (Number.isNaN(debit) ? 0 : debit);
57
57
  }
58
- function convertTransactions(txns) {
58
+ function convertTransactions(txns, options) {
59
59
  return txns.map(txn => {
60
60
  const convertedDate = (0, _moment.default)(txn.date, DATE_FORMAT).toISOString();
61
61
  const convertedAmount = getTxnAmount(txn);
62
- return {
62
+ const result = {
63
63
  type: _transactions.TransactionTypes.Normal,
64
64
  identifier: txn.reference ? parseInt(txn.reference, 10) : undefined,
65
65
  date: convertedDate,
@@ -71,6 +71,10 @@ function convertTransactions(txns) {
71
71
  description: txn.description,
72
72
  memo: txn.memo
73
73
  };
74
+ if (options?.includeRawTransaction) {
75
+ result.rawTransaction = txn;
76
+ }
77
+ return result;
74
78
  });
75
79
  }
76
80
  function handleTransactionRow(txns, txnRow) {
@@ -89,7 +93,7 @@ function handleTransactionRow(txns, txnRow) {
89
93
  };
90
94
  txns.push(tx);
91
95
  }
92
- async function getAccountTransactions(page) {
96
+ async function getAccountTransactions(page, options) {
93
97
  // Wait for transactions.
94
98
  await (0, _elementsInteractions.waitUntilElementFound)(page, '.under-line-txn-table-header', true);
95
99
  const txns = [];
@@ -102,7 +106,7 @@ async function getAccountTransactions(page) {
102
106
  for (const txnRow of transactionsDivs) {
103
107
  handleTransactionRow(txns, txnRow);
104
108
  }
105
- return convertTransactions(txns);
109
+ return convertTransactions(txns, options);
106
110
  }
107
111
 
108
112
  // Manipulate the calendar drop down to choose the txs start date.
@@ -165,22 +169,22 @@ async function searchByDates(page, startDate) {
165
169
  }
166
170
  }
167
171
  }
168
- async function fetchAccountData(page, startDate, accountID) {
172
+ async function fetchAccountData(page, startDate, accountID, options) {
169
173
  await (0, _elementsInteractions.waitUntilElementDisappear)(page, '.loading-bar-spinner');
170
174
  await searchByDates(page, startDate);
171
175
  await (0, _elementsInteractions.waitUntilElementDisappear)(page, '.loading-bar-spinner');
172
- const txns = await getAccountTransactions(page);
176
+ const txns = await getAccountTransactions(page, options);
173
177
  return {
174
178
  accountNumber: accountID,
175
179
  txns
176
180
  };
177
181
  }
178
- async function fetchAccounts(page, startDate) {
182
+ async function fetchAccounts(page, startDate, options) {
179
183
  const accounts = [];
180
184
 
181
185
  // TODO: get more accounts. Not sure is supported.
182
186
  const accountID = await getAccountID(page);
183
- const accountData = await fetchAccountData(page, startDate, accountID);
187
+ const accountData = await fetchAccountData(page, startDate, accountID, options);
184
188
  accounts.push(accountData);
185
189
  return accounts;
186
190
  }
@@ -236,7 +240,7 @@ class YahavScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
236
240
  const defaultStartMoment = (0, _moment.default)().subtract(3, 'months').add(1, 'day');
237
241
  const startDate = this.options.startDate || defaultStartMoment.toDate();
238
242
  const startMoment = _moment.default.max(defaultStartMoment, (0, _moment.default)(startDate));
239
- const accounts = await fetchAccounts(this.page, startMoment);
243
+ const accounts = await fetchAccounts(this.page, startMoment, this.options);
240
244
  return {
241
245
  success: true,
242
246
  accounts
@@ -244,4 +248,4 @@ class YahavScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
244
248
  }
245
249
  }
246
250
  var _default = exports.default = YahavScraper;
247
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29uc3RhbnRzIiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX25hdmlnYXRpb24iLCJfdHJhbnNhY3Rpb25zIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJMT0dJTl9VUkwiLCJCQVNFX1VSTCIsIklOVkFMSURfREVUQUlMU19TRUxFQ1RPUiIsIkNIQU5HRV9QQVNTV09SRF9PTERfUEFTUyIsIkJBU0VfV0VMQ09NRV9VUkwiLCJBQ0NPVU5UX0lEX1NFTEVDVE9SIiwiQUNDT1VOVF9ERVRBSUxTX1NFTEVDVE9SIiwiREFURV9GT1JNQVQiLCJVU0VSX0VMRU0iLCJQQVNTV0RfRUxFTSIsIk5BVElPTkFMSURfRUxFTSIsIlNVQk1JVF9MT0dJTl9TRUxFQ1RPUiIsImdldFBvc3NpYmxlTG9naW5SZXN1bHRzIiwicGFnZSIsInVybHMiLCJMb2dpblJlc3VsdHMiLCJTdWNjZXNzIiwiSW52YWxpZFBhc3N3b3JkIiwiZWxlbWVudFByZXNlbnRPblBhZ2UiLCJDaGFuZ2VQYXNzd29yZCIsImdldEFjY291bnRJRCIsInNlbGVjdGVkU25pZkFjY291bnQiLCIkZXZhbCIsImVsZW1lbnQiLCJ0ZXh0Q29udGVudCIsImVycm9yIiwiZXJyb3JNZXNzYWdlIiwiRXJyb3IiLCJtZXNzYWdlIiwiU3RyaW5nIiwiZ2V0QW1vdW50RGF0YSIsImFtb3VudFN0ciIsImFtb3VudFN0ckNvcHkiLCJyZXBsYWNlIiwicGFyc2VGbG9hdCIsImdldFR4bkFtb3VudCIsInR4biIsImNyZWRpdCIsImRlYml0IiwiTnVtYmVyIiwiaXNOYU4iLCJjb252ZXJ0VHJhbnNhY3Rpb25zIiwidHhucyIsIm1hcCIsImNvbnZlcnRlZERhdGUiLCJtb21lbnQiLCJkYXRlIiwidG9JU09TdHJpbmciLCJjb252ZXJ0ZWRBbW91bnQiLCJ0eXBlIiwiVHJhbnNhY3Rpb25UeXBlcyIsIk5vcm1hbCIsImlkZW50aWZpZXIiLCJyZWZlcmVuY2UiLCJwYXJzZUludCIsInVuZGVmaW5lZCIsInByb2Nlc3NlZERhdGUiLCJvcmlnaW5hbEFtb3VudCIsIm9yaWdpbmFsQ3VycmVuY3kiLCJTSEVLRUxfQ1VSUkVOQ1kiLCJjaGFyZ2VkQW1vdW50Iiwic3RhdHVzIiwiZGVzY3JpcHRpb24iLCJtZW1vIiwiaGFuZGxlVHJhbnNhY3Rpb25Sb3ciLCJ0eG5Sb3ciLCJkaXYiLCJpbm5lckRpdnMiLCJyZWdleCIsInR4IiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIkNvbXBsZXRlZCIsInB1c2giLCJnZXRBY2NvdW50VHJhbnNhY3Rpb25zIiwid2FpdFVudGlsRWxlbWVudEZvdW5kIiwidHJhbnNhY3Rpb25zRGl2cyIsInBhZ2VFdmFsQWxsIiwiZGl2cyIsImlkIiwiZ2V0QXR0cmlidXRlIiwiQXJyYXkiLCJmcm9tIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJlbCIsImlubmVyVGV4dCIsInNlYXJjaEJ5RGF0ZXMiLCJzdGFydERhdGUiLCJzdGFydERhdGVEYXkiLCJmb3JtYXQiLCJzdGFydERhdGVNb250aCIsInN0YXJ0RGF0ZVllYXIiLCJkYXRlRnJvbVBpY2siLCJjbGlja0J1dHRvbiIsIm1vbnRoRnJvbVBpY2siLCJpIiwic2VsZWN0b3IiLCJ5ZWFyIiwieSIsIm1vbnRoU2VsZWN0b3IiLCJkYXkiLCJkIiwiZmV0Y2hBY2NvdW50RGF0YSIsImFjY291bnRJRCIsIndhaXRVbnRpbEVsZW1lbnREaXNhcHBlYXIiLCJhY2NvdW50TnVtYmVyIiwiZmV0Y2hBY2NvdW50cyIsImFjY291bnRzIiwiYWNjb3VudERhdGEiLCJ3YWl0UmVhZGluZXNzRm9yQWxsIiwicmVkaXJlY3RPckRpYWxvZyIsIndhaXRGb3JOYXZpZ2F0aW9uIiwiaGFzTWVzc2FnZSIsInByb21pc2UxIiwid2FpdEZvclNlbGVjdG9yIiwidGltZW91dCIsInByb21pc2UyIiwicHJvbWlzZXMiLCJQcm9taXNlIiwicmFjZSIsIllhaGF2U2NyYXBlciIsIkJhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJnZXRMb2dpbk9wdGlvbnMiLCJjcmVkZW50aWFscyIsImxvZ2luVXJsIiwiZmllbGRzIiwidmFsdWUiLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwibmF0aW9uYWxJRCIsInN1Ym1pdEJ1dHRvblNlbGVjdG9yIiwiY2hlY2tSZWFkaW5lc3MiLCJwb3N0QWN0aW9uIiwicG9zc2libGVSZXN1bHRzIiwiZmV0Y2hEYXRhIiwiZGVmYXVsdFN0YXJ0TW9tZW50Iiwic3VidHJhY3QiLCJhZGQiLCJvcHRpb25zIiwidG9EYXRlIiwic3RhcnRNb21lbnQiLCJtYXgiLCJzdWNjZXNzIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL3lhaGF2LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb21lbnQsIHsgdHlwZSBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgdHlwZSBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyJztcbmltcG9ydCB7IFNIRUtFTF9DVVJSRU5DWSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBjbGlja0J1dHRvbixcbiAgZWxlbWVudFByZXNlbnRPblBhZ2UsXG4gIHBhZ2VFdmFsQWxsLFxuICB3YWl0VW50aWxFbGVtZW50RGlzYXBwZWFyLFxuICB3YWl0VW50aWxFbGVtZW50Rm91bmQsXG59IGZyb20gJy4uL2hlbHBlcnMvZWxlbWVudHMtaW50ZXJhY3Rpb25zJztcbmltcG9ydCB7IHdhaXRGb3JOYXZpZ2F0aW9uIH0gZnJvbSAnLi4vaGVscGVycy9uYXZpZ2F0aW9uJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uU3RhdHVzZXMsIFRyYW5zYWN0aW9uVHlwZXMsIHR5cGUgVHJhbnNhY3Rpb24sIHR5cGUgVHJhbnNhY3Rpb25zQWNjb3VudCB9IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBCYXNlU2NyYXBlcldpdGhCcm93c2VyLCBMb2dpblJlc3VsdHMsIHR5cGUgUG9zc2libGVMb2dpblJlc3VsdHMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInO1xuXG5jb25zdCBMT0dJTl9VUkwgPSAnaHR0cHM6Ly9sb2dpbi55YWhhdi5jby5pbC9sb2dpbi8nO1xuY29uc3QgQkFTRV9VUkwgPSAnaHR0cHM6Ly9kaWdpdGFsLnlhaGF2LmNvLmlsL0JhTkNTRGlnaXRhbFVJL2FwcC9pbmRleC5odG1sIy8nO1xuY29uc3QgSU5WQUxJRF9ERVRBSUxTX1NFTEVDVE9SID0gJy51aS1kaWFsb2ctYnV0dG9ucyc7XG5jb25zdCBDSEFOR0VfUEFTU1dPUkRfT0xEX1BBU1MgPSAnaW5wdXQjZWZfcmVxX3BhcmFtZXRlcl9vbGRfY3JlZGVudGlhbCc7XG5jb25zdCBCQVNFX1dFTENPTUVfVVJMID0gYCR7QkFTRV9VUkx9bWFpbi9ob21lYDtcblxuY29uc3QgQUNDT1VOVF9JRF9TRUxFQ1RPUiA9ICdzcGFuLnBvcnRmb2xpby12YWx1ZVtuZy1pZj1cIm1haW5Db250cm9sbGVyLmRhdGEucG9ydGZvbGlvTGlzdC5sZW5ndGggPT09IDFcIl0nO1xuY29uc3QgQUNDT1VOVF9ERVRBSUxTX1NFTEVDVE9SID0gJy5hY2NvdW50LWRldGFpbHMnO1xuY29uc3QgREFURV9GT1JNQVQgPSAnREQvTU0vWVlZWSc7XG5cbmNvbnN0IFVTRVJfRUxFTSA9ICcjdXNlcm5hbWUnO1xuY29uc3QgUEFTU1dEX0VMRU0gPSAnI3Bhc3N3b3JkJztcbmNvbnN0IE5BVElPTkFMSURfRUxFTSA9ICcjcGlubm8nO1xuY29uc3QgU1VCTUlUX0xPR0lOX1NFTEVDVE9SID0gJy5idG4nO1xuXG5pbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uIHtcbiAgY3JlZGl0OiBzdHJpbmc7XG4gIGRlYml0OiBzdHJpbmc7XG4gIGRhdGU6IHN0cmluZztcbiAgcmVmZXJlbmNlPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBtZW1vOiBzdHJpbmc7XG4gIHN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcztcbn1cblxuZnVuY3Rpb24gZ2V0UG9zc2libGVMb2dpblJlc3VsdHMocGFnZTogUGFnZSk6IFBvc3NpYmxlTG9naW5SZXN1bHRzIHtcbiAgLy8gY2hlY2tvdXQgZmlsZSBgYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlci50c2AgZm9yIGF2YWlsYWJsZSByZXN1bHQgdHlwZXNcbiAgY29uc3QgdXJsczogUG9zc2libGVMb2dpblJlc3VsdHMgPSB7fTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuU3VjY2Vzc10gPSBbYCR7QkFTRV9XRUxDT01FX1VSTH1gXTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkXSA9IFtcbiAgICBhc3luYyAoKSA9PiB7XG4gICAgICByZXR1cm4gZWxlbWVudFByZXNlbnRPblBhZ2UocGFnZSwgYCR7SU5WQUxJRF9ERVRBSUxTX1NFTEVDVE9SfWApO1xuICAgIH0sXG4gIF07XG5cbiAgdXJsc1tMb2dpblJlc3VsdHMuQ2hhbmdlUGFzc3dvcmRdID0gW1xuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIHJldHVybiBlbGVtZW50UHJlc2VudE9uUGFnZShwYWdlLCBgJHtDSEFOR0VfUEFTU1dPUkRfT0xEX1BBU1N9YCk7XG4gICAgfSxcbiAgXTtcblxuICByZXR1cm4gdXJscztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QWNjb3VudElEKHBhZ2U6IFBhZ2UpOiBQcm9taXNlPHN0cmluZz4ge1xuICB0cnkge1xuICAgIGNvbnN0IHNlbGVjdGVkU25pZkFjY291bnQgPSBhd2FpdCBwYWdlLiRldmFsKEFDQ09VTlRfSURfU0VMRUNUT1IsIChlbGVtZW50OiBFbGVtZW50KSA9PiB7XG4gICAgICByZXR1cm4gZWxlbWVudC50ZXh0Q29udGVudCBhcyBzdHJpbmc7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2VsZWN0ZWRTbmlmQWNjb3VudDtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcik7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEZhaWxlZCB0byByZXRyaWV2ZSBhY2NvdW50IElELiBQb3NzaWJsZSBvdXRkYXRlZCBzZWxlY3RvciAnJHtBQ0NPVU5UX0lEX1NFTEVDVE9SfTogJHtlcnJvck1lc3NhZ2V9YCxcbiAgICApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEFtb3VudERhdGEoYW1vdW50U3RyOiBzdHJpbmcpIHtcbiAgY29uc3QgYW1vdW50U3RyQ29weSA9IGFtb3VudFN0ci5yZXBsYWNlKCcsJywgJycpO1xuICByZXR1cm4gcGFyc2VGbG9hdChhbW91bnRTdHJDb3B5KTtcbn1cblxuZnVuY3Rpb24gZ2V0VHhuQW1vdW50KHR4bjogU2NyYXBlZFRyYW5zYWN0aW9uKSB7XG4gIGNvbnN0IGNyZWRpdCA9IGdldEFtb3VudERhdGEodHhuLmNyZWRpdCk7XG4gIGNvbnN0IGRlYml0ID0gZ2V0QW1vdW50RGF0YSh0eG4uZGViaXQpO1xuICByZXR1cm4gKE51bWJlci5pc05hTihjcmVkaXQpID8gMCA6IGNyZWRpdCkgLSAoTnVtYmVyLmlzTmFOKGRlYml0KSA/IDAgOiBkZWJpdCk7XG59XG5cbnR5cGUgVHJhbnNhY3Rpb25zVHIgPSB7IGlkOiBzdHJpbmc7IGlubmVyRGl2czogc3RyaW5nW10gfTtcblxuZnVuY3Rpb24gY29udmVydFRyYW5zYWN0aW9ucyh0eG5zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXSk6IFRyYW5zYWN0aW9uW10ge1xuICByZXR1cm4gdHhucy5tYXAodHhuID0+IHtcbiAgICBjb25zdCBjb252ZXJ0ZWREYXRlID0gbW9tZW50KHR4bi5kYXRlLCBEQVRFX0ZPUk1BVCkudG9JU09TdHJpbmcoKTtcbiAgICBjb25zdCBjb252ZXJ0ZWRBbW91bnQgPSBnZXRUeG5BbW91bnQodHhuKTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWwsXG4gICAgICBpZGVudGlmaWVyOiB0eG4ucmVmZXJlbmNlID8gcGFyc2VJbnQodHhuLnJlZmVyZW5jZSwgMTApIDogdW5kZWZpbmVkLFxuICAgICAgZGF0ZTogY29udmVydGVkRGF0ZSxcbiAgICAgIHByb2Nlc3NlZERhdGU6IGNvbnZlcnRlZERhdGUsXG4gICAgICBvcmlnaW5hbEFtb3VudDogY29udmVydGVkQW1vdW50LFxuICAgICAgb3JpZ2luYWxDdXJyZW5jeTogU0hFS0VMX0NVUlJFTkNZLFxuICAgICAgY2hhcmdlZEFtb3VudDogY29udmVydGVkQW1vdW50LFxuICAgICAgc3RhdHVzOiB0eG4uc3RhdHVzLFxuICAgICAgZGVzY3JpcHRpb246IHR4bi5kZXNjcmlwdGlvbixcbiAgICAgIG1lbW86IHR4bi5tZW1vLFxuICAgIH07XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVUcmFuc2FjdGlvblJvdyh0eG5zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXSwgdHhuUm93OiBUcmFuc2FjdGlvbnNUcikge1xuICBjb25zdCBkaXYgPSB0eG5Sb3cuaW5uZXJEaXZzO1xuXG4gIC8vIFJlbW92ZSBhbnl0aGluZyBleGNlcHQgZGlnaXRzLlxuICBjb25zdCByZWdleCA9IC9cXEQrL2dtO1xuXG4gIGNvbnN0IHR4OiBTY3JhcGVkVHJhbnNhY3Rpb24gPSB7XG4gICAgZGF0ZTogZGl2WzFdLFxuICAgIHJlZmVyZW5jZTogZGl2WzJdLnJlcGxhY2UocmVnZXgsICcnKSxcbiAgICBtZW1vOiAnJyxcbiAgICBkZXNjcmlwdGlvbjogZGl2WzNdLFxuICAgIGRlYml0OiBkaXZbNF0sXG4gICAgY3JlZGl0OiBkaXZbNV0sXG4gICAgc3RhdHVzOiBUcmFuc2FjdGlvblN0YXR1c2VzLkNvbXBsZXRlZCxcbiAgfTtcblxuICB0eG5zLnB1c2godHgpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBY2NvdW50VHJhbnNhY3Rpb25zKHBhZ2U6IFBhZ2UpOiBQcm9taXNlPFRyYW5zYWN0aW9uW10+IHtcbiAgLy8gV2FpdCBmb3IgdHJhbnNhY3Rpb25zLlxuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJy51bmRlci1saW5lLXR4bi10YWJsZS1oZWFkZXInLCB0cnVlKTtcblxuICBjb25zdCB0eG5zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXSA9IFtdO1xuICBjb25zdCB0cmFuc2FjdGlvbnNEaXZzID0gYXdhaXQgcGFnZUV2YWxBbGw8VHJhbnNhY3Rpb25zVHJbXT4oXG4gICAgcGFnZSxcbiAgICAnLmxpc3QtaXRlbS1ob2xkZXIgLmVudGlyZS1jb250ZW50LWN0cicsXG4gICAgW10sXG4gICAgZGl2cyA9PiB7XG4gICAgICByZXR1cm4gKGRpdnMgYXMgSFRNTEVsZW1lbnRbXSkubWFwKGRpdiA9PiAoe1xuICAgICAgICBpZDogZGl2LmdldEF0dHJpYnV0ZSgnaWQnKSB8fCAnJyxcbiAgICAgICAgaW5uZXJEaXZzOiBBcnJheS5mcm9tKGRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2JykpLm1hcChlbCA9PiAoZWwgYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dCksXG4gICAgICB9KSk7XG4gICAgfSxcbiAgKTtcblxuICBmb3IgKGNvbnN0IHR4blJvdyBvZiB0cmFuc2FjdGlvbnNEaXZzKSB7XG4gICAgaGFuZGxlVHJhbnNhY3Rpb25Sb3codHhucywgdHhuUm93KTtcbiAgfVxuXG4gIHJldHVybiBjb252ZXJ0VHJhbnNhY3Rpb25zKHR4bnMpO1xufVxuXG4vLyBNYW5pcHVsYXRlIHRoZSBjYWxlbmRhciBkcm9wIGRvd24gdG8gY2hvb3NlIHRoZSB0eHMgc3RhcnQgZGF0ZS5cbmFzeW5jIGZ1bmN0aW9uIHNlYXJjaEJ5RGF0ZXMocGFnZTogUGFnZSwgc3RhcnREYXRlOiBNb21lbnQpIHtcbiAgLy8gR2V0IHRoZSBkYXkgbnVtYmVyIGZyb20gc3RhcnREYXRlLiAxLTMxICh1c3VhbGx5IDEpXG4gIGNvbnN0IHN0YXJ0RGF0ZURheSA9IHN0YXJ0RGF0ZS5mb3JtYXQoJ0QnKTtcbiAgY29uc3Qgc3RhcnREYXRlTW9udGggPSBzdGFydERhdGUuZm9ybWF0KCdNJyk7XG4gIGNvbnN0IHN0YXJ0RGF0ZVllYXIgPSBzdGFydERhdGUuZm9ybWF0KCdZJyk7XG5cbiAgLy8gT3BlbiB0aGUgY2FsZW5kYXIgZGF0ZSBwaWNrZXJcbiAgY29uc3QgZGF0ZUZyb21QaWNrID1cbiAgICAnZGl2LmRhdGUtb3B0aW9ucy1jZWxsOm50aC1jaGlsZCg3KSA+IGRhdGUtcGlja2VyOm50aC1jaGlsZCgxKSA+IGRpdjpudGgtY2hpbGQoMSkgPiBzcGFuOm50aC1jaGlsZCgyKSc7XG4gIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCBkYXRlRnJvbVBpY2ssIHRydWUpO1xuICBhd2FpdCBjbGlja0J1dHRvbihwYWdlLCBkYXRlRnJvbVBpY2spO1xuXG4gIC8vIFdhaXQgdW50aWwgZmlyc3QgZGF5IGFwcGVhci5cbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICcucG11LWRheXMgPiBkaXY6bnRoLWNoaWxkKDEpJywgdHJ1ZSk7XG5cbiAgLy8gT3BlbiBNb250aHMgb3B0aW9ucy5cbiAgY29uc3QgbW9udGhGcm9tUGljayA9ICcucG11LW1vbnRoJztcbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsIG1vbnRoRnJvbVBpY2ssIHRydWUpO1xuICBhd2FpdCBjbGlja0J1dHRvbihwYWdlLCBtb250aEZyb21QaWNrKTtcbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICcucG11LW1vbnRocyA+IGRpdjpudGgtY2hpbGQoMSknLCB0cnVlKTtcblxuICAvLyBPcGVuIFllYXIgb3B0aW9ucy5cbiAgLy8gVXNlIHNhbWUgc2VsZWN0b3IuLi4gWWFoYXYga25vd3Mgd2h5Li4uXG4gIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCBtb250aEZyb21QaWNrLCB0cnVlKTtcbiAgYXdhaXQgY2xpY2tCdXR0b24ocGFnZSwgbW9udGhGcm9tUGljayk7XG4gIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCAnLnBtdS15ZWFycyA+IGRpdjpudGgtY2hpbGQoMSknLCB0cnVlKTtcblxuICAvLyBTZWxlY3QgeWVhciBmcm9tIGEgMTIgeWVhciBncmlkLlxuICBmb3IgKGxldCBpID0gMTsgaSA8IDEzOyBpICs9IDEpIHtcbiAgICBjb25zdCBzZWxlY3RvciA9IGAucG11LXllYXJzID4gZGl2Om50aC1jaGlsZCgke2l9KWA7XG4gICAgY29uc3QgeWVhciA9IGF3YWl0IHBhZ2UuJGV2YWwoc2VsZWN0b3IsIHkgPT4ge1xuICAgICAgcmV0dXJuICh5IGFzIEhUTUxFbGVtZW50KS5pbm5lclRleHQ7XG4gICAgfSk7XG4gICAgaWYgKHN0YXJ0RGF0ZVllYXIgPT09IHllYXIpIHtcbiAgICAgIGF3YWl0IGNsaWNrQnV0dG9uKHBhZ2UsIHNlbGVjdG9yKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNlbGVjdCBNb250aC5cbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICcucG11LW1vbnRocyA+IGRpdjpudGgtY2hpbGQoMSknLCB0cnVlKTtcbiAgLy8gVGhlIGZpcnN0IGVsZW1lbnQgKDEpIGlzIEphbnVhcnkuXG4gIGNvbnN0IG1vbnRoU2VsZWN0b3IgPSBgLnBtdS1tb250aHMgPiBkaXY6bnRoLWNoaWxkKCR7c3RhcnREYXRlTW9udGh9KWA7XG4gIGF3YWl0IGNsaWNrQnV0dG9uKHBhZ2UsIG1vbnRoU2VsZWN0b3IpO1xuXG4gIC8vIFNlbGVjdCBEYXkuXG4gIC8vIFRoZSBjYWxlbmRhciBncmlkIHNob3dzIDcgZGF5cyBhbmQgNiB3ZWVrcyA9IDQyIGRheXMuXG4gIC8vIEluIHRoZW9yeSwgdGhlIGZpcnN0IGRheSBvZiB0aGUgbW9udGggd2lsbCBiZSBpbiB0aGUgZmlyc3Qgcm93LlxuICAvLyBMZXQncyBjaGVjayBldmVyeXRoaW5nIGp1c3QgaW4gY2FzZS4uLlxuICBmb3IgKGxldCBpID0gMTsgaSA8IDQyOyBpICs9IDEpIHtcbiAgICBjb25zdCBzZWxlY3RvciA9IGAucG11LWRheXMgPiBkaXY6bnRoLWNoaWxkKCR7aX0pYDtcbiAgICBjb25zdCBkYXkgPSBhd2FpdCBwYWdlLiRldmFsKHNlbGVjdG9yLCBkID0+IHtcbiAgICAgIHJldHVybiAoZCBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0O1xuICAgIH0pO1xuXG4gICAgaWYgKHN0YXJ0RGF0ZURheSA9PT0gZGF5KSB7XG4gICAgICBhd2FpdCBjbGlja0J1dHRvbihwYWdlLCBzZWxlY3Rvcik7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hBY2NvdW50RGF0YShwYWdlOiBQYWdlLCBzdGFydERhdGU6IE1vbWVudCwgYWNjb3VudElEOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uc0FjY291bnQ+IHtcbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudERpc2FwcGVhcihwYWdlLCAnLmxvYWRpbmctYmFyLXNwaW5uZXInKTtcbiAgYXdhaXQgc2VhcmNoQnlEYXRlcyhwYWdlLCBzdGFydERhdGUpO1xuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50RGlzYXBwZWFyKHBhZ2UsICcubG9hZGluZy1iYXItc3Bpbm5lcicpO1xuICBjb25zdCB0eG5zID0gYXdhaXQgZ2V0QWNjb3VudFRyYW5zYWN0aW9ucyhwYWdlKTtcblxuICByZXR1cm4ge1xuICAgIGFjY291bnROdW1iZXI6IGFjY291bnRJRCxcbiAgICB0eG5zLFxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaEFjY291bnRzKHBhZ2U6IFBhZ2UsIHN0YXJ0RGF0ZTogTW9tZW50KTogUHJvbWlzZTxUcmFuc2FjdGlvbnNBY2NvdW50W10+IHtcbiAgY29uc3QgYWNjb3VudHM6IFRyYW5zYWN0aW9uc0FjY291bnRbXSA9IFtdO1xuXG4gIC8vIFRPRE86IGdldCBtb3JlIGFjY291bnRzLiBOb3Qgc3VyZSBpcyBzdXBwb3J0ZWQuXG4gIGNvbnN0IGFjY291bnRJRCA9IGF3YWl0IGdldEFjY291bnRJRChwYWdlKTtcbiAgY29uc3QgYWNjb3VudERhdGEgPSBhd2FpdCBmZXRjaEFjY291bnREYXRhKHBhZ2UsIHN0YXJ0RGF0ZSwgYWNjb3VudElEKTtcbiAgYWNjb3VudHMucHVzaChhY2NvdW50RGF0YSk7XG5cbiAgcmV0dXJuIGFjY291bnRzO1xufVxuXG5hc3luYyBmdW5jdGlvbiB3YWl0UmVhZGluZXNzRm9yQWxsKHBhZ2U6IFBhZ2UpIHtcbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsIGAke1VTRVJfRUxFTX1gLCB0cnVlKTtcbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsIGAke1BBU1NXRF9FTEVNfWAsIHRydWUpO1xuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgYCR7TkFUSU9OQUxJRF9FTEVNfWAsIHRydWUpO1xuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgYCR7U1VCTUlUX0xPR0lOX1NFTEVDVE9SfWAsIHRydWUpO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZWRpcmVjdE9yRGlhbG9nKHBhZ2U6IFBhZ2UpIHtcbiAgLy8gQ2xpY2sgb24gYmFuayBtZXNzYWdlcyBpZiBhbnkuXG4gIGF3YWl0IHdhaXRGb3JOYXZpZ2F0aW9uKHBhZ2UpO1xuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50RGlzYXBwZWFyKHBhZ2UsICcubG9hZGluZy1iYXItc3Bpbm5lcicpO1xuICBjb25zdCBoYXNNZXNzYWdlID0gYXdhaXQgZWxlbWVudFByZXNlbnRPblBhZ2UocGFnZSwgJy5tZXNzYWdpbmctbGlua3MtY29udGFpbmVyJyk7XG4gIGlmIChoYXNNZXNzYWdlKSB7XG4gICAgYXdhaXQgY2xpY2tCdXR0b24ocGFnZSwgJy5saW5rLTEnKTtcbiAgfVxuXG4gIGNvbnN0IHByb21pc2UxID0gcGFnZS53YWl0Rm9yU2VsZWN0b3IoQUNDT1VOVF9ERVRBSUxTX1NFTEVDVE9SLCB7IHRpbWVvdXQ6IDMwMDAwIH0pO1xuICBjb25zdCBwcm9taXNlMiA9IHBhZ2Uud2FpdEZvclNlbGVjdG9yKENIQU5HRV9QQVNTV09SRF9PTERfUEFTUywgeyB0aW1lb3V0OiAzMDAwMCB9KTtcbiAgY29uc3QgcHJvbWlzZXMgPSBbcHJvbWlzZTEsIHByb21pc2UyXTtcblxuICBhd2FpdCBQcm9taXNlLnJhY2UocHJvbWlzZXMpO1xuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50RGlzYXBwZWFyKHBhZ2UsICcubG9hZGluZy1iYXItc3Bpbm5lcicpO1xufVxuXG50eXBlIFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzID0geyB1c2VybmFtZTogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nOyBuYXRpb25hbElEOiBzdHJpbmcgfTtcblxuY2xhc3MgWWFoYXZTY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXJXaXRoQnJvd3NlcjxTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscz4ge1xuICBnZXRMb2dpbk9wdGlvbnMoY3JlZGVudGlhbHM6IFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvZ2luVXJsOiBgJHtMT0dJTl9VUkx9YCxcbiAgICAgIGZpZWxkczogW1xuICAgICAgICB7IHNlbGVjdG9yOiBgJHtVU0VSX0VMRU19YCwgdmFsdWU6IGNyZWRlbnRpYWxzLnVzZXJuYW1lIH0sXG4gICAgICAgIHsgc2VsZWN0b3I6IGAke1BBU1NXRF9FTEVNfWAsIHZhbHVlOiBjcmVkZW50aWFscy5wYXNzd29yZCB9LFxuICAgICAgICB7IHNlbGVjdG9yOiBgJHtOQVRJT05BTElEX0VMRU19YCwgdmFsdWU6IGNyZWRlbnRpYWxzLm5hdGlvbmFsSUQgfSxcbiAgICAgIF0sXG4gICAgICBzdWJtaXRCdXR0b25TZWxlY3RvcjogYCR7U1VCTUlUX0xPR0lOX1NFTEVDVE9SfWAsXG4gICAgICBjaGVja1JlYWRpbmVzczogYXN5bmMgKCkgPT4gd2FpdFJlYWRpbmVzc0ZvckFsbCh0aGlzLnBhZ2UpLFxuICAgICAgcG9zdEFjdGlvbjogYXN5bmMgKCkgPT4gcmVkaXJlY3RPckRpYWxvZyh0aGlzLnBhZ2UpLFxuICAgICAgcG9zc2libGVSZXN1bHRzOiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyh0aGlzLnBhZ2UpLFxuICAgIH07XG4gIH1cblxuICBhc3luYyBmZXRjaERhdGEoKSB7XG4gICAgLy8gR290byBzdGF0ZW1lbnRzIHBhZ2VcbiAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCBBQ0NPVU5UX0RFVEFJTFNfU0VMRUNUT1IsIHRydWUpO1xuICAgIGF3YWl0IGNsaWNrQnV0dG9uKHRoaXMucGFnZSwgQUNDT1VOVF9ERVRBSUxTX1NFTEVDVE9SKTtcbiAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCAnLnN0YXRlbWVudC1vcHRpb25zIC5zZWxlY3RlZC1pdGVtLXRvcCcsIHRydWUpO1xuXG4gICAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMywgJ21vbnRocycpLmFkZCgxLCAnZGF5Jyk7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSB8fCBkZWZhdWx0U3RhcnRNb21lbnQudG9EYXRlKCk7XG4gICAgY29uc3Qgc3RhcnRNb21lbnQgPSBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xuXG4gICAgY29uc3QgYWNjb3VudHMgPSBhd2FpdCBmZXRjaEFjY291bnRzKHRoaXMucGFnZSwgc3RhcnRNb21lbnQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICBhY2NvdW50cyxcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFlhaGF2U2NyYXBlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsVUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFB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
251
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29uc3RhbnRzIiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX25hdmlnYXRpb24iLCJfdHJhbnNhY3Rpb25zIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJMT0dJTl9VUkwiLCJCQVNFX1VSTCIsIklOVkFMSURfREVUQUlMU19TRUxFQ1RPUiIsIkNIQU5HRV9QQVNTV09SRF9PTERfUEFTUyIsIkJBU0VfV0VMQ09NRV9VUkwiLCJBQ0NPVU5UX0lEX1NFTEVDVE9SIiwiQUNDT1VOVF9ERVRBSUxTX1NFTEVDVE9SIiwiREFURV9GT1JNQVQiLCJVU0VSX0VMRU0iLCJQQVNTV0RfRUxFTSIsIk5BVElPTkFMSURfRUxFTSIsIlNVQk1JVF9MT0dJTl9TRUxFQ1RPUiIsImdldFBvc3NpYmxlTG9naW5SZXN1bHRzIiwicGFnZSIsInVybHMiLCJMb2dpblJlc3VsdHMiLCJTdWNjZXNzIiwiSW52YWxpZFBhc3N3b3JkIiwiZWxlbWVudFByZXNlbnRPblBhZ2UiLCJDaGFuZ2VQYXNzd29yZCIsImdldEFjY291bnRJRCIsInNlbGVjdGVkU25pZkFjY291bnQiLCIkZXZhbCIsImVsZW1lbnQiLCJ0ZXh0Q29udGVudCIsImVycm9yIiwiZXJyb3JNZXNzYWdlIiwiRXJyb3IiLCJtZXNzYWdlIiwiU3RyaW5nIiwiZ2V0QW1vdW50RGF0YSIsImFtb3VudFN0ciIsImFtb3VudFN0ckNvcHkiLCJyZXBsYWNlIiwicGFyc2VGbG9hdCIsImdldFR4bkFtb3VudCIsInR4biIsImNyZWRpdCIsImRlYml0IiwiTnVtYmVyIiwiaXNOYU4iLCJjb252ZXJ0VHJhbnNhY3Rpb25zIiwidHhucyIsIm9wdGlvbnMiLCJtYXAiLCJjb252ZXJ0ZWREYXRlIiwibW9tZW50IiwiZGF0ZSIsInRvSVNPU3RyaW5nIiwiY29udmVydGVkQW1vdW50IiwicmVzdWx0IiwidHlwZSIsIlRyYW5zYWN0aW9uVHlwZXMiLCJOb3JtYWwiLCJpZGVudGlmaWVyIiwicmVmZXJlbmNlIiwicGFyc2VJbnQiLCJ1bmRlZmluZWQiLCJwcm9jZXNzZWREYXRlIiwib3JpZ2luYWxBbW91bnQiLCJvcmlnaW5hbEN1cnJlbmN5IiwiU0hFS0VMX0NVUlJFTkNZIiwiY2hhcmdlZEFtb3VudCIsInN0YXR1cyIsImRlc2NyaXB0aW9uIiwibWVtbyIsImluY2x1ZGVSYXdUcmFuc2FjdGlvbiIsInJhd1RyYW5zYWN0aW9uIiwiaGFuZGxlVHJhbnNhY3Rpb25Sb3ciLCJ0eG5Sb3ciLCJkaXYiLCJpbm5lckRpdnMiLCJyZWdleCIsInR4IiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIkNvbXBsZXRlZCIsInB1c2giLCJnZXRBY2NvdW50VHJhbnNhY3Rpb25zIiwid2FpdFVudGlsRWxlbWVudEZvdW5kIiwidHJhbnNhY3Rpb25zRGl2cyIsInBhZ2VFdmFsQWxsIiwiZGl2cyIsImlkIiwiZ2V0QXR0cmlidXRlIiwiQXJyYXkiLCJmcm9tIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJlbCIsImlubmVyVGV4dCIsInNlYXJjaEJ5RGF0ZXMiLCJzdGFydERhdGUiLCJzdGFydERhdGVEYXkiLCJmb3JtYXQiLCJzdGFydERhdGVNb250aCIsInN0YXJ0RGF0ZVllYXIiLCJkYXRlRnJvbVBpY2siLCJjbGlja0J1dHRvbiIsIm1vbnRoRnJvbVBpY2siLCJpIiwic2VsZWN0b3IiLCJ5ZWFyIiwieSIsIm1vbnRoU2VsZWN0b3IiLCJkYXkiLCJkIiwiZmV0Y2hBY2NvdW50RGF0YSIsImFjY291bnRJRCIsIndhaXRVbnRpbEVsZW1lbnREaXNhcHBlYXIiLCJhY2NvdW50TnVtYmVyIiwiZmV0Y2hBY2NvdW50cyIsImFjY291bnRzIiwiYWNjb3VudERhdGEiLCJ3YWl0UmVhZGluZXNzRm9yQWxsIiwicmVkaXJlY3RPckRpYWxvZyIsIndhaXRGb3JOYXZpZ2F0aW9uIiwiaGFzTWVzc2FnZSIsInByb21pc2UxIiwid2FpdEZvclNlbGVjdG9yIiwidGltZW91dCIsInByb21pc2UyIiwicHJvbWlzZXMiLCJQcm9taXNlIiwicmFjZSIsIllhaGF2U2NyYXBlciIsIkJhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJnZXRMb2dpbk9wdGlvbnMiLCJjcmVkZW50aWFscyIsImxvZ2luVXJsIiwiZmllbGRzIiwidmFsdWUiLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwibmF0aW9uYWxJRCIsInN1Ym1pdEJ1dHRvblNlbGVjdG9yIiwiY2hlY2tSZWFkaW5lc3MiLCJwb3N0QWN0aW9uIiwicG9zc2libGVSZXN1bHRzIiwiZmV0Y2hEYXRhIiwiZGVmYXVsdFN0YXJ0TW9tZW50Iiwic3VidHJhY3QiLCJhZGQiLCJ0b0RhdGUiLCJzdGFydE1vbWVudCIsIm1heCIsInN1Y2Nlc3MiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyYXBlcnMveWFoYXYudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vbWVudCwgeyB0eXBlIE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyB0eXBlIFBhZ2UgfSBmcm9tICdwdXBwZXRlZXInO1xuaW1wb3J0IHsgU0hFS0VMX0NVUlJFTkNZIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIGNsaWNrQnV0dG9uLFxuICBlbGVtZW50UHJlc2VudE9uUGFnZSxcbiAgcGFnZUV2YWxBbGwsXG4gIHdhaXRVbnRpbEVsZW1lbnREaXNhcHBlYXIsXG4gIHdhaXRVbnRpbEVsZW1lbnRGb3VuZCxcbn0gZnJvbSAnLi4vaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMnO1xuaW1wb3J0IHsgd2FpdEZvck5hdmlnYXRpb24gfSBmcm9tICcuLi9oZWxwZXJzL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25TdGF0dXNlcywgVHJhbnNhY3Rpb25UeXBlcywgdHlwZSBUcmFuc2FjdGlvbiwgdHlwZSBUcmFuc2FjdGlvbnNBY2NvdW50IH0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsIExvZ2luUmVzdWx0cywgdHlwZSBQb3NzaWJsZUxvZ2luUmVzdWx0cyB9IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQgeyB0eXBlIFNjcmFwZXJPcHRpb25zIH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuXG5jb25zdCBMT0dJTl9VUkwgPSAnaHR0cHM6Ly9sb2dpbi55YWhhdi5jby5pbC9sb2dpbi8nO1xuY29uc3QgQkFTRV9VUkwgPSAnaHR0cHM6Ly9kaWdpdGFsLnlhaGF2LmNvLmlsL0JhTkNTRGlnaXRhbFVJL2FwcC9pbmRleC5odG1sIy8nO1xuY29uc3QgSU5WQUxJRF9ERVRBSUxTX1NFTEVDVE9SID0gJy51aS1kaWFsb2ctYnV0dG9ucyc7XG5jb25zdCBDSEFOR0VfUEFTU1dPUkRfT0xEX1BBU1MgPSAnaW5wdXQjZWZfcmVxX3BhcmFtZXRlcl9vbGRfY3JlZGVudGlhbCc7XG5jb25zdCBCQVNFX1dFTENPTUVfVVJMID0gYCR7QkFTRV9VUkx9bWFpbi9ob21lYDtcblxuY29uc3QgQUNDT1VOVF9JRF9TRUxFQ1RPUiA9ICdzcGFuLnBvcnRmb2xpby12YWx1ZVtuZy1pZj1cIm1haW5Db250cm9sbGVyLmRhdGEucG9ydGZvbGlvTGlzdC5sZW5ndGggPT09IDFcIl0nO1xuY29uc3QgQUNDT1VOVF9ERVRBSUxTX1NFTEVDVE9SID0gJy5hY2NvdW50LWRldGFpbHMnO1xuY29uc3QgREFURV9GT1JNQVQgPSAnREQvTU0vWVlZWSc7XG5cbmNvbnN0IFVTRVJfRUxFTSA9ICcjdXNlcm5hbWUnO1xuY29uc3QgUEFTU1dEX0VMRU0gPSAnI3Bhc3N3b3JkJztcbmNvbnN0IE5BVElPTkFMSURfRUxFTSA9ICcjcGlubm8nO1xuY29uc3QgU1VCTUlUX0xPR0lOX1NFTEVDVE9SID0gJy5idG4nO1xuXG5pbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uIHtcbiAgY3JlZGl0OiBzdHJpbmc7XG4gIGRlYml0OiBzdHJpbmc7XG4gIGRhdGU6IHN0cmluZztcbiAgcmVmZXJlbmNlPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBtZW1vOiBzdHJpbmc7XG4gIHN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcztcbn1cblxuZnVuY3Rpb24gZ2V0UG9zc2libGVMb2dpblJlc3VsdHMocGFnZTogUGFnZSk6IFBvc3NpYmxlTG9naW5SZXN1bHRzIHtcbiAgLy8gY2hlY2tvdXQgZmlsZSBgYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlci50c2AgZm9yIGF2YWlsYWJsZSByZXN1bHQgdHlwZXNcbiAgY29uc3QgdXJsczogUG9zc2libGVMb2dpblJlc3VsdHMgPSB7fTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuU3VjY2Vzc10gPSBbYCR7QkFTRV9XRUxDT01FX1VSTH1gXTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkXSA9IFtcbiAgICBhc3luYyAoKSA9PiB7XG4gICAgICByZXR1cm4gZWxlbWVudFByZXNlbnRPblBhZ2UocGFnZSwgYCR7SU5WQUxJRF9ERVRBSUxTX1NFTEVDVE9SfWApO1xuICAgIH0sXG4gIF07XG5cbiAgdXJsc1tMb2dpblJlc3VsdHMuQ2hhbmdlUGFzc3dvcmRdID0gW1xuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIHJldHVybiBlbGVtZW50UHJlc2VudE9uUGFnZShwYWdlLCBgJHtDSEFOR0VfUEFTU1dPUkRfT0xEX1BBU1N9YCk7XG4gICAgfSxcbiAgXTtcblxuICByZXR1cm4gdXJscztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QWNjb3VudElEKHBhZ2U6IFBhZ2UpOiBQcm9taXNlPHN0cmluZz4ge1xuICB0cnkge1xuICAgIGNvbnN0IHNlbGVjdGVkU25pZkFjY291bnQgPSBhd2FpdCBwYWdlLiRldmFsKEFDQ09VTlRfSURfU0VMRUNUT1IsIChlbGVtZW50OiBFbGVtZW50KSA9PiB7XG4gICAgICByZXR1cm4gZWxlbWVudC50ZXh0Q29udGVudCBhcyBzdHJpbmc7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2VsZWN0ZWRTbmlmQWNjb3VudDtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcik7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEZhaWxlZCB0byByZXRyaWV2ZSBhY2NvdW50IElELiBQb3NzaWJsZSBvdXRkYXRlZCBzZWxlY3RvciAnJHtBQ0NPVU5UX0lEX1NFTEVDVE9SfTogJHtlcnJvck1lc3NhZ2V9YCxcbiAgICApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEFtb3VudERhdGEoYW1vdW50U3RyOiBzdHJpbmcpIHtcbiAgY29uc3QgYW1vdW50U3RyQ29weSA9IGFtb3VudFN0ci5yZXBsYWNlKCcsJywgJycpO1xuICByZXR1cm4gcGFyc2VGbG9hdChhbW91bnRTdHJDb3B5KTtcbn1cblxuZnVuY3Rpb24gZ2V0VHhuQW1vdW50KHR4bjogU2NyYXBlZFRyYW5zYWN0aW9uKSB7XG4gIGNvbnN0IGNyZWRpdCA9IGdldEFtb3VudERhdGEodHhuLmNyZWRpdCk7XG4gIGNvbnN0IGRlYml0ID0gZ2V0QW1vdW50RGF0YSh0eG4uZGViaXQpO1xuICByZXR1cm4gKE51bWJlci5pc05hTihjcmVkaXQpID8gMCA6IGNyZWRpdCkgLSAoTnVtYmVyLmlzTmFOKGRlYml0KSA/IDAgOiBkZWJpdCk7XG59XG5cbnR5cGUgVHJhbnNhY3Rpb25zVHIgPSB7IGlkOiBzdHJpbmc7IGlubmVyRGl2czogc3RyaW5nW10gfTtcblxuZnVuY3Rpb24gY29udmVydFRyYW5zYWN0aW9ucyh0eG5zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXSwgb3B0aW9ucz86IFNjcmFwZXJPcHRpb25zKTogVHJhbnNhY3Rpb25bXSB7XG4gIHJldHVybiB0eG5zLm1hcCh0eG4gPT4ge1xuICAgIGNvbnN0IGNvbnZlcnRlZERhdGUgPSBtb21lbnQodHhuLmRhdGUsIERBVEVfRk9STUFUKS50b0lTT1N0cmluZygpO1xuICAgIGNvbnN0IGNvbnZlcnRlZEFtb3VudCA9IGdldFR4bkFtb3VudCh0eG4pO1xuICAgIGNvbnN0IHJlc3VsdDogVHJhbnNhY3Rpb24gPSB7XG4gICAgICB0eXBlOiBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbCxcbiAgICAgIGlkZW50aWZpZXI6IHR4bi5yZWZlcmVuY2UgPyBwYXJzZUludCh0eG4ucmVmZXJlbmNlLCAxMCkgOiB1bmRlZmluZWQsXG4gICAgICBkYXRlOiBjb252ZXJ0ZWREYXRlLFxuICAgICAgcHJvY2Vzc2VkRGF0ZTogY29udmVydGVkRGF0ZSxcbiAgICAgIG9yaWdpbmFsQW1vdW50OiBjb252ZXJ0ZWRBbW91bnQsXG4gICAgICBvcmlnaW5hbEN1cnJlbmN5OiBTSEVLRUxfQ1VSUkVOQ1ksXG4gICAgICBjaGFyZ2VkQW1vdW50OiBjb252ZXJ0ZWRBbW91bnQsXG4gICAgICBzdGF0dXM6IHR4bi5zdGF0dXMsXG4gICAgICBkZXNjcmlwdGlvbjogdHhuLmRlc2NyaXB0aW9uLFxuICAgICAgbWVtbzogdHhuLm1lbW8sXG4gICAgfTtcblxuICAgIGlmIChvcHRpb25zPy5pbmNsdWRlUmF3VHJhbnNhY3Rpb24pIHtcbiAgICAgIHJlc3VsdC5yYXdUcmFuc2FjdGlvbiA9IHR4bjtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9KTtcbn1cblxuZnVuY3Rpb24gaGFuZGxlVHJhbnNhY3Rpb25Sb3codHhuczogU2NyYXBlZFRyYW5zYWN0aW9uW10sIHR4blJvdzogVHJhbnNhY3Rpb25zVHIpIHtcbiAgY29uc3QgZGl2ID0gdHhuUm93LmlubmVyRGl2cztcblxuICAvLyBSZW1vdmUgYW55dGhpbmcgZXhjZXB0IGRpZ2l0cy5cbiAgY29uc3QgcmVnZXggPSAvXFxEKy9nbTtcblxuICBjb25zdCB0eDogU2NyYXBlZFRyYW5zYWN0aW9uID0ge1xuICAgIGRhdGU6IGRpdlsxXSxcbiAgICByZWZlcmVuY2U6IGRpdlsyXS5yZXBsYWNlKHJlZ2V4LCAnJyksXG4gICAgbWVtbzogJycsXG4gICAgZGVzY3JpcHRpb246IGRpdlszXSxcbiAgICBkZWJpdDogZGl2WzRdLFxuICAgIGNyZWRpdDogZGl2WzVdLFxuICAgIHN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcy5Db21wbGV0ZWQsXG4gIH07XG5cbiAgdHhucy5wdXNoKHR4KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QWNjb3VudFRyYW5zYWN0aW9ucyhwYWdlOiBQYWdlLCBvcHRpb25zPzogU2NyYXBlck9wdGlvbnMpOiBQcm9taXNlPFRyYW5zYWN0aW9uW10+IHtcbiAgLy8gV2FpdCBmb3IgdHJhbnNhY3Rpb25zLlxuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJy51bmRlci1saW5lLXR4bi10YWJsZS1oZWFkZXInLCB0cnVlKTtcblxuICBjb25zdCB0eG5zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXSA9IFtdO1xuICBjb25zdCB0cmFuc2FjdGlvbnNEaXZzID0gYXdhaXQgcGFnZUV2YWxBbGw8VHJhbnNhY3Rpb25zVHJbXT4oXG4gICAgcGFnZSxcbiAgICAnLmxpc3QtaXRlbS1ob2xkZXIgLmVudGlyZS1jb250ZW50LWN0cicsXG4gICAgW10sXG4gICAgZGl2cyA9PiB7XG4gICAgICByZXR1cm4gKGRpdnMgYXMgSFRNTEVsZW1lbnRbXSkubWFwKGRpdiA9PiAoe1xuICAgICAgICBpZDogZGl2LmdldEF0dHJpYnV0ZSgnaWQnKSB8fCAnJyxcbiAgICAgICAgaW5uZXJEaXZzOiBBcnJheS5mcm9tKGRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2JykpLm1hcChlbCA9PiAoZWwgYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dCksXG4gICAgICB9KSk7XG4gICAgfSxcbiAgKTtcblxuICBmb3IgKGNvbnN0IHR4blJvdyBvZiB0cmFuc2FjdGlvbnNEaXZzKSB7XG4gICAgaGFuZGxlVHJhbnNhY3Rpb25Sb3codHhucywgdHhuUm93KTtcbiAgfVxuXG4gIHJldHVybiBjb252ZXJ0VHJhbnNhY3Rpb25zKHR4bnMsIG9wdGlvbnMpO1xufVxuXG4vLyBNYW5pcHVsYXRlIHRoZSBjYWxlbmRhciBkcm9wIGRvd24gdG8gY2hvb3NlIHRoZSB0eHMgc3RhcnQgZGF0ZS5cbmFzeW5jIGZ1bmN0aW9uIHNlYXJjaEJ5RGF0ZXMocGFnZTogUGFnZSwgc3RhcnREYXRlOiBNb21lbnQpIHtcbiAgLy8gR2V0IHRoZSBkYXkgbnVtYmVyIGZyb20gc3RhcnREYXRlLiAxLTMxICh1c3VhbGx5IDEpXG4gIGNvbnN0IHN0YXJ0RGF0ZURheSA9IHN0YXJ0RGF0ZS5mb3JtYXQoJ0QnKTtcbiAgY29uc3Qgc3RhcnREYXRlTW9udGggPSBzdGFydERhdGUuZm9ybWF0KCdNJyk7XG4gIGNvbnN0IHN0YXJ0RGF0ZVllYXIgPSBzdGFydERhdGUuZm9ybWF0KCdZJyk7XG5cbiAgLy8gT3BlbiB0aGUgY2FsZW5kYXIgZGF0ZSBwaWNrZXJcbiAgY29uc3QgZGF0ZUZyb21QaWNrID1cbiAgICAnZGl2LmRhdGUtb3B0aW9ucy1jZWxsOm50aC1jaGlsZCg3KSA+IGRhdGUtcGlja2VyOm50aC1jaGlsZCgxKSA+IGRpdjpudGgtY2hpbGQoMSkgPiBzcGFuOm50aC1jaGlsZCgyKSc7XG4gIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCBkYXRlRnJvbVBpY2ssIHRydWUpO1xuICBhd2FpdCBjbGlja0J1dHRvbihwYWdlLCBkYXRlRnJvbVBpY2spO1xuXG4gIC8vIFdhaXQgdW50aWwgZmlyc3QgZGF5IGFwcGVhci5cbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICcucG11LWRheXMgPiBkaXY6bnRoLWNoaWxkKDEpJywgdHJ1ZSk7XG5cbiAgLy8gT3BlbiBNb250aHMgb3B0aW9ucy5cbiAgY29uc3QgbW9udGhGcm9tUGljayA9ICcucG11LW1vbnRoJztcbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsIG1vbnRoRnJvbVBpY2ssIHRydWUpO1xuICBhd2FpdCBjbGlja0J1dHRvbihwYWdlLCBtb250aEZyb21QaWNrKTtcbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICcucG11LW1vbnRocyA+IGRpdjpudGgtY2hpbGQoMSknLCB0cnVlKTtcblxuICAvLyBPcGVuIFllYXIgb3B0aW9ucy5cbiAgLy8gVXNlIHNhbWUgc2VsZWN0b3IuLi4gWWFoYXYga25vd3Mgd2h5Li4uXG4gIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCBtb250aEZyb21QaWNrLCB0cnVlKTtcbiAgYXdhaXQgY2xpY2tCdXR0b24ocGFnZSwgbW9udGhGcm9tUGljayk7XG4gIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCAnLnBtdS15ZWFycyA+IGRpdjpudGgtY2hpbGQoMSknLCB0cnVlKTtcblxuICAvLyBTZWxlY3QgeWVhciBmcm9tIGEgMTIgeWVhciBncmlkLlxuICBmb3IgKGxldCBpID0gMTsgaSA8IDEzOyBpICs9IDEpIHtcbiAgICBjb25zdCBzZWxlY3RvciA9IGAucG11LXllYXJzID4gZGl2Om50aC1jaGlsZCgke2l9KWA7XG4gICAgY29uc3QgeWVhciA9IGF3YWl0IHBhZ2UuJGV2YWwoc2VsZWN0b3IsIHkgPT4ge1xuICAgICAgcmV0dXJuICh5IGFzIEhUTUxFbGVtZW50KS5pbm5lclRleHQ7XG4gICAgfSk7XG4gICAgaWYgKHN0YXJ0RGF0ZVllYXIgPT09IHllYXIpIHtcbiAgICAgIGF3YWl0IGNsaWNrQnV0dG9uKHBhZ2UsIHNlbGVjdG9yKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNlbGVjdCBNb250aC5cbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICcucG11LW1vbnRocyA+IGRpdjpudGgtY2hpbGQoMSknLCB0cnVlKTtcbiAgLy8gVGhlIGZpcnN0IGVsZW1lbnQgKDEpIGlzIEphbnVhcnkuXG4gIGNvbnN0IG1vbnRoU2VsZWN0b3IgPSBgLnBtdS1tb250aHMgPiBkaXY6bnRoLWNoaWxkKCR7c3RhcnREYXRlTW9udGh9KWA7XG4gIGF3YWl0IGNsaWNrQnV0dG9uKHBhZ2UsIG1vbnRoU2VsZWN0b3IpO1xuXG4gIC8vIFNlbGVjdCBEYXkuXG4gIC8vIFRoZSBjYWxlbmRhciBncmlkIHNob3dzIDcgZGF5cyBhbmQgNiB3ZWVrcyA9IDQyIGRheXMuXG4gIC8vIEluIHRoZW9yeSwgdGhlIGZpcnN0IGRheSBvZiB0aGUgbW9udGggd2lsbCBiZSBpbiB0aGUgZmlyc3Qgcm93LlxuICAvLyBMZXQncyBjaGVjayBldmVyeXRoaW5nIGp1c3QgaW4gY2FzZS4uLlxuICBmb3IgKGxldCBpID0gMTsgaSA8IDQyOyBpICs9IDEpIHtcbiAgICBjb25zdCBzZWxlY3RvciA9IGAucG11LWRheXMgPiBkaXY6bnRoLWNoaWxkKCR7aX0pYDtcbiAgICBjb25zdCBkYXkgPSBhd2FpdCBwYWdlLiRldmFsKHNlbGVjdG9yLCBkID0+IHtcbiAgICAgIHJldHVybiAoZCBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0O1xuICAgIH0pO1xuXG4gICAgaWYgKHN0YXJ0RGF0ZURheSA9PT0gZGF5KSB7XG4gICAgICBhd2FpdCBjbGlja0J1dHRvbihwYWdlLCBzZWxlY3Rvcik7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hBY2NvdW50RGF0YShcbiAgcGFnZTogUGFnZSxcbiAgc3RhcnREYXRlOiBNb21lbnQsXG4gIGFjY291bnRJRDogc3RyaW5nLFxuICBvcHRpb25zPzogU2NyYXBlck9wdGlvbnMsXG4pOiBQcm9taXNlPFRyYW5zYWN0aW9uc0FjY291bnQ+IHtcbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudERpc2FwcGVhcihwYWdlLCAnLmxvYWRpbmctYmFyLXNwaW5uZXInKTtcbiAgYXdhaXQgc2VhcmNoQnlEYXRlcyhwYWdlLCBzdGFydERhdGUpO1xuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50RGlzYXBwZWFyKHBhZ2UsICcubG9hZGluZy1iYXItc3Bpbm5lcicpO1xuICBjb25zdCB0eG5zID0gYXdhaXQgZ2V0QWNjb3VudFRyYW5zYWN0aW9ucyhwYWdlLCBvcHRpb25zKTtcblxuICByZXR1cm4ge1xuICAgIGFjY291bnROdW1iZXI6IGFjY291bnRJRCxcbiAgICB0eG5zLFxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaEFjY291bnRzKHBhZ2U6IFBhZ2UsIHN0YXJ0RGF0ZTogTW9tZW50LCBvcHRpb25zPzogU2NyYXBlck9wdGlvbnMpOiBQcm9taXNlPFRyYW5zYWN0aW9uc0FjY291bnRbXT4ge1xuICBjb25zdCBhY2NvdW50czogVHJhbnNhY3Rpb25zQWNjb3VudFtdID0gW107XG5cbiAgLy8gVE9ETzogZ2V0IG1vcmUgYWNjb3VudHMuIE5vdCBzdXJlIGlzIHN1cHBvcnRlZC5cbiAgY29uc3QgYWNjb3VudElEID0gYXdhaXQgZ2V0QWNjb3VudElEKHBhZ2UpO1xuICBjb25zdCBhY2NvdW50RGF0YSA9IGF3YWl0IGZldGNoQWNjb3VudERhdGEocGFnZSwgc3RhcnREYXRlLCBhY2NvdW50SUQsIG9wdGlvbnMpO1xuICBhY2NvdW50cy5wdXNoKGFjY291bnREYXRhKTtcblxuICByZXR1cm4gYWNjb3VudHM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdhaXRSZWFkaW5lc3NGb3JBbGwocGFnZTogUGFnZSkge1xuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgYCR7VVNFUl9FTEVNfWAsIHRydWUpO1xuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgYCR7UEFTU1dEX0VMRU19YCwgdHJ1ZSk7XG4gIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCBgJHtOQVRJT05BTElEX0VMRU19YCwgdHJ1ZSk7XG4gIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCBgJHtTVUJNSVRfTE9HSU5fU0VMRUNUT1J9YCwgdHJ1ZSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlZGlyZWN0T3JEaWFsb2cocGFnZTogUGFnZSkge1xuICAvLyBDbGljayBvbiBiYW5rIG1lc3NhZ2VzIGlmIGFueS5cbiAgYXdhaXQgd2FpdEZvck5hdmlnYXRpb24ocGFnZSk7XG4gIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnREaXNhcHBlYXIocGFnZSwgJy5sb2FkaW5nLWJhci1zcGlubmVyJyk7XG4gIGNvbnN0IGhhc01lc3NhZ2UgPSBhd2FpdCBlbGVtZW50UHJlc2VudE9uUGFnZShwYWdlLCAnLm1lc3NhZ2luZy1saW5rcy1jb250YWluZXInKTtcbiAgaWYgKGhhc01lc3NhZ2UpIHtcbiAgICBhd2FpdCBjbGlja0J1dHRvbihwYWdlLCAnLmxpbmstMScpO1xuICB9XG5cbiAgY29uc3QgcHJvbWlzZTEgPSBwYWdlLndhaXRGb3JTZWxlY3RvcihBQ0NPVU5UX0RFVEFJTFNfU0VMRUNUT1IsIHsgdGltZW91dDogMzAwMDAgfSk7XG4gIGNvbnN0IHByb21pc2UyID0gcGFnZS53YWl0Rm9yU2VsZWN0b3IoQ0hBTkdFX1BBU1NXT1JEX09MRF9QQVNTLCB7IHRpbWVvdXQ6IDMwMDAwIH0pO1xuICBjb25zdCBwcm9taXNlcyA9IFtwcm9taXNlMSwgcHJvbWlzZTJdO1xuXG4gIGF3YWl0IFByb21pc2UucmFjZShwcm9taXNlcyk7XG4gIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnREaXNhcHBlYXIocGFnZSwgJy5sb2FkaW5nLWJhci1zcGlubmVyJyk7XG59XG5cbnR5cGUgU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMgPSB7IHVzZXJuYW1lOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmc7IG5hdGlvbmFsSUQ6IHN0cmluZyB9O1xuXG5jbGFzcyBZYWhhdlNjcmFwZXIgZXh0ZW5kcyBCYXNlU2NyYXBlcldpdGhCcm93c2VyPFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzPiB7XG4gIGdldExvZ2luT3B0aW9ucyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9naW5Vcmw6IGAke0xPR0lOX1VSTH1gLFxuICAgICAgZmllbGRzOiBbXG4gICAgICAgIHsgc2VsZWN0b3I6IGAke1VTRVJfRUxFTX1gLCB2YWx1ZTogY3JlZGVudGlhbHMudXNlcm5hbWUgfSxcbiAgICAgICAgeyBzZWxlY3RvcjogYCR7UEFTU1dEX0VMRU19YCwgdmFsdWU6IGNyZWRlbnRpYWxzLnBhc3N3b3JkIH0sXG4gICAgICAgIHsgc2VsZWN0b3I6IGAke05BVElPTkFMSURfRUxFTX1gLCB2YWx1ZTogY3JlZGVudGlhbHMubmF0aW9uYWxJRCB9LFxuICAgICAgXSxcbiAgICAgIHN1Ym1pdEJ1dHRvblNlbGVjdG9yOiBgJHtTVUJNSVRfTE9HSU5fU0VMRUNUT1J9YCxcbiAgICAgIGNoZWNrUmVhZGluZXNzOiBhc3luYyAoKSA9PiB3YWl0UmVhZGluZXNzRm9yQWxsKHRoaXMucGFnZSksXG4gICAgICBwb3N0QWN0aW9uOiBhc3luYyAoKSA9PiByZWRpcmVjdE9yRGlhbG9nKHRoaXMucGFnZSksXG4gICAgICBwb3NzaWJsZVJlc3VsdHM6IGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKHRoaXMucGFnZSksXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoRGF0YSgpIHtcbiAgICAvLyBHb3RvIHN0YXRlbWVudHMgcGFnZVxuICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsIEFDQ09VTlRfREVUQUlMU19TRUxFQ1RPUiwgdHJ1ZSk7XG4gICAgYXdhaXQgY2xpY2tCdXR0b24odGhpcy5wYWdlLCBBQ0NPVU5UX0RFVEFJTFNfU0VMRUNUT1IpO1xuICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsICcuc3RhdGVtZW50LW9wdGlvbnMgLnNlbGVjdGVkLWl0ZW0tdG9wJywgdHJ1ZSk7XG5cbiAgICBjb25zdCBkZWZhdWx0U3RhcnRNb21lbnQgPSBtb21lbnQoKS5zdWJ0cmFjdCgzLCAnbW9udGhzJykuYWRkKDEsICdkYXknKTtcbiAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLm9wdGlvbnMuc3RhcnREYXRlIHx8IGRlZmF1bHRTdGFydE1vbWVudC50b0RhdGUoKTtcbiAgICBjb25zdCBzdGFydE1vbWVudCA9IG1vbWVudC5tYXgoZGVmYXVsdFN0YXJ0TW9tZW50LCBtb21lbnQoc3RhcnREYXRlKSk7XG5cbiAgICBjb25zdCBhY2NvdW50cyA9IGF3YWl0IGZldGNoQWNjb3VudHModGhpcy5wYWdlLCBzdGFydE1vbWVudCwgdGhpcy5vcHRpb25zKTtcblxuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgYWNjb3VudHMsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBZYWhhdlNjcmFwZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFVBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLHFCQUFBLEdBQUFGLE9BQUE7QUFPQSxJQUFBRyxXQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxhQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyx1QkFBQSxHQUFBTCxPQUFBO0FBQThHLFNBQUFELHVCQUFBTyxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBRzlHLE1BQU1HLFNBQVMsR0FBRyxrQ0FBa0M7QUFDcEQsTUFBTUMsUUFBUSxHQUFHLDZEQUE2RDtBQUM5RSxNQUFNQyx3QkFBd0IsR0FBRyxvQkFBb0I7QUFDckQsTUFBTUMsd0JBQXdCLEdBQUcsdUNBQXVDO0FBQ3hFLE1BQU1DLGdCQUFnQixHQUFHLEdBQUdILFFBQVEsV0FBVztBQUUvQyxNQUFNSSxtQkFBbUIsR0FBRyw4RUFBOEU7QUFDMUcsTUFBTUMsd0JBQXdCLEdBQUcsa0JBQWtCO0FBQ25ELE1BQU1DLFdBQVcsR0FBRyxZQUFZO0FBRWhDLE1BQU1DLFNBQVMsR0FBRyxXQUFXO0FBQzdCLE1BQU1DLFdBQVcsR0FBRyxXQUFXO0FBQy9CLE1BQU1D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
@@ -44,4 +44,5 @@ export interface Transaction {
44
44
  status: TransactionStatuses;
45
45
  installments?: TransactionInstallments;
46
46
  category?: string;
47
+ rawTransaction?: unknown;
47
48
  }
@@ -14,4 +14,4 @@ let TransactionStatuses = exports.TransactionStatuses = /*#__PURE__*/function (T
14
14
  TransactionStatuses["Pending"] = "pending";
15
15
  return TransactionStatuses;
16
16
  }({});
17
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUcmFuc2FjdGlvblR5cGVzIiwiZXhwb3J0cyIsIlRyYW5zYWN0aW9uU3RhdHVzZXMiXSwic291cmNlcyI6WyIuLi9zcmMvdHJhbnNhY3Rpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25zQWNjb3VudCB7XG4gIGFjY291bnROdW1iZXI6IHN0cmluZztcbiAgYmFsYW5jZT86IG51bWJlcjtcbiAgdHhuczogVHJhbnNhY3Rpb25bXTtcbn1cblxuZXhwb3J0IGVudW0gVHJhbnNhY3Rpb25UeXBlcyB7XG4gIE5vcm1hbCA9ICdub3JtYWwnLFxuICBJbnN0YWxsbWVudHMgPSAnaW5zdGFsbG1lbnRzJyxcbn1cblxuZXhwb3J0IGVudW0gVHJhbnNhY3Rpb25TdGF0dXNlcyB7XG4gIENvbXBsZXRlZCA9ICdjb21wbGV0ZWQnLFxuICBQZW5kaW5nID0gJ3BlbmRpbmcnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zYWN0aW9uSW5zdGFsbG1lbnRzIHtcbiAgLyoqXG4gICAqIHRoZSBjdXJyZW50IGluc3RhbGxtZW50IG51bWJlclxuICAgKi9cbiAgbnVtYmVyOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIHRoZSB0b3RhbCBudW1iZXIgb2YgaW5zdGFsbG1lbnRzXG4gICAqL1xuICB0b3RhbDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zYWN0aW9uIHtcbiAgdHlwZTogVHJhbnNhY3Rpb25UeXBlcztcbiAgLyoqXG4gICAqIHNvbWV0aW1lcyBjYWxsZWQgQXNtYWNodGFcbiAgICovXG4gIGlkZW50aWZpZXI/OiBzdHJpbmcgfCBudW1iZXI7XG4gIC8qKlxuICAgKiBJU08gZGF0ZSBzdHJpbmdcbiAgICovXG4gIGRhdGU6IHN0cmluZztcbiAgLyoqXG4gICAqIElTTyBkYXRlIHN0cmluZ1xuICAgKi9cbiAgcHJvY2Vzc2VkRGF0ZTogc3RyaW5nO1xuICBvcmlnaW5hbEFtb3VudDogbnVtYmVyO1xuICBvcmlnaW5hbEN1cnJlbmN5OiBzdHJpbmc7XG4gIGNoYXJnZWRBbW91bnQ6IG51bWJlcjtcbiAgY2hhcmdlZEN1cnJlbmN5Pzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBtZW1vPzogc3RyaW5nO1xuICBzdGF0dXM6IFRyYW5zYWN0aW9uU3RhdHVzZXM7XG4gIGluc3RhbGxtZW50cz86IFRyYW5zYWN0aW9uSW5zdGFsbG1lbnRzO1xuICBjYXRlZ29yeT86IHN0cmluZztcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0lBTVlBLGdCQUFnQixHQUFBQyxPQUFBLENBQUFELGdCQUFBLDBCQUFoQkEsZ0JBQWdCO0VBQWhCQSxnQkFBZ0I7RUFBaEJBLGdCQUFnQjtFQUFBLE9BQWhCQSxnQkFBZ0I7QUFBQTtBQUFBLElBS2hCRSxtQkFBbUIsR0FBQUQsT0FBQSxDQUFBQyxtQkFBQSwwQkFBbkJBLG1CQUFtQjtFQUFuQkEsbUJBQW1CO0VBQW5CQSxtQkFBbUI7RUFBQSxPQUFuQkEsbUJBQW1CO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
17
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJUcmFuc2FjdGlvblR5cGVzIiwiZXhwb3J0cyIsIlRyYW5zYWN0aW9uU3RhdHVzZXMiXSwic291cmNlcyI6WyIuLi9zcmMvdHJhbnNhY3Rpb25zLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgVHJhbnNhY3Rpb25zQWNjb3VudCB7XG4gIGFjY291bnROdW1iZXI6IHN0cmluZztcbiAgYmFsYW5jZT86IG51bWJlcjtcbiAgdHhuczogVHJhbnNhY3Rpb25bXTtcbn1cblxuZXhwb3J0IGVudW0gVHJhbnNhY3Rpb25UeXBlcyB7XG4gIE5vcm1hbCA9ICdub3JtYWwnLFxuICBJbnN0YWxsbWVudHMgPSAnaW5zdGFsbG1lbnRzJyxcbn1cblxuZXhwb3J0IGVudW0gVHJhbnNhY3Rpb25TdGF0dXNlcyB7XG4gIENvbXBsZXRlZCA9ICdjb21wbGV0ZWQnLFxuICBQZW5kaW5nID0gJ3BlbmRpbmcnLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zYWN0aW9uSW5zdGFsbG1lbnRzIHtcbiAgLyoqXG4gICAqIHRoZSBjdXJyZW50IGluc3RhbGxtZW50IG51bWJlclxuICAgKi9cbiAgbnVtYmVyOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIHRoZSB0b3RhbCBudW1iZXIgb2YgaW5zdGFsbG1lbnRzXG4gICAqL1xuICB0b3RhbDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zYWN0aW9uIHtcbiAgdHlwZTogVHJhbnNhY3Rpb25UeXBlcztcbiAgLyoqXG4gICAqIHNvbWV0aW1lcyBjYWxsZWQgQXNtYWNodGFcbiAgICovXG4gIGlkZW50aWZpZXI/OiBzdHJpbmcgfCBudW1iZXI7XG4gIC8qKlxuICAgKiBJU08gZGF0ZSBzdHJpbmdcbiAgICovXG4gIGRhdGU6IHN0cmluZztcbiAgLyoqXG4gICAqIElTTyBkYXRlIHN0cmluZ1xuICAgKi9cbiAgcHJvY2Vzc2VkRGF0ZTogc3RyaW5nO1xuICBvcmlnaW5hbEFtb3VudDogbnVtYmVyO1xuICBvcmlnaW5hbEN1cnJlbmN5OiBzdHJpbmc7XG4gIGNoYXJnZWRBbW91bnQ6IG51bWJlcjtcbiAgY2hhcmdlZEN1cnJlbmN5Pzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBtZW1vPzogc3RyaW5nO1xuICBzdGF0dXM6IFRyYW5zYWN0aW9uU3RhdHVzZXM7XG4gIGluc3RhbGxtZW50cz86IFRyYW5zYWN0aW9uSW5zdGFsbG1lbnRzO1xuICBjYXRlZ29yeT86IHN0cmluZztcbiAgcmF3VHJhbnNhY3Rpb24/OiB1bmtub3duO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7SUFNWUEsZ0JBQWdCLEdBQUFDLE9BQUEsQ0FBQUQsZ0JBQUEsMEJBQWhCQSxnQkFBZ0I7RUFBaEJBLGdCQUFnQjtFQUFoQkEsZ0JBQWdCO0VBQUEsT0FBaEJBLGdCQUFnQjtBQUFBO0FBQUEsSUFLaEJFLG1CQUFtQixHQUFBRCxPQUFBLENBQUFDLG1CQUFBLDBCQUFuQkEsbUJBQW1CO0VBQW5CQSxtQkFBbUI7RUFBbkJBLG1CQUFtQjtFQUFBLE9BQW5CQSxtQkFBbUI7QUFBQSIsImlnbm9yZUxpc3QiOltdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "israeli-bank-scrapers",
3
- "version": "6.4.1",
3
+ "version": "6.5.0",
4
4
  "private": false,
5
5
  "description": "Provide scrapers for all major Israeli banks and credit card companies",
6
6
  "engines": {