israeli-bank-scrapers 4.2.2 → 4.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/README.md +14 -0
  2. package/lib/assertNever.js +1 -2
  3. package/lib/constants.js +1 -1
  4. package/lib/definitions.d.ts +5 -0
  5. package/lib/definitions.js +7 -4
  6. package/lib/helpers/dates.js +1 -7
  7. package/lib/helpers/debug.js +1 -4
  8. package/lib/helpers/elements-interactions.js +5 -27
  9. package/lib/helpers/fetch.js +1 -21
  10. package/lib/helpers/navigation.js +1 -9
  11. package/lib/helpers/storage.js +1 -3
  12. package/lib/helpers/transactions.js +1 -17
  13. package/lib/helpers/waiting.js +4 -12
  14. package/lib/index.js +2 -12
  15. package/lib/scrapers/amex.js +1 -7
  16. package/lib/scrapers/amex.test.js +1 -14
  17. package/lib/scrapers/base-beinleumi-group.js +4 -67
  18. package/lib/scrapers/base-isracard-amex.js +1 -75
  19. package/lib/scrapers/base-scraper-with-browser.js +14 -82
  20. package/lib/scrapers/base-scraper-with-browser.test.js +13 -23
  21. package/lib/scrapers/base-scraper.js +13 -36
  22. package/lib/scrapers/behatsdaa.js +5 -26
  23. package/lib/scrapers/behatsdaa.test.js +1 -10
  24. package/lib/scrapers/beinleumi.js +1 -11
  25. package/lib/scrapers/beinleumi.test.js +1 -14
  26. package/lib/scrapers/beyahad-bishvilha.js +1 -35
  27. package/lib/scrapers/beyahad-bishvilha.test.js +1 -14
  28. package/lib/scrapers/discount.js +1 -31
  29. package/lib/scrapers/discount.test.js +1 -14
  30. package/lib/scrapers/errors.js +1 -5
  31. package/lib/scrapers/factory.js +4 -39
  32. package/lib/scrapers/factory.test.js +2 -4
  33. package/lib/scrapers/hapoalim.js +4 -50
  34. package/lib/scrapers/hapoalim.test.js +1 -14
  35. package/lib/scrapers/interface.js +1 -1
  36. package/lib/scrapers/isracard.js +1 -7
  37. package/lib/scrapers/isracard.test.js +1 -14
  38. package/lib/scrapers/leumi.js +12 -44
  39. package/lib/scrapers/leumi.test.js +1 -14
  40. package/lib/scrapers/massad.js +1 -11
  41. package/lib/scrapers/max.d.ts +20 -0
  42. package/lib/scrapers/max.js +76 -111
  43. package/lib/scrapers/max.test.js +21 -16
  44. package/lib/scrapers/mercantile.d.ts +20 -0
  45. package/lib/scrapers/mercantile.js +21 -0
  46. package/lib/scrapers/mercantile.test.d.ts +1 -0
  47. package/lib/scrapers/mercantile.test.js +48 -0
  48. package/lib/scrapers/mizrahi.js +14 -40
  49. package/lib/scrapers/mizrahi.test.js +1 -15
  50. package/lib/scrapers/one-zero-queries.js +1 -1
  51. package/lib/scrapers/one-zero.js +2 -54
  52. package/lib/scrapers/one-zero.test.js +1 -14
  53. package/lib/scrapers/otsar-hahayal.js +9 -47
  54. package/lib/scrapers/otsar-hahayal.test.js +1 -14
  55. package/lib/scrapers/union-bank.js +2 -60
  56. package/lib/scrapers/union-bank.test.js +1 -14
  57. package/lib/scrapers/visa-cal.js +3 -55
  58. package/lib/scrapers/visa-cal.test.js +3 -16
  59. package/lib/scrapers/yahav.js +25 -52
  60. package/lib/scrapers/yahav.test.js +1 -14
  61. package/lib/transactions.js +1 -4
  62. package/package.json +2 -7
@@ -1,50 +1,34 @@
1
1
  "use strict";
2
2
 
3
3
  require("core-js/modules/es.symbol.description");
4
-
5
4
  require("core-js/modules/es.array.iterator");
6
-
7
5
  require("core-js/modules/es.promise");
8
-
9
6
  require("core-js/modules/es.string.replace");
10
-
11
7
  Object.defineProperty(exports, "__esModule", {
12
8
  value: true
13
9
  });
14
10
  exports.default = void 0;
15
-
16
11
  var _moment = _interopRequireDefault(require("moment"));
17
-
18
12
  var _baseScraperWithBrowser = require("./base-scraper-with-browser");
19
-
20
13
  var _navigation = require("../helpers/navigation");
21
-
22
14
  var _elementsInteractions = require("../helpers/elements-interactions");
23
-
24
15
  var _constants = require("../constants");
25
-
26
16
  var _transactions = require("../transactions");
27
-
28
17
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
29
-
30
18
  const BASE_URL = 'https://online.bankotsar.co.il';
31
19
  const LONG_DATE_FORMAT = 'DD/MM/YYYY';
32
20
  const DATE_FORMAT = 'DD/MM/YY';
33
-
34
21
  function getPossibleLoginResults(page) {
35
22
  const urls = {};
36
23
  urls[_baseScraperWithBrowser.LoginResults.Success] = [`${BASE_URL}/wps/myportal/FibiMenu/Online`];
37
- urls[_baseScraperWithBrowser.LoginResults.InvalidPassword] = [() => (0, _elementsInteractions.elementPresentOnPage)(page, '#validationMsg')]; // TODO: support change password
38
-
24
+ urls[_baseScraperWithBrowser.LoginResults.InvalidPassword] = [() => (0, _elementsInteractions.elementPresentOnPage)(page, '#validationMsg')];
25
+ // TODO: support change password
39
26
  /* urls[LOGIN_RESULT.CHANGE_PASSWORD] = [``]; */
40
-
41
27
  return urls;
42
28
  }
43
-
44
29
  function getTransactionsUrl() {
45
30
  return `${BASE_URL}/wps/myportal/FibiMenu/Online/OnAccountMngment/OnBalanceTrans/PrivateAccountFlow`;
46
31
  }
