israeli-bank-scrapers-core 6.3.3 → 6.3.4

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.
@@ -18,6 +18,10 @@ var _baseScraperWithBrowser = require("./base-scraper-with-browser");
18
18
  var _errors = require("./errors");
19
19
  var _browser = require("../helpers/browser");
20
20
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
21
+ const RATE_LIMIT = {
22
+ SLEEP_BETWEEN: 1000,
23
+ TRANSACTIONS_BATCH_SIZE: 10
24
+ };
21
25
  const COUNTRY_CODE = '212';
22
26
  const ID_TYPE = '1';
23
27
  const INSTALLMENTS_KEYWORD = 'תשלום';
@@ -34,6 +38,7 @@ function getAccountsUrl(servicesUrl, monthMoment) {
34
38
  }
35
39
  async function fetchAccounts(page, servicesUrl, monthMoment) {
36
40
  const dataUrl = getAccountsUrl(servicesUrl, monthMoment);
41
+ debug(`fetching accounts from ${dataUrl}`);
37
42
  const dataResult = await (0, _fetch.fetchGetWithinPage)(page, dataUrl);
38
43
  if (dataResult && _lodash.default.get(dataResult, 'Header.Status') === '1' && dataResult.DashboardMonthBean) {
39
44
  const {
@@ -111,6 +116,8 @@ function convertTransactions(txns, processedDate) {
111
116
  async function fetchTransactions(page, options, companyServiceOptions, startMoment, monthMoment) {
112
117
  const accounts = await fetchAccounts(page, companyServiceOptions.servicesUrl, monthMoment);
113
118
  const dataUrl = getTransactionsUrl(companyServiceOptions.servicesUrl, monthMoment);
119
+ await (0, _waiting.sleep)(RATE_LIMIT.SLEEP_BETWEEN);
120
+ debug(`fetching transactions from ${dataUrl} for month ${monthMoment.format('YYYY-MM')}`);
114
121
  const dataResult = await (0, _fetch.fetchGetWithinPage)(page, dataUrl);
115
122
  if (dataResult && _lodash.default.get(dataResult, 'Header.Status') === '1' && dataResult.CardsTransactionsListBean) {
116
123
  const accountTxns = {};
@@ -145,18 +152,14 @@ async function fetchTransactions(page, options, companyServiceOptions, startMome
145
152
  }
146
153
  return {};
147
154
  }
148
- function getTransactionExtraDetails(servicesUrl, month, accountIndex, transaction) {
149
- const moedChiuv = month.format('MMYYYY');
150
- const url = new URL(servicesUrl);
155
+ async function getExtraScrapTransaction(page, options, month, accountIndex, transaction) {
156
+ const url = new URL(options.servicesUrl);
151
157
  url.searchParams.set('reqName', 'PirteyIska_204');
152
158
  url.searchParams.set('CardIndex', accountIndex.toString());
153
159
  url.searchParams.set('shovarRatz', transaction.identifier.toString());
154
- url.searchParams.set('moedChiuv', moedChiuv);
155
- return url.toString();
156
- }
157
- async function getExtraScrapTransaction(page, options, month, accountIndex, transaction) {
158
- const dataUrl = getTransactionExtraDetails(options.servicesUrl, month, accountIndex, transaction);
159
- const data = await (0, _fetch.fetchGetWithinPage)(page, dataUrl);
160
+ url.searchParams.set('moedChiuv', month.format('MMYYYY'));
161
+ debug(`fetching extra scrap for transaction ${transaction.identifier} for month ${month.format('YYYY-MM')}`);
162
+ const data = await (0, _fetch.fetchGetWithinPage)(page, url.toString());
160
163
  if (!data) {
161
164
  return transaction;
162
165
  }
@@ -166,32 +169,40 @@ async function getExtraScrapTransaction(page, options, month, accountIndex, tran
166
169
  category: rawCategory.trim()
167
170
  };
168
171
  }
169
- function getExtraScrapTransactions(accountWithIndex, page, options, month) {
170
- const promises = accountWithIndex.txns.map(t => getExtraScrapTransaction(page, options, month, accountWithIndex.index, t));
171
- return Promise.all(promises);
172
- }
173
172
  async function getExtraScrapAccount(page, options, accountMap, month) {
174
- const promises = Object.keys(accountMap).map(async a => ({
175
- ...accountMap[a],
176
- txns: await getExtraScrapTransactions(accountMap[a], page, options, month)
177
- }));
178
- const accounts = await Promise.all(promises);
173
+ const accounts = [];
174
+ for (const account of Object.values(accountMap)) {
175
+ debug(`get extra scrap for ${account.accountNumber} with ${account.txns.length} transactions`, month.format('YYYY-MM'));
176
+ const txns = [];
177
+ for (const txnsChunk of _lodash.default.chunk(account.txns, RATE_LIMIT.TRANSACTIONS_BATCH_SIZE)) {
178
+ debug(`processing chunk of ${txnsChunk.length} transactions for account ${account.accountNumber}`);
179
+ const updatedTxns = await Promise.all(txnsChunk.map(t => getExtraScrapTransaction(page, options, month, account.index, t)));
180
+ await (0, _waiting.sleep)(RATE_LIMIT.SLEEP_BETWEEN);
181
+ txns.push(...updatedTxns);
182
+ }
183
+ accounts.push({
184
+ ...account,
185
+ txns
186
+ });
187
+ }
179
188
  return accounts.reduce((m, x) => ({
180
189
  ...m,
181
190
  [x.accountNumber]: x
182
191
  }), {});
183
192
  }
184
- function getExtraScrap(accountsWithIndex, page, options, allMonths) {
185
- const actions = accountsWithIndex.map((a, i) => () => getExtraScrapAccount(page, options, a, allMonths[i]));
186
- return (0, _waiting.runSerial)(actions);
193
+ async function getAdditionalTransactionInformation(scraperOptions, accountsWithIndex, page, options, allMonths) {
194
+ if (!scraperOptions.additionalTransactionInformation || scraperOptions.optInFeatures?.includes('isracard-amex:skipAdditionalTransactionInformation')) {
195
+ return accountsWithIndex;
196
+ }
197
+ return (0, _waiting.runSerial)(accountsWithIndex.map((a, i) => () => getExtraScrapAccount(page, options, a, allMonths[i])));
187
198
  }
188
199
  async function fetchAllTransactions(page, options, companyServiceOptions, startMoment) {
189
200
  const futureMonthsToScrape = options.futureMonthsToScrape ?? 1;
190
201
  const allMonths = (0, _dates.default)(startMoment, futureMonthsToScrape);
191
- const results = await Promise.all(allMonths.map(async monthMoment => {
202
+ const results = await (0, _waiting.runSerial)(allMonths.map(monthMoment => () => {
192
203
  return fetchTransactions(page, options, companyServiceOptions, startMoment, monthMoment);
193
204
  }));
194
- const finalResult = options.additionalTransactionInformation ? await getExtraScrap(results, page, companyServiceOptions, allMonths) : results;
205
+ const finalResult = await getAdditionalTransactionInformation(options, results, page, companyServiceOptions, allMonths);
195
206
  const combinedTxns = {};
196
207
  finalResult.forEach(result => {
197
208
  Object.keys(result).forEach(accountNumber => {
@@ -244,6 +255,7 @@ class IsracardAmexBaseScraper extends _baseScraperWithBrowser.BaseScraperWithBro
244
255
  checkLevel: '1',
245
256
  companyCode: this.companyCode
246
257
  };
258
+ debug('logging in with validate request');
247
259
  const validateResult = await (0, _fetch.fetchPostWithinPage)(this.page, validateUrl, validateRequest);
248
260
  if (!validateResult || !validateResult.Header || validateResult.Header.Status !== '1' || !validateResult.ValidateIdDataBean) {
249
261
  throw new Error('unknown error during login');
@@ -263,8 +275,9 @@ class IsracardAmexBaseScraper extends _baseScraperWithBrowser.BaseScraperWithBro
263
275
  countryCode: COUNTRY_CODE,
264
276
  idType: ID_TYPE
265
277
  };
278
+ debug('user login started');
266
279
  const loginResult = await (0, _fetch.fetchPostWithinPage)(this.page, loginUrl, request);
267
- debug(`user login with status '${loginResult?.status}'`);
280
+ debug(`user login with status '${loginResult?.status}'`, loginResult);
268
281
  if (loginResult && loginResult.status === '1') {
269
282
  this.emitProgress(_definitions.ScraperProgressTypes.LoginSuccess);
270
283
  return {
@@ -308,4 +321,4 @@ class IsracardAmexBaseScraper extends _baseScraperWithBrowser.BaseScraperWithBro
308
321
  }
309
322
  }
310
323
  var _default = exports.default = IsracardAmexBaseScraper;
311
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbW9tZW50IiwiX2NvbnN0YW50cyIsIl9kZWZpbml0aW9ucyIsIl9kYXRlcyIsIl9kZWJ1ZyIsIl9mZXRjaCIsIl90cmFuc2FjdGlvbnMiLCJfd2FpdGluZyIsIl90cmFuc2FjdGlvbnMyIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJfZXJyb3JzIiwiX2Jyb3dzZXIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJDT1VOVFJZX0NPREUiLCJJRF9UWVBFIiwiSU5TVEFMTE1FTlRTX0tFWVdPUkQiLCJEQVRFX0ZPUk1BVCIsImRlYnVnIiwiZ2V0RGVidWciLCJnZXRBY2NvdW50c1VybCIsInNlcnZpY2VzVXJsIiwibW9udGhNb21lbnQiLCJiaWxsaW5nRGF0ZSIsImZvcm1hdCIsInVybCIsIlVSTCIsInNlYXJjaFBhcmFtcyIsInNldCIsInRvU3RyaW5nIiwiZmV0Y2hBY2NvdW50cyIsInBhZ2UiLCJkYXRhVXJsIiwiZGF0YVJlc3VsdCIsImZldGNoR2V0V2l0aGluUGFnZSIsIl8iLCJnZXQiLCJEYXNoYm9hcmRNb250aEJlYW4iLCJjYXJkc0NoYXJnZXMiLCJtYXAiLCJjYXJkQ2hhcmdlIiwiaW5kZXgiLCJwYXJzZUludCIsImNhcmRJbmRleCIsImFjY291bnROdW1iZXIiLCJjYXJkTnVtYmVyIiwicHJvY2Vzc2VkRGF0ZSIsIm1vbWVudCIsInRvSVNPU3RyaW5nIiwiZ2V0VHJhbnNhY3Rpb25zVXJsIiwibW9udGgiLCJ5ZWFyIiwibW9udGhTdHIiLCJjb252ZXJ0Q3VycmVuY3kiLCJjdXJyZW5jeVN0ciIsIlNIRUtFTF9DVVJSRU5DWV9LRVlXT1JEIiwiQUxUX1NIRUtFTF9DVVJSRU5DWSIsIlNIRUtFTF9DVVJSRU5DWSIsImdldEluc3RhbGxtZW50c0luZm8iLCJ0eG4iLCJtb3JlSW5mbyIsImluY2x1ZGVzIiwidW5kZWZpbmVkIiwibWF0Y2hlcyIsIm1hdGNoIiwibGVuZ3RoIiwibnVtYmVyIiwidG90YWwiLCJnZXRUcmFuc2FjdGlvblR5cGUiLCJUcmFuc2FjdGlvblR5cGVzIiwiSW5zdGFsbG1lbnRzIiwiTm9ybWFsIiwiY29udmVydFRyYW5zYWN0aW9ucyIsInR4bnMiLCJmaWx0ZXJlZFR4bnMiLCJmaWx0ZXIiLCJkZWFsU3VtVHlwZSIsInZvdWNoZXJOdW1iZXJSYXR6Iiwidm91Y2hlck51bWJlclJhdHpPdXRib3VuZCIsImlzT3V0Ym91bmQiLCJkZWFsU3VtT3V0Ym91bmQiLCJ0eG5EYXRlU3RyIiwiZnVsbFB1cmNoYXNlRGF0ZU91dGJvdW5kIiwiZnVsbFB1cmNoYXNlRGF0ZSIsInR4bk1vbWVudCIsImN1cnJlbnRQcm9jZXNzZWREYXRlIiwiZnVsbFBheW1lbnREYXRlIiwicmVzdWx0IiwidHlwZSIsImlkZW50aWZpZXIiLCJkYXRlIiwib3JpZ2luYWxBbW91bnQiLCJkZWFsU3VtIiwib3JpZ2luYWxDdXJyZW5jeSIsImN1cnJlbnRQYXltZW50Q3VycmVuY3kiLCJjdXJyZW5jeUlkIiwiY2hhcmdlZEFtb3VudCIsInBheW1lbnRTdW1PdXRib3VuZCIsInBheW1lbnRTdW0iLCJjaGFyZ2VkQ3VycmVuY3kiLCJkZXNjcmlwdGlvbiIsImZ1bGxTdXBwbGllck5hbWVPdXRib3VuZCIsImZ1bGxTdXBwbGllck5hbWVIZWIiLCJtZW1vIiwiaW5zdGFsbG1lbnRzIiwic3RhdHVzIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIkNvbXBsZXRlZCIsImZldGNoVHJhbnNhY3Rpb25zIiwib3B0aW9ucyIsImNvbXBhbnlTZXJ2aWNlT3B0aW9ucyIsInN0YXJ0TW9tZW50IiwiYWNjb3VudHMiLCJDYXJkc1RyYW5zYWN0aW9uc0xpc3RCZWFuIiwiYWNjb3VudFR4bnMiLCJmb3JFYWNoIiwiYWNjb3VudCIsInR4bkdyb3VwcyIsImFsbFR4bnMiLCJ0eG5Hcm91cCIsInR4bklzcmFlbCIsInB1c2giLCJ0eG5BYnJvYWQiLCJjb21iaW5lSW5zdGFsbG1lbnRzIiwiZml4SW5zdGFsbG1lbnRzIiwib3V0cHV0RGF0YSIsImVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZSIsImZpbHRlck9sZFRyYW5zYWN0aW9ucyIsImdldFRyYW5zYWN0aW9uRXh0cmFEZXRhaWxzIiwiYWNjb3VudEluZGV4IiwidHJhbnNhY3Rpb24iLCJtb2VkQ2hpdXYiLCJnZXRFeHRyYVNjcmFwVHJhbnNhY3Rpb24iLCJkYXRhIiwicmF3Q2F0ZWdvcnkiLCJjYXRlZ29yeSIsInRyaW0iLCJnZXRFeHRyYVNjcmFwVHJhbnNhY3Rpb25zIiwiYWNjb3VudFdpdGhJbmRleCIsInByb21pc2VzIiwidCIsIlByb21pc2UiLCJhbGwiLCJnZXRFeHRyYVNjcmFwQWNjb3VudCIsImFjY291bnRNYXAiLCJPYmplY3QiLCJrZXlzIiwiYSIsInJlZHVjZSIsIm0iLCJ4IiwiZ2V0RXh0cmFTY3JhcCIsImFjY291bnRzV2l0aEluZGV4IiwiYWxsTW9udGhzIiwiYWN0aW9ucyIsImkiLCJydW5TZXJpYWwiLCJmZXRjaEFsbFRyYW5zYWN0aW9ucyIsImZ1dHVyZU1vbnRoc1RvU2NyYXBlIiwiZ2V0QWxsTW9udGhNb21lbnRzIiwicmVzdWx0cyIsImZpbmFsUmVzdWx0IiwiYWRkaXRpb25hbFRyYW5zYWN0aW9uSW5mb3JtYXRpb24iLCJjb21iaW5lZFR4bnMiLCJ0eG5zRm9yQWNjb3VudCIsInRvQmVBZGRlZFR4bnMiLCJzdWNjZXNzIiwiSXNyYWNhcmRBbWV4QmFzZVNjcmFwZXIiLCJCYXNlU2NyYXBlcldpdGhCcm93c2VyIiwiY29uc3RydWN0b3IiLCJiYXNlVXJsIiwiY29tcGFueUNvZGUiLCJsb2dpbiIsImNyZWRlbnRpYWxzIiwic2V0UmVxdWVzdEludGVyY2VwdGlvbiIsIm9uIiwicmVxdWVzdCIsImFib3J0IiwiaW50ZXJjZXB0aW9uUHJpb3JpdGllcyIsImNvbnRpbnVlIiwibWFza0hlYWRsZXNzVXNlckFnZW50IiwibmF2aWdhdGVUbyIsImVtaXRQcm9ncmVzcyIsIlNjcmFwZXJQcm9ncmVzc1R5cGVzIiwiTG9nZ2luZ0luIiwidmFsaWRhdGVVcmwiLCJ2YWxpZGF0ZVJlcXVlc3QiLCJpZCIsImNhcmRTdWZmaXgiLCJjYXJkNkRpZ2l0cyIsImNvdW50cnlDb2RlIiwiaWRUeXBlIiwiY2hlY2tMZXZlbCIsInZhbGlkYXRlUmVzdWx0IiwiZmV0Y2hQb3N0V2l0aGluUGFnZSIsIkhlYWRlciIsIlN0YXR1cyIsIlZhbGlkYXRlSWREYXRhQmVhbiIsIkVycm9yIiwidmFsaWRhdGVSZXR1cm5Db2RlIiwicmV0dXJuQ29kZSIsInVzZXJOYW1lIiwibG9naW5VcmwiLCJLb2RNaXNodGFtZXNoIiwiTWlzcGFyWmlodXkiLCJTaXNtYSIsInBhc3N3b3JkIiwibG9naW5SZXN1bHQiLCJMb2dpblN1Y2Nlc3MiLCJDaGFuZ2VQYXNzd29yZCIsImVycm9yVHlwZSIsIlNjcmFwZXJFcnJvclR5cGVzIiwiTG9naW5GYWlsZWQiLCJJbnZhbGlkUGFzc3dvcmQiLCJmZXRjaERhdGEiLCJkZWZhdWx0U3RhcnRNb21lbnQiLCJzdWJ0cmFjdCIsInN0YXJ0RGF0ZSIsInRvRGF0ZSIsIm1heCIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9iYXNlLWlzcmFjYXJkLWFtZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBtb21lbnQsIHsgdHlwZSBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgdHlwZSBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyLWNvcmUnO1xuaW1wb3J0IHsgQUxUX1NIRUtFTF9DVVJSRU5DWSwgU0hFS0VMX0NVUlJFTkNZLCBTSEVLRUxfQ1VSUkVOQ1lfS0VZV09SRCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBTY3JhcGVyUHJvZ3Jlc3NUeXBlcyB9IGZyb20gJy4uL2RlZmluaXRpb25zJztcbmltcG9ydCBnZXRBbGxNb250aE1vbWVudHMgZnJvbSAnLi4vaGVscGVycy9kYXRlcyc7XG5pbXBvcnQgeyBnZXREZWJ1ZyB9IGZyb20gJy4uL2hlbHBlcnMvZGVidWcnO1xuaW1wb3J0IHsgZmV0Y2hHZXRXaXRoaW5QYWdlLCBmZXRjaFBvc3RXaXRoaW5QYWdlIH0gZnJvbSAnLi4vaGVscGVycy9mZXRjaCc7XG5pbXBvcnQgeyBmaWx0ZXJPbGRUcmFuc2FjdGlvbnMsIGZpeEluc3RhbGxtZW50cyB9IGZyb20gJy4uL2hlbHBlcnMvdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IHJ1blNlcmlhbCB9IGZyb20gJy4uL2hlbHBlcnMvd2FpdGluZyc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvblN0YXR1c2VzLFxuICBUcmFuc2FjdGlvblR5cGVzLFxuICB0eXBlIFRyYW5zYWN0aW9uLFxuICB0eXBlIFRyYW5zYWN0aW9uSW5zdGFsbG1lbnRzLFxuICB0eXBlIFRyYW5zYWN0aW9uc0FjY291bnQsXG59IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBCYXNlU2NyYXBlcldpdGhCcm93c2VyIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXItd2l0aC1icm93c2VyJztcbmltcG9ydCB7IFNjcmFwZXJFcnJvclR5cGVzIH0gZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IHsgdHlwZSBTY3JhcGVyT3B0aW9ucywgdHlwZSBTY3JhcGVyU2NyYXBpbmdSZXN1bHQgfSBmcm9tICcuL2ludGVyZmFjZSc7XG5pbXBvcnQgeyBpbnRlcmNlcHRpb25Qcmlvcml0aWVzLCBtYXNrSGVhZGxlc3NVc2VyQWdlbnQgfSBmcm9tICcuLi9oZWxwZXJzL2Jyb3dzZXInO1xuXG5jb25zdCBDT1VOVFJZX0NPREUgPSAnMjEyJztcbmNvbnN0IElEX1RZUEUgPSAnMSc7XG5jb25zdCBJTlNUQUxMTUVOVFNfS0VZV09SRCA9ICfXqtep15zXldedJztcblxuY29uc3QgREFURV9GT1JNQVQgPSAnREQvTU0vWVlZWSc7XG5cbmNvbnN0IGRlYnVnID0gZ2V0RGVidWcoJ2Jhc2UtaXNyYWNhcmQtYW1leCcpO1xuXG50eXBlIENvbXBhbnlTZXJ2aWNlT3B0aW9ucyA9IHtcbiAgc2VydmljZXNVcmw6IHN0cmluZztcbiAgY29tcGFueUNvZGU6IHN0cmluZztcbn07XG5cbnR5cGUgU2NyYXBlZEFjY291bnRzV2l0aEluZGV4ID0gUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25zQWNjb3VudCAmIHsgaW5kZXg6IG51bWJlciB9PjtcblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbiB7XG4gIGRlYWxTdW1UeXBlOiBzdHJpbmc7XG4gIHZvdWNoZXJOdW1iZXJSYXR6T3V0Ym91bmQ6IHN0cmluZztcbiAgdm91Y2hlck51bWJlclJhdHo6IHN0cmluZztcbiAgbW9yZUluZm8/OiBzdHJpbmc7XG4gIGRlYWxTdW1PdXRib3VuZDogYm9vbGVhbjtcbiAgY3VycmVuY3lJZDogc3RyaW5nO1xuICBjdXJyZW50UGF5bWVudEN1cnJlbmN5OiBzdHJpbmc7XG4gIGRlYWxTdW06IG51bWJlcjtcbiAgZnVsbFBheW1lbnREYXRlPzogc3RyaW5nO1xuICBmdWxsUHVyY2hhc2VEYXRlPzogc3RyaW5nO1xuICBmdWxsUHVyY2hhc2VEYXRlT3V0Ym91bmQ/OiBzdHJpbmc7XG4gIGZ1bGxTdXBwbGllck5hbWVIZWI6IHN0cmluZztcbiAgZnVsbFN1cHBsaWVyTmFtZU91dGJvdW5kOiBzdHJpbmc7XG4gIHBheW1lbnRTdW06IG51bWJlcjtcbiAgcGF5bWVudFN1bU91dGJvdW5kOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBTY3JhcGVkQWNjb3VudCB7XG4gIGluZGV4OiBudW1iZXI7XG4gIGFjY291bnROdW1iZXI6IHN0cmluZztcbiAgcHJvY2Vzc2VkRGF0ZTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgU2NyYXBlZExvZ2luVmFsaWRhdGlvbiB7XG4gIEhlYWRlcjoge1xuICAgIFN0YXR1czogc3RyaW5nO1xuICB9O1xuICBWYWxpZGF0ZUlkRGF0YUJlYW4/OiB7XG4gICAgdXNlck5hbWU/OiBzdHJpbmc7XG4gICAgcmV0dXJuQ29kZTogc3RyaW5nO1xuICB9O1xufVxuXG5pbnRlcmZhY2UgU2NyYXBlZEFjY291bnRzV2l0aGluUGFnZVJlc3BvbnNlIHtcbiAgSGVhZGVyOiB7XG4gICAgU3RhdHVzOiBzdHJpbmc7XG4gIH07XG4gIERhc2hib2FyZE1vbnRoQmVhbj86IHtcbiAgICBjYXJkc0NoYXJnZXM6IHtcbiAgICAgIGNhcmRJbmRleDogc3RyaW5nO1xuICAgICAgY2FyZE51bWJlcjogc3RyaW5nO1xuICAgICAgYmlsbGluZ0RhdGU6IHN0cmluZztcbiAgICB9W107XG4gIH07XG59XG5cbmludGVyZmFjZSBTY3JhcGVkQ3VycmVudENhcmRUcmFuc2FjdGlvbnMge1xuICB0eG5Jc3JhZWw/OiBTY3JhcGVkVHJhbnNhY3Rpb25bXTtcbiAgdHhuQWJyb2FkPzogU2NyYXBlZFRyYW5zYWN0aW9uW107XG59XG5cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb25EYXRhIHtcbiAgSGVhZGVyPzoge1xuICAgIFN0YXR1czogc3RyaW5nO1xuICB9O1xuICBQaXJ0ZXlJc2thXzIwNEJlYW4/OiB7XG4gICAgc2VjdG9yOiBzdHJpbmc7XG4gIH07XG5cbiAgQ2FyZHNUcmFuc2FjdGlvbnNMaXN0QmVhbj86IFJlY29yZDxcbiAgICBzdHJpbmcsXG4gICAge1xuICAgICAgQ3VycmVudENhcmRUcmFuc2FjdGlvbnM6IFNjcmFwZWRDdXJyZW50Q2FyZFRyYW5zYWN0aW9uc1tdO1xuICAgIH1cbiAgPjtcbn1cblxuZnVuY3Rpb24gZ2V0QWNjb3VudHNVcmwoc2VydmljZXNVcmw6IHN0cmluZywgbW9udGhNb21lbnQ6IE1vbWVudCkge1xuICBjb25zdCBiaWxsaW5nRGF0ZSA9IG1vbnRoTW9tZW50LmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xuICBjb25zdCB1cmwgPSBuZXcgVVJMKHNlcnZpY2VzVXJsKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3JlcU5hbWUnLCAnRGFzaGJvYXJkTW9udGgnKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ2FjdGlvbkNvZGUnLCAnMCcpO1xuICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnYmlsbGluZ0RhdGUnLCBiaWxsaW5nRGF0ZSk7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdmb3JtYXQnLCAnSnNvbicpO1xuICByZXR1cm4gdXJsLnRvU3RyaW5nKCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoQWNjb3VudHMocGFnZTogUGFnZSwgc2VydmljZXNVcmw6IHN0cmluZywgbW9udGhNb21lbnQ6IE1vbWVudCk6IFByb21pc2U8U2NyYXBlZEFjY291bnRbXT4ge1xuICBjb25zdCBkYXRhVXJsID0gZ2V0QWNjb3VudHNVcmwoc2VydmljZXNVcmwsIG1vbnRoTW9tZW50KTtcbiAgY29uc3QgZGF0YVJlc3VsdCA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxTY3JhcGVkQWNjb3VudHNXaXRoaW5QYWdlUmVzcG9uc2U+KHBhZ2UsIGRhdGFVcmwpO1xuICBpZiAoZGF0YVJlc3VsdCAmJiBfLmdldChkYXRhUmVzdWx0LCAnSGVhZGVyLlN0YXR1cycpID09PSAnMScgJiYgZGF0YVJlc3VsdC5EYXNoYm9hcmRNb250aEJlYW4pIHtcbiAgICBjb25zdCB7IGNhcmRzQ2hhcmdlcyB9ID0gZGF0YVJlc3VsdC5EYXNoYm9hcmRNb250aEJlYW47XG4gICAgaWYgKGNhcmRzQ2hhcmdlcykge1xuICAgICAgcmV0dXJuIGNhcmRzQ2hhcmdlcy5tYXAoY2FyZENoYXJnZSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaW5kZXg6IHBhcnNlSW50KGNhcmRDaGFyZ2UuY2FyZEluZGV4LCAxMCksXG4gICAgICAgICAgYWNjb3VudE51bWJlcjogY2FyZENoYXJnZS5jYXJkTnVtYmVyLFxuICAgICAgICAgIHByb2Nlc3NlZERhdGU6IG1vbWVudChjYXJkQ2hhcmdlLmJpbGxpbmdEYXRlLCBEQVRFX0ZPUk1BVCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gW107XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uc1VybChzZXJ2aWNlc1VybDogc3RyaW5nLCBtb250aE1vbWVudDogTW9tZW50KSB7XG4gIGNvbnN0IG1vbnRoID0gbW9udGhNb21lbnQubW9udGgoKSArIDE7XG4gIGNvbnN0IHllYXIgPSBtb250aE1vbWVudC55ZWFyKCk7XG4gIGNvbnN0IG1vbnRoU3RyID0gbW9udGggPCAxMCA/IGAwJHttb250aH1gIDogbW9udGgudG9TdHJpbmcoKTtcbiAgY29uc3QgdXJsID0gbmV3IFVSTChzZXJ2aWNlc1VybCk7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdyZXFOYW1lJywgJ0NhcmRzVHJhbnNhY3Rpb25zTGlzdCcpO1xuICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnbW9udGgnLCBtb250aFN0cik7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KCd5ZWFyJywgYCR7eWVhcn1gKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3JlcXVpcmVkRGF0ZScsICdOJyk7XG4gIHJldHVybiB1cmwudG9TdHJpbmcoKTtcbn1cblxuZnVuY3Rpb24gY29udmVydEN1cnJlbmN5KGN1cnJlbmN5U3RyOiBzdHJpbmcpIHtcbiAgaWYgKGN1cnJlbmN5U3RyID09PSBTSEVLRUxfQ1VSUkVOQ1lfS0VZV09SRCB8fCBjdXJyZW5jeVN0ciA9PT0gQUxUX1NIRUtFTF9DVVJSRU5DWSkge1xuICAgIHJldHVybiBTSEVLRUxfQ1VSUkVOQ1k7XG4gIH1cbiAgcmV0dXJuIGN1cnJlbmN5U3RyO1xufVxuXG5mdW5jdGlvbiBnZXRJbnN0YWxsbWVudHNJbmZvKHR4bjogU2NyYXBlZFRyYW5zYWN0aW9uKTogVHJhbnNhY3Rpb25JbnN0YWxsbWVudHMgfCB1bmRlZmluZWQge1xuICBpZiAoIXR4bi5tb3JlSW5mbyB8fCAhdHhuLm1vcmVJbmZvLmluY2x1ZGVzKElOU1RBTExNRU5UU19LRVlXT1JEKSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgbWF0Y2hlcyA9IHR4bi5tb3JlSW5mby5tYXRjaCgvXFxkKy9nKTtcbiAgaWYgKCFtYXRjaGVzIHx8IG1hdGNoZXMubGVuZ3RoIDwgMikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG51bWJlcjogcGFyc2VJbnQobWF0Y2hlc1swXSwgMTApLFxuICAgIHRvdGFsOiBwYXJzZUludChtYXRjaGVzWzFdLCAxMCksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uVHlwZSh0eG46IFNjcmFwZWRUcmFuc2FjdGlvbikge1xuICByZXR1cm4gZ2V0SW5zdGFsbG1lbnRzSW5mbyh0eG4pID8gVHJhbnNhY3Rpb25UeXBlcy5JbnN0YWxsbWVudHMgOiBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbDtcbn1cblxuZnVuY3Rpb24gY29udmVydFRyYW5zYWN0aW9ucyh0eG5zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXSwgcHJvY2Vzc2VkRGF0ZTogc3RyaW5nKTogVHJhbnNhY3Rpb25bXSB7XG4gIGNvbnN0IGZpbHRlcmVkVHhucyA9IHR4bnMuZmlsdGVyKFxuICAgIHR4biA9PlxuICAgICAgdHhuLmRlYWxTdW1UeXBlICE9PSAnMScgJiYgdHhuLnZvdWNoZXJOdW1iZXJSYXR6ICE9PSAnMDAwMDAwMDAwJyAmJiB0eG4udm91Y2hlck51bWJlclJhdHpPdXRib3VuZCAhPT0gJzAwMDAwMDAwMCcsXG4gICk7XG5cbiAgcmV0dXJuIGZpbHRlcmVkVHhucy5tYXAodHhuID0+IHtcbiAgICBjb25zdCBpc091dGJvdW5kID0gdHhuLmRlYWxTdW1PdXRib3VuZDtcbiAgICBjb25zdCB0eG5EYXRlU3RyID0gaXNPdXRib3VuZCA/IHR4bi5mdWxsUHVyY2hhc2VEYXRlT3V0Ym91bmQgOiB0eG4uZnVsbFB1cmNoYXNlRGF0ZTtcbiAgICBjb25zdCB0eG5Nb21lbnQgPSBtb21lbnQodHhuRGF0ZVN0ciwgREFURV9GT1JNQVQpO1xuXG4gICAgY29uc3QgY3VycmVudFByb2Nlc3NlZERhdGUgPSB0eG4uZnVsbFBheW1lbnREYXRlXG4gICAgICA/IG1vbWVudCh0eG4uZnVsbFBheW1lbnREYXRlLCBEQVRFX0ZPUk1BVCkudG9JU09TdHJpbmcoKVxuICAgICAgOiBwcm9jZXNzZWREYXRlO1xuICAgIGNvbnN0IHJlc3VsdDogVHJhbnNhY3Rpb24gPSB7XG4gICAgICB0eXBlOiBnZXRUcmFuc2FjdGlvblR5cGUodHhuKSxcbiAgICAgIGlkZW50aWZpZXI6IHBhcnNlSW50KGlzT3V0Ym91bmQgPyB0eG4udm91Y2hlck51bWJlclJhdHpPdXRib3VuZCA6IHR4bi52b3VjaGVyTnVtYmVyUmF0eiwgMTApLFxuICAgICAgZGF0ZTogdHhuTW9tZW50LnRvSVNPU3RyaW5nKCksXG4gICAgICBwcm9jZXNzZWREYXRlOiBjdXJyZW50UHJvY2Vzc2VkRGF0ZSxcbiAgICAgIG9yaWdpbmFsQW1vdW50OiBpc091dGJvdW5kID8gLXR4bi5kZWFsU3VtT3V0Ym91bmQgOiAtdHhuLmRlYWxTdW0sXG4gICAgICBvcmlnaW5hbEN1cnJlbmN5OiBjb252ZXJ0Q3VycmVuY3kodHhuLmN1cnJlbnRQYXltZW50Q3VycmVuY3kgPz8gdHhuLmN1cnJlbmN5SWQpLFxuICAgICAgY2hhcmdlZEFtb3VudDogaXNPdXRib3VuZCA/IC10eG4ucGF5bWVudFN1bU91dGJvdW5kIDogLXR4bi5wYXltZW50U3VtLFxuICAgICAgY2hhcmdlZEN1cnJlbmN5OiBjb252ZXJ0Q3VycmVuY3kodHhuLmN1cnJlbmN5SWQpLFxuICAgICAgZGVzY3JpcHRpb246IGlzT3V0Ym91bmQgPyB0eG4uZnVsbFN1cHBsaWVyTmFtZU91dGJvdW5kIDogdHhuLmZ1bGxTdXBwbGllck5hbWVIZWIsXG4gICAgICBtZW1vOiB0eG4ubW9yZUluZm8gfHwgJycsXG4gICAgICBpbnN0YWxsbWVudHM6IGdldEluc3RhbGxtZW50c0luZm8odHhuKSB8fCB1bmRlZmluZWQsXG4gICAgICBzdGF0dXM6IFRyYW5zYWN0aW9uU3RhdHVzZXMuQ29tcGxldGVkLFxuICAgIH07XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hUcmFuc2FjdGlvbnMoXG4gIHBhZ2U6IFBhZ2UsXG4gIG9wdGlvbnM6IFNjcmFwZXJPcHRpb25zLFxuICBjb21wYW55U2VydmljZU9wdGlvbnM6IENvbXBhbnlTZXJ2aWNlT3B0aW9ucyxcbiAgc3RhcnRNb21lbnQ6IE1vbWVudCxcbiAgbW9udGhNb21lbnQ6IE1vbWVudCxcbik6IFByb21pc2U8U2NyYXBlZEFjY291bnRzV2l0aEluZGV4PiB7XG4gIGNvbnN0IGFjY291bnRzID0gYXdhaXQgZmV0Y2hBY2NvdW50cyhwYWdlLCBjb21wYW55U2VydmljZU9wdGlvbnMuc2VydmljZXNVcmwsIG1vbnRoTW9tZW50KTtcbiAgY29uc3QgZGF0YVVybCA9IGdldFRyYW5zYWN0aW9uc1VybChjb21wYW55U2VydmljZU9wdGlvbnMuc2VydmljZXNVcmwsIG1vbnRoTW9tZW50KTtcbiAgY29uc3QgZGF0YVJlc3VsdCA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxTY3JhcGVkVHJhbnNhY3Rpb25EYXRhPihwYWdlLCBkYXRhVXJsKTtcbiAgaWYgKGRhdGFSZXN1bHQgJiYgXy5nZXQoZGF0YVJlc3VsdCwgJ0hlYWRlci5TdGF0dXMnKSA9PT0gJzEnICYmIGRhdGFSZXN1bHQuQ2FyZHNUcmFuc2FjdGlvbnNMaXN0QmVhbikge1xuICAgIGNvbnN0IGFjY291bnRUeG5zOiBTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXggPSB7fTtcbiAgICBhY2NvdW50cy5mb3JFYWNoKGFjY291bnQgPT4ge1xuICAgICAgY29uc3QgdHhuR3JvdXBzOiBTY3JhcGVkQ3VycmVudENhcmRUcmFuc2FjdGlvbnNbXSB8IHVuZGVmaW5lZCA9IF8uZ2V0KFxuICAgICAgICBkYXRhUmVzdWx0LFxuICAgICAgICBgQ2FyZHNUcmFuc2FjdGlvbnNMaXN0QmVhbi5JbmRleCR7YWNjb3VudC5pbmRleH0uQ3VycmVudENhcmRUcmFuc2FjdGlvbnNgLFxuICAgICAgKTtcbiAgICAgIGlmICh0eG5Hcm91cHMpIHtcbiAgICAgICAgbGV0IGFsbFR4bnM6IFRyYW5zYWN0aW9uW10gPSBbXTtcbiAgICAgICAgdHhuR3JvdXBzLmZvckVhY2godHhuR3JvdXAgPT4ge1xuICAgICAgICAgIGlmICh0eG5Hcm91cC50eG5Jc3JhZWwpIHtcbiAgICAgICAgICAgIGNvbnN0IHR4bnMgPSBjb252ZXJ0VHJhbnNhY3Rpb25zKHR4bkdyb3VwLnR4bklzcmFlbCwgYWNjb3VudC5wcm9jZXNzZWREYXRlKTtcbiAgICAgICAgICAgIGFsbFR4bnMucHVzaCguLi50eG5zKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHR4bkdyb3VwLnR4bkFicm9hZCkge1xuICAgICAgICAgICAgY29uc3QgdHhucyA9IGNvbnZlcnRUcmFuc2FjdGlvbnModHhuR3JvdXAudHhuQWJyb2FkLCBhY2NvdW50LnByb2Nlc3NlZERhdGUpO1xuICAgICAgICAgICAgYWxsVHhucy5wdXNoKC4uLnR4bnMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFvcHRpb25zLmNvbWJpbmVJbnN0YWxsbWVudHMpIHtcbiAgICAgICAgICBhbGxUeG5zID0gZml4SW5zdGFsbG1lbnRzKGFsbFR4bnMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLm91dHB1dERhdGE/LmVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZSA/PyB0cnVlKSB7XG4gICAgICAgICAgYWxsVHhucyA9IGZpbHRlck9sZFRyYW5zYWN0aW9ucyhhbGxUeG5zLCBzdGFydE1vbWVudCwgb3B0aW9ucy5jb21iaW5lSW5zdGFsbG1lbnRzIHx8IGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBhY2NvdW50VHhuc1thY2NvdW50LmFjY291bnROdW1iZXJdID0ge1xuICAgICAgICAgIGFjY291bnROdW1iZXI6IGFjY291bnQuYWNjb3VudE51bWJlcixcbiAgICAgICAgICBpbmRleDogYWNjb3VudC5pbmRleCxcbiAgICAgICAgICB0eG5zOiBhbGxUeG5zLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBhY2NvdW50VHhucztcbiAgfVxuXG4gIHJldHVybiB7fTtcbn1cblxuZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25FeHRyYURldGFpbHMoXG4gIHNlcnZpY2VzVXJsOiBzdHJpbmcsXG4gIG1vbnRoOiBNb21lbnQsXG4gIGFjY291bnRJbmRleDogbnVtYmVyLFxuICB0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24sXG4pOiBzdHJpbmcge1xuICBjb25zdCBtb2VkQ2hpdXYgPSBtb250aC5mb3JtYXQoJ01NWVlZWScpO1xuICBjb25zdCB1cmwgPSBuZXcgVVJMKHNlcnZpY2VzVXJsKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3JlcU5hbWUnLCAnUGlydGV5SXNrYV8yMDQnKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ0NhcmRJbmRleCcsIGFjY291bnRJbmRleC50b1N0cmluZygpKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3Nob3ZhclJhdHonLCB0cmFuc2FjdGlvbi5pZGVudGlmaWVyIS50b1N0cmluZygpKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ21vZWRDaGl1dicsIG1vZWRDaGl1dik7XG4gIHJldHVybiB1cmwudG9TdHJpbmcoKTtcbn1cbmFzeW5jIGZ1bmN0aW9uIGdldEV4dHJhU2NyYXBUcmFuc2FjdGlvbihcbiAgcGFnZTogUGFnZSxcbiAgb3B0aW9uczogQ29tcGFueVNlcnZpY2VPcHRpb25zLFxuICBtb250aDogTW9tZW50LFxuICBhY2NvdW50SW5kZXg6IG51bWJlcixcbiAgdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uLFxuKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICBjb25zdCBkYXRhVXJsID0gZ2V0VHJhbnNhY3Rpb25FeHRyYURldGFpbHMob3B0aW9ucy5zZXJ2aWNlc1VybCwgbW9udGgsIGFjY291bnRJbmRleCwgdHJhbnNhY3Rpb24pO1xuICBjb25zdCBkYXRhID0gYXdhaXQgZmV0Y2hHZXRXaXRoaW5QYWdlPFNjcmFwZWRUcmFuc2FjdGlvbkRhdGE+KHBhZ2UsIGRhdGFVcmwpO1xuXG4gIGlmICghZGF0YSkge1xuICAgIHJldHVybiB0cmFuc2FjdGlvbjtcbiAgfVxuXG4gIGNvbnN0IHJhd0NhdGVnb3J5ID0gXy5nZXQoZGF0YSwgJ1BpcnRleUlza2FfMjA0QmVhbi5zZWN0b3InKSA/PyAnJztcbiAgcmV0dXJuIHtcbiAgICAuLi50cmFuc2FjdGlvbixcbiAgICBjYXRlZ29yeTogcmF3Q2F0ZWdvcnkudHJpbSgpLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRFeHRyYVNjcmFwVHJhbnNhY3Rpb25zKFxuICBhY2NvdW50V2l0aEluZGV4OiBUcmFuc2FjdGlvbnNBY2NvdW50ICYgeyBpbmRleDogbnVtYmVyIH0sXG4gIHBhZ2U6IFBhZ2UsXG4gIG9wdGlvbnM6IENvbXBhbnlTZXJ2aWNlT3B0aW9ucyxcbiAgbW9udGg6IG1vbWVudC5Nb21lbnQsXG4pOiBQcm9taXNlPFRyYW5zYWN0aW9uW10+IHtcbiAgY29uc3QgcHJvbWlzZXMgPSBhY2NvdW50V2l0aEluZGV4LnR4bnMubWFwKHQgPT5cbiAgICBnZXRFeHRyYVNjcmFwVHJhbnNhY3Rpb24ocGFnZSwgb3B0aW9ucywgbW9udGgsIGFjY291bnRXaXRoSW5kZXguaW5kZXgsIHQpLFxuICApO1xuICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRFeHRyYVNjcmFwQWNjb3VudChcbiAgcGFnZTogUGFnZSxcbiAgb3B0aW9uczogQ29tcGFueVNlcnZpY2VPcHRpb25zLFxuICBhY2NvdW50TWFwOiBTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXgsXG4gIG1vbnRoOiBtb21lbnQuTW9tZW50LFxuKTogUHJvbWlzZTxTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXg+IHtcbiAgY29uc3QgcHJvbWlzZXMgPSBPYmplY3Qua2V5cyhhY2NvdW50TWFwKS5tYXAoYXN5bmMgYSA9PiAoe1xuICAgIC4uLmFjY291bnRNYXBbYV0sXG4gICAgdHhuczogYXdhaXQgZ2V0RXh0cmFTY3JhcFRyYW5zYWN0aW9ucyhhY2NvdW50TWFwW2FdLCBwYWdlLCBvcHRpb25zLCBtb250aCksXG4gIH0pKTtcbiAgY29uc3QgYWNjb3VudHMgPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gIHJldHVybiBhY2NvdW50cy5yZWR1Y2UoKG0sIHgpID0+ICh7IC4uLm0sIFt4LmFjY291bnROdW1iZXJdOiB4IH0pLCB7fSk7XG59XG5cbmZ1bmN0aW9uIGdldEV4dHJhU2NyYXAoXG4gIGFjY291bnRzV2l0aEluZGV4OiBTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXhbXSxcbiAgcGFnZTogUGFnZSxcbiAgb3B0aW9uczogQ29tcGFueVNlcnZpY2VPcHRpb25zLFxuICBhbGxNb250aHM6IG1vbWVudC5Nb21lbnRbXSxcbik6IFByb21pc2U8U2NyYXBlZEFjY291bnRzV2l0aEluZGV4W10+IHtcbiAgY29uc3QgYWN0aW9ucyA9IGFjY291bnRzV2l0aEluZGV4Lm1hcCgoYSwgaSkgPT4gKCkgPT4gZ2V0RXh0cmFTY3JhcEFjY291bnQocGFnZSwgb3B0aW9ucywgYSwgYWxsTW9udGhzW2ldKSk7XG4gIHJldHVybiBydW5TZXJpYWwoYWN0aW9ucyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoQWxsVHJhbnNhY3Rpb25zKFxuICBwYWdlOiBQYWdlLFxuICBvcHRpb25zOiBTY3JhcGVyT3B0aW9ucyxcbiAgY29tcGFueVNlcnZpY2VPcHRpb25zOiBDb21wYW55U2VydmljZU9wdGlvbnMsXG4gIHN0YXJ0TW9tZW50OiBNb21lbnQsXG4pIHtcbiAgY29uc3QgZnV0dXJlTW9udGhzVG9TY3JhcGUgPSBvcHRpb25zLmZ1dHVyZU1vbnRoc1RvU2NyYXBlID8/IDE7XG4gIGNvbnN0IGFsbE1vbnRocyA9IGdldEFsbE1vbnRoTW9tZW50cyhzdGFydE1vbWVudCwgZnV0dXJlTW9udGhzVG9TY3JhcGUpO1xuICBjb25zdCByZXN1bHRzOiBTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXhbXSA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgIGFsbE1vbnRocy5tYXAoYXN5bmMgbW9udGhNb21lbnQgPT4ge1xuICAgICAgcmV0dXJuIGZldGNoVHJhbnNhY3Rpb25zKHBhZ2UsIG9wdGlvbnMsIGNvbXBhbnlTZXJ2aWNlT3B0aW9ucywgc3RhcnRNb21lbnQsIG1vbnRoTW9tZW50KTtcbiAgICB9KSxcbiAgKTtcblxuICBjb25zdCBmaW5hbFJlc3VsdCA9IG9wdGlvbnMuYWRkaXRpb25hbFRyYW5zYWN0aW9uSW5mb3JtYXRpb25cbiAgICA/IGF3YWl0IGdldEV4dHJhU2NyYXAocmVzdWx0cywgcGFnZSwgY29tcGFueVNlcnZpY2VPcHRpb25zLCBhbGxNb250aHMpXG4gICAgOiByZXN1bHRzO1xuXG4gIGNvbnN0IGNvbWJpbmVkVHhuczogUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25bXT4gPSB7fTtcblxuICBmaW5hbFJlc3VsdC5mb3JFYWNoKHJlc3VsdCA9PiB7XG4gICAgT2JqZWN0LmtleXMocmVzdWx0KS5mb3JFYWNoKGFjY291bnROdW1iZXIgPT4ge1xuICAgICAgbGV0IHR4bnNGb3JBY2NvdW50ID0gY29tYmluZWRUeG5zW2FjY291bnROdW1iZXJdO1xuICAgICAgaWYgKCF0eG5zRm9yQWNjb3VudCkge1xuICAgICAgICB0eG5zRm9yQWNjb3VudCA9IFtdO1xuICAgICAgICBjb21iaW5lZFR4bnNbYWNjb3VudE51bWJlcl0gPSB0eG5zRm9yQWNjb3VudDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHRvQmVBZGRlZFR4bnMgPSByZXN1bHRbYWNjb3VudE51bWJlcl0udHhucztcbiAgICAgIGNvbWJpbmVkVHhuc1thY2NvdW50TnVtYmVyXS5wdXNoKC4uLnRvQmVBZGRlZFR4bnMpO1xuICAgIH0pO1xuICB9KTtcblxuICBjb25zdCBhY2NvdW50cyA9IE9iamVjdC5rZXlzKGNvbWJpbmVkVHhucykubWFwKGFjY291bnROdW1iZXIgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBhY2NvdW50TnVtYmVyLFxuICAgICAgdHhuczogY29tYmluZWRUeG5zW2FjY291bnROdW1iZXJdLFxuICAgIH07XG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgc3VjY2VzczogdHJ1ZSxcbiAgICBhY2NvdW50cyxcbiAgfTtcbn1cblxudHlwZSBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyA9IHsgaWQ6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZzsgY2FyZDZEaWdpdHM6IHN0cmluZyB9O1xuY2xhc3MgSXNyYWNhcmRBbWV4QmFzZVNjcmFwZXIgZXh0ZW5kcyBCYXNlU2NyYXBlcldpdGhCcm93c2VyPFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzPiB7XG4gIHByaXZhdGUgYmFzZVVybDogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29tcGFueUNvZGU6IHN0cmluZztcblxuICBwcml2YXRlIHNlcnZpY2VzVXJsOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogU2NyYXBlck9wdGlvbnMsIGJhc2VVcmw6IHN0cmluZywgY29tcGFueUNvZGU6IHN0cmluZykge1xuICAgIHN1cGVyKG9wdGlvbnMpO1xuXG4gICAgdGhpcy5iYXNlVXJsID0gYmFzZVVybDtcbiAgICB0aGlzLmNvbXBhbnlDb2RlID0gY29tcGFueUNvZGU7XG4gICAgdGhpcy5zZXJ2aWNlc1VybCA9IGAke2Jhc2VVcmx9L3NlcnZpY2VzL1Byb3h5UmVxdWVzdEhhbmRsZXIuYXNoeGA7XG4gIH1cblxuICBhc3luYyBsb2dpbihjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpOiBQcm9taXNlPFNjcmFwZXJTY3JhcGluZ1Jlc3VsdD4ge1xuICAgIGF3YWl0IHRoaXMucGFnZS5zZXRSZXF1ZXN0SW50ZXJjZXB0aW9uKHRydWUpO1xuICAgIHRoaXMucGFnZS5vbigncmVxdWVzdCcsIHJlcXVlc3QgPT4ge1xuICAgICAgaWYgKHJlcXVlc3QudXJsKCkuaW5jbHVkZXMoJ2RldGVjdG9yLWRvbS5taW4uanMnKSkge1xuICAgICAgICBkZWJ1ZygnZm9yY2UgYWJvcnQgZm9yIHJlcXVlc3QgZG8gZG93bmxvYWQgZGV0ZWN0b3ItZG9tLm1pbi5qcyByZXNvdXJjZScpO1xuICAgICAgICB2b2lkIHJlcXVlc3QuYWJvcnQodW5kZWZpbmVkLCBpbnRlcmNlcHRpb25Qcmlvcml0aWVzLmFib3J0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZvaWQgcmVxdWVzdC5jb250aW51ZSh1bmRlZmluZWQsIGludGVyY2VwdGlvblByaW9yaXRpZXMuY29udGludWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgYXdhaXQgbWFza0hlYWRsZXNzVXNlckFnZW50KHRoaXMucGFnZSk7XG5cbiAgICBhd2FpdCB0aGlzLm5hdmlnYXRlVG8oYCR7dGhpcy5iYXNlVXJsfS9wZXJzb25hbGFyZWEvTG9naW5gKTtcblxuICAgIHRoaXMuZW1pdFByb2dyZXNzKFNjcmFwZXJQcm9ncmVzc1R5cGVzLkxvZ2dpbmdJbik7XG5cbiAgICBjb25zdCB2YWxpZGF0ZVVybCA9IGAke3RoaXMuc2VydmljZXNVcmx9P3JlcU5hbWU9VmFsaWRhdGVJZERhdGFgO1xuICAgIGNvbnN0IHZhbGlkYXRlUmVxdWVzdCA9IHtcbiAgICAgIGlkOiBjcmVkZW50aWFscy5pZCxcbiAgICAgIGNhcmRTdWZmaXg6IGNyZWRlbnRpYWxzLmNhcmQ2RGlnaXRzLFxuICAgICAgY291bnRyeUNvZGU6IENPVU5UUllfQ09ERSxcbiAgICAgIGlkVHlwZTogSURfVFlQRSxcbiAgICAgIGNoZWNrTGV2ZWw6ICcxJyxcbiAgICAgIGNvbXBhbnlDb2RlOiB0aGlzLmNvbXBhbnlDb2RlLFxuICAgIH07XG4gICAgY29uc3QgdmFsaWRhdGVSZXN1bHQgPSBhd2FpdCBmZXRjaFBvc3RXaXRoaW5QYWdlPFNjcmFwZWRMb2dpblZhbGlkYXRpb24+KHRoaXMucGFnZSwgdmFsaWRhdGVVcmwsIHZhbGlkYXRlUmVxdWVzdCk7XG4gICAgaWYgKFxuICAgICAgIXZhbGlkYXRlUmVzdWx0IHx8XG4gICAgICAhdmFsaWRhdGVSZXN1bHQuSGVhZGVyIHx8XG4gICAgICB2YWxpZGF0ZVJlc3VsdC5IZWFkZXIuU3RhdHVzICE9PSAnMScgfHxcbiAgICAgICF2YWxpZGF0ZVJlc3VsdC5WYWxpZGF0ZUlkRGF0YUJlYW5cbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5rbm93biBlcnJvciBkdXJpbmcgbG9naW4nKTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWxpZGF0ZVJldHVybkNvZGUgPSB2YWxpZGF0ZVJlc3VsdC5WYWxpZGF0ZUlkRGF0YUJlYW4ucmV0dXJuQ29kZTtcbiAgICBkZWJ1ZyhgdXNlciB2YWxpZGF0ZSB3aXRoIHJldHVybiBjb2RlICcke3ZhbGlkYXRlUmV0dXJuQ29kZX0nYCk7XG4gICAgaWYgKHZhbGlkYXRlUmV0dXJuQ29kZSA9PT0gJzEnKSB7XG4gICAgICBjb25zdCB7IHVzZXJOYW1lIH0gPSB2YWxpZGF0ZVJlc3VsdC5WYWxpZGF0ZUlkRGF0YUJlYW47XG5cbiAgICAgIGNvbnN0IGxvZ2luVXJsID0gYCR7dGhpcy5zZXJ2aWNlc1VybH0/cmVxTmFtZT1wZXJmb3JtTG9nb25JYDtcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICAgIEtvZE1pc2h0YW1lc2g6IHVzZXJOYW1lLFxuICAgICAgICBNaXNwYXJaaWh1eTogY3JlZGVudGlhbHMuaWQsXG4gICAgICAgIFNpc21hOiBjcmVkZW50aWFscy5wYXNzd29yZCxcbiAgICAgICAgY2FyZFN1ZmZpeDogY3JlZGVudGlhbHMuY2FyZDZEaWdpdHMsXG4gICAgICAgIGNvdW50cnlDb2RlOiBDT1VOVFJZX0NPREUsXG4gICAgICAgIGlkVHlwZTogSURfVFlQRSxcbiAgICAgIH07XG4gICAgICBjb25zdCBsb2dpblJlc3VsdCA9IGF3YWl0IGZldGNoUG9zdFdpdGhpblBhZ2U8eyBzdGF0dXM6IHN0cmluZyB9Pih0aGlzLnBhZ2UsIGxvZ2luVXJsLCByZXF1ZXN0KTtcbiAgICAgIGRlYnVnKGB1c2VyIGxvZ2luIHdpdGggc3RhdHVzICcke2xvZ2luUmVzdWx0Py5zdGF0dXN9J2ApO1xuXG4gICAgICBpZiAobG9naW5SZXN1bHQgJiYgbG9naW5SZXN1bHQuc3RhdHVzID09PSAnMScpIHtcbiAgICAgICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NyYXBlclByb2dyZXNzVHlwZXMuTG9naW5TdWNjZXNzKTtcbiAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSB9O1xuICAgICAgfVxuXG4gICAgICBpZiAobG9naW5SZXN1bHQgJiYgbG9naW5SZXN1bHQuc3RhdHVzID09PSAnMycpIHtcbiAgICAgICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NyYXBlclByb2dyZXNzVHlwZXMuQ2hhbmdlUGFzc3dvcmQpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICAgIGVycm9yVHlwZTogU2NyYXBlckVycm9yVHlwZXMuQ2hhbmdlUGFzc3dvcmQsXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZW1pdFByb2dyZXNzKFNjcmFwZXJQcm9ncmVzc1R5cGVzLkxvZ2luRmFpbGVkKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkludmFsaWRQYXNzd29yZCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHZhbGlkYXRlUmV0dXJuQ29kZSA9PT0gJzQnKSB7XG4gICAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY3JhcGVyUHJvZ3Jlc3NUeXBlcy5DaGFuZ2VQYXNzd29yZCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgZXJyb3JUeXBlOiBTY3JhcGVyRXJyb3JUeXBlcy5DaGFuZ2VQYXNzd29yZCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NyYXBlclByb2dyZXNzVHlwZXMuTG9naW5GYWlsZWQpO1xuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgIGVycm9yVHlwZTogU2NyYXBlckVycm9yVHlwZXMuSW52YWxpZFBhc3N3b3JkLFxuICAgIH07XG4gIH1cblxuICBhc3luYyBmZXRjaERhdGEoKSB7XG4gICAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJyk7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSB8fCBkZWZhdWx0U3RhcnRNb21lbnQudG9EYXRlKCk7XG4gICAgY29uc3Qgc3RhcnRNb21lbnQgPSBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xuXG4gICAgcmV0dXJuIGZldGNoQWxsVHJhbnNhY3Rpb25zKFxuICAgICAgdGhpcy5wYWdlLFxuICAgICAgdGhpcy5vcHRpb25zLFxuICAgICAge1xuICAgICAgICBzZXJ2aWNlc1VybDogdGhpcy5zZXJ2aWNlc1VybCxcbiAgICAgICAgY29tcGFueUNvZGU6IHRoaXMuY29tcGFueUNvZGUsXG4gICAgICB9LFxuICAgICAgc3RhcnRNb21lbnQsXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBJc3JhY2FyZEFtZXhCYXNlU2NyYXBlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUUsVUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsWUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksTUFBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssTUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sTUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sYUFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsUUFBQSxHQUFB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
324
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbW9tZW50IiwiX2NvbnN0YW50cyIsIl9kZWZpbml0aW9ucyIsIl9kYXRlcyIsIl9kZWJ1ZyIsIl9mZXRjaCIsIl90cmFuc2FjdGlvbnMiLCJfd2FpdGluZyIsIl90cmFuc2FjdGlvbnMyIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJfZXJyb3JzIiwiX2Jyb3dzZXIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJSQVRFX0xJTUlUIiwiU0xFRVBfQkVUV0VFTiIsIlRSQU5TQUNUSU9OU19CQVRDSF9TSVpFIiwiQ09VTlRSWV9DT0RFIiwiSURfVFlQRSIsIklOU1RBTExNRU5UU19LRVlXT1JEIiwiREFURV9GT1JNQVQiLCJkZWJ1ZyIsImdldERlYnVnIiwiZ2V0QWNjb3VudHNVcmwiLCJzZXJ2aWNlc1VybCIsIm1vbnRoTW9tZW50IiwiYmlsbGluZ0RhdGUiLCJmb3JtYXQiLCJ1cmwiLCJVUkwiLCJzZWFyY2hQYXJhbXMiLCJzZXQiLCJ0b1N0cmluZyIsImZldGNoQWNjb3VudHMiLCJwYWdlIiwiZGF0YVVybCIsImRhdGFSZXN1bHQiLCJmZXRjaEdldFdpdGhpblBhZ2UiLCJfIiwiZ2V0IiwiRGFzaGJvYXJkTW9udGhCZWFuIiwiY2FyZHNDaGFyZ2VzIiwibWFwIiwiY2FyZENoYXJnZSIsImluZGV4IiwicGFyc2VJbnQiLCJjYXJkSW5kZXgiLCJhY2NvdW50TnVtYmVyIiwiY2FyZE51bWJlciIsInByb2Nlc3NlZERhdGUiLCJtb21lbnQiLCJ0b0lTT1N0cmluZyIsImdldFRyYW5zYWN0aW9uc1VybCIsIm1vbnRoIiwieWVhciIsIm1vbnRoU3RyIiwiY29udmVydEN1cnJlbmN5IiwiY3VycmVuY3lTdHIiLCJTSEVLRUxfQ1VSUkVOQ1lfS0VZV09SRCIsIkFMVF9TSEVLRUxfQ1VSUkVOQ1kiLCJTSEVLRUxfQ1VSUkVOQ1kiLCJnZXRJbnN0YWxsbWVudHNJbmZvIiwidHhuIiwibW9yZUluZm8iLCJpbmNsdWRlcyIsInVuZGVmaW5lZCIsIm1hdGNoZXMiLCJtYXRjaCIsImxlbmd0aCIsIm51bWJlciIsInRvdGFsIiwiZ2V0VHJhbnNhY3Rpb25UeXBlIiwiVHJhbnNhY3Rpb25UeXBlcyIsIkluc3RhbGxtZW50cyIsIk5vcm1hbCIsImNvbnZlcnRUcmFuc2FjdGlvbnMiLCJ0eG5zIiwiZmlsdGVyZWRUeG5zIiwiZmlsdGVyIiwiZGVhbFN1bVR5cGUiLCJ2b3VjaGVyTnVtYmVyUmF0eiIsInZvdWNoZXJOdW1iZXJSYXR6T3V0Ym91bmQiLCJpc091dGJvdW5kIiwiZGVhbFN1bU91dGJvdW5kIiwidHhuRGF0ZVN0ciIsImZ1bGxQdXJjaGFzZURhdGVPdXRib3VuZCIsImZ1bGxQdXJjaGFzZURhdGUiLCJ0eG5Nb21lbnQiLCJjdXJyZW50UHJvY2Vzc2VkRGF0ZSIsImZ1bGxQYXltZW50RGF0ZSIsInJlc3VsdCIsInR5cGUiLCJpZGVudGlmaWVyIiwiZGF0ZSIsIm9yaWdpbmFsQW1vdW50IiwiZGVhbFN1bSIsIm9yaWdpbmFsQ3VycmVuY3kiLCJjdXJyZW50UGF5bWVudEN1cnJlbmN5IiwiY3VycmVuY3lJZCIsImNoYXJnZWRBbW91bnQiLCJwYXltZW50U3VtT3V0Ym91bmQiLCJwYXltZW50U3VtIiwiY2hhcmdlZEN1cnJlbmN5IiwiZGVzY3JpcHRpb24iLCJmdWxsU3VwcGxpZXJOYW1lT3V0Ym91bmQiLCJmdWxsU3VwcGxpZXJOYW1lSGViIiwibWVtbyIsImluc3RhbGxtZW50cyIsInN0YXR1cyIsIlRyYW5zYWN0aW9uU3RhdHVzZXMiLCJDb21wbGV0ZWQiLCJmZXRjaFRyYW5zYWN0aW9ucyIsIm9wdGlvbnMiLCJjb21wYW55U2VydmljZU9wdGlvbnMiLCJzdGFydE1vbWVudCIsImFjY291bnRzIiwic2xlZXAiLCJDYXJkc1RyYW5zYWN0aW9uc0xpc3RCZWFuIiwiYWNjb3VudFR4bnMiLCJmb3JFYWNoIiwiYWNjb3VudCIsInR4bkdyb3VwcyIsImFsbFR4bnMiLCJ0eG5Hcm91cCIsInR4bklzcmFlbCIsInB1c2giLCJ0eG5BYnJvYWQiLCJjb21iaW5lSW5zdGFsbG1lbnRzIiwiZml4SW5zdGFsbG1lbnRzIiwib3V0cHV0RGF0YSIsImVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZSIsImZpbHRlck9sZFRyYW5zYWN0aW9ucyIsImdldEV4dHJhU2NyYXBUcmFuc2FjdGlvbiIsImFjY291bnRJbmRleCIsInRyYW5zYWN0aW9uIiwiZGF0YSIsInJhd0NhdGVnb3J5IiwiY2F0ZWdvcnkiLCJ0cmltIiwiZ2V0RXh0cmFTY3JhcEFjY291bnQiLCJhY2NvdW50TWFwIiwiT2JqZWN0IiwidmFsdWVzIiwidHhuc0NodW5rIiwiY2h1bmsiLCJ1cGRhdGVkVHhucyIsIlByb21pc2UiLCJhbGwiLCJ0IiwicmVkdWNlIiwibSIsIngiLCJnZXRBZGRpdGlvbmFsVHJhbnNhY3Rpb25JbmZvcm1hdGlvbiIsInNjcmFwZXJPcHRpb25zIiwiYWNjb3VudHNXaXRoSW5kZXgiLCJhbGxNb250aHMiLCJhZGRpdGlvbmFsVHJhbnNhY3Rpb25JbmZvcm1hdGlvbiIsIm9wdEluRmVhdHVyZXMiLCJydW5TZXJpYWwiLCJhIiwiaSIsImZldGNoQWxsVHJhbnNhY3Rpb25zIiwiZnV0dXJlTW9udGhzVG9TY3JhcGUiLCJnZXRBbGxNb250aE1vbWVudHMiLCJyZXN1bHRzIiwiZmluYWxSZXN1bHQiLCJjb21iaW5lZFR4bnMiLCJrZXlzIiwidHhuc0ZvckFjY291bnQiLCJ0b0JlQWRkZWRUeG5zIiwic3VjY2VzcyIsIklzcmFjYXJkQW1leEJhc2VTY3JhcGVyIiwiQmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImNvbnN0cnVjdG9yIiwiYmFzZVVybCIsImNvbXBhbnlDb2RlIiwibG9naW4iLCJjcmVkZW50aWFscyIsInNldFJlcXVlc3RJbnRlcmNlcHRpb24iLCJvbiIsInJlcXVlc3QiLCJhYm9ydCIsImludGVyY2VwdGlvblByaW9yaXRpZXMiLCJjb250aW51ZSIsIm1hc2tIZWFkbGVzc1VzZXJBZ2VudCIsIm5hdmlnYXRlVG8iLCJlbWl0UHJvZ3Jlc3MiLCJTY3JhcGVyUHJvZ3Jlc3NUeXBlcyIsIkxvZ2dpbmdJbiIsInZhbGlkYXRlVXJsIiwidmFsaWRhdGVSZXF1ZXN0IiwiaWQiLCJjYXJkU3VmZml4IiwiY2FyZDZEaWdpdHMiLCJjb3VudHJ5Q29kZSIsImlkVHlwZSIsImNoZWNrTGV2ZWwiLCJ2YWxpZGF0ZVJlc3VsdCIsImZldGNoUG9zdFdpdGhpblBhZ2UiLCJIZWFkZXIiLCJTdGF0dXMiLCJWYWxpZGF0ZUlkRGF0YUJlYW4iLCJFcnJvciIsInZhbGlkYXRlUmV0dXJuQ29kZSIsInJldHVybkNvZGUiLCJ1c2VyTmFtZSIsImxvZ2luVXJsIiwiS29kTWlzaHRhbWVzaCIsIk1pc3BhclppaHV5IiwiU2lzbWEiLCJwYXNzd29yZCIsImxvZ2luUmVzdWx0IiwiTG9naW5TdWNjZXNzIiwiQ2hhbmdlUGFzc3dvcmQiLCJlcnJvclR5cGUiLCJTY3JhcGVyRXJyb3JUeXBlcyIsIkxvZ2luRmFpbGVkIiwiSW52YWxpZFBhc3N3b3JkIiwiZmV0Y2hEYXRhIiwiZGVmYXVsdFN0YXJ0TW9tZW50Iiwic3VidHJhY3QiLCJzdGFydERhdGUiLCJ0b0RhdGUiLCJtYXgiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyYXBlcnMvYmFzZS1pc3JhY2FyZC1hbWV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbW9tZW50LCB7IHR5cGUgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IHR5cGUgUGFnZSB9IGZyb20gJ3B1cHBldGVlci1jb3JlJztcbmltcG9ydCB7IEFMVF9TSEVLRUxfQ1VSUkVOQ1ksIFNIRUtFTF9DVVJSRU5DWSwgU0hFS0VMX0NVUlJFTkNZX0tFWVdPUkQgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgU2NyYXBlclByb2dyZXNzVHlwZXMgfSBmcm9tICcuLi9kZWZpbml0aW9ucyc7XG5pbXBvcnQgZ2V0QWxsTW9udGhNb21lbnRzIGZyb20gJy4uL2hlbHBlcnMvZGF0ZXMnO1xuaW1wb3J0IHsgZ2V0RGVidWcgfSBmcm9tICcuLi9oZWxwZXJzL2RlYnVnJztcbmltcG9ydCB7IGZldGNoR2V0V2l0aGluUGFnZSwgZmV0Y2hQb3N0V2l0aGluUGFnZSB9IGZyb20gJy4uL2hlbHBlcnMvZmV0Y2gnO1xuaW1wb3J0IHsgZmlsdGVyT2xkVHJhbnNhY3Rpb25zLCBmaXhJbnN0YWxsbWVudHMgfSBmcm9tICcuLi9oZWxwZXJzL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBydW5TZXJpYWwsIHNsZWVwIH0gZnJvbSAnLi4vaGVscGVycy93YWl0aW5nJztcbmltcG9ydCB7XG4gIFRyYW5zYWN0aW9uU3RhdHVzZXMsXG4gIFRyYW5zYWN0aW9uVHlwZXMsXG4gIHR5cGUgVHJhbnNhY3Rpb24sXG4gIHR5cGUgVHJhbnNhY3Rpb25JbnN0YWxsbWVudHMsXG4gIHR5cGUgVHJhbnNhY3Rpb25zQWNjb3VudCxcbn0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIgfSBmcm9tICcuL2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInO1xuaW1wb3J0IHsgU2NyYXBlckVycm9yVHlwZXMgfSBmcm9tICcuL2Vycm9ycyc7XG5pbXBvcnQgeyB0eXBlIFNjcmFwZXJPcHRpb25zLCB0eXBlIFNjcmFwZXJTY3JhcGluZ1Jlc3VsdCB9IGZyb20gJy4vaW50ZXJmYWNlJztcbmltcG9ydCB7IGludGVyY2VwdGlvblByaW9yaXRpZXMsIG1hc2tIZWFkbGVzc1VzZXJBZ2VudCB9IGZyb20gJy4uL2hlbHBlcnMvYnJvd3Nlcic7XG5cbmNvbnN0IFJBVEVfTElNSVQgPSB7XG4gIFNMRUVQX0JFVFdFRU46IDEwMDAsXG4gIFRSQU5TQUNUSU9OU19CQVRDSF9TSVpFOiAxMCxcbn0gYXMgY29uc3Q7XG5cbmNvbnN0IENPVU5UUllfQ09ERSA9ICcyMTInO1xuY29uc3QgSURfVFlQRSA9ICcxJztcbmNvbnN0IElOU1RBTExNRU5UU19LRVlXT1JEID0gJ9eq16nXnNeV150nO1xuXG5jb25zdCBEQVRFX0ZPUk1BVCA9ICdERC9NTS9ZWVlZJztcblxuY29uc3QgZGVidWcgPSBnZXREZWJ1ZygnYmFzZS1pc3JhY2FyZC1hbWV4Jyk7XG5cbnR5cGUgQ29tcGFueVNlcnZpY2VPcHRpb25zID0ge1xuICBzZXJ2aWNlc1VybDogc3RyaW5nO1xuICBjb21wYW55Q29kZTogc3RyaW5nO1xufTtcblxudHlwZSBTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXggPSBSZWNvcmQ8c3RyaW5nLCBUcmFuc2FjdGlvbnNBY2NvdW50ICYgeyBpbmRleDogbnVtYmVyIH0+O1xuXG5pbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uIHtcbiAgZGVhbFN1bVR5cGU6IHN0cmluZztcbiAgdm91Y2hlck51bWJlclJhdHpPdXRib3VuZDogc3RyaW5nO1xuICB2b3VjaGVyTnVtYmVyUmF0ejogc3RyaW5nO1xuICBtb3JlSW5mbz86IHN0cmluZztcbiAgZGVhbFN1bU91dGJvdW5kOiBib29sZWFuO1xuICBjdXJyZW5jeUlkOiBzdHJpbmc7XG4gIGN1cnJlbnRQYXltZW50Q3VycmVuY3k6IHN0cmluZztcbiAgZGVhbFN1bTogbnVtYmVyO1xuICBmdWxsUGF5bWVudERhdGU/OiBzdHJpbmc7XG4gIGZ1bGxQdXJjaGFzZURhdGU/OiBzdHJpbmc7XG4gIGZ1bGxQdXJjaGFzZURhdGVPdXRib3VuZD86IHN0cmluZztcbiAgZnVsbFN1cHBsaWVyTmFtZUhlYjogc3RyaW5nO1xuICBmdWxsU3VwcGxpZXJOYW1lT3V0Ym91bmQ6IHN0cmluZztcbiAgcGF5bWVudFN1bTogbnVtYmVyO1xuICBwYXltZW50U3VtT3V0Ym91bmQ6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRBY2NvdW50IHtcbiAgaW5kZXg6IG51bWJlcjtcbiAgYWNjb3VudE51bWJlcjogc3RyaW5nO1xuICBwcm9jZXNzZWREYXRlOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBTY3JhcGVkTG9naW5WYWxpZGF0aW9uIHtcbiAgSGVhZGVyOiB7XG4gICAgU3RhdHVzOiBzdHJpbmc7XG4gIH07XG4gIFZhbGlkYXRlSWREYXRhQmVhbj86IHtcbiAgICB1c2VyTmFtZT86IHN0cmluZztcbiAgICByZXR1cm5Db2RlOiBzdHJpbmc7XG4gIH07XG59XG5cbmludGVyZmFjZSBTY3JhcGVkQWNjb3VudHNXaXRoaW5QYWdlUmVzcG9uc2Uge1xuICBIZWFkZXI6IHtcbiAgICBTdGF0dXM6IHN0cmluZztcbiAgfTtcbiAgRGFzaGJvYXJkTW9udGhCZWFuPzoge1xuICAgIGNhcmRzQ2hhcmdlczoge1xuICAgICAgY2FyZEluZGV4OiBzdHJpbmc7XG4gICAgICBjYXJkTnVtYmVyOiBzdHJpbmc7XG4gICAgICBiaWxsaW5nRGF0ZTogc3RyaW5nO1xuICAgIH1bXTtcbiAgfTtcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRDdXJyZW50Q2FyZFRyYW5zYWN0aW9ucyB7XG4gIHR4bklzcmFlbD86IFNjcmFwZWRUcmFuc2FjdGlvbltdO1xuICB0eG5BYnJvYWQ/OiBTY3JhcGVkVHJhbnNhY3Rpb25bXTtcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbkRhdGEge1xuICBIZWFkZXI/OiB7XG4gICAgU3RhdHVzOiBzdHJpbmc7XG4gIH07XG4gIFBpcnRleUlza2FfMjA0QmVhbj86IHtcbiAgICBzZWN0b3I6IHN0cmluZztcbiAgfTtcblxuICBDYXJkc1RyYW5zYWN0aW9uc0xpc3RCZWFuPzogUmVjb3JkPFxuICAgIHN0cmluZyxcbiAgICB7XG4gICAgICBDdXJyZW50Q2FyZFRyYW5zYWN0aW9uczogU2NyYXBlZEN1cnJlbnRDYXJkVHJhbnNhY3Rpb25zW107XG4gICAgfVxuICA+O1xufVxuXG5mdW5jdGlvbiBnZXRBY2NvdW50c1VybChzZXJ2aWNlc1VybDogc3RyaW5nLCBtb250aE1vbWVudDogTW9tZW50KSB7XG4gIGNvbnN0IGJpbGxpbmdEYXRlID0gbW9udGhNb21lbnQuZm9ybWF0KCdZWVlZLU1NLUREJyk7XG4gIGNvbnN0IHVybCA9IG5ldyBVUkwoc2VydmljZXNVcmwpO1xuICB1cmwuc2VhcmNoUGFyYW1zLnNldCgncmVxTmFtZScsICdEYXNoYm9hcmRNb250aCcpO1xuICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnYWN0aW9uQ29kZScsICcwJyk7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdiaWxsaW5nRGF0ZScsIGJpbGxpbmdEYXRlKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ2Zvcm1hdCcsICdKc29uJyk7XG4gIHJldHVybiB1cmwudG9TdHJpbmcoKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hBY2NvdW50cyhwYWdlOiBQYWdlLCBzZXJ2aWNlc1VybDogc3RyaW5nLCBtb250aE1vbWVudDogTW9tZW50KTogUHJvbWlzZTxTY3JhcGVkQWNjb3VudFtdPiB7XG4gIGNvbnN0IGRhdGFVcmwgPSBnZXRBY2NvdW50c1VybChzZXJ2aWNlc1VybCwgbW9udGhNb21lbnQpO1xuICBkZWJ1ZyhgZmV0Y2hpbmcgYWNjb3VudHMgZnJvbSAke2RhdGFVcmx9YCk7XG4gIGNvbnN0IGRhdGFSZXN1bHQgPSBhd2FpdCBmZXRjaEdldFdpdGhpblBhZ2U8U2NyYXBlZEFjY291bnRzV2l0aGluUGFnZVJlc3BvbnNlPihwYWdlLCBkYXRhVXJsKTtcbiAgaWYgKGRhdGFSZXN1bHQgJiYgXy5nZXQoZGF0YVJlc3VsdCwgJ0hlYWRlci5TdGF0dXMnKSA9PT0gJzEnICYmIGRhdGFSZXN1bHQuRGFzaGJvYXJkTW9udGhCZWFuKSB7XG4gICAgY29uc3QgeyBjYXJkc0NoYXJnZXMgfSA9IGRhdGFSZXN1bHQuRGFzaGJvYXJkTW9udGhCZWFuO1xuICAgIGlmIChjYXJkc0NoYXJnZXMpIHtcbiAgICAgIHJldHVybiBjYXJkc0NoYXJnZXMubWFwKGNhcmRDaGFyZ2UgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGluZGV4OiBwYXJzZUludChjYXJkQ2hhcmdlLmNhcmRJbmRleCwgMTApLFxuICAgICAgICAgIGFjY291bnROdW1iZXI6IGNhcmRDaGFyZ2UuY2FyZE51bWJlcixcbiAgICAgICAgICBwcm9jZXNzZWREYXRlOiBtb21lbnQoY2FyZENoYXJnZS5iaWxsaW5nRGF0ZSwgREFURV9GT1JNQVQpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFtdO1xufVxuXG5mdW5jdGlvbiBnZXRUcmFuc2FjdGlvbnNVcmwoc2VydmljZXNVcmw6IHN0cmluZywgbW9udGhNb21lbnQ6IE1vbWVudCkge1xuICBjb25zdCBtb250aCA9IG1vbnRoTW9tZW50Lm1vbnRoKCkgKyAxO1xuICBjb25zdCB5ZWFyID0gbW9udGhNb21lbnQueWVhcigpO1xuICBjb25zdCBtb250aFN0ciA9IG1vbnRoIDwgMTAgPyBgMCR7bW9udGh9YCA6IG1vbnRoLnRvU3RyaW5nKCk7XG4gIGNvbnN0IHVybCA9IG5ldyBVUkwoc2VydmljZXNVcmwpO1xuICB1cmwuc2VhcmNoUGFyYW1zLnNldCgncmVxTmFtZScsICdDYXJkc1RyYW5zYWN0aW9uc0xpc3QnKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ21vbnRoJywgbW9udGhTdHIpO1xuICB1cmwuc2VhcmNoUGFyYW1zLnNldCgneWVhcicsIGAke3llYXJ9YCk7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdyZXF1aXJlZERhdGUnLCAnTicpO1xuICByZXR1cm4gdXJsLnRvU3RyaW5nKCk7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRDdXJyZW5jeShjdXJyZW5jeVN0cjogc3RyaW5nKSB7XG4gIGlmIChjdXJyZW5jeVN0ciA9PT0gU0hFS0VMX0NVUlJFTkNZX0tFWVdPUkQgfHwgY3VycmVuY3lTdHIgPT09IEFMVF9TSEVLRUxfQ1VSUkVOQ1kpIHtcbiAgICByZXR1cm4gU0hFS0VMX0NVUlJFTkNZO1xuICB9XG4gIHJldHVybiBjdXJyZW5jeVN0cjtcbn1cblxuZnVuY3Rpb24gZ2V0SW5zdGFsbG1lbnRzSW5mbyh0eG46IFNjcmFwZWRUcmFuc2FjdGlvbik6IFRyYW5zYWN0aW9uSW5zdGFsbG1lbnRzIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCF0eG4ubW9yZUluZm8gfHwgIXR4bi5tb3JlSW5mby5pbmNsdWRlcyhJTlNUQUxMTUVOVFNfS0VZV09SRCkpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IG1hdGNoZXMgPSB0eG4ubW9yZUluZm8ubWF0Y2goL1xcZCsvZyk7XG4gIGlmICghbWF0Y2hlcyB8fCBtYXRjaGVzLmxlbmd0aCA8IDIpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBudW1iZXI6IHBhcnNlSW50KG1hdGNoZXNbMF0sIDEwKSxcbiAgICB0b3RhbDogcGFyc2VJbnQobWF0Y2hlc1sxXSwgMTApLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRUcmFuc2FjdGlvblR5cGUodHhuOiBTY3JhcGVkVHJhbnNhY3Rpb24pIHtcbiAgcmV0dXJuIGdldEluc3RhbGxtZW50c0luZm8odHhuKSA/IFRyYW5zYWN0aW9uVHlwZXMuSW5zdGFsbG1lbnRzIDogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWw7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRUcmFuc2FjdGlvbnModHhuczogU2NyYXBlZFRyYW5zYWN0aW9uW10sIHByb2Nlc3NlZERhdGU6IHN0cmluZyk6IFRyYW5zYWN0aW9uW10ge1xuICBjb25zdCBmaWx0ZXJlZFR4bnMgPSB0eG5zLmZpbHRlcihcbiAgICB0eG4gPT5cbiAgICAgIHR4bi5kZWFsU3VtVHlwZSAhPT0gJzEnICYmIHR4bi52b3VjaGVyTnVtYmVyUmF0eiAhPT0gJzAwMDAwMDAwMCcgJiYgdHhuLnZvdWNoZXJOdW1iZXJSYXR6T3V0Ym91bmQgIT09ICcwMDAwMDAwMDAnLFxuICApO1xuXG4gIHJldHVybiBmaWx0ZXJlZFR4bnMubWFwKHR4biA9PiB7XG4gICAgY29uc3QgaXNPdXRib3VuZCA9IHR4bi5kZWFsU3VtT3V0Ym91bmQ7XG4gICAgY29uc3QgdHhuRGF0ZVN0ciA9IGlzT3V0Ym91bmQgPyB0eG4uZnVsbFB1cmNoYXNlRGF0ZU91dGJvdW5kIDogdHhuLmZ1bGxQdXJjaGFzZURhdGU7XG4gICAgY29uc3QgdHhuTW9tZW50ID0gbW9tZW50KHR4bkRhdGVTdHIsIERBVEVfRk9STUFUKTtcblxuICAgIGNvbnN0IGN1cnJlbnRQcm9jZXNzZWREYXRlID0gdHhuLmZ1bGxQYXltZW50RGF0ZVxuICAgICAgPyBtb21lbnQodHhuLmZ1bGxQYXltZW50RGF0ZSwgREFURV9GT1JNQVQpLnRvSVNPU3RyaW5nKClcbiAgICAgIDogcHJvY2Vzc2VkRGF0ZTtcbiAgICBjb25zdCByZXN1bHQ6IFRyYW5zYWN0aW9uID0ge1xuICAgICAgdHlwZTogZ2V0VHJhbnNhY3Rpb25UeXBlKHR4biksXG4gICAgICBpZGVudGlmaWVyOiBwYXJzZUludChpc091dGJvdW5kID8gdHhuLnZvdWNoZXJOdW1iZXJSYXR6T3V0Ym91bmQgOiB0eG4udm91Y2hlck51bWJlclJhdHosIDEwKSxcbiAgICAgIGRhdGU6IHR4bk1vbWVudC50b0lTT1N0cmluZygpLFxuICAgICAgcHJvY2Vzc2VkRGF0ZTogY3VycmVudFByb2Nlc3NlZERhdGUsXG4gICAgICBvcmlnaW5hbEFtb3VudDogaXNPdXRib3VuZCA/IC10eG4uZGVhbFN1bU91dGJvdW5kIDogLXR4bi5kZWFsU3VtLFxuICAgICAgb3JpZ2luYWxDdXJyZW5jeTogY29udmVydEN1cnJlbmN5KHR4bi5jdXJyZW50UGF5bWVudEN1cnJlbmN5ID8/IHR4bi5jdXJyZW5jeUlkKSxcbiAgICAgIGNoYXJnZWRBbW91bnQ6IGlzT3V0Ym91bmQgPyAtdHhuLnBheW1lbnRTdW1PdXRib3VuZCA6IC10eG4ucGF5bWVudFN1bSxcbiAgICAgIGNoYXJnZWRDdXJyZW5jeTogY29udmVydEN1cnJlbmN5KHR4bi5jdXJyZW5jeUlkKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBpc091dGJvdW5kID8gdHhuLmZ1bGxTdXBwbGllck5hbWVPdXRib3VuZCA6IHR4bi5mdWxsU3VwcGxpZXJOYW1lSGViLFxuICAgICAgbWVtbzogdHhuLm1vcmVJbmZvIHx8ICcnLFxuICAgICAgaW5zdGFsbG1lbnRzOiBnZXRJbnN0YWxsbWVudHNJbmZvKHR4bikgfHwgdW5kZWZpbmVkLFxuICAgICAgc3RhdHVzOiBUcmFuc2FjdGlvblN0YXR1c2VzLkNvbXBsZXRlZCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoVHJhbnNhY3Rpb25zKFxuICBwYWdlOiBQYWdlLFxuICBvcHRpb25zOiBTY3JhcGVyT3B0aW9ucyxcbiAgY29tcGFueVNlcnZpY2VPcHRpb25zOiBDb21wYW55U2VydmljZU9wdGlvbnMsXG4gIHN0YXJ0TW9tZW50OiBNb21lbnQsXG4gIG1vbnRoTW9tZW50OiBNb21lbnQsXG4pOiBQcm9taXNlPFNjcmFwZWRBY2NvdW50c1dpdGhJbmRleD4ge1xuICBjb25zdCBhY2NvdW50cyA9IGF3YWl0IGZldGNoQWNjb3VudHMocGFnZSwgY29tcGFueVNlcnZpY2VPcHRpb25zLnNlcnZpY2VzVXJsLCBtb250aE1vbWVudCk7XG4gIGNvbnN0IGRhdGFVcmwgPSBnZXRUcmFuc2FjdGlvbnNVcmwoY29tcGFueVNlcnZpY2VPcHRpb25zLnNlcnZpY2VzVXJsLCBtb250aE1vbWVudCk7XG4gIGF3YWl0IHNsZWVwKFJBVEVfTElNSVQuU0xFRVBfQkVUV0VFTik7XG4gIGRlYnVnKGBmZXRjaGluZyB0cmFuc2FjdGlvbnMgZnJvbSAke2RhdGFVcmx9IGZvciBtb250aCAke21vbnRoTW9tZW50LmZvcm1hdCgnWVlZWS1NTScpfWApO1xuICBjb25zdCBkYXRhUmVzdWx0ID0gYXdhaXQgZmV0Y2hHZXRXaXRoaW5QYWdlPFNjcmFwZWRUcmFuc2FjdGlvbkRhdGE+KHBhZ2UsIGRhdGFVcmwpO1xuICBpZiAoZGF0YVJlc3VsdCAmJiBfLmdldChkYXRhUmVzdWx0LCAnSGVhZGVyLlN0YXR1cycpID09PSAnMScgJiYgZGF0YVJlc3VsdC5DYXJkc1RyYW5zYWN0aW9uc0xpc3RCZWFuKSB7XG4gICAgY29uc3QgYWNjb3VudFR4bnM6IFNjcmFwZWRBY2NvdW50c1dpdGhJbmRleCA9IHt9O1xuICAgIGFjY291bnRzLmZvckVhY2goYWNjb3VudCA9PiB7XG4gICAgICBjb25zdCB0eG5Hcm91cHM6IFNjcmFwZWRDdXJyZW50Q2FyZFRyYW5zYWN0aW9uc1tdIHwgdW5kZWZpbmVkID0gXy5nZXQoXG4gICAgICAgIGRhdGFSZXN1bHQsXG4gICAgICAgIGBDYXJkc1RyYW5zYWN0aW9uc0xpc3RCZWFuLkluZGV4JHthY2NvdW50LmluZGV4fS5DdXJyZW50Q2FyZFRyYW5zYWN0aW9uc2AsXG4gICAgICApO1xuICAgICAgaWYgKHR4bkdyb3Vwcykge1xuICAgICAgICBsZXQgYWxsVHhuczogVHJhbnNhY3Rpb25bXSA9IFtdO1xuICAgICAgICB0eG5Hcm91cHMuZm9yRWFjaCh0eG5Hcm91cCA9PiB7XG4gICAgICAgICAgaWYgKHR4bkdyb3VwLnR4bklzcmFlbCkge1xuICAgICAgICAgICAgY29uc3QgdHhucyA9IGNvbnZlcnRUcmFuc2FjdGlvbnModHhuR3JvdXAudHhuSXNyYWVsLCBhY2NvdW50LnByb2Nlc3NlZERhdGUpO1xuICAgICAgICAgICAgYWxsVHhucy5wdXNoKC4uLnR4bnMpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodHhuR3JvdXAudHhuQWJyb2FkKSB7XG4gICAgICAgICAgICBjb25zdCB0eG5zID0gY29udmVydFRyYW5zYWN0aW9ucyh0eG5Hcm91cC50eG5BYnJvYWQsIGFjY291bnQucHJvY2Vzc2VkRGF0ZSk7XG4gICAgICAgICAgICBhbGxUeG5zLnB1c2goLi4udHhucyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIW9wdGlvbnMuY29tYmluZUluc3RhbGxtZW50cykge1xuICAgICAgICAgIGFsbFR4bnMgPSBmaXhJbnN0YWxsbWVudHMoYWxsVHhucyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wdGlvbnMub3V0cHV0RGF0YT8uZW5hYmxlVHJhbnNhY3Rpb25zRmlsdGVyQnlEYXRlID8/IHRydWUpIHtcbiAgICAgICAgICBhbGxUeG5zID0gZmlsdGVyT2xkVHJhbnNhY3Rpb25zKGFsbFR4bnMsIHN0YXJ0TW9tZW50LCBvcHRpb25zLmNvbWJpbmVJbnN0YWxsbWVudHMgfHwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIGFjY291bnRUeG5zW2FjY291bnQuYWNjb3VudE51bWJlcl0gPSB7XG4gICAgICAgICAgYWNjb3VudE51bWJlcjogYWNjb3VudC5hY2NvdW50TnVtYmVyLFxuICAgICAgICAgIGluZGV4OiBhY2NvdW50LmluZGV4LFxuICAgICAgICAgIHR4bnM6IGFsbFR4bnMsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGFjY291bnRUeG5zO1xuICB9XG5cbiAgcmV0dXJuIHt9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRFeHRyYVNjcmFwVHJhbnNhY3Rpb24oXG4gIHBhZ2U6IFBhZ2UsXG4gIG9wdGlvbnM6IENvbXBhbnlTZXJ2aWNlT3B0aW9ucyxcbiAgbW9udGg6IE1vbWVudCxcbiAgYWNjb3VudEluZGV4OiBudW1iZXIsXG4gIHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbixcbik6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgY29uc3QgdXJsID0gbmV3IFVSTChvcHRpb25zLnNlcnZpY2VzVXJsKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3JlcU5hbWUnLCAnUGlydGV5SXNrYV8yMDQnKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ0NhcmRJbmRleCcsIGFjY291bnRJbmRleC50b1N0cmluZygpKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3Nob3ZhclJhdHonLCB0cmFuc2FjdGlvbi5pZGVudGlmaWVyIS50b1N0cmluZygpKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ21vZWRDaGl1dicsIG1vbnRoLmZvcm1hdCgnTU1ZWVlZJykpO1xuXG4gIGRlYnVnKGBmZXRjaGluZyBleHRyYSBzY3JhcCBmb3IgdHJhbnNhY3Rpb24gJHt0cmFuc2FjdGlvbi5pZGVudGlmaWVyfSBmb3IgbW9udGggJHttb250aC5mb3JtYXQoJ1lZWVktTU0nKX1gKTtcbiAgY29uc3QgZGF0YSA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxTY3JhcGVkVHJhbnNhY3Rpb25EYXRhPihwYWdlLCB1cmwudG9TdHJpbmcoKSk7XG4gIGlmICghZGF0YSkge1xuICAgIHJldHVybiB0cmFuc2FjdGlvbjtcbiAgfVxuXG4gIGNvbnN0IHJhd0NhdGVnb3J5ID0gXy5nZXQoZGF0YSwgJ1BpcnRleUlza2FfMjA0QmVhbi5zZWN0b3InKSA/PyAnJztcbiAgcmV0dXJuIHtcbiAgICAuLi50cmFuc2FjdGlvbixcbiAgICBjYXRlZ29yeTogcmF3Q2F0ZWdvcnkudHJpbSgpLFxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRFeHRyYVNjcmFwQWNjb3VudChcbiAgcGFnZTogUGFnZSxcbiAgb3B0aW9uczogQ29tcGFueVNlcnZpY2VPcHRpb25zLFxuICBhY2NvdW50TWFwOiBTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXgsXG4gIG1vbnRoOiBtb21lbnQuTW9tZW50LFxuKTogUHJvbWlzZTxTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXg+IHtcbiAgY29uc3QgYWNjb3VudHM6IFNjcmFwZWRBY2NvdW50c1dpdGhJbmRleFtzdHJpbmddW10gPSBbXTtcbiAgZm9yIChjb25zdCBhY2NvdW50IG9mIE9iamVjdC52YWx1ZXMoYWNjb3VudE1hcCkpIHtcbiAgICBkZWJ1ZyhcbiAgICAgIGBnZXQgZXh0cmEgc2NyYXAgZm9yICR7YWNjb3VudC5hY2NvdW50TnVtYmVyfSB3aXRoICR7YWNjb3VudC50eG5zLmxlbmd0aH0gdHJhbnNhY3Rpb25zYCxcbiAgICAgIG1vbnRoLmZvcm1hdCgnWVlZWS1NTScpLFxuICAgICk7XG4gICAgY29uc3QgdHhuczogVHJhbnNhY3Rpb25bXSA9IFtdO1xuICAgIGZvciAoY29uc3QgdHhuc0NodW5rIG9mIF8uY2h1bmsoYWNjb3VudC50eG5zLCBSQVRFX0xJTUlULlRSQU5TQUNUSU9OU19CQVRDSF9TSVpFKSkge1xuICAgICAgZGVidWcoYHByb2Nlc3NpbmcgY2h1bmsgb2YgJHt0eG5zQ2h1bmsubGVuZ3RofSB0cmFuc2FjdGlvbnMgZm9yIGFjY291bnQgJHthY2NvdW50LmFjY291bnROdW1iZXJ9YCk7XG4gICAgICBjb25zdCB1cGRhdGVkVHhucyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICB0eG5zQ2h1bmsubWFwKHQgPT4gZ2V0RXh0cmFTY3JhcFRyYW5zYWN0aW9uKHBhZ2UsIG9wdGlvbnMsIG1vbnRoLCBhY2NvdW50LmluZGV4LCB0KSksXG4gICAgICApO1xuICAgICAgYXdhaXQgc2xlZXAoUkFURV9MSU1JVC5TTEVFUF9CRVRXRUVOKTtcbiAgICAgIHR4bnMucHVzaCguLi51cGRhdGVkVHhucyk7XG4gICAgfVxuICAgIGFjY291bnRzLnB1c2goeyAuLi5hY2NvdW50LCB0eG5zIH0pO1xuICB9XG5cbiAgcmV0dXJuIGFjY291bnRzLnJlZHVjZSgobSwgeCkgPT4gKHsgLi4ubSwgW3guYWNjb3VudE51bWJlcl06IHggfSksIHt9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QWRkaXRpb25hbFRyYW5zYWN0aW9uSW5mb3JtYXRpb24oXG4gIHNjcmFwZXJPcHRpb25zOiBTY3JhcGVyT3B0aW9ucyxcbiAgYWNjb3VudHNXaXRoSW5kZXg6IFNjcmFwZWRBY2NvdW50c1dpdGhJbmRleFtdLFxuICBwYWdlOiBQYWdlLFxuICBvcHRpb25zOiBDb21wYW55U2VydmljZU9wdGlvbnMsXG4gIGFsbE1vbnRoczogbW9tZW50Lk1vbWVudFtdLFxuKTogUHJvbWlzZTxTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXhbXT4ge1xuICBpZiAoXG4gICAgIXNjcmFwZXJPcHRpb25zLmFkZGl0aW9uYWxUcmFuc2FjdGlvbkluZm9ybWF0aW9uIHx8XG4gICAgc2NyYXBlck9wdGlvbnMub3B0SW5GZWF0dXJlcz8uaW5jbHVkZXMoJ2lzcmFjYXJkLWFtZXg6c2tpcEFkZGl0aW9uYWxUcmFuc2FjdGlvbkluZm9ybWF0aW9uJylcbiAgKSB7XG4gICAgcmV0dXJuIGFjY291bnRzV2l0aEluZGV4O1xuICB9XG4gIHJldHVybiBydW5TZXJpYWwoYWNjb3VudHNXaXRoSW5kZXgubWFwKChhLCBpKSA9PiAoKSA9PiBnZXRFeHRyYVNjcmFwQWNjb3VudChwYWdlLCBvcHRpb25zLCBhLCBhbGxNb250aHNbaV0pKSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoQWxsVHJhbnNhY3Rpb25zKFxuICBwYWdlOiBQYWdlLFxuICBvcHRpb25zOiBTY3JhcGVyT3B0aW9ucyxcbiAgY29tcGFueVNlcnZpY2VPcHRpb25zOiBDb21wYW55U2VydmljZU9wdGlvbnMsXG4gIHN0YXJ0TW9tZW50OiBNb21lbnQsXG4pIHtcbiAgY29uc3QgZnV0dXJlTW9udGhzVG9TY3JhcGUgPSBvcHRpb25zLmZ1dHVyZU1vbnRoc1RvU2NyYXBlID8/IDE7XG4gIGNvbnN0IGFsbE1vbnRocyA9IGdldEFsbE1vbnRoTW9tZW50cyhzdGFydE1vbWVudCwgZnV0dXJlTW9udGhzVG9TY3JhcGUpO1xuICBjb25zdCByZXN1bHRzOiBTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXhbXSA9IGF3YWl0IHJ1blNlcmlhbChcbiAgICBhbGxNb250aHMubWFwKG1vbnRoTW9tZW50ID0+ICgpID0+IHtcbiAgICAgIHJldHVybiBmZXRjaFRyYW5zYWN0aW9ucyhwYWdlLCBvcHRpb25zLCBjb21wYW55U2VydmljZU9wdGlvbnMsIHN0YXJ0TW9tZW50LCBtb250aE1vbWVudCk7XG4gICAgfSksXG4gICk7XG5cbiAgY29uc3QgZmluYWxSZXN1bHQgPSBhd2FpdCBnZXRBZGRpdGlvbmFsVHJhbnNhY3Rpb25JbmZvcm1hdGlvbihcbiAgICBvcHRpb25zLFxuICAgIHJlc3VsdHMsXG4gICAgcGFnZSxcbiAgICBjb21wYW55U2VydmljZU9wdGlvbnMsXG4gICAgYWxsTW9udGhzLFxuICApO1xuICBjb25zdCBjb21iaW5lZFR4bnM6IFJlY29yZDxzdHJpbmcsIFRyYW5zYWN0aW9uW10+ID0ge307XG5cbiAgZmluYWxSZXN1bHQuZm9yRWFjaChyZXN1bHQgPT4ge1xuICAgIE9iamVjdC5rZXlzKHJlc3VsdCkuZm9yRWFjaChhY2NvdW50TnVtYmVyID0+IHtcbiAgICAgIGxldCB0eG5zRm9yQWNjb3VudCA9IGNvbWJpbmVkVHhuc1thY2NvdW50TnVtYmVyXTtcbiAgICAgIGlmICghdHhuc0ZvckFjY291bnQpIHtcbiAgICAgICAgdHhuc0ZvckFjY291bnQgPSBbXTtcbiAgICAgICAgY29tYmluZWRUeG5zW2FjY291bnROdW1iZXJdID0gdHhuc0ZvckFjY291bnQ7XG4gICAgICB9XG4gICAgICBjb25zdCB0b0JlQWRkZWRUeG5zID0gcmVzdWx0W2FjY291bnROdW1iZXJdLnR4bnM7XG4gICAgICBjb21iaW5lZFR4bnNbYWNjb3VudE51bWJlcl0ucHVzaCguLi50b0JlQWRkZWRUeG5zKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgY29uc3QgYWNjb3VudHMgPSBPYmplY3Qua2V5cyhjb21iaW5lZFR4bnMpLm1hcChhY2NvdW50TnVtYmVyID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgYWNjb3VudE51bWJlcixcbiAgICAgIHR4bnM6IGNvbWJpbmVkVHhuc1thY2NvdW50TnVtYmVyXSxcbiAgICB9O1xuICB9KTtcblxuICByZXR1cm4ge1xuICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgYWNjb3VudHMsXG4gIH07XG59XG5cbnR5cGUgU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMgPSB7IGlkOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmc7IGNhcmQ2RGlnaXRzOiBzdHJpbmcgfTtcbmNsYXNzIElzcmFjYXJkQW1leEJhc2VTY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXJXaXRoQnJvd3NlcjxTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscz4ge1xuICBwcml2YXRlIGJhc2VVcmw6IHN0cmluZztcblxuICBwcml2YXRlIGNvbXBhbnlDb2RlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBzZXJ2aWNlc1VybDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFNjcmFwZXJPcHRpb25zLCBiYXNlVXJsOiBzdHJpbmcsIGNvbXBhbnlDb2RlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihvcHRpb25zKTtcblxuICAgIHRoaXMuYmFzZVVybCA9IGJhc2VVcmw7XG4gICAgdGhpcy5jb21wYW55Q29kZSA9IGNvbXBhbnlDb2RlO1xuICAgIHRoaXMuc2VydmljZXNVcmwgPSBgJHtiYXNlVXJsfS9zZXJ2aWNlcy9Qcm94eVJlcXVlc3RIYW5kbGVyLmFzaHhgO1xuICB9XG5cbiAgYXN5bmMgbG9naW4oY3JlZGVudGlhbHM6IFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzKTogUHJvbWlzZTxTY3JhcGVyU2NyYXBpbmdSZXN1bHQ+IHtcbiAgICBhd2FpdCB0aGlzLnBhZ2Uuc2V0UmVxdWVzdEludGVyY2VwdGlvbih0cnVlKTtcbiAgICB0aGlzLnBhZ2Uub24oJ3JlcXVlc3QnLCByZXF1ZXN0ID0+IHtcbiAgICAgIGlmIChyZXF1ZXN0LnVybCgpLmluY2x1ZGVzKCdkZXRlY3Rvci1kb20ubWluLmpzJykpIHtcbiAgICAgICAgZGVidWcoJ2ZvcmNlIGFib3J0IGZvciByZXF1ZXN0IGRvIGRvd25sb2FkIGRldGVjdG9yLWRvbS5taW4uanMgcmVzb3VyY2UnKTtcbiAgICAgICAgdm9pZCByZXF1ZXN0LmFib3J0KHVuZGVmaW5lZCwgaW50ZXJjZXB0aW9uUHJpb3JpdGllcy5hYm9ydCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2b2lkIHJlcXVlc3QuY29udGludWUodW5kZWZpbmVkLCBpbnRlcmNlcHRpb25Qcmlvcml0aWVzLmNvbnRpbnVlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGF3YWl0IG1hc2tIZWFkbGVzc1VzZXJBZ2VudCh0aGlzLnBhZ2UpO1xuXG4gICAgYXdhaXQgdGhpcy5uYXZpZ2F0ZVRvKGAke3RoaXMuYmFzZVVybH0vcGVyc29uYWxhcmVhL0xvZ2luYCk7XG5cbiAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY3JhcGVyUHJvZ3Jlc3NUeXBlcy5Mb2dnaW5nSW4pO1xuXG4gICAgY29uc3QgdmFsaWRhdGVVcmwgPSBgJHt0aGlzLnNlcnZpY2VzVXJsfT9yZXFOYW1lPVZhbGlkYXRlSWREYXRhYDtcbiAgICBjb25zdCB2YWxpZGF0ZVJlcXVlc3QgPSB7XG4gICAgICBpZDogY3JlZGVudGlhbHMuaWQsXG4gICAgICBjYXJkU3VmZml4OiBjcmVkZW50aWFscy5jYXJkNkRpZ2l0cyxcbiAgICAgIGNvdW50cnlDb2RlOiBDT1VOVFJZX0NPREUsXG4gICAgICBpZFR5cGU6IElEX1RZUEUsXG4gICAgICBjaGVja0xldmVsOiAnMScsXG4gICAgICBjb21wYW55Q29kZTogdGhpcy5jb21wYW55Q29kZSxcbiAgICB9O1xuICAgIGRlYnVnKCdsb2dnaW5nIGluIHdpdGggdmFsaWRhdGUgcmVxdWVzdCcpO1xuICAgIGNvbnN0IHZhbGlkYXRlUmVzdWx0ID0gYXdhaXQgZmV0Y2hQb3N0V2l0aGluUGFnZTxTY3JhcGVkTG9naW5WYWxpZGF0aW9uPih0aGlzLnBhZ2UsIHZhbGlkYXRlVXJsLCB2YWxpZGF0ZVJlcXVlc3QpO1xuICAgIGlmIChcbiAgICAgICF2YWxpZGF0ZVJlc3VsdCB8fFxuICAgICAgIXZhbGlkYXRlUmVzdWx0LkhlYWRlciB8fFxuICAgICAgdmFsaWRhdGVSZXN1bHQuSGVhZGVyLlN0YXR1cyAhPT0gJzEnIHx8XG4gICAgICAhdmFsaWRhdGVSZXN1bHQuVmFsaWRhdGVJZERhdGFCZWFuXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24gZXJyb3IgZHVyaW5nIGxvZ2luJyk7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsaWRhdGVSZXR1cm5Db2RlID0gdmFsaWRhdGVSZXN1bHQuVmFsaWRhdGVJZERhdGFCZWFuLnJldHVybkNvZGU7XG4gICAgZGVidWcoYHVzZXIgdmFsaWRhdGUgd2l0aCByZXR1cm4gY29kZSAnJHt2YWxpZGF0ZVJldHVybkNvZGV9J2ApO1xuICAgIGlmICh2YWxpZGF0ZVJldHVybkNvZGUgPT09ICcxJykge1xuICAgICAgY29uc3QgeyB1c2VyTmFtZSB9ID0gdmFsaWRhdGVSZXN1bHQuVmFsaWRhdGVJZERhdGFCZWFuO1xuXG4gICAgICBjb25zdCBsb2dpblVybCA9IGAke3RoaXMuc2VydmljZXNVcmx9P3JlcU5hbWU9cGVyZm9ybUxvZ29uSWA7XG4gICAgICBjb25zdCByZXF1ZXN0ID0ge1xuICAgICAgICBLb2RNaXNodGFtZXNoOiB1c2VyTmFtZSxcbiAgICAgICAgTWlzcGFyWmlodXk6IGNyZWRlbnRpYWxzLmlkLFxuICAgICAgICBTaXNtYTogY3JlZGVudGlhbHMucGFzc3dvcmQsXG4gICAgICAgIGNhcmRTdWZmaXg6IGNyZWRlbnRpYWxzLmNhcmQ2RGlnaXRzLFxuICAgICAgICBjb3VudHJ5Q29kZTogQ09VTlRSWV9DT0RFLFxuICAgICAgICBpZFR5cGU6IElEX1RZUEUsXG4gICAgICB9O1xuICAgICAgZGVidWcoJ3VzZXIgbG9naW4gc3RhcnRlZCcpO1xuICAgICAgY29uc3QgbG9naW5SZXN1bHQgPSBhd2FpdCBmZXRjaFBvc3RXaXRoaW5QYWdlPHsgc3RhdHVzOiBzdHJpbmcgfT4odGhpcy5wYWdlLCBsb2dpblVybCwgcmVxdWVzdCk7XG4gICAgICBkZWJ1ZyhgdXNlciBsb2dpbiB3aXRoIHN0YXR1cyAnJHtsb2dpblJlc3VsdD8uc3RhdHVzfSdgLCBsb2dpblJlc3VsdCk7XG5cbiAgICAgIGlmIChsb2dpblJlc3VsdCAmJiBsb2dpblJlc3VsdC5zdGF0dXMgPT09ICcxJykge1xuICAgICAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY3JhcGVyUHJvZ3Jlc3NUeXBlcy5Mb2dpblN1Y2Nlc3MpO1xuICAgICAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlIH07XG4gICAgICB9XG5cbiAgICAgIGlmIChsb2dpblJlc3VsdCAmJiBsb2dpblJlc3VsdC5zdGF0dXMgPT09ICczJykge1xuICAgICAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY3JhcGVyUHJvZ3Jlc3NUeXBlcy5DaGFuZ2VQYXNzd29yZCk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgICAgZXJyb3JUeXBlOiBTY3JhcGVyRXJyb3JUeXBlcy5DaGFuZ2VQYXNzd29yZCxcbiAgICAgICAgfTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NyYXBlclByb2dyZXNzVHlwZXMuTG9naW5GYWlsZWQpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgIGVycm9yVHlwZTogU2NyYXBlckVycm9yVHlwZXMuSW52YWxpZFBhc3N3b3JkLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAodmFsaWRhdGVSZXR1cm5Db2RlID09PSAnNCcpIHtcbiAgICAgIHRoaXMuZW1pdFByb2dyZXNzKFNjcmFwZXJQcm9ncmVzc1R5cGVzLkNoYW5nZVBhc3N3b3JkKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkNoYW5nZVBhc3N3b3JkLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY3JhcGVyUHJvZ3Jlc3NUeXBlcy5Mb2dpbkZhaWxlZCk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgZXJyb3JUeXBlOiBTY3JhcGVyRXJyb3JUeXBlcy5JbnZhbGlkUGFzc3dvcmQsXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoRGF0YSgpIHtcbiAgICBjb25zdCBkZWZhdWx0U3RhcnRNb21lbnQgPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAneWVhcnMnKTtcbiAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLm9wdGlvbnMuc3RhcnREYXRlIHx8IGRlZmF1bHRTdGFydE1vbWVudC50b0RhdGUoKTtcbiAgICBjb25zdCBzdGFydE1vbWVudCA9IG1vbWVudC5tYXgoZGVmYXVsdFN0YXJ0TW9tZW50LCBtb21lbnQoc3RhcnREYXRlKSk7XG5cbiAgICByZXR1cm4gZmV0Y2hBbGxUcmFuc2FjdGlvbnMoXG4gICAgICB0aGlzLnBhZ2UsXG4gICAgICB0aGlzLm9wdGlvbnMsXG4gICAgICB7XG4gICAgICAgIHNlcnZpY2VzVXJsOiB0aGlzLnNlcnZpY2VzVXJsLFxuICAgICAgICBjb21wYW55Q29kZTogdGhpcy5jb21wYW55Q29kZSxcbiAgICAgIH0sXG4gICAgICBzdGFydE1vbWVudCxcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IElzcmFjYXJkQW1leEJhc2VTY3JhcGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBRSxVQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxZQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxNQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxNQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxNQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxhQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxRQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyxjQUFBLEdBQUFULE9BQUE7QUFPQSxJQUFBVSx1QkFBQSxHQUFBVixPQUFBO0FBQ0EsSUFBQVcsT0FBQSxHQUFBWCxPQUFBO0FBRUEsSUFBQVksUUFBQSxHQUFBWixPQUFBO0FBQW1GLFNBQUFELHVCQUFBYyxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBRW5GLE1BQU1HLFVBQVUsR0FBRztFQUNq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
@@ -32,7 +32,7 @@ export type ScraperCredentials = {
32
32
  } | {
33
33
  otpLongTermToken: string;
34
34
  }));
35
- export type OptInFeatures = 'mizrahi:pendingIfNoIdentifier' | 'mizrahi:pendingIfHasGenericDescription' | 'mizrahi:pendingIfTodayTransaction';
35
+ export type OptInFeatures = 'isracard-amex:skipAdditionalTransactionInformation' | 'mizrahi:pendingIfNoIdentifier' | 'mizrahi:pendingIfHasGenericDescription' | 'mizrahi:pendingIfTodayTransaction';
36
36
  export interface FutureDebit {
37
37
  amount: number;
38
38
  amountCurrency: string;
@@ -3,4 +3,4 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL2ludGVyZmFjZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIEJyb3dzZXJDb250ZXh0LCB0eXBlIEJyb3dzZXIsIHR5cGUgUGFnZSB9IGZyb20gJ3B1cHBldGVlci1jb3JlJztcbmltcG9ydCB7IHR5cGUgQ29tcGFueVR5cGVzLCB0eXBlIFNjcmFwZXJQcm9ncmVzc1R5cGVzIH0gZnJvbSAnLi4vZGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsgdHlwZSBUcmFuc2FjdGlvbnNBY2NvdW50IH0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IHR5cGUgRXJyb3JSZXN1bHQsIHR5cGUgU2NyYXBlckVycm9yVHlwZXMgfSBmcm9tICcuL2Vycm9ycyc7XG5cbi8vIFRPRE86IFJlbW92ZSB0aGlzIHR5cGUgd2hlbiB0aGUgc2NyYXBlciAnZmFjdG9yeScgd2lsbCByZXR1cm4gY29uY3JldGUgc2NyYXBlciB0eXBlc1xuLy8gSW5zdGVhZCBvZiBhIGdlbmVyaWMgaW50ZXJmYWNlICh3aGljaCBpbiB0dXJuIHVzZXMgdGhpcyB0eXBlKVxuZXhwb3J0IHR5cGUgU2NyYXBlckNyZWRlbnRpYWxzID1cbiAgfCB7IHVzZXJDb2RlOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmcgfVxuICB8IHsgdXNlcm5hbWU6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9XG4gIHwgeyBpZDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH1cbiAgfCB7IGlkOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmc7IG51bTogc3RyaW5nIH1cbiAgfCB7IGlkOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmc7IGNhcmQ2RGlnaXRzOiBzdHJpbmcgfVxuICB8IHsgdXNlcm5hbWU6IHN0cmluZzsgbmF0aW9uYWxJRDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH1cbiAgfCAoeyBlbWFpbDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH0gJiAoXG4gICAgICB8IHtcbiAgICAgICAgICBvdHBDb2RlUmV0cmlldmVyOiAoKSA9PiBQcm9taXNlPHN0cmluZz47XG4gICAgICAgICAgcGhvbmVOdW1iZXI6IHN0cmluZztcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgb3RwTG9uZ1Rlcm1Ub2tlbjogc3RyaW5nO1xuICAgICAgICB9XG4gICAgKSk7XG5cbmV4cG9ydCB0eXBlIE9wdEluRmVhdHVyZXMgPVxuICB8ICdtaXpyYWhpOnBlbmRpbmdJZk5vSWRlbnRpZmllcidcbiAgfCAnbWl6cmFoaTpwZW5kaW5nSWZIYXNHZW5lcmljRGVzY3JpcHRpb24nXG4gIHwgJ21penJhaGk6cGVuZGluZ0lmVG9kYXlUcmFuc2FjdGlvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnV0dXJlRGViaXQge1xuICBhbW91bnQ6IG51bWJlcjtcbiAgYW1vdW50Q3VycmVuY3k6IHN0cmluZztcbiAgY2hhcmdlRGF0ZT86IHN0cmluZztcbiAgYmFua0FjY291bnROdW1iZXI/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBFeHRlcm5hbEJyb3dzZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIEFuIGV4dGVybmFsbHkgY3JlYXRlZCBicm93c2VyIGluc3RhbmNlLlxuICAgKiB5b3UgY2FuIGdldCBhIGJyb3dzZXIgZGlyZWN0bHkgZnJvbSBwdXBwZXRlZXIgdmlhIGBwdXBwZXRlZXIubGF1bmNoKClgXG4gICAqXG4gICAqIE5vdGU6IFRoZSBicm93c2VyIHdpbGwgYmUgY2xvc2VkIGJ5IHRoZSBsaWJyYXJ5IGFmdGVyIHRoZSBzY3JhcGVyIGZpbmlzaGVzIHVubGVzcyBgc2tpcENsb3NlQnJvd3NlcmAgaXMgc2V0IHRvIHRydWVcbiAgICovXG4gIGJyb3dzZXI6IEJyb3dzZXI7XG5cbiAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBicm93c2VyIHdpbGwgbm90IGJlIGNsb3NlZCBieSB0aGUgbGlicmFyeSBhZnRlciB0aGUgc2NyYXBlciBmaW5pc2hlc1xuICAgKi9cbiAgc2tpcENsb3NlQnJvd3Nlcj86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBFeHRlcm5hbEJyb3dzZXJDb250ZXh0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBbiBleHRlcm5hbGx5IG1hbmFnZWQgYnJvd3NlciBjb250ZXh0LiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHlvdSB3YW50IHRvIG1hbmFnZSB0aGUgYnJvd3NlclxuICAgKi9cbiAgYnJvd3NlckNvbnRleHQ6IEJyb3dzZXJDb250ZXh0O1xufVxuXG5pbnRlcmZhY2UgRGVmYXVsdEJyb3dzZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIHNob3dzIHRoZSBicm93c2VyIHdoaWxlIHNjcmFwaW5nLCBnb29kIGZvciBkZWJ1Z2dpbmcgKGRlZmF1bHQgZmFsc2UpXG4gICAqL1xuICBzaG93QnJvd3Nlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHByb3ZpZGUgYSBwYXRjaCB0byBsb2NhbCBjaHJvbWl1bSB0byBiZSB1c2VkIGJ5IHB1cHBldGVlci4gUmVsZXZhbnQgd2hlbiB1c2luZ1xuICAgKiBgaXNyYWVsaS1iYW5rLXNjcmFwZXJzLWNvcmVgIGxpYnJhcnlcbiAgICovXG4gIGV4ZWN1dGFibGVQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBicm93c2VyIGluc3RhbmNlLiBUaGUgbGlzdCBvZiBmbGFncyBjYW4gYmUgZm91bmQgaW5cbiAgICpcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9Nb3ppbGxhL0NvbW1hbmRfTGluZV9PcHRpb25zXG4gICAqIGh0dHBzOi8vcGV0ZXIuc2gvZXhwZXJpbWVudHMvY2hyb21pdW0tY29tbWFuZC1saW5lLXN3aXRjaGVzL1xuICAgKi9cbiAgYXJncz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIG5hdmlnYXRpb24gdGltZSBpbiBtaWxsaXNlY29uZHMsIHBhc3MgMCB0byBkaXNhYmxlIHRpbWVvdXQuXG4gICAqIEBkZWZhdWx0IDMwMDAwXG4gICAqL1xuICB0aW1lb3V0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBhZGp1c3QgdGhlIGJyb3dzZXIgaW5zdGFuY2UgYmVmb3JlIGl0IGlzIGJlaW5nIHVzZWRcbiAgICpcbiAgICogQHBhcmFtIGJyb3dzZXJcbiAgICovXG4gIHByZXBhcmVCcm93c2VyPzogKGJyb3dzZXI6IEJyb3dzZXIpID0+IFByb21pc2U8dm9pZD47XG59XG5cbnR5cGUgU2NyYXBlckJyb3dzZXJPcHRpb25zID0gRXh0ZXJuYWxCcm93c2VyT3B0aW9ucyB8IEV4dGVybmFsQnJvd3NlckNvbnRleHRPcHRpb25zIHwgRGVmYXVsdEJyb3dzZXJPcHRpb25zO1xuXG5leHBvcnQgdHlwZSBTY3JhcGVyT3B0aW9ucyA9IFNjcmFwZXJCcm93c2VyT3B0aW9ucyAmIHtcbiAgLyoqXG4gICAqIFRoZSBjb21wYW55IHlvdSB3YW50IHRvIHNjcmFwZVxuICAgKi9cbiAgY29tcGFueUlkOiBDb21wYW55VHlwZXM7XG5cbiAgLyoqXG4gICAqIGluY2x1ZGUgbW9yZSBkZWJ1ZyBpbmZvIGFib3V0IGluIHRoZSBvdXRwdXRcbiAgICovXG4gIHZlcmJvc2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiB0aGUgZGF0ZSB0byBmZXRjaCB0cmFuc2FjdGlvbnMgZnJvbSAoY2FuJ3QgYmUgYmVmb3JlIHRoZSBtaW5pbXVtIGFsbG93ZWQgdGltZSBkaWZmZXJlbmNlIGZvciB0aGUgc2NyYXBlcilcbiAgICovXG4gIHN0YXJ0RGF0ZTogRGF0ZTtcblxuICAvKipcbiAgICogc2NyYXBlIHRyYW5zYWN0aW9ucyB0byBiZSBwcm9jZXNzZWQgWCBtb250aHMgaW4gdGhlIGZ1dHVyZVxuICAgKi9cbiAgZnV0dXJlTW9udGhzVG9TY3JhcGU/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIGlmIHNldCB0byB0cnVlLCBhbGwgaW5zdGFsbG1lbnQgdHJhbnNhY3Rpb25zIHdpbGwgYmUgY29tYmluZSBpbnRvIHRoZSBmaXJzdCBvbmVcbiAgICovXG4gIGNvbWJpbmVJbnN0YWxsbWVudHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBhZGp1c3QgdGhlIHBhZ2UgaW5zdGFuY2UgYmVmb3JlIGl0IGlzIGJlaW5nIHVzZWQuXG4gICAqXG4gICAqIEBwYXJhbSBwYWdlXG4gICAqL1xuICBwcmVwYXJlUGFnZT86IChwYWdlOiBQYWdlKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBpZiBzZXQsIHN0b3JlIGEgc2NyZWVuc2hvdCBpZiBmYWlsZWQgdG8gc2NyYXBlLiBVc2VkIGZvciBkZWJ1ZyBwdXJwb3Nlc1xuICAgKi9cbiAgc3RvcmVGYWlsdXJlU2NyZWVuU2hvdFBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIGlmIHNldCwgd2lsbCBzZXQgdGhlIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIG9mIHB1cHBldGVlcidzIGBwYWdlLnNldERlZmF1bHRUaW1lb3V0YC5cbiAgICovXG4gIGRlZmF1bHRUaW1lb3V0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBtYW5pcHVsYXRpb24gb2Ygb3V0cHV0IGRhdGFcbiAgICovXG4gIG91dHB1dERhdGE/OiBPdXRwdXREYXRhT3B0aW9ucztcblxuICAvKipcbiAgICogUGVyZm9ybSBhZGRpdGlvbmFsIG9wZXJhdGlvbiBmb3IgZWFjaCB0cmFuc2FjdGlvbiB0byBnZXQgbW9yZSBpbmZvcm1hdGlvbiAoTGlrZSBjYXRlZ29yeSkgYWJvdXQgaXQuXG4gICAqIFBsZWFzZSBub3RlOiBJdCB3aWxsIHRha2UgbW9yZSB0aW1lIHRvIGZpbmlzaCB0aGUgcHJvY2Vzcy5cbiAgICovXG4gIGFkZGl0aW9uYWxUcmFuc2FjdGlvbkluZm9ybWF0aW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWRqdXN0IHRoZSB2aWV3cG9ydCBzaXplIG9mIHRoZSBicm93c2VyIHBhZ2UuXG4gICAqIElmIG5vdCBzZXQsIHRoZSBkZWZhdWx0IHZpZXdwb3J0IHNpemUgb2YgMTAyNHg3Njggd2lsbCBiZSB1c2VkLlxuICAgKi9cbiAgdmlld3BvcnRTaXplPzoge1xuICAgIHdpZHRoOiBudW1iZXI7XG4gICAgaGVpZ2h0OiBudW1iZXI7XG4gIH07XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gcmV0cnkgdGhlIG5hdmlnYXRpb24gaW4gY2FzZSBvZiBhIGZhaWx1cmUgKGRlZmF1bHQgMClcbiAgICovXG4gIG5hdmlnYXRpb25SZXRyeUNvdW50PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBPcHQtaW4gZmVhdHVyZXMgZm9yIHRoZSBzY3JhcGVycywgYWxsb3dpbmcgc2FmZSByb2xsb3V0IG9mIG5ldyBicmVha2luZyBjaGFuZ2VzLlxuICAgKi9cbiAgb3B0SW5GZWF0dXJlcz86IEFycmF5PE9wdEluRmVhdHVyZXM+O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBPdXRwdXREYXRhT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBpZiB0cnVlLCB0aGUgcmVzdWx0IHdvdWxkbid0IGJlIGZpbHRlcmVkIG91dCBieSBkYXRlLCBhbmQgeW91IHdpbGwgcmV0dXJuIHVuZmlsdGVyZWQgc2NyYXBwZWQgZGF0YS5cbiAgICovXG4gIGVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NyYXBlclNjcmFwaW5nUmVzdWx0IHtcbiAgc3VjY2VzczogYm9vbGVhbjtcbiAgYWNjb3VudHM/OiBUcmFuc2FjdGlvbnNBY2NvdW50W107XG4gIGZ1dHVyZURlYml0cz86IEZ1dHVyZURlYml0W107XG4gIGVycm9yVHlwZT86IFNjcmFwZXJFcnJvclR5cGVzO1xuICBlcnJvck1lc3NhZ2U/OiBzdHJpbmc7IC8vIG9ubHkgb24gc3VjY2Vzcz1mYWxzZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjcmFwZXI8VENyZWRlbnRpYWxzIGV4dGVuZHMgU2NyYXBlckNyZWRlbnRpYWxzPiB7XG4gIHNjcmFwZShjcmVkZW50aWFsczogVENyZWRlbnRpYWxzKTogUHJvbWlzZTxTY3JhcGVyU2NyYXBpbmdSZXN1bHQ+O1xuICBvblByb2dyZXNzKGZ1bmM6IChjb21wYW55SWQ6IENvbXBhbnlUeXBlcywgcGF5bG9hZDogeyB0eXBlOiBTY3JhcGVyUHJvZ3Jlc3NUeXBlcyB9KSA9PiB2b2lkKTogdm9pZDtcbiAgdHJpZ2dlclR3b0ZhY3RvckF1dGgocGhvbmVOdW1iZXI6IHN0cmluZyk6IFByb21pc2U8U2NyYXBlclR3b0ZhY3RvckF1dGhUcmlnZ2VyUmVzdWx0PjtcbiAgZ2V0TG9uZ1Rlcm1Ud29GYWN0b3JUb2tlbihvdHBDb2RlOiBzdHJpbmcpOiBQcm9taXNlPFNjcmFwZXJHZXRMb25nVGVybVR3b0ZhY3RvclRva2VuUmVzdWx0Pjtcbn1cblxuZXhwb3J0IHR5cGUgU2NyYXBlclR3b0ZhY3RvckF1dGhUcmlnZ2VyUmVzdWx0ID1cbiAgfCBFcnJvclJlc3VsdFxuICB8IHtcbiAgICAgIHN1Y2Nlc3M6IHRydWU7XG4gICAgfTtcblxuZXhwb3J0IHR5cGUgU2NyYXBlckdldExvbmdUZXJtVHdvRmFjdG9yVG9rZW5SZXN1bHQgPVxuICB8IEVycm9yUmVzdWx0XG4gIHwge1xuICAgICAgc3VjY2VzczogdHJ1ZTtcbiAgICAgIGxvbmdUZXJtVHdvRmFjdG9yQXV0aFRva2VuOiBzdHJpbmc7XG4gICAgfTtcblxuZXhwb3J0IGludGVyZmFjZSBTY3JhcGVyTG9naW5SZXN1bHQge1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBlcnJvclR5cGU/OiBTY3JhcGVyRXJyb3JUeXBlcztcbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nOyAvLyBvbmx5IG9uIHN1Y2Nlc3M9ZmFsc2VcbiAgcGVyc2lzdGVudE90cFRva2VuPzogc3RyaW5nO1xufVxuIl0sIm1hcHBpbmdzIjoiIiwiaWdub3JlTGlzdCI6W119
6
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL2ludGVyZmFjZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIEJyb3dzZXJDb250ZXh0LCB0eXBlIEJyb3dzZXIsIHR5cGUgUGFnZSB9IGZyb20gJ3B1cHBldGVlci1jb3JlJztcbmltcG9ydCB7IHR5cGUgQ29tcGFueVR5cGVzLCB0eXBlIFNjcmFwZXJQcm9ncmVzc1R5cGVzIH0gZnJvbSAnLi4vZGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsgdHlwZSBUcmFuc2FjdGlvbnNBY2NvdW50IH0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IHR5cGUgRXJyb3JSZXN1bHQsIHR5cGUgU2NyYXBlckVycm9yVHlwZXMgfSBmcm9tICcuL2Vycm9ycyc7XG5cbi8vIFRPRE86IFJlbW92ZSB0aGlzIHR5cGUgd2hlbiB0aGUgc2NyYXBlciAnZmFjdG9yeScgd2lsbCByZXR1cm4gY29uY3JldGUgc2NyYXBlciB0eXBlc1xuLy8gSW5zdGVhZCBvZiBhIGdlbmVyaWMgaW50ZXJmYWNlICh3aGljaCBpbiB0dXJuIHVzZXMgdGhpcyB0eXBlKVxuZXhwb3J0IHR5cGUgU2NyYXBlckNyZWRlbnRpYWxzID1cbiAgfCB7IHVzZXJDb2RlOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmcgfVxuICB8IHsgdXNlcm5hbWU6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9XG4gIHwgeyBpZDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH1cbiAgfCB7IGlkOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmc7IG51bTogc3RyaW5nIH1cbiAgfCB7IGlkOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmc7IGNhcmQ2RGlnaXRzOiBzdHJpbmcgfVxuICB8IHsgdXNlcm5hbWU6IHN0cmluZzsgbmF0aW9uYWxJRDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH1cbiAgfCAoeyBlbWFpbDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH0gJiAoXG4gICAgICB8IHtcbiAgICAgICAgICBvdHBDb2RlUmV0cmlldmVyOiAoKSA9PiBQcm9taXNlPHN0cmluZz47XG4gICAgICAgICAgcGhvbmVOdW1iZXI6IHN0cmluZztcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgb3RwTG9uZ1Rlcm1Ub2tlbjogc3RyaW5nO1xuICAgICAgICB9XG4gICAgKSk7XG5cbmV4cG9ydCB0eXBlIE9wdEluRmVhdHVyZXMgPVxuICB8ICdpc3JhY2FyZC1hbWV4OnNraXBBZGRpdGlvbmFsVHJhbnNhY3Rpb25JbmZvcm1hdGlvbidcbiAgfCAnbWl6cmFoaTpwZW5kaW5nSWZOb0lkZW50aWZpZXInXG4gIHwgJ21penJhaGk6cGVuZGluZ0lmSGFzR2VuZXJpY0Rlc2NyaXB0aW9uJ1xuICB8ICdtaXpyYWhpOnBlbmRpbmdJZlRvZGF5VHJhbnNhY3Rpb24nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZ1dHVyZURlYml0IHtcbiAgYW1vdW50OiBudW1iZXI7XG4gIGFtb3VudEN1cnJlbmN5OiBzdHJpbmc7XG4gIGNoYXJnZURhdGU/OiBzdHJpbmc7XG4gIGJhbmtBY2NvdW50TnVtYmVyPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgRXh0ZXJuYWxCcm93c2VyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBbiBleHRlcm5hbGx5IGNyZWF0ZWQgYnJvd3NlciBpbnN0YW5jZS5cbiAgICogeW91IGNhbiBnZXQgYSBicm93c2VyIGRpcmVjdGx5IGZyb20gcHVwcGV0ZWVyIHZpYSBgcHVwcGV0ZWVyLmxhdW5jaCgpYFxuICAgKlxuICAgKiBOb3RlOiBUaGUgYnJvd3NlciB3aWxsIGJlIGNsb3NlZCBieSB0aGUgbGlicmFyeSBhZnRlciB0aGUgc2NyYXBlciBmaW5pc2hlcyB1bmxlc3MgYHNraXBDbG9zZUJyb3dzZXJgIGlzIHNldCB0byB0cnVlXG4gICAqL1xuICBicm93c2VyOiBCcm93c2VyO1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgYnJvd3NlciB3aWxsIG5vdCBiZSBjbG9zZWQgYnkgdGhlIGxpYnJhcnkgYWZ0ZXIgdGhlIHNjcmFwZXIgZmluaXNoZXNcbiAgICovXG4gIHNraXBDbG9zZUJyb3dzZXI/OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgRXh0ZXJuYWxCcm93c2VyQ29udGV4dE9wdGlvbnMge1xuICAvKipcbiAgICogQW4gZXh0ZXJuYWxseSBtYW5hZ2VkIGJyb3dzZXIgY29udGV4dC4gVGhpcyBpcyB1c2VmdWwgd2hlbiB5b3Ugd2FudCB0byBtYW5hZ2UgdGhlIGJyb3dzZXJcbiAgICovXG4gIGJyb3dzZXJDb250ZXh0OiBCcm93c2VyQ29udGV4dDtcbn1cblxuaW50ZXJmYWNlIERlZmF1bHRCcm93c2VyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBzaG93cyB0aGUgYnJvd3NlciB3aGlsZSBzY3JhcGluZywgZ29vZCBmb3IgZGVidWdnaW5nIChkZWZhdWx0IGZhbHNlKVxuICAgKi9cbiAgc2hvd0Jyb3dzZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBwcm92aWRlIGEgcGF0Y2ggdG8gbG9jYWwgY2hyb21pdW0gdG8gYmUgdXNlZCBieSBwdXBwZXRlZXIuIFJlbGV2YW50IHdoZW4gdXNpbmdcbiAgICogYGlzcmFlbGktYmFuay1zY3JhcGVycy1jb3JlYCBsaWJyYXJ5XG4gICAqL1xuICBleGVjdXRhYmxlUGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogYWRkaXRpb25hbCBhcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgYnJvd3NlciBpbnN0YW5jZS4gVGhlIGxpc3Qgb2YgZmxhZ3MgY2FuIGJlIGZvdW5kIGluXG4gICAqXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvTW96aWxsYS9Db21tYW5kX0xpbmVfT3B0aW9uc1xuICAgKiBodHRwczovL3BldGVyLnNoL2V4cGVyaW1lbnRzL2Nocm9taXVtLWNvbW1hbmQtbGluZS1zd2l0Y2hlcy9cbiAgICovXG4gIGFyZ3M/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogTWF4aW11bSBuYXZpZ2F0aW9uIHRpbWUgaW4gbWlsbGlzZWNvbmRzLCBwYXNzIDAgdG8gZGlzYWJsZSB0aW1lb3V0LlxuICAgKiBAZGVmYXVsdCAzMDAwMFxuICAgKi9cbiAgdGltZW91dD86IG51bWJlcjtcblxuICAvKipcbiAgICogYWRqdXN0IHRoZSBicm93c2VyIGluc3RhbmNlIGJlZm9yZSBpdCBpcyBiZWluZyB1c2VkXG4gICAqXG4gICAqIEBwYXJhbSBicm93c2VyXG4gICAqL1xuICBwcmVwYXJlQnJvd3Nlcj86IChicm93c2VyOiBCcm93c2VyKSA9PiBQcm9taXNlPHZvaWQ+O1xufVxuXG50eXBlIFNjcmFwZXJCcm93c2VyT3B0aW9ucyA9IEV4dGVybmFsQnJvd3Nlck9wdGlvbnMgfCBFeHRlcm5hbEJyb3dzZXJDb250ZXh0T3B0aW9ucyB8IERlZmF1bHRCcm93c2VyT3B0aW9ucztcblxuZXhwb3J0IHR5cGUgU2NyYXBlck9wdGlvbnMgPSBTY3JhcGVyQnJvd3Nlck9wdGlvbnMgJiB7XG4gIC8qKlxuICAgKiBUaGUgY29tcGFueSB5b3Ugd2FudCB0byBzY3JhcGVcbiAgICovXG4gIGNvbXBhbnlJZDogQ29tcGFueVR5cGVzO1xuXG4gIC8qKlxuICAgKiBpbmNsdWRlIG1vcmUgZGVidWcgaW5mbyBhYm91dCBpbiB0aGUgb3V0cHV0XG4gICAqL1xuICB2ZXJib3NlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogdGhlIGRhdGUgdG8gZmV0Y2ggdHJhbnNhY3Rpb25zIGZyb20gKGNhbid0IGJlIGJlZm9yZSB0aGUgbWluaW11bSBhbGxvd2VkIHRpbWUgZGlmZmVyZW5jZSBmb3IgdGhlIHNjcmFwZXIpXG4gICAqL1xuICBzdGFydERhdGU6IERhdGU7XG5cbiAgLyoqXG4gICAqIHNjcmFwZSB0cmFuc2FjdGlvbnMgdG8gYmUgcHJvY2Vzc2VkIFggbW9udGhzIGluIHRoZSBmdXR1cmVcbiAgICovXG4gIGZ1dHVyZU1vbnRoc1RvU2NyYXBlPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBpZiBzZXQgdG8gdHJ1ZSwgYWxsIGluc3RhbGxtZW50IHRyYW5zYWN0aW9ucyB3aWxsIGJlIGNvbWJpbmUgaW50byB0aGUgZmlyc3Qgb25lXG4gICAqL1xuICBjb21iaW5lSW5zdGFsbG1lbnRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogYWRqdXN0IHRoZSBwYWdlIGluc3RhbmNlIGJlZm9yZSBpdCBpcyBiZWluZyB1c2VkLlxuICAgKlxuICAgKiBAcGFyYW0gcGFnZVxuICAgKi9cbiAgcHJlcGFyZVBhZ2U/OiAocGFnZTogUGFnZSkgPT4gUHJvbWlzZTx2b2lkPjtcblxuICAvKipcbiAgICogaWYgc2V0LCBzdG9yZSBhIHNjcmVlbnNob3QgaWYgZmFpbGVkIHRvIHNjcmFwZS4gVXNlZCBmb3IgZGVidWcgcHVycG9zZXNcbiAgICovXG4gIHN0b3JlRmFpbHVyZVNjcmVlblNob3RQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBpZiBzZXQsIHdpbGwgc2V0IHRoZSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyBvZiBwdXBwZXRlZXIncyBgcGFnZS5zZXREZWZhdWx0VGltZW91dGAuXG4gICAqL1xuICBkZWZhdWx0VGltZW91dD86IG51bWJlcjtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgbWFuaXB1bGF0aW9uIG9mIG91dHB1dCBkYXRhXG4gICAqL1xuICBvdXRwdXREYXRhPzogT3V0cHV0RGF0YU9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFBlcmZvcm0gYWRkaXRpb25hbCBvcGVyYXRpb24gZm9yIGVhY2ggdHJhbnNhY3Rpb24gdG8gZ2V0IG1vcmUgaW5mb3JtYXRpb24gKExpa2UgY2F0ZWdvcnkpIGFib3V0IGl0LlxuICAgKiBQbGVhc2Ugbm90ZTogSXQgd2lsbCB0YWtlIG1vcmUgdGltZSB0byBmaW5pc2ggdGhlIHByb2Nlc3MuXG4gICAqL1xuICBhZGRpdGlvbmFsVHJhbnNhY3Rpb25JbmZvcm1hdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFkanVzdCB0aGUgdmlld3BvcnQgc2l6ZSBvZiB0aGUgYnJvd3NlciBwYWdlLlxuICAgKiBJZiBub3Qgc2V0LCB0aGUgZGVmYXVsdCB2aWV3cG9ydCBzaXplIG9mIDEwMjR4NzY4IHdpbGwgYmUgdXNlZC5cbiAgICovXG4gIHZpZXdwb3J0U2l6ZT86IHtcbiAgICB3aWR0aDogbnVtYmVyO1xuICAgIGhlaWdodDogbnVtYmVyO1xuICB9O1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIHJldHJ5IHRoZSBuYXZpZ2F0aW9uIGluIGNhc2Ugb2YgYSBmYWlsdXJlIChkZWZhdWx0IDApXG4gICAqL1xuICBuYXZpZ2F0aW9uUmV0cnlDb3VudD86IG51bWJlcjtcblxuICAvKipcbiAgICogT3B0LWluIGZlYXR1cmVzIGZvciB0aGUgc2NyYXBlcnMsIGFsbG93aW5nIHNhZmUgcm9sbG91dCBvZiBuZXcgYnJlYWtpbmcgY2hhbmdlcy5cbiAgICovXG4gIG9wdEluRmVhdHVyZXM/OiBBcnJheTxPcHRJbkZlYXR1cmVzPjtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3V0cHV0RGF0YU9wdGlvbnMge1xuICAvKipcbiAgICogaWYgdHJ1ZSwgdGhlIHJlc3VsdCB3b3VsZG4ndCBiZSBmaWx0ZXJlZCBvdXQgYnkgZGF0ZSwgYW5kIHlvdSB3aWxsIHJldHVybiB1bmZpbHRlcmVkIHNjcmFwcGVkIGRhdGEuXG4gICAqL1xuICBlbmFibGVUcmFuc2FjdGlvbnNGaWx0ZXJCeURhdGU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjcmFwZXJTY3JhcGluZ1Jlc3VsdCB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIGFjY291bnRzPzogVHJhbnNhY3Rpb25zQWNjb3VudFtdO1xuICBmdXR1cmVEZWJpdHM/OiBGdXR1cmVEZWJpdFtdO1xuICBlcnJvclR5cGU/OiBTY3JhcGVyRXJyb3JUeXBlcztcbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nOyAvLyBvbmx5IG9uIHN1Y2Nlc3M9ZmFsc2Vcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY3JhcGVyPFRDcmVkZW50aWFscyBleHRlbmRzIFNjcmFwZXJDcmVkZW50aWFscz4ge1xuICBzY3JhcGUoY3JlZGVudGlhbHM6IFRDcmVkZW50aWFscyk6IFByb21pc2U8U2NyYXBlclNjcmFwaW5nUmVzdWx0PjtcbiAgb25Qcm9ncmVzcyhmdW5jOiAoY29tcGFueUlkOiBDb21wYW55VHlwZXMsIHBheWxvYWQ6IHsgdHlwZTogU2NyYXBlclByb2dyZXNzVHlwZXMgfSkgPT4gdm9pZCk6IHZvaWQ7XG4gIHRyaWdnZXJUd29GYWN0b3JBdXRoKHBob25lTnVtYmVyOiBzdHJpbmcpOiBQcm9taXNlPFNjcmFwZXJUd29GYWN0b3JBdXRoVHJpZ2dlclJlc3VsdD47XG4gIGdldExvbmdUZXJtVHdvRmFjdG9yVG9rZW4ob3RwQ29kZTogc3RyaW5nKTogUHJvbWlzZTxTY3JhcGVyR2V0TG9uZ1Rlcm1Ud29GYWN0b3JUb2tlblJlc3VsdD47XG59XG5cbmV4cG9ydCB0eXBlIFNjcmFwZXJUd29GYWN0b3JBdXRoVHJpZ2dlclJlc3VsdCA9XG4gIHwgRXJyb3JSZXN1bHRcbiAgfCB7XG4gICAgICBzdWNjZXNzOiB0cnVlO1xuICAgIH07XG5cbmV4cG9ydCB0eXBlIFNjcmFwZXJHZXRMb25nVGVybVR3b0ZhY3RvclRva2VuUmVzdWx0ID1cbiAgfCBFcnJvclJlc3VsdFxuICB8IHtcbiAgICAgIHN1Y2Nlc3M6IHRydWU7XG4gICAgICBsb25nVGVybVR3b0ZhY3RvckF1dGhUb2tlbjogc3RyaW5nO1xuICAgIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NyYXBlckxvZ2luUmVzdWx0IHtcbiAgc3VjY2VzczogYm9vbGVhbjtcbiAgZXJyb3JUeXBlPzogU2NyYXBlckVycm9yVHlwZXM7XG4gIGVycm9yTWVzc2FnZT86IHN0cmluZzsgLy8gb25seSBvbiBzdWNjZXNzPWZhbHNlXG4gIHBlcnNpc3RlbnRPdHBUb2tlbj86IHN0cmluZztcbn1cbiJdLCJtYXBwaW5ncyI6IiIsImlnbm9yZUxpc3QiOltdfQ==
@@ -4,14 +4,16 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
+ var _debug = _interopRequireDefault(require("debug"));
7
8
  var _baseIsracardAmex = _interopRequireDefault(require("./base-isracard-amex"));
8
9
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
9
10
  const BASE_URL = 'https://digital.isracard.co.il';
10
11
  const COMPANY_CODE = '11';
12
+ _debug.default.enable('israeli-bank-scrapers:base-isracard-amex');
11
13
  class IsracardScraper extends _baseIsracardAmex.default {
12
14
  constructor(options) {
13
15
  super(options, BASE_URL, COMPANY_CODE);
14
16
  }
15
17
  }
16
18
  var _default = exports.default = IsracardScraper;
17
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmFzZUlzcmFjYXJkQW1leCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiQkFTRV9VUkwiLCJDT01QQU5ZX0NPREUiLCJJc3JhY2FyZFNjcmFwZXIiLCJJc3JhY2FyZEFtZXhCYXNlU2NyYXBlciIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9pc3JhY2FyZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgSXNyYWNhcmRBbWV4QmFzZVNjcmFwZXIgZnJvbSAnLi9iYXNlLWlzcmFjYXJkLWFtZXgnO1xuaW1wb3J0IHsgdHlwZSBTY3JhcGVyT3B0aW9ucyB9IGZyb20gJy4vaW50ZXJmYWNlJztcblxuY29uc3QgQkFTRV9VUkwgPSAnaHR0cHM6Ly9kaWdpdGFsLmlzcmFjYXJkLmNvLmlsJztcbmNvbnN0IENPTVBBTllfQ09ERSA9ICcxMSc7XG5cbmNsYXNzIElzcmFjYXJkU2NyYXBlciBleHRlbmRzIElzcmFjYXJkQW1leEJhc2VTY3JhcGVyIHtcbiAgY29uc3RydWN0b3Iob3B0aW9uczogU2NyYXBlck9wdGlvbnMpIHtcbiAgICBzdXBlcihvcHRpb25zLCBCQVNFX1VSTCwgQ09NUEFOWV9DT0RFKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBJc3JhY2FyZFNjcmFwZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLGlCQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBMkQsU0FBQUQsdUJBQUFFLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFHM0QsTUFBTUcsUUFBUSxHQUFHLGdDQUFnQztBQUNqRCxNQUFNQyxZQUFZLEdBQUcsSUFBSTtBQUV6QixNQUFNQyxlQUFlLFNBQVNDLHlCQUF1QixDQUFDO0VBQ3BEQyxXQUFXQSxDQUFDQyxPQUF1QixFQUFFO0lBQ25DLEtBQUssQ0FBQ0EsT0FBTyxFQUFFTCxRQUFRLEVBQUVDLFlBQVksQ0FBQztFQUN4QztBQUNGO0FBQUMsSUFBQUssUUFBQSxHQUFBQyxPQUFBLENBQUFSLE9BQUEsR0FFY0csZUFBZSIsImlnbm9yZUxpc3QiOltdfQ==
19
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVidWciLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9iYXNlSXNyYWNhcmRBbWV4IiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiQkFTRV9VUkwiLCJDT01QQU5ZX0NPREUiLCJkZWJ1ZyIsImVuYWJsZSIsIklzcmFjYXJkU2NyYXBlciIsIklzcmFjYXJkQW1leEJhc2VTY3JhcGVyIiwiY29uc3RydWN0b3IiLCJvcHRpb25zIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL2lzcmFjYXJkLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgSXNyYWNhcmRBbWV4QmFzZVNjcmFwZXIgZnJvbSAnLi9iYXNlLWlzcmFjYXJkLWFtZXgnO1xuaW1wb3J0IHsgdHlwZSBTY3JhcGVyT3B0aW9ucyB9IGZyb20gJy4vaW50ZXJmYWNlJztcblxuY29uc3QgQkFTRV9VUkwgPSAnaHR0cHM6Ly9kaWdpdGFsLmlzcmFjYXJkLmNvLmlsJztcbmNvbnN0IENPTVBBTllfQ09ERSA9ICcxMSc7XG5cbmRlYnVnLmVuYWJsZSgnaXNyYWVsaS1iYW5rLXNjcmFwZXJzOmJhc2UtaXNyYWNhcmQtYW1leCcpO1xuXG5jbGFzcyBJc3JhY2FyZFNjcmFwZXIgZXh0ZW5kcyBJc3JhY2FyZEFtZXhCYXNlU2NyYXBlciB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFNjcmFwZXJPcHRpb25zKSB7XG4gICAgc3VwZXIob3B0aW9ucywgQkFTRV9VUkwsIENPTVBBTllfQ09ERSk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgSXNyYWNhcmRTY3JhcGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxpQkFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQTJELFNBQUFELHVCQUFBRyxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBRzNELE1BQU1HLFFBQVEsR0FBRyxnQ0FBZ0M7QUFDakQsTUFBTUMsWUFBWSxHQUFHLElBQUk7QUFFekJDLGNBQUssQ0FBQ0MsTUFBTSxDQUFDLDBDQUEwQyxDQUFDO0FBRXhELE1BQU1DLGVBQWUsU0FBU0MseUJBQXVCLENBQUM7RUFDcERDLFdBQVdBLENBQUNDLE9BQXVCLEVBQUU7SUFDbkMsS0FBSyxDQUFDQSxPQUFPLEVBQUVQLFFBQVEsRUFBRUMsWUFBWSxDQUFDO0VBQ3hDO0FBQ0Y7QUFBQyxJQUFBTyxRQUFBLEdBQUFDLE9BQUEsQ0FBQVYsT0FBQSxHQUVjSyxlQUFlIiwiaWdub3JlTGlzdCI6W119
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "israeli-bank-scrapers-core",
3
- "version": "6.3.3",
3
+ "version": "6.3.4",
4
4
  "private": false,
5
5
  "description": "Provide scrapers for all major Israeli banks and credit card companies",
6
6
  "engines": {