israeli-bank-scrapers 6.3.2 → 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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbW9tZW50IiwiX2NvbnN0YW50cyIsIl9kZWZpbml0aW9ucyIsIl9kYXRlcyIsIl9kZWJ1ZyIsIl9mZXRjaCIsIl90cmFuc2FjdGlvbnMiLCJfd2FpdGluZyIsIl90cmFuc2FjdGlvbnMyIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJfZXJyb3JzIiwiX2Jyb3dzZXIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJDT1VOVFJZX0NPREUiLCJJRF9UWVBFIiwiSU5TVEFMTE1FTlRTX0tFWVdPUkQiLCJEQVRFX0ZPUk1BVCIsImRlYnVnIiwiZ2V0RGVidWciLCJnZXRBY2NvdW50c1VybCIsInNlcnZpY2VzVXJsIiwibW9udGhNb21lbnQiLCJiaWxsaW5nRGF0ZSIsImZvcm1hdCIsInVybCIsIlVSTCIsInNlYXJjaFBhcmFtcyIsInNldCIsInRvU3RyaW5nIiwiZmV0Y2hBY2NvdW50cyIsInBhZ2UiLCJkYXRhVXJsIiwiZGF0YVJlc3VsdCIsImZldGNoR2V0V2l0aGluUGFnZSIsIl8iLCJnZXQiLCJEYXNoYm9hcmRNb250aEJlYW4iLCJjYXJkc0NoYXJnZXMiLCJtYXAiLCJjYXJkQ2hhcmdlIiwiaW5kZXgiLCJwYXJzZUludCIsImNhcmRJbmRleCIsImFjY291bnROdW1iZXIiLCJjYXJkTnVtYmVyIiwicHJvY2Vzc2VkRGF0ZSIsIm1vbWVudCIsInRvSVNPU3RyaW5nIiwiZ2V0VHJhbnNhY3Rpb25zVXJsIiwibW9udGgiLCJ5ZWFyIiwibW9udGhTdHIiLCJjb252ZXJ0Q3VycmVuY3kiLCJjdXJyZW5jeVN0ciIsIlNIRUtFTF9DVVJSRU5DWV9LRVlXT1JEIiwiQUxUX1NIRUtFTF9DVVJSRU5DWSIsIlNIRUtFTF9DVVJSRU5DWSIsImdldEluc3RhbGxtZW50c0luZm8iLCJ0eG4iLCJtb3JlSW5mbyIsImluY2x1ZGVzIiwidW5kZWZpbmVkIiwibWF0Y2hlcyIsIm1hdGNoIiwibGVuZ3RoIiwibnVtYmVyIiwidG90YWwiLCJnZXRUcmFuc2FjdGlvblR5cGUiLCJUcmFuc2FjdGlvblR5cGVzIiwiSW5zdGFsbG1lbnRzIiwiTm9ybWFsIiwiY29udmVydFRyYW5zYWN0aW9ucyIsInR4bnMiLCJmaWx0ZXJlZFR4bnMiLCJmaWx0ZXIiLCJkZWFsU3VtVHlwZSIsInZvdWNoZXJOdW1iZXJSYXR6Iiwidm91Y2hlck51bWJlclJhdHpPdXRib3VuZCIsImlzT3V0Ym91bmQiLCJkZWFsU3VtT3V0Ym91bmQiLCJ0eG5EYXRlU3RyIiwiZnVsbFB1cmNoYXNlRGF0ZU91dGJvdW5kIiwiZnVsbFB1cmNoYXNlRGF0ZSIsInR4bk1vbWVudCIsImN1cnJlbnRQcm9jZXNzZWREYXRlIiwiZnVsbFBheW1lbnREYXRlIiwicmVzdWx0IiwidHlwZSIsImlkZW50aWZpZXIiLCJkYXRlIiwib3JpZ2luYWxBbW91bnQiLCJkZWFsU3VtIiwib3JpZ2luYWxDdXJyZW5jeSIsImN1cnJlbnRQYXltZW50Q3VycmVuY3kiLCJjdXJyZW5jeUlkIiwiY2hhcmdlZEFtb3VudCIsInBheW1lbnRTdW1PdXRib3VuZCIsInBheW1lbnRTdW0iLCJjaGFyZ2VkQ3VycmVuY3kiLCJkZXNjcmlwdGlvbiIsImZ1bGxTdXBwbGllck5hbWVPdXRib3VuZCIsImZ1bGxTdXBwbGllck5hbWVIZWIiLCJtZW1vIiwiaW5zdGFsbG1lbnRzIiwic3RhdHVzIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIkNvbXBsZXRlZCIsImZldGNoVHJhbnNhY3Rpb25zIiwib3B0aW9ucyIsImNvbXBhbnlTZXJ2aWNlT3B0aW9ucyIsInN0YXJ0TW9tZW50IiwiYWNjb3VudHMiLCJDYXJkc1RyYW5zYWN0aW9uc0xpc3RCZWFuIiwiYWNjb3VudFR4bnMiLCJmb3JFYWNoIiwiYWNjb3VudCIsInR4bkdyb3VwcyIsImFsbFR4bnMiLCJ0eG5Hcm91cCIsInR4bklzcmFlbCIsInB1c2giLCJ0eG5BYnJvYWQiLCJjb21iaW5lSW5zdGFsbG1lbnRzIiwiZml4SW5zdGFsbG1lbnRzIiwib3V0cHV0RGF0YSIsImVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZSIsImZpbHRlck9sZFRyYW5zYWN0aW9ucyIsImdldFRyYW5zYWN0aW9uRXh0cmFEZXRhaWxzIiwiYWNjb3VudEluZGV4IiwidHJhbnNhY3Rpb24iLCJtb2VkQ2hpdXYiLCJnZXRFeHRyYVNjcmFwVHJhbnNhY3Rpb24iLCJkYXRhIiwicmF3Q2F0ZWdvcnkiLCJjYXRlZ29yeSIsInRyaW0iLCJnZXRFeHRyYVNjcmFwVHJhbnNhY3Rpb25zIiwiYWNjb3VudFdpdGhJbmRleCIsInByb21pc2VzIiwidCIsIlByb21pc2UiLCJhbGwiLCJnZXRFeHRyYVNjcmFwQWNjb3VudCIsImFjY291bnRNYXAiLCJPYmplY3QiLCJrZXlzIiwiYSIsInJlZHVjZSIsIm0iLCJ4IiwiZ2V0RXh0cmFTY3JhcCIsImFjY291bnRzV2l0aEluZGV4IiwiYWxsTW9udGhzIiwiYWN0aW9ucyIsImkiLCJydW5TZXJpYWwiLCJmZXRjaEFsbFRyYW5zYWN0aW9ucyIsImZ1dHVyZU1vbnRoc1RvU2NyYXBlIiwiZ2V0QWxsTW9udGhNb21lbnRzIiwicmVzdWx0cyIsImZpbmFsUmVzdWx0IiwiYWRkaXRpb25hbFRyYW5zYWN0aW9uSW5mb3JtYXRpb24iLCJjb21iaW5lZFR4bnMiLCJ0eG5zRm9yQWNjb3VudCIsInRvQmVBZGRlZFR4bnMiLCJzdWNjZXNzIiwiSXNyYWNhcmRBbWV4QmFzZVNjcmFwZXIiLCJCYXNlU2NyYXBlcldpdGhCcm93c2VyIiwiY29uc3RydWN0b3IiLCJiYXNlVXJsIiwiY29tcGFueUNvZGUiLCJsb2dpbiIsImNyZWRlbnRpYWxzIiwic2V0UmVxdWVzdEludGVyY2VwdGlvbiIsIm9uIiwicmVxdWVzdCIsImFib3J0IiwiaW50ZXJjZXB0aW9uUHJpb3JpdGllcyIsImNvbnRpbnVlIiwibWFza0hlYWRsZXNzVXNlckFnZW50IiwibmF2aWdhdGVUbyIsImVtaXRQcm9ncmVzcyIsIlNjcmFwZXJQcm9ncmVzc1R5cGVzIiwiTG9nZ2luZ0luIiwidmFsaWRhdGVVcmwiLCJ2YWxpZGF0ZVJlcXVlc3QiLCJpZCIsImNhcmRTdWZmaXgiLCJjYXJkNkRpZ2l0cyIsImNvdW50cnlDb2RlIiwiaWRUeXBlIiwiY2hlY2tMZXZlbCIsInZhbGlkYXRlUmVzdWx0IiwiZmV0Y2hQb3N0V2l0aGluUGFnZSIsIkhlYWRlciIsIlN0YXR1cyIsIlZhbGlkYXRlSWREYXRhQmVhbiIsIkVycm9yIiwidmFsaWRhdGVSZXR1cm5Db2RlIiwicmV0dXJuQ29kZSIsInVzZXJOYW1lIiwibG9naW5VcmwiLCJLb2RNaXNodGFtZXNoIiwiTWlzcGFyWmlodXkiLCJTaXNtYSIsInBhc3N3b3JkIiwibG9naW5SZXN1bHQiLCJMb2dpblN1Y2Nlc3MiLCJDaGFuZ2VQYXNzd29yZCIsImVycm9yVHlwZSIsIlNjcmFwZXJFcnJvclR5cGVzIiwiTG9naW5GYWlsZWQiLCJJbnZhbGlkUGFzc3dvcmQiLCJmZXRjaERhdGEiLCJkZWZhdWx0U3RhcnRNb21lbnQiLCJzdWJ0cmFjdCIsInN0YXJ0RGF0ZSIsInRvRGF0ZSIsIm1heCIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9iYXNlLWlzcmFjYXJkLWFtZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBtb21lbnQsIHsgdHlwZSBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgdHlwZSBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyJztcbmltcG9ydCB7IEFMVF9TSEVLRUxfQ1VSUkVOQ1ksIFNIRUtFTF9DVVJSRU5DWSwgU0hFS0VMX0NVUlJFTkNZX0tFWVdPUkQgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgU2NyYXBlclByb2dyZXNzVHlwZXMgfSBmcm9tICcuLi9kZWZpbml0aW9ucyc7XG5pbXBvcnQgZ2V0QWxsTW9udGhNb21lbnRzIGZyb20gJy4uL2hlbHBlcnMvZGF0ZXMnO1xuaW1wb3J0IHsgZ2V0RGVidWcgfSBmcm9tICcuLi9oZWxwZXJzL2RlYnVnJztcbmltcG9ydCB7IGZldGNoR2V0V2l0aGluUGFnZSwgZmV0Y2hQb3N0V2l0aGluUGFnZSB9IGZyb20gJy4uL2hlbHBlcnMvZmV0Y2gnO1xuaW1wb3J0IHsgZmlsdGVyT2xkVHJhbnNhY3Rpb25zLCBmaXhJbnN0YWxsbWVudHMgfSBmcm9tICcuLi9oZWxwZXJzL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBydW5TZXJpYWwgfSBmcm9tICcuLi9oZWxwZXJzL3dhaXRpbmcnO1xuaW1wb3J0IHtcbiAgVHJhbnNhY3Rpb25TdGF0dXNlcyxcbiAgVHJhbnNhY3Rpb25UeXBlcyxcbiAgdHlwZSBUcmFuc2FjdGlvbixcbiAgdHlwZSBUcmFuc2FjdGlvbkluc3RhbGxtZW50cyxcbiAgdHlwZSBUcmFuc2FjdGlvbnNBY2NvdW50LFxufSBmcm9tICcuLi90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgQmFzZVNjcmFwZXJXaXRoQnJvd3NlciB9IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQgeyBTY3JhcGVyRXJyb3JUeXBlcyB9IGZyb20gJy4vZXJyb3JzJztcbmltcG9ydCB7IHR5cGUgU2NyYXBlck9wdGlvbnMsIHR5cGUgU2NyYXBlclNjcmFwaW5nUmVzdWx0IH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuaW1wb3J0IHsgaW50ZXJjZXB0aW9uUHJpb3JpdGllcywgbWFza0hlYWRsZXNzVXNlckFnZW50IH0gZnJvbSAnLi4vaGVscGVycy9icm93c2VyJztcblxuY29uc3QgQ09VTlRSWV9DT0RFID0gJzIxMic7XG5jb25zdCBJRF9UWVBFID0gJzEnO1xuY29uc3QgSU5TVEFMTE1FTlRTX0tFWVdPUkQgPSAn16rXqdec15XXnSc7XG5cbmNvbnN0IERBVEVfRk9STUFUID0gJ0REL01NL1lZWVknO1xuXG5jb25zdCBkZWJ1ZyA9IGdldERlYnVnKCdiYXNlLWlzcmFjYXJkLWFtZXgnKTtcblxudHlwZSBDb21wYW55U2VydmljZU9wdGlvbnMgPSB7XG4gIHNlcnZpY2VzVXJsOiBzdHJpbmc7XG4gIGNvbXBhbnlDb2RlOiBzdHJpbmc7XG59O1xuXG50eXBlIFNjcmFwZWRBY2NvdW50c1dpdGhJbmRleCA9IFJlY29yZDxzdHJpbmcsIFRyYW5zYWN0aW9uc0FjY291bnQgJiB7IGluZGV4OiBudW1iZXIgfT47XG5cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb24ge1xuICBkZWFsU3VtVHlwZTogc3RyaW5nO1xuICB2b3VjaGVyTnVtYmVyUmF0ek91dGJvdW5kOiBzdHJpbmc7XG4gIHZvdWNoZXJOdW1iZXJSYXR6OiBzdHJpbmc7XG4gIG1vcmVJbmZvPzogc3RyaW5nO1xuICBkZWFsU3VtT3V0Ym91bmQ6IGJvb2xlYW47XG4gIGN1cnJlbmN5SWQ6IHN0cmluZztcbiAgY3VycmVudFBheW1lbnRDdXJyZW5jeTogc3RyaW5nO1xuICBkZWFsU3VtOiBudW1iZXI7XG4gIGZ1bGxQYXltZW50RGF0ZT86IHN0cmluZztcbiAgZnVsbFB1cmNoYXNlRGF0ZT86IHN0cmluZztcbiAgZnVsbFB1cmNoYXNlRGF0ZU91dGJvdW5kPzogc3RyaW5nO1xuICBmdWxsU3VwcGxpZXJOYW1lSGViOiBzdHJpbmc7XG4gIGZ1bGxTdXBwbGllck5hbWVPdXRib3VuZDogc3RyaW5nO1xuICBwYXltZW50U3VtOiBudW1iZXI7XG4gIHBheW1lbnRTdW1PdXRib3VuZDogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgU2NyYXBlZEFjY291bnQge1xuICBpbmRleDogbnVtYmVyO1xuICBhY2NvdW50TnVtYmVyOiBzdHJpbmc7XG4gIHByb2Nlc3NlZERhdGU6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRMb2dpblZhbGlkYXRpb24ge1xuICBIZWFkZXI6IHtcbiAgICBTdGF0dXM6IHN0cmluZztcbiAgfTtcbiAgVmFsaWRhdGVJZERhdGFCZWFuPzoge1xuICAgIHVzZXJOYW1lPzogc3RyaW5nO1xuICAgIHJldHVybkNvZGU6IHN0cmluZztcbiAgfTtcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRBY2NvdW50c1dpdGhpblBhZ2VSZXNwb25zZSB7XG4gIEhlYWRlcjoge1xuICAgIFN0YXR1czogc3RyaW5nO1xuICB9O1xuICBEYXNoYm9hcmRNb250aEJlYW4/OiB7XG4gICAgY2FyZHNDaGFyZ2VzOiB7XG4gICAgICBjYXJkSW5kZXg6IHN0cmluZztcbiAgICAgIGNhcmROdW1iZXI6IHN0cmluZztcbiAgICAgIGJpbGxpbmdEYXRlOiBzdHJpbmc7XG4gICAgfVtdO1xuICB9O1xufVxuXG5pbnRlcmZhY2UgU2NyYXBlZEN1cnJlbnRDYXJkVHJhbnNhY3Rpb25zIHtcbiAgdHhuSXNyYWVsPzogU2NyYXBlZFRyYW5zYWN0aW9uW107XG4gIHR4bkFicm9hZD86IFNjcmFwZWRUcmFuc2FjdGlvbltdO1xufVxuXG5pbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uRGF0YSB7XG4gIEhlYWRlcj86IHtcbiAgICBTdGF0dXM6IHN0cmluZztcbiAgfTtcbiAgUGlydGV5SXNrYV8yMDRCZWFuPzoge1xuICAgIHNlY3Rvcjogc3RyaW5nO1xuICB9O1xuXG4gIENhcmRzVHJhbnNhY3Rpb25zTGlzdEJlYW4/OiBSZWNvcmQ8XG4gICAgc3RyaW5nLFxuICAgIHtcbiAgICAgIEN1cnJlbnRDYXJkVHJhbnNhY3Rpb25zOiBTY3JhcGVkQ3VycmVudENhcmRUcmFuc2FjdGlvbnNbXTtcbiAgICB9XG4gID47XG59XG5cbmZ1bmN0aW9uIGdldEFjY291bnRzVXJsKHNlcnZpY2VzVXJsOiBzdHJpbmcsIG1vbnRoTW9tZW50OiBNb21lbnQpIHtcbiAgY29uc3QgYmlsbGluZ0RhdGUgPSBtb250aE1vbWVudC5mb3JtYXQoJ1lZWVktTU0tREQnKTtcbiAgY29uc3QgdXJsID0gbmV3IFVSTChzZXJ2aWNlc1VybCk7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdyZXFOYW1lJywgJ0Rhc2hib2FyZE1vbnRoJyk7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdhY3Rpb25Db2RlJywgJzAnKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ2JpbGxpbmdEYXRlJywgYmlsbGluZ0RhdGUpO1xuICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnZm9ybWF0JywgJ0pzb24nKTtcbiAgcmV0dXJuIHVybC50b1N0cmluZygpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaEFjY291bnRzKHBhZ2U6IFBhZ2UsIHNlcnZpY2VzVXJsOiBzdHJpbmcsIG1vbnRoTW9tZW50OiBNb21lbnQpOiBQcm9taXNlPFNjcmFwZWRBY2NvdW50W10+IHtcbiAgY29uc3QgZGF0YVVybCA9IGdldEFjY291bnRzVXJsKHNlcnZpY2VzVXJsLCBtb250aE1vbWVudCk7XG4gIGNvbnN0IGRhdGFSZXN1bHQgPSBhd2FpdCBmZXRjaEdldFdpdGhpblBhZ2U8U2NyYXBlZEFjY291bnRzV2l0aGluUGFnZVJlc3BvbnNlPihwYWdlLCBkYXRhVXJsKTtcbiAgaWYgKGRhdGFSZXN1bHQgJiYgXy5nZXQoZGF0YVJlc3VsdCwgJ0hlYWRlci5TdGF0dXMnKSA9PT0gJzEnICYmIGRhdGFSZXN1bHQuRGFzaGJvYXJkTW9udGhCZWFuKSB7XG4gICAgY29uc3QgeyBjYXJkc0NoYXJnZXMgfSA9IGRhdGFSZXN1bHQuRGFzaGJvYXJkTW9udGhCZWFuO1xuICAgIGlmIChjYXJkc0NoYXJnZXMpIHtcbiAgICAgIHJldHVybiBjYXJkc0NoYXJnZXMubWFwKGNhcmRDaGFyZ2UgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGluZGV4OiBwYXJzZUludChjYXJkQ2hhcmdlLmNhcmRJbmRleCwgMTApLFxuICAgICAgICAgIGFjY291bnROdW1iZXI6IGNhcmRDaGFyZ2UuY2FyZE51bWJlcixcbiAgICAgICAgICBwcm9jZXNzZWREYXRlOiBtb21lbnQoY2FyZENoYXJnZS5iaWxsaW5nRGF0ZSwgREFURV9GT1JNQVQpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIH07XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIFtdO1xufVxuXG5mdW5jdGlvbiBnZXRUcmFuc2FjdGlvbnNVcmwoc2VydmljZXNVcmw6IHN0cmluZywgbW9udGhNb21lbnQ6IE1vbWVudCkge1xuICBjb25zdCBtb250aCA9IG1vbnRoTW9tZW50Lm1vbnRoKCkgKyAxO1xuICBjb25zdCB5ZWFyID0gbW9udGhNb21lbnQueWVhcigpO1xuICBjb25zdCBtb250aFN0ciA9IG1vbnRoIDwgMTAgPyBgMCR7bW9udGh9YCA6IG1vbnRoLnRvU3RyaW5nKCk7XG4gIGNvbnN0IHVybCA9IG5ldyBVUkwoc2VydmljZXNVcmwpO1xuICB1cmwuc2VhcmNoUGFyYW1zLnNldCgncmVxTmFtZScsICdDYXJkc1RyYW5zYWN0aW9uc0xpc3QnKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ21vbnRoJywgbW9udGhTdHIpO1xuICB1cmwuc2VhcmNoUGFyYW1zLnNldCgneWVhcicsIGAke3llYXJ9YCk7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdyZXF1aXJlZERhdGUnLCAnTicpO1xuICByZXR1cm4gdXJsLnRvU3RyaW5nKCk7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRDdXJyZW5jeShjdXJyZW5jeVN0cjogc3RyaW5nKSB7XG4gIGlmIChjdXJyZW5jeVN0ciA9PT0gU0hFS0VMX0NVUlJFTkNZX0tFWVdPUkQgfHwgY3VycmVuY3lTdHIgPT09IEFMVF9TSEVLRUxfQ1VSUkVOQ1kpIHtcbiAgICByZXR1cm4gU0hFS0VMX0NVUlJFTkNZO1xuICB9XG4gIHJldHVybiBjdXJyZW5jeVN0cjtcbn1cblxuZnVuY3Rpb24gZ2V0SW5zdGFsbG1lbnRzSW5mbyh0eG46IFNjcmFwZWRUcmFuc2FjdGlvbik6IFRyYW5zYWN0aW9uSW5zdGFsbG1lbnRzIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCF0eG4ubW9yZUluZm8gfHwgIXR4bi5tb3JlSW5mby5pbmNsdWRlcyhJTlNUQUxMTUVOVFNfS0VZV09SRCkpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IG1hdGNoZXMgPSB0eG4ubW9yZUluZm8ubWF0Y2goL1xcZCsvZyk7XG4gIGlmICghbWF0Y2hlcyB8fCBtYXRjaGVzLmxlbmd0aCA8IDIpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBudW1iZXI6IHBhcnNlSW50KG1hdGNoZXNbMF0sIDEwKSxcbiAgICB0b3RhbDogcGFyc2VJbnQobWF0Y2hlc1sxXSwgMTApLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRUcmFuc2FjdGlvblR5cGUodHhuOiBTY3JhcGVkVHJhbnNhY3Rpb24pIHtcbiAgcmV0dXJuIGdldEluc3RhbGxtZW50c0luZm8odHhuKSA/IFRyYW5zYWN0aW9uVHlwZXMuSW5zdGFsbG1lbnRzIDogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWw7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRUcmFuc2FjdGlvbnModHhuczogU2NyYXBlZFRyYW5zYWN0aW9uW10sIHByb2Nlc3NlZERhdGU6IHN0cmluZyk6IFRyYW5zYWN0aW9uW10ge1xuICBjb25zdCBmaWx0ZXJlZFR4bnMgPSB0eG5zLmZpbHRlcihcbiAgICB0eG4gPT5cbiAgICAgIHR4bi5kZWFsU3VtVHlwZSAhPT0gJzEnICYmIHR4bi52b3VjaGVyTnVtYmVyUmF0eiAhPT0gJzAwMDAwMDAwMCcgJiYgdHhuLnZvdWNoZXJOdW1iZXJSYXR6T3V0Ym91bmQgIT09ICcwMDAwMDAwMDAnLFxuICApO1xuXG4gIHJldHVybiBmaWx0ZXJlZFR4bnMubWFwKHR4biA9PiB7XG4gICAgY29uc3QgaXNPdXRib3VuZCA9IHR4bi5kZWFsU3VtT3V0Ym91bmQ7XG4gICAgY29uc3QgdHhuRGF0ZVN0ciA9IGlzT3V0Ym91bmQgPyB0eG4uZnVsbFB1cmNoYXNlRGF0ZU91dGJvdW5kIDogdHhuLmZ1bGxQdXJjaGFzZURhdGU7XG4gICAgY29uc3QgdHhuTW9tZW50ID0gbW9tZW50KHR4bkRhdGVTdHIsIERBVEVfRk9STUFUKTtcblxuICAgIGNvbnN0IGN1cnJlbnRQcm9jZXNzZWREYXRlID0gdHhuLmZ1bGxQYXltZW50RGF0ZVxuICAgICAgPyBtb21lbnQodHhuLmZ1bGxQYXltZW50RGF0ZSwgREFURV9GT1JNQVQpLnRvSVNPU3RyaW5nKClcbiAgICAgIDogcHJvY2Vzc2VkRGF0ZTtcbiAgICBjb25zdCByZXN1bHQ6IFRyYW5zYWN0aW9uID0ge1xuICAgICAgdHlwZTogZ2V0VHJhbnNhY3Rpb25UeXBlKHR4biksXG4gICAgICBpZGVudGlmaWVyOiBwYXJzZUludChpc091dGJvdW5kID8gdHhuLnZvdWNoZXJOdW1iZXJSYXR6T3V0Ym91bmQgOiB0eG4udm91Y2hlck51bWJlclJhdHosIDEwKSxcbiAgICAgIGRhdGU6IHR4bk1vbWVudC50b0lTT1N0cmluZygpLFxuICAgICAgcHJvY2Vzc2VkRGF0ZTogY3VycmVudFByb2Nlc3NlZERhdGUsXG4gICAgICBvcmlnaW5hbEFtb3VudDogaXNPdXRib3VuZCA/IC10eG4uZGVhbFN1bU91dGJvdW5kIDogLXR4bi5kZWFsU3VtLFxuICAgICAgb3JpZ2luYWxDdXJyZW5jeTogY29udmVydEN1cnJlbmN5KHR4bi5jdXJyZW50UGF5bWVudEN1cnJlbmN5ID8/IHR4bi5jdXJyZW5jeUlkKSxcbiAgICAgIGNoYXJnZWRBbW91bnQ6IGlzT3V0Ym91bmQgPyAtdHhuLnBheW1lbnRTdW1PdXRib3VuZCA6IC10eG4ucGF5bWVudFN1bSxcbiAgICAgIGNoYXJnZWRDdXJyZW5jeTogY29udmVydEN1cnJlbmN5KHR4bi5jdXJyZW5jeUlkKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBpc091dGJvdW5kID8gdHhuLmZ1bGxTdXBwbGllck5hbWVPdXRib3VuZCA6IHR4bi5mdWxsU3VwcGxpZXJOYW1lSGViLFxuICAgICAgbWVtbzogdHhuLm1vcmVJbmZvIHx8ICcnLFxuICAgICAgaW5zdGFsbG1lbnRzOiBnZXRJbnN0YWxsbWVudHNJbmZvKHR4bikgfHwgdW5kZWZpbmVkLFxuICAgICAgc3RhdHVzOiBUcmFuc2FjdGlvblN0YXR1c2VzLkNvbXBsZXRlZCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoVHJhbnNhY3Rpb25zKFxuICBwYWdlOiBQYWdlLFxuICBvcHRpb25zOiBTY3JhcGVyT3B0aW9ucyxcbiAgY29tcGFueVNlcnZpY2VPcHRpb25zOiBDb21wYW55U2VydmljZU9wdGlvbnMsXG4gIHN0YXJ0TW9tZW50OiBNb21lbnQsXG4gIG1vbnRoTW9tZW50OiBNb21lbnQsXG4pOiBQcm9taXNlPFNjcmFwZWRBY2NvdW50c1dpdGhJbmRleD4ge1xuICBjb25zdCBhY2NvdW50cyA9IGF3YWl0IGZldGNoQWNjb3VudHMocGFnZSwgY29tcGFueVNlcnZpY2VPcHRpb25zLnNlcnZpY2VzVXJsLCBtb250aE1vbWVudCk7XG4gIGNvbnN0IGRhdGFVcmwgPSBnZXRUcmFuc2FjdGlvbnNVcmwoY29tcGFueVNlcnZpY2VPcHRpb25zLnNlcnZpY2VzVXJsLCBtb250aE1vbWVudCk7XG4gIGNvbnN0IGRhdGFSZXN1bHQgPSBhd2FpdCBmZXRjaEdldFdpdGhpblBhZ2U8U2NyYXBlZFRyYW5zYWN0aW9uRGF0YT4ocGFnZSwgZGF0YVVybCk7XG4gIGlmIChkYXRhUmVzdWx0ICYmIF8uZ2V0KGRhdGFSZXN1bHQsICdIZWFkZXIuU3RhdHVzJykgPT09ICcxJyAmJiBkYXRhUmVzdWx0LkNhcmRzVHJhbnNhY3Rpb25zTGlzdEJlYW4pIHtcbiAgICBjb25zdCBhY2NvdW50VHhuczogU2NyYXBlZEFjY291bnRzV2l0aEluZGV4ID0ge307XG4gICAgYWNjb3VudHMuZm9yRWFjaChhY2NvdW50ID0+IHtcbiAgICAgIGNvbnN0IHR4bkdyb3VwczogU2NyYXBlZEN1cnJlbnRDYXJkVHJhbnNhY3Rpb25zW10gfCB1bmRlZmluZWQgPSBfLmdldChcbiAgICAgICAgZGF0YVJlc3VsdCxcbiAgICAgICAgYENhcmRzVHJhbnNhY3Rpb25zTGlzdEJlYW4uSW5kZXgke2FjY291bnQuaW5kZXh9LkN1cnJlbnRDYXJkVHJhbnNhY3Rpb25zYCxcbiAgICAgICk7XG4gICAgICBpZiAodHhuR3JvdXBzKSB7XG4gICAgICAgIGxldCBhbGxUeG5zOiBUcmFuc2FjdGlvbltdID0gW107XG4gICAgICAgIHR4bkdyb3Vwcy5mb3JFYWNoKHR4bkdyb3VwID0+IHtcbiAgICAgICAgICBpZiAodHhuR3JvdXAudHhuSXNyYWVsKSB7XG4gICAgICAgICAgICBjb25zdCB0eG5zID0gY29udmVydFRyYW5zYWN0aW9ucyh0eG5Hcm91cC50eG5Jc3JhZWwsIGFjY291bnQucHJvY2Vzc2VkRGF0ZSk7XG4gICAgICAgICAgICBhbGxUeG5zLnB1c2goLi4udHhucyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0eG5Hcm91cC50eG5BYnJvYWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHR4bnMgPSBjb252ZXJ0VHJhbnNhY3Rpb25zKHR4bkdyb3VwLnR4bkFicm9hZCwgYWNjb3VudC5wcm9jZXNzZWREYXRlKTtcbiAgICAgICAgICAgIGFsbFR4bnMucHVzaCguLi50eG5zKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghb3B0aW9ucy5jb21iaW5lSW5zdGFsbG1lbnRzKSB7XG4gICAgICAgICAgYWxsVHhucyA9IGZpeEluc3RhbGxtZW50cyhhbGxUeG5zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5vdXRwdXREYXRhPy5lbmFibGVUcmFuc2FjdGlvbnNGaWx0ZXJCeURhdGUgPz8gdHJ1ZSkge1xuICAgICAgICAgIGFsbFR4bnMgPSBmaWx0ZXJPbGRUcmFuc2FjdGlvbnMoYWxsVHhucywgc3RhcnRNb21lbnQsIG9wdGlvbnMuY29tYmluZUluc3RhbGxtZW50cyB8fCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgYWNjb3VudFR4bnNbYWNjb3VudC5hY2NvdW50TnVtYmVyXSA9IHtcbiAgICAgICAgICBhY2NvdW50TnVtYmVyOiBhY2NvdW50LmFjY291bnROdW1iZXIsXG4gICAgICAgICAgaW5kZXg6IGFjY291bnQuaW5kZXgsXG4gICAgICAgICAgdHhuczogYWxsVHhucyxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gYWNjb3VudFR4bnM7XG4gIH1cblxuICByZXR1cm4ge307XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uRXh0cmFEZXRhaWxzKFxuICBzZXJ2aWNlc1VybDogc3RyaW5nLFxuICBtb250aDogTW9tZW50LFxuICBhY2NvdW50SW5kZXg6IG51bWJlcixcbiAgdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uLFxuKTogc3RyaW5nIHtcbiAgY29uc3QgbW9lZENoaXV2ID0gbW9udGguZm9ybWF0KCdNTVlZWVknKTtcbiAgY29uc3QgdXJsID0gbmV3IFVSTChzZXJ2aWNlc1VybCk7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdyZXFOYW1lJywgJ1BpcnRleUlza2FfMjA0Jyk7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdDYXJkSW5kZXgnLCBhY2NvdW50SW5kZXgudG9TdHJpbmcoKSk7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdzaG92YXJSYXR6JywgdHJhbnNhY3Rpb24uaWRlbnRpZmllciEudG9TdHJpbmcoKSk7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdtb2VkQ2hpdXYnLCBtb2VkQ2hpdXYpO1xuICByZXR1cm4gdXJsLnRvU3RyaW5nKCk7XG59XG5hc3luYyBmdW5jdGlvbiBnZXRFeHRyYVNjcmFwVHJhbnNhY3Rpb24oXG4gIHBhZ2U6IFBhZ2UsXG4gIG9wdGlvbnM6IENvbXBhbnlTZXJ2aWNlT3B0aW9ucyxcbiAgbW9udGg6IE1vbWVudCxcbiAgYWNjb3VudEluZGV4OiBudW1iZXIsXG4gIHRyYW5zYWN0aW9uOiBUcmFuc2FjdGlvbixcbik6IFByb21pc2U8VHJhbnNhY3Rpb24+IHtcbiAgY29uc3QgZGF0YVVybCA9IGdldFRyYW5zYWN0aW9uRXh0cmFEZXRhaWxzKG9wdGlvbnMuc2VydmljZXNVcmwsIG1vbnRoLCBhY2NvdW50SW5kZXgsIHRyYW5zYWN0aW9uKTtcbiAgY29uc3QgZGF0YSA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxTY3JhcGVkVHJhbnNhY3Rpb25EYXRhPihwYWdlLCBkYXRhVXJsKTtcblxuICBpZiAoIWRhdGEpIHtcbiAgICByZXR1cm4gdHJhbnNhY3Rpb247XG4gIH1cblxuICBjb25zdCByYXdDYXRlZ29yeSA9IF8uZ2V0KGRhdGEsICdQaXJ0ZXlJc2thXzIwNEJlYW4uc2VjdG9yJykgPz8gJyc7XG4gIHJldHVybiB7XG4gICAgLi4udHJhbnNhY3Rpb24sXG4gICAgY2F0ZWdvcnk6IHJhd0NhdGVnb3J5LnRyaW0oKSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RXh0cmFTY3JhcFRyYW5zYWN0aW9ucyhcbiAgYWNjb3VudFdpdGhJbmRleDogVHJhbnNhY3Rpb25zQWNjb3VudCAmIHsgaW5kZXg6IG51bWJlciB9LFxuICBwYWdlOiBQYWdlLFxuICBvcHRpb25zOiBDb21wYW55U2VydmljZU9wdGlvbnMsXG4gIG1vbnRoOiBtb21lbnQuTW9tZW50LFxuKTogUHJvbWlzZTxUcmFuc2FjdGlvbltdPiB7XG4gIGNvbnN0IHByb21pc2VzID0gYWNjb3VudFdpdGhJbmRleC50eG5zLm1hcCh0ID0+XG4gICAgZ2V0RXh0cmFTY3JhcFRyYW5zYWN0aW9uKHBhZ2UsIG9wdGlvbnMsIG1vbnRoLCBhY2NvdW50V2l0aEluZGV4LmluZGV4LCB0KSxcbiAgKTtcbiAgcmV0dXJuIFByb21pc2UuYWxsKHByb21pc2VzKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0RXh0cmFTY3JhcEFjY291bnQoXG4gIHBhZ2U6IFBhZ2UsXG4gIG9wdGlvbnM6IENvbXBhbnlTZXJ2aWNlT3B0aW9ucyxcbiAgYWNjb3VudE1hcDogU2NyYXBlZEFjY291bnRzV2l0aEluZGV4LFxuICBtb250aDogbW9tZW50Lk1vbWVudCxcbik6IFByb21pc2U8U2NyYXBlZEFjY291bnRzV2l0aEluZGV4PiB7XG4gIGNvbnN0IHByb21pc2VzID0gT2JqZWN0LmtleXMoYWNjb3VudE1hcCkubWFwKGFzeW5jIGEgPT4gKHtcbiAgICAuLi5hY2NvdW50TWFwW2FdLFxuICAgIHR4bnM6IGF3YWl0IGdldEV4dHJhU2NyYXBUcmFuc2FjdGlvbnMoYWNjb3VudE1hcFthXSwgcGFnZSwgb3B0aW9ucywgbW9udGgpLFxuICB9KSk7XG4gIGNvbnN0IGFjY291bnRzID0gYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xuICByZXR1cm4gYWNjb3VudHMucmVkdWNlKChtLCB4KSA9PiAoeyAuLi5tLCBbeC5hY2NvdW50TnVtYmVyXTogeCB9KSwge30pO1xufVxuXG5mdW5jdGlvbiBnZXRFeHRyYVNjcmFwKFxuICBhY2NvdW50c1dpdGhJbmRleDogU2NyYXBlZEFjY291bnRzV2l0aEluZGV4W10sXG4gIHBhZ2U6IFBhZ2UsXG4gIG9wdGlvbnM6IENvbXBhbnlTZXJ2aWNlT3B0aW9ucyxcbiAgYWxsTW9udGhzOiBtb21lbnQuTW9tZW50W10sXG4pOiBQcm9taXNlPFNjcmFwZWRBY2NvdW50c1dpdGhJbmRleFtdPiB7XG4gIGNvbnN0IGFjdGlvbnMgPSBhY2NvdW50c1dpdGhJbmRleC5tYXAoKGEsIGkpID0+ICgpID0+IGdldEV4dHJhU2NyYXBBY2NvdW50KHBhZ2UsIG9wdGlvbnMsIGEsIGFsbE1vbnRoc1tpXSkpO1xuICByZXR1cm4gcnVuU2VyaWFsKGFjdGlvbnMpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaEFsbFRyYW5zYWN0aW9ucyhcbiAgcGFnZTogUGFnZSxcbiAgb3B0aW9uczogU2NyYXBlck9wdGlvbnMsXG4gIGNvbXBhbnlTZXJ2aWNlT3B0aW9uczogQ29tcGFueVNlcnZpY2VPcHRpb25zLFxuICBzdGFydE1vbWVudDogTW9tZW50LFxuKSB7XG4gIGNvbnN0IGZ1dHVyZU1vbnRoc1RvU2NyYXBlID0gb3B0aW9ucy5mdXR1cmVNb250aHNUb1NjcmFwZSA/PyAxO1xuICBjb25zdCBhbGxNb250aHMgPSBnZXRBbGxNb250aE1vbWVudHMoc3RhcnRNb21lbnQsIGZ1dHVyZU1vbnRoc1RvU2NyYXBlKTtcbiAgY29uc3QgcmVzdWx0czogU2NyYXBlZEFjY291bnRzV2l0aEluZGV4W10gPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBhbGxNb250aHMubWFwKGFzeW5jIG1vbnRoTW9tZW50ID0+IHtcbiAgICAgIHJldHVybiBmZXRjaFRyYW5zYWN0aW9ucyhwYWdlLCBvcHRpb25zLCBjb21wYW55U2VydmljZU9wdGlvbnMsIHN0YXJ0TW9tZW50LCBtb250aE1vbWVudCk7XG4gICAgfSksXG4gICk7XG5cbiAgY29uc3QgZmluYWxSZXN1bHQgPSBvcHRpb25zLmFkZGl0aW9uYWxUcmFuc2FjdGlvbkluZm9ybWF0aW9uXG4gICAgPyBhd2FpdCBnZXRFeHRyYVNjcmFwKHJlc3VsdHMsIHBhZ2UsIGNvbXBhbnlTZXJ2aWNlT3B0aW9ucywgYWxsTW9udGhzKVxuICAgIDogcmVzdWx0cztcblxuICBjb25zdCBjb21iaW5lZFR4bnM6IFJlY29yZDxzdHJpbmcsIFRyYW5zYWN0aW9uW10+ID0ge307XG5cbiAgZmluYWxSZXN1bHQuZm9yRWFjaChyZXN1bHQgPT4ge1xuICAgIE9iamVjdC5rZXlzKHJlc3VsdCkuZm9yRWFjaChhY2NvdW50TnVtYmVyID0+IHtcbiAgICAgIGxldCB0eG5zRm9yQWNjb3VudCA9IGNvbWJpbmVkVHhuc1thY2NvdW50TnVtYmVyXTtcbiAgICAgIGlmICghdHhuc0ZvckFjY291bnQpIHtcbiAgICAgICAgdHhuc0ZvckFjY291bnQgPSBbXTtcbiAgICAgICAgY29tYmluZWRUeG5zW2FjY291bnROdW1iZXJdID0gdHhuc0ZvckFjY291bnQ7XG4gICAgICB9XG4gICAgICBjb25zdCB0b0JlQWRkZWRUeG5zID0gcmVzdWx0W2FjY291bnROdW1iZXJdLnR4bnM7XG4gICAgICBjb21iaW5lZFR4bnNbYWNjb3VudE51bWJlcl0ucHVzaCguLi50b0JlQWRkZWRUeG5zKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgY29uc3QgYWNjb3VudHMgPSBPYmplY3Qua2V5cyhjb21iaW5lZFR4bnMpLm1hcChhY2NvdW50TnVtYmVyID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgYWNjb3VudE51bWJlcixcbiAgICAgIHR4bnM6IGNvbWJpbmVkVHhuc1thY2NvdW50TnVtYmVyXSxcbiAgICB9O1xuICB9KTtcblxuICByZXR1cm4ge1xuICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgYWNjb3VudHMsXG4gIH07XG59XG5cbnR5cGUgU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMgPSB7IGlkOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmc7IGNhcmQ2RGlnaXRzOiBzdHJpbmcgfTtcbmNsYXNzIElzcmFjYXJkQW1leEJhc2VTY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXJXaXRoQnJvd3NlcjxTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscz4ge1xuICBwcml2YXRlIGJhc2VVcmw6IHN0cmluZztcblxuICBwcml2YXRlIGNvbXBhbnlDb2RlOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBzZXJ2aWNlc1VybDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFNjcmFwZXJPcHRpb25zLCBiYXNlVXJsOiBzdHJpbmcsIGNvbXBhbnlDb2RlOiBzdHJpbmcpIHtcbiAgICBzdXBlcihvcHRpb25zKTtcblxuICAgIHRoaXMuYmFzZVVybCA9IGJhc2VVcmw7XG4gICAgdGhpcy5jb21wYW55Q29kZSA9IGNvbXBhbnlDb2RlO1xuICAgIHRoaXMuc2VydmljZXNVcmwgPSBgJHtiYXNlVXJsfS9zZXJ2aWNlcy9Qcm94eVJlcXVlc3RIYW5kbGVyLmFzaHhgO1xuICB9XG5cbiAgYXN5bmMgbG9naW4oY3JlZGVudGlhbHM6IFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzKTogUHJvbWlzZTxTY3JhcGVyU2NyYXBpbmdSZXN1bHQ+IHtcbiAgICBhd2FpdCB0aGlzLnBhZ2Uuc2V0UmVxdWVzdEludGVyY2VwdGlvbih0cnVlKTtcbiAgICB0aGlzLnBhZ2Uub24oJ3JlcXVlc3QnLCByZXF1ZXN0ID0+IHtcbiAgICAgIGlmIChyZXF1ZXN0LnVybCgpLmluY2x1ZGVzKCdkZXRlY3Rvci1kb20ubWluLmpzJykpIHtcbiAgICAgICAgZGVidWcoJ2ZvcmNlIGFib3J0IGZvciByZXF1ZXN0IGRvIGRvd25sb2FkIGRldGVjdG9yLWRvbS5taW4uanMgcmVzb3VyY2UnKTtcbiAgICAgICAgdm9pZCByZXF1ZXN0LmFib3J0KHVuZGVmaW5lZCwgaW50ZXJjZXB0aW9uUHJpb3JpdGllcy5hYm9ydCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2b2lkIHJlcXVlc3QuY29udGludWUodW5kZWZpbmVkLCBpbnRlcmNlcHRpb25Qcmlvcml0aWVzLmNvbnRpbnVlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGF3YWl0IG1hc2tIZWFkbGVzc1VzZXJBZ2VudCh0aGlzLnBhZ2UpO1xuXG4gICAgYXdhaXQgdGhpcy5uYXZpZ2F0ZVRvKGAke3RoaXMuYmFzZVVybH0vcGVyc29uYWxhcmVhL0xvZ2luYCk7XG5cbiAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY3JhcGVyUHJvZ3Jlc3NUeXBlcy5Mb2dnaW5nSW4pO1xuXG4gICAgY29uc3QgdmFsaWRhdGVVcmwgPSBgJHt0aGlzLnNlcnZpY2VzVXJsfT9yZXFOYW1lPVZhbGlkYXRlSWREYXRhYDtcbiAgICBjb25zdCB2YWxpZGF0ZVJlcXVlc3QgPSB7XG4gICAgICBpZDogY3JlZGVudGlhbHMuaWQsXG4gICAgICBjYXJkU3VmZml4OiBjcmVkZW50aWFscy5jYXJkNkRpZ2l0cyxcbiAgICAgIGNvdW50cnlDb2RlOiBDT1VOVFJZX0NPREUsXG4gICAgICBpZFR5cGU6IElEX1RZUEUsXG4gICAgICBjaGVja0xldmVsOiAnMScsXG4gICAgICBjb21wYW55Q29kZTogdGhpcy5jb21wYW55Q29kZSxcbiAgICB9O1xuICAgIGNvbnN0IHZhbGlkYXRlUmVzdWx0ID0gYXdhaXQgZmV0Y2hQb3N0V2l0aGluUGFnZTxTY3JhcGVkTG9naW5WYWxpZGF0aW9uPih0aGlzLnBhZ2UsIHZhbGlkYXRlVXJsLCB2YWxpZGF0ZVJlcXVlc3QpO1xuICAgIGlmIChcbiAgICAgICF2YWxpZGF0ZVJlc3VsdCB8fFxuICAgICAgIXZhbGlkYXRlUmVzdWx0LkhlYWRlciB8fFxuICAgICAgdmFsaWRhdGVSZXN1bHQuSGVhZGVyLlN0YXR1cyAhPT0gJzEnIHx8XG4gICAgICAhdmFsaWRhdGVSZXN1bHQuVmFsaWRhdGVJZERhdGFCZWFuXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24gZXJyb3IgZHVyaW5nIGxvZ2luJyk7XG4gICAgfVxuXG4gICAgY29uc3QgdmFsaWRhdGVSZXR1cm5Db2RlID0gdmFsaWRhdGVSZXN1bHQuVmFsaWRhdGVJZERhdGFCZWFuLnJldHVybkNvZGU7XG4gICAgZGVidWcoYHVzZXIgdmFsaWRhdGUgd2l0aCByZXR1cm4gY29kZSAnJHt2YWxpZGF0ZVJldHVybkNvZGV9J2ApO1xuICAgIGlmICh2YWxpZGF0ZVJldHVybkNvZGUgPT09ICcxJykge1xuICAgICAgY29uc3QgeyB1c2VyTmFtZSB9ID0gdmFsaWRhdGVSZXN1bHQuVmFsaWRhdGVJZERhdGFCZWFuO1xuXG4gICAgICBjb25zdCBsb2dpblVybCA9IGAke3RoaXMuc2VydmljZXNVcmx9P3JlcU5hbWU9cGVyZm9ybUxvZ29uSWA7XG4gICAgICBjb25zdCByZXF1ZXN0ID0ge1xuICAgICAgICBLb2RNaXNodGFtZXNoOiB1c2VyTmFtZSxcbiAgICAgICAgTWlzcGFyWmlodXk6IGNyZWRlbnRpYWxzLmlkLFxuICAgICAgICBTaXNtYTogY3JlZGVudGlhbHMucGFzc3dvcmQsXG4gICAgICAgIGNhcmRTdWZmaXg6IGNyZWRlbnRpYWxzLmNhcmQ2RGlnaXRzLFxuICAgICAgICBjb3VudHJ5Q29kZTogQ09VTlRSWV9DT0RFLFxuICAgICAgICBpZFR5cGU6IElEX1RZUEUsXG4gICAgICB9O1xuICAgICAgY29uc3QgbG9naW5SZXN1bHQgPSBhd2FpdCBmZXRjaFBvc3RXaXRoaW5QYWdlPHsgc3RhdHVzOiBzdHJpbmcgfT4odGhpcy5wYWdlLCBsb2dpblVybCwgcmVxdWVzdCk7XG4gICAgICBkZWJ1ZyhgdXNlciBsb2dpbiB3aXRoIHN0YXR1cyAnJHtsb2dpblJlc3VsdD8uc3RhdHVzfSdgKTtcblxuICAgICAgaWYgKGxvZ2luUmVzdWx0ICYmIGxvZ2luUmVzdWx0LnN0YXR1cyA9PT0gJzEnKSB7XG4gICAgICAgIHRoaXMuZW1pdFByb2dyZXNzKFNjcmFwZXJQcm9ncmVzc1R5cGVzLkxvZ2luU3VjY2Vzcyk7XG4gICAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUgfTtcbiAgICAgIH1cblxuICAgICAgaWYgKGxvZ2luUmVzdWx0ICYmIGxvZ2luUmVzdWx0LnN0YXR1cyA9PT0gJzMnKSB7XG4gICAgICAgIHRoaXMuZW1pdFByb2dyZXNzKFNjcmFwZXJQcm9ncmVzc1R5cGVzLkNoYW5nZVBhc3N3b3JkKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkNoYW5nZVBhc3N3b3JkLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY3JhcGVyUHJvZ3Jlc3NUeXBlcy5Mb2dpbkZhaWxlZCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgZXJyb3JUeXBlOiBTY3JhcGVyRXJyb3JUeXBlcy5JbnZhbGlkUGFzc3dvcmQsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICh2YWxpZGF0ZVJldHVybkNvZGUgPT09ICc0Jykge1xuICAgICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NyYXBlclByb2dyZXNzVHlwZXMuQ2hhbmdlUGFzc3dvcmQpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICAgIGVycm9yVHlwZTogU2NyYXBlckVycm9yVHlwZXMuQ2hhbmdlUGFzc3dvcmQsXG4gICAgICB9O1xuICAgIH1cblxuICAgIHRoaXMuZW1pdFByb2dyZXNzKFNjcmFwZXJQcm9ncmVzc1R5cGVzLkxvZ2luRmFpbGVkKTtcbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogZmFsc2UsXG4gICAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkludmFsaWRQYXNzd29yZCxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hEYXRhKCkge1xuICAgIGNvbnN0IGRlZmF1bHRTdGFydE1vbWVudCA9IG1vbWVudCgpLnN1YnRyYWN0KDEsICd5ZWFycycpO1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHRoaXMub3B0aW9ucy5zdGFydERhdGUgfHwgZGVmYXVsdFN0YXJ0TW9tZW50LnRvRGF0ZSgpO1xuICAgIGNvbnN0IHN0YXJ0TW9tZW50ID0gbW9tZW50Lm1heChkZWZhdWx0U3RhcnRNb21lbnQsIG1vbWVudChzdGFydERhdGUpKTtcblxuICAgIHJldHVybiBmZXRjaEFsbFRyYW5zYWN0aW9ucyhcbiAgICAgIHRoaXMucGFnZSxcbiAgICAgIHRoaXMub3B0aW9ucyxcbiAgICAgIHtcbiAgICAgICAgc2VydmljZXNVcmw6IHRoaXMuc2VydmljZXNVcmwsXG4gICAgICAgIGNvbXBhbnlDb2RlOiB0aGlzLmNvbXBhbnlDb2RlLFxuICAgICAgfSxcbiAgICAgIHN0YXJ0TW9tZW50LFxuICAgICk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgSXNyYWNhcmRBbWV4QmFzZVNjcmFwZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFFLFVBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFlBQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLE1BQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFLLE1BQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLE1BQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLGFBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLFFBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLGNBQUEsR0FBQVQsT0FBQTtBQU9BLElBQUFVLHVCQUFBLEdBQUFWLE9BQUE7QUFDQSxJQUFBVyxPQUFBLEdBQUFYLE9BQUE7QUFFQSxJQUFBWSxRQUFBLEdBQUFaLE9BQUE7QUFBbUYsU0FBQUQsdUJBQUFjLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFFbkYsTUFBTUcsWUFBWSxHQUFHLEtBQUs7QUFDMUIsTUFBTUMsT0FBTyxHQUFHLEdBQUc7QUFDbkIsTUFBTUMsb0JBQW9CLEdBQUcsT0FBTztBQUVwQyxNQUFNQyxXQUFXLEdBQUcsWUFBWTtBQUVoQyxNQUFNQyxLQUFLLEdBQUcsSUFBQUMsZUFBUSxFQUFDLG9CQUFvQixDQUFDO0FBNkU1QyxTQUFTQyxjQUFjQSxDQUFDQyxXQUFtQixFQUFFQyxXQUFtQixFQUFFO0VBQ2hFLE1BQU1DLFdBQVcsR0FBR0QsV0FBVyxDQUFDRSxNQUFNLENBQUMsWUFBWSxDQUFDO0VBQ3BELE1BQU1DLEdBQUcsR0FBRyxJQUFJQyxHQUFHLENBQUNMLFdBQVcsQ0FBQztFQUNoQ0ksR0FBRyxDQUFDRSxZQUFZLENBQUNDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLENBQUM7RUFDakRILEdBQUcsQ0FBQ0UsWUFBWSxDQUFDQyxHQUFHLENBQUMsWUFBWSxFQUFFLEdBQUcsQ0FBQztFQUN2Q0gsR0FBRyxDQUFDRSxZQUFZLENBQUNDLEdBQUcsQ0FBQyxhQUFhLEVBQUVMLFdBQVcsQ0FBQztFQUNoREUsR0FBRyxDQUFDRSxZQUFZLENBQUNDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDO0VBQ3RDLE9BQU9ILEdBQUcsQ0FBQ0ksUUFBUSxDQUFDLENBQUM7QUFDdkI7QUFFQSxlQUFlQyxhQUFhQSxDQUFDQyxJQUFVLEVBQUVWLFdBQW1CLEVBQUVDLFdBQW1CLEVBQTZCO0VBQzVHLE1BQU1VLE9BQU8sR0FBR1osY0FBYyxDQUFDQyxXQUFXLEVBQUVDLFdBQVcsQ0FBQztFQUN4RCxNQUFNVyxVQUFVLEdBQUcsTUFBTSxJQUFBQyx5QkFBa0IsRUFBb0NILElBQUksRUFBRUMsT0FBTyxDQUFDO0VBQzdGLElBQUlDLFVBQVUsSUFBSUUsZUFBQyxDQUFDQyxHQUFHLENBQUNILFVBQVUsRUFBRSxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUlBLFVBQVUsQ0FBQ0ksa0JBQWtCLEVBQUU7SUFDN0YsTUFBTTtNQUFFQztJQUFhLENBQUMsR0FBR0wsVUFBVSxDQUFDSSxrQkFBa0I7SUFDdEQsSUFBSUMsWUFBWSxFQUFFO01BQ2hCLE9BQU9BLFlBQVksQ0FBQ0MsR0FBRyxDQUFDQyxVQUFVLElBQUk7UUFDcEMsT0FBTztVQUNMQyxLQUFLLEVBQUVDLFFBQVEsQ0FBQ0YsVUFBVSxDQUFDRyxTQUFTLEVBQUUsRUFBRSxDQUFDO1VBQ3pDQyxhQUFhLEVBQUVKLFVBQVUsQ0FBQ0ssVUFBVTtVQUNwQ0MsYUFBYSxFQUFFLElBQUFDLGVBQU0sRUFBQ1AsVUFBVSxDQUFDakIsV0FBVyxFQUFFTixXQUFXLENBQUMsQ0FBQytCLFdBQVcsQ0FBQztRQUN6RSxDQUFDO01BQ0gsQ0FBQyxDQUFDO0lBQ0o7RUFDRjtFQUNBLE9BQU8sRUFBRTtBQUNYO0FBRUEsU0FBU0Msa0JBQWtCQSxDQUFDNUIsV0FBbUIsRUFBRUMsV0FBbUIsRUFBRTtFQUNwRSxNQUFNNEIsS0FBSyxHQUFHNUIsV0FBVyxDQUFDNEIsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDO0VBQ3JDLE1BQU1DLElBQUksR0FBRzdCLFdBQVcsQ0FBQzZCLElBQUksQ0FBQyxDQUFDO0VBQy9CLE1BQU1DLFFBQVEsR0FBR0YsS0FBSyxHQUFHLEVBQUUsR0FBRyxJQUFJQSxLQUFLLEVBQUUsR0FBR0EsS0FBSyxDQUFDckIsUUFBUSxDQUFDLENBQUM7RUFDNUQsTUFBTUosR0FBRyxHQUFHLElBQUlDLEdBQUcsQ0FBQ0wsV0FBVyxDQUFDO0VBQ2hDSSxHQUFHLENBQUNFLFlBQVksQ0FBQ0MsR0FBRyxDQUFDLFNBQVMsRUFBRSx1QkFBdUIsQ0FBQztFQUN4REgsR0FBRyxDQUFDRSxZQUFZLENBQUNDLEdBQUcsQ0FBQyxPQUFPLEVBQUV3QixRQUFRLENBQUM7RUFDdkMzQixHQUFHLENBQUNFLFlBQVksQ0FBQ0MsR0FBRyxDQUFDLE1BQU0sRUFBRSxHQUFHdUIsSUFBSSxFQUFFLENBQUM7RUFDdkMxQixHQUFHLENBQUNFLFlBQVksQ0FBQ0MsR0FBRyxDQUFDLGNBQWMsRUFBRSxHQUFHLENBQUM7RUFDekMsT0FBT0gsR0FBRyxDQUFDSSxRQUFRLENBQUMsQ0FBQztBQUN2QjtBQUVBLFNBQVN3QixlQUFlQSxDQUFDQyxXQUFtQixFQUFFO0VBQzVDLElBQUlBLFdBQVcsS0FBS0Msa0NBQXVCLElBQUlELFdBQVcsS0FBS0UsOEJBQW1CLEVBQUU7SUFDbEYsT0FBT0MsMEJBQWU7RUFDeEI7RUFDQSxPQUFPSCxXQUFXO0FBQ3BCO0FBRUEsU0FBU0ksbUJBQW1CQSxDQUFDQyxHQUF1QixFQUF1QztFQUN6RixJQUFJLENBQUNBLEdBQUcsQ0FBQ0MsUUFBUSxJQUFJLENBQUNELEdBQUcsQ0FBQ0MsUUFBUSxDQUFDQyxRQUFRLENBQUM3QyxvQkFBb0IsQ0FBQyxFQUFFO0lBQ2pFLE9BQU84QyxTQUFTO0VBQ2xCO0VBQ0EsTUFBTUMsT0FBTyxHQUFHSixHQUFHLENBQUNDLFFBQVEsQ0FBQ0ksS0FBSyxDQUFDLE1BQU0sQ0FBQztFQUMxQyxJQUFJLENBQUNELE9BQU8sSUFBSUEsT0FBTyxDQUFDRSxNQUFNLEdBQUcsQ0FBQyxFQUFFO0lBQ2xDLE9BQU9ILFNBQVM7RUFDbEI7RUFFQSxPQUFPO0lBQ0xJLE1BQU0sRUFBRXhCLFFBQVEsQ0FBQ3FCLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDaENJLEtBQUssRUFBRXpCLFFBQVEsQ0FBQ3FCLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO0VBQ2hDLENBQUM7QUFDSDtBQUVBLFNBQVNLLGtCQUFrQkEsQ0FBQ1QsR0FBdUIsRUFBRTtFQUNuRCxPQUFPRCxtQkFBbUIsQ0FBQ0MsR0FBRyxDQUFDLEdBQUdVLCtCQUFnQixDQUFDQyxZQUFZLEdBQUdELCtCQUFnQixDQUFDRSxNQUFNO0FBQzNGO0FBRUEsU0FBU0MsbUJBQW1CQSxDQUFDQyxJQUEwQixFQUFFM0IsYUFBcUIsRUFBaUI7RUFDN0YsTUFBTTRCLFlBQVksR0FBR0QsSUFBSSxDQUFDRSxNQUFNLENBQzlCaEIsR0FBRyxJQUNEQSxHQUFHLENBQUNpQixXQUFXLEtBQUssR0FBRyxJQUFJakIsR0FBRyxDQUFDa0IsaUJBQWlCLEtBQUssV0FBVyxJQUFJbEIsR0FBRyxDQUFDbUIseUJBQXlCLEtBQUssV0FDMUcsQ0FBQztFQUVELE9BQU9KLFlBQVksQ0FBQ25DLEdBQUcsQ0FBQ29CLEdBQUcsSUFBSTtJQUM3QixNQUFNb0IsVUFBVSxHQUFHcEIsR0FBRyxDQUFDcUIsZUFBZTtJQUN0QyxNQUFNQyxVQUFVLEdBQUdGLFVBQVUsR0FBR3BCLEdBQUcsQ0FBQ3VCLHdCQUF3QixHQUFHdkIsR0FBRyxDQUFDd0IsZ0JBQWdCO0lBQ25GLE1BQU1DLFNBQVMsR0FBRyxJQUFBckMsZUFBTSxFQUFDa0MsVUFBVSxFQUFFaEUsV0FBVyxDQUFDO0lBRWpELE1BQU1vRSxvQkFBb0IsR0FBRzFCLEdBQUcsQ0FBQzJCLGVBQWUsR0FDNUMsSUFBQXZDLGVBQU0sRUFBQ1ksR0FBRyxDQUFDMkIsZUFBZSxFQUFFckUsV0FBVyxDQUFDLENBQUMrQixXQUFXLENBQUMsQ0FBQyxHQUN0REYsYUFBYTtJQUNqQixNQUFNeUMsTUFBbUIsR0FBRztNQUMxQkMsSUFBSSxFQUFFcEIsa0JBQWtCLENBQUNULEdBQUcsQ0FBQztNQUM3QjhCLFVBQVUsRUFBRS9DLFFBQVEsQ0FBQ3FDLFVBQVUsR0FBR3BCLEdBQUcsQ0FBQ21CLHlCQUF5QixHQUFHbkIsR0FBRyxDQUFDa0IsaUJBQWlCLEVBQUUsRUFBRSxDQUFDO01BQzVGYSxJQUFJLEVBQUVOLFNBQVMsQ0FBQ3BDLFdBQVcsQ0FBQyxDQUFDO01BQzdCRixhQUFhLEVBQUV1QyxvQkFBb0I7TUFDbkNNLGNBQWMsRUFBRVosVUFBVSxHQUFHLENBQUNwQixHQUFHLENBQUNxQixlQUFlLEdBQUcsQ0FBQ3JCLEdBQUcsQ0FBQ2lDLE9BQU87TUFDaEVDLGdCQUFnQixFQUFFeEMsZUFBZSxDQUFDTSxHQUFHLENBQUNtQyxzQkFBc0IsSUFBSW5DLEdBQUcsQ0FBQ29DLFVBQVUsQ0FBQztNQUMvRUMsYUFBYSxFQUFFakIsVUFBVSxHQUFHLENBQUNwQixHQUFHLENBQUNzQyxrQkFBa0IsR0FBRyxDQUFDdEMsR0FBRyxDQUFDdUMsVUFBVTtNQUNyRUMsZUFBZSxFQUFFOUMsZUFBZSxDQUFDTSxHQUFHLENBQUNvQyxVQUFVLENBQUM7TUFDaERLLFdBQVcsRUFBRXJCLFVBQVUsR0FBR3BCLEdBQUcsQ0FBQzBDLHdCQUF3QixHQUFHMUMsR0FBRyxDQUFDMkMsbUJBQW1CO01BQ2hGQyxJQUFJLEVBQUU1QyxHQUFHLENBQUNDLFFBQVEsSUFBSSxFQUFFO01BQ3hCNEMsWUFBWSxFQUFFOUMsbUJBQW1CLENBQUNDLEdBQUcsQ0FBQyxJQUFJRyxTQUFTO01BQ25EMkMsTUFBTSxFQUFFQyxrQ0FBbUIsQ0FBQ0M7SUFDOUIsQ0FBQztJQUVELE9BQU9wQixNQUFNO0VBQ2YsQ0FBQyxDQUFDO0FBQ0o7QUFFQSxlQUFlcUIsaUJBQWlCQSxDQUM5QjdFLElBQVUsRUFDVjhFLE9BQXVCLEVBQ3ZCQyxxQkFBNEMsRUFDNUNDLFdBQW1CLEVBQ25CekYsV0FBbUIsRUFDZ0I7RUFDbkMsTUFBTTBGLFFBQVEsR0FBRyxNQUFNbEYsYUFBYSxDQUFDQyxJQUFJLEVBQUUrRSxxQkFBcUIsQ0FBQ3pGLFdBQVcsRUFBRUMsV0FBVyxDQUFDO0VBQzFGLE1BQU1VLE9BQU8sR0FBR2lCLGtCQUFrQixDQUFDNkQscUJBQXFCLENBQUN6RixXQUFXLEVBQUVDLFdBQVcsQ0FBQztFQUNsRixNQUFNVyxVQUFVLEdBQUcsTUFBTSxJQUFBQyx5QkFBa0IsRUFBeUJILElBQUksRUFBRUMsT0FBTyxDQUFDO0VBQ2xGLElBQUlDLFVBQVUsSUFBSUUsZUFBQyxDQUFDQyxHQUFHLENBQUNILFVBQVUsRUFBRSxlQUFlLENBQUMsS0FBSyxHQUFHLElBQUlBLFVBQVUsQ0FBQ2dGLHlCQUF5QixFQUFFO0lBQ3BHLE1BQU1DLFdBQXFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2hERixRQUFRLENBQUNHLE9BQU8sQ0FBQ0MsT0FBTyxJQUFJO01BQzFCLE1BQU1DLFNBQXVELEdBQUdsRixlQUFDLENBQUNDLEdBQUcsQ0FDbkVILFVBQVUsRUFDVixrQ0FBa0NtRixPQUFPLENBQUMzRSxLQUFLLDBCQUNqRCxDQUFDO01BQ0QsSUFBSTRFLFNBQVMsRUFBRTtRQUNiLElBQUlDLE9BQXNCLEdBQUcsRUFBRTtRQUMvQkQsU0FBUyxDQUFDRixPQUFPLENBQUNJLFFBQVEsSUFBSTtVQUM1QixJQUFJQSxRQUFRLENBQUNDLFNBQVMsRUFBRTtZQUN0QixNQUFNL0MsSUFBSSxHQUFHRCxtQkFBbUIsQ0FBQytDLFFBQVEsQ0FBQ0MsU0FBUyxFQUFFSixPQUFPLENBQUN0RSxhQUFhLENBQUM7WUFDM0V3RSxPQUFPLENBQUNHLElBQUksQ0FBQyxHQUFHaEQsSUFBSSxDQUFDO1VBQ3ZCO1VBQ0EsSUFBSThDLFFBQVEsQ0FBQ0csU0FBUyxFQUFFO1lBQ3RCLE1BQU1qRCxJQUFJLEdBQUdELG1CQUFtQixDQUFDK0MsUUFBUSxDQUFDRyxTQUFTLEVBQUVOLE9BQU8sQ0FBQ3RFLGFBQWEsQ0FBQztZQUMzRXdFLE9BQU8sQ0FBQ0csSUFBSSxDQUFDLEdBQUdoRCxJQUFJLENBQUM7VUFDdkI7UUFDRixDQUFDLENBQUM7UUFFRixJQUFJLENBQUNvQyxPQUFPLENBQUNjLG1CQUFtQixFQUFFO1VBQ2hDTCxPQUFPLEdBQUcsSUFBQU0sNkJBQWUsRUFBQ04sT0FBTyxDQUFDO1FBQ3BDO1FBQ0EsSUFBSVQsT0FBTyxDQUFDZ0IsVUFBVSxFQUFFQyw4QkFBOEIsSUFBSSxJQUFJLEVBQUU7VUFDOURSLE9BQU8sR0FBRyxJQUFBUyxtQ0FBcUIsRUFBQ1QsT0FBTyxFQUFFUCxXQUFXLEVBQUVGLE9BQU8sQ0FBQ2MsbUJBQW1CLElBQUksS0FBSyxDQUFDO1FBQzdGO1FBQ0FULFdBQVcsQ0FBQ0UsT0FBTyxDQUFDeEUsYUFBYSxDQUFDLEdBQUc7VUFDbkNBLGFBQWEsRUFBRXdFLE9BQU8sQ0FBQ3hFLGFBQWE7VUFDcENILEtBQUssRUFBRTJFLE9BQU8sQ0FBQzNFLEtBQUs7VUFDcEJnQyxJQUFJLEVBQUU2QztRQUNSLENBQUM7TUFDSDtJQUNGLENBQUMsQ0FBQztJQUNGLE9BQU9KLFdBQVc7RUFDcEI7RUFFQSxPQUFPLENBQUMsQ0FBQztBQUNYO0FBRUEsU0FBU2MsMEJBQTBCQSxDQUNqQzNHLFdBQW1CLEVBQ25CNkIsS0FBYSxFQUNiK0UsWUFBb0IsRUFDcEJDLFdBQXdCLEVBQ2hCO0VBQ1IsTUFBTUMsU0FBUyxHQUFHakYsS0FBSyxDQUFDMUIsTUFBTSxDQUFDLFFBQVEsQ0FBQztFQUN4QyxNQUFNQyxHQUFHLEdBQUcsSUFBSUMsR0FBRyxDQUFDTCxXQUFXLENBQUM7RUFDaENJLEdBQUcsQ0FBQ0UsWUFBWSxDQUFDQyxHQUFHLENBQUMsU0FBUyxFQUFFLGdCQUFnQixDQUFDO0VBQ2pESCxHQUFHLENBQUNFLFlBQVksQ0FBQ0MsR0FBRyxDQUFDLFdBQVcsRUFBRXFHLFlBQVksQ0FBQ3BHLFFBQVEsQ0FBQyxDQUFDLENBQUM7RUFDMURKLEdBQUcsQ0FBQ0UsWUFBWSxDQUFDQyxHQUFHLENBQUMsWUFBWSxFQUFFc0csV0FBVyxDQUFDekMsVUFBVSxDQUFFNUQsUUFBUSxDQUFDLENBQUMsQ0FBQztFQUN0RUosR0FBRyxDQUFDRSxZQUFZLENBQUNDLEdBQUcsQ0FBQyxXQUFXLEVBQUV1RyxTQUFTLENBQUM7RUFDNUMsT0FBTzFHLEdBQUcsQ0FBQ0ksUUFBUSxDQUFDLENBQUM7QUFDdkI7QUFDQSxlQUFldUcsd0JBQXdCQSxDQUNyQ3JHLElBQVUsRUFDVjhFLE9BQThCLEVBQzlCM0QsS0FBYSxFQUNiK0UsWUFBb0IsRUFDcEJDLFdBQXdCLEVBQ0Y7RUFDdEIsTUFBTWxHLE9BQU8sR0FBR2dHLDBCQUEwQixDQUFDbkIsT0FBTyxDQUFDeEYsV0FBVyxFQUFFNkIsS0FBSyxFQUFFK0UsWUFBWSxFQUFFQyxXQUFXLENBQUM7RUFDakcsTUFBTUcsSUFBSSxHQUFHLE1BQU0sSUFBQW5HLHlCQUFrQixFQUF5QkgsSUFBSSxFQUFFQyxPQUFPLENBQUM7RUFFNUUsSUFBSSxDQUFDcUcsSUFBSSxFQUFFO0lBQ1QsT0FBT0gsV0FBVztFQUNwQjtFQUVBLE1BQU1JLFdBQVcsR0FBR25HLGVBQUMsQ0FBQ0MsR0FBRyxDQUFDaUcsSUFBSSxFQUFFLDJCQUEyQixDQUFDLElBQUksRUFBRTtFQUNsRSxPQUFPO0lBQ0wsR0FBR0gsV0FBVztJQUNkSyxRQUFRLEVBQUVELFdBQVcsQ0FBQ0UsSUFBSSxDQUFDO0VBQzdCLENBQUM7QUFDSDtBQUVBLFNBQVNDLHlCQUF5QkEsQ0FDaENDLGdCQUF5RCxFQUN6RDNHLElBQVUsRUFDVjhFLE9BQThCLEVBQzlCM0QsS0FBb0IsRUFDSTtFQUN4QixNQUFNeUYsUUFBUSxHQUFHRCxnQkFBZ0IsQ0FBQ2pFLElBQUksQ0FBQ2xDLEdBQUcsQ0FBQ3FHLENBQUMsSUFDMUNSLHdCQUF3QixDQUFDckcsSUFBSSxFQUFFOEUsT0FBTyxFQUFFM0QsS0FBSyxFQUFFd0YsZ0JBQWdCLENBQUNqRyxLQUFLLEVBQUVtRyxDQUFDLENBQzFFLENBQUM7RUFDRCxPQUFPQyxPQUFPLENBQUNDLEdBQUcsQ0FBQ0gsUUFBUSxDQUFDO0FBQzlCO0FBRUEsZUFBZUksb0JBQW9CQSxDQUNqQ2hILElBQVUsRUFDVjhFLE9BQThCLEVBQzlCbUMsVUFBb0MsRUFDcEM5RixLQUFvQixFQUNlO0VBQ25DLE1BQU15RixRQUFRLEdBQUdNLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDRixVQUFVLENBQUMsQ0FBQ3pHLEdBQUcsQ0FBQyxNQUFNNEcsQ0FBQyxLQUFLO0lBQ3ZELEdBQUdILFVBQVUsQ0FBQ0csQ0FBQyxDQUFDO0lBQ2hCMUUsSUFBSSxFQUFFLE1BQU1nRSx5QkFBeUIsQ0FBQ08sVUFBVSxDQUFDRyxDQUFDLENBQUMsRUFBRXBILElBQUksRUFBRThFLE9BQU8sRUFBRTNELEtBQUs7RUFDM0UsQ0FBQyxDQUFDLENBQUM7RUFDSCxNQUFNOEQsUUFBUSxHQUFHLE1BQU02QixPQUFPLENBQUNDLEdBQUcsQ0FBQ0gsUUFBUSxDQUFDO0VBQzVDLE9BQU8zQixRQUFRLENBQUNvQyxNQUFNLENBQUMsQ0FBQ0MsQ0FBQyxFQUFFQyxDQUFDLE1BQU07SUFBRSxHQUFHRCxDQUFDO0lBQUUsQ0FBQ0MsQ0FBQyxDQUFDMUcsYUFBYSxHQUFHMEc7RUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN4RTtBQUVBLFNBQVNDLGFBQWFBLENBQ3BCQyxpQkFBNkMsRUFDN0N6SCxJQUFVLEVBQ1Y4RSxPQUE4QixFQUM5QjRDLFNBQTBCLEVBQ1c7RUFDckMsTUFBTUMsT0FBTyxHQUFHRixpQkFBaUIsQ0FBQ2pILEdBQUcsQ0FBQyxDQUFDNEcsQ0FBQyxFQUFFUSxDQUFDLEtBQUssTUFBTVosb0JBQW9CLENBQUNoSCxJQUFJLEVBQUU4RSxPQUFPLEVBQUVzQyxDQUFDLEVBQUVNLFNBQVMsQ0FBQ0UsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUMzRyxPQUFPLElBQUFDLGtCQUFTLEVBQUNGLE9BQU8sQ0FBQztBQUMzQjtBQUVBLGVBQWVHLG9CQUFvQkEsQ0FDakM5SCxJQUFVLEVBQ1Y4RSxPQUF1QixFQUN2QkMscUJBQTRDLEVBQzVDQyxXQUFtQixFQUNuQjtFQUNBLE1BQU0rQyxvQkFBb0IsR0FBR2pELE9BQU8sQ0FBQ2lELG9CQUFvQixJQUFJLENBQUM7RUFDOUQsTUFBTUwsU0FBUyxHQUFHLElBQUFNLGNBQWtCLEVBQUNoRCxXQUFXLEVBQUUrQyxvQkFBb0IsQ0FBQztFQUN2RSxNQUFNRSxPQUFtQyxHQUFHLE1BQU1uQixPQUFPLENBQUNDLEdBQUcsQ0FDM0RXLFNBQVMsQ0FBQ2xILEdBQUcsQ0FBQyxNQUFNakIsV0FBVyxJQUFJO0lBQ2pDLE9BQU9zRixpQkFBaUIsQ0FBQzdFLElBQUksRUFBRThFLE9BQU8sRUFBRUMscUJBQXFCLEVBQUVDLFdBQVcsRUFBRXpGLFdBQVcsQ0FBQztFQUMxRixDQUFDLENBQ0gsQ0FBQztFQUVELE1BQU0ySSxXQUFXLEdBQUdwRCxPQUFPLENBQUNxRCxnQ0FBZ0MsR0FDeEQsTUFBTVgsYUFBYSxDQUFDUyxPQUFPLEVBQUVqSSxJQUFJLEVBQUUrRSxxQkFBcUIsRUFBRTJDLFNBQVMsQ0FBQyxHQUNwRU8sT0FBTztFQUVYLE1BQU1HLFlBQTJDLEdBQUcsQ0FBQyxDQUFDO0VBRXRERixXQUFXLENBQUM5QyxPQUFPLENBQUM1QixNQUFNLElBQUk7SUFDNUIwRCxNQUFNLENBQUNDLElBQUksQ0FBQzNELE1BQU0sQ0FBQyxDQUFDNEIsT0FBTyxDQUFDdkUsYUFBYSxJQUFJO01BQzNDLElBQUl3SCxjQUFjLEdBQUdELFlBQVksQ0FBQ3ZILGFBQWEsQ0FBQztNQUNoRCxJQUFJLENBQUN3SCxjQUFjLEVBQUU7UUFDbkJBLGNBQWMsR0FBRyxFQUFFO1FBQ25CRCxZQUFZLENBQUN2SCxhQUFhLENBQUMsR0FBR3dILGNBQWM7TUFDOUM7TUFDQSxNQUFNQyxhQUFhLEdBQUc5RSxNQUFNLENBQUMzQyxhQUFhLENBQUMsQ0FBQzZCLElBQUk7TUFDaEQwRixZQUFZLENBQUN2SCxhQUFhLENBQUMsQ0FBQzZFLElBQUksQ0FBQyxHQUFHNEMsYUFBYSxDQUFDO0lBQ3BELENBQUMsQ0FBQztFQUNKLENBQUMsQ0FBQztFQUVGLE1BQU1yRCxRQUFRLEdBQUdpQyxNQUFNLENBQUNDLElBQUksQ0FBQ2lCLFlBQVksQ0FBQyxDQUFDNUgsR0FBRyxDQUFDSyxhQUFhLElBQUk7SUFDOUQsT0FBTztNQUNMQSxhQUFhO01BQ2I2QixJQUFJLEVBQUUwRixZQUFZLENBQUN2SCxhQUFhO0lBQ2xDLENBQUM7RUFDSCxDQUFDLENBQUM7RUFFRixPQUFPO0lBQ0wwSCxPQUFPLEVBQUUsSUFBSTtJQUNidEQ7RUFDRixDQUFDO0FBQ0g7QUFHQSxNQUFNdUQsdUJBQXVCLFNBQVNDLDhDQUFzQixDQUE2QjtFQU92RkMsV0FBV0EsQ0FBQzVELE9BQXVCLEVBQUU2RCxPQUFlLEVBQUVDLFdBQW1CLEVBQUU7SUFDekUsS0FBSyxDQUFDOUQsT0FBTyxDQUFDO0lBRWQsSUFBSSxDQUFDNkQsT0FBTyxHQUFHQSxPQUFPO0lBQ3RCLElBQUksQ0FBQ0MsV0FBVyxHQUFHQSxXQUFXO0lBQzlCLElBQUksQ0FBQ3RKLFdBQVcsR0FBRyxHQUFHcUosT0FBTyxvQ0FBb0M7RUFDbkU7RUFFQSxNQUFNRSxLQUFLQSxDQUFDQyxXQUF1QyxFQUFrQztJQUNuRixNQUFNLElBQUksQ0FBQzlJLElBQUksQ0FBQytJLHNCQUFzQixDQUFDLElBQUksQ0FBQztJQUM1QyxJQUFJLENBQUMvSSxJQUFJLENBQUNnSixFQUFFLENBQUMsU0FBUyxFQUFFQyxPQUFPLElBQUk7TUFDakMsSUFBSUEsT0FBTyxDQUFDdkosR0FBRyxDQUFDLENBQUMsQ0FBQ29DLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQyxFQUFFO1FBQ2pEM0MsS0FBSyxDQUFDLGtFQUFrRSxDQUFDO1FBQ3pFLEtBQUs4SixPQUFPLENBQUNDLEtBQUssQ0FBQ25ILFNBQVMsRUFBRW9ILCtCQUFzQixDQUFDRCxLQUFLLENBQUM7TUFDN0QsQ0FBQyxNQUFNO1FBQ0wsS0FBS0QsT0FBTyxDQUFDRyxRQUFRLENBQUNySCxTQUFTLEVBQUVvSCwrQkFBc0IsQ0FBQ0MsUUFBUSxDQUFDO01BQ25FO0lBQ0YsQ0FBQyxDQUFDO0lBRUYsTUFBTSxJQUFBQyw4QkFBcUIsRUFBQyxJQUFJLENBQUNySixJQUFJLENBQUM7SUFFdEMsTUFBTSxJQUFJLENBQUNzSixVQUFVLENBQUMsR0FBRyxJQUFJLENBQUNYLE9BQU8scUJBQXFCLENBQUM7SUFFM0QsSUFBSSxDQUFDWSxZQUFZLENBQUNDLGlDQUFvQixDQUFDQyxTQUFTLENBQUM7SUFFakQsTUFBTUMsV0FBVyxHQUFHLEdBQUcsSUFBSSxDQUFDcEssV0FBVyx5QkFBeUI7SUFDaEUsTUFBTXFLLGVBQWUsR0FBRztNQUN0QkMsRUFBRSxFQUFFZCxXQUFXLENBQUNjLEVBQUU7TUFDbEJDLFVBQVUsRUFBRWYsV0FBVyxDQUFDZ0IsV0FBVztNQUNuQ0MsV0FBVyxFQUFFaEwsWUFBWTtNQUN6QmlMLE1BQU0sRUFBRWhMLE9BQU87TUFDZmlMLFVBQVUsRUFBRSxHQUFHO01BQ2ZyQixXQUFXLEVBQUUsSUFBSSxDQUFDQTtJQUNwQixDQUFDO0lBQ0QsTUFBTXNCLGNBQWMsR0FBRyxNQUFNLElBQUFDLDBCQUFtQixFQUF5QixJQUFJLENBQUNuSyxJQUFJLEVBQUUwSixXQUFXLEVBQUVDLGVBQWUsQ0FBQztJQUNqSCxJQUNFLENBQUNPLGNBQWMsSUFDZixDQUFDQSxjQUFjLENBQUNFLE1BQU0sSUFDdEJGLGNBQWMsQ0FBQ0UsTUFBTSxDQUFDQyxNQUFNLEtBQUssR0FBRyxJQUNwQyxDQUFDSCxjQUFjLENBQUNJLGtCQUFrQixFQUNsQztNQUNBLE1BQU0sSUFBSUMsS0FBSyxDQUFDLDRCQUE0QixDQUFDO0lBQy9DO0lBRUEsTUFBTUMsa0JBQWtCLEdBQUdOLGNBQWMsQ0FBQ0ksa0JBQWtCLENBQUNHLFVBQVU7SUFDdkV0TCxLQUFLLENBQUMsbUNBQW1DcUwsa0JBQWtCLEdBQUcsQ0FBQztJQUMvRCxJQUFJQSxrQkFBa0IsS0FBSyxHQUFHLEVBQUU7TUFDOUIsTUFBTTtRQUFFRTtNQUFTLENBQUMsR0FBR1IsY0FBYyxDQUFDSSxrQkFBa0I7TUFFdEQsTUFBTUssUUFBUSxHQUFHLEdBQUcsSUFBSSxDQUFDckwsV0FBVyx3QkFBd0I7TUFDNUQsTUFBTTJKLE9BQU8sR0FBRztRQUNkMkIsYUFBYSxFQUFFRixRQUFRO1FBQ3ZCRyxXQUFXLEVBQUUvQixXQUFXLENBQUNjLEVBQUU7UUFDM0JrQixLQUFLLEVBQUVoQyxXQUFXLENBQUNpQyxRQUFRO1FBQzNCbEIsVUFBVSxFQUFFZixXQUFXLENBQUNnQixXQUFXO1FBQ25DQyxXQUFXLEVBQUVoTCxZQUFZO1FBQ3pCaUwsTUFBTSxFQUFFaEw7TUFDVixDQUFDO01BQ0QsTUFBTWdNLFdBQVcsR0FBRyxNQUFNLElBQUFiLDBCQUFtQixFQUFxQixJQUFJLENBQUNuSyxJQUFJLEVBQUUySyxRQUFRLEVBQUUxQixPQUFPLENBQUM7TUFDL0Y5SixLQUFLLENBQUMsMkJBQTJCNkwsV0FBVyxFQUFFdEcsTUFBTSxHQUFHLENBQUM7TUFFeEQsSUFBSXNHLFdBQVcsSUFBSUEsV0FBVyxDQUFDdEcsTUFBTSxLQUFLLEdBQUcsRUFBRTtRQUM3QyxJQUFJLENBQUM2RSxZQUFZLENBQUNDLGlDQUFvQixDQUFDeUIsWUFBWSxDQUFDO1FBQ3BELE9BQU87VUFBRTFDLE9BQU8sRUFBRTtRQUFLLENBQUM7TUFDMUI7TUFFQSxJQUFJeUMsV0FBVyxJQUFJQSxXQUFXLENBQUN0RyxNQUFNLEtBQUssR0FBRyxFQUFFO1FBQzdDLElBQUksQ0FBQzZFLFlBQVksQ0FBQ0MsaUNBQW9CLENBQUMwQixjQUFjLENBQUM7UUFDdEQsT0FBTztVQUNMM0MsT0FBTyxFQUFFLEtBQUs7VUFDZDRDLFNBQVMsRUFBRUMseUJBQWlCLENBQUNGO1FBQy9CLENBQUM7TUFDSDtNQUVBLElBQUksQ0FBQzNCLFlBQVksQ0FBQ0MsaUNBQW9CLENBQUM2QixXQUFXLENBQUM7TUFDbkQsT0FBTztRQUNMOUMsT0FBTyxFQUFFLEtBQUs7UUFDZDRDLFNBQVMsRUFBRUMseUJBQWlCLENBQUNFO01BQy9CLENBQUM7SUFDSDtJQUVBLElBQUlkLGtCQUFrQixLQUFLLEdBQUcsRUFBRTtNQUM5QixJQUFJLENBQUNqQixZQUFZLENBQUNDLGlDQUFvQixDQUFDMEIsY0FBYyxDQUFDO01BQ3RELE9BQU87UUFDTDNDLE9BQU8sRUFBRSxLQUFLO1FBQ2Q0QyxTQUFTLEVBQUVDLHlCQUFpQixDQUFDRjtNQUMvQixDQUFDO0lBQ0g7SUFFQSxJQUFJLENBQUMzQixZQUFZLENBQUNDLGlDQUFvQixDQUFDNkIsV0FBVyxDQUFDO0lBQ25ELE9BQU87TUFDTDlDLE9BQU8sRUFBRSxLQUFLO01BQ2Q0QyxTQUFTLEVBQUVDLHlCQUFpQixDQUFDRTtJQUMvQixDQUFDO0VBQ0g7RUFFQSxNQUFNQyxTQUFTQSxDQUFBLEVBQUc7SUFDaEIsTUFBTUMsa0JBQWtCLEdBQUcsSUFBQXhLLGVBQU0sRUFBQyxDQUFDLENBQUN5SyxRQUFRLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQztJQUN4RCxNQUFNQyxTQUFTLEdBQUcsSUFBSSxDQUFDNUcsT0FBTyxDQUFDNEcsU0FBUyxJQUFJRixrQkFBa0IsQ0FBQ0csTUFBTSxDQUFDLENBQUM7SUFDdkUsTUFBTTNHLFdBQVcsR0FBR2hFLGVBQU0sQ0FBQzRLLEdBQUcsQ0FBQ0osa0JBQWtCLEVBQUUsSUFBQXhLLGVBQU0sRUFBQzBLLFNBQVMsQ0FBQyxDQUFDO0lBRXJFLE9BQU81RCxvQkFBb0IsQ0FDekIsSUFBSSxDQUFDOUgsSUFBSSxFQUNULElBQUksQ0FBQzhFLE9BQU8sRUFDWjtNQUNFeEYsV0FBVyxFQUFFLElBQUksQ0FBQ0EsV0FBVztNQUM3QnNKLFdBQVcsRUFBRSxJQUFJLENBQUNBO0lBQ3BCLENBQUMsRUFDRDVELFdBQ0YsQ0FBQztFQUNIO0FBQ0Y7QUFBQyxJQUFBNkcsUUFBQSxHQUFBQyxPQUFBLENBQUFoTixPQUFBLEdBRWMwSix1QkFBdUIiLCJpZ25vcmVMaXN0IjpbXX0=
324
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbW9tZW50IiwiX2NvbnN0YW50cyIsIl9kZWZpbml0aW9ucyIsIl9kYXRlcyIsIl9kZWJ1ZyIsIl9mZXRjaCIsIl90cmFuc2FjdGlvbnMiLCJfd2FpdGluZyIsIl90cmFuc2FjdGlvbnMyIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJfZXJyb3JzIiwiX2Jyb3dzZXIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJSQVRFX0xJTUlUIiwiU0xFRVBfQkVUV0VFTiIsIlRSQU5TQUNUSU9OU19CQVRDSF9TSVpFIiwiQ09VTlRSWV9DT0RFIiwiSURfVFlQRSIsIklOU1RBTExNRU5UU19LRVlXT1JEIiwiREFURV9GT1JNQVQiLCJkZWJ1ZyIsImdldERlYnVnIiwiZ2V0QWNjb3VudHNVcmwiLCJzZXJ2aWNlc1VybCIsIm1vbnRoTW9tZW50IiwiYmlsbGluZ0RhdGUiLCJmb3JtYXQiLCJ1cmwiLCJVUkwiLCJzZWFyY2hQYXJhbXMiLCJzZXQiLCJ0b1N0cmluZyIsImZldGNoQWNjb3VudHMiLCJwYWdlIiwiZGF0YVVybCIsImRhdGFSZXN1bHQiLCJmZXRjaEdldFdpdGhpblBhZ2UiLCJfIiwiZ2V0IiwiRGFzaGJvYXJkTW9udGhCZWFuIiwiY2FyZHNDaGFyZ2VzIiwibWFwIiwiY2FyZENoYXJnZSIsImluZGV4IiwicGFyc2VJbnQiLCJjYXJkSW5kZXgiLCJhY2NvdW50TnVtYmVyIiwiY2FyZE51bWJlciIsInByb2Nlc3NlZERhdGUiLCJtb21lbnQiLCJ0b0lTT1N0cmluZyIsImdldFRyYW5zYWN0aW9uc1VybCIsIm1vbnRoIiwieWVhciIsIm1vbnRoU3RyIiwiY29udmVydEN1cnJlbmN5IiwiY3VycmVuY3lTdHIiLCJTSEVLRUxfQ1VSUkVOQ1lfS0VZV09SRCIsIkFMVF9TSEVLRUxfQ1VSUkVOQ1kiLCJTSEVLRUxfQ1VSUkVOQ1kiLCJnZXRJbnN0YWxsbWVudHNJbmZvIiwidHhuIiwibW9yZUluZm8iLCJpbmNsdWRlcyIsInVuZGVmaW5lZCIsIm1hdGNoZXMiLCJtYXRjaCIsImxlbmd0aCIsIm51bWJlciIsInRvdGFsIiwiZ2V0VHJhbnNhY3Rpb25UeXBlIiwiVHJhbnNhY3Rpb25UeXBlcyIsIkluc3RhbGxtZW50cyIsIk5vcm1hbCIsImNvbnZlcnRUcmFuc2FjdGlvbnMiLCJ0eG5zIiwiZmlsdGVyZWRUeG5zIiwiZmlsdGVyIiwiZGVhbFN1bVR5cGUiLCJ2b3VjaGVyTnVtYmVyUmF0eiIsInZvdWNoZXJOdW1iZXJSYXR6T3V0Ym91bmQiLCJpc091dGJvdW5kIiwiZGVhbFN1bU91dGJvdW5kIiwidHhuRGF0ZVN0ciIsImZ1bGxQdXJjaGFzZURhdGVPdXRib3VuZCIsImZ1bGxQdXJjaGFzZURhdGUiLCJ0eG5Nb21lbnQiLCJjdXJyZW50UHJvY2Vzc2VkRGF0ZSIsImZ1bGxQYXltZW50RGF0ZSIsInJlc3VsdCIsInR5cGUiLCJpZGVudGlmaWVyIiwiZGF0ZSIsIm9yaWdpbmFsQW1vdW50IiwiZGVhbFN1bSIsIm9yaWdpbmFsQ3VycmVuY3kiLCJjdXJyZW50UGF5bWVudEN1cnJlbmN5IiwiY3VycmVuY3lJZCIsImNoYXJnZWRBbW91bnQiLCJwYXltZW50U3VtT3V0Ym91bmQiLCJwYXltZW50U3VtIiwiY2hhcmdlZEN1cnJlbmN5IiwiZGVzY3JpcHRpb24iLCJmdWxsU3VwcGxpZXJOYW1lT3V0Ym91bmQiLCJmdWxsU3VwcGxpZXJOYW1lSGViIiwibWVtbyIsImluc3RhbGxtZW50cyIsInN0YXR1cyIsIlRyYW5zYWN0aW9uU3RhdHVzZXMiLCJDb21wbGV0ZWQiLCJmZXRjaFRyYW5zYWN0aW9ucyIsIm9wdGlvbnMiLCJjb21wYW55U2VydmljZU9wdGlvbnMiLCJzdGFydE1vbWVudCIsImFjY291bnRzIiwic2xlZXAiLCJDYXJkc1RyYW5zYWN0aW9uc0xpc3RCZWFuIiwiYWNjb3VudFR4bnMiLCJmb3JFYWNoIiwiYWNjb3VudCIsInR4bkdyb3VwcyIsImFsbFR4bnMiLCJ0eG5Hcm91cCIsInR4bklzcmFlbCIsInB1c2giLCJ0eG5BYnJvYWQiLCJjb21iaW5lSW5zdGFsbG1lbnRzIiwiZml4SW5zdGFsbG1lbnRzIiwib3V0cHV0RGF0YSIsImVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZSIsImZpbHRlck9sZFRyYW5zYWN0aW9ucyIsImdldEV4dHJhU2NyYXBUcmFuc2FjdGlvbiIsImFjY291bnRJbmRleCIsInRyYW5zYWN0aW9uIiwiZGF0YSIsInJhd0NhdGVnb3J5IiwiY2F0ZWdvcnkiLCJ0cmltIiwiZ2V0RXh0cmFTY3JhcEFjY291bnQiLCJhY2NvdW50TWFwIiwiT2JqZWN0IiwidmFsdWVzIiwidHhuc0NodW5rIiwiY2h1bmsiLCJ1cGRhdGVkVHhucyIsIlByb21pc2UiLCJhbGwiLCJ0IiwicmVkdWNlIiwibSIsIngiLCJnZXRBZGRpdGlvbmFsVHJhbnNhY3Rpb25JbmZvcm1hdGlvbiIsInNjcmFwZXJPcHRpb25zIiwiYWNjb3VudHNXaXRoSW5kZXgiLCJhbGxNb250aHMiLCJhZGRpdGlvbmFsVHJhbnNhY3Rpb25JbmZvcm1hdGlvbiIsIm9wdEluRmVhdHVyZXMiLCJydW5TZXJpYWwiLCJhIiwiaSIsImZldGNoQWxsVHJhbnNhY3Rpb25zIiwiZnV0dXJlTW9udGhzVG9TY3JhcGUiLCJnZXRBbGxNb250aE1vbWVudHMiLCJyZXN1bHRzIiwiZmluYWxSZXN1bHQiLCJjb21iaW5lZFR4bnMiLCJrZXlzIiwidHhuc0ZvckFjY291bnQiLCJ0b0JlQWRkZWRUeG5zIiwic3VjY2VzcyIsIklzcmFjYXJkQW1leEJhc2VTY3JhcGVyIiwiQmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImNvbnN0cnVjdG9yIiwiYmFzZVVybCIsImNvbXBhbnlDb2RlIiwibG9naW4iLCJjcmVkZW50aWFscyIsInNldFJlcXVlc3RJbnRlcmNlcHRpb24iLCJvbiIsInJlcXVlc3QiLCJhYm9ydCIsImludGVyY2VwdGlvblByaW9yaXRpZXMiLCJjb250aW51ZSIsIm1hc2tIZWFkbGVzc1VzZXJBZ2VudCIsIm5hdmlnYXRlVG8iLCJlbWl0UHJvZ3Jlc3MiLCJTY3JhcGVyUHJvZ3Jlc3NUeXBlcyIsIkxvZ2dpbmdJbiIsInZhbGlkYXRlVXJsIiwidmFsaWRhdGVSZXF1ZXN0IiwiaWQiLCJjYXJkU3VmZml4IiwiY2FyZDZEaWdpdHMiLCJjb3VudHJ5Q29kZSIsImlkVHlwZSIsImNoZWNrTGV2ZWwiLCJ2YWxpZGF0ZVJlc3VsdCIsImZldGNoUG9zdFdpdGhpblBhZ2UiLCJIZWFkZXIiLCJTdGF0dXMiLCJWYWxpZGF0ZUlkRGF0YUJlYW4iLCJFcnJvciIsInZhbGlkYXRlUmV0dXJuQ29kZSIsInJldHVybkNvZGUiLCJ1c2VyTmFtZSIsImxvZ2luVXJsIiwiS29kTWlzaHRhbWVzaCIsIk1pc3BhclppaHV5IiwiU2lzbWEiLCJwYXNzd29yZCIsImxvZ2luUmVzdWx0IiwiTG9naW5TdWNjZXNzIiwiQ2hhbmdlUGFzc3dvcmQiLCJlcnJvclR5cGUiLCJTY3JhcGVyRXJyb3JUeXBlcyIsIkxvZ2luRmFpbGVkIiwiSW52YWxpZFBhc3N3b3JkIiwiZmV0Y2hEYXRhIiwiZGVmYXVsdFN0YXJ0TW9tZW50Iiwic3VidHJhY3QiLCJzdGFydERhdGUiLCJ0b0RhdGUiLCJtYXgiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyYXBlcnMvYmFzZS1pc3JhY2FyZC1hbWV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbW9tZW50LCB7IHR5cGUgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IHR5cGUgUGFnZSB9IGZyb20gJ3B1cHBldGVlcic7XG5pbXBvcnQgeyBBTFRfU0hFS0VMX0NVUlJFTkNZLCBTSEVLRUxfQ1VSUkVOQ1ksIFNIRUtFTF9DVVJSRU5DWV9LRVlXT1JEIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFNjcmFwZXJQcm9ncmVzc1R5cGVzIH0gZnJvbSAnLi4vZGVmaW5pdGlvbnMnO1xuaW1wb3J0IGdldEFsbE1vbnRoTW9tZW50cyBmcm9tICcuLi9oZWxwZXJzL2RhdGVzJztcbmltcG9ydCB7IGdldERlYnVnIH0gZnJvbSAnLi4vaGVscGVycy9kZWJ1Zyc7XG5pbXBvcnQgeyBmZXRjaEdldFdpdGhpblBhZ2UsIGZldGNoUG9zdFdpdGhpblBhZ2UgfSBmcm9tICcuLi9oZWxwZXJzL2ZldGNoJztcbmltcG9ydCB7IGZpbHRlck9sZFRyYW5zYWN0aW9ucywgZml4SW5zdGFsbG1lbnRzIH0gZnJvbSAnLi4vaGVscGVycy90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgcnVuU2VyaWFsLCBzbGVlcCB9IGZyb20gJy4uL2hlbHBlcnMvd2FpdGluZyc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvblN0YXR1c2VzLFxuICBUcmFuc2FjdGlvblR5cGVzLFxuICB0eXBlIFRyYW5zYWN0aW9uLFxuICB0eXBlIFRyYW5zYWN0aW9uSW5zdGFsbG1lbnRzLFxuICB0eXBlIFRyYW5zYWN0aW9uc0FjY291bnQsXG59IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBCYXNlU2NyYXBlcldpdGhCcm93c2VyIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXItd2l0aC1icm93c2VyJztcbmltcG9ydCB7IFNjcmFwZXJFcnJvclR5cGVzIH0gZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IHsgdHlwZSBTY3JhcGVyT3B0aW9ucywgdHlwZSBTY3JhcGVyU2NyYXBpbmdSZXN1bHQgfSBmcm9tICcuL2ludGVyZmFjZSc7XG5pbXBvcnQgeyBpbnRlcmNlcHRpb25Qcmlvcml0aWVzLCBtYXNrSGVhZGxlc3NVc2VyQWdlbnQgfSBmcm9tICcuLi9oZWxwZXJzL2Jyb3dzZXInO1xuXG5jb25zdCBSQVRFX0xJTUlUID0ge1xuICBTTEVFUF9CRVRXRUVOOiAxMDAwLFxuICBUUkFOU0FDVElPTlNfQkFUQ0hfU0laRTogMTAsXG59IGFzIGNvbnN0O1xuXG5jb25zdCBDT1VOVFJZX0NPREUgPSAnMjEyJztcbmNvbnN0IElEX1RZUEUgPSAnMSc7XG5jb25zdCBJTlNUQUxMTUVOVFNfS0VZV09SRCA9ICfXqtep15zXldedJztcblxuY29uc3QgREFURV9GT1JNQVQgPSAnREQvTU0vWVlZWSc7XG5cbmNvbnN0IGRlYnVnID0gZ2V0RGVidWcoJ2Jhc2UtaXNyYWNhcmQtYW1leCcpO1xuXG50eXBlIENvbXBhbnlTZXJ2aWNlT3B0aW9ucyA9IHtcbiAgc2VydmljZXNVcmw6IHN0cmluZztcbiAgY29tcGFueUNvZGU6IHN0cmluZztcbn07XG5cbnR5cGUgU2NyYXBlZEFjY291bnRzV2l0aEluZGV4ID0gUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25zQWNjb3VudCAmIHsgaW5kZXg6IG51bWJlciB9PjtcblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbiB7XG4gIGRlYWxTdW1UeXBlOiBzdHJpbmc7XG4gIHZvdWNoZXJOdW1iZXJSYXR6T3V0Ym91bmQ6IHN0cmluZztcbiAgdm91Y2hlck51bWJlclJhdHo6IHN0cmluZztcbiAgbW9yZUluZm8/OiBzdHJpbmc7XG4gIGRlYWxTdW1PdXRib3VuZDogYm9vbGVhbjtcbiAgY3VycmVuY3lJZDogc3RyaW5nO1xuICBjdXJyZW50UGF5bWVudEN1cnJlbmN5OiBzdHJpbmc7XG4gIGRlYWxTdW06IG51bWJlcjtcbiAgZnVsbFBheW1lbnREYXRlPzogc3RyaW5nO1xuICBmdWxsUHVyY2hhc2VEYXRlPzogc3RyaW5nO1xuICBmdWxsUHVyY2hhc2VEYXRlT3V0Ym91bmQ/OiBzdHJpbmc7XG4gIGZ1bGxTdXBwbGllck5hbWVIZWI6IHN0cmluZztcbiAgZnVsbFN1cHBsaWVyTmFtZU91dGJvdW5kOiBzdHJpbmc7XG4gIHBheW1lbnRTdW06IG51bWJlcjtcbiAgcGF5bWVudFN1bU91dGJvdW5kOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBTY3JhcGVkQWNjb3VudCB7XG4gIGluZGV4OiBudW1iZXI7XG4gIGFjY291bnROdW1iZXI6IHN0cmluZztcbiAgcHJvY2Vzc2VkRGF0ZTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgU2NyYXBlZExvZ2luVmFsaWRhdGlvbiB7XG4gIEhlYWRlcjoge1xuICAgIFN0YXR1czogc3RyaW5nO1xuICB9O1xuICBWYWxpZGF0ZUlkRGF0YUJlYW4/OiB7XG4gICAgdXNlck5hbWU/OiBzdHJpbmc7XG4gICAgcmV0dXJuQ29kZTogc3RyaW5nO1xuICB9O1xufVxuXG5pbnRlcmZhY2UgU2NyYXBlZEFjY291bnRzV2l0aGluUGFnZVJlc3BvbnNlIHtcbiAgSGVhZGVyOiB7XG4gICAgU3RhdHVzOiBzdHJpbmc7XG4gIH07XG4gIERhc2hib2FyZE1vbnRoQmVhbj86IHtcbiAgICBjYXJkc0NoYXJnZXM6IHtcbiAgICAgIGNhcmRJbmRleDogc3RyaW5nO1xuICAgICAgY2FyZE51bWJlcjogc3RyaW5nO1xuICAgICAgYmlsbGluZ0RhdGU6IHN0cmluZztcbiAgICB9W107XG4gIH07XG59XG5cbmludGVyZmFjZSBTY3JhcGVkQ3VycmVudENhcmRUcmFuc2FjdGlvbnMge1xuICB0eG5Jc3JhZWw/OiBTY3JhcGVkVHJhbnNhY3Rpb25bXTtcbiAgdHhuQWJyb2FkPzogU2NyYXBlZFRyYW5zYWN0aW9uW107XG59XG5cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb25EYXRhIHtcbiAgSGVhZGVyPzoge1xuICAgIFN0YXR1czogc3RyaW5nO1xuICB9O1xuICBQaXJ0ZXlJc2thXzIwNEJlYW4/OiB7XG4gICAgc2VjdG9yOiBzdHJpbmc7XG4gIH07XG5cbiAgQ2FyZHNUcmFuc2FjdGlvbnNMaXN0QmVhbj86IFJlY29yZDxcbiAgICBzdHJpbmcsXG4gICAge1xuICAgICAgQ3VycmVudENhcmRUcmFuc2FjdGlvbnM6IFNjcmFwZWRDdXJyZW50Q2FyZFRyYW5zYWN0aW9uc1tdO1xuICAgIH1cbiAgPjtcbn1cblxuZnVuY3Rpb24gZ2V0QWNjb3VudHNVcmwoc2VydmljZXNVcmw6IHN0cmluZywgbW9udGhNb21lbnQ6IE1vbWVudCkge1xuICBjb25zdCBiaWxsaW5nRGF0ZSA9IG1vbnRoTW9tZW50LmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xuICBjb25zdCB1cmwgPSBuZXcgVVJMKHNlcnZpY2VzVXJsKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3JlcU5hbWUnLCAnRGFzaGJvYXJkTW9udGgnKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ2FjdGlvbkNvZGUnLCAnMCcpO1xuICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnYmlsbGluZ0RhdGUnLCBiaWxsaW5nRGF0ZSk7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdmb3JtYXQnLCAnSnNvbicpO1xuICByZXR1cm4gdXJsLnRvU3RyaW5nKCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoQWNjb3VudHMocGFnZTogUGFnZSwgc2VydmljZXNVcmw6IHN0cmluZywgbW9udGhNb21lbnQ6IE1vbWVudCk6IFByb21pc2U8U2NyYXBlZEFjY291bnRbXT4ge1xuICBjb25zdCBkYXRhVXJsID0gZ2V0QWNjb3VudHNVcmwoc2VydmljZXNVcmwsIG1vbnRoTW9tZW50KTtcbiAgZGVidWcoYGZldGNoaW5nIGFjY291bnRzIGZyb20gJHtkYXRhVXJsfWApO1xuICBjb25zdCBkYXRhUmVzdWx0ID0gYXdhaXQgZmV0Y2hHZXRXaXRoaW5QYWdlPFNjcmFwZWRBY2NvdW50c1dpdGhpblBhZ2VSZXNwb25zZT4ocGFnZSwgZGF0YVVybCk7XG4gIGlmIChkYXRhUmVzdWx0ICYmIF8uZ2V0KGRhdGFSZXN1bHQsICdIZWFkZXIuU3RhdHVzJykgPT09ICcxJyAmJiBkYXRhUmVzdWx0LkRhc2hib2FyZE1vbnRoQmVhbikge1xuICAgIGNvbnN0IHsgY2FyZHNDaGFyZ2VzIH0gPSBkYXRhUmVzdWx0LkRhc2hib2FyZE1vbnRoQmVhbjtcbiAgICBpZiAoY2FyZHNDaGFyZ2VzKSB7XG4gICAgICByZXR1cm4gY2FyZHNDaGFyZ2VzLm1hcChjYXJkQ2hhcmdlID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBpbmRleDogcGFyc2VJbnQoY2FyZENoYXJnZS5jYXJkSW5kZXgsIDEwKSxcbiAgICAgICAgICBhY2NvdW50TnVtYmVyOiBjYXJkQ2hhcmdlLmNhcmROdW1iZXIsXG4gICAgICAgICAgcHJvY2Vzc2VkRGF0ZTogbW9tZW50KGNhcmRDaGFyZ2UuYmlsbGluZ0RhdGUsIERBVEVfRk9STUFUKS50b0lTT1N0cmluZygpLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIHJldHVybiBbXTtcbn1cblxuZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25zVXJsKHNlcnZpY2VzVXJsOiBzdHJpbmcsIG1vbnRoTW9tZW50OiBNb21lbnQpIHtcbiAgY29uc3QgbW9udGggPSBtb250aE1vbWVudC5tb250aCgpICsgMTtcbiAgY29uc3QgeWVhciA9IG1vbnRoTW9tZW50LnllYXIoKTtcbiAgY29uc3QgbW9udGhTdHIgPSBtb250aCA8IDEwID8gYDAke21vbnRofWAgOiBtb250aC50b1N0cmluZygpO1xuICBjb25zdCB1cmwgPSBuZXcgVVJMKHNlcnZpY2VzVXJsKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3JlcU5hbWUnLCAnQ2FyZHNUcmFuc2FjdGlvbnNMaXN0Jyk7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdtb250aCcsIG1vbnRoU3RyKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3llYXInLCBgJHt5ZWFyfWApO1xuICB1cmwuc2VhcmNoUGFyYW1zLnNldCgncmVxdWlyZWREYXRlJywgJ04nKTtcbiAgcmV0dXJuIHVybC50b1N0cmluZygpO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0Q3VycmVuY3koY3VycmVuY3lTdHI6IHN0cmluZykge1xuICBpZiAoY3VycmVuY3lTdHIgPT09IFNIRUtFTF9DVVJSRU5DWV9LRVlXT1JEIHx8IGN1cnJlbmN5U3RyID09PSBBTFRfU0hFS0VMX0NVUlJFTkNZKSB7XG4gICAgcmV0dXJuIFNIRUtFTF9DVVJSRU5DWTtcbiAgfVxuICByZXR1cm4gY3VycmVuY3lTdHI7XG59XG5cbmZ1bmN0aW9uIGdldEluc3RhbGxtZW50c0luZm8odHhuOiBTY3JhcGVkVHJhbnNhY3Rpb24pOiBUcmFuc2FjdGlvbkluc3RhbGxtZW50cyB8IHVuZGVmaW5lZCB7XG4gIGlmICghdHhuLm1vcmVJbmZvIHx8ICF0eG4ubW9yZUluZm8uaW5jbHVkZXMoSU5TVEFMTE1FTlRTX0tFWVdPUkQpKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCBtYXRjaGVzID0gdHhuLm1vcmVJbmZvLm1hdGNoKC9cXGQrL2cpO1xuICBpZiAoIW1hdGNoZXMgfHwgbWF0Y2hlcy5sZW5ndGggPCAyKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbnVtYmVyOiBwYXJzZUludChtYXRjaGVzWzBdLCAxMCksXG4gICAgdG90YWw6IHBhcnNlSW50KG1hdGNoZXNbMV0sIDEwKSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25UeXBlKHR4bjogU2NyYXBlZFRyYW5zYWN0aW9uKSB7XG4gIHJldHVybiBnZXRJbnN0YWxsbWVudHNJbmZvKHR4bikgPyBUcmFuc2FjdGlvblR5cGVzLkluc3RhbGxtZW50cyA6IFRyYW5zYWN0aW9uVHlwZXMuTm9ybWFsO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0VHJhbnNhY3Rpb25zKHR4bnM6IFNjcmFwZWRUcmFuc2FjdGlvbltdLCBwcm9jZXNzZWREYXRlOiBzdHJpbmcpOiBUcmFuc2FjdGlvbltdIHtcbiAgY29uc3QgZmlsdGVyZWRUeG5zID0gdHhucy5maWx0ZXIoXG4gICAgdHhuID0+XG4gICAgICB0eG4uZGVhbFN1bVR5cGUgIT09ICcxJyAmJiB0eG4udm91Y2hlck51bWJlclJhdHogIT09ICcwMDAwMDAwMDAnICYmIHR4bi52b3VjaGVyTnVtYmVyUmF0ek91dGJvdW5kICE9PSAnMDAwMDAwMDAwJyxcbiAgKTtcblxuICByZXR1cm4gZmlsdGVyZWRUeG5zLm1hcCh0eG4gPT4ge1xuICAgIGNvbnN0IGlzT3V0Ym91bmQgPSB0eG4uZGVhbFN1bU91dGJvdW5kO1xuICAgIGNvbnN0IHR4bkRhdGVTdHIgPSBpc091dGJvdW5kID8gdHhuLmZ1bGxQdXJjaGFzZURhdGVPdXRib3VuZCA6IHR4bi5mdWxsUHVyY2hhc2VEYXRlO1xuICAgIGNvbnN0IHR4bk1vbWVudCA9IG1vbWVudCh0eG5EYXRlU3RyLCBEQVRFX0ZPUk1BVCk7XG5cbiAgICBjb25zdCBjdXJyZW50UHJvY2Vzc2VkRGF0ZSA9IHR4bi5mdWxsUGF5bWVudERhdGVcbiAgICAgID8gbW9tZW50KHR4bi5mdWxsUGF5bWVudERhdGUsIERBVEVfRk9STUFUKS50b0lTT1N0cmluZygpXG4gICAgICA6IHByb2Nlc3NlZERhdGU7XG4gICAgY29uc3QgcmVzdWx0OiBUcmFuc2FjdGlvbiA9IHtcbiAgICAgIHR5cGU6IGdldFRyYW5zYWN0aW9uVHlwZSh0eG4pLFxuICAgICAgaWRlbnRpZmllcjogcGFyc2VJbnQoaXNPdXRib3VuZCA/IHR4bi52b3VjaGVyTnVtYmVyUmF0ek91dGJvdW5kIDogdHhuLnZvdWNoZXJOdW1iZXJSYXR6LCAxMCksXG4gICAgICBkYXRlOiB0eG5Nb21lbnQudG9JU09TdHJpbmcoKSxcbiAgICAgIHByb2Nlc3NlZERhdGU6IGN1cnJlbnRQcm9jZXNzZWREYXRlLFxuICAgICAgb3JpZ2luYWxBbW91bnQ6IGlzT3V0Ym91bmQgPyAtdHhuLmRlYWxTdW1PdXRib3VuZCA6IC10eG4uZGVhbFN1bSxcbiAgICAgIG9yaWdpbmFsQ3VycmVuY3k6IGNvbnZlcnRDdXJyZW5jeSh0eG4uY3VycmVudFBheW1lbnRDdXJyZW5jeSA/PyB0eG4uY3VycmVuY3lJZCksXG4gICAgICBjaGFyZ2VkQW1vdW50OiBpc091dGJvdW5kID8gLXR4bi5wYXltZW50U3VtT3V0Ym91bmQgOiAtdHhuLnBheW1lbnRTdW0sXG4gICAgICBjaGFyZ2VkQ3VycmVuY3k6IGNvbnZlcnRDdXJyZW5jeSh0eG4uY3VycmVuY3lJZCksXG4gICAgICBkZXNjcmlwdGlvbjogaXNPdXRib3VuZCA/IHR4bi5mdWxsU3VwcGxpZXJOYW1lT3V0Ym91bmQgOiB0eG4uZnVsbFN1cHBsaWVyTmFtZUhlYixcbiAgICAgIG1lbW86IHR4bi5tb3JlSW5mbyB8fCAnJyxcbiAgICAgIGluc3RhbGxtZW50czogZ2V0SW5zdGFsbG1lbnRzSW5mbyh0eG4pIHx8IHVuZGVmaW5lZCxcbiAgICAgIHN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcy5Db21wbGV0ZWQsXG4gICAgfTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaFRyYW5zYWN0aW9ucyhcbiAgcGFnZTogUGFnZSxcbiAgb3B0aW9uczogU2NyYXBlck9wdGlvbnMsXG4gIGNvbXBhbnlTZXJ2aWNlT3B0aW9uczogQ29tcGFueVNlcnZpY2VPcHRpb25zLFxuICBzdGFydE1vbWVudDogTW9tZW50LFxuICBtb250aE1vbWVudDogTW9tZW50LFxuKTogUHJvbWlzZTxTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXg+IHtcbiAgY29uc3QgYWNjb3VudHMgPSBhd2FpdCBmZXRjaEFjY291bnRzKHBhZ2UsIGNvbXBhbnlTZXJ2aWNlT3B0aW9ucy5zZXJ2aWNlc1VybCwgbW9udGhNb21lbnQpO1xuICBjb25zdCBkYXRhVXJsID0gZ2V0VHJhbnNhY3Rpb25zVXJsKGNvbXBhbnlTZXJ2aWNlT3B0aW9ucy5zZXJ2aWNlc1VybCwgbW9udGhNb21lbnQpO1xuICBhd2FpdCBzbGVlcChSQVRFX0xJTUlULlNMRUVQX0JFVFdFRU4pO1xuICBkZWJ1ZyhgZmV0Y2hpbmcgdHJhbnNhY3Rpb25zIGZyb20gJHtkYXRhVXJsfSBmb3IgbW9udGggJHttb250aE1vbWVudC5mb3JtYXQoJ1lZWVktTU0nKX1gKTtcbiAgY29uc3QgZGF0YVJlc3VsdCA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxTY3JhcGVkVHJhbnNhY3Rpb25EYXRhPihwYWdlLCBkYXRhVXJsKTtcbiAgaWYgKGRhdGFSZXN1bHQgJiYgXy5nZXQoZGF0YVJlc3VsdCwgJ0hlYWRlci5TdGF0dXMnKSA9PT0gJzEnICYmIGRhdGFSZXN1bHQuQ2FyZHNUcmFuc2FjdGlvbnNMaXN0QmVhbikge1xuICAgIGNvbnN0IGFjY291bnRUeG5zOiBTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXggPSB7fTtcbiAgICBhY2NvdW50cy5mb3JFYWNoKGFjY291bnQgPT4ge1xuICAgICAgY29uc3QgdHhuR3JvdXBzOiBTY3JhcGVkQ3VycmVudENhcmRUcmFuc2FjdGlvbnNbXSB8IHVuZGVmaW5lZCA9IF8uZ2V0KFxuICAgICAgICBkYXRhUmVzdWx0LFxuICAgICAgICBgQ2FyZHNUcmFuc2FjdGlvbnNMaXN0QmVhbi5JbmRleCR7YWNjb3VudC5pbmRleH0uQ3VycmVudENhcmRUcmFuc2FjdGlvbnNgLFxuICAgICAgKTtcbiAgICAgIGlmICh0eG5Hcm91cHMpIHtcbiAgICAgICAgbGV0IGFsbFR4bnM6IFRyYW5zYWN0aW9uW10gPSBbXTtcbiAgICAgICAgdHhuR3JvdXBzLmZvckVhY2godHhuR3JvdXAgPT4ge1xuICAgICAgICAgIGlmICh0eG5Hcm91cC50eG5Jc3JhZWwpIHtcbiAgICAgICAgICAgIGNvbnN0IHR4bnMgPSBjb252ZXJ0VHJhbnNhY3Rpb25zKHR4bkdyb3VwLnR4bklzcmFlbCwgYWNjb3VudC5wcm9jZXNzZWREYXRlKTtcbiAgICAgICAgICAgIGFsbFR4bnMucHVzaCguLi50eG5zKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHR4bkdyb3VwLnR4bkFicm9hZCkge1xuICAgICAgICAgICAgY29uc3QgdHhucyA9IGNvbnZlcnRUcmFuc2FjdGlvbnModHhuR3JvdXAudHhuQWJyb2FkLCBhY2NvdW50LnByb2Nlc3NlZERhdGUpO1xuICAgICAgICAgICAgYWxsVHhucy5wdXNoKC4uLnR4bnMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFvcHRpb25zLmNvbWJpbmVJbnN0YWxsbWVudHMpIHtcbiAgICAgICAgICBhbGxUeG5zID0gZml4SW5zdGFsbG1lbnRzKGFsbFR4bnMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLm91dHB1dERhdGE/LmVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZSA/PyB0cnVlKSB7XG4gICAgICAgICAgYWxsVHhucyA9IGZpbHRlck9sZFRyYW5zYWN0aW9ucyhhbGxUeG5zLCBzdGFydE1vbWVudCwgb3B0aW9ucy5jb21iaW5lSW5zdGFsbG1lbnRzIHx8IGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBhY2NvdW50VHhuc1thY2NvdW50LmFjY291bnROdW1iZXJdID0ge1xuICAgICAgICAgIGFjY291bnROdW1iZXI6IGFjY291bnQuYWNjb3VudE51bWJlcixcbiAgICAgICAgICBpbmRleDogYWNjb3VudC5pbmRleCxcbiAgICAgICAgICB0eG5zOiBhbGxUeG5zLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBhY2NvdW50VHhucztcbiAgfVxuXG4gIHJldHVybiB7fTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0RXh0cmFTY3JhcFRyYW5zYWN0aW9uKFxuICBwYWdlOiBQYWdlLFxuICBvcHRpb25zOiBDb21wYW55U2VydmljZU9wdGlvbnMsXG4gIG1vbnRoOiBNb21lbnQsXG4gIGFjY291bnRJbmRleDogbnVtYmVyLFxuICB0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24sXG4pOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gIGNvbnN0IHVybCA9IG5ldyBVUkwob3B0aW9ucy5zZXJ2aWNlc1VybCk7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdyZXFOYW1lJywgJ1BpcnRleUlza2FfMjA0Jyk7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdDYXJkSW5kZXgnLCBhY2NvdW50SW5kZXgudG9TdHJpbmcoKSk7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdzaG92YXJSYXR6JywgdHJhbnNhY3Rpb24uaWRlbnRpZmllciEudG9TdHJpbmcoKSk7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdtb2VkQ2hpdXYnLCBtb250aC5mb3JtYXQoJ01NWVlZWScpKTtcblxuICBkZWJ1ZyhgZmV0Y2hpbmcgZXh0cmEgc2NyYXAgZm9yIHRyYW5zYWN0aW9uICR7dHJhbnNhY3Rpb24uaWRlbnRpZmllcn0gZm9yIG1vbnRoICR7bW9udGguZm9ybWF0KCdZWVlZLU1NJyl9YCk7XG4gIGNvbnN0IGRhdGEgPSBhd2FpdCBmZXRjaEdldFdpdGhpblBhZ2U8U2NyYXBlZFRyYW5zYWN0aW9uRGF0YT4ocGFnZSwgdXJsLnRvU3RyaW5nKCkpO1xuICBpZiAoIWRhdGEpIHtcbiAgICByZXR1cm4gdHJhbnNhY3Rpb247XG4gIH1cblxuICBjb25zdCByYXdDYXRlZ29yeSA9IF8uZ2V0KGRhdGEsICdQaXJ0ZXlJc2thXzIwNEJlYW4uc2VjdG9yJykgPz8gJyc7XG4gIHJldHVybiB7XG4gICAgLi4udHJhbnNhY3Rpb24sXG4gICAgY2F0ZWdvcnk6IHJhd0NhdGVnb3J5LnRyaW0oKSxcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0RXh0cmFTY3JhcEFjY291bnQoXG4gIHBhZ2U6IFBhZ2UsXG4gIG9wdGlvbnM6IENvbXBhbnlTZXJ2aWNlT3B0aW9ucyxcbiAgYWNjb3VudE1hcDogU2NyYXBlZEFjY291bnRzV2l0aEluZGV4LFxuICBtb250aDogbW9tZW50Lk1vbWVudCxcbik6IFByb21pc2U8U2NyYXBlZEFjY291bnRzV2l0aEluZGV4PiB7XG4gIGNvbnN0IGFjY291bnRzOiBTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXhbc3RyaW5nXVtdID0gW107XG4gIGZvciAoY29uc3QgYWNjb3VudCBvZiBPYmplY3QudmFsdWVzKGFjY291bnRNYXApKSB7XG4gICAgZGVidWcoXG4gICAgICBgZ2V0IGV4dHJhIHNjcmFwIGZvciAke2FjY291bnQuYWNjb3VudE51bWJlcn0gd2l0aCAke2FjY291bnQudHhucy5sZW5ndGh9IHRyYW5zYWN0aW9uc2AsXG4gICAgICBtb250aC5mb3JtYXQoJ1lZWVktTU0nKSxcbiAgICApO1xuICAgIGNvbnN0IHR4bnM6IFRyYW5zYWN0aW9uW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHR4bnNDaHVuayBvZiBfLmNodW5rKGFjY291bnQudHhucywgUkFURV9MSU1JVC5UUkFOU0FDVElPTlNfQkFUQ0hfU0laRSkpIHtcbiAgICAgIGRlYnVnKGBwcm9jZXNzaW5nIGNodW5rIG9mICR7dHhuc0NodW5rLmxlbmd0aH0gdHJhbnNhY3Rpb25zIGZvciBhY2NvdW50ICR7YWNjb3VudC5hY2NvdW50TnVtYmVyfWApO1xuICAgICAgY29uc3QgdXBkYXRlZFR4bnMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgdHhuc0NodW5rLm1hcCh0ID0+IGdldEV4dHJhU2NyYXBUcmFuc2FjdGlvbihwYWdlLCBvcHRpb25zLCBtb250aCwgYWNjb3VudC5pbmRleCwgdCkpLFxuICAgICAgKTtcbiAgICAgIGF3YWl0IHNsZWVwKFJBVEVfTElNSVQuU0xFRVBfQkVUV0VFTik7XG4gICAgICB0eG5zLnB1c2goLi4udXBkYXRlZFR4bnMpO1xuICAgIH1cbiAgICBhY2NvdW50cy5wdXNoKHsgLi4uYWNjb3VudCwgdHhucyB9KTtcbiAgfVxuXG4gIHJldHVybiBhY2NvdW50cy5yZWR1Y2UoKG0sIHgpID0+ICh7IC4uLm0sIFt4LmFjY291bnROdW1iZXJdOiB4IH0pLCB7fSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEFkZGl0aW9uYWxUcmFuc2FjdGlvbkluZm9ybWF0aW9uKFxuICBzY3JhcGVyT3B0aW9uczogU2NyYXBlck9wdGlvbnMsXG4gIGFjY291bnRzV2l0aEluZGV4OiBTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXhbXSxcbiAgcGFnZTogUGFnZSxcbiAgb3B0aW9uczogQ29tcGFueVNlcnZpY2VPcHRpb25zLFxuICBhbGxNb250aHM6IG1vbWVudC5Nb21lbnRbXSxcbik6IFByb21pc2U8U2NyYXBlZEFjY291bnRzV2l0aEluZGV4W10+IHtcbiAgaWYgKFxuICAgICFzY3JhcGVyT3B0aW9ucy5hZGRpdGlvbmFsVHJhbnNhY3Rpb25JbmZvcm1hdGlvbiB8fFxuICAgIHNjcmFwZXJPcHRpb25zLm9wdEluRmVhdHVyZXM/LmluY2x1ZGVzKCdpc3JhY2FyZC1hbWV4OnNraXBBZGRpdGlvbmFsVHJhbnNhY3Rpb25JbmZvcm1hdGlvbicpXG4gICkge1xuICAgIHJldHVybiBhY2NvdW50c1dpdGhJbmRleDtcbiAgfVxuICByZXR1cm4gcnVuU2VyaWFsKGFjY291bnRzV2l0aEluZGV4Lm1hcCgoYSwgaSkgPT4gKCkgPT4gZ2V0RXh0cmFTY3JhcEFjY291bnQocGFnZSwgb3B0aW9ucywgYSwgYWxsTW9udGhzW2ldKSkpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaEFsbFRyYW5zYWN0aW9ucyhcbiAgcGFnZTogUGFnZSxcbiAgb3B0aW9uczogU2NyYXBlck9wdGlvbnMsXG4gIGNvbXBhbnlTZXJ2aWNlT3B0aW9uczogQ29tcGFueVNlcnZpY2VPcHRpb25zLFxuICBzdGFydE1vbWVudDogTW9tZW50LFxuKSB7XG4gIGNvbnN0IGZ1dHVyZU1vbnRoc1RvU2NyYXBlID0gb3B0aW9ucy5mdXR1cmVNb250aHNUb1NjcmFwZSA/PyAxO1xuICBjb25zdCBhbGxNb250aHMgPSBnZXRBbGxNb250aE1vbWVudHMoc3RhcnRNb21lbnQsIGZ1dHVyZU1vbnRoc1RvU2NyYXBlKTtcbiAgY29uc3QgcmVzdWx0czogU2NyYXBlZEFjY291bnRzV2l0aEluZGV4W10gPSBhd2FpdCBydW5TZXJpYWwoXG4gICAgYWxsTW9udGhzLm1hcChtb250aE1vbWVudCA9PiAoKSA9PiB7XG4gICAgICByZXR1cm4gZmV0Y2hUcmFuc2FjdGlvbnMocGFnZSwgb3B0aW9ucywgY29tcGFueVNlcnZpY2VPcHRpb25zLCBzdGFydE1vbWVudCwgbW9udGhNb21lbnQpO1xuICAgIH0pLFxuICApO1xuXG4gIGNvbnN0IGZpbmFsUmVzdWx0ID0gYXdhaXQgZ2V0QWRkaXRpb25hbFRyYW5zYWN0aW9uSW5mb3JtYXRpb24oXG4gICAgb3B0aW9ucyxcbiAgICByZXN1bHRzLFxuICAgIHBhZ2UsXG4gICAgY29tcGFueVNlcnZpY2VPcHRpb25zLFxuICAgIGFsbE1vbnRocyxcbiAgKTtcbiAgY29uc3QgY29tYmluZWRUeG5zOiBSZWNvcmQ8c3RyaW5nLCBUcmFuc2FjdGlvbltdPiA9IHt9O1xuXG4gIGZpbmFsUmVzdWx0LmZvckVhY2gocmVzdWx0ID0+IHtcbiAgICBPYmplY3Qua2V5cyhyZXN1bHQpLmZvckVhY2goYWNjb3VudE51bWJlciA9PiB7XG4gICAgICBsZXQgdHhuc0ZvckFjY291bnQgPSBjb21iaW5lZFR4bnNbYWNjb3VudE51bWJlcl07XG4gICAgICBpZiAoIXR4bnNGb3JBY2NvdW50KSB7XG4gICAgICAgIHR4bnNGb3JBY2NvdW50ID0gW107XG4gICAgICAgIGNvbWJpbmVkVHhuc1thY2NvdW50TnVtYmVyXSA9IHR4bnNGb3JBY2NvdW50O1xuICAgICAgfVxuICAgICAgY29uc3QgdG9CZUFkZGVkVHhucyA9IHJlc3VsdFthY2NvdW50TnVtYmVyXS50eG5zO1xuICAgICAgY29tYmluZWRUeG5zW2FjY291bnROdW1iZXJdLnB1c2goLi4udG9CZUFkZGVkVHhucyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGNvbnN0IGFjY291bnRzID0gT2JqZWN0LmtleXMoY29tYmluZWRUeG5zKS5tYXAoYWNjb3VudE51bWJlciA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGFjY291bnROdW1iZXIsXG4gICAgICB0eG5zOiBjb21iaW5lZFR4bnNbYWNjb3VudE51bWJlcl0sXG4gICAgfTtcbiAgfSk7XG5cbiAgcmV0dXJuIHtcbiAgICBzdWNjZXNzOiB0cnVlLFxuICAgIGFjY291bnRzLFxuICB9O1xufVxuXG50eXBlIFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzID0geyBpZDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nOyBjYXJkNkRpZ2l0czogc3RyaW5nIH07XG5jbGFzcyBJc3JhY2FyZEFtZXhCYXNlU2NyYXBlciBleHRlbmRzIEJhc2VTY3JhcGVyV2l0aEJyb3dzZXI8U2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHM+IHtcbiAgcHJpdmF0ZSBiYXNlVXJsOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSBjb21wYW55Q29kZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgc2VydmljZXNVcmw6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBTY3JhcGVyT3B0aW9ucywgYmFzZVVybDogc3RyaW5nLCBjb21wYW55Q29kZTogc3RyaW5nKSB7XG4gICAgc3VwZXIob3B0aW9ucyk7XG5cbiAgICB0aGlzLmJhc2VVcmwgPSBiYXNlVXJsO1xuICAgIHRoaXMuY29tcGFueUNvZGUgPSBjb21wYW55Q29kZTtcbiAgICB0aGlzLnNlcnZpY2VzVXJsID0gYCR7YmFzZVVybH0vc2VydmljZXMvUHJveHlSZXF1ZXN0SGFuZGxlci5hc2h4YDtcbiAgfVxuXG4gIGFzeW5jIGxvZ2luKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyk6IFByb21pc2U8U2NyYXBlclNjcmFwaW5nUmVzdWx0PiB7XG4gICAgYXdhaXQgdGhpcy5wYWdlLnNldFJlcXVlc3RJbnRlcmNlcHRpb24odHJ1ZSk7XG4gICAgdGhpcy5wYWdlLm9uKCdyZXF1ZXN0JywgcmVxdWVzdCA9PiB7XG4gICAgICBpZiAocmVxdWVzdC51cmwoKS5pbmNsdWRlcygnZGV0ZWN0b3ItZG9tLm1pbi5qcycpKSB7XG4gICAgICAgIGRlYnVnKCdmb3JjZSBhYm9ydCBmb3IgcmVxdWVzdCBkbyBkb3dubG9hZCBkZXRlY3Rvci1kb20ubWluLmpzIHJlc291cmNlJyk7XG4gICAgICAgIHZvaWQgcmVxdWVzdC5hYm9ydCh1bmRlZmluZWQsIGludGVyY2VwdGlvblByaW9yaXRpZXMuYWJvcnQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdm9pZCByZXF1ZXN0LmNvbnRpbnVlKHVuZGVmaW5lZCwgaW50ZXJjZXB0aW9uUHJpb3JpdGllcy5jb250aW51ZSk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBhd2FpdCBtYXNrSGVhZGxlc3NVc2VyQWdlbnQodGhpcy5wYWdlKTtcblxuICAgIGF3YWl0IHRoaXMubmF2aWdhdGVUbyhgJHt0aGlzLmJhc2VVcmx9L3BlcnNvbmFsYXJlYS9Mb2dpbmApO1xuXG4gICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NyYXBlclByb2dyZXNzVHlwZXMuTG9nZ2luZ0luKTtcblxuICAgIGNvbnN0IHZhbGlkYXRlVXJsID0gYCR7dGhpcy5zZXJ2aWNlc1VybH0/cmVxTmFtZT1WYWxpZGF0ZUlkRGF0YWA7XG4gICAgY29uc3QgdmFsaWRhdGVSZXF1ZXN0ID0ge1xuICAgICAgaWQ6IGNyZWRlbnRpYWxzLmlkLFxuICAgICAgY2FyZFN1ZmZpeDogY3JlZGVudGlhbHMuY2FyZDZEaWdpdHMsXG4gICAgICBjb3VudHJ5Q29kZTogQ09VTlRSWV9DT0RFLFxuICAgICAgaWRUeXBlOiBJRF9UWVBFLFxuICAgICAgY2hlY2tMZXZlbDogJzEnLFxuICAgICAgY29tcGFueUNvZGU6IHRoaXMuY29tcGFueUNvZGUsXG4gICAgfTtcbiAgICBkZWJ1ZygnbG9nZ2luZyBpbiB3aXRoIHZhbGlkYXRlIHJlcXVlc3QnKTtcbiAgICBjb25zdCB2YWxpZGF0ZVJlc3VsdCA9IGF3YWl0IGZldGNoUG9zdFdpdGhpblBhZ2U8U2NyYXBlZExvZ2luVmFsaWRhdGlvbj4odGhpcy5wYWdlLCB2YWxpZGF0ZVVybCwgdmFsaWRhdGVSZXF1ZXN0KTtcbiAgICBpZiAoXG4gICAgICAhdmFsaWRhdGVSZXN1bHQgfHxcbiAgICAgICF2YWxpZGF0ZVJlc3VsdC5IZWFkZXIgfHxcbiAgICAgIHZhbGlkYXRlUmVzdWx0LkhlYWRlci5TdGF0dXMgIT09ICcxJyB8fFxuICAgICAgIXZhbGlkYXRlUmVzdWx0LlZhbGlkYXRlSWREYXRhQmVhblxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIGVycm9yIGR1cmluZyBsb2dpbicpO1xuICAgIH1cblxuICAgIGNvbnN0IHZhbGlkYXRlUmV0dXJuQ29kZSA9IHZhbGlkYXRlUmVzdWx0LlZhbGlkYXRlSWREYXRhQmVhbi5yZXR1cm5Db2RlO1xuICAgIGRlYnVnKGB1c2VyIHZhbGlkYXRlIHdpdGggcmV0dXJuIGNvZGUgJyR7dmFsaWRhdGVSZXR1cm5Db2RlfSdgKTtcbiAgICBpZiAodmFsaWRhdGVSZXR1cm5Db2RlID09PSAnMScpIHtcbiAgICAgIGNvbnN0IHsgdXNlck5hbWUgfSA9IHZhbGlkYXRlUmVzdWx0LlZhbGlkYXRlSWREYXRhQmVhbjtcblxuICAgICAgY29uc3QgbG9naW5VcmwgPSBgJHt0aGlzLnNlcnZpY2VzVXJsfT9yZXFOYW1lPXBlcmZvcm1Mb2dvbklgO1xuICAgICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgICAgS29kTWlzaHRhbWVzaDogdXNlck5hbWUsXG4gICAgICAgIE1pc3BhclppaHV5OiBjcmVkZW50aWFscy5pZCxcbiAgICAgICAgU2lzbWE6IGNyZWRlbnRpYWxzLnBhc3N3b3JkLFxuICAgICAgICBjYXJkU3VmZml4OiBjcmVkZW50aWFscy5jYXJkNkRpZ2l0cyxcbiAgICAgICAgY291bnRyeUNvZGU6IENPVU5UUllfQ09ERSxcbiAgICAgICAgaWRUeXBlOiBJRF9UWVBFLFxuICAgICAgfTtcbiAgICAgIGRlYnVnKCd1c2VyIGxvZ2luIHN0YXJ0ZWQnKTtcbiAgICAgIGNvbnN0IGxvZ2luUmVzdWx0ID0gYXdhaXQgZmV0Y2hQb3N0V2l0aGluUGFnZTx7IHN0YXR1czogc3RyaW5nIH0+KHRoaXMucGFnZSwgbG9naW5VcmwsIHJlcXVlc3QpO1xuICAgICAgZGVidWcoYHVzZXIgbG9naW4gd2l0aCBzdGF0dXMgJyR7bG9naW5SZXN1bHQ/LnN0YXR1c30nYCwgbG9naW5SZXN1bHQpO1xuXG4gICAgICBpZiAobG9naW5SZXN1bHQgJiYgbG9naW5SZXN1bHQuc3RhdHVzID09PSAnMScpIHtcbiAgICAgICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NyYXBlclByb2dyZXNzVHlwZXMuTG9naW5TdWNjZXNzKTtcbiAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSB9O1xuICAgICAgfVxuXG4gICAgICBpZiAobG9naW5SZXN1bHQgJiYgbG9naW5SZXN1bHQuc3RhdHVzID09PSAnMycpIHtcbiAgICAgICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NyYXBlclByb2dyZXNzVHlwZXMuQ2hhbmdlUGFzc3dvcmQpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICAgIGVycm9yVHlwZTogU2NyYXBlckVycm9yVHlwZXMuQ2hhbmdlUGFzc3dvcmQsXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZW1pdFByb2dyZXNzKFNjcmFwZXJQcm9ncmVzc1R5cGVzLkxvZ2luRmFpbGVkKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkludmFsaWRQYXNzd29yZCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHZhbGlkYXRlUmV0dXJuQ29kZSA9PT0gJzQnKSB7XG4gICAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY3JhcGVyUHJvZ3Jlc3NUeXBlcy5DaGFuZ2VQYXNzd29yZCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgZXJyb3JUeXBlOiBTY3JhcGVyRXJyb3JUeXBlcy5DaGFuZ2VQYXNzd29yZCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NyYXBlclByb2dyZXNzVHlwZXMuTG9naW5GYWlsZWQpO1xuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgIGVycm9yVHlwZTogU2NyYXBlckVycm9yVHlwZXMuSW52YWxpZFBhc3N3b3JkLFxuICAgIH07XG4gIH1cblxuICBhc3luYyBmZXRjaERhdGEoKSB7XG4gICAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJyk7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSB8fCBkZWZhdWx0U3RhcnRNb21lbnQudG9EYXRlKCk7XG4gICAgY29uc3Qgc3RhcnRNb21lbnQgPSBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xuXG4gICAgcmV0dXJuIGZldGNoQWxsVHJhbnNhY3Rpb25zKFxuICAgICAgdGhpcy5wYWdlLFxuICAgICAgdGhpcy5vcHRpb25zLFxuICAgICAge1xuICAgICAgICBzZXJ2aWNlc1VybDogdGhpcy5zZXJ2aWNlc1VybCxcbiAgICAgICAgY29tcGFueUNvZGU6IHRoaXMuY29tcGFueUNvZGUsXG4gICAgICB9LFxuICAgICAgc3RhcnRNb21lbnQsXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBJc3JhY2FyZEFtZXhCYXNlU2NyYXBlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUUsVUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsWUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksTUFBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssTUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sTUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sYUFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsUUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsY0FBQSxHQUFBVCxPQUFBO0FBT0EsSUFBQVUsdUJBQUEsR0FBQVYsT0FBQTtBQUNBLElBQUFXLE9BQUEsR0FBQVgsT0FBQTtBQUVBLElBQUFZLFFBQUEsR0FBQVosT0FBQTtBQUFtRixTQUFBRCx1QkFBQWMsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUVuRixNQUFNRyxVQUFVLEdBQUc7RUFDakJDLGFB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
@@ -44,30 +44,34 @@ async function fetchAccountData(page, options) {
44
44
  errorMessage: 'failed to get account data'
45
45
  };