47
-
48
32
  function createLoginFields(credentials) {
49
33
  return [{
50
34
  selector: '#username',
@@ -54,12 +38,10 @@ function createLoginFields(credentials) {
54
38
  value: credentials.password
55
39
  }];
56
40
  }
57
-
58
41
  function getAmountData(amountStr, hasCurrency = false) {
59
42
  const amountStrCln = amountStr.replace(',', '');
60
43
  let currency = null;
61
44
  let amount = null;
62
-
63
45
  if (!hasCurrency) {
64
46
  amount = parseFloat(amountStrCln);
65
47
  currency = _constants.SHEKEL_CURRENCY;
@@ -71,21 +53,17 @@ function getAmountData(amountStr, hasCurrency = false) {
71
53
  amount = parseFloat(parts[0]);
72
54
  [, currency] = parts;
73
55
  }
74
-
75
56
  return {
76
57
  amount,
77
58
  currency
78
59
  };
79
60
  }
80
-
81
61
  function convertTransactions(txns) {
82
62
  return txns.map(txn => {
83
63
  const dateFormat = txn.date.length === 8 ? DATE_FORMAT : txn.date.length === 10 ? LONG_DATE_FORMAT : null;
84
-
85
64
  if (!dateFormat) {
86
65
  throw new Error('invalid date format');
87
66
  }
88
-
89
67
  const txnDate = (0, _moment.default)(txn.date, dateFormat).toISOString();
90
68
  const credit = getAmountData(txn.credit || '').amount;
91
69
  const debit = getAmountData(txn.debit || '').amount;
@@ -105,7 +83,6 @@ function convertTransactions(txns) {
105
83
  return result;
106
84
  });
107
85
  }
108
-
109
86
  async function parseTransactionPage(page) {
110
87
  const tdsValues = await (0, _elementsInteractions.pageEvalAll)(page, '#dataTable077 tbody tr', [], trs => {
111
88
  return trs.map(el => ({
@@ -120,13 +97,12 @@ async function parseTransactionPage(page) {
120
97
  });
121
98
  return tdsValues;
122
99
  }
123
-
124
100
  async function getAccountSummary(page) {
125
101
  const balanceElm = await page.$('.current_balance');
126
102
  const balanceInnerTextElm = await balanceElm.getProperty('innerText');
127
103
  const balanceText = await balanceInnerTextElm.jsonValue();
128
- const balanceValue = getAmountData(balanceText, true); // TODO: Find the credit field in bank website (could see it in my account)
129
-
104
+ const balanceValue = getAmountData(balanceText, true);
105
+ // TODO: Find the credit field in bank website (could see it in my account)
130
106
  return {
131
107
  balance: Number.isNaN(balanceValue.amount) ? 0 : balanceValue.amount,
132
108
  creditLimit: 0.0,
@@ -134,19 +110,18 @@ async function getAccountSummary(page) {
134
110
  balanceCurrency: balanceValue.currency
135
111
  };
136
112
  }
137
-
138
113
  async function fetchTransactionsForAccount(page, startDate) {
139
114
  const summary = await getAccountSummary(page);
140
- await (0, _elementsInteractions.waitUntilElementFound)(page, 'input#fromDate'); // Get account number
141
-
115
+ await (0, _elementsInteractions.waitUntilElementFound)(page, 'input#fromDate');
116
+ // Get account number
142
117
  const branchNum = await page.$eval('.branch_num', span => {
143
118
  return span.innerText;
144
119
  });
145
120
  const accountNmbr = await page.$eval('.acc_num', span => {
146
121
  return span.innerText;
147
122
  });
148
- const accountNumber = `14-${branchNum}-${accountNmbr}`; // Search for relavant transaction from startDate
149
-
123
+ const accountNumber = `14-${branchNum}-${accountNmbr}`;
124
+ // Search for relavant transaction from startDate
150
125
  await (0, _elementsInteractions.clickButton)(page, '#tabHeader4');
151
126
  await (0, _elementsInteractions.fillInput)(page, 'input#fromDate', startDate.format('DD/MM/YYYY'));
152
127
  await (0, _elementsInteractions.clickButton)(page, '#fibi_tab_dates .fibi_btn:nth-child(2)');
@@ -155,7 +130,6 @@ async function fetchTransactionsForAccount(page, startDate) {
155
130
  let hasNextPage = true;
156
131
  let txns = [];
157
132
  const noTransactionElm = await page.$('#NO_DATA077');
158
-
159
133
  if (noTransactionElm == null) {
160
134
  // Scape transactions (this maybe spanned on multiple pages)
161
135
  while (hasNextPage) {
@@ -163,11 +137,9 @@ async function fetchTransactionsForAccount(page, startDate) {
163
137
  txns = txns.concat(pageTxns);
164
138
  const button = await page.$('#Npage');
165
139
  hasNextPage = false;
166
-
167
140
  if (button != null) {
168
141
  hasNextPage = true;
169
142
  }
170
-
171
143
  if (hasNextPage) {
172
144
  await (0, _elementsInteractions.clickButton)(page, '#Npage');
173
145
  await (0, _navigation.waitForNavigation)(page);
@@ -175,25 +147,20 @@ async function fetchTransactionsForAccount(page, startDate) {
175
147
  }
176
148
  }
177
149
  }
178
-
179
150
  return {
180
151
  accountNumber,
181
152
  summary,
182
153
  txns: convertTransactions(txns.slice(1)) // Remove first line which is "opening balance"
183
-
184
154
  };
185
155
  }
186
-
187
156
  async function fetchTransactions(page, startDate) {
188
157
  // TODO need to extend to support multiple accounts and foreign accounts
189
158
  return [await fetchTransactionsForAccount(page, startDate)];
190
159
  }
191
-
192
160
  async function waitForPostLogin(page) {
193
161
  // TODO check for condition to provide new password
194
162
  return Promise.race([(0, _elementsInteractions.waitUntilElementFound)(page, 'div.lotusFrame', true), (0, _elementsInteractions.waitUntilElementFound)(page, '#validationMsg')]);
195
163
  }
196
-
197
164
  class OtsarHahayalScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
198
165
  getLoginOptions(credentials) {
199
166
  return {
@@ -207,13 +174,10 @@ class OtsarHahayalScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser
207
174
  possibleResults: getPossibleLoginResults(this.page)
208
175
  };
209
176
  }
210
-
211
177
  async fetchData() {
212
178
  const defaultStartMoment = (0, _moment.default)().subtract(1, 'years').add(1, 'day');
213
179
  const startDate = this.options.startDate || defaultStartMoment.toDate();
214
-
215
180
  const startMoment = _moment.default.max(defaultStartMoment, (0, _moment.default)(startDate));
216
-
217
181
  const url = getTransactionsUrl();
218
182
  await this.navigateTo(url);
219
183
  const accounts = await fetchTransactions(this.page, startMoment);
@@ -222,9 +186,7 @@ class OtsarHahayalScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser
222
186
  accounts
223
187
  };
224
188
  }
225
-
226
189
  }
227
-
228
190
  var _default = OtsarHahayalScraper;
229
191
  exports.default = _default;
230
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9vdHNhci1oYWhheWFsLnRzIl0sIm5hbWVzIjpbIkJBU0VfVVJMIiwiTE9OR19EQVRFX0ZPUk1BVCIsIkRBVEVfRk9STUFUIiwiZ2V0UG9zc2libGVMb2dpblJlc3VsdHMiLCJwYWdlIiwidXJscyIsIkxvZ2luUmVzdWx0cyIsIlN1Y2Nlc3MiLCJJbnZhbGlkUGFzc3dvcmQiLCJnZXRUcmFuc2FjdGlvbnNVcmwiLCJjcmVhdGVMb2dpbkZpZWxkcyIsImNyZWRlbnRpYWxzIiwic2VsZWN0b3IiLCJ2YWx1ZSIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJnZXRBbW91bnREYXRhIiwiYW1vdW50U3RyIiwiaGFzQ3VycmVuY3kiLCJhbW91bnRTdHJDbG4iLCJyZXBsYWNlIiwiY3VycmVuY3kiLCJhbW91bnQiLCJwYXJzZUZsb2F0IiwiU0hFS0VMX0NVUlJFTkNZIiwiaW5jbHVkZXMiLCJTSEVLRUxfQ1VSUkVOQ1lfU1lNQk9MIiwicGFydHMiLCJzcGxpdCIsImNvbnZlcnRUcmFuc2FjdGlvbnMiLCJ0eG5zIiwibWFwIiwidHhuIiwiZGF0ZUZvcm1hdCIsImRhdGUiLCJsZW5ndGgiLCJFcnJvciIsInR4bkRhdGUiLCJ0b0lTT1N0cmluZyIsImNyZWRpdCIsImRlYml0IiwiTnVtYmVyIiwiaXNOYU4iLCJyZXN1bHQiLCJ0eXBlIiwiVHJhbnNhY3Rpb25UeXBlcyIsIk5vcm1hbCIsInN0YXR1cyIsIlRyYW5zYWN0aW9uU3RhdHVzZXMiLCJDb21wbGV0ZWQiLCJpZGVudGlmaWVyIiwicmVmZXJlbmNlIiwicGFyc2VJbnQiLCJ1bmRlZmluZWQiLCJwcm9jZXNzZWREYXRlIiwib3JpZ2luYWxBbW91bnQiLCJvcmlnaW5hbEN1cnJlbmN5IiwiY2hhcmdlZEFtb3VudCIsImRlc2NyaXB0aW9uIiwibWVtbyIsInBhcnNlVHJhbnNhY3Rpb25QYWdlIiwidGRzVmFsdWVzIiwidHJzIiwiZWwiLCJxdWVyeVNlbGVjdG9yIiwiaW5uZXJUZXh0IiwiYmFsYW5jZSIsImdldEFjY291bnRTdW1tYXJ5IiwiYmFsYW5jZUVsbSIsIiQiLCJiYWxhbmNlSW5uZXJUZXh0RWxtIiwiZ2V0UHJvcGVydHkiLCJiYWxhbmNlVGV4dCIsImpzb25WYWx1ZSIsImJhbGFuY2VWYWx1ZSIsImNyZWRpdExpbWl0IiwiY3JlZGl0VXRpbGl6YXRpb24iLCJiYWxhbmNlQ3VycmVuY3kiLCJmZXRjaFRyYW5zYWN0aW9uc0ZvckFjY291bnQiLCJzdGFydERhdGUiLCJzdW1tYXJ5IiwiYnJhbmNoTnVtIiwiJGV2YWwiLCJzcGFuIiwiYWNjb3VudE5tYnIiLCJhY2NvdW50TnVtYmVyIiwiZm9ybWF0IiwiaGFzTmV4dFBhZ2UiLCJub1RyYW5zYWN0aW9uRWxtIiwicGFnZVR4bnMiLCJjb25jYXQiLCJidXR0b24iLCJzbGljZSIsImZldGNoVHJhbnNhY3Rpb25zIiwid2FpdEZvclBvc3RMb2dpbiIsIlByb21pc2UiLCJyYWNlIiwiT3RzYXJIYWhheWFsU2NyYXBlciIsIkJhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJnZXRMb2dpbk9wdGlvbnMiLCJsb2dpblVybCIsImZpZWxkcyIsInN1Ym1pdEJ1dHRvblNlbGVjdG9yIiwid2FpdEZvclRpbWVvdXQiLCJwb3N0QWN0aW9uIiwicG9zc2libGVSZXN1bHRzIiwiZmV0Y2hEYXRhIiwiZGVmYXVsdFN0YXJ0TW9tZW50Iiwic3VidHJhY3QiLCJhZGQiLCJvcHRpb25zIiwidG9EYXRlIiwic3RhcnRNb21lbnQiLCJtb21lbnQiLCJtYXgiLCJ1cmwiLCJuYXZpZ2F0ZVRvIiwiYWNjb3VudHMiLCJzdWNjZXNzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFPQTs7QUFDQTs7OztBQUVBLE1BQU1BLFFBQVEsR0FBRyxnQ0FBakI7QUFDQSxNQUFNQyxnQkFBZ0IsR0FBRyxZQUF6QjtBQUNBLE1BQU1DLFdBQVcsR0FBRyxVQUFwQjs7QUFhQSxTQUFTQyx1QkFBVCxDQUFpQ0MsSUFBakMsRUFBNkM7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Z2UgfSBmcm9tICdwdXBwZXRlZXInO1xuaW1wb3J0IHsgQmFzZVNjcmFwZXJXaXRoQnJvd3NlciwgTG9naW5SZXN1bHRzLCBQb3NzaWJsZUxvZ2luUmVzdWx0cyB9IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQgeyB3YWl0Rm9yTmF2aWdhdGlvbiB9IGZyb20gJy4uL2hlbHBlcnMvbmF2aWdhdGlvbic7XG5pbXBvcnQge1xuICBmaWxsSW5wdXQsXG4gIGNsaWNrQnV0dG9uLFxuICB3YWl0VW50aWxFbGVtZW50Rm91bmQsXG4gIHBhZ2VFdmFsQWxsLFxuICBlbGVtZW50UHJlc2VudE9uUGFnZSxcbn0gZnJvbSAnLi4vaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMnO1xuaW1wb3J0IHsgU0hFS0VMX0NVUlJFTkNZLCBTSEVLRUxfQ1VSUkVOQ1lfU1lNQk9MIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvblN0YXR1c2VzLCBUcmFuc2FjdGlvblR5cGVzIH0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcblxuY29uc3QgQkFTRV9VUkwgPSAnaHR0cHM6Ly9vbmxpbmUuYmFua290c2FyLmNvLmlsJztcbmNvbnN0IExPTkdfREFURV9GT1JNQVQgPSAnREQvTU0vWVlZWSc7XG5jb25zdCBEQVRFX0ZPUk1BVCA9ICdERC9NTS9ZWSc7XG5cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb24ge1xuICBiYWxhbmNlPzogc3RyaW5nO1xuICBkZWJpdD86IHN0cmluZztcbiAgY3JlZGl0Pzogc3RyaW5nO1xuICBtZW1vPzogc3RyaW5nO1xuICBzdGF0dXM/OiBzdHJpbmc7XG4gIHJlZmVyZW5jZT86IHN0cmluZztcbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGRhdGU6IHN0cmluZztcbn1cblxuZnVuY3Rpb24gZ2V0UG9zc2libGVMb2dpblJlc3VsdHMocGFnZTogUGFnZSkge1xuICBjb25zdCB1cmxzOiBQb3NzaWJsZUxvZ2luUmVzdWx0cyA9IHt9O1xuICB1cmxzW0xvZ2luUmVzdWx0cy5TdWNjZXNzXSA9IFtgJHtCQVNFX1VSTH0vd3BzL215cG9ydGFsL0ZpYmlNZW51L09ubGluZWBdO1xuICB1cmxzW0xvZ2luUmVzdWx0cy5JbnZhbGlkUGFzc3dvcmRdID0gWygpID0+IGVsZW1lbnRQcmVzZW50T25QYWdlKHBhZ2UsICcjdmFsaWRhdGlvbk1zZycpXTtcbiAgLy8gVE9ETzogc3VwcG9ydCBjaGFuZ2UgcGFzc3dvcmRcbiAgLyogdXJsc1tMT0dJTl9SRVNVTFQuQ0hBTkdFX1BBU1NXT1JEXSA9IFtgYF07ICovXG4gIHJldHVybiB1cmxzO1xufVxuXG5mdW5jdGlvbiBnZXRUcmFuc2FjdGlvbnNVcmwoKSB7XG4gIHJldHVybiBgJHtCQVNFX1VSTH0vd3BzL215cG9ydGFsL0ZpYmlNZW51L09ubGluZS9PbkFjY291bnRNbmdtZW50L09uQmFsYW5jZVRyYW5zL1ByaXZhdGVBY2NvdW50Rmxvd2A7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICByZXR1cm4gW1xuICAgIHsgc2VsZWN0b3I6ICcjdXNlcm5hbWUnLCB2YWx1ZTogY3JlZGVudGlhbHMudXNlcm5hbWUgfSxcbiAgICB7IHNlbGVjdG9yOiAnI3Bhc3N3b3JkJywgdmFsdWU6IGNyZWRlbnRpYWxzLnBhc3N3b3JkIH0sXG4gIF07XG59XG5cbmZ1bmN0aW9uIGdldEFtb3VudERhdGEoYW1vdW50U3RyOiBzdHJpbmcsIGhhc0N1cnJlbmN5ID0gZmFsc2UpIHtcbiAgY29uc3QgYW1vdW50U3RyQ2xuID0gYW1vdW50U3RyLnJlcGxhY2UoJywnLCAnJyk7XG4gIGxldCBjdXJyZW5jeTogc3RyaW5nIHwgbnVsbCA9IG51bGw7XG4gIGxldCBhbW91bnQ6IG51bWJlciB8IG51bGwgPSBudWxsO1xuICBpZiAoIWhhc0N1cnJlbmN5KSB7XG4gICAgYW1vdW50ID0gcGFyc2VGbG9hdChhbW91bnRTdHJDbG4pO1xuICAgIGN1cnJlbmN5ID0gU0hFS0VMX0NVUlJFTkNZO1xuICB9IGVsc2UgaWYgKGFtb3VudFN0ckNsbi5pbmNsdWRlcyhTSEVLRUxfQ1VSUkVOQ1lfU1lNQk9MKSkge1xuICAgIGFtb3VudCA9IHBhcnNlRmxvYXQoYW1vdW50U3RyQ2xuLnJlcGxhY2UoU0hFS0VMX0NVUlJFTkNZX1NZTUJPTCwgJycpKTtcbiAgICBjdXJyZW5jeSA9IFNIRUtFTF9DVVJSRU5DWTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBwYXJ0cyA9IGFtb3VudFN0ckNsbi5zcGxpdCgnICcpO1xuICAgIGFtb3VudCA9IHBhcnNlRmxvYXQocGFydHNbMF0pO1xuICAgIFssIGN1cnJlbmN5XSA9IHBhcnRzO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhbW91bnQsXG4gICAgY3VycmVuY3ksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRUcmFuc2FjdGlvbnModHhuczogU2NyYXBlZFRyYW5zYWN0aW9uW10pOiBUcmFuc2FjdGlvbltdIHtcbiAgcmV0dXJuIHR4bnMubWFwKCh0eG4pID0+IHtcbiAgICBjb25zdCBkYXRlRm9ybWF0ID1cbiAgICAgICAgdHhuLmRhdGUubGVuZ3RoID09PSA4ID9cbiAgICAgICAgICBEQVRFX0ZPUk1BVCA6XG4gICAgICAgICAgdHhuLmRhdGUubGVuZ3RoID09PSAxMCA/XG4gICAgICAgICAgICBMT05HX0RBVEVfRk9STUFUIDpcbiAgICAgICAgICAgIG51bGw7XG4gICAgaWYgKCFkYXRlRm9ybWF0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFsaWQgZGF0ZSBmb3JtYXQnKTtcbiAgICB9XG4gICAgY29uc3QgdHhuRGF0ZSA9IG1vbWVudCh0eG4uZGF0ZSwgZGF0ZUZvcm1hdCkudG9JU09TdHJpbmcoKTtcbiAgICBjb25zdCBjcmVkaXQgPSBnZXRBbW91bnREYXRhKHR4bi5jcmVkaXQgfHwgJycpLmFtb3VudDtcbiAgICBjb25zdCBkZWJpdCA9IGdldEFtb3VudERhdGEodHhuLmRlYml0IHx8ICcnKS5hbW91bnQ7XG4gICAgY29uc3QgYW1vdW50ID0gKE51bWJlci5pc05hTihjcmVkaXQpID8gMCA6IGNyZWRpdCkgLSAoTnVtYmVyLmlzTmFOKGRlYml0KSA/IDAgOiBkZWJpdCk7XG5cbiAgICBjb25zdCByZXN1bHQ6IFRyYW5zYWN0aW9uID0ge1xuICAgICAgdHlwZTogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWwsXG4gICAgICBzdGF0dXM6IFRyYW5zYWN0aW9uU3RhdHVzZXMuQ29tcGxldGVkLFxuICAgICAgaWRlbnRpZmllcjogdHhuLnJlZmVyZW5jZSA/IHBhcnNlSW50KHR4bi5yZWZlcmVuY2UsIDEwKSA6IHVuZGVmaW5lZCxcbiAgICAgIGRhdGU6IHR4bkRhdGUsXG4gICAgICBwcm9jZXNzZWREYXRlOiB0eG5EYXRlLFxuICAgICAgb3JpZ2luYWxBbW91bnQ6IGFtb3VudCxcbiAgICAgIG9yaWdpbmFsQ3VycmVuY3k6IFNIRUtFTF9DVVJSRU5DWSxcbiAgICAgIGNoYXJnZWRBbW91bnQ6IGFtb3VudCxcbiAgICAgIGRlc2NyaXB0aW9uOiB0eG4uZGVzY3JpcHRpb24gfHwgJycsXG4gICAgICBtZW1vOiAnJyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHBhcnNlVHJhbnNhY3Rpb25QYWdlKHBhZ2U6IFBhZ2UpOiBQcm9taXNlPFNjcmFwZWRUcmFuc2FjdGlvbltdPiB7XG4gIGNvbnN0IHRkc1ZhbHVlcyA9IGF3YWl0IHBhZ2VFdmFsQWxsKHBhZ2UsICcjZGF0YVRhYmxlMDc3IHRib2R5IHRyJywgW10sICh0cnMpID0+IHtcbiAgICByZXR1cm4gKHRycykubWFwKChlbCkgPT4gKHtcbiAgICAgIGRhdGU6IChlbC5xdWVyeVNlbGVjdG9yKCcuZGF0ZScpIGFzIEhUTUxFbGVtZW50KS5pbm5lclRleHQsXG4gICAgICAvLyByZWZlcmVuY2UgYW5kIGRlc2NyaXB0aW9uIGhhdmUgdmljZS12ZXJzYSBjbGFzcyBuYW1lXG4gICAgICBkZXNjcmlwdGlvbjogKGVsLnF1ZXJ5U2VsZWN0b3IoJy5yZWZlcmVuY2UnKSBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0LFxuICAgICAgcmVmZXJlbmNlOiAoZWwucXVlcnlTZWxlY3RvcignLmRldGFpbHMnKSBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0LFxuICAgICAgY3JlZGl0OiAoZWwucXVlcnlTZWxlY3RvcignLmNyZWRpdCcpIGFzIEhUTUxFbGVtZW50KS5pbm5lclRleHQsXG4gICAgICBkZWJpdDogKGVsLnF1ZXJ5U2VsZWN0b3IoJy5kZWJpdCcpIGFzIEhUTUxFbGVtZW50KS5pbm5lclRleHQsXG4gICAgICBiYWxhbmNlOiAoZWwucXVlcnlTZWxlY3RvcignLmJhbGFuY2UnKSBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0LFxuICAgIH0pKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHRkc1ZhbHVlcztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QWNjb3VudFN1bW1hcnkocGFnZTogUGFnZSkge1xuICBjb25zdCBiYWxhbmNlRWxtID0gYXdhaXQgcGFnZS4kKCcuY3VycmVudF9iYWxhbmNlJyk7XG4gIGNvbnN0IGJhbGFuY2VJbm5lclRleHRFbG0gPSBhd2FpdCBiYWxhbmNlRWxtIS5nZXRQcm9wZXJ0eSgnaW5uZXJUZXh0Jyk7XG4gIGNvbnN0IGJhbGFuY2VUZXh0ID0gYXdhaXQgYmFsYW5jZUlubmVyVGV4dEVsbS5qc29uVmFsdWUoKTtcbiAgY29uc3QgYmFsYW5jZVZhbHVlID0gZ2V0QW1vdW50RGF0YShiYWxhbmNlVGV4dCBhcyBzdHJpbmcsIHRydWUpO1xuICAvLyBUT0RPOiBGaW5kIHRoZSBjcmVkaXQgZmllbGQgaW4gYmFuayB3ZWJzaXRlIChjb3VsZCBzZWUgaXQgaW4gbXkgYWNjb3VudClcbiAgcmV0dXJuIHtcbiAgICBiYWxhbmNlOiBOdW1iZXIuaXNOYU4oYmFsYW5jZVZhbHVlLmFtb3VudCkgPyAwIDogYmFsYW5jZVZhbHVlLmFtb3VudCxcbiAgICBjcmVkaXRMaW1pdDogMC4wLFxuICAgIGNyZWRpdFV0aWxpemF0aW9uOiAwLjAsXG4gICAgYmFsYW5jZUN1cnJlbmN5OiBiYWxhbmNlVmFsdWUuY3VycmVuY3ksXG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoVHJhbnNhY3Rpb25zRm9yQWNjb3VudChwYWdlOiBQYWdlLCBzdGFydERhdGU6IE1vbWVudCkge1xuICBjb25zdCBzdW1tYXJ5ID0gYXdhaXQgZ2V0QWNjb3VudFN1bW1hcnkocGFnZSk7XG4gIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCAnaW5wdXQjZnJvbURhdGUnKTtcbiAgLy8gR2V0IGFjY291bnQgbnVtYmVyXG4gIGNvbnN0IGJyYW5jaE51bSA9IGF3YWl0IHBhZ2UuJGV2YWwoJy5icmFuY2hfbnVtJywgKHNwYW4pID0+IHtcbiAgICByZXR1cm4gKHNwYW4gYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dDtcbiAgfSk7XG5cbiAgY29uc3QgYWNjb3VudE5tYnIgPSBhd2FpdCBwYWdlLiRldmFsKCcuYWNjX251bScsIChzcGFuKSA9PiB7XG4gICAgcmV0dXJuIChzcGFuIGFzIEhUTUxFbGVtZW50KS5pbm5lclRleHQ7XG4gIH0pO1xuICBjb25zdCBhY2NvdW50TnVtYmVyID0gYDE0LSR7YnJhbmNoTnVtfS0ke2FjY291bnRObWJyfWA7XG4gIC8vIFNlYXJjaCBmb3IgcmVsYXZhbnQgdHJhbnNhY3Rpb24gZnJvbSBzdGFydERhdGVcbiAgYXdhaXQgY2xpY2tCdXR0b24ocGFnZSwgJyN0YWJIZWFkZXI0Jyk7XG4gIGF3YWl0IGZpbGxJbnB1dChcbiAgICBwYWdlLFxuICAgICdpbnB1dCNmcm9tRGF0ZScsXG4gICAgc3RhcnREYXRlLmZvcm1hdCgnREQvTU0vWVlZWScpLFxuICApO1xuXG4gIGF3YWl0IGNsaWNrQnV0dG9uKHBhZ2UsICcjZmliaV90YWJfZGF0ZXMgLmZpYmlfYnRuOm50aC1jaGlsZCgyKScpO1xuICBhd2FpdCB3YWl0Rm9yTmF2aWdhdGlvbihwYWdlKTtcbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICd0YWJsZSNkYXRhVGFibGUwNzcsICNOT19EQVRBMDc3Jyk7XG4gIGxldCBoYXNOZXh0UGFnZSA9IHRydWU7XG4gIGxldCB0eG5zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXSA9IFtdO1xuXG4gIGNvbnN0IG5vVHJhbnNhY3Rpb25FbG0gPSBhd2FpdCBwYWdlLiQoJyNOT19EQVRBMDc3Jyk7XG4gIGlmIChub1RyYW5zYWN0aW9uRWxtID09IG51bGwpIHtcbiAgICAvLyBTY2FwZSB0cmFuc2FjdGlvbnMgKHRoaXMgbWF5YmUgc3Bhbm5lZCBvbiBtdWx0aXBsZSBwYWdlcylcbiAgICB3aGlsZSAoaGFzTmV4dFBhZ2UpIHtcbiAgICAgIGNvbnN0IHBhZ2VUeG5zID0gYXdhaXQgcGFyc2VUcmFuc2FjdGlvblBhZ2UocGFnZSk7XG4gICAgICB0eG5zID0gdHhucy5jb25jYXQocGFnZVR4bnMpO1xuICAgICAgY29uc3QgYnV0dG9uID0gYXdhaXQgcGFnZS4kKCcjTnBhZ2UnKTtcbiAgICAgIGhhc05leHRQYWdlID0gZmFsc2U7XG4gICAgICBpZiAoYnV0dG9uICE9IG51bGwpIHtcbiAgICAgICAgaGFzTmV4dFBhZ2UgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKGhhc05leHRQYWdlKSB7XG4gICAgICAgIGF3YWl0IGNsaWNrQnV0dG9uKHBhZ2UsICcjTnBhZ2UnKTtcbiAgICAgICAgYXdhaXQgd2FpdEZvck5hdmlnYXRpb24ocGFnZSk7XG4gICAgICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCAndGFibGUjZGF0YVRhYmxlMDc3Jyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhY2NvdW50TnVtYmVyLFxuICAgIHN1bW1hcnksXG4gICAgdHhuczogY29udmVydFRyYW5zYWN0aW9ucyh0eG5zLnNsaWNlKDEpKSwgLy8gUmVtb3ZlIGZpcnN0IGxpbmUgd2hpY2ggaXMgXCJvcGVuaW5nIGJhbGFuY2VcIlxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaFRyYW5zYWN0aW9ucyhwYWdlOiBQYWdlLCBzdGFydERhdGU6IE1vbWVudCkge1xuICAvLyBUT0RPIG5lZWQgdG8gZXh0ZW5kIHRvIHN1cHBvcnQgbXVsdGlwbGUgYWNjb3VudHMgYW5kIGZvcmVpZ24gYWNjb3VudHNcbiAgcmV0dXJuIFthd2FpdCBmZXRjaFRyYW5zYWN0aW9uc0ZvckFjY291bnQocGFnZSwgc3RhcnREYXRlKV07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdhaXRGb3JQb3N0TG9naW4ocGFnZTogUGFnZSkge1xuICAvLyBUT0RPIGNoZWNrIGZvciBjb25kaXRpb24gdG8gcHJvdmlkZSBuZXcgcGFzc3dvcmRcbiAgcmV0dXJuIFByb21pc2UucmFjZShbXG4gICAgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICdkaXYubG90dXNGcmFtZScsIHRydWUpLFxuICAgIHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCAnI3ZhbGlkYXRpb25Nc2cnKSxcbiAgXSk7XG59XG5cbnR5cGUgU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMgPSB7IHVzZXJuYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcgfTtcblxuY2xhc3MgT3RzYXJIYWhheWFsU2NyYXBlciBleHRlbmRzIEJhc2VTY3JhcGVyV2l0aEJyb3dzZXI8U2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHM+IHtcbiAgZ2V0TG9naW5PcHRpb25zKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICAgIHJldHVybiB7XG4gICAgICBsb2dpblVybDogYCR7QkFTRV9VUkx9L01hdGFmTG9naW5TZXJ2aWNlL01hdGFmTG9naW5TZXJ2bGV0P2JhbmtJZD1PVFNBUlBSVEFMJnNpdGU9UHJpdmF0ZSZLT0RTQUZBPUhFYCxcbiAgICAgIGZpZWxkczogY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHMpLFxuICAgICAgc3VibWl0QnV0dG9uU2VsZWN0b3I6IGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5wYWdlLndhaXRGb3JUaW1lb3V0KDEwMDApO1xuICAgICAgICBhd2FpdCBjbGlja0J1dHRvbih0aGlzLnBhZ2UsICcjY29udGludWVCdG4nKTtcbiAgICAgIH0sXG4gICAgICBwb3N0QWN0aW9uOiBhc3luYyAoKSA9PiB3YWl0Rm9yUG9zdExvZ2luKHRoaXMucGFnZSksXG4gICAgICBwb3NzaWJsZVJlc3VsdHM6IGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKHRoaXMucGFnZSksXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoRGF0YSgpIHtcbiAgICBjb25zdCBkZWZhdWx0U3RhcnRNb21lbnQgPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAneWVhcnMnKS5hZGQoMSwgJ2RheScpO1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHRoaXMub3B0aW9ucy5zdGFydERhdGUgfHwgZGVmYXVsdFN0YXJ0TW9tZW50LnRvRGF0ZSgpO1xuICAgIGNvbnN0IHN0YXJ0TW9tZW50ID0gbW9tZW50Lm1heChkZWZhdWx0U3RhcnRNb21lbnQsIG1vbWVudChzdGFydERhdGUpKTtcblxuICAgIGNvbnN0IHVybCA9IGdldFRyYW5zYWN0aW9uc1VybCgpO1xuICAgIGF3YWl0IHRoaXMubmF2aWdhdGVUbyh1cmwpO1xuXG4gICAgY29uc3QgYWNjb3VudHMgPSBhd2FpdCBmZXRjaFRyYW5zYWN0aW9ucyh0aGlzLnBhZ2UsIHN0YXJ0TW9tZW50KTtcblxuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgYWNjb3VudHMsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBPdHNhckhhaGF5YWxTY3JhcGVyO1xuIl19
192
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfYmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsIl9uYXZpZ2F0aW9uIiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX2NvbnN0YW50cyIsIl90cmFuc2FjdGlvbnMiLCJvYmoiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIkJBU0VfVVJMIiwiTE9OR19EQVRFX0ZPUk1BVCIsIkRBVEVfRk9STUFUIiwiZ2V0UG9zc2libGVMb2dpblJlc3VsdHMiLCJwYWdlIiwidXJscyIsIkxvZ2luUmVzdWx0cyIsIlN1Y2Nlc3MiLCJJbnZhbGlkUGFzc3dvcmQiLCJlbGVtZW50UHJlc2VudE9uUGFnZSIsImdldFRyYW5zYWN0aW9uc1VybCIsImNyZWF0ZUxvZ2luRmllbGRzIiwiY3JlZGVudGlhbHMiLCJzZWxlY3RvciIsInZhbHVlIiwidXNlcm5hbWUiLCJwYXNzd29yZCIsImdldEFtb3VudERhdGEiLCJhbW91bnRTdHIiLCJoYXNDdXJyZW5jeSIsImFtb3VudFN0ckNsbiIsInJlcGxhY2UiLCJjdXJyZW5jeSIsImFtb3VudCIsInBhcnNlRmxvYXQiLCJTSEVLRUxfQ1VSUkVOQ1kiLCJpbmNsdWRlcyIsIlNIRUtFTF9DVVJSRU5DWV9TWU1CT0wiLCJwYXJ0cyIsInNwbGl0IiwiY29udmVydFRyYW5zYWN0aW9ucyIsInR4bnMiLCJtYXAiLCJ0eG4iLCJkYXRlRm9ybWF0IiwiZGF0ZSIsImxlbmd0aCIsIkVycm9yIiwidHhuRGF0ZSIsIm1vbWVudCIsInRvSVNPU3RyaW5nIiwiY3JlZGl0IiwiZGViaXQiLCJOdW1iZXIiLCJpc05hTiIsInJlc3VsdCIsInR5cGUiLCJUcmFuc2FjdGlvblR5cGVzIiwiTm9ybWFsIiwic3RhdHVzIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIkNvbXBsZXRlZCIsImlkZW50aWZpZXIiLCJyZWZlcmVuY2UiLCJwYXJzZUludCIsInVuZGVmaW5lZCIsInByb2Nlc3NlZERhdGUiLCJvcmlnaW5hbEFtb3VudCIsIm9yaWdpbmFsQ3VycmVuY3kiLCJjaGFyZ2VkQW1vdW50IiwiZGVzY3JpcHRpb24iLCJtZW1vIiwicGFyc2VUcmFuc2FjdGlvblBhZ2UiLCJ0ZHNWYWx1ZXMiLCJwYWdlRXZhbEFsbCIsInRycyIsImVsIiwicXVlcnlTZWxlY3RvciIsImlubmVyVGV4dCIsImJhbGFuY2UiLCJnZXRBY2NvdW50U3VtbWFyeSIsImJhbGFuY2VFbG0iLCIkIiwiYmFsYW5jZUlubmVyVGV4dEVsbSIsImdldFByb3BlcnR5IiwiYmFsYW5jZVRleHQiLCJqc29uVmFsdWUiLCJiYWxhbmNlVmFsdWUiLCJjcmVkaXRMaW1pdCIsImNyZWRpdFV0aWxpemF0aW9uIiwiYmFsYW5jZUN1cnJlbmN5IiwiZmV0Y2hUcmFuc2FjdGlvbnNGb3JBY2NvdW50Iiwic3RhcnREYXRlIiwic3VtbWFyeSIsIndhaXRVbnRpbEVsZW1lbnRGb3VuZCIsImJyYW5jaE51bSIsIiRldmFsIiwic3BhbiIsImFjY291bnRObWJyIiwiYWNjb3VudE51bWJlciIsImNsaWNrQnV0dG9uIiwiZmlsbElucHV0IiwiZm9ybWF0Iiwid2FpdEZvck5hdmlnYXRpb24iLCJoYXNOZXh0UGFnZSIsIm5vVHJhbnNhY3Rpb25FbG0iLCJwYWdlVHhucyIsImNvbmNhdCIsImJ1dHRvbiIsInNsaWNlIiwiZmV0Y2hUcmFuc2FjdGlvbnMiLCJ3YWl0Rm9yUG9zdExvZ2luIiwiUHJvbWlzZSIsInJhY2UiLCJPdHNhckhhaGF5YWxTY3JhcGVyIiwiQmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImdldExvZ2luT3B0aW9ucyIsImxvZ2luVXJsIiwiZmllbGRzIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJ3YWl0Rm9yVGltZW91dCIsInBvc3RBY3Rpb24iLCJwb3NzaWJsZVJlc3VsdHMiLCJmZXRjaERhdGEiLCJkZWZhdWx0U3RhcnRNb21lbnQiLCJzdWJ0cmFjdCIsImFkZCIsIm9wdGlvbnMiLCJ0b0RhdGUiLCJzdGFydE1vbWVudCIsIm1heCIsInVybCIsIm5hdmlnYXRlVG8iLCJhY2NvdW50cyIsInN1Y2Nlc3MiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyYXBlcnMvb3RzYXItaGFoYXlhbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50LCB7IE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyJztcbmltcG9ydCB7IEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsIExvZ2luUmVzdWx0cywgUG9zc2libGVMb2dpblJlc3VsdHMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInO1xuaW1wb3J0IHsgd2FpdEZvck5hdmlnYXRpb24gfSBmcm9tICcuLi9oZWxwZXJzL25hdmlnYXRpb24nO1xuaW1wb3J0IHtcbiAgZmlsbElucHV0LFxuICBjbGlja0J1dHRvbixcbiAgd2FpdFVudGlsRWxlbWVudEZvdW5kLFxuICBwYWdlRXZhbEFsbCxcbiAgZWxlbWVudFByZXNlbnRPblBhZ2UsXG59IGZyb20gJy4uL2hlbHBlcnMvZWxlbWVudHMtaW50ZXJhY3Rpb25zJztcbmltcG9ydCB7IFNIRUtFTF9DVVJSRU5DWSwgU0hFS0VMX0NVUlJFTkNZX1NZTUJPTCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25TdGF0dXNlcywgVHJhbnNhY3Rpb25UeXBlcyB9IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5cbmNvbnN0IEJBU0VfVVJMID0gJ2h0dHBzOi8vb25saW5lLmJhbmtvdHNhci5jby5pbCc7XG5jb25zdCBMT05HX0RBVEVfRk9STUFUID0gJ0REL01NL1lZWVknO1xuY29uc3QgREFURV9GT1JNQVQgPSAnREQvTU0vWVknO1xuXG5pbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uIHtcbiAgYmFsYW5jZT86IHN0cmluZztcbiAgZGViaXQ/OiBzdHJpbmc7XG4gIGNyZWRpdD86IHN0cmluZztcbiAgbWVtbz86IHN0cmluZztcbiAgc3RhdHVzPzogc3RyaW5nO1xuICByZWZlcmVuY2U/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBkYXRlOiBzdHJpbmc7XG59XG5cbmZ1bmN0aW9uIGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKHBhZ2U6IFBhZ2UpIHtcbiAgY29uc3QgdXJsczogUG9zc2libGVMb2dpblJlc3VsdHMgPSB7fTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuU3VjY2Vzc10gPSBbYCR7QkFTRV9VUkx9L3dwcy9teXBvcnRhbC9GaWJpTWVudS9PbmxpbmVgXTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkXSA9IFsoKSA9PiBlbGVtZW50UHJlc2VudE9uUGFnZShwYWdlLCAnI3ZhbGlkYXRpb25Nc2cnKV07XG4gIC8vIFRPRE86IHN1cHBvcnQgY2hhbmdlIHBhc3N3b3JkXG4gIC8qIHVybHNbTE9HSU5fUkVTVUxULkNIQU5HRV9QQVNTV09SRF0gPSBbYGBdOyAqL1xuICByZXR1cm4gdXJscztcbn1cblxuZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25zVXJsKCkge1xuICByZXR1cm4gYCR7QkFTRV9VUkx9L3dwcy9teXBvcnRhbC9GaWJpTWVudS9PbmxpbmUvT25BY2NvdW50TW5nbWVudC9PbkJhbGFuY2VUcmFucy9Qcml2YXRlQWNjb3VudEZsb3dgO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpIHtcbiAgcmV0dXJuIFtcbiAgICB7IHNlbGVjdG9yOiAnI3VzZXJuYW1lJywgdmFsdWU6IGNyZWRlbnRpYWxzLnVzZXJuYW1lIH0sXG4gICAgeyBzZWxlY3RvcjogJyNwYXNzd29yZCcsIHZhbHVlOiBjcmVkZW50aWFscy5wYXNzd29yZCB9LFxuICBdO1xufVxuXG5mdW5jdGlvbiBnZXRBbW91bnREYXRhKGFtb3VudFN0cjogc3RyaW5nLCBoYXNDdXJyZW5jeSA9IGZhbHNlKSB7XG4gIGNvbnN0IGFtb3VudFN0ckNsbiA9IGFtb3VudFN0ci5yZXBsYWNlKCcsJywgJycpO1xuICBsZXQgY3VycmVuY3k6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICBsZXQgYW1vdW50OiBudW1iZXIgfCBudWxsID0gbnVsbDtcbiAgaWYgKCFoYXNDdXJyZW5jeSkge1xuICAgIGFtb3VudCA9IHBhcnNlRmxvYXQoYW1vdW50U3RyQ2xuKTtcbiAgICBjdXJyZW5jeSA9IFNIRUtFTF9DVVJSRU5DWTtcbiAgfSBlbHNlIGlmIChhbW91bnRTdHJDbG4uaW5jbHVkZXMoU0hFS0VMX0NVUlJFTkNZX1NZTUJPTCkpIHtcbiAgICBhbW91bnQgPSBwYXJzZUZsb2F0KGFtb3VudFN0ckNsbi5yZXBsYWNlKFNIRUtFTF9DVVJSRU5DWV9TWU1CT0wsICcnKSk7XG4gICAgY3VycmVuY3kgPSBTSEVLRUxfQ1VSUkVOQ1k7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgcGFydHMgPSBhbW91bnRTdHJDbG4uc3BsaXQoJyAnKTtcbiAgICBhbW91bnQgPSBwYXJzZUZsb2F0KHBhcnRzWzBdKTtcbiAgICBbLCBjdXJyZW5jeV0gPSBwYXJ0cztcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYW1vdW50LFxuICAgIGN1cnJlbmN5LFxuICB9O1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0VHJhbnNhY3Rpb25zKHR4bnM6IFNjcmFwZWRUcmFuc2FjdGlvbltdKTogVHJhbnNhY3Rpb25bXSB7XG4gIHJldHVybiB0eG5zLm1hcCgodHhuKSA9PiB7XG4gICAgY29uc3QgZGF0ZUZvcm1hdCA9XG4gICAgICAgIHR4bi5kYXRlLmxlbmd0aCA9PT0gOCA/XG4gICAgICAgICAgREFURV9GT1JNQVQgOlxuICAgICAgICAgIHR4bi5kYXRlLmxlbmd0aCA9PT0gMTAgP1xuICAgICAgICAgICAgTE9OR19EQVRFX0ZPUk1BVCA6XG4gICAgICAgICAgICBudWxsO1xuICAgIGlmICghZGF0ZUZvcm1hdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZhbGlkIGRhdGUgZm9ybWF0Jyk7XG4gICAgfVxuICAgIGNvbnN0IHR4bkRhdGUgPSBtb21lbnQodHhuLmRhdGUsIGRhdGVGb3JtYXQpLnRvSVNPU3RyaW5nKCk7XG4gICAgY29uc3QgY3JlZGl0ID0gZ2V0QW1vdW50RGF0YSh0eG4uY3JlZGl0IHx8ICcnKS5hbW91bnQ7XG4gICAgY29uc3QgZGViaXQgPSBnZXRBbW91bnREYXRhKHR4bi5kZWJpdCB8fCAnJykuYW1vdW50O1xuICAgIGNvbnN0IGFtb3VudCA9IChOdW1iZXIuaXNOYU4oY3JlZGl0KSA/IDAgOiBjcmVkaXQpIC0gKE51bWJlci5pc05hTihkZWJpdCkgPyAwIDogZGViaXQpO1xuXG4gICAgY29uc3QgcmVzdWx0OiBUcmFuc2FjdGlvbiA9IHtcbiAgICAgIHR5cGU6IFRyYW5zYWN0aW9uVHlwZXMuTm9ybWFsLFxuICAgICAgc3RhdHVzOiBUcmFuc2FjdGlvblN0YXR1c2VzLkNvbXBsZXRlZCxcbiAgICAgIGlkZW50aWZpZXI6IHR4bi5yZWZlcmVuY2UgPyBwYXJzZUludCh0eG4ucmVmZXJlbmNlLCAxMCkgOiB1bmRlZmluZWQsXG4gICAgICBkYXRlOiB0eG5EYXRlLFxuICAgICAgcHJvY2Vzc2VkRGF0ZTogdHhuRGF0ZSxcbiAgICAgIG9yaWdpbmFsQW1vdW50OiBhbW91bnQsXG4gICAgICBvcmlnaW5hbEN1cnJlbmN5OiBTSEVLRUxfQ1VSUkVOQ1ksXG4gICAgICBjaGFyZ2VkQW1vdW50OiBhbW91bnQsXG4gICAgICBkZXNjcmlwdGlvbjogdHhuLmRlc2NyaXB0aW9uIHx8ICcnLFxuICAgICAgbWVtbzogJycsXG4gICAgfTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBwYXJzZVRyYW5zYWN0aW9uUGFnZShwYWdlOiBQYWdlKTogUHJvbWlzZTxTY3JhcGVkVHJhbnNhY3Rpb25bXT4ge1xuICBjb25zdCB0ZHNWYWx1ZXMgPSBhd2FpdCBwYWdlRXZhbEFsbChwYWdlLCAnI2RhdGFUYWJsZTA3NyB0Ym9keSB0cicsIFtdLCAodHJzKSA9PiB7XG4gICAgcmV0dXJuICh0cnMpLm1hcCgoZWwpID0+ICh7XG4gICAgICBkYXRlOiAoZWwucXVlcnlTZWxlY3RvcignLmRhdGUnKSBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0LFxuICAgICAgLy8gcmVmZXJlbmNlIGFuZCBkZXNjcmlwdGlvbiBoYXZlIHZpY2UtdmVyc2EgY2xhc3MgbmFtZVxuICAgICAgZGVzY3JpcHRpb246IChlbC5xdWVyeVNlbGVjdG9yKCcucmVmZXJlbmNlJykgYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dCxcbiAgICAgIHJlZmVyZW5jZTogKGVsLnF1ZXJ5U2VsZWN0b3IoJy5kZXRhaWxzJykgYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dCxcbiAgICAgIGNyZWRpdDogKGVsLnF1ZXJ5U2VsZWN0b3IoJy5jcmVkaXQnKSBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0LFxuICAgICAgZGViaXQ6IChlbC5xdWVyeVNlbGVjdG9yKCcuZGViaXQnKSBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0LFxuICAgICAgYmFsYW5jZTogKGVsLnF1ZXJ5U2VsZWN0b3IoJy5iYWxhbmNlJykgYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dCxcbiAgICB9KSk7XG4gIH0pO1xuXG4gIHJldHVybiB0ZHNWYWx1ZXM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEFjY291bnRTdW1tYXJ5KHBhZ2U6IFBhZ2UpIHtcbiAgY29uc3QgYmFsYW5jZUVsbSA9IGF3YWl0IHBhZ2UuJCgnLmN1cnJlbnRfYmFsYW5jZScpO1xuICBjb25zdCBiYWxhbmNlSW5uZXJUZXh0RWxtID0gYXdhaXQgYmFsYW5jZUVsbSEuZ2V0UHJvcGVydHkoJ2lubmVyVGV4dCcpO1xuICBjb25zdCBiYWxhbmNlVGV4dCA9IGF3YWl0IGJhbGFuY2VJbm5lclRleHRFbG0uanNvblZhbHVlKCk7XG4gIGNvbnN0IGJhbGFuY2VWYWx1ZSA9IGdldEFtb3VudERhdGEoYmFsYW5jZVRleHQgYXMgc3RyaW5nLCB0cnVlKTtcbiAgLy8gVE9ETzogRmluZCB0aGUgY3JlZGl0IGZpZWxkIGluIGJhbmsgd2Vic2l0ZSAoY291bGQgc2VlIGl0IGluIG15IGFjY291bnQpXG4gIHJldHVybiB7XG4gICAgYmFsYW5jZTogTnVtYmVyLmlzTmFOKGJhbGFuY2VWYWx1ZS5hbW91bnQpID8gMCA6IGJhbGFuY2VWYWx1ZS5hbW91bnQsXG4gICAgY3JlZGl0TGltaXQ6IDAuMCxcbiAgICBjcmVkaXRVdGlsaXphdGlvbjogMC4wLFxuICAgIGJhbGFuY2VDdXJyZW5jeTogYmFsYW5jZVZhbHVlLmN1cnJlbmN5LFxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaFRyYW5zYWN0aW9uc0ZvckFjY291bnQocGFnZTogUGFnZSwgc3RhcnREYXRlOiBNb21lbnQpIHtcbiAgY29uc3Qgc3VtbWFyeSA9IGF3YWl0IGdldEFjY291bnRTdW1tYXJ5KHBhZ2UpO1xuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJ2lucHV0I2Zyb21EYXRlJyk7XG4gIC8vIEdldCBhY2NvdW50IG51bWJlclxuICBjb25zdCBicmFuY2hOdW0gPSBhd2FpdCBwYWdlLiRldmFsKCcuYnJhbmNoX251bScsIChzcGFuKSA9PiB7XG4gICAgcmV0dXJuIChzcGFuIGFzIEhUTUxFbGVtZW50KS5pbm5lclRleHQ7XG4gIH0pO1xuXG4gIGNvbnN0IGFjY291bnRObWJyID0gYXdhaXQgcGFnZS4kZXZhbCgnLmFjY19udW0nLCAoc3BhbikgPT4ge1xuICAgIHJldHVybiAoc3BhbiBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0O1xuICB9KTtcbiAgY29uc3QgYWNjb3VudE51bWJlciA9IGAxNC0ke2JyYW5jaE51bX0tJHthY2NvdW50Tm1icn1gO1xuICAvLyBTZWFyY2ggZm9yIHJlbGF2YW50IHRyYW5zYWN0aW9uIGZyb20gc3RhcnREYXRlXG4gIGF3YWl0IGNsaWNrQnV0dG9uKHBhZ2UsICcjdGFiSGVhZGVyNCcpO1xuICBhd2FpdCBmaWxsSW5wdXQoXG4gICAgcGFnZSxcbiAgICAnaW5wdXQjZnJvbURhdGUnLFxuICAgIHN0YXJ0RGF0ZS5mb3JtYXQoJ0REL01NL1lZWVknKSxcbiAgKTtcblxuICBhd2FpdCBjbGlja0J1dHRvbihwYWdlLCAnI2ZpYmlfdGFiX2RhdGVzIC5maWJpX2J0bjpudGgtY2hpbGQoMiknKTtcbiAgYXdhaXQgd2FpdEZvck5hdmlnYXRpb24ocGFnZSk7XG4gIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCAndGFibGUjZGF0YVRhYmxlMDc3LCAjTk9fREFUQTA3NycpO1xuICBsZXQgaGFzTmV4dFBhZ2UgPSB0cnVlO1xuICBsZXQgdHhuczogU2NyYXBlZFRyYW5zYWN0aW9uW10gPSBbXTtcblxuICBjb25zdCBub1RyYW5zYWN0aW9uRWxtID0gYXdhaXQgcGFnZS4kKCcjTk9fREFUQTA3NycpO1xuICBpZiAobm9UcmFuc2FjdGlvbkVsbSA9PSBudWxsKSB7XG4gICAgLy8gU2NhcGUgdHJhbnNhY3Rpb25zICh0aGlzIG1heWJlIHNwYW5uZWQgb24gbXVsdGlwbGUgcGFnZXMpXG4gICAgd2hpbGUgKGhhc05leHRQYWdlKSB7XG4gICAgICBjb25zdCBwYWdlVHhucyA9IGF3YWl0IHBhcnNlVHJhbnNhY3Rpb25QYWdlKHBhZ2UpO1xuICAgICAgdHhucyA9IHR4bnMuY29uY2F0KHBhZ2VUeG5zKTtcbiAgICAgIGNvbnN0IGJ1dHRvbiA9IGF3YWl0IHBhZ2UuJCgnI05wYWdlJyk7XG4gICAgICBoYXNOZXh0UGFnZSA9IGZhbHNlO1xuICAgICAgaWYgKGJ1dHRvbiAhPSBudWxsKSB7XG4gICAgICAgIGhhc05leHRQYWdlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChoYXNOZXh0UGFnZSkge1xuICAgICAgICBhd2FpdCBjbGlja0J1dHRvbihwYWdlLCAnI05wYWdlJyk7XG4gICAgICAgIGF3YWl0IHdhaXRGb3JOYXZpZ2F0aW9uKHBhZ2UpO1xuICAgICAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJ3RhYmxlI2RhdGFUYWJsZTA3NycpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYWNjb3VudE51bWJlcixcbiAgICBzdW1tYXJ5LFxuICAgIHR4bnM6IGNvbnZlcnRUcmFuc2FjdGlvbnModHhucy5zbGljZSgxKSksIC8vIFJlbW92ZSBmaXJzdCBsaW5lIHdoaWNoIGlzIFwib3BlbmluZyBiYWxhbmNlXCJcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hUcmFuc2FjdGlvbnMocGFnZTogUGFnZSwgc3RhcnREYXRlOiBNb21lbnQpIHtcbiAgLy8gVE9ETyBuZWVkIHRvIGV4dGVuZCB0byBzdXBwb3J0IG11bHRpcGxlIGFjY291bnRzIGFuZCBmb3JlaWduIGFjY291bnRzXG4gIHJldHVybiBbYXdhaXQgZmV0Y2hUcmFuc2FjdGlvbnNGb3JBY2NvdW50KHBhZ2UsIHN0YXJ0RGF0ZSldO1xufVxuXG5hc3luYyBmdW5jdGlvbiB3YWl0Rm9yUG9zdExvZ2luKHBhZ2U6IFBhZ2UpIHtcbiAgLy8gVE9ETyBjaGVjayBmb3IgY29uZGl0aW9uIHRvIHByb3ZpZGUgbmV3IHBhc3N3b3JkXG4gIHJldHVybiBQcm9taXNlLnJhY2UoW1xuICAgIHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCAnZGl2LmxvdHVzRnJhbWUnLCB0cnVlKSxcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJyN2YWxpZGF0aW9uTXNnJyksXG4gIF0pO1xufVxuXG50eXBlIFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzID0geyB1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nIH07XG5cbmNsYXNzIE90c2FySGFoYXlhbFNjcmFwZXIgZXh0ZW5kcyBCYXNlU2NyYXBlcldpdGhCcm93c2VyPFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzPiB7XG4gIGdldExvZ2luT3B0aW9ucyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9naW5Vcmw6IGAke0JBU0VfVVJMfS9NYXRhZkxvZ2luU2VydmljZS9NYXRhZkxvZ2luU2VydmxldD9iYW5rSWQ9T1RTQVJQUlRBTCZzaXRlPVByaXZhdGUmS09EU0FGQT1IRWAsXG4gICAgICBmaWVsZHM6IGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzKSxcbiAgICAgIHN1Ym1pdEJ1dHRvblNlbGVjdG9yOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMucGFnZS53YWl0Rm9yVGltZW91dCgxMDAwKTtcbiAgICAgICAgYXdhaXQgY2xpY2tCdXR0b24odGhpcy5wYWdlLCAnI2NvbnRpbnVlQnRuJyk7XG4gICAgICB9LFxuICAgICAgcG9zdEFjdGlvbjogYXN5bmMgKCkgPT4gd2FpdEZvclBvc3RMb2dpbih0aGlzLnBhZ2UpLFxuICAgICAgcG9zc2libGVSZXN1bHRzOiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyh0aGlzLnBhZ2UpLFxuICAgIH07XG4gIH1cblxuICBhc3luYyBmZXRjaERhdGEoKSB7XG4gICAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJykuYWRkKDEsICdkYXknKTtcbiAgICBjb25zdCBzdGFydERhdGUgPSB0aGlzLm9wdGlvbnMuc3RhcnREYXRlIHx8IGRlZmF1bHRTdGFydE1vbWVudC50b0RhdGUoKTtcbiAgICBjb25zdCBzdGFydE1vbWVudCA9IG1vbWVudC5tYXgoZGVmYXVsdFN0YXJ0TW9tZW50LCBtb21lbnQoc3RhcnREYXRlKSk7XG5cbiAgICBjb25zdCB1cmwgPSBnZXRUcmFuc2FjdGlvbnNVcmwoKTtcbiAgICBhd2FpdCB0aGlzLm5hdmlnYXRlVG8odXJsKTtcblxuICAgIGNvbnN0IGFjY291bnRzID0gYXdhaXQgZmV0Y2hUcmFuc2FjdGlvbnModGhpcy5wYWdlLCBzdGFydE1vbWVudCk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgIGFjY291bnRzLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgT3RzYXJIYWhheWFsU2NyYXBlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLHVCQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxXQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxxQkFBQSxHQUFBSCxPQUFBO0FBT0EsSUFBQUksVUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssYUFBQSxHQUFBTCxPQUFBO0FBQXFGLFNBQUFELHVCQUFBTyxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBRXJGLE1BQU1HLFFBQVEsR0FBRyxnQ0FBZ0M7QUFDakQsTUFBTUMsZ0JBQWdCLEdBQUcsWUFBWTtBQUNyQyxNQUFNQyxXQUFXLEdBQUcsVUFBVTtBQWE5QixTQUFTQyx1QkFBdUJBLENBQUNDLElBQVUsRUFBRTtFQUMzQyxNQUFNQyxJQUEwQixHQUFHLENBQUMsQ0FBQztFQUNyQ0EsSUFBSSxDQUFDQyxvQ0FBWSxDQUFDQyxPQUFPLENBQUMsR0FBRyxDQUFFLEdBQUVQLFFBQVMsK0JBQThCLENBQUM7RUFDekVLLElBQUksQ0FBQ0Msb0NBQVksQ0FBQ0UsZUFBZSxDQUFDLEdBQUcsQ0FBQyxNQUFNLElBQUFDLDBDQUFvQixFQUFDTCxJQUFJLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztFQUN6RjtFQUNBO0VBQ0EsT0FBT0MsSUFBSTtBQUNiO0FBRUEsU0FBU0ssa0JBQWtCQSxDQUFBLEVBQUc7RUFDNUIsT0FBUSxHQUFFVixRQUFTLGtGQUFpRjtBQUN0RztBQUVBLFNBQVNXLGlCQUFpQkEsQ0FBQ0MsV0FBdUMsRUFBRTtFQUNsRSxPQUFPLENBQ0w7SUFBRUMsUUFBUSxFQUFFLFdBQVc7SUFBRUMsS0FBSyxFQUFFRixXQUFXLENBQUNHO0VBQVMsQ0FBQyxFQUN0RDtJ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
@@ -1,27 +1,16 @@
1
1
  "use strict";
2
2
 
3
3
  require("core-js/modules/es.promise");
4
-
5
4
  require("core-js/modules/es.string.trim");
6
-
7
5
  var _otsarHahayal = _interopRequireDefault(require("./otsar-hahayal"));
8
-
9
6
  var _testsUtils = require("../tests/tests-utils");
10
-
11
7
  var _definitions = require("../definitions");
12
-
13
8
  var _baseScraperWithBrowser = require("./base-scraper-with-browser");
14
-
15
9
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
-
17
10
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
18
-
19
11
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
20
-
21
12
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
22
-
23
13
  const COMPANY_ID = 'otsarHahayal'; // TODO this property should be hard-coded in the provider
24
-
25
14
  const testsConfig = (0, _testsUtils.getTestsConfig)();
26
15
  describe('OtsarHahayal legacy scraper', () => {
27
16
  beforeAll(() => {
@@ -36,7 +25,6 @@ describe('OtsarHahayal legacy scraper', () => {
36
25
  const options = _objectSpread({}, testsConfig.options, {
37
26
  companyId: COMPANY_ID
38
27
  });
39
-
40
28
  const scraper = new _otsarHahayal.default(options);
41
29
  const result = await scraper.scrape({
42
30
  username: 'e10s12',
@@ -50,7 +38,6 @@ describe('OtsarHahayal legacy scraper', () => {
50
38
  const options = _objectSpread({}, testsConfig.options, {
51
39
  companyId: COMPANY_ID
52
40
  });
53
-
54
41
  const scraper = new _otsarHahayal.default(options);
55
42
  const result = await scraper.scrape(testsConfig.credentials.otsarHahayal);
56
43
  expect(result).toBeDefined();
@@ -60,4 +47,4 @@ describe('OtsarHahayal legacy scraper', () => {
60
47
  (0, _testsUtils.exportTransactions)(COMPANY_ID, result.accounts || []);
61
48
  });
62
49
  });
63
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9vdHNhci1oYWhheWFsLnRlc3QudHMiXSwibmFtZXMiOlsiQ09NUEFOWV9JRCIsInRlc3RzQ29uZmlnIiwiZGVzY3JpYmUiLCJiZWZvcmVBbGwiLCJ0ZXN0IiwiZXhwZWN0IiwiU0NSQVBFUlMiLCJvdHNhckhhaGF5YWwiLCJ0b0JlRGVmaW5lZCIsImxvZ2luRmllbGRzIiwidG9Db250YWluIiwiY29uZmlnIiwiY29tcGFueUFQSSIsImludmFsaWRQYXNzd29yZCIsIm9wdGlvbnMiLCJjb21wYW55SWQiLCJzY3JhcGVyIiwiT3RzYXJIYWhheWFsU2NyYXBlciIsInJlc3VsdCIsInNjcmFwZSIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJzdWNjZXNzIiwidG9CZUZhbHN5IiwiZXJyb3JUeXBlIiwidG9CZSIsIkxvZ2luUmVzdWx0cyIsIkludmFsaWRQYXNzd29yZCIsImNyZWRlbnRpYWxzIiwiZXJyb3IiLCJlcnJvck1lc3NhZ2UiLCJ0cmltIiwidG9CZVRydXRoeSIsImFjY291bnRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFDQTs7QUFHQTs7QUFDQTs7Ozs7Ozs7OztBQUVBLE1BQU1BLFVBQVUsR0FBRyxjQUFuQixDLENBQW1DOztBQUNuQyxNQUFNQyxXQUFXLEdBQUcsaUNBQXBCO0FBRUFDLFFBQVEsQ0FBQyw2QkFBRCxFQUFnQyxNQUFNO0FBQzVDQyxFQUFBQSxTQUFTLENBQUMsTUFBTTtBQUNkLDBDQURjLENBQ1E7QUFDdkIsR0FGUSxDQUFUO0FBSUFDLEVBQUFBLElBQUksQ0FBQyxpREFBRCxFQUFvRCxNQUFNO0FBQzVEQyxJQUFBQSxNQUFNLENBQUNDLHNCQUFTQyxZQUFWLENBQU4sQ0FBOEJDLFdBQTlCO0FBQ0FILElBQUFBLE1BQU0sQ0FBQ0Msc0JBQVNDLFlBQVQsQ0FBc0JFLFdBQXZCLENBQU4sQ0FBMENDLFNBQTFDLENBQW9ELFVBQXBEO0FBQ0FMLElBQUFBLE1BQU0sQ0FBQ0Msc0JBQVNDLFlBQVQsQ0FBc0JFLFdBQXZCLENBQU4sQ0FBMENDLFNBQTFDLENBQW9ELFVBQXBEO0FBQ0QsR0FKRyxDQUFKO0FBTUEsdUNBQW9CVixVQUFwQixFQUFpQ1csTUFBRCxJQUFZQSxNQUFNLENBQUNDLFVBQVAsQ0FBa0JDLGVBQTlELEVBQStFLHVDQUEvRSxFQUF3SCxZQUFZO0FBQ2xJLFVBQU1DLE9BQU8scUJBQ1JiLFdBQVcsQ0FBQ2EsT0FESjtBQUVYQyxNQUFBQSxTQUFTLEVBQUVmO0FBRkEsTUFBYjs7QUFLQSxVQUFNZ0IsT0FBTyxHQUFHLElBQUlDLHFCQUFKLENBQXdCSCxPQUF4QixDQUFoQjtBQUVBLFVBQU1JLE1BQU0sR0FBRyxNQUFNRixPQUFPLENBQUNHLE1BQVIsQ0FBZTtBQUFFQyxNQUFBQSxRQUFRLEVBQUUsUUFBWjtBQUFzQkMsTUFBQUEsUUFBUSxFQUFFO0FBQWhDLEtBQWYsQ0FBckI7QUFFQWhCLElBQUFBLE1BQU0sQ0FBQ2EsTUFBRCxDQUFOLENBQWVWLFdBQWY7QUFDQUgsSUFBQUEsTUFBTSxDQUFDYSxNQUFNLENBQUNJLE9BQVIsQ0FBTixDQUF1QkMsU0FBdkI7QUFDQWxCLElBQUFBLE1BQU0sQ0FBQ2EsTUFBTSxDQUFDTSxTQUFSLENBQU4sQ0FBeUJDLElBQXpCLENBQThCQyxxQ0FBYUMsZUFBM0M7QUFDRCxHQWJEO0FBZUEsdUNBQW9CM0IsVUFBcEIsRUFBZ0MsNkJBQWhDLEVBQStELFlBQVk7QUFDekUsVUFBTWMsT0FBTyxxQkFDUmIsV0FBVyxDQUFDYSxPQURKO0FBRVhDLE1BQUFBLFNBQVMsRUFBRWY7QUFGQSxNQUFiOztBQUtBLFVBQU1nQixPQUFPLEdBQUcsSUFBSUMscUJBQUosQ0FBd0JILE9BQXhCLENBQWhCO0FBQ0EsVUFBTUksTUFBTSxHQUFHLE1BQU1GLE9BQU8sQ0FBQ0csTUFBUixDQUFlbEIsV0FBVyxDQUFDMkIsV0FBWixDQUF3QnJCLFlBQXZDLENBQXJCO0FBQ0FGLElBQUFBLE1BQU0sQ0FBQ2EsTUFBRCxDQUFOLENBQWVWLFdBQWY7QUFDQSxVQUFNcUIsS0FBSyxHQUFJLEdBQUVYLE1BQU0sQ0FBQ00sU0FBUCxJQUFvQixFQUFHLElBQUdOLE1BQU0sQ0FBQ1ksWUFBUCxJQUF1QixFQUFHLEVBQXZELENBQXlEQyxJQUF6RCxFQUFkO0FBQ0ExQixJQUFBQSxNQUFNLENBQUN3QixLQUFELENBQU4sQ0FBY0osSUFBZCxDQUFtQixFQUFuQjtBQUNBcEIsSUFBQUEsTUFBTSxDQUFDYSxNQUFNLENBQUNJLE9BQVIsQ0FBTixDQUF1QlUsVUFBdkI7QUFFQSx3Q0FBbUJoQyxVQUFuQixFQUErQmtCLE1BQU0sQ0FBQ2UsUUFBUCxJQUFtQixFQUFsRDtBQUNELEdBZEQ7QUFlRCxDQXpDTyxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE90c2FySGFoYXlhbFNjcmFwZXIgZnJvbSAnLi9vdHNhci1oYWhheWFsJztcbmltcG9ydCB7XG4gIG1heWJlVGVzdENvbXBhbnlBUEksIGV4dGVuZEFzeW5jVGltZW91dCwgZ2V0VGVzdHNDb25maWcsIGV4cG9ydFRyYW5zYWN0aW9ucyxcbn0gZnJvbSAnLi4vdGVzdHMvdGVzdHMtdXRpbHMnO1xuaW1wb3J0IHsgU0NSQVBFUlMgfSBmcm9tICcuLi9kZWZpbml0aW9ucyc7XG5pbXBvcnQgeyBMb2dpblJlc3VsdHMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInO1xuXG5jb25zdCBDT01QQU5ZX0lEID0gJ290c2FySGFoYXlhbCc7IC8vIFRPRE8gdGhpcyBwcm9wZXJ0eSBzaG91bGQgYmUgaGFyZC1jb2RlZCBpbiB0aGUgcHJvdmlkZXJcbmNvbnN0IHRlc3RzQ29uZmlnID0gZ2V0VGVzdHNDb25maWcoKTtcblxuZGVzY3JpYmUoJ090c2FySGFoYXlhbCBsZWdhY3kgc2NyYXBlcicsICgpID0+IHtcbiAgYmVmb3JlQWxsKCgpID0+IHtcbiAgICBleHRlbmRBc3luY1RpbWVvdXQoKTsgLy8gVGhlIGRlZmF1bHQgdGltZW91dCBpcyA1IHNlY29uZHMgcGVyIGFzeW5jIHRlc3QsIHRoaXMgZnVuY3Rpb24gZXh0ZW5kcyB0aGUgdGltZW91dCB2YWx1ZVxuICB9KTtcblxuICB0ZXN0KCdzaG91bGQgZXhwb3NlIGxvZ2luIGZpZWxkcyBpbiBzY3JhcGVycyBjb25zdGFudCcsICgpID0+IHtcbiAgICBleHBlY3QoU0NSQVBFUlMub3RzYXJIYWhheWFsKS50b0JlRGVmaW5lZCgpO1xuICAgIGV4cGVjdChTQ1JBUEVSUy5vdHNhckhhaGF5YWwubG9naW5GaWVsZHMpLnRvQ29udGFpbigndXNlcm5hbWUnKTtcbiAgICBleHBlY3QoU0NSQVBFUlMub3RzYXJIYWhheWFsLmxvZ2luRmllbGRzKS50b0NvbnRhaW4oJ3Bhc3N3b3JkJyk7XG4gIH0pO1xuXG4gIG1heWJlVGVzdENvbXBhbnlBUEkoQ09NUEFOWV9JRCwgKGNvbmZpZykgPT4gY29uZmlnLmNvbXBhbnlBUEkuaW52YWxpZFBhc3N3b3JkKSgnc2hvdWxkIGZhaWwgb24gaW52YWxpZCB1c2VyL3Bhc3N3b3JkXCInLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIC4uLnRlc3RzQ29uZmlnLm9wdGlvbnMsXG4gICAgICBjb21wYW55SWQ6IENPTVBBTllfSUQsXG4gICAgfTtcblxuICAgIGNvbnN0IHNjcmFwZXIgPSBuZXcgT3RzYXJIYWhheWFsU2NyYXBlcihvcHRpb25zKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNjcmFwZXIuc2NyYXBlKHsgdXNlcm5hbWU6ICdlMTBzMTInLCBwYXNzd29yZDogJzNmM3NzM2QnIH0pO1xuXG4gICAgZXhwZWN0KHJlc3VsdCkudG9CZURlZmluZWQoKTtcbiAgICBleHBlY3QocmVzdWx0LnN1Y2Nlc3MpLnRvQmVGYWxzeSgpO1xuICAgIGV4cGVjdChyZXN1bHQuZXJyb3JUeXBlKS50b0JlKExvZ2luUmVzdWx0cy5JbnZhbGlkUGFzc3dvcmQpO1xuICB9KTtcblxuICBtYXliZVRlc3RDb21wYW55QVBJKENPTVBBTllfSUQpKCdzaG91bGQgc2NyYXBlIHRyYW5zYWN0aW9uc1wiJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAuLi50ZXN0c0NvbmZpZy5vcHRpb25zLFxuICAgICAgY29tcGFueUlkOiBDT01QQU5ZX0lELFxuICAgIH07XG5cbiAgICBjb25zdCBzY3JhcGVyID0gbmV3IE90c2FySGFoYXlhbFNjcmFwZXIob3B0aW9ucyk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2NyYXBlci5zY3JhcGUodGVzdHNDb25maWcuY3JlZGVudGlhbHMub3RzYXJIYWhheWFsKTtcbiAgICBleHBlY3QocmVzdWx0KS50b0JlRGVmaW5lZCgpO1xuICAgIGNvbnN0IGVycm9yID0gYCR7cmVzdWx0LmVycm9yVHlwZSB8fCAnJ30gJHtyZXN1bHQuZXJyb3JNZXNzYWdlIHx8ICcnfWAudHJpbSgpO1xuICAgIGV4cGVjdChlcnJvcikudG9CZSgnJyk7XG4gICAgZXhwZWN0KHJlc3VsdC5zdWNjZXNzKS50b0JlVHJ1dGh5KCk7XG5cbiAgICBleHBvcnRUcmFuc2FjdGlvbnMoQ09NUEFOWV9JRCwgcmVzdWx0LmFjY291bnRzIHx8IFtdKTtcbiAgfSk7XG59KTtcbiJdfQ==
50
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfb3RzYXJIYWhheWFsIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfdGVzdHNVdGlscyIsIl9kZWZpbml0aW9ucyIsIl9iYXNlU2NyYXBlcldpdGhCcm93c2VyIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJvd25LZXlzIiwib2JqZWN0IiwiZW51bWVyYWJsZU9ubHkiLCJrZXlzIiwiT2JqZWN0IiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwic3ltYm9scyIsImZpbHRlciIsInN5bSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImVudW1lcmFibGUiLCJwdXNoIiwiYXBwbHkiLCJfb2JqZWN0U3ByZWFkIiwidGFyZ2V0IiwiaSIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNvdXJjZSIsImZvckVhY2giLCJrZXkiLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIkNPTVBBTllfSUQiLCJ0ZXN0c0NvbmZpZyIsImdldFRlc3RzQ29uZmlnIiwiZGVzY3JpYmUiLCJiZWZvcmVBbGwiLCJleHRlbmRBc3luY1RpbWVvdXQiLCJ0ZXN0IiwiZXhwZWN0IiwiU0NSQVBFUlMiLCJvdHNhckhhaGF5YWwiLCJ0b0JlRGVmaW5lZCIsImxvZ2luRmllbGRzIiwidG9Db250YWluIiwibWF5YmVUZXN0Q29tcGFueUFQSSIsImNvbmZpZyIsImNvbXBhbnlBUEkiLCJpbnZhbGlkUGFzc3dvcmQiLCJvcHRpb25zIiwiY29tcGFueUlkIiwic2NyYXBlciIsIk90c2FySGFoYXlhbFNjcmFwZXIiLCJyZXN1bHQiLCJzY3JhcGUiLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwic3VjY2VzcyIsInRvQmVGYWxzeSIsImVycm9yVHlwZSIsInRvQmUiLCJMb2dpblJlc3VsdHMiLCJJbnZhbGlkUGFzc3dvcmQiLCJjcmVkZW50aWFscyIsImVycm9yIiwiZXJyb3JNZXNzYWdlIiwidHJpbSIsInRvQmVUcnV0aHkiLCJleHBvcnRUcmFuc2FjdGlvbnMiLCJhY2NvdW50cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9vdHNhci1oYWhheWFsLnRlc3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE90c2FySGFoYXlhbFNjcmFwZXIgZnJvbSAnLi9vdHNhci1oYWhheWFsJztcbmltcG9ydCB7XG4gIG1heWJlVGVzdENvbXBhbnlBUEksIGV4dGVuZEFzeW5jVGltZW91dCwgZ2V0VGVzdHNDb25maWcsIGV4cG9ydFRyYW5zYWN0aW9ucyxcbn0gZnJvbSAnLi4vdGVzdHMvdGVzdHMtdXRpbHMnO1xuaW1wb3J0IHsgU0NSQVBFUlMgfSBmcm9tICcuLi9kZWZpbml0aW9ucyc7XG5pbXBvcnQgeyBMb2dpblJlc3VsdHMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInO1xuXG5jb25zdCBDT01QQU5ZX0lEID0gJ290c2FySGFoYXlhbCc7IC8vIFRPRE8gdGhpcyBwcm9wZXJ0eSBzaG91bGQgYmUgaGFyZC1jb2RlZCBpbiB0aGUgcHJvdmlkZXJcbmNvbnN0IHRlc3RzQ29uZmlnID0gZ2V0VGVzdHNDb25maWcoKTtcblxuZGVzY3JpYmUoJ090c2FySGFoYXlhbCBsZWdhY3kgc2NyYXBlcicsICgpID0+IHtcbiAgYmVmb3JlQWxsKCgpID0+IHtcbiAgICBleHRlbmRBc3luY1RpbWVvdXQoKTsgLy8gVGhlIGRlZmF1bHQgdGltZW91dCBpcyA1IHNlY29uZHMgcGVyIGFzeW5jIHRlc3QsIHRoaXMgZnVuY3Rpb24gZXh0ZW5kcyB0aGUgdGltZW91dCB2YWx1ZVxuICB9KTtcblxuICB0ZXN0KCdzaG91bGQgZXhwb3NlIGxvZ2luIGZpZWxkcyBpbiBzY3JhcGVycyBjb25zdGFudCcsICgpID0+IHtcbiAgICBleHBlY3QoU0NSQVBFUlMub3RzYXJIYWhheWFsKS50b0JlRGVmaW5lZCgpO1xuICAgIGV4cGVjdChTQ1JBUEVSUy5vdHNhckhhaGF5YWwubG9naW5GaWVsZHMpLnRvQ29udGFpbigndXNlcm5hbWUnKTtcbiAgICBleHBlY3QoU0NSQVBFUlMub3RzYXJIYWhheWFsLmxvZ2luRmllbGRzKS50b0NvbnRhaW4oJ3Bhc3N3b3JkJyk7XG4gIH0pO1xuXG4gIG1heWJlVGVzdENvbXBhbnlBUEkoQ09NUEFOWV9JRCwgKGNvbmZpZykgPT4gY29uZmlnLmNvbXBhbnlBUEkuaW52YWxpZFBhc3N3b3JkKSgnc2hvdWxkIGZhaWwgb24gaW52YWxpZCB1c2VyL3Bhc3N3b3JkXCInLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIC4uLnRlc3RzQ29uZmlnLm9wdGlvbnMsXG4gICAgICBjb21wYW55SWQ6IENPTVBBTllfSUQsXG4gICAgfTtcblxuICAgIGNvbnN0IHNjcmFwZXIgPSBuZXcgT3RzYXJIYWhheWFsU2NyYXBlcihvcHRpb25zKTtcblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNjcmFwZXIuc2NyYXBlKHsgdXNlcm5hbWU6ICdlMTBzMTInLCBwYXNzd29yZDogJzNmM3NzM2QnIH0pO1xuXG4gICAgZXhwZWN0KHJlc3VsdCkudG9CZURlZmluZWQoKTtcbiAgICBleHBlY3QocmVzdWx0LnN1Y2Nlc3MpLnRvQmVGYWxzeSgpO1xuICAgIGV4cGVjdChyZXN1bHQuZXJyb3JUeXBlKS50b0JlKExvZ2luUmVzdWx0cy5JbnZhbGlkUGFzc3dvcmQpO1xuICB9KTtcblxuICBtYXliZVRlc3RDb21wYW55QVBJKENPTVBBTllfSUQpKCdzaG91bGQgc2NyYXBlIHRyYW5zYWN0aW9uc1wiJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAuLi50ZXN0c0NvbmZpZy5vcHRpb25zLFxuICAgICAgY29tcGFueUlkOiBDT01QQU5ZX0lELFxuICAgIH07XG5cbiAgICBjb25zdCBzY3JhcGVyID0gbmV3IE90c2FySGFoYXlhbFNjcmFwZXIob3B0aW9ucyk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2NyYXBlci5zY3JhcGUodGVzdHNDb25maWcuY3JlZGVudGlhbHMub3RzYXJIYWhheWFsKTtcbiAgICBleHBlY3QocmVzdWx0KS50b0JlRGVmaW5lZCgpO1xuICAgIGNvbnN0IGVycm9yID0gYCR7cmVzdWx0LmVycm9yVHlwZSB8fCAnJ30gJHtyZXN1bHQuZXJyb3JNZXNzYWdlIHx8ICcnfWAudHJpbSgpO1xuICAgIGV4cGVjdChlcnJvcikudG9CZSgnJyk7XG4gICAgZXhwZWN0KHJlc3VsdC5zdWNjZXNzKS50b0JlVHJ1dGh5KCk7XG5cbiAgICBleHBvcnRUcmFuc2FjdGlvbnMoQ09NUEFOWV9JRCwgcmVzdWx0LmFjY291bnRzIHx8IFtdKTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLElBQUFBLGFBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLFdBQUEsR0FBQUQsT0FBQTtBQUdBLElBQUFFLFlBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLHVCQUFBLEdBQUFILE9BQUE7QUFBMkQsU0FBQUQsdUJBQUFLLEdBQUEsV0FBQUEsR0FBQSxJQUFBQSxHQUFBLENBQUFDLFVBQUEsR0FBQUQsR0FBQSxLQUFBRSxPQUFBLEVBQUFGLEdBQUE7QUFBQSxTQUFBRyxRQUFBQyxNQUFBLEVBQUFDLGNBQUEsUUFBQUMsSUFBQSxHQUFBQyxNQUFBLENBQUFELElBQUEsQ0FBQUYsTUFBQSxPQUFBRyxNQUFBLENBQUFDLHFCQUFBLFFBQUFDLE9BQUEsR0FBQUYsTUFBQSxDQUFBQyxxQkFBQSxDQUFBSixNQUFBLE9BQUFDLGNBQUEsRUFBQUksT0FBQSxHQUFBQSxPQUFBLENBQUFDLE1BQUEsV0FBQUMsR0FBQSxXQUFBSixNQUFBLENBQUFLLHdCQUFBLENBQUFSLE1BQUEsRUFBQU8sR0FBQSxFQUFBRSxVQUFBLE1BQUFQLElBQUEsQ0FBQVEsSUFBQSxDQUFBQyxLQUFBLENBQUFULElBQUEsRUFBQUcsT0FBQSxZQUFBSCxJ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