46
46
  }
47
- const accountNumber = accountInfo.UserAccountsData.DefaultAccountNumber;
48
47
  const defaultStartMoment = (0, _moment.default)().subtract(1, 'years').add(2, 'day');
49
48
  const startDate = options.startDate || defaultStartMoment.toDate();
50
49
  const startMoment = _moment.default.max(defaultStartMoment, (0, _moment.default)(startDate));
51
50
  const startDateStr = startMoment.format(DATE_FORMAT);
52
- const txnsUrl = `${apiSiteUrl}/lastTransactions/${accountNumber}/Date?IsCategoryDescCode=True&IsTransactionDetails=True&IsEventNames=True&IsFutureTransactionFlag=True&FromDate=${startDateStr}`;
53
- const txnsResult = await (0, _fetch.fetchGetWithinPage)(page, txnsUrl);
54
- if (!txnsResult || txnsResult.Error || !txnsResult.CurrentAccountLastTransactions) {
55
- return {
56
- success: false,
57
- errorType: _errors.ScraperErrorTypes.Generic,
58
- errorMessage: txnsResult && txnsResult.Error ? txnsResult.Error.MsgText : 'unknown error'
59
- };
51
+ const accounts = accountInfo.UserAccountsData.UserAccounts.map(acc => acc.NewAccountInfo.AccountID);
52
+ const accountsData = [];
53
+ for (const accountNumber of accounts) {
54
+ const txnsUrl = `${apiSiteUrl}/lastTransactions/${accountNumber}/Date?IsCategoryDescCode=True&IsTransactionDetails=True&IsEventNames=True&IsFutureTransactionFlag=True&FromDate=${startDateStr}`;
55
+ const txnsResult = await (0, _fetch.fetchGetWithinPage)(page, txnsUrl);
56
+ if (!txnsResult || txnsResult.Error || !txnsResult.CurrentAccountLastTransactions) {
57
+ return {
58
+ success: false,
59
+ errorType: _errors.ScraperErrorTypes.Generic,
60
+ errorMessage: txnsResult && txnsResult.Error ? txnsResult.Error.MsgText : 'unknown error'
61
+ };
62
+ }
63
+ const accountCompletedTxns = convertTransactions(txnsResult.CurrentAccountLastTransactions.OperationEntry, _transactions.TransactionStatuses.Completed);
64
+ const rawFutureTxns = _lodash.default.get(txnsResult, 'CurrentAccountLastTransactions.FutureTransactionsBlock.FutureTransactionEntry');
65
+ const accountPendingTxns = convertTransactions(rawFutureTxns, _transactions.TransactionStatuses.Pending);
66
+ accountsData.push({
67
+ accountNumber,
68
+ balance: txnsResult.CurrentAccountLastTransactions.CurrentAccountInfo.AccountBalance,
69
+ txns: [...accountCompletedTxns, ...accountPendingTxns]
70
+ });
60
71
  }
61
- const completedTxns = convertTransactions(txnsResult.CurrentAccountLastTransactions.OperationEntry, _transactions.TransactionStatuses.Completed);
62
- const rawFutureTxns = _lodash.default.get(txnsResult, 'CurrentAccountLastTransactions.FutureTransactionsBlock.FutureTransactionEntry');
63
- const pendingTxns = convertTransactions(rawFutureTxns, _transactions.TransactionStatuses.Pending);
64
72
  const accountData = {
65
73
  success: true,
66
- accounts: [{
67
- accountNumber,
68
- balance: txnsResult.CurrentAccountLastTransactions.CurrentAccountInfo.AccountBalance,
69
- txns: [...completedTxns, ...pendingTxns]
70
- }]
74
+ accounts: accountsData
71
75
  };
72
76
  return accountData;
73
77
  }
@@ -113,4 +117,4 @@ class DiscountScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
113
117
  }
114
118
  }
115
119
  var _default = exports.default = DiscountScraper;
116
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbW9tZW50IiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX2ZldGNoIiwiX25hdmlnYXRpb24iLCJfdHJhbnNhY3Rpb25zIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJfZXJyb3JzIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiQkFTRV9VUkwiLCJEQVRFX0ZPUk1BVCIsImNvbnZlcnRUcmFuc2FjdGlvbnMiLCJ0eG5zIiwidHhuU3RhdHVzIiwibWFwIiwidHhuIiwidHlwZSIsIlRyYW5zYWN0aW9uVHlwZXMiLCJOb3JtYWwiLCJpZGVudGlmaWVyIiwiT3BlcmF0aW9uTnVtYmVyIiwiZGF0ZSIsIm1vbWVudCIsIk9wZXJhdGlvbkRhdGUiLCJ0b0lTT1N0cmluZyIsInByb2Nlc3NlZERhdGUiLCJWYWx1ZURhdGUiLCJvcmlnaW5hbEFtb3VudCIsIk9wZXJhdGlvbkFtb3VudCIsIm9yaWdpbmFsQ3VycmVuY3kiLCJjaGFyZ2VkQW1vdW50IiwiZGVzY3JpcHRpb24iLCJPcGVyYXRpb25EZXNjcmlwdGlvblRvRGlzcGxheSIsInN0YXR1cyIsImZldGNoQWNjb3VudERhdGEiLCJwYWdlIiwib3B0aW9ucyIsImFwaVNpdGVVcmwiLCJhY2NvdW50RGF0YVVybCIsImFjY291bnRJbmZvIiwiZmV0Y2hHZXRXaXRoaW5QYWdlIiwic3VjY2VzcyIsImVycm9yVHlwZSIsIlNjcmFwZXJFcnJvclR5cGVzIiwiR2VuZXJpYyIsImVycm9yTWVzc2FnZSIsImFjY291bnROdW1iZXIiLCJVc2VyQWNjb3VudHNEYXRhIiwiRGVmYXVsdEFjY291bnROdW1iZXIiLCJkZWZhdWx0U3RhcnRNb21lbnQiLCJzdWJ0cmFjdCIsImFkZCIsInN0YXJ0RGF0ZSIsInRvRGF0ZSIsInN0YXJ0TW9tZW50IiwibWF4Iiwic3RhcnREYXRlU3RyIiwiZm9ybWF0IiwidHhuc1VybCIsInR4bnNSZXN1bHQiLCJFcnJvciIsIkN1cnJlbnRBY2NvdW50TGFzdFRyYW5zYWN0aW9ucyIsIk1zZ1RleHQiLCJjb21wbGV0ZWRUeG5zIiwiT3BlcmF0aW9uRW50cnkiLCJUcmFuc2FjdGlvblN0YXR1c2VzIiwiQ29tcGxldGVkIiwicmF3RnV0dXJlVHhucyIsIl8iLCJnZXQiLCJwZW5kaW5nVHhucyIsIlBlbmRpbmciLCJhY2NvdW50RGF0YSIsImFjY291bnRzIiwiYmFsYW5jZSIsIkN1cnJlbnRBY2NvdW50SW5mbyIsIkFjY291bnRCYWxhbmNlIiwibmF2aWdhdGVPckVycm9yTGFiZWwiLCJ3YWl0Rm9yTmF2aWdhdGlvbiIsIndhaXRVbnRpbEVsZW1lbnRGb3VuZCIsImdldFBvc3NpYmxlTG9naW5SZXN1bHRzIiwidXJscyIsIkxvZ2luUmVzdWx0cyIsIlN1Y2Nlc3MiLCJJbnZhbGlkUGFzc3dvcmQiLCJDaGFuZ2VQYXNzd29yZCIsImNyZWF0ZUxvZ2luRmllbGRzIiwiY3JlZGVudGlhbHMiLCJzZWxlY3RvciIsInZhbHVlIiwiaWQiLCJwYXNzd29yZCIsIm51bSIsIkRpc2NvdW50U2NyYXBlciIsIkJhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJnZXRMb2dpbk9wdGlvbnMiLCJsb2dpblVybCIsImNoZWNrUmVhZGluZXNzIiwiZmllbGRzIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJwb3N0QWN0aW9uIiwicG9zc2libGVSZXN1bHRzIiwiZmV0Y2hEYXRhIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL2Rpc2NvdW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyB0eXBlIFBhZ2UgfSBmcm9tICdwdXBwZXRlZXInO1xuaW1wb3J0IHsgd2FpdFVudGlsRWxlbWVudEZvdW5kIH0gZnJvbSAnLi4vaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMnO1xuaW1wb3J0IHsgZmV0Y2hHZXRXaXRoaW5QYWdlIH0gZnJvbSAnLi4vaGVscGVycy9mZXRjaCc7XG5pbXBvcnQgeyB3YWl0Rm9yTmF2aWdhdGlvbiB9IGZyb20gJy4uL2hlbHBlcnMvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyB0eXBlIFRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvblN0YXR1c2VzLCBUcmFuc2FjdGlvblR5cGVzIH0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsIExvZ2luUmVzdWx0cywgdHlwZSBQb3NzaWJsZUxvZ2luUmVzdWx0cyB9IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQgeyBTY3JhcGVyRXJyb3JUeXBlcyB9IGZyb20gJy4vZXJyb3JzJztcbmltcG9ydCB7IHR5cGUgU2NyYXBlck9wdGlvbnMsIHR5cGUgU2NyYXBlclNjcmFwaW5nUmVzdWx0IH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuXG5jb25zdCBCQVNFX1VSTCA9ICdodHRwczovL3N0YXJ0LnRlbGViYW5rLmNvLmlsJztcbmNvbnN0IERBVEVfRk9STUFUID0gJ1lZWVlNTUREJztcblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbiB7XG4gIE9wZXJhdGlvbk51bWJlcjogbnVtYmVyO1xuICBPcGVyYXRpb25EYXRlOiBzdHJpbmc7XG4gIFZhbHVlRGF0ZTogc3RyaW5nO1xuICBPcGVyYXRpb25BbW91bnQ6IG51bWJlcjtcbiAgT3BlcmF0aW9uRGVzY3JpcHRpb25Ub0Rpc3BsYXk6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEN1cnJlbnRBY2NvdW50SW5mbyB7XG4gIEFjY291bnRCYWxhbmNlOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBTY3JhcGVkQWNjb3VudERhdGEge1xuICBVc2VyQWNjb3VudHNEYXRhOiB7XG4gICAgRGVmYXVsdEFjY291bnROdW1iZXI6IHN0cmluZztcbiAgfTtcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbkRhdGEge1xuICBFcnJvcj86IHsgTXNnVGV4dDogc3RyaW5nIH07XG4gIEN1cnJlbnRBY2NvdW50TGFzdFRyYW5zYWN0aW9ucz86IHtcbiAgICBPcGVyYXRpb25FbnRyeTogU2NyYXBlZFRyYW5zYWN0aW9uW107XG4gICAgQ3VycmVudEFjY291bnRJbmZvOiBDdXJyZW50QWNjb3VudEluZm87XG4gICAgRnV0dXJlVHJhbnNhY3Rpb25zQmxvY2s6IHtcbiAgICAgIEZ1dHVyZVRyYW5zYWN0aW9uRW50cnk6IFNjcmFwZWRUcmFuc2FjdGlvbltdO1xuICAgIH07XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRUcmFuc2FjdGlvbnModHhuczogU2NyYXBlZFRyYW5zYWN0aW9uW10sIHR4blN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcyk6IFRyYW5zYWN0aW9uW10ge1xuICBpZiAoIXR4bnMpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgcmV0dXJuIHR4bnMubWFwKHR4biA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFRyYW5zYWN0aW9uVHlwZXMuTm9ybWFsLFxuICAgICAgaWRlbnRpZmllcjogdHhuLk9wZXJhdGlvbk51bWJlcixcbiAgICAgIGRhdGU6IG1vbWVudCh0eG4uT3BlcmF0aW9uRGF0ZSwgREFURV9GT1JNQVQpLnRvSVNPU3RyaW5nKCksXG4gICAgICBwcm9jZXNzZWREYXRlOiBtb21lbnQodHhuLlZhbHVlRGF0ZSwgREFURV9GT1JNQVQpLnRvSVNPU3RyaW5nKCksXG4gICAgICBvcmlnaW5hbEFtb3VudDogdHhuLk9wZXJhdGlvbkFtb3VudCxcbiAgICAgIG9yaWdpbmFsQ3VycmVuY3k6ICdJTFMnLFxuICAgICAgY2hhcmdlZEFtb3VudDogdHhuLk9wZXJhdGlvbkFtb3VudCxcbiAgICAgIGRlc2NyaXB0aW9uOiB0eG4uT3BlcmF0aW9uRGVzY3JpcHRpb25Ub0Rpc3BsYXksXG4gICAgICBzdGF0dXM6IHR4blN0YXR1cyxcbiAgICB9O1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hBY2NvdW50RGF0YShwYWdlOiBQYWdlLCBvcHRpb25zOiBTY3JhcGVyT3B0aW9ucyk6IFByb21pc2U8U2NyYXBlclNjcmFwaW5nUmVzdWx0PiB7XG4gIGNvbnN0IGFwaVNpdGVVcmwgPSBgJHtCQVNFX1VSTH0vVGl0YW4vZ2F0ZXdheUFQSWA7XG5cbiAgY29uc3QgYWNjb3VudERhdGFVcmwgPSBgJHthcGlTaXRlVXJsfS91c2VyQWNjb3VudHNEYXRhYDtcbiAgY29uc3QgYWNjb3VudEluZm8gPSBhd2FpdCBmZXRjaEdldFdpdGhpblBhZ2U8U2NyYXBlZEFjY291bnREYXRhPihwYWdlLCBhY2NvdW50RGF0YVVybCk7XG5cbiAgaWYgKCFhY2NvdW50SW5mbykge1xuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgIGVycm9yVHlwZTogU2NyYXBlckVycm9yVHlwZXMuR2VuZXJpYyxcbiAgICAgIGVycm9yTWVzc2FnZTogJ2ZhaWxlZCB0byBnZXQgYWNjb3VudCBkYXRhJyxcbiAgICB9O1xuICB9XG4gIGNvbnN0IGFjY291bnROdW1iZXIgPSBhY2NvdW50SW5mby5Vc2VyQWNjb3VudHNEYXRhLkRlZmF1bHRBY2NvdW50TnVtYmVyO1xuXG4gIGNvbnN0IGRlZmF1bHRTdGFydE1vbWVudCA9IG1vbWVudCgpLnN1YnRyYWN0KDEsICd5ZWFycycpLmFkZCgyLCAnZGF5Jyk7XG4gIGNvbnN0IHN0YXJ0RGF0ZSA9IG9wdGlvbnMuc3RhcnREYXRlIHx8IGRlZmF1bHRTdGFydE1vbWVudC50b0RhdGUoKTtcbiAgY29uc3Qgc3RhcnRNb21lbnQgPSBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xuXG4gIGNvbnN0IHN0YXJ0RGF0ZVN0ciA9IHN0YXJ0TW9tZW50LmZvcm1hdChEQVRFX0ZPUk1BVCk7XG4gIGNvbnN0IHR4bnNVcmwgPSBgJHthcGlTaXRlVXJsfS9sYXN0VHJhbnNhY3Rpb25zLyR7YWNjb3VudE51bWJlcn0vRGF0ZT9Jc0NhdGVnb3J5RGVzY0NvZGU9VHJ1ZSZJc1RyYW5zYWN0aW9uRGV0YWlscz1UcnVlJklzRXZlbnROYW1lcz1UcnVlJklzRnV0dXJlVHJhbnNhY3Rpb25GbGFnPVRydWUmRnJvbURhdGU9JHtzdGFydERhdGVTdHJ9YDtcbiAgY29uc3QgdHhuc1Jlc3VsdCA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxTY3JhcGVkVHJhbnNhY3Rpb25EYXRhPihwYWdlLCB0eG5zVXJsKTtcbiAgaWYgKCF0eG5zUmVzdWx0IHx8IHR4bnNSZXN1bHQuRXJyb3IgfHwgIXR4bnNSZXN1bHQuQ3VycmVudEFjY291bnRMYXN0VHJhbnNhY3Rpb25zKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgZXJyb3JUeXBlOiBTY3JhcGVyRXJyb3JUeXBlcy5HZW5lcmljLFxuICAgICAgZXJyb3JNZXNzYWdlOiB0eG5zUmVzdWx0ICYmIHR4bnNSZXN1bHQuRXJyb3IgPyB0eG5zUmVzdWx0LkVycm9yLk1zZ1RleHQgOiAndW5rbm93biBlcnJvcicsXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IGNvbXBsZXRlZFR4bnMgPSBjb252ZXJ0VHJhbnNhY3Rpb25zKFxuICAgIHR4bnNSZXN1bHQuQ3VycmVudEFjY291bnRMYXN0VHJhbnNhY3Rpb25zLk9wZXJhdGlvbkVudHJ5LFxuICAgIFRyYW5zYWN0aW9uU3RhdHVzZXMuQ29tcGxldGVkLFxuICApO1xuICBjb25zdCByYXdGdXR1cmVUeG5zID0gXy5nZXQoXG4gICAgdHhuc1Jlc3VsdCxcbiAgICAnQ3VycmVudEFjY291bnRMYXN0VHJhbnNhY3Rpb25zLkZ1dHVyZVRyYW5zYWN0aW9uc0Jsb2NrLkZ1dHVyZVRyYW5zYWN0aW9uRW50cnknLFxuICApIGFzIFNjcmFwZWRUcmFuc2FjdGlvbltdO1xuICBjb25zdCBwZW5kaW5nVHhucyA9IGNvbnZlcnRUcmFuc2FjdGlvbnMocmF3RnV0dXJlVHhucywgVHJhbnNhY3Rpb25TdGF0dXNlcy5QZW5kaW5nKTtcblxuICBjb25zdCBhY2NvdW50RGF0YSA9IHtcbiAgICBzdWNjZXNzOiB0cnVlLFxuICAgIGFjY291bnRzOiBbXG4gICAgICB7XG4gICAgICAgIGFjY291bnROdW1iZXIsXG4gICAgICAgIGJhbGFuY2U6IHR4bnNSZXN1bHQuQ3VycmVudEFjY291bnRMYXN0VHJhbnNhY3Rpb25zLkN1cnJlbnRBY2NvdW50SW5mby5BY2NvdW50QmFsYW5jZSxcbiAgICAgICAgdHhuczogWy4uLmNvbXBsZXRlZFR4bnMsIC4uLnBlbmRpbmdUeG5zXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfTtcblxuICByZXR1cm4gYWNjb3VudERhdGE7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIG5hdmlnYXRlT3JFcnJvckxhYmVsKHBhZ2U6IFBhZ2UpIHtcbiAgdHJ5IHtcbiAgICBhd2FpdCB3YWl0Rm9yTmF2aWdhdGlvbihwYWdlKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCAnI2dlbmVyYWwtZXJyb3InLCBmYWxzZSwgMTAwKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cygpOiBQb3NzaWJsZUxvZ2luUmVzdWx0cyB7XG4gIGNvbnN0IHVybHM6IFBvc3NpYmxlTG9naW5SZXN1bHRzID0ge307XG4gIHVybHNbTG9naW5SZXN1bHRzLlN1Y2Nlc3NdID0gW1xuICAgIGAke0JBU0VfVVJMfS9hcG9sbG8vcmV0YWlsLyMvTVlfQUNDT1VOVF9IT01FUEFHRWAsXG4gICAgYCR7QkFTRV9VUkx9L2Fwb2xsby9yZXRhaWwyLyMvTVlfQUNDT1VOVF9IT01FUEFHRWAsXG4gIF07XG4gIHVybHNbTG9naW5SZXN1bHRzLkludmFsaWRQYXNzd29yZF0gPSBbYCR7QkFTRV9VUkx9L2Fwb2xsby9jb3JlL3RlbXBsYXRlcy9sb2JieS9tYXN0ZXJQYWdlLmh0bWwjL0xPR0lOX1BBR0VgXTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuQ2hhbmdlUGFzc3dvcmRdID0gW2Ake0JBU0VfVVJMfS9hcG9sbG8vY29yZS90ZW1wbGF0ZXMvbG9iYnkvbWFzdGVyUGFnZS5odG1sIy9QV0RfUkVORVdgXTtcbiAgcmV0dXJuIHVybHM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICByZXR1cm4gW1xuICAgIHsgc2VsZWN0b3I6ICcjdHpJZCcsIHZhbHVlOiBjcmVkZW50aWFscy5pZCB9LFxuICAgIHsgc2VsZWN0b3I6ICcjdHpQYXNzd29yZCcsIHZhbHVlOiBjcmVkZW50aWFscy5wYXNzd29yZCB9LFxuICAgIHsgc2VsZWN0b3I6ICcjYWlkbnVtJywgdmFsdWU6IGNyZWRlbnRpYWxzLm51bSB9LFxuICBdO1xufVxuXG50eXBlIFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzID0geyBpZDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nOyBudW06IHN0cmluZyB9O1xuXG5jbGFzcyBEaXNjb3VudFNjcmFwZXIgZXh0ZW5kcyBCYXNlU2NyYXBlcldpdGhCcm93c2VyPFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzPiB7XG4gIGdldExvZ2luT3B0aW9ucyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9naW5Vcmw6IGAke0JBU0VfVVJMfS9sb2dpbi8jL0xPR0lOX1BBR0VgLFxuICAgICAgY2hlY2tSZWFkaW5lc3M6IGFzeW5jICgpID0+IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsICcjdHpJZCcpLFxuICAgICAgZmllbGRzOiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFscyksXG4gICAgICBzdWJtaXRCdXR0b25TZWxlY3RvcjogJy5zZW5kQnRuJyxcbiAgICAgIHBvc3RBY3Rpb246IGFzeW5jICgpID0+IG5hdmlnYXRlT3JFcnJvckxhYmVsKHRoaXMucGFnZSksXG4gICAgICBwb3NzaWJsZVJlc3VsdHM6IGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKCksXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoRGF0YSgpIHtcbiAgICByZXR1cm4gZmV0Y2hBY2NvdW50RGF0YSh0aGlzLnBhZ2UsIHRoaXMub3B0aW9ucyk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgRGlzY291bnRTY3JhcGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBRSxxQkFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsTUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksV0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssYUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sdUJBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLE9BQUEsR0FBQVAsT0FBQTtBQUE2QyxTQUFBRCx1QkFBQVMsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUc3QyxNQUFNRyxRQUFRLEdBQUcsOEJBQThCO0FBQy9DLE1BQU1DLFdBQVcsR0FBRyxVQUFVO0FBK0I5QixTQUFTQyxtQkFBbUJBLENBQUNDLElBQTBCLEVBQUVDLFNBQThCLEVBQWlCO0VBQ3RHLElBQUksQ0FBQ0QsSUFBSSxFQUFFO0lBQ1QsT0FBTyxFQUFFO0VBQ1g7RUFDQSxPQUFPQSxJQUFJLENBQUNFLEdBQUcsQ0FBQ0MsR0FBRyxJQUFJO0lBQ3JCLE9BQU87TUFDTEMsSUFBSSxFQUFFQyw4QkFBZ0IsQ0FBQ0MsTUFBTTtNQUM3QkMsVUFBVSxFQUFFSixHQUFHLENBQUNLLGVBQWU7TUFDL0JDLElBQUksRUFBRSxJQUFBQyxlQUFNLEVBQUNQLEdBQUcsQ0FBQ1EsYUFBYSxFQUFFYixXQUFXLENBQUMsQ0FBQ2MsV0FBVyxDQUFDLENBQUM7TUFDMURDLGFBQWEsRUFBRSxJQUFBSCxlQUFNLEVBQUNQLEdBQUcsQ0FBQ1csU0FBUyxFQUFFaEIsV0FBVyxDQUFDLENBQUNjLFdBQVcsQ0FBQyxDQUFDO01BQy9ERyxjQUFjLEVBQUVaLEdBQUcsQ0FBQ2EsZUFBZTtNQUNuQ0MsZ0JBQWdCLEVBQUUsS0FBSztNQUN2QkMsYUFBYSxFQUFFZixHQUFHLENBQUNhLGVBQWU7TUFDbENHLFdBQVcsRUFBRWhCLEdBQUcsQ0FBQ2lCLDZCQUE2QjtNQUM5Q0MsTUFBTSxFQUFFcEI7SUFDVixDQUFDO0VBQ0gsQ0FBQyxDQUFDO0FBQ0o7QUFFQSxlQUFlcUIsZ0JBQWdCQSxDQUFDQyxJQUFVLEVBQUVDLE9BQXVCLEVBQWtDO0VBQ25HLE1BQU1DLFVBQVUsR0FBRyxHQUFHNUIsUUFBUSxtQkFBbUI7RUFFakQsTUFBTTZCLGNBQWMsR0FBRyxHQUFHRCxVQUFVLG1CQUFtQjtFQUN2RCxNQUFNRSxXQUFXLEdBQUcsTUFBTSxJQUFBQyx5QkFBa0IsRUFBcUJMLElBQUksRUFBRUcsY0FBYyxDQUFDO0VBRXRGLElBQUksQ0FBQ0MsV0FBVyxFQUFFO0lBQ2hCLE9BQU87TUFDTEUsT0FBTyxFQUFFLEtBQUs7TUFDZEMsU0FBUyxFQUFFQyx5QkFBaUIsQ0FBQ0MsT0FBTztNQUNwQ0MsWUFBWSxFQUFFO0lBQ2hCLENBQUM7RUFDSDtFQUNBLE1BQU1DLGFBQWEsR0FBR1AsV0FBVyxDQUFDUSxnQkFBZ0IsQ0FBQ0Msb0JBQW9CO0VBRXZFLE1BQU1DLGtCQUFrQixHQUFHLElBQUEzQixlQUFNLEVBQUMsQ0FBQyxDQUFDNEIsUUFBUSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQ0MsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUM7RUFDdEUsTUFBTUMsU0FBUyxHQUFHaEIsT0FBTyxDQUFDZ0IsU0FBUyxJQUFJSCxrQkFBa0IsQ0FBQ0ksTUFBTSxDQUFDLENBQUM7RUFDbEUsTUFBTUMsV0FBVyxHQUFHaEMsZUFBTSxDQUFDaUMsR0FBRyxDQUFDTixrQkFBa0IsRUFBRSxJQUFBM0IsZUFBTSxFQUFDOEIsU0FBUyxDQUFDLENBQUM7RUFFckUsTUFBTUksWUFBWSxHQUFHRixXQUFXLENBQUNHLE1BQU0sQ0FBQy9DLFdBQVcsQ0FBQztFQUNwRCxNQUFNZ0QsT0FBTyxHQUFHLEdBQUdyQixVQUFVLHFCQUFxQlMsYUFBYSxtSEFBbUhVLFlBQVksRUFBRTtFQUNoTSxNQUFNRyxVQUFVLEdBQUcsTUFBTSxJQUFBbkIseUJBQWtCLEVBQXlCTCxJQUFJLEVBQUV1QixPQUFPLENBQUM7RUFDbEYsSUFBSSxDQUFDQyxVQUFVLElBQUlBLFVBQVUsQ0FBQ0MsS0FBSyxJQUFJLENBQUNELFVBQVUsQ0FBQ0UsOEJBQThCLEVBQUU7SUFDakYsT0FBTztNQUNMcEIsT0FBTyxFQUFFLEtBQUs7TUFDZEMsU0FBUyxFQUFFQyx5QkFBaUIsQ0FBQ0MsT0FBTztNQUNwQ0MsWUFBWSxFQUFFYyxVQUFVLElBQUlBLFVBQVUsQ0FBQ0MsS0FBSyxHQUFHRCxVQUFVLENBQUNDLEtBQUssQ0FBQ0UsT0FBTyxHQUFHO0lBQzVFLENBQUM7RUFDSDtFQUVBLE1BQU1DLGFBQWEsR0FBR3BELG1CQUFtQixDQUN2Q2dELFVBQVUsQ0FBQ0UsOEJBQThCLENBQUNHLGNBQWMsRUFDeERDLGlDQUFtQixDQUFDQyxTQUN0QixDQUFDO0VBQ0QsTUFBTUMsYUFBYSxHQUFHQyxlQUFDLENBQUNDLEdBQUcsQ0FDekJWLFVBQVUsRUFDViwrRUFDRixDQUF5QjtFQUN6QixNQUFNVyxXQUFXLEdBQUczRCxtQkFBbUIsQ0FBQ3dELGFBQWEsRUFBRUYsaUNBQW1CLENBQUNNLE9BQU8sQ0FBQztFQUVuRixNQUFNQyxXQUFXLEdBQUc7SUFDbEIvQixPQUFPLEVBQUUsSUFBSTtJQUNiZ0MsUUFBUSxFQUFFLENBQ1I7TUFDRTNCLGFBQWE7TUFDYjRCLE9BQU8sRUFBRWYsVUFBVSxDQUFDRSw4QkFBOEIsQ0FBQ2Msa0JBQWtCLENBQUNDLGNBQWM7TUFDcEZoRSxJQUFJLEVBQUUsQ0FBQyxHQUFHbUQsYUFBYSxFQUFFLEdBQUdPLFdBQVc7SUFDekMsQ0FBQztFQUVMLENBQUM7RUFFRCxPQUFPRSxXQUFXO0FBQ3BCO0FBRUEsZUFBZUssb0JBQW9CQSxDQUFDMUMsSUFBVSxFQUFFO0VBQzlDLElBQUk7SUFDRixNQUFNLElBQUEyQyw2QkFBaUIsRUFBQzNDLElBQUksQ0FBQztFQUMvQixDQUFDLENBQUMsT0FBTzdCLENBQUMsRUFBRTtJQUNWLE1BQU0sSUFBQXlFLDJDQUFxQixFQUFDNUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRSxHQUFHLENBQUM7RUFDakU7QUFDRjtBQUVBLFNBQVM2Qyx1QkFBdUJBLENBQUEsRUFBeUI7RUFDdkQsTUFBTUMsSUFBMEIsR0FBRyxDQUFDLENBQUM7RUFDckNBLElBQUksQ0FBQ0Msb0NBQVksQ0FBQ0MsT0FBTyxDQUFDLEdBQUcsQ0FDM0IsR0FBRzFFLFFBQVEsc0NBQXNDLEVBQ2pELEdBQUdBLFFBQVEsdUNBQXVDLENBQ25EO0VBQ0R3RSxJQUFJLENBQUNDLG9DQUFZLENBQUNFLGVBQWUsQ0FBQyxHQUFHLENBQUMsR0FBRzNFLFFBQVEsMERBQTBELENBQUM7RUFDNUd3RSxJQUFJLENBQUNDLG9DQUFZLENBQUNHLGNBQWMsQ0FBQyxHQUFHLENBQUMsR0FBRzVFLFFBQVEseURBQXlELENBQUM7RUFDMUcsT0FBT3dFLElBQUk7QUFDYjtBQUVBLFNBQVNLLGlCQUFpQkEsQ0FBQ0MsV0FBdUMsRUFBRTtFQUNsRSxPQUFPLENBQ0w7SUFBRUMsUUFBUSxFQUFFLE9BQU87SUFBRUMsS0FBSyxFQUFFRixXQUFXLENBQUNHO0VBQUcsQ0FBQyxFQUM1QztJQUFFRixRQUFRLEVBQUUsYUFBYTtJQUFFQyxLQUFLLEVBQUVGLFdBQVcsQ0FBQ0k7RUFBUyxDQUFDLEVBQ3hEO0lBQUVILFFBQVEsRUFBRSxTQUFTO0lBQUVDLEtBQUssRUFBRUYsV0FBVyxDQUFDSztFQUFJLENBQUMsQ0FDaEQ7QUFDSDtBQUlBLE1BQU1DLGVBQWUsU0FBU0MsOENBQXNCLENBQTZCO0VBQy9FQyxlQUFlQSxDQUFDUixXQUF1QyxFQUFFO0lBQ3ZELE9BQU87TUFDTFMsUUFBUSxFQUFFLEdBQUd2RixRQUFRLHFCQUFxQjtNQUMxQ3dGLGNBQWMsRUFBRSxNQUFBQSxDQUFBLEtBQVksSUFBQWxCLDJDQUFxQixFQUFDLElBQUksQ0FBQzVDLElBQUksRUFBRSxPQUFPLENBQUM7TUFDckUrRCxNQUFNLEVBQUVaLGlCQUFpQixDQUFDQyxXQUFXLENBQUM7TUFDdENZLG9CQUFvQixFQUFFLFVBQVU7TUFDaENDLFVBQVUsRUFBRSxNQUFBQSxDQUFBLEtBQVl2QixvQkFBb0IsQ0FBQyxJQUFJLENBQUMxQyxJQUFJLENBQUM7TUFDdkRrRSxlQUFlLEVBQUVyQix1QkFBdUIsQ0FBQztJQUMzQyxDQUFDO0VBQ0g7RUFFQSxNQUFNc0IsU0FBU0EsQ0FBQSxFQUFHO0lBQ2hCLE9BQU9wRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUNDLElBQUksRUFBRSxJQUFJLENBQUNDLE9BQU8sQ0FBQztFQUNsRDtBQUNGO0FBQUMsSUFBQW1FLFFBQUEsR0FBQUMsT0FBQSxDQUFBaEcsT0FBQSxHQUVjcUYsZUFBZSIsImlnbm9yZUxpc3QiOltdfQ==
120
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbW9tZW50IiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX2ZldGNoIiwiX25hdmlnYXRpb24iLCJfdHJhbnNhY3Rpb25zIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJfZXJyb3JzIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiQkFTRV9VUkwiLCJEQVRFX0ZPUk1BVCIsImNvbnZlcnRUcmFuc2FjdGlvbnMiLCJ0eG5zIiwidHhuU3RhdHVzIiwibWFwIiwidHhuIiwidHlwZSIsIlRyYW5zYWN0aW9uVHlwZXMiLCJOb3JtYWwiLCJpZGVudGlmaWVyIiwiT3BlcmF0aW9uTnVtYmVyIiwiZGF0ZSIsIm1vbWVudCIsIk9wZXJhdGlvbkRhdGUiLCJ0b0lTT1N0cmluZyIsInByb2Nlc3NlZERhdGUiLCJWYWx1ZURhdGUiLCJvcmlnaW5hbEFtb3VudCIsIk9wZXJhdGlvbkFtb3VudCIsIm9yaWdpbmFsQ3VycmVuY3kiLCJjaGFyZ2VkQW1vdW50IiwiZGVzY3JpcHRpb24iLCJPcGVyYXRpb25EZXNjcmlwdGlvblRvRGlzcGxheSIsInN0YXR1cyIsImZldGNoQWNjb3VudERhdGEiLCJwYWdlIiwib3B0aW9ucyIsImFwaVNpdGVVcmwiLCJhY2NvdW50RGF0YVVybCIsImFjY291bnRJbmZvIiwiZmV0Y2hHZXRXaXRoaW5QYWdlIiwic3VjY2VzcyIsImVycm9yVHlwZSIsIlNjcmFwZXJFcnJvclR5cGVzIiwiR2VuZXJpYyIsImVycm9yTWVzc2FnZSIsImRlZmF1bHRTdGFydE1vbWVudCIsInN1YnRyYWN0IiwiYWRkIiwic3RhcnREYXRlIiwidG9EYXRlIiwic3RhcnRNb21lbnQiLCJtYXgiLCJzdGFydERhdGVTdHIiLCJmb3JtYXQiLCJhY2NvdW50cyIsIlVzZXJBY2NvdW50c0RhdGEiLCJVc2VyQWNjb3VudHMiLCJhY2MiLCJOZXdBY2NvdW50SW5mbyIsIkFjY291bnRJRCIsImFjY291bnRzRGF0YSIsImFjY291bnROdW1iZXIiLCJ0eG5zVXJsIiwidHhuc1Jlc3VsdCIsIkVycm9yIiwiQ3VycmVudEFjY291bnRMYXN0VHJhbnNhY3Rpb25zIiwiTXNnVGV4dCIsImFjY291bnRDb21wbGV0ZWRUeG5zIiwiT3BlcmF0aW9uRW50cnkiLCJUcmFuc2FjdGlvblN0YXR1c2VzIiwiQ29tcGxldGVkIiwicmF3RnV0dXJlVHhucyIsIl8iLCJnZXQiLCJhY2NvdW50UGVuZGluZ1R4bnMiLCJQZW5kaW5nIiwicHVzaCIsImJhbGFuY2UiLCJDdXJyZW50QWNjb3VudEluZm8iLCJBY2NvdW50QmFsYW5jZSIsImFjY291bnREYXRhIiwibmF2aWdhdGVPckVycm9yTGFiZWwiLCJ3YWl0Rm9yTmF2aWdhdGlvbiIsIndhaXRVbnRpbEVsZW1lbnRGb3VuZCIsImdldFBvc3NpYmxlTG9naW5SZXN1bHRzIiwidXJscyIsIkxvZ2luUmVzdWx0cyIsIlN1Y2Nlc3MiLCJJbnZhbGlkUGFzc3dvcmQiLCJDaGFuZ2VQYXNzd29yZCIsImNyZWF0ZUxvZ2luRmllbGRzIiwiY3JlZGVudGlhbHMiLCJzZWxlY3RvciIsInZhbHVlIiwiaWQiLCJwYXNzd29yZCIsIm51bSIsIkRpc2NvdW50U2NyYXBlciIsIkJhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJnZXRMb2dpbk9wdGlvbnMiLCJsb2dpblVybCIsImNoZWNrUmVhZGluZXNzIiwiZmllbGRzIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJwb3N0QWN0aW9uIiwicG9zc2libGVSZXN1bHRzIiwiZmV0Y2hEYXRhIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL2Rpc2NvdW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyB0eXBlIFBhZ2UgfSBmcm9tICdwdXBwZXRlZXInO1xuaW1wb3J0IHsgd2FpdFVudGlsRWxlbWVudEZvdW5kIH0gZnJvbSAnLi4vaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMnO1xuaW1wb3J0IHsgZmV0Y2hHZXRXaXRoaW5QYWdlIH0gZnJvbSAnLi4vaGVscGVycy9mZXRjaCc7XG5pbXBvcnQgeyB3YWl0Rm9yTmF2aWdhdGlvbiB9IGZyb20gJy4uL2hlbHBlcnMvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyB0eXBlIFRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvblN0YXR1c2VzLCBUcmFuc2FjdGlvblR5cGVzIH0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsIExvZ2luUmVzdWx0cywgdHlwZSBQb3NzaWJsZUxvZ2luUmVzdWx0cyB9IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQgeyBTY3JhcGVyRXJyb3JUeXBlcyB9IGZyb20gJy4vZXJyb3JzJztcbmltcG9ydCB7IHR5cGUgU2NyYXBlck9wdGlvbnMsIHR5cGUgU2NyYXBlclNjcmFwaW5nUmVzdWx0IH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuXG5jb25zdCBCQVNFX1VSTCA9ICdodHRwczovL3N0YXJ0LnRlbGViYW5rLmNvLmlsJztcbmNvbnN0IERBVEVfRk9STUFUID0gJ1lZWVlNTUREJztcblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbiB7XG4gIE9wZXJhdGlvbk51bWJlcjogbnVtYmVyO1xuICBPcGVyYXRpb25EYXRlOiBzdHJpbmc7XG4gIFZhbHVlRGF0ZTogc3RyaW5nO1xuICBPcGVyYXRpb25BbW91bnQ6IG51bWJlcjtcbiAgT3BlcmF0aW9uRGVzY3JpcHRpb25Ub0Rpc3BsYXk6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEN1cnJlbnRBY2NvdW50SW5mbyB7XG4gIEFjY291bnRCYWxhbmNlOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBTY3JhcGVkQWNjb3VudERhdGEge1xuICBVc2VyQWNjb3VudHNEYXRhOiB7XG4gICAgRGVmYXVsdEFjY291bnROdW1iZXI6IHN0cmluZztcbiAgICBVc2VyQWNjb3VudHM6IEFycmF5PHtcbiAgICAgIE5ld0FjY291bnRJbmZvOiB7XG4gICAgICAgIEFjY291bnRJRDogc3RyaW5nO1xuICAgICAgfTtcbiAgICB9PjtcbiAgfTtcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbkRhdGEge1xuICBFcnJvcj86IHsgTXNnVGV4dDogc3RyaW5nIH07XG4gIEN1cnJlbnRBY2NvdW50TGFzdFRyYW5zYWN0aW9ucz86IHtcbiAgICBPcGVyYXRpb25FbnRyeTogU2NyYXBlZFRyYW5zYWN0aW9uW107XG4gICAgQ3VycmVudEFjY291bnRJbmZvOiBDdXJyZW50QWNjb3VudEluZm87XG4gICAgRnV0dXJlVHJhbnNhY3Rpb25zQmxvY2s6IHtcbiAgICAgIEZ1dHVyZVRyYW5zYWN0aW9uRW50cnk6IFNjcmFwZWRUcmFuc2FjdGlvbltdO1xuICAgIH07XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRUcmFuc2FjdGlvbnModHhuczogU2NyYXBlZFRyYW5zYWN0aW9uW10sIHR4blN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcyk6IFRyYW5zYWN0aW9uW10ge1xuICBpZiAoIXR4bnMpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgcmV0dXJuIHR4bnMubWFwKHR4biA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFRyYW5zYWN0aW9uVHlwZXMuTm9ybWFsLFxuICAgICAgaWRlbnRpZmllcjogdHhuLk9wZXJhdGlvbk51bWJlcixcbiAgICAgIGRhdGU6IG1vbWVudCh0eG4uT3BlcmF0aW9uRGF0ZSwgREFURV9GT1JNQVQpLnRvSVNPU3RyaW5nKCksXG4gICAgICBwcm9jZXNzZWREYXRlOiBtb21lbnQodHhuLlZhbHVlRGF0ZSwgREFURV9GT1JNQVQpLnRvSVNPU3RyaW5nKCksXG4gICAgICBvcmlnaW5hbEFtb3VudDogdHhuLk9wZXJhdGlvbkFtb3VudCxcbiAgICAgIG9yaWdpbmFsQ3VycmVuY3k6ICdJTFMnLFxuICAgICAgY2hhcmdlZEFtb3VudDogdHhuLk9wZXJhdGlvbkFtb3VudCxcbiAgICAgIGRlc2NyaXB0aW9uOiB0eG4uT3BlcmF0aW9uRGVzY3JpcHRpb25Ub0Rpc3BsYXksXG4gICAgICBzdGF0dXM6IHR4blN0YXR1cyxcbiAgICB9O1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hBY2NvdW50RGF0YShwYWdlOiBQYWdlLCBvcHRpb25zOiBTY3JhcGVyT3B0aW9ucyk6IFByb21pc2U8U2NyYXBlclNjcmFwaW5nUmVzdWx0PiB7XG4gIGNvbnN0IGFwaVNpdGVVcmwgPSBgJHtCQVNFX1VSTH0vVGl0YW4vZ2F0ZXdheUFQSWA7XG5cbiAgY29uc3QgYWNjb3VudERhdGFVcmwgPSBgJHthcGlTaXRlVXJsfS91c2VyQWNjb3VudHNEYXRhYDtcbiAgY29uc3QgYWNjb3VudEluZm8gPSBhd2FpdCBmZXRjaEdldFdpdGhpblBhZ2U8U2NyYXBlZEFjY291bnREYXRhPihwYWdlLCBhY2NvdW50RGF0YVVybCk7XG5cbiAgaWYgKCFhY2NvdW50SW5mbykge1xuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgIGVycm9yVHlwZTogU2NyYXBlckVycm9yVHlwZXMuR2VuZXJpYyxcbiAgICAgIGVycm9yTWVzc2FnZTogJ2ZhaWxlZCB0byBnZXQgYWNjb3VudCBkYXRhJyxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJykuYWRkKDIsICdkYXknKTtcbiAgY29uc3Qgc3RhcnREYXRlID0gb3B0aW9ucy5zdGFydERhdGUgfHwgZGVmYXVsdFN0YXJ0TW9tZW50LnRvRGF0ZSgpO1xuICBjb25zdCBzdGFydE1vbWVudCA9IG1vbWVudC5tYXgoZGVmYXVsdFN0YXJ0TW9tZW50LCBtb21lbnQoc3RhcnREYXRlKSk7XG5cbiAgY29uc3Qgc3RhcnREYXRlU3RyID0gc3RhcnRNb21lbnQuZm9ybWF0KERBVEVfRk9STUFUKTtcblxuICBjb25zdCBhY2NvdW50czogc3RyaW5nW10gPSBhY2NvdW50SW5mby5Vc2VyQWNjb3VudHNEYXRhLlVzZXJBY2NvdW50cy5tYXAoYWNjID0+IGFjYy5OZXdBY2NvdW50SW5mby5BY2NvdW50SUQpO1xuICBjb25zdCBhY2NvdW50c0RhdGE6IEFycmF5PHsgYWNjb3VudE51bWJlcjogc3RyaW5nOyBiYWxhbmNlOiBudW1iZXI7IHR4bnM6IFRyYW5zYWN0aW9uW10gfT4gPSBbXTtcblxuICBmb3IgKGNvbnN0IGFjY291bnROdW1iZXIgb2YgYWNjb3VudHMpIHtcbiAgICBjb25zdCB0eG5zVXJsID0gYCR7YXBpU2l0ZVVybH0vbGFzdFRyYW5zYWN0aW9ucy8ke2FjY291bnROdW1iZXJ9L0RhdGU/SXNDYXRlZ29yeURlc2NDb2RlPVRydWUmSXNUcmFuc2FjdGlvbkRldGFpbHM9VHJ1ZSZJc0V2ZW50TmFtZXM9VHJ1ZSZJc0Z1dHVyZVRyYW5zYWN0aW9uRmxhZz1UcnVlJkZyb21EYXRlPSR7c3RhcnREYXRlU3RyfWA7XG4gICAgY29uc3QgdHhuc1Jlc3VsdCA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxTY3JhcGVkVHJhbnNhY3Rpb25EYXRhPihwYWdlLCB0eG5zVXJsKTtcbiAgICBpZiAoIXR4bnNSZXN1bHQgfHwgdHhuc1Jlc3VsdC5FcnJvciB8fCAhdHhuc1Jlc3VsdC5DdXJyZW50QWNjb3VudExhc3RUcmFuc2FjdGlvbnMpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkdlbmVyaWMsXG4gICAgICAgIGVycm9yTWVzc2FnZTogdHhuc1Jlc3VsdCAmJiB0eG5zUmVzdWx0LkVycm9yID8gdHhuc1Jlc3VsdC5FcnJvci5Nc2dUZXh0IDogJ3Vua25vd24gZXJyb3InLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBhY2NvdW50Q29tcGxldGVkVHhucyA9IGNvbnZlcnRUcmFuc2FjdGlvbnMoXG4gICAgICB0eG5zUmVzdWx0LkN1cnJlbnRBY2NvdW50TGFzdFRyYW5zYWN0aW9ucy5PcGVyYXRpb25FbnRyeSxcbiAgICAgIFRyYW5zYWN0aW9uU3RhdHVzZXMuQ29tcGxldGVkLFxuICAgICk7XG4gICAgY29uc3QgcmF3RnV0dXJlVHhucyA9IF8uZ2V0KFxuICAgICAgdHhuc1Jlc3VsdCxcbiAgICAgICdDdXJyZW50QWNjb3VudExhc3RUcmFuc2FjdGlvbnMuRnV0dXJlVHJhbnNhY3Rpb25zQmxvY2suRnV0dXJlVHJhbnNhY3Rpb25FbnRyeScsXG4gICAgKSBhcyBTY3JhcGVkVHJhbnNhY3Rpb25bXTtcbiAgICBjb25zdCBhY2NvdW50UGVuZGluZ1R4bnMgPSBjb252ZXJ0VHJhbnNhY3Rpb25zKHJhd0Z1dHVyZVR4bnMsIFRyYW5zYWN0aW9uU3RhdHVzZXMuUGVuZGluZyk7XG5cbiAgICBhY2NvdW50c0RhdGEucHVzaCh7XG4gICAgICBhY2NvdW50TnVtYmVyLFxuICAgICAgYmFsYW5jZTogdHhuc1Jlc3VsdC5DdXJyZW50QWNjb3VudExhc3RUcmFuc2FjdGlvbnMuQ3VycmVudEFjY291bnRJbmZvLkFjY291bnRCYWxhbmNlLFxuICAgICAgdHhuczogWy4uLmFjY291bnRDb21wbGV0ZWRUeG5zLCAuLi5hY2NvdW50UGVuZGluZ1R4bnNdLFxuICAgIH0pO1xuICB9XG5cbiAgY29uc3QgYWNjb3VudERhdGEgPSB7XG4gICAgc3VjY2VzczogdHJ1ZSxcbiAgICBhY2NvdW50czogYWNjb3VudHNEYXRhLFxuICB9O1xuXG4gIHJldHVybiBhY2NvdW50RGF0YTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gbmF2aWdhdGVPckVycm9yTGFiZWwocGFnZTogUGFnZSkge1xuICB0cnkge1xuICAgIGF3YWl0IHdhaXRGb3JOYXZpZ2F0aW9uKHBhZ2UpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICcjZ2VuZXJhbC1lcnJvcicsIGZhbHNlLCAxMDApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKCk6IFBvc3NpYmxlTG9naW5SZXN1bHRzIHtcbiAgY29uc3QgdXJsczogUG9zc2libGVMb2dpblJlc3VsdHMgPSB7fTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuU3VjY2Vzc10gPSBbXG4gICAgYCR7QkFTRV9VUkx9L2Fwb2xsby9yZXRhaWwvIy9NWV9BQ0NPVU5UX0hPTUVQQUdFYCxcbiAgICBgJHtCQVNFX1VSTH0vYXBvbGxvL3JldGFpbDIvIy9NWV9BQ0NPVU5UX0hPTUVQQUdFYCxcbiAgXTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkXSA9IFtgJHtCQVNFX1VSTH0vYXBvbGxvL2NvcmUvdGVtcGxhdGVzL2xvYmJ5L21hc3RlclBhZ2UuaHRtbCMvTE9HSU5fUEFHRWBdO1xuICB1cmxzW0xvZ2luUmVzdWx0cy5DaGFuZ2VQYXNzd29yZF0gPSBbYCR7QkFTRV9VUkx9L2Fwb2xsby9jb3JlL3RlbXBsYXRlcy9sb2JieS9tYXN0ZXJQYWdlLmh0bWwjL1BXRF9SRU5FV2BdO1xuICByZXR1cm4gdXJscztcbn1cblxuZnVuY3Rpb24gY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHM6IFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzKSB7XG4gIHJldHVybiBbXG4gICAgeyBzZWxlY3RvcjogJyN0eklkJywgdmFsdWU6IGNyZWRlbnRpYWxzLmlkIH0sXG4gICAgeyBzZWxlY3RvcjogJyN0elBhc3N3b3JkJywgdmFsdWU6IGNyZWRlbnRpYWxzLnBhc3N3b3JkIH0sXG4gICAgeyBzZWxlY3RvcjogJyNhaWRudW0nLCB2YWx1ZTogY3JlZGVudGlhbHMubnVtIH0sXG4gIF07XG59XG5cbnR5cGUgU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMgPSB7IGlkOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmc7IG51bTogc3RyaW5nIH07XG5cbmNsYXNzIERpc2NvdW50U2NyYXBlciBleHRlbmRzIEJhc2VTY3JhcGVyV2l0aEJyb3dzZXI8U2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHM+IHtcbiAgZ2V0TG9naW5PcHRpb25zKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICAgIHJldHVybiB7XG4gICAgICBsb2dpblVybDogYCR7QkFTRV9VUkx9L2xvZ2luLyMvTE9HSU5fUEFHRWAsXG4gICAgICBjaGVja1JlYWRpbmVzczogYXN5bmMgKCkgPT4gd2FpdFVudGlsRWxlbWVudEZvdW5kKHRoaXMucGFnZSwgJyN0eklkJyksXG4gICAgICBmaWVsZHM6IGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzKSxcbiAgICAgIHN1Ym1pdEJ1dHRvblNlbGVjdG9yOiAnLnNlbmRCdG4nLFxuICAgICAgcG9zdEFjdGlvbjogYXN5bmMgKCkgPT4gbmF2aWdhdGVPckVycm9yTGFiZWwodGhpcy5wYWdlKSxcbiAgICAgIHBvc3NpYmxlUmVzdWx0czogZ2V0UG9zc2libGVMb2dpblJlc3VsdHMoKSxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hEYXRhKCkge1xuICAgIHJldHVybiBmZXRjaEFjY291bnREYXRhKHRoaXMucGFnZSwgdGhpcy5vcHRpb25zKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBEaXNjb3VudFNjcmFwZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFFLHFCQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxXQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxhQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSx1QkFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sT0FBQSxHQUFBUCxPQUFBO0FBQTZDLFNBQUFELHVCQUFBUyxDQUFBLFdBQUFBLENBQUEs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QUNyQ0EsSUFBSSxDQUFDQyxvQ0FBWSxDQUFDQyxPQUFPLENBQUMsR0FBRyxDQUMzQixHQUFHL0UsUUFBUSxzQ0FBc0MsRUFDakQsR0FBR0EsUUFBUSx1Q0FBdUMsQ0FDbkQ7RUFDRDZFLElBQUksQ0FBQ0Msb0NBQVksQ0FBQ0UsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHaEYsUUFBUSwwREFBMEQsQ0FBQztFQUM1RzZFLElBQUksQ0FBQ0Msb0NBQVksQ0FBQ0csY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHakYsUUFBUSx5REFBeUQsQ0FBQztFQUMxRyxPQUFPNkUsSUFBSTtBQUNiO0FBRUEsU0FBU0ssaUJBQWlCQSxDQUFDQyxXQUF1QyxFQUFFO0VBQ2xFLE9BQU8sQ0FDTDtJQUFFQyxRQUFRLEVBQUUsT0FBTztJQUFFQyxLQUFLLEVBQUVGLFdBQVcsQ0FBQ0c7RUFBRyxDQUFDLEVBQzVDO0lBQUVGLFFBQVEsRUFBRSxhQUFhO0lBQUVDLEtBQUssRUFBRUYsV0FBVyxDQUFDSTtFQUFTLENBQUMsRUFDeEQ7SUFBRUgsUUFBUSxFQUFFLFNBQVM7SUFBRUMsS0FBSyxFQUFFRixXQUFXLENBQUNLO0VBQUksQ0FBQyxDQUNoRDtBQUNIO0FBSUEsTUFBTUMsZUFBZSxTQUFTQyw4Q0FBc0IsQ0FBNkI7RUFDL0VDLGVBQWVBLENBQUNSLFdBQXVDLEVBQUU7SUFDdkQsT0FBTztNQUNMUyxRQUFRLEVBQUUsR0FBRzVGLFFBQVEscUJBQXFCO01BQzFDNkYsY0FBYyxFQUFFLE1BQUFBLENBQUEsS0FBWSxJQUFBbEIsMkNBQXFCLEVBQUMsSUFBSSxDQUFDakQsSUFBSSxFQUFFLE9BQU8sQ0FBQztNQUNyRW9FLE1BQU0sRUFBRVosaUJBQWlCLENBQUNDLFdBQVcsQ0FBQztNQUN0Q1ksb0JBQW9CLEVBQUUsVUFBVTtNQUNoQ0MsVUFBVSxFQUFFLE1BQUFBLENBQUEsS0FBWXZCLG9CQUFvQixDQUFDLElBQUksQ0FBQy9DLElBQUksQ0FBQztNQUN2RHVFLGVBQWUsRUFBRXJCLHVCQUF1QixDQUFDO0lBQzNDLENBQUM7RUFDSDtFQUVBLE1BQU1zQixTQUFTQSxDQUFBLEVBQUc7SUFDaEIsT0FBT3pFLGdCQUFnQixDQUFDLElBQUksQ0FBQ0MsSUFBSSxFQUFFLElBQUksQ0FBQ0MsT0FBTyxDQUFDO0VBQ2xEO0FBQ0Y7QUFBQyxJQUFBd0UsUUFBQSxHQUFBQyxPQUFBLENBQUFyRyxPQUFBLEdBRWMwRixlQUFlIiwiaWdub3JlTGlzdCI6W119
@@ -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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL2ludGVyZmFjZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIEJyb3dzZXJDb250ZXh0LCB0eXBlIEJyb3dzZXIsIHR5cGUgUGFnZSB9IGZyb20gJ3B1cHBldGVlcic7XG5pbXBvcnQgeyB0eXBlIENvbXBhbnlUeXBlcywgdHlwZSBTY3JhcGVyUHJvZ3Jlc3NUeXBlcyB9IGZyb20gJy4uL2RlZmluaXRpb25zJztcbmltcG9ydCB7IHR5cGUgVHJhbnNhY3Rpb25zQWNjb3VudCB9IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyB0eXBlIEVycm9yUmVzdWx0LCB0eXBlIFNjcmFwZXJFcnJvclR5cGVzIH0gZnJvbSAnLi9lcnJvcnMnO1xuXG4vLyBUT0RPOiBSZW1vdmUgdGhpcyB0eXBlIHdoZW4gdGhlIHNjcmFwZXIgJ2ZhY3RvcnknIHdpbGwgcmV0dXJuIGNvbmNyZXRlIHNjcmFwZXIgdHlwZXNcbi8vIEluc3RlYWQgb2YgYSBnZW5lcmljIGludGVyZmFjZSAod2hpY2ggaW4gdHVybiB1c2VzIHRoaXMgdHlwZSlcbmV4cG9ydCB0eXBlIFNjcmFwZXJDcmVkZW50aWFscyA9XG4gIHwgeyB1c2VyQ29kZTogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH1cbiAgfCB7IHVzZXJuYW1lOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmcgfVxuICB8IHsgaWQ6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9XG4gIHwgeyBpZDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nOyBudW06IHN0cmluZyB9XG4gIHwgeyBpZDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nOyBjYXJkNkRpZ2l0czogc3RyaW5nIH1cbiAgfCB7IHVzZXJuYW1lOiBzdHJpbmc7IG5hdGlvbmFsSUQ6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9XG4gIHwgKHsgZW1haWw6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9ICYgKFxuICAgICAgfCB7XG4gICAgICAgICAgb3RwQ29kZVJldHJpZXZlcjogKCkgPT4gUHJvbWlzZTxzdHJpbmc+O1xuICAgICAgICAgIHBob25lTnVtYmVyOiBzdHJpbmc7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIG90cExvbmdUZXJtVG9rZW46IHN0cmluZztcbiAgICAgICAgfVxuICAgICkpO1xuXG5leHBvcnQgdHlwZSBPcHRJbkZlYXR1cmVzID1cbiAgfCAnbWl6cmFoaTpwZW5kaW5nSWZOb0lkZW50aWZpZXInXG4gIHwgJ21penJhaGk6cGVuZGluZ0lmSGFzR2VuZXJpY0Rlc2NyaXB0aW9uJ1xuICB8ICdtaXpyYWhpOnBlbmRpbmdJZlRvZGF5VHJhbnNhY3Rpb24nO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZ1dHVyZURlYml0IHtcbiAgYW1vdW50OiBudW1iZXI7XG4gIGFtb3VudEN1cnJlbmN5OiBzdHJpbmc7XG4gIGNoYXJnZURhdGU/OiBzdHJpbmc7XG4gIGJhbmtBY2NvdW50TnVtYmVyPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgRXh0ZXJuYWxCcm93c2VyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBbiBleHRlcm5hbGx5IGNyZWF0ZWQgYnJvd3NlciBpbnN0YW5jZS5cbiAgICogeW91IGNhbiBnZXQgYSBicm93c2VyIGRpcmVjdGx5IGZyb20gcHVwcGV0ZWVyIHZpYSBgcHVwcGV0ZWVyLmxhdW5jaCgpYFxuICAgKlxuICAgKiBOb3RlOiBUaGUgYnJvd3NlciB3aWxsIGJlIGNsb3NlZCBieSB0aGUgbGlicmFyeSBhZnRlciB0aGUgc2NyYXBlciBmaW5pc2hlcyB1bmxlc3MgYHNraXBDbG9zZUJyb3dzZXJgIGlzIHNldCB0byB0cnVlXG4gICAqL1xuICBicm93c2VyOiBCcm93c2VyO1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgYnJvd3NlciB3aWxsIG5vdCBiZSBjbG9zZWQgYnkgdGhlIGxpYnJhcnkgYWZ0ZXIgdGhlIHNjcmFwZXIgZmluaXNoZXNcbiAgICovXG4gIHNraXBDbG9zZUJyb3dzZXI/OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgRXh0ZXJuYWxCcm93c2VyQ29udGV4dE9wdGlvbnMge1xuICAvKipcbiAgICogQW4gZXh0ZXJuYWxseSBtYW5hZ2VkIGJyb3dzZXIgY29udGV4dC4gVGhpcyBpcyB1c2VmdWwgd2hlbiB5b3Ugd2FudCB0byBtYW5hZ2UgdGhlIGJyb3dzZXJcbiAgICovXG4gIGJyb3dzZXJDb250ZXh0OiBCcm93c2VyQ29udGV4dDtcbn1cblxuaW50ZXJmYWNlIERlZmF1bHRCcm93c2VyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBzaG93cyB0aGUgYnJvd3NlciB3aGlsZSBzY3JhcGluZywgZ29vZCBmb3IgZGVidWdnaW5nIChkZWZhdWx0IGZhbHNlKVxuICAgKi9cbiAgc2hvd0Jyb3dzZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBwcm92aWRlIGEgcGF0Y2ggdG8gbG9jYWwgY2hyb21pdW0gdG8gYmUgdXNlZCBieSBwdXBwZXRlZXIuIFJlbGV2YW50IHdoZW4gdXNpbmdcbiAgICogYGlzcmFlbGktYmFuay1zY3JhcGVycy1jb3JlYCBsaWJyYXJ5XG4gICAqL1xuICBleGVjdXRhYmxlUGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogYWRkaXRpb25hbCBhcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgYnJvd3NlciBpbnN0YW5jZS4gVGhlIGxpc3Qgb2YgZmxhZ3MgY2FuIGJlIGZvdW5kIGluXG4gICAqXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvTW96aWxsYS9Db21tYW5kX0xpbmVfT3B0aW9uc1xuICAgKiBodHRwczovL3BldGVyLnNoL2V4cGVyaW1lbnRzL2Nocm9taXVtLWNvbW1hbmQtbGluZS1zd2l0Y2hlcy9cbiAgICovXG4gIGFyZ3M/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogTWF4aW11bSBuYXZpZ2F0aW9uIHRpbWUgaW4gbWlsbGlzZWNvbmRzLCBwYXNzIDAgdG8gZGlzYWJsZSB0aW1lb3V0LlxuICAgKiBAZGVmYXVsdCAzMDAwMFxuICAgKi9cbiAgdGltZW91dD86IG51bWJlcjtcblxuICAvKipcbiAgICogYWRqdXN0IHRoZSBicm93c2VyIGluc3RhbmNlIGJlZm9yZSBpdCBpcyBiZWluZyB1c2VkXG4gICAqXG4gICAqIEBwYXJhbSBicm93c2VyXG4gICAqL1xuICBwcmVwYXJlQnJvd3Nlcj86IChicm93c2VyOiBCcm93c2VyKSA9PiBQcm9taXNlPHZvaWQ+O1xufVxuXG50eXBlIFNjcmFwZXJCcm93c2VyT3B0aW9ucyA9IEV4dGVybmFsQnJvd3Nlck9wdGlvbnMgfCBFeHRlcm5hbEJyb3dzZXJDb250ZXh0T3B0aW9ucyB8IERlZmF1bHRCcm93c2VyT3B0aW9ucztcblxuZXhwb3J0IHR5cGUgU2NyYXBlck9wdGlvbnMgPSBTY3JhcGVyQnJvd3Nlck9wdGlvbnMgJiB7XG4gIC8qKlxuICAgKiBUaGUgY29tcGFueSB5b3Ugd2FudCB0byBzY3JhcGVcbiAgICovXG4gIGNvbXBhbnlJZDogQ29tcGFueVR5cGVzO1xuXG4gIC8qKlxuICAgKiBpbmNsdWRlIG1vcmUgZGVidWcgaW5mbyBhYm91dCBpbiB0aGUgb3V0cHV0XG4gICAqL1xuICB2ZXJib3NlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogdGhlIGRhdGUgdG8gZmV0Y2ggdHJhbnNhY3Rpb25zIGZyb20gKGNhbid0IGJlIGJlZm9yZSB0aGUgbWluaW11bSBhbGxvd2VkIHRpbWUgZGlmZmVyZW5jZSBmb3IgdGhlIHNjcmFwZXIpXG4gICAqL1xuICBzdGFydERhdGU6IERhdGU7XG5cbiAgLyoqXG4gICAqIHNjcmFwZSB0cmFuc2FjdGlvbnMgdG8gYmUgcHJvY2Vzc2VkIFggbW9udGhzIGluIHRoZSBmdXR1cmVcbiAgICovXG4gIGZ1dHVyZU1vbnRoc1RvU2NyYXBlPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBpZiBzZXQgdG8gdHJ1ZSwgYWxsIGluc3RhbGxtZW50IHRyYW5zYWN0aW9ucyB3aWxsIGJlIGNvbWJpbmUgaW50byB0aGUgZmlyc3Qgb25lXG4gICAqL1xuICBjb21iaW5lSW5zdGFsbG1lbnRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogYWRqdXN0IHRoZSBwYWdlIGluc3RhbmNlIGJlZm9yZSBpdCBpcyBiZWluZyB1c2VkLlxuICAgKlxuICAgKiBAcGFyYW0gcGFnZVxuICAgKi9cbiAgcHJlcGFyZVBhZ2U/OiAocGFnZTogUGFnZSkgPT4gUHJvbWlzZTx2b2lkPjtcblxuICAvKipcbiAgICogaWYgc2V0LCBzdG9yZSBhIHNjcmVlbnNob3QgaWYgZmFpbGVkIHRvIHNjcmFwZS4gVXNlZCBmb3IgZGVidWcgcHVycG9zZXNcbiAgICovXG4gIHN0b3JlRmFpbHVyZVNjcmVlblNob3RQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBpZiBzZXQsIHdpbGwgc2V0IHRoZSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyBvZiBwdXBwZXRlZXIncyBgcGFnZS5zZXREZWZhdWx0VGltZW91dGAuXG4gICAqL1xuICBkZWZhdWx0VGltZW91dD86IG51bWJlcjtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgbWFuaXB1bGF0aW9uIG9mIG91dHB1dCBkYXRhXG4gICAqL1xuICBvdXRwdXREYXRhPzogT3V0cHV0RGF0YU9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFBlcmZvcm0gYWRkaXRpb25hbCBvcGVyYXRpb24gZm9yIGVhY2ggdHJhbnNhY3Rpb24gdG8gZ2V0IG1vcmUgaW5mb3JtYXRpb24gKExpa2UgY2F0ZWdvcnkpIGFib3V0IGl0LlxuICAgKiBQbGVhc2Ugbm90ZTogSXQgd2lsbCB0YWtlIG1vcmUgdGltZSB0byBmaW5pc2ggdGhlIHByb2Nlc3MuXG4gICAqL1xuICBhZGRpdGlvbmFsVHJhbnNhY3Rpb25JbmZvcm1hdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFkanVzdCB0aGUgdmlld3BvcnQgc2l6ZSBvZiB0aGUgYnJvd3NlciBwYWdlLlxuICAgKiBJZiBub3Qgc2V0LCB0aGUgZGVmYXVsdCB2aWV3cG9ydCBzaXplIG9mIDEwMjR4NzY4IHdpbGwgYmUgdXNlZC5cbiAgICovXG4gIHZpZXdwb3J0U2l6ZT86IHtcbiAgICB3aWR0aDogbnVtYmVyO1xuICAgIGhlaWdodDogbnVtYmVyO1xuICB9O1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIHJldHJ5IHRoZSBuYXZpZ2F0aW9uIGluIGNhc2Ugb2YgYSBmYWlsdXJlIChkZWZhdWx0IDApXG4gICAqL1xuICBuYXZpZ2F0aW9uUmV0cnlDb3VudD86IG51bWJlcjtcblxuICAvKipcbiAgICogT3B0LWluIGZlYXR1cmVzIGZvciB0aGUgc2NyYXBlcnMsIGFsbG93aW5nIHNhZmUgcm9sbG91dCBvZiBuZXcgYnJlYWtpbmcgY2hhbmdlcy5cbiAgICovXG4gIG9wdEluRmVhdHVyZXM/OiBBcnJheTxPcHRJbkZlYXR1cmVzPjtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3V0cHV0RGF0YU9wdGlvbnMge1xuICAvKipcbiAgICogaWYgdHJ1ZSwgdGhlIHJlc3VsdCB3b3VsZG4ndCBiZSBmaWx0ZXJlZCBvdXQgYnkgZGF0ZSwgYW5kIHlvdSB3aWxsIHJldHVybiB1bmZpbHRlcmVkIHNjcmFwcGVkIGRhdGEuXG4gICAqL1xuICBlbmFibGVUcmFuc2FjdGlvbnNGaWx0ZXJCeURhdGU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjcmFwZXJTY3JhcGluZ1Jlc3VsdCB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIGFjY291bnRzPzogVHJhbnNhY3Rpb25zQWNjb3VudFtdO1xuICBmdXR1cmVEZWJpdHM/OiBGdXR1cmVEZWJpdFtdO1xuICBlcnJvclR5cGU/OiBTY3JhcGVyRXJyb3JUeXBlcztcbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nOyAvLyBvbmx5IG9uIHN1Y2Nlc3M9ZmFsc2Vcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY3JhcGVyPFRDcmVkZW50aWFscyBleHRlbmRzIFNjcmFwZXJDcmVkZW50aWFscz4ge1xuICBzY3JhcGUoY3JlZGVudGlhbHM6IFRDcmVkZW50aWFscyk6IFByb21pc2U8U2NyYXBlclNjcmFwaW5nUmVzdWx0PjtcbiAgb25Qcm9ncmVzcyhmdW5jOiAoY29tcGFueUlkOiBDb21wYW55VHlwZXMsIHBheWxvYWQ6IHsgdHlwZTogU2NyYXBlclByb2dyZXNzVHlwZXMgfSkgPT4gdm9pZCk6IHZvaWQ7XG4gIHRyaWdnZXJUd29GYWN0b3JBdXRoKHBob25lTnVtYmVyOiBzdHJpbmcpOiBQcm9taXNlPFNjcmFwZXJUd29GYWN0b3JBdXRoVHJpZ2dlclJlc3VsdD47XG4gIGdldExvbmdUZXJtVHdvRmFjdG9yVG9rZW4ob3RwQ29kZTogc3RyaW5nKTogUHJvbWlzZTxTY3JhcGVyR2V0TG9uZ1Rlcm1Ud29GYWN0b3JUb2tlblJlc3VsdD47XG59XG5cbmV4cG9ydCB0eXBlIFNjcmFwZXJUd29GYWN0b3JBdXRoVHJpZ2dlclJlc3VsdCA9XG4gIHwgRXJyb3JSZXN1bHRcbiAgfCB7XG4gICAgICBzdWNjZXNzOiB0cnVlO1xuICAgIH07XG5cbmV4cG9ydCB0eXBlIFNjcmFwZXJHZXRMb25nVGVybVR3b0ZhY3RvclRva2VuUmVzdWx0ID1cbiAgfCBFcnJvclJlc3VsdFxuICB8IHtcbiAgICAgIHN1Y2Nlc3M6IHRydWU7XG4gICAgICBsb25nVGVybVR3b0ZhY3RvckF1dGhUb2tlbjogc3RyaW5nO1xuICAgIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NyYXBlckxvZ2luUmVzdWx0IHtcbiAgc3VjY2VzczogYm9vbGVhbjtcbiAgZXJyb3JUeXBlPzogU2NyYXBlckVycm9yVHlwZXM7XG4gIGVycm9yTWVzc2FnZT86IHN0cmluZzsgLy8gb25seSBvbiBzdWNjZXNzPWZhbHNlXG4gIHBlcnNpc3RlbnRPdHBUb2tlbj86IHN0cmluZztcbn1cbiJdLCJtYXBwaW5ncyI6IiIsImlnbm9yZUxpc3QiOltdfQ==
6
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL2ludGVyZmFjZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIEJyb3dzZXJDb250ZXh0LCB0eXBlIEJyb3dzZXIsIHR5cGUgUGFnZSB9IGZyb20gJ3B1cHBldGVlcic7XG5pbXBvcnQgeyB0eXBlIENvbXBhbnlUeXBlcywgdHlwZSBTY3JhcGVyUHJvZ3Jlc3NUeXBlcyB9IGZyb20gJy4uL2RlZmluaXRpb25zJztcbmltcG9ydCB7IHR5cGUgVHJhbnNhY3Rpb25zQWNjb3VudCB9IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyB0eXBlIEVycm9yUmVzdWx0LCB0eXBlIFNjcmFwZXJFcnJvclR5cGVzIH0gZnJvbSAnLi9lcnJvcnMnO1xuXG4vLyBUT0RPOiBSZW1vdmUgdGhpcyB0eXBlIHdoZW4gdGhlIHNjcmFwZXIgJ2ZhY3RvcnknIHdpbGwgcmV0dXJuIGNvbmNyZXRlIHNjcmFwZXIgdHlwZXNcbi8vIEluc3RlYWQgb2YgYSBnZW5lcmljIGludGVyZmFjZSAod2hpY2ggaW4gdHVybiB1c2VzIHRoaXMgdHlwZSlcbmV4cG9ydCB0eXBlIFNjcmFwZXJDcmVkZW50aWFscyA9XG4gIHwgeyB1c2VyQ29kZTogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH1cbiAgfCB7IHVzZXJuYW1lOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmcgfVxuICB8IHsgaWQ6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9XG4gIHwgeyBpZDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nOyBudW06IHN0cmluZyB9XG4gIHwgeyBpZDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nOyBjYXJkNkRpZ2l0czogc3RyaW5nIH1cbiAgfCB7IHVzZXJuYW1lOiBzdHJpbmc7IG5hdGlvbmFsSUQ6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9XG4gIHwgKHsgZW1haWw6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9ICYgKFxuICAgICAgfCB7XG4gICAgICAgICAgb3RwQ29kZVJldHJpZXZlcjogKCkgPT4gUHJvbWlzZTxzdHJpbmc+O1xuICAgICAgICAgIHBob25lTnVtYmVyOiBzdHJpbmc7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIG90cExvbmdUZXJtVG9rZW46IHN0cmluZztcbiAgICAgICAgfVxuICAgICkpO1xuXG5leHBvcnQgdHlwZSBPcHRJbkZlYXR1cmVzID1cbiAgfCAnaXNyYWNhcmQtYW1leDpza2lwQWRkaXRpb25hbFRyYW5zYWN0aW9uSW5mb3JtYXRpb24nXG4gIHwgJ21penJhaGk6cGVuZGluZ0lmTm9JZGVudGlmaWVyJ1xuICB8ICdtaXpyYWhpOnBlbmRpbmdJZkhhc0dlbmVyaWNEZXNjcmlwdGlvbidcbiAgfCAnbWl6cmFoaTpwZW5kaW5nSWZUb2RheVRyYW5zYWN0aW9uJztcblxuZXhwb3J0IGludGVyZmFjZSBGdXR1cmVEZWJpdCB7XG4gIGFtb3VudDogbnVtYmVyO1xuICBhbW91bnRDdXJyZW5jeTogc3RyaW5nO1xuICBjaGFyZ2VEYXRlPzogc3RyaW5nO1xuICBiYW5rQWNjb3VudE51bWJlcj86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEV4dGVybmFsQnJvd3Nlck9wdGlvbnMge1xuICAvKipcbiAgICogQW4gZXh0ZXJuYWxseSBjcmVhdGVkIGJyb3dzZXIgaW5zdGFuY2UuXG4gICAqIHlvdSBjYW4gZ2V0IGEgYnJvd3NlciBkaXJlY3RseSBmcm9tIHB1cHBldGVlciB2aWEgYHB1cHBldGVlci5sYXVuY2goKWBcbiAgICpcbiAgICogTm90ZTogVGhlIGJyb3dzZXIgd2lsbCBiZSBjbG9zZWQgYnkgdGhlIGxpYnJhcnkgYWZ0ZXIgdGhlIHNjcmFwZXIgZmluaXNoZXMgdW5sZXNzIGBza2lwQ2xvc2VCcm93c2VyYCBpcyBzZXQgdG8gdHJ1ZVxuICAgKi9cbiAgYnJvd3NlcjogQnJvd3NlcjtcblxuICAvKipcbiAgICogSWYgdHJ1ZSwgdGhlIGJyb3dzZXIgd2lsbCBub3QgYmUgY2xvc2VkIGJ5IHRoZSBsaWJyYXJ5IGFmdGVyIHRoZSBzY3JhcGVyIGZpbmlzaGVzXG4gICAqL1xuICBza2lwQ2xvc2VCcm93c2VyPzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIEV4dGVybmFsQnJvd3NlckNvbnRleHRPcHRpb25zIHtcbiAgLyoqXG4gICAqIEFuIGV4dGVybmFsbHkgbWFuYWdlZCBicm93c2VyIGNvbnRleHQuIFRoaXMgaXMgdXNlZnVsIHdoZW4geW91IHdhbnQgdG8gbWFuYWdlIHRoZSBicm93c2VyXG4gICAqL1xuICBicm93c2VyQ29udGV4dDogQnJvd3NlckNvbnRleHQ7XG59XG5cbmludGVyZmFjZSBEZWZhdWx0QnJvd3Nlck9wdGlvbnMge1xuICAvKipcbiAgICogc2hvd3MgdGhlIGJyb3dzZXIgd2hpbGUgc2NyYXBpbmcsIGdvb2QgZm9yIGRlYnVnZ2luZyAoZGVmYXVsdCBmYWxzZSlcbiAgICovXG4gIHNob3dCcm93c2VyPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogcHJvdmlkZSBhIHBhdGNoIHRvIGxvY2FsIGNocm9taXVtIHRvIGJlIHVzZWQgYnkgcHVwcGV0ZWVyLiBSZWxldmFudCB3aGVuIHVzaW5nXG4gICAqIGBpc3JhZWxpLWJhbmstc2NyYXBlcnMtY29yZWAgbGlicmFyeVxuICAgKi9cbiAgZXhlY3V0YWJsZVBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIGFkZGl0aW9uYWwgYXJndW1lbnRzIHRvIHBhc3MgdG8gdGhlIGJyb3dzZXIgaW5zdGFuY2UuIFRoZSBsaXN0IG9mIGZsYWdzIGNhbiBiZSBmb3VuZCBpblxuICAgKlxuICAgKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL01vemlsbGEvQ29tbWFuZF9MaW5lX09wdGlvbnNcbiAgICogaHR0cHM6Ly9wZXRlci5zaC9leHBlcmltZW50cy9jaHJvbWl1bS1jb21tYW5kLWxpbmUtc3dpdGNoZXMvXG4gICAqL1xuICBhcmdzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIE1heGltdW0gbmF2aWdhdGlvbiB0aW1lIGluIG1pbGxpc2Vjb25kcywgcGFzcyAwIHRvIGRpc2FibGUgdGltZW91dC5cbiAgICogQGRlZmF1bHQgMzAwMDBcbiAgICovXG4gIHRpbWVvdXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIGFkanVzdCB0aGUgYnJvd3NlciBpbnN0YW5jZSBiZWZvcmUgaXQgaXMgYmVpbmcgdXNlZFxuICAgKlxuICAgKiBAcGFyYW0gYnJvd3NlclxuICAgKi9cbiAgcHJlcGFyZUJyb3dzZXI/OiAoYnJvd3NlcjogQnJvd3NlcikgPT4gUHJvbWlzZTx2b2lkPjtcbn1cblxudHlwZSBTY3JhcGVyQnJvd3Nlck9wdGlvbnMgPSBFeHRlcm5hbEJyb3dzZXJPcHRpb25zIHwgRXh0ZXJuYWxCcm93c2VyQ29udGV4dE9wdGlvbnMgfCBEZWZhdWx0QnJvd3Nlck9wdGlvbnM7XG5cbmV4cG9ydCB0eXBlIFNjcmFwZXJPcHRpb25zID0gU2NyYXBlckJyb3dzZXJPcHRpb25zICYge1xuICAvKipcbiAgICogVGhlIGNvbXBhbnkgeW91IHdhbnQgdG8gc2NyYXBlXG4gICAqL1xuICBjb21wYW55SWQ6IENvbXBhbnlUeXBlcztcblxuICAvKipcbiAgICogaW5jbHVkZSBtb3JlIGRlYnVnIGluZm8gYWJvdXQgaW4gdGhlIG91dHB1dFxuICAgKi9cbiAgdmVyYm9zZT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHRoZSBkYXRlIHRvIGZldGNoIHRyYW5zYWN0aW9ucyBmcm9tIChjYW4ndCBiZSBiZWZvcmUgdGhlIG1pbmltdW0gYWxsb3dlZCB0aW1lIGRpZmZlcmVuY2UgZm9yIHRoZSBzY3JhcGVyKVxuICAgKi9cbiAgc3RhcnREYXRlOiBEYXRlO1xuXG4gIC8qKlxuICAgKiBzY3JhcGUgdHJhbnNhY3Rpb25zIHRvIGJlIHByb2Nlc3NlZCBYIG1vbnRocyBpbiB0aGUgZnV0dXJlXG4gICAqL1xuICBmdXR1cmVNb250aHNUb1NjcmFwZT86IG51bWJlcjtcblxuICAvKipcbiAgICogaWYgc2V0IHRvIHRydWUsIGFsbCBpbnN0YWxsbWVudCB0cmFuc2FjdGlvbnMgd2lsbCBiZSBjb21iaW5lIGludG8gdGhlIGZpcnN0IG9uZVxuICAgKi9cbiAgY29tYmluZUluc3RhbGxtZW50cz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIGFkanVzdCB0aGUgcGFnZSBpbnN0YW5jZSBiZWZvcmUgaXQgaXMgYmVpbmcgdXNlZC5cbiAgICpcbiAgICogQHBhcmFtIHBhZ2VcbiAgICovXG4gIHByZXBhcmVQYWdlPzogKHBhZ2U6IFBhZ2UpID0+IFByb21pc2U8dm9pZD47XG5cbiAgLyoqXG4gICAqIGlmIHNldCwgc3RvcmUgYSBzY3JlZW5zaG90IGlmIGZhaWxlZCB0byBzY3JhcGUuIFVzZWQgZm9yIGRlYnVnIHB1cnBvc2VzXG4gICAqL1xuICBzdG9yZUZhaWx1cmVTY3JlZW5TaG90UGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogaWYgc2V0LCB3aWxsIHNldCB0aGUgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgb2YgcHVwcGV0ZWVyJ3MgYHBhZ2Uuc2V0RGVmYXVsdFRpbWVvdXRgLlxuICAgKi9cbiAgZGVmYXVsdFRpbWVvdXQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIG1hbmlwdWxhdGlvbiBvZiBvdXRwdXQgZGF0YVxuICAgKi9cbiAgb3V0cHV0RGF0YT86IE91dHB1dERhdGFPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBQZXJmb3JtIGFkZGl0aW9uYWwgb3BlcmF0aW9uIGZvciBlYWNoIHRyYW5zYWN0aW9uIHRvIGdldCBtb3JlIGluZm9ybWF0aW9uIChMaWtlIGNhdGVnb3J5KSBhYm91dCBpdC5cbiAgICogUGxlYXNlIG5vdGU6IEl0IHdpbGwgdGFrZSBtb3JlIHRpbWUgdG8gZmluaXNoIHRoZSBwcm9jZXNzLlxuICAgKi9cbiAgYWRkaXRpb25hbFRyYW5zYWN0aW9uSW5mb3JtYXRpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBZGp1c3QgdGhlIHZpZXdwb3J0IHNpemUgb2YgdGhlIGJyb3dzZXIgcGFnZS5cbiAgICogSWYgbm90IHNldCwgdGhlIGRlZmF1bHQgdmlld3BvcnQgc2l6ZSBvZiAxMDI0eDc2OCB3aWxsIGJlIHVzZWQuXG4gICAqL1xuICB2aWV3cG9ydFNpemU/OiB7XG4gICAgd2lkdGg6IG51bWJlcjtcbiAgICBoZWlnaHQ6IG51bWJlcjtcbiAgfTtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiB0aW1lcyB0byByZXRyeSB0aGUgbmF2aWdhdGlvbiBpbiBjYXNlIG9mIGEgZmFpbHVyZSAoZGVmYXVsdCAwKVxuICAgKi9cbiAgbmF2aWdhdGlvblJldHJ5Q291bnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE9wdC1pbiBmZWF0dXJlcyBmb3IgdGhlIHNjcmFwZXJzLCBhbGxvd2luZyBzYWZlIHJvbGxvdXQgb2YgbmV3IGJyZWFraW5nIGNoYW5nZXMuXG4gICAqL1xuICBvcHRJbkZlYXR1cmVzPzogQXJyYXk8T3B0SW5GZWF0dXJlcz47XG59O1xuXG5leHBvcnQgaW50ZXJmYWNlIE91dHB1dERhdGFPcHRpb25zIHtcbiAgLyoqXG4gICAqIGlmIHRydWUsIHRoZSByZXN1bHQgd291bGRuJ3QgYmUgZmlsdGVyZWQgb3V0IGJ5IGRhdGUsIGFuZCB5b3Ugd2lsbCByZXR1cm4gdW5maWx0ZXJlZCBzY3JhcHBlZCBkYXRhLlxuICAgKi9cbiAgZW5hYmxlVHJhbnNhY3Rpb25zRmlsdGVyQnlEYXRlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY3JhcGVyU2NyYXBpbmdSZXN1bHQge1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBhY2NvdW50cz86IFRyYW5zYWN0aW9uc0FjY291bnRbXTtcbiAgZnV0dXJlRGViaXRzPzogRnV0dXJlRGViaXRbXTtcbiAgZXJyb3JUeXBlPzogU2NyYXBlckVycm9yVHlwZXM7XG4gIGVycm9yTWVzc2FnZT86IHN0cmluZzsgLy8gb25seSBvbiBzdWNjZXNzPWZhbHNlXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NyYXBlcjxUQ3JlZGVudGlhbHMgZXh0ZW5kcyBTY3JhcGVyQ3JlZGVudGlhbHM+IHtcbiAgc2NyYXBlKGNyZWRlbnRpYWxzOiBUQ3JlZGVudGlhbHMpOiBQcm9taXNlPFNjcmFwZXJTY3JhcGluZ1Jlc3VsdD47XG4gIG9uUHJvZ3Jlc3MoZnVuYzogKGNvbXBhbnlJZDogQ29tcGFueVR5cGVzLCBwYXlsb2FkOiB7IHR5cGU6IFNjcmFwZXJQcm9ncmVzc1R5cGVzIH0pID0+IHZvaWQpOiB2b2lkO1xuICB0cmlnZ2VyVHdvRmFjdG9yQXV0aChwaG9uZU51bWJlcjogc3RyaW5nKTogUHJvbWlzZTxTY3JhcGVyVHdvRmFjdG9yQXV0aFRyaWdnZXJSZXN1bHQ+O1xuICBnZXRMb25nVGVybVR3b0ZhY3RvclRva2VuKG90cENvZGU6IHN0cmluZyk6IFByb21pc2U8U2NyYXBlckdldExvbmdUZXJtVHdvRmFjdG9yVG9rZW5SZXN1bHQ+O1xufVxuXG5leHBvcnQgdHlwZSBTY3JhcGVyVHdvRmFjdG9yQXV0aFRyaWdnZXJSZXN1bHQgPVxuICB8IEVycm9yUmVzdWx0XG4gIHwge1xuICAgICAgc3VjY2VzczogdHJ1ZTtcbiAgICB9O1xuXG5leHBvcnQgdHlwZSBTY3JhcGVyR2V0TG9uZ1Rlcm1Ud29GYWN0b3JUb2tlblJlc3VsdCA9XG4gIHwgRXJyb3JSZXN1bHRcbiAgfCB7XG4gICAgICBzdWNjZXNzOiB0cnVlO1xuICAgICAgbG9uZ1Rlcm1Ud29GYWN0b3JBdXRoVG9rZW46IHN0cmluZztcbiAgICB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIFNjcmFwZXJMb2dpblJlc3VsdCB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIGVycm9yVHlwZT86IFNjcmFwZXJFcnJvclR5cGVzO1xuICBlcnJvck1lc3NhZ2U/OiBzdHJpbmc7IC8vIG9ubHkgb24gc3VjY2Vzcz1mYWxzZVxuICBwZXJzaXN0ZW50T3RwVG9rZW4/OiBzdHJpbmc7XG59XG4iXSwibWFwcGluZ3MiOiIiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -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",
3
- "version": "6.3.2",
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": {