israeli-bank-scrapers 6.1.1 → 6.1.3
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.
- package/lib/assertNever.js +7 -5
- package/lib/constants.js +16 -13
- package/lib/definitions.js +113 -109
- package/lib/helpers/browser.js +13 -9
- package/lib/helpers/dates.js +19 -18
- package/lib/helpers/debug.js +9 -9
- package/lib/helpers/elements-interactions.js +82 -78
- package/lib/helpers/fetch.js +85 -82
- package/lib/helpers/navigation.js +28 -24
- package/lib/helpers/storage.js +11 -10
- package/lib/helpers/transactions.js +32 -33
- package/lib/helpers/waiting.js +42 -45
- package/lib/index.js +82 -15
- package/lib/scrapers/amex.js +13 -11
- package/lib/scrapers/amex.test.d.ts +1 -0
- package/lib/scrapers/amex.test.js +49 -0
- package/lib/scrapers/base-beinleumi-group.d.ts +32 -0
- package/lib/scrapers/base-beinleumi-group.js +350 -234
- package/lib/scrapers/base-isracard-amex.js +273 -273
- package/lib/scrapers/base-scraper-with-browser.js +263 -241
- package/lib/scrapers/base-scraper-with-browser.test.d.ts +1 -0
- package/lib/scrapers/base-scraper-with-browser.test.js +53 -0
- package/lib/scrapers/base-scraper.js +82 -82
- package/lib/scrapers/behatsdaa.js +103 -98
- package/lib/scrapers/behatsdaa.test.d.ts +1 -0
- package/lib/scrapers/behatsdaa.test.js +46 -0
- package/lib/scrapers/beinleumi.js +13 -11
- package/lib/scrapers/beinleumi.test.d.ts +1 -0
- package/lib/scrapers/beinleumi.test.js +47 -0
- package/lib/scrapers/beyahad-bishvilha.js +132 -132
- package/lib/scrapers/beyahad-bishvilha.test.d.ts +1 -0
- package/lib/scrapers/beyahad-bishvilha.test.js +47 -0
- package/lib/scrapers/discount.js +101 -97
- package/lib/scrapers/discount.test.d.ts +1 -0
- package/lib/scrapers/discount.test.js +49 -0
- package/lib/scrapers/errors.js +25 -22
- package/lib/scrapers/factory.js +67 -66
- package/lib/scrapers/factory.test.d.ts +1 -0
- package/lib/scrapers/factory.test.js +19 -0
- package/lib/scrapers/hapoalim.js +175 -162
- package/lib/scrapers/hapoalim.test.d.ts +1 -0
- package/lib/scrapers/hapoalim.test.js +47 -0
- package/lib/scrapers/interface.js +5 -2
- package/lib/scrapers/isracard.js +13 -11
- package/lib/scrapers/isracard.test.d.ts +1 -0
- package/lib/scrapers/isracard.test.js +49 -0
- package/lib/scrapers/leumi.js +170 -167
- package/lib/scrapers/leumi.test.d.ts +1 -0
- package/lib/scrapers/leumi.test.js +47 -0
- package/lib/scrapers/massad.js +13 -11
- package/lib/scrapers/max.js +261 -261
- package/lib/scrapers/max.test.d.ts +1 -0
- package/lib/scrapers/max.test.js +65 -0
- package/lib/scrapers/mercantile.js +16 -14
- package/lib/scrapers/mercantile.test.d.ts +1 -0
- package/lib/scrapers/mercantile.test.js +45 -0
- package/lib/scrapers/mizrahi.js +154 -158
- package/lib/scrapers/mizrahi.test.d.ts +1 -0
- package/lib/scrapers/mizrahi.test.js +53 -0
- package/lib/scrapers/one-zero-queries.js +7 -4
- package/lib/scrapers/one-zero.js +221 -176
- package/lib/scrapers/one-zero.test.d.ts +1 -0
- package/lib/scrapers/one-zero.test.js +51 -0
- package/lib/scrapers/otsar-hahayal.js +13 -11
- package/lib/scrapers/otsar-hahayal.test.d.ts +1 -0
- package/lib/scrapers/otsar-hahayal.test.js +47 -0
- package/lib/scrapers/pagi.js +13 -11
- package/lib/scrapers/pagi.test.d.ts +1 -0
- package/lib/scrapers/pagi.test.js +47 -0
- package/lib/scrapers/union-bank.js +173 -172
- package/lib/scrapers/union-bank.test.d.ts +1 -0
- package/lib/scrapers/union-bank.test.js +47 -0
- package/lib/scrapers/visa-cal.d.ts +2 -0
- package/lib/scrapers/visa-cal.js +263 -254
- package/lib/scrapers/visa-cal.test.d.ts +1 -0
- package/lib/scrapers/visa-cal.test.js +49 -0
- package/lib/scrapers/yahav.js +206 -190
- package/lib/scrapers/yahav.test.d.ts +1 -0
- package/lib/scrapers/yahav.test.js +49 -0
- package/lib/transactions.js +16 -13
- package/package.json +9 -4
package/lib/scrapers/hapoalim.js
CHANGED
|
@@ -1,185 +1,198 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _moment = _interopRequireDefault(require("moment"));
|
|
8
|
+
var _uuid = require("uuid");
|
|
9
|
+
var _debug = require("../helpers/debug");
|
|
10
|
+
var _fetch = require("../helpers/fetch");
|
|
11
|
+
var _navigation = require("../helpers/navigation");
|
|
12
|
+
var _waiting = require("../helpers/waiting");
|
|
13
|
+
var _transactions = require("../transactions");
|
|
14
|
+
var _baseScraperWithBrowser = require("./base-scraper-with-browser");
|
|
15
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
16
|
+
const debug = (0, _debug.getDebug)('hapoalim');
|
|
15
17
|
const DATE_FORMAT = 'YYYYMMDD';
|
|
18
|
+
|
|
19
|
+
// eslint-disable-next-line @typescript-eslint/no-namespace
|
|
20
|
+
|
|
16
21
|
function convertTransactions(txns) {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
22
|
+
return txns.map(txn => {
|
|
23
|
+
const isOutbound = txn.eventActivityTypeCode === 2;
|
|
24
|
+
let memo = '';
|
|
25
|
+
if (txn.beneficiaryDetailsData) {
|
|
26
|
+
const {
|
|
27
|
+
partyHeadline,
|
|
28
|
+
partyName,
|
|
29
|
+
messageHeadline,
|
|
30
|
+
messageDetail
|
|
31
|
+
} = txn.beneficiaryDetailsData;
|
|
32
|
+
const memoLines = [];
|
|
33
|
+
if (partyHeadline) {
|
|
34
|
+
memoLines.push(partyHeadline);
|
|
35
|
+
}
|
|
36
|
+
if (partyName) {
|
|
37
|
+
memoLines.push(`${partyName}.`);
|
|
38
|
+
}
|
|
39
|
+
if (messageHeadline) {
|
|
40
|
+
memoLines.push(messageHeadline);
|
|
41
|
+
}
|
|
42
|
+
if (messageDetail) {
|
|
43
|
+
memoLines.push(`${messageDetail}.`);
|
|
44
|
+
}
|
|
45
|
+
if (memoLines.length) {
|
|
46
|
+
memo = memoLines.join(' ');
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const result = {
|
|
50
|
+
type: _transactions.TransactionTypes.Normal,
|
|
51
|
+
identifier: txn.referenceNumber,
|
|
52
|
+
date: (0, _moment.default)(txn.eventDate, DATE_FORMAT).toISOString(),
|
|
53
|
+
processedDate: (0, _moment.default)(txn.valueDate, DATE_FORMAT).toISOString(),
|
|
54
|
+
originalAmount: isOutbound ? -txn.eventAmount : txn.eventAmount,
|
|
55
|
+
originalCurrency: 'ILS',
|
|
56
|
+
chargedAmount: isOutbound ? -txn.eventAmount : txn.eventAmount,
|
|
57
|
+
description: txn.activityDescription || '',
|
|
58
|
+
status: txn.serialNumber === 0 ? _transactions.TransactionStatuses.Pending : _transactions.TransactionStatuses.Completed,
|
|
59
|
+
memo
|
|
60
|
+
};
|
|
61
|
+
return result;
|
|
62
|
+
});
|
|
53
63
|
}
|
|
54
64
|
async function getRestContext(page) {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
65
|
+
await (0, _waiting.waitUntil)(() => {
|
|
66
|
+
return page.evaluate(() => !!window.bnhpApp);
|
|
67
|
+
}, 'waiting for app data load');
|
|
68
|
+
const result = await page.evaluate(() => {
|
|
69
|
+
return window.bnhpApp.restContext;
|
|
70
|
+
});
|
|
71
|
+
return result.slice(1);
|
|
62
72
|
}
|
|
63
73
|
async function fetchPoalimXSRFWithinPage(page, url, pageUuid) {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
+
const cookies = await page.cookies();
|
|
75
|
+
const XSRFCookie = cookies.find(cookie => cookie.name === 'XSRF-TOKEN');
|
|
76
|
+
const headers = {};
|
|
77
|
+
if (XSRFCookie != null) {
|
|
78
|
+
headers['X-XSRF-TOKEN'] = XSRFCookie.value;
|
|
79
|
+
}
|
|
80
|
+
headers.pageUuid = pageUuid;
|
|
81
|
+
headers.uuid = (0, _uuid.v4)();
|
|
82
|
+
headers['Content-Type'] = 'application/json;charset=UTF-8';
|
|
83
|
+
return (0, _fetch.fetchPostWithinPage)(page, url, [], headers);
|
|
74
84
|
}
|
|
75
85
|
async function getExtraScrap(txnsResult, baseUrl, page, accountNumber) {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
86
|
+
const promises = txnsResult.transactions.map(async transaction => {
|
|
87
|
+
const {
|
|
88
|
+
pfmDetails,
|
|
89
|
+
serialNumber
|
|
90
|
+
} = transaction;
|
|
91
|
+
if (serialNumber !== 0) {
|
|
92
|
+
const url = `${baseUrl}${pfmDetails}&accountId=${accountNumber}&lang=he`;
|
|
93
|
+
const extraTransactionDetails = (await (0, _fetch.fetchGetWithinPage)(page, url)) || [];
|
|
94
|
+
if (extraTransactionDetails && extraTransactionDetails.length) {
|
|
95
|
+
const {
|
|
96
|
+
transactionNumber
|
|
97
|
+
} = extraTransactionDetails[0];
|
|
98
|
+
if (transactionNumber) {
|
|
99
|
+
return {
|
|
100
|
+
...transaction,
|
|
101
|
+
referenceNumber: transactionNumber
|
|
102
|
+
};
|
|
87
103
|
}
|
|
88
|
-
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return transaction;
|
|
107
|
+
});
|
|
108
|
+
const res = await Promise.all(promises);
|
|
109
|
+
return {
|
|
110
|
+
transactions: res
|
|
111
|
+
};
|
|
92
112
|
}
|
|
93
113
|
async function getAccountTransactions(baseUrl, apiSiteUrl, page, accountNumber, startDate, endDate, additionalTransactionInformation = false) {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
: txnsResult;
|
|
99
|
-
return convertTransactions(finalResult?.transactions ?? []);
|
|
114
|
+
const txnsUrl = `${apiSiteUrl}/current-account/transactions?accountId=${accountNumber}&numItemsPerPage=1000&retrievalEndDate=${endDate}&retrievalStartDate=${startDate}&sortCode=1`;
|
|
115
|
+
const txnsResult = await fetchPoalimXSRFWithinPage(page, txnsUrl, '/current-account/transactions');
|
|
116
|
+
const finalResult = additionalTransactionInformation && txnsResult?.transactions.length ? await getExtraScrap(txnsResult, baseUrl, page, accountNumber) : txnsResult;
|
|
117
|
+
return convertTransactions(finalResult?.transactions ?? []);
|
|
100
118
|
}
|
|
101
119
|
async function getAccountBalance(apiSiteUrl, page, accountNumber) {
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
120
|
+
const balanceAndCreditLimitUrl = `${apiSiteUrl}/current-account/composite/balanceAndCreditLimit?accountId=${accountNumber}&view=details&lang=he`;
|
|
121
|
+
const balanceAndCreditLimit = await (0, _fetch.fetchGetWithinPage)(page, balanceAndCreditLimitUrl);
|
|
122
|
+
return balanceAndCreditLimit?.currentBalance;
|
|
105
123
|
}
|
|
106
124
|
async function fetchAccountData(page, baseUrl, options) {
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
const txns = await getAccountTransactions(baseUrl, apiSiteUrl, page, accountNumber, startDateStr, endDateStr, additionalTransactionInformation);
|
|
131
|
-
accounts.push({
|
|
132
|
-
accountNumber,
|
|
133
|
-
balance,
|
|
134
|
-
txns,
|
|
135
|
-
});
|
|
125
|
+
const restContext = await getRestContext(page);
|
|
126
|
+
const apiSiteUrl = `${baseUrl}/${restContext}`;
|
|
127
|
+
const accountDataUrl = `${baseUrl}/ServerServices/general/accounts`;
|
|
128
|
+
debug('fetching accounts data');
|
|
129
|
+
const accountsInfo = (await (0, _fetch.fetchGetWithinPage)(page, accountDataUrl)) || [];
|
|
130
|
+
debug('got %d accounts, fetching txns and balance', accountsInfo.length);
|
|
131
|
+
const defaultStartMoment = (0, _moment.default)().subtract(1, 'years').add(1, 'day');
|
|
132
|
+
const startDate = options.startDate || defaultStartMoment.toDate();
|
|
133
|
+
const startMoment = _moment.default.max(defaultStartMoment, (0, _moment.default)(startDate));
|
|
134
|
+
const {
|
|
135
|
+
additionalTransactionInformation
|
|
136
|
+
} = options;
|
|
137
|
+
const startDateStr = startMoment.format(DATE_FORMAT);
|
|
138
|
+
const endDateStr = (0, _moment.default)().format(DATE_FORMAT);
|
|
139
|
+
const accounts = [];
|
|
140
|
+
for (const account of accountsInfo) {
|
|
141
|
+
let balance;
|
|
142
|
+
const accountNumber = `${account.bankNumber}-${account.branchNumber}-${account.accountNumber}`;
|
|
143
|
+
const isActiveAccount = account.accountClosingReasonCode === 0;
|
|
144
|
+
if (isActiveAccount) {
|
|
145
|
+
balance = await getAccountBalance(apiSiteUrl, page, accountNumber);
|
|
146
|
+
} else {
|
|
147
|
+
debug('Skipping balance for a closed account, balance will be undefined');
|
|
136
148
|
}
|
|
137
|
-
const
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
149
|
+
const txns = await getAccountTransactions(baseUrl, apiSiteUrl, page, accountNumber, startDateStr, endDateStr, additionalTransactionInformation);
|
|
150
|
+
accounts.push({
|
|
151
|
+
accountNumber,
|
|
152
|
+
balance,
|
|
153
|
+
txns
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
const accountData = {
|
|
157
|
+
success: true,
|
|
158
|
+
accounts
|
|
159
|
+
};
|
|
160
|
+
debug('fetching ended');
|
|
161
|
+
return accountData;
|
|
143
162
|
}
|
|
144
163
|
function getPossibleLoginResults(baseUrl) {
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
];
|
|
151
|
-
urls[base_scraper_with_browser_1.LoginResults.InvalidPassword] = [
|
|
152
|
-
`${baseUrl}/AUTHENTICATE/LOGON?flow=AUTHENTICATE&state=LOGON&errorcode=1.6&callme=false`,
|
|
153
|
-
];
|
|
154
|
-
urls[base_scraper_with_browser_1.LoginResults.ChangePassword] = [
|
|
155
|
-
`${baseUrl}/MCP/START?flow=MCP&state=START&expiredDate=null`,
|
|
156
|
-
/\/ABOUTTOEXPIRE\/START/i,
|
|
157
|
-
];
|
|
158
|
-
return urls;
|
|
164
|
+
const urls = {};
|
|
165
|
+
urls[_baseScraperWithBrowser.LoginResults.Success] = [`${baseUrl}/portalserver/HomePage`, `${baseUrl}/ng-portals-bt/rb/he/homepage`, `${baseUrl}/ng-portals/rb/he/homepage`];
|
|
166
|
+
urls[_baseScraperWithBrowser.LoginResults.InvalidPassword] = [`${baseUrl}/AUTHENTICATE/LOGON?flow=AUTHENTICATE&state=LOGON&errorcode=1.6&callme=false`];
|
|
167
|
+
urls[_baseScraperWithBrowser.LoginResults.ChangePassword] = [`${baseUrl}/MCP/START?flow=MCP&state=START&expiredDate=null`, /\/ABOUTTOEXPIRE\/START/i];
|
|
168
|
+
return urls;
|
|
159
169
|
}
|
|
160
170
|
function createLoginFields(credentials) {
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
171
|
+
return [{
|
|
172
|
+
selector: '#userCode',
|
|
173
|
+
value: credentials.userCode
|
|
174
|
+
}, {
|
|
175
|
+
selector: '#password',
|
|
176
|
+
value: credentials.password
|
|
177
|
+
}];
|
|
165
178
|
}
|
|
166
|
-
class HapoalimScraper extends
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
179
|
+
class HapoalimScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
|
|
180
|
+
// eslint-disable-next-line class-methods-use-this
|
|
181
|
+
get baseUrl() {
|
|
182
|
+
return 'https://login.bankhapoalim.co.il';
|
|
183
|
+
}
|
|
184
|
+
getLoginOptions(credentials) {
|
|
185
|
+
return {
|
|
186
|
+
loginUrl: `${this.baseUrl}/cgi-bin/poalwwwc?reqName=getLogonPage`,
|
|
187
|
+
fields: createLoginFields(credentials),
|
|
188
|
+
submitButtonSelector: '.login-btn',
|
|
189
|
+
postAction: async () => (0, _navigation.waitForRedirect)(this.page),
|
|
190
|
+
possibleResults: getPossibleLoginResults(this.baseUrl)
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
async fetchData() {
|
|
194
|
+
return fetchAccountData(this.page, this.baseUrl, this.options);
|
|
195
|
+
}
|
|
183
196
|
}
|
|
184
|
-
exports.default = HapoalimScraper;
|
|
185
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFwb2FsaW0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyYXBlcnMvaGFwb2FsaW0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvREFBNEI7QUFFNUIsK0JBQW1DO0FBQ25DLDRDQUE0QztBQUM1Qyw0Q0FBMkU7QUFDM0Usc0RBQXdEO0FBQ3hELGdEQUErQztBQUMvQyxrREFBb0g7QUFDcEgsMkVBQThHO0FBRzlHLE1BQU0sS0FBSyxHQUFHLElBQUEsZ0JBQVEsRUFBQyxVQUFVLENBQUMsQ0FBQztBQUVuQyxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUM7QUFvRC9CLFNBQVMsbUJBQW1CLENBQUMsSUFBMEI7SUFDckQsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1FBQ3BCLE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxxQkFBcUIsS0FBSyxDQUFDLENBQUM7UUFFbkQsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ2QsSUFBSSxHQUFHLENBQUMsc0JBQXNCLEVBQUU7WUFDOUIsTUFBTSxFQUFFLGFBQWEsRUFBRSxTQUFTLEVBQUUsZUFBZSxFQUFFLGFBQWEsRUFBRSxHQUFHLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQztZQUNoRyxNQUFNLFNBQVMsR0FBYSxFQUFFLENBQUM7WUFDL0IsSUFBSSxhQUFhLEVBQUU7Z0JBQ2pCLFNBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7YUFDL0I7WUFFRCxJQUFJLFNBQVMsRUFBRTtnQkFDYixTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsU0FBUyxHQUFHLENBQUMsQ0FBQzthQUNqQztZQUVELElBQUksZUFBZSxFQUFFO2dCQUNuQixTQUFTLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO2FBQ2pDO1lBRUQsSUFBSSxhQUFhLEVBQUU7Z0JBQ2pCLFNBQVMsQ0FBQyxJQUFJLENBQUMsR0FBRyxhQUFhLEdBQUcsQ0FBQyxDQUFD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QUFDLElBQUEsNEJBQWUsRUFBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQ2xELGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1NBQ3ZELENBQUM7SUFDSixDQUFDO0lBRUQsS0FBSyxDQUFDLFNBQVM7UUFDYixPQUFPLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDakUsQ0FBQztDQUNGO0FBRUQsa0JBQWUsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgdHlwZSBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyJztcbmltcG9ydCB7IHY0IGFzIHV1aWQ0IH0gZnJvbSAndXVpZCc7XG5pbXBvcnQgeyBnZXREZWJ1ZyB9IGZyb20gJy4uL2hlbHBlcnMvZGVidWcnO1xuaW1wb3J0IHsgZmV0Y2hHZXRXaXRoaW5QYWdlLCBmZXRjaFBvc3RXaXRoaW5QYWdlIH0gZnJvbSAnLi4vaGVscGVycy9mZXRjaCc7XG5pbXBvcnQgeyB3YWl0Rm9yUmVkaXJlY3QgfSBmcm9tICcuLi9oZWxwZXJzL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgd2FpdFVudGlsIH0gZnJvbSAnLi4vaGVscGVycy93YWl0aW5nJztcbmltcG9ydCB7IHR5cGUgVHJhbnNhY3Rpb24sIFRyYW5zYWN0aW9uU3RhdHVzZXMsIFRyYW5zYWN0aW9uVHlwZXMsIHR5cGUgVHJhbnNhY3Rpb25zQWNjb3VudCB9IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBCYXNlU2NyYXBlcldpdGhCcm93c2VyLCBMb2dpblJlc3VsdHMsIHR5cGUgUG9zc2libGVMb2dpblJlc3VsdHMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInO1xuaW1wb3J0IHsgdHlwZSBTY3JhcGVyT3B0aW9ucyB9IGZyb20gJy4vaW50ZXJmYWNlJztcblxuY29uc3QgZGVidWcgPSBnZXREZWJ1ZygnaGFwb2FsaW0nKTtcblxuY29uc3QgREFURV9GT1JNQVQgPSAnWVlZWU1NREQnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5hbWVzcGFjZVxuZGVjbGFyZSBuYW1lc3BhY2Ugd2luZG93IHtcbiAgY29uc3QgYm5ocEFwcDogYW55O1xufVxuXG5pbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uIHtcbiAgc2VyaWFsTnVtYmVyPzogbnVtYmVyO1xuICBhY3Rpdml0eURlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBldmVudEFtb3VudDogbnVtYmVyO1xuICB2YWx1ZURhdGU/OiBzdHJpbmc7XG4gIGV2ZW50RGF0ZT86IHN0cmluZztcbiAgcmVmZXJlbmNlTnVtYmVyPzogbnVtYmVyO1xuICBTY3JhcGVkVHJhbnNhY3Rpb24/OiBzdHJpbmc7XG4gIGV2ZW50QWN0aXZpdHlUeXBlQ29kZTogbnVtYmVyO1xuICBjdXJyZW50QmFsYW5jZTogbnVtYmVyO1xuICBwZm1EZXRhaWxzOiBzdHJpbmc7XG4gIGJlbmVmaWNpYXJ5RGV0YWlsc0RhdGE/OiB7XG4gICAgcGFydHlIZWFkbGluZT86IHN0cmluZztcbiAgICBwYXJ0eU5hbWU/OiBzdHJpbmc7XG4gICAgbWVzc2FnZUhlYWRsaW5lPzogc3RyaW5nO1xuICAgIG1lc3NhZ2VEZXRhaWw/OiBzdHJpbmc7XG4gIH07XG59XG5cbmludGVyZmFjZSBTY3JhcGVkUGZtVHJhbnNhY3Rpb24ge1xuICB0cmFuc2FjdGlvbk51bWJlcjogbnVtYmVyO1xufVxuXG50eXBlIEZldGNoZWRBY2NvdW50RGF0YSA9IHtcbiAgYmFua051bWJlcjogc3RyaW5nO1xuICBhY2NvdW50TnVtYmVyOiBzdHJpbmc7XG4gIGJyYW5jaE51bWJlcjogc3RyaW5nO1xuICBhY2NvdW50Q2xvc2luZ1JlYXNvbkNvZGU6IG51bWJlcjtcbn1bXTtcblxudHlwZSBGZXRjaGVkQWNjb3VudFRyYW5zYWN0aW9uc0RhdGEgPSB7XG4gIHRyYW5zYWN0aW9uczogU2NyYXBlZFRyYW5zYWN0aW9uW107XG59O1xuXG50eXBlIEJhbGFuY2VBbmRDcmVkaXRMaW1pdCA9IHtcbiAgY3JlZGl0TGltaXRBbW91bnQ6IG51bWJlcjtcbiAgY3JlZGl0TGltaXREZXNjcmlwdGlvbjogc3RyaW5nO1xuICBjcmVkaXRMaW1pdFV0aWxpemF0aW9uQW1vdW50OiBudW1iZXI7XG4gIGNyZWRpdExpbWl0VXRpbGl6YXRpb25FeGlzdGFuY2VDb2RlOiBudW1iZXI7XG4gIGNyZWRpdExpbWl0VXRpbGl6YXRpb25QZXJjZW50OiBudW1iZXI7XG4gIGN1cnJlbnRBY2NvdW50TGltaXRzQW1vdW50OiBudW1iZXI7XG4gIGN1cnJlbnRCYWxhbmNlOiBudW1iZXI7XG4gIHdpdGhkcmF3YWxCYWxhbmNlOiBudW1iZXI7XG59O1xuXG5mdW5jdGlvbiBjb252ZXJ0VHJhbnNhY3Rpb25zKHR4bnM6IFNjcmFwZWRUcmFuc2FjdGlvbltdKTogVHJhbnNhY3Rpb25bXSB7XG4gIHJldHVybiB0eG5zLm1hcCh0eG4gPT4ge1xuICAgIGNvbnN0IGlzT3V0Ym91bmQgPSB0eG4uZXZlbnRBY3Rpdml0eVR5cGVDb2RlID09PSAyO1xuXG4gICAgbGV0IG1lbW8gPSAnJztcbiAgICBpZiAodHhuLmJlbmVmaWNpYXJ5RGV0YWlsc0RhdGEpIHtcbiAgICAgIGNvbnN0IHsgcGFydHlIZWFkbGluZSwgcGFydHlOYW1lLCBtZXNzYWdlSGVhZGxpbmUsIG1lc3NhZ2VEZXRhaWwgfSA9IHR4bi5iZW5lZmljaWFyeURldGFpbHNEYXRhO1xuICAgICAgY29uc3QgbWVtb0xpbmVzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgaWYgKHBhcnR5SGVhZGxpbmUpIHtcbiAgICAgICAgbWVtb0xpbmVzLnB1c2gocGFydHlIZWFkbGluZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwYXJ0eU5hbWUpIHtcbiAgICAgICAgbWVtb0xpbmVzLnB1c2goYCR7cGFydHlOYW1lfS5gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1lc3NhZ2VIZWFkbGluZSkge1xuICAgICAgICBtZW1vTGluZXMucHVzaChtZXNzYWdlSGVhZGxpbmUpO1xuICAgICAgfVxuXG4gICAgICBpZiAobWVzc2FnZURldGFpbCkge1xuICAgICAgICBtZW1vTGluZXMucHVzaChgJHttZXNzYWdlRGV0YWlsfS5gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1lbW9MaW5lcy5sZW5ndGgpIHtcbiAgICAgICAgbWVtbyA9IG1lbW9MaW5lcy5qb2luKCcgJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0OiBUcmFuc2FjdGlvbiA9IHtcbiAgICAgIHR5cGU6IFRyYW5zYWN0aW9uVHlwZXMuTm9ybWFsLFxuICAgICAgaWRlbnRpZmllcjogdHhuLnJlZmVyZW5jZU51bWJlcixcbiAgICAgIGRhdGU6IG1vbWVudCh0eG4uZXZlbnREYXRlLCBEQVRFX0ZPUk1BVCkudG9JU09TdHJpbmcoKSxcbiAgICAgIHByb2Nlc3NlZERhdGU6IG1vbWVudCh0eG4udmFsdWVEYXRlLCBEQVRFX0ZPUk1BVCkudG9JU09TdHJpbmcoKSxcbiAgICAgIG9yaWdpbmFsQW1vdW50OiBpc091dGJvdW5kID8gLXR4bi5ldmVudEFtb3VudCA6IHR4bi5ldmVudEFtb3VudCxcbiAgICAgIG9yaWdpbmFsQ3VycmVuY3k6ICdJTFMnLFxuICAgICAgY2hhcmdlZEFtb3VudDogaXNPdXRib3VuZCA/IC10eG4uZXZlbnRBbW91bnQgOiB0eG4uZXZlbnRBbW91bnQsXG4gICAgICBkZXNjcmlwdGlvbjogdHhuLmFjdGl2aXR5RGVzY3JpcHRpb24gfHwgJycsXG4gICAgICBzdGF0dXM6IHR4bi5zZXJpYWxOdW1iZXIgPT09IDAgPyBUcmFuc2FjdGlvblN0YXR1c2VzLlBlbmRpbmcgOiBUcmFuc2FjdGlvblN0YXR1c2VzLkNvbXBsZXRlZCxcbiAgICAgIG1lbW8sXG4gICAgfTtcblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRSZXN0Q29udGV4dChwYWdlOiBQYWdlKSB7XG4gIGF3YWl0IHdhaXRVbnRpbCgoKSA9PiB7XG4gICAgcmV0dXJuIHBhZ2UuZXZhbHVhdGUoKCkgPT4gISF3aW5kb3cuYm5ocEFwcCk7XG4gIH0sICd3YWl0aW5nIGZvciBhcHAgZGF0YSBsb2FkJyk7XG5cbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcGFnZS5ldmFsdWF0ZSgoKSA9PiB7XG4gICAgcmV0dXJuIHdpbmRvdy5ibmhwQXBwLnJlc3RDb250ZXh0O1xuICB9KTtcblxuICByZXR1cm4gcmVzdWx0LnNsaWNlKDEpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaFBvYWxpbVhTUkZXaXRoaW5QYWdlKFxuICBwYWdlOiBQYWdlLFxuICB1cmw6IHN0cmluZyxcbiAgcGFnZVV1aWQ6IHN0cmluZyxcbik6IFByb21pc2U8RmV0Y2hlZEFjY291bnRUcmFuc2FjdGlvbnNEYXRhIHwgbnVsbD4ge1xuICBjb25zdCBjb29raWVzID0gYXdhaXQgcGFnZS5jb29raWVzKCk7XG4gIGNvbnN0IFhTUkZDb29raWUgPSBjb29raWVzLmZpbmQoY29va2llID0+IGNvb2tpZS5uYW1lID09PSAnWFNSRi1UT0tFTicpO1xuICBjb25zdCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gIGlmIChYU1JGQ29va2llICE9IG51bGwpIHtcbiAgICBoZWFkZXJzWydYLVhTUkYtVE9LRU4nXSA9IFhTUkZDb29raWUudmFsdWU7XG4gIH1cbiAgaGVhZGVycy5wYWdlVXVpZCA9IHBhZ2VVdWlkO1xuICBoZWFkZXJzLnV1aWQgPSB1dWlkNCgpO1xuICBoZWFkZXJzWydDb250ZW50LVR5cGUnXSA9ICdhcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9VVRGLTgnO1xuICByZXR1cm4gZmV0Y2hQb3N0V2l0aGluUGFnZTxGZXRjaGVkQWNjb3VudFRyYW5zYWN0aW9uc0RhdGE+KHBhZ2UsIHVybCwgW10sIGhlYWRlcnMpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRFeHRyYVNjcmFwKFxuICB0eG5zUmVzdWx0OiBGZXRjaGVkQWNjb3VudFRyYW5zYWN0aW9uc0RhdGEsXG4gIGJhc2VVcmw6IHN0cmluZyxcbiAgcGFnZTogUGFnZSxcbiAgYWNjb3VudE51bWJlcjogc3RyaW5nLFxuKTogUHJvbWlzZTxGZXRjaGVkQWNjb3VudFRyYW5zYWN0aW9uc0RhdGE+IHtcbiAgY29uc3QgcHJvbWlzZXMgPSB0eG5zUmVzdWx0LnRyYW5zYWN0aW9ucy5tYXAoYXN5bmMgKHRyYW5zYWN0aW9uOiBTY3JhcGVkVHJhbnNhY3Rpb24pOiBQcm9taXNlPFNjcmFwZWRUcmFuc2FjdGlvbj4gPT4ge1xuICAgIGNvbnN0IHsgcGZtRGV0YWlscywgc2VyaWFsTnVtYmVyIH0gPSB0cmFuc2FjdGlvbjtcbiAgICBpZiAoc2VyaWFsTnVtYmVyICE9PSAwKSB7XG4gICAgICBjb25zdCB1cmwgPSBgJHtiYXNlVXJsfSR7cGZtRGV0YWlsc30mYWNjb3VudElkPSR7YWNjb3VudE51bWJlcn0mbGFuZz1oZWA7XG4gICAgICBjb25zdCBleHRyYVRyYW5zYWN0aW9uRGV0YWlscyA9IChhd2FpdCBmZXRjaEdldFdpdGhpblBhZ2U8U2NyYXBlZFBmbVRyYW5zYWN0aW9uW10+KHBhZ2UsIHVybCkpIHx8IFtdO1xuICAgICAgaWYgKGV4dHJhVHJhbnNhY3Rpb25EZXRhaWxzICYmIGV4dHJhVHJhbnNhY3Rpb25EZXRhaWxzLmxlbmd0aCkge1xuICAgICAgICBjb25zdCB7IHRyYW5zYWN0aW9uTnVtYmVyIH0gPSBleHRyYVRyYW5zYWN0aW9uRGV0YWlsc1swXTtcbiAgICAgICAgaWYgKHRyYW5zYWN0aW9uTnVtYmVyKSB7XG4gICAgICAgICAgcmV0dXJuIHsgLi4udHJhbnNhY3Rpb24sIHJlZmVyZW5jZU51bWJlcjogdHJhbnNhY3Rpb25OdW1iZXIgfTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJhbnNhY3Rpb247XG4gIH0pO1xuICBjb25zdCByZXMgPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gIHJldHVybiB7IHRyYW5zYWN0aW9uczogcmVzIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEFjY291bnRUcmFuc2FjdGlvbnMoXG4gIGJhc2VVcmw6IHN0cmluZyxcbiAgYXBpU2l0ZVVybDogc3RyaW5nLFxuICBwYWdlOiBQYWdlLFxuICBhY2NvdW50TnVtYmVyOiBzdHJpbmcsXG4gIHN0YXJ0RGF0ZTogc3RyaW5nLFxuICBlbmREYXRlOiBzdHJpbmcsXG4gIGFkZGl0aW9uYWxUcmFuc2FjdGlvbkluZm9ybWF0aW9uID0gZmFsc2UsXG4pIHtcbiAgY29uc3QgdHhuc1VybCA9IGAke2FwaVNpdGVVcmx9L2N1cnJlbnQtYWNjb3VudC90cmFuc2FjdGlvbnM/YWNjb3VudElkPSR7YWNjb3VudE51bWJlcn0mbnVtSXRlbXNQZXJQYWdlPTEwMDAmcmV0cmlldmFsRW5kRGF0ZT0ke2VuZERhdGV9JnJldHJpZXZhbFN0YXJ0RGF0ZT0ke3N0YXJ0RGF0ZX0mc29ydENvZGU9MWA7XG4gIGNvbnN0IHR4bnNSZXN1bHQgPSBhd2FpdCBmZXRjaFBvYWxpbVhTUkZXaXRoaW5QYWdlKHBhZ2UsIHR4bnNVcmwsICcvY3VycmVudC1hY2NvdW50L3RyYW5zYWN0aW9ucycpO1xuXG4gIGNvbnN0IGZpbmFsUmVzdWx0ID1cbiAgICBhZGRpdGlvbmFsVHJhbnNhY3Rpb25JbmZvcm1hdGlvbiAmJiB0eG5zUmVzdWx0Py50cmFuc2FjdGlvbnMubGVuZ3RoXG4gICAgICA/IGF3YWl0IGdldEV4dHJhU2NyYXAodHhuc1Jlc3VsdCwgYmFzZVVybCwgcGFnZSwgYWNjb3VudE51bWJlcilcbiAgICAgIDogdHhuc1Jlc3VsdDtcblxuICByZXR1cm4gY29udmVydFRyYW5zYWN0aW9ucyhmaW5hbFJlc3VsdD8udHJhbnNhY3Rpb25zID8/IFtdKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QWNjb3VudEJhbGFuY2UoYXBpU2l0ZVVybDogc3RyaW5nLCBwYWdlOiBQYWdlLCBhY2NvdW50TnVtYmVyOiBzdHJpbmcpIHtcbiAgY29uc3QgYmFsYW5jZUFuZENyZWRpdExpbWl0VXJsID0gYCR7YXBpU2l0ZVVybH0vY3VycmVudC1hY2NvdW50L2NvbXBvc2l0ZS9iYWxhbmNlQW5kQ3JlZGl0TGltaXQ/YWNjb3VudElkPSR7YWNjb3VudE51bWJlcn0mdmlldz1kZXRhaWxzJmxhbmc9aGVgO1xuICBjb25zdCBiYWxhbmNlQW5kQ3JlZGl0TGltaXQgPSBhd2FpdCBmZXRjaEdldFdpdGhpblBhZ2U8QmFsYW5jZUFuZENyZWRpdExpbWl0PihwYWdlLCBiYWxhbmNlQW5kQ3JlZGl0TGltaXRVcmwpO1xuXG4gIHJldHVybiBiYWxhbmNlQW5kQ3JlZGl0TGltaXQ/LmN1cnJlbnRCYWxhbmNlO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaEFjY291bnREYXRhKHBhZ2U6IFBhZ2UsIGJhc2VVcmw6IHN0cmluZywgb3B0aW9uczogU2NyYXBlck9wdGlvbnMpIHtcbiAgY29uc3QgcmVzdENvbnRleHQgPSBhd2FpdCBnZXRSZXN0Q29udGV4dChwYWdlKTtcbiAgY29uc3QgYXBpU2l0ZVVybCA9IGAke2Jhc2VVcmx9LyR7cmVzdENvbnRleHR9YDtcbiAgY29uc3QgYWNjb3VudERhdGFVcmwgPSBgJHtiYXNlVXJsfS9TZXJ2ZXJTZXJ2aWNlcy9nZW5lcmFsL2FjY291bnRzYDtcblxuICBkZWJ1ZygnZmV0Y2hpbmcgYWNjb3VudHMgZGF0YScpO1xuICBjb25zdCBhY2NvdW50c0luZm8gPSAoYXdhaXQgZmV0Y2hHZXRXaXRoaW5QYWdlPEZldGNoZWRBY2NvdW50RGF0YT4ocGFnZSwgYWNjb3VudERhdGFVcmwpKSB8fCBbXTtcbiAgZGVidWcoJ2dvdCAlZCBhY2NvdW50cywgZmV0Y2hpbmcgdHhucyBhbmQgYmFsYW5jZScsIGFjY291bnRzSW5mby5sZW5ndGgpO1xuXG4gIGNvbnN0IGRlZmF1bHRTdGFydE1vbWVudCA9IG1vbWVudCgpLnN1YnRyYWN0KDEsICd5ZWFycycpLmFkZCgxLCAnZGF5Jyk7XG4gIGNvbnN0IHN0YXJ0RGF0ZSA9IG9wdGlvbnMuc3RhcnREYXRlIHx8IGRlZmF1bHRTdGFydE1vbWVudC50b0RhdGUoKTtcbiAgY29uc3Qgc3RhcnRNb21lbnQgPSBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xuICBjb25zdCB7IGFkZGl0aW9uYWxUcmFuc2FjdGlvbkluZm9ybWF0aW9uIH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IHN0YXJ0RGF0ZVN0ciA9IHN0YXJ0TW9tZW50LmZvcm1hdChEQVRFX0ZPUk1BVCk7XG4gIGNvbnN0IGVuZERhdGVTdHIgPSBtb21lbnQoKS5mb3JtYXQoREFURV9GT1JNQVQpO1xuXG4gIGNvbnN0IGFjY291bnRzOiBUcmFuc2FjdGlvbnNBY2NvdW50W10gPSBbXTtcblxuICBmb3IgKGNvbnN0IGFjY291bnQgb2YgYWNjb3VudHNJbmZvKSB7XG4gICAgbGV0IGJhbGFuY2U6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgICBjb25zdCBhY2NvdW50TnVtYmVyID0gYCR7YWNjb3VudC5iYW5rTnVtYmVyfS0ke2FjY291bnQuYnJhbmNoTnVtYmVyfS0ke2FjY291bnQuYWNjb3VudE51bWJlcn1gO1xuXG4gICAgY29uc3QgaXNBY3RpdmVBY2NvdW50ID0gYWNjb3VudC5hY2NvdW50Q2xvc2luZ1JlYXNvbkNvZGUgPT09IDA7XG4gICAgaWYgKGlzQWN0aXZlQWNjb3VudCkge1xuICAgICAgYmFsYW5jZSA9IGF3YWl0IGdldEFjY291bnRCYWxhbmNlKGFwaVNpdGVVcmwsIHBhZ2UsIGFjY291bnROdW1iZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICBkZWJ1ZygnU2tpcHBpbmcgYmFsYW5jZSBmb3IgYSBjbG9zZWQgYWNjb3VudCwgYmFsYW5jZSB3aWxsIGJlIHVuZGVmaW5lZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IHR4bnMgPSBhd2FpdCBnZXRBY2NvdW50VHJhbnNhY3Rpb25zKFxuICAgICAgYmFzZVVybCxcbiAgICAgIGFwaVNpdGVVcmwsXG4gICAgICBwYWdlLFxuICAgICAgYWNjb3VudE51bWJlcixcbiAgICAgIHN0YXJ0RGF0ZVN0cixcbiAgICAgIGVuZERhdGVTdHIsXG4gICAgICBhZGRpdGlvbmFsVHJhbnNhY3Rpb25JbmZvcm1hdGlvbixcbiAgICApO1xuXG4gICAgYWNjb3VudHMucHVzaCh7XG4gICAgICBhY2NvdW50TnVtYmVyLFxuICAgICAgYmFsYW5jZSxcbiAgICAgIHR4bnMsXG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBhY2NvdW50RGF0YSA9IHtcbiAgICBzdWNjZXNzOiB0cnVlLFxuICAgIGFjY291bnRzLFxuICB9O1xuICBkZWJ1ZygnZmV0Y2hpbmcgZW5kZWQnKTtcbiAgcmV0dXJuIGFjY291bnREYXRhO1xufVxuXG5mdW5jdGlvbiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyhiYXNlVXJsOiBzdHJpbmcpIHtcbiAgY29uc3QgdXJsczogUG9zc2libGVMb2dpblJlc3VsdHMgPSB7fTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuU3VjY2Vzc10gPSBbXG4gICAgYCR7YmFzZVVybH0vcG9ydGFsc2VydmVyL0hvbWVQYWdlYCxcbiAgICBgJHtiYXNlVXJsfS9uZy1wb3J0YWxzLWJ0L3JiL2hlL2hvbWVwYWdlYCxcbiAgICBgJHtiYXNlVXJsfS9uZy1wb3J0YWxzL3JiL2hlL2hvbWVwYWdlYCxcbiAgXTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkXSA9IFtcbiAgICBgJHtiYXNlVXJsfS9BVVRIRU5USUNBVEUvTE9HT04/Zmxvdz1BVVRIRU5USUNBVEUmc3RhdGU9TE9HT04mZXJyb3Jjb2RlPTEuNiZjYWxsbWU9ZmFsc2VgLFxuICBdO1xuICB1cmxzW0xvZ2luUmVzdWx0cy5DaGFuZ2VQYXNzd29yZF0gPSBbXG4gICAgYCR7YmFzZVVybH0vTUNQL1NUQVJUP2Zsb3c9TUNQJnN0YXRlPVNUQVJUJmV4cGlyZWREYXRlPW51bGxgLFxuICAgIC9cXC9BQk9VVFRPRVhQSVJFXFwvU1RBUlQvaSxcbiAgXTtcbiAgcmV0dXJuIHVybHM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICByZXR1cm4gW1xuICAgIHsgc2VsZWN0b3I6ICcjdXNlckNvZGUnLCB2YWx1ZTogY3JlZGVudGlhbHMudXNlckNvZGUgfSxcbiAgICB7IHNlbGVjdG9yOiAnI3Bhc3N3b3JkJywgdmFsdWU6IGNyZWRlbnRpYWxzLnBhc3N3b3JkIH0sXG4gIF07XG59XG5cbnR5cGUgU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMgPSB7IHVzZXJDb2RlOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmcgfTtcblxuY2xhc3MgSGFwb2FsaW1TY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXJXaXRoQnJvd3NlcjxTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscz4ge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgY2xhc3MtbWV0aG9kcy11c2UtdGhpc1xuICBnZXQgYmFzZVVybCgpIHtcbiAgICByZXR1cm4gJ2h0dHBzOi8vbG9naW4uYmFua2hhcG9hbGltLmNvLmlsJztcbiAgfVxuXG4gIGdldExvZ2luT3B0aW9ucyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9naW5Vcmw6IGAke3RoaXMuYmFzZVVybH0vY2dpLWJpbi9wb2Fsd3d3Yz9yZXFOYW1lPWdldExvZ29uUGFnZWAsXG4gICAgICBmaWVsZHM6IGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzKSxcbiAgICAgIHN1Ym1pdEJ1dHRvblNlbGVjdG9yOiAnLmxvZ2luLWJ0bicsXG4gICAgICBwb3N0QWN0aW9uOiBhc3luYyAoKSA9PiB3YWl0Rm9yUmVkaXJlY3QodGhpcy5wYWdlKSxcbiAgICAgIHBvc3NpYmxlUmVzdWx0czogZ2V0UG9zc2libGVMb2dpblJlc3VsdHModGhpcy5iYXNlVXJsKSxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hEYXRhKCkge1xuICAgIHJldHVybiBmZXRjaEFjY291bnREYXRhKHRoaXMucGFnZSwgdGhpcy5iYXNlVXJsLCB0aGlzLm9wdGlvbnMpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IEhhcG9hbGltU2NyYXBlcjtcbiJdfQ==
|
|
197
|
+
var _default = exports.default = HapoalimScraper;
|
|
198
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfdXVpZCIsIl9kZWJ1ZyIsIl9mZXRjaCIsIl9uYXZpZ2F0aW9uIiwiX3dhaXRpbmciLCJfdHJhbnNhY3Rpb25zIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJkZWJ1ZyIsImdldERlYnVnIiwiREFURV9GT1JNQVQiLCJjb252ZXJ0VHJhbnNhY3Rpb25zIiwidHhucyIsIm1hcCIsInR4biIsImlzT3V0Ym91bmQiLCJldmVudEFjdGl2aXR5VHlwZUNvZGUiLCJtZW1vIiwiYmVuZWZpY2lhcnlEZXRhaWxzRGF0YSIsInBhcnR5SGVhZGxpbmUiLCJwYXJ0eU5hbWUiLCJtZXNzYWdlSGVhZGxpbmUiLCJtZXNzYWdlRGV0YWlsIiwibWVtb0xpbmVzIiwicHVzaCIsImxlbmd0aCIsImpvaW4iLCJyZXN1bHQiLCJ0eXBlIiwiVHJhbnNhY3Rpb25UeXBlcyIsIk5vcm1hbCIsImlkZW50aWZpZXIiLCJyZWZlcmVuY2VOdW1iZXIiLCJkYXRlIiwibW9tZW50IiwiZXZlbnREYXRlIiwidG9JU09TdHJpbmciLCJwcm9jZXNzZWREYXRlIiwidmFsdWVEYXRlIiwib3JpZ2luYWxBbW91bnQiLCJldmVudEFtb3VudCIsIm9yaWdpbmFsQ3VycmVuY3kiLCJjaGFyZ2VkQW1vdW50IiwiZGVzY3JpcHRpb24iLCJhY3Rpdml0eURlc2NyaXB0aW9uIiwic3RhdHVzIiwic2VyaWFsTnVtYmVyIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIlBlbmRpbmciLCJDb21wbGV0ZWQiLCJnZXRSZXN0Q29udGV4dCIsInBhZ2UiLCJ3YWl0VW50aWwiLCJldmFsdWF0ZSIsIndpbmRvdyIsImJuaHBBcHAiLCJyZXN0Q29udGV4dCIsInNsaWNlIiwiZmV0Y2hQb2FsaW1YU1JGV2l0aGluUGFnZSIsInVybCIsInBhZ2VVdWlkIiwiY29va2llcyIsIlhTUkZDb29raWUiLCJmaW5kIiwiY29va2llIiwibmFtZSIsImhlYWRlcnMiLCJ2YWx1ZSIsInV1aWQiLCJ1dWlkNCIsImZldGNoUG9zdFdpdGhpblBhZ2UiLCJnZXRFeHRyYVNjcmFwIiwidHhuc1Jlc3VsdCIsImJhc2VVcmwiLCJhY2NvdW50TnVtYmVyIiwicHJvbWlzZXMiLCJ0cmFuc2FjdGlvbnMiLCJ0cmFuc2FjdGlvbiIsInBmbURldGFpbHMiLCJleHRyYVRyYW5zYWN0aW9uRGV0YWlscyIsImZldGNoR2V0V2l0aGluUGFnZSIsInRyYW5zYWN0aW9uTnVtYmVyIiwicmVzIiwiUHJvbWlzZSIsImFsbCIsImdldEFjY291bnRUcmFuc2FjdGlvbnMiLCJhcGlTaXRlVXJsIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsImFkZGl0aW9uYWxUcmFuc2FjdGlvbkluZm9ybWF0aW9uIiwidHhuc1VybCIsImZpbmFsUmVzdWx0IiwiZ2V0QWNjb3VudEJhbGFuY2UiLCJiYWxhbmNlQW5kQ3JlZGl0TGltaXRVcmwiLCJiYWxhbmNlQW5kQ3JlZGl0TGltaXQiLCJjdXJyZW50QmFsYW5jZSIsImZldGNoQWNjb3VudERhdGEiLCJvcHRpb25zIiwiYWNjb3VudERhdGFVcmwiLCJhY2NvdW50c0luZm8iLCJkZWZhdWx0U3RhcnRNb21lbnQiLCJzdWJ0cmFjdCIsImFkZCIsInRvRGF0ZSIsInN0YXJ0TW9tZW50IiwibWF4Iiwic3RhcnREYXRlU3RyIiwiZm9ybWF0IiwiZW5kRGF0ZVN0ciIsImFjY291bnRzIiwiYWNjb3VudCIsImJhbGFuY2UiLCJiYW5rTnVtYmVyIiwiYnJhbmNoTnVtYmVyIiwiaXNBY3RpdmVBY2NvdW50IiwiYWNjb3VudENsb3NpbmdSZWFzb25Db2RlIiwiYWNjb3VudERhdGEiLCJzdWNjZXNzIiwiZ2V0UG9zc2libGVMb2dpblJlc3VsdHMiLCJ1cmxzIiwiTG9naW5SZXN1bHRzIiwiU3VjY2VzcyIsIkludmFsaWRQYXNzd29yZCIsIkNoYW5nZVBhc3N3b3JkIiwiY3JlYXRlTG9naW5GaWVsZHMiLCJjcmVkZW50aWFscyIsInNlbGVjdG9yIiwidXNlckNvZGUiLCJwYXNzd29yZCIsIkhhcG9hbGltU2NyYXBlciIsIkJhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJnZXRMb2dpbk9wdGlvbnMiLCJsb2dpblVybCIsImZpZWxkcyIsInN1Ym1pdEJ1dHRvblNlbGVjdG9yIiwicG9zdEFjdGlvbiIsIndhaXRGb3JSZWRpcmVjdCIsInBvc3NpYmxlUmVzdWx0cyIsImZldGNoRGF0YSIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9oYXBvYWxpbS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyB0eXBlIFBhZ2UgfSBmcm9tICdwdXBwZXRlZXInO1xuaW1wb3J0IHsgdjQgYXMgdXVpZDQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IGdldERlYnVnIH0gZnJvbSAnLi4vaGVscGVycy9kZWJ1Zyc7XG5pbXBvcnQgeyBmZXRjaEdldFdpdGhpblBhZ2UsIGZldGNoUG9zdFdpdGhpblBhZ2UgfSBmcm9tICcuLi9oZWxwZXJzL2ZldGNoJztcbmltcG9ydCB7IHdhaXRGb3JSZWRpcmVjdCB9IGZyb20gJy4uL2hlbHBlcnMvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyB3YWl0VW50aWwgfSBmcm9tICcuLi9oZWxwZXJzL3dhaXRpbmcnO1xuaW1wb3J0IHsgdHlwZSBUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25TdGF0dXNlcywgVHJhbnNhY3Rpb25UeXBlcywgdHlwZSBUcmFuc2FjdGlvbnNBY2NvdW50IH0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsIExvZ2luUmVzdWx0cywgdHlwZSBQb3NzaWJsZUxvZ2luUmVzdWx0cyB9IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQgeyB0eXBlIFNjcmFwZXJPcHRpb25zIH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuXG5jb25zdCBkZWJ1ZyA9IGdldERlYnVnKCdoYXBvYWxpbScpO1xuXG5jb25zdCBEQVRFX0ZPUk1BVCA9ICdZWVlZTU1ERCc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbmFtZXNwYWNlXG5kZWNsYXJlIG5hbWVzcGFjZSB3aW5kb3cge1xuICBjb25zdCBibmhwQXBwOiBhbnk7XG59XG5cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb24ge1xuICBzZXJpYWxOdW1iZXI/OiBudW1iZXI7XG4gIGFjdGl2aXR5RGVzY3JpcHRpb24/OiBzdHJpbmc7XG4gIGV2ZW50QW1vdW50OiBudW1iZXI7XG4gIHZhbHVlRGF0ZT86IHN0cmluZztcbiAgZXZlbnREYXRlPzogc3RyaW5nO1xuICByZWZlcmVuY2VOdW1iZXI/OiBudW1iZXI7XG4gIFNjcmFwZWRUcmFuc2FjdGlvbj86IHN0cmluZztcbiAgZXZlbnRBY3Rpdml0eVR5cGVDb2RlOiBudW1iZXI7XG4gIGN1cnJlbnRCYWxhbmNlOiBudW1iZXI7XG4gIHBmbURldGFpbHM6IHN0cmluZztcbiAgYmVuZWZpY2lhcnlEZXRhaWxzRGF0YT86IHtcbiAgICBwYXJ0eUhlYWRsaW5lPzogc3RyaW5nO1xuICAgIHBhcnR5TmFtZT86IHN0cmluZztcbiAgICBtZXNzYWdlSGVhZGxpbmU/OiBzdHJpbmc7XG4gICAgbWVzc2FnZURldGFpbD86IHN0cmluZztcbiAgfTtcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRQZm1UcmFuc2FjdGlvbiB7XG4gIHRyYW5zYWN0aW9uTnVtYmVyOiBudW1iZXI7XG59XG5cbnR5cGUgRmV0Y2hlZEFjY291bnREYXRhID0ge1xuICBiYW5rTnVtYmVyOiBzdHJpbmc7XG4gIGFjY291bnROdW1iZXI6IHN0cmluZztcbiAgYnJhbmNoTnVtYmVyOiBzdHJpbmc7XG4gIGFjY291bnRDbG9zaW5nUmVhc29uQ29kZTogbnVtYmVyO1xufVtdO1xuXG50eXBlIEZldGNoZWRBY2NvdW50VHJhbnNhY3Rpb25zRGF0YSA9IHtcbiAgdHJhbnNhY3Rpb25zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXTtcbn07XG5cbnR5cGUgQmFsYW5jZUFuZENyZWRpdExpbWl0ID0ge1xuICBjcmVkaXRMaW1pdEFtb3VudDogbnVtYmVyO1xuICBjcmVkaXRMaW1pdERlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGNyZWRpdExpbWl0VXRpbGl6YXRpb25BbW91bnQ6IG51bWJlcjtcbiAgY3JlZGl0TGltaXRVdGlsaXphdGlvbkV4aXN0YW5jZUNvZGU6IG51bWJlcjtcbiAgY3JlZGl0TGltaXRVdGlsaXphdGlvblBlcmNlbnQ6IG51bWJlcjtcbiAgY3VycmVudEFjY291bnRMaW1pdHNBbW91bnQ6IG51bWJlcjtcbiAgY3VycmVudEJhbGFuY2U6IG51bWJlcjtcbiAgd2l0aGRyYXdhbEJhbGFuY2U6IG51bWJlcjtcbn07XG5cbmZ1bmN0aW9uIGNvbnZlcnRUcmFuc2FjdGlvbnModHhuczogU2NyYXBlZFRyYW5zYWN0aW9uW10pOiBUcmFuc2FjdGlvbltdIHtcbiAgcmV0dXJuIHR4bnMubWFwKHR4biA9PiB7XG4gICAgY29uc3QgaXNPdXRib3VuZCA9IHR4bi5ldmVudEFjdGl2aXR5VHlwZUNvZGUgPT09IDI7XG5cbiAgICBsZXQgbWVtbyA9ICcnO1xuICAgIGlmICh0eG4uYmVuZWZpY2lhcnlEZXRhaWxzRGF0YSkge1xuICAgICAgY29uc3QgeyBwYXJ0eUhlYWRsaW5lLCBwYXJ0eU5hbWUsIG1lc3NhZ2VIZWFkbGluZSwgbWVzc2FnZURldGFpbCB9ID0gdHhuLmJlbmVmaWNpYXJ5RGV0YWlsc0RhdGE7XG4gICAgICBjb25zdCBtZW1vTGluZXM6IHN0cmluZ1tdID0gW107XG4gICAgICBpZiAocGFydHlIZWFkbGluZSkge1xuICAgICAgICBtZW1vTGluZXMucHVzaChwYXJ0eUhlYWRsaW5lKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHBhcnR5TmFtZSkge1xuICAgICAgICBtZW1vTGluZXMucHVzaChgJHtwYXJ0eU5hbWV9LmApO1xuICAgICAgfVxuXG4gICAgICBpZiAobWVzc2FnZUhlYWRsaW5lKSB7XG4gICAgICAgIG1lbW9MaW5lcy5wdXNoKG1lc3NhZ2VIZWFkbGluZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChtZXNzYWdlRGV0YWlsKSB7XG4gICAgICAgIG1lbW9MaW5lcy5wdXNoKGAke21lc3NhZ2VEZXRhaWx9LmApO1xuICAgICAgfVxuXG4gICAgICBpZiAobWVtb0xpbmVzLmxlbmd0aCkge1xuICAgICAgICBtZW1vID0gbWVtb0xpbmVzLmpvaW4oJyAnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQ6IFRyYW5zYWN0aW9uID0ge1xuICAgICAgdHlwZTogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWwsXG4gICAgICBpZGVudGlmaWVyOiB0eG4ucmVmZXJlbmNlTnVtYmVyLFxuICAgICAgZGF0ZTogbW9tZW50KHR4bi5ldmVudERhdGUsIERBVEVfRk9STUFUKS50b0lTT1N0cmluZygpLFxuICAgICAgcHJvY2Vzc2VkRGF0ZTogbW9tZW50KHR4bi52YWx1ZURhdGUsIERBVEVfRk9STUFUKS50b0lTT1N0cmluZygpLFxuICAgICAgb3JpZ2luYWxBbW91bnQ6IGlzT3V0Ym91bmQgPyAtdHhuLmV2ZW50QW1vdW50IDogdHhuLmV2ZW50QW1vdW50LFxuICAgICAgb3JpZ2luYWxDdXJyZW5jeTogJ0lMUycsXG4gICAgICBjaGFyZ2VkQW1vdW50OiBpc091dGJvdW5kID8gLXR4bi5ldmVudEFtb3VudCA6IHR4bi5ldmVudEFtb3VudCxcbiAgICAgIGRlc2NyaXB0aW9uOiB0eG4uYWN0aXZpdHlEZXNjcmlwdGlvbiB8fCAnJyxcbiAgICAgIHN0YXR1czogdHhuLnNlcmlhbE51bWJlciA9PT0gMCA/IFRyYW5zYWN0aW9uU3RhdHVzZXMuUGVuZGluZyA6IFRyYW5zYWN0aW9uU3RhdHVzZXMuQ29tcGxldGVkLFxuICAgICAgbWVtbyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldFJlc3RDb250ZXh0KHBhZ2U6IFBhZ2UpIHtcbiAgYXdhaXQgd2FpdFVudGlsKCgpID0+IHtcbiAgICByZXR1cm4gcGFnZS5ldmFsdWF0ZSgoKSA9PiAhIXdpbmRvdy5ibmhwQXBwKTtcbiAgfSwgJ3dhaXRpbmcgZm9yIGFwcCBkYXRhIGxvYWQnKTtcblxuICBjb25zdCByZXN1bHQgPSBhd2FpdCBwYWdlLmV2YWx1YXRlKCgpID0+IHtcbiAgICByZXR1cm4gd2luZG93LmJuaHBBcHAucmVzdENvbnRleHQ7XG4gIH0pO1xuXG4gIHJldHVybiByZXN1bHQuc2xpY2UoMSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoUG9hbGltWFNSRldpdGhpblBhZ2UoXG4gIHBhZ2U6IFBhZ2UsXG4gIHVybDogc3RyaW5nLFxuICBwYWdlVXVpZDogc3RyaW5nLFxuKTogUHJvbWlzZTxGZXRjaGVkQWNjb3VudFRyYW5zYWN0aW9uc0RhdGEgfCBudWxsPiB7XG4gIGNvbnN0IGNvb2tpZXMgPSBhd2FpdCBwYWdlLmNvb2tpZXMoKTtcbiAgY29uc3QgWFNSRkNvb2tpZSA9IGNvb2tpZXMuZmluZChjb29raWUgPT4gY29va2llLm5hbWUgPT09ICdYU1JGLVRPS0VOJyk7XG4gIGNvbnN0IGhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgaWYgKFhTUkZDb29raWUgIT0gbnVsbCkge1xuICAgIGhlYWRlcnNbJ1gtWFNSRi1UT0tFTiddID0gWFNSRkNvb2tpZS52YWx1ZTtcbiAgfVxuICBoZWFkZXJzLnBhZ2VVdWlkID0gcGFnZVV1aWQ7XG4gIGhlYWRlcnMudXVpZCA9IHV1aWQ0KCk7XG4gIGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddID0gJ2FwcGxpY2F0aW9uL2pzb247Y2hhcnNldD1VVEYtOCc7XG4gIHJldHVybiBmZXRjaFBvc3RXaXRoaW5QYWdlPEZldGNoZWRBY2NvdW50VHJhbnNhY3Rpb25zRGF0YT4ocGFnZSwgdXJsLCBbXSwgaGVhZGVycyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEV4dHJhU2NyYXAoXG4gIHR4bnNSZXN1bHQ6IEZldGNoZWRBY2NvdW50VHJhbnNhY3Rpb25zRGF0YSxcbiAgYmFzZVVybDogc3RyaW5nLFxuICBwYWdlOiBQYWdlLFxuICBhY2NvdW50TnVtYmVyOiBzdHJpbmcsXG4pOiBQcm9taXNlPEZldGNoZWRBY2NvdW50VHJhbnNhY3Rpb25zRGF0YT4ge1xuICBjb25zdCBwcm9taXNlcyA9IHR4bnNSZXN1bHQudHJhbnNhY3Rpb25zLm1hcChhc3luYyAodHJhbnNhY3Rpb246IFNjcmFwZWRUcmFuc2FjdGlvbik6IFByb21pc2U8U2NyYXBlZFRyYW5zYWN0aW9uPiA9PiB7XG4gICAgY29uc3QgeyBwZm1EZXRhaWxzLCBzZXJpYWxOdW1iZXIgfSA9IHRyYW5zYWN0aW9uO1xuICAgIGlmIChzZXJpYWxOdW1iZXIgIT09IDApIHtcbiAgICAgIGNvbnN0IHVybCA9IGAke2Jhc2VVcmx9JHtwZm1EZXRhaWxzfSZhY2NvdW50SWQ9JHthY2NvdW50TnVtYmVyfSZsYW5nPWhlYDtcbiAgICAgIGNvbnN0IGV4dHJhVHJhbnNhY3Rpb25EZXRhaWxzID0gKGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxTY3JhcGVkUGZtVHJhbnNhY3Rpb25bXT4ocGFnZSwgdXJsKSkgfHwgW107XG4gICAgICBpZiAoZXh0cmFUcmFuc2FjdGlvbkRldGFpbHMgJiYgZXh0cmFUcmFuc2FjdGlvbkRldGFpbHMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IHsgdHJhbnNhY3Rpb25OdW1iZXIgfSA9IGV4dHJhVHJhbnNhY3Rpb25EZXRhaWxzWzBdO1xuICAgICAgICBpZiAodHJhbnNhY3Rpb25OdW1iZXIpIHtcbiAgICAgICAgICByZXR1cm4geyAuLi50cmFuc2FjdGlvbiwgcmVmZXJlbmNlTnVtYmVyOiB0cmFuc2FjdGlvbk51bWJlciB9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cmFuc2FjdGlvbjtcbiAgfSk7XG4gIGNvbnN0IHJlcyA9IGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKTtcbiAgcmV0dXJuIHsgdHJhbnNhY3Rpb25zOiByZXMgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QWNjb3VudFRyYW5zYWN0aW9ucyhcbiAgYmFzZVVybDogc3RyaW5nLFxuICBhcGlTaXRlVXJsOiBzdHJpbmcsXG4gIHBhZ2U6IFBhZ2UsXG4gIGFjY291bnROdW1iZXI6IHN0cmluZyxcbiAgc3RhcnREYXRlOiBzdHJpbmcsXG4gIGVuZERhdGU6IHN0cmluZyxcbiAgYWRkaXRpb25hbFRyYW5zYWN0aW9uSW5mb3JtYXRpb24gPSBmYWxzZSxcbikge1xuICBjb25zdCB0eG5zVXJsID0gYCR7YXBpU2l0ZVVybH0vY3VycmVudC1hY2NvdW50L3RyYW5zYWN0aW9ucz9hY2NvdW50SWQ9JHthY2NvdW50TnVtYmVyfSZudW1JdGVtc1BlclBhZ2U9MTAwMCZyZXRyaWV2YWxFbmREYXRlPSR7ZW5kRGF0ZX0mcmV0cmlldmFsU3RhcnREYXRlPSR7c3RhcnREYXRlfSZzb3J0Q29kZT0xYDtcbiAgY29uc3QgdHhuc1Jlc3VsdCA9IGF3YWl0IGZldGNoUG9hbGltWFNSRldpdGhpblBhZ2UocGFnZSwgdHhuc1VybCwgJy9jdXJyZW50LWFjY291bnQvdHJhbnNhY3Rpb25zJyk7XG5cbiAgY29uc3QgZmluYWxSZXN1bHQgPVxuICAgIGFkZGl0aW9uYWxUcmFuc2FjdGlvbkluZm9ybWF0aW9uICYmIHR4bnNSZXN1bHQ/LnRyYW5zYWN0aW9ucy5sZW5ndGhcbiAgICAgID8gYXdhaXQgZ2V0RXh0cmFTY3JhcCh0eG5zUmVzdWx0LCBiYXNlVXJsLCBwYWdlLCBhY2NvdW50TnVtYmVyKVxuICAgICAgOiB0eG5zUmVzdWx0O1xuXG4gIHJldHVybiBjb252ZXJ0VHJhbnNhY3Rpb25zKGZpbmFsUmVzdWx0Py50cmFuc2FjdGlvbnMgPz8gW10pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBY2NvdW50QmFsYW5jZShhcGlTaXRlVXJsOiBzdHJpbmcsIHBhZ2U6IFBhZ2UsIGFjY291bnROdW1iZXI6IHN0cmluZykge1xuICBjb25zdCBiYWxhbmNlQW5kQ3JlZGl0TGltaXRVcmwgPSBgJHthcGlTaXRlVXJsfS9jdXJyZW50LWFjY291bnQvY29tcG9zaXRlL2JhbGFuY2VBbmRDcmVkaXRMaW1pdD9hY2NvdW50SWQ9JHthY2NvdW50TnVtYmVyfSZ2aWV3PWRldGFpbHMmbGFuZz1oZWA7XG4gIGNvbnN0IGJhbGFuY2VBbmRDcmVkaXRMaW1pdCA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxCYWxhbmNlQW5kQ3JlZGl0TGltaXQ+KHBhZ2UsIGJhbGFuY2VBbmRDcmVkaXRMaW1pdFVybCk7XG5cbiAgcmV0dXJuIGJhbGFuY2VBbmRDcmVkaXRMaW1pdD8uY3VycmVudEJhbGFuY2U7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoQWNjb3VudERhdGEocGFnZTogUGFnZSwgYmFzZVVybDogc3RyaW5nLCBvcHRpb25zOiBTY3JhcGVyT3B0aW9ucykge1xuICBjb25zdCByZXN0Q29udGV4dCA9IGF3YWl0IGdldFJlc3RDb250ZXh0KHBhZ2UpO1xuICBjb25zdCBhcGlTaXRlVXJsID0gYCR7YmFzZVVybH0vJHtyZXN0Q29udGV4dH1gO1xuICBjb25zdCBhY2NvdW50RGF0YVVybCA9IGAke2Jhc2VVcmx9L1NlcnZlclNlcnZpY2VzL2dlbmVyYWwvYWNjb3VudHNgO1xuXG4gIGRlYnVnKCdmZXRjaGluZyBhY2NvdW50cyBkYXRhJyk7XG4gIGNvbnN0IGFjY291bnRzSW5mbyA9IChhd2FpdCBmZXRjaEdldFdpdGhpblBhZ2U8RmV0Y2hlZEFjY291bnREYXRhPihwYWdlLCBhY2NvdW50RGF0YVVybCkpIHx8IFtdO1xuICBkZWJ1ZygnZ290ICVkIGFjY291bnRzLCBmZXRjaGluZyB0eG5zIGFuZCBiYWxhbmNlJywgYWNjb3VudHNJbmZvLmxlbmd0aCk7XG5cbiAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJykuYWRkKDEsICdkYXknKTtcbiAgY29uc3Qgc3RhcnREYXRlID0gb3B0aW9ucy5zdGFydERhdGUgfHwgZGVmYXVsdFN0YXJ0TW9tZW50LnRvRGF0ZSgpO1xuICBjb25zdCBzdGFydE1vbWVudCA9IG1vbWVudC5tYXgoZGVmYXVsdFN0YXJ0TW9tZW50LCBtb21lbnQoc3RhcnREYXRlKSk7XG4gIGNvbnN0IHsgYWRkaXRpb25hbFRyYW5zYWN0aW9uSW5mb3JtYXRpb24gfSA9IG9wdGlvbnM7XG5cbiAgY29uc3Qgc3RhcnREYXRlU3RyID0gc3RhcnRNb21lbnQuZm9ybWF0KERBVEVfRk9STUFUKTtcbiAgY29uc3QgZW5kRGF0ZVN0ciA9IG1vbWVudCgpLmZvcm1hdChEQVRFX0ZPUk1BVCk7XG5cbiAgY29uc3QgYWNjb3VudHM6IFRyYW5zYWN0aW9uc0FjY291bnRbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgYWNjb3VudCBvZiBhY2NvdW50c0luZm8pIHtcbiAgICBsZXQgYmFsYW5jZTogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgIGNvbnN0IGFjY291bnROdW1iZXIgPSBgJHthY2NvdW50LmJhbmtOdW1iZXJ9LSR7YWNjb3VudC5icmFuY2hOdW1iZXJ9LSR7YWNjb3VudC5hY2NvdW50TnVtYmVyfWA7XG5cbiAgICBjb25zdCBpc0FjdGl2ZUFjY291bnQgPSBhY2NvdW50LmFjY291bnRDbG9zaW5nUmVhc29uQ29kZSA9PT0gMDtcbiAgICBpZiAoaXNBY3RpdmVBY2NvdW50KSB7XG4gICAgICBiYWxhbmNlID0gYXdhaXQgZ2V0QWNjb3VudEJhbGFuY2UoYXBpU2l0ZVVybCwgcGFnZSwgYWNjb3VudE51bWJlcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGRlYnVnKCdTa2lwcGluZyBiYWxhbmNlIGZvciBhIGNsb3NlZCBhY2NvdW50LCBiYWxhbmNlIHdpbGwgYmUgdW5kZWZpbmVkJyk7XG4gICAgfVxuXG4gICAgY29uc3QgdHhucyA9IGF3YWl0IGdldEFjY291bnRUcmFuc2FjdGlvbnMoXG4gICAgICBiYXNlVXJsLFxuICAgICAgYXBpU2l0ZVVybCxcbiAgICAgIHBhZ2UsXG4gICAgICBhY2NvdW50TnVtYmVyLFxuICAgICAgc3RhcnREYXRlU3RyLFxuICAgICAgZW5kRGF0ZVN0cixcbiAgICAgIGFkZGl0aW9uYWxUcmFuc2FjdGlvbkluZm9ybWF0aW9uLFxuICAgICk7XG5cbiAgICBhY2NvdW50cy5wdXNoKHtcbiAgICAgIGFjY291bnROdW1iZXIsXG4gICAgICBiYWxhbmNlLFxuICAgICAgdHhucyxcbiAgICB9KTtcbiAgfVxuXG4gIGNvbnN0IGFjY291bnREYXRhID0ge1xuICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgYWNjb3VudHMsXG4gIH07XG4gIGRlYnVnKCdmZXRjaGluZyBlbmRlZCcpO1xuICByZXR1cm4gYWNjb3VudERhdGE7XG59XG5cbmZ1bmN0aW9uIGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKGJhc2VVcmw6IHN0cmluZykge1xuICBjb25zdCB1cmxzOiBQb3NzaWJsZUxvZ2luUmVzdWx0cyA9IHt9O1xuICB1cmxzW0xvZ2luUmVzdWx0cy5TdWNjZXNzXSA9IFtcbiAgICBgJHtiYXNlVXJsfS9wb3J0YWxzZXJ2ZXIvSG9tZVBhZ2VgLFxuICAgIGAke2Jhc2VVcmx9L25nLXBvcnRhbHMtYnQvcmIvaGUvaG9tZXBhZ2VgLFxuICAgIGAke2Jhc2VVcmx9L25nLXBvcnRhbHMvcmIvaGUvaG9tZXBhZ2VgLFxuICBdO1xuICB1cmxzW0xvZ2luUmVzdWx0cy5JbnZhbGlkUGFzc3dvcmRdID0gW1xuICAgIGAke2Jhc2VVcmx9L0FVVEhFTlRJQ0FURS9MT0dPTj9mbG93PUFVVEhFTlRJQ0FURSZzdGF0ZT1MT0dPTiZlcnJvcmNvZGU9MS42JmNhbGxtZT1mYWxzZWAsXG4gIF07XG4gIHVybHNbTG9naW5SZXN1bHRzLkNoYW5nZVBhc3N3b3JkXSA9IFtcbiAgICBgJHtiYXNlVXJsfS9NQ1AvU1RBUlQ/Zmxvdz1NQ1Amc3RhdGU9U1RBUlQmZXhwaXJlZERhdGU9bnVsbGAsXG4gICAgL1xcL0FCT1VUVE9FWFBJUkVcXC9TVEFSVC9pLFxuICBdO1xuICByZXR1cm4gdXJscztcbn1cblxuZnVuY3Rpb24gY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHM6IFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzKSB7XG4gIHJldHVybiBbXG4gICAgeyBzZWxlY3RvcjogJyN1c2VyQ29kZScsIHZhbHVlOiBjcmVkZW50aWFscy51c2VyQ29kZSB9LFxuICAgIHsgc2VsZWN0b3I6ICcjcGFzc3dvcmQnLCB2YWx1ZTogY3JlZGVudGlhbHMucGFzc3dvcmQgfSxcbiAgXTtcbn1cblxudHlwZSBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyA9IHsgdXNlckNvZGU6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9O1xuXG5jbGFzcyBIYXBvYWxpbVNjcmFwZXIgZXh0ZW5kcyBCYXNlU2NyYXBlcldpdGhCcm93c2VyPFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzPiB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjbGFzcy1tZXRob2RzLXVzZS10aGlzXG4gIGdldCBiYXNlVXJsKCkge1xuICAgIHJldHVybiAnaHR0cHM6Ly9sb2dpbi5iYW5raGFwb2FsaW0uY28uaWwnO1xuICB9XG5cbiAgZ2V0TG9naW5PcHRpb25zKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICAgIHJldHVybiB7XG4gICAgICBsb2dpblVybDogYCR7dGhpcy5iYXNlVXJsfS9jZ2ktYmluL3BvYWx3d3djP3JlcU5hbWU9Z2V0TG9nb25QYWdlYCxcbiAgICAgIGZpZWxkczogY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHMpLFxuICAgICAgc3VibWl0QnV0dG9uU2VsZWN0b3I6ICcubG9naW4tYnRuJyxcbiAgICAgIHBvc3RBY3Rpb246IGFzeW5jICgpID0+IHdhaXRGb3JSZWRpcmVjdCh0aGlzLnBhZ2UpLFxuICAgICAgcG9zc2libGVSZXN1bHRzOiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyh0aGlzLmJhc2VVcmwpLFxuICAgIH07XG4gIH1cblxuICBhc3luYyBmZXRjaERhdGEoKSB7XG4gICAgcmV0dXJuIGZldGNoQWNjb3VudERhdGEodGhpcy5wYWdlLCB0aGlzLmJhc2VVcmwsIHRoaXMub3B0aW9ucyk7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgSGFwb2FsaW1TY3JhcGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxLQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxNQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxXQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxRQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxhQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyx1QkFBQSxHQUFBUCxPQUFBO0FBQThHLFNBQUFELHVCQUFBUyxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBRzlHLE1BQU1HLEtBQUssR0FBRyxJQUFBQyxlQUFRLEVBQUMsVUFBVSxDQUFDO0FBRWxDLE1BQU1DLFdBQVcsR0FBRyxVQUFVOztBQUU5Qjs7QUFrREEsU0FBU0MsbUJBQW1CQSxDQUFDQyxJQUEwQixFQUFpQjtFQUN0RSxPQUFPQSxJQUFJLENBQUNDLEdBQUcsQ0FBQ0MsR0FBRyxJQUFJO0lBQ3JCLE1BQU1DLFVBQVUsR0FBR0QsR0FBRyxDQUFDRSxxQkFBcUIsS0FBSyxDQUFDO0lBRWxELElBQUlDLElBQUksR0FBRyxFQUFFO0lBQ2IsSUFBSUgsR0FBRyxDQUFDSSxzQkFBc0IsRUFBRTtNQUM5QixNQUFNO1FBQUVDLGFBQWE7UUFBRUMsU0FBUztRQUFFQyxlQUFlO1FBQUVDO01BQWMsQ0FBQyxHQUFHUixHQUFHLENBQUNJLHNCQUFzQjtNQUMvRixNQUFNSyxTQUFtQixHQUFHLEVBQUU7TUFDOUIsSUFBSUosYUFBYSxFQUFFO1FBQ2pCSSxTQUFTLENBQUNDLElB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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _hapoalim = _interopRequireDefault(require("./hapoalim"));
|
|
4
|
+
var _testsUtils = require("../tests/tests-utils");
|
|
5
|
+
var _definitions = require("../definitions");
|
|
6
|
+
var _baseScraperWithBrowser = require("./base-scraper-with-browser");
|
|
7
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
8
|
+
const COMPANY_ID = 'hapoalim'; // TODO this property should be hard-coded in the provider
|
|
9
|
+
const testsConfig = (0, _testsUtils.getTestsConfig)();
|
|
10
|
+
describe('Hapoalim legacy scraper', () => {
|
|
11
|
+
beforeAll(() => {
|
|
12
|
+
(0, _testsUtils.extendAsyncTimeout)(); // The default timeout is 5 seconds per async test, this function extends the timeout value
|
|
13
|
+
});
|
|
14
|
+
test('should expose login fields in scrapers constant', () => {
|
|
15
|
+
expect(_definitions.SCRAPERS.hapoalim).toBeDefined();
|
|
16
|
+
expect(_definitions.SCRAPERS.hapoalim.loginFields).toContain('userCode');
|
|
17
|
+
expect(_definitions.SCRAPERS.hapoalim.loginFields).toContain('password');
|
|
18
|
+
});
|
|
19
|
+
(0, _testsUtils.maybeTestCompanyAPI)(COMPANY_ID, config => config.companyAPI.invalidPassword)('should fail on invalid user/password"', async () => {
|
|
20
|
+
const options = {
|
|
21
|
+
...testsConfig.options,
|
|
22
|
+
companyId: COMPANY_ID
|
|
23
|
+
};
|
|
24
|
+
const scraper = new _hapoalim.default(options);
|
|
25
|
+
const result = await scraper.scrape({
|
|
26
|
+
userCode: 'e10s12',
|
|
27
|
+
password: '3f3ss3d'
|
|
28
|
+
});
|
|
29
|
+
expect(result).toBeDefined();
|
|
30
|
+
expect(result.success).toBeFalsy();
|
|
31
|
+
expect(result.errorType).toBe(_baseScraperWithBrowser.LoginResults.InvalidPassword);
|
|
32
|
+
});
|
|
33
|
+
(0, _testsUtils.maybeTestCompanyAPI)(COMPANY_ID)('should scrape transactions"', async () => {
|
|
34
|
+
const options = {
|
|
35
|
+
...testsConfig.options,
|
|
36
|
+
companyId: COMPANY_ID
|
|
37
|
+
};
|
|
38
|
+
const scraper = new _hapoalim.default(options);
|
|
39
|
+
const result = await scraper.scrape(testsConfig.credentials.hapoalim);
|
|
40
|
+
expect(result).toBeDefined();
|
|
41
|
+
const error = `${result.errorType || ''} ${result.errorMessage || ''}`.trim();
|
|
42
|
+
expect(error).toBe('');
|
|
43
|
+
expect(result.success).toBeTruthy();
|
|
44
|
+
(0, _testsUtils.exportTransactions)(COMPANY_ID, result.accounts || []);
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaGFwb2FsaW0iLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl90ZXN0c1V0aWxzIiwiX2RlZmluaXRpb25zIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJDT01QQU5ZX0lEIiwidGVzdHNDb25maWciLCJnZXRUZXN0c0NvbmZpZyIsImRlc2NyaWJlIiwiYmVmb3JlQWxsIiwiZXh0ZW5kQXN5bmNUaW1lb3V0IiwidGVzdCIsImV4cGVjdCIsIlNDUkFQRVJTIiwiaGFwb2FsaW0iLCJ0b0JlRGVmaW5lZCIsImxvZ2luRmllbGRzIiwidG9Db250YWluIiwibWF5YmVUZXN0Q29tcGFueUFQSSIsImNvbmZpZyIsImNvbXBhbnlBUEkiLCJpbnZhbGlkUGFzc3dvcmQiLCJvcHRpb25zIiwiY29tcGFueUlkIiwic2NyYXBlciIsIkhhcG9hbGltU2NyYXBlciIsInJlc3VsdCIsInNjcmFwZSIsInVzZXJDb2RlIiwicGFzc3dvcmQiLCJzdWNjZXNzIiwidG9CZUZhbHN5IiwiZXJyb3JUeXBlIiwidG9CZSIsIkxvZ2luUmVzdWx0cyIsIkludmFsaWRQYXNzd29yZCIsImNyZWRlbnRpYWxzIiwiZXJyb3IiLCJlcnJvck1lc3NhZ2UiLCJ0cmltIiwidG9CZVRydXRoeSIsImV4cG9ydFRyYW5zYWN0aW9ucyIsImFjY291bnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL2hhcG9hbGltLnRlc3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEhhcG9hbGltU2NyYXBlciBmcm9tICcuL2hhcG9hbGltJztcbmltcG9ydCB7IG1heWJlVGVzdENvbXBhbnlBUEksIGV4dGVuZEFzeW5jVGltZW91dCwgZ2V0VGVzdHNDb25maWcsIGV4cG9ydFRyYW5zYWN0aW9ucyB9IGZyb20gJy4uL3Rlc3RzL3Rlc3RzLXV0aWxzJztcbmltcG9ydCB7IFNDUkFQRVJTIH0gZnJvbSAnLi4vZGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsgTG9naW5SZXN1bHRzIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXItd2l0aC1icm93c2VyJztcblxuY29uc3QgQ09NUEFOWV9JRCA9ICdoYXBvYWxpbSc7IC8vIFRPRE8gdGhpcyBwcm9wZXJ0eSBzaG91bGQgYmUgaGFyZC1jb2RlZCBpbiB0aGUgcHJvdmlkZXJcbmNvbnN0IHRlc3RzQ29uZmlnID0gZ2V0VGVzdHNDb25maWcoKTtcblxuZGVzY3JpYmUoJ0hhcG9hbGltIGxlZ2FjeSBzY3JhcGVyJywgKCkgPT4ge1xuICBiZWZvcmVBbGwoKCkgPT4ge1xuICAgIGV4dGVuZEFzeW5jVGltZW91dCgpOyAvLyBUaGUgZGVmYXVsdCB0aW1lb3V0IGlzIDUgc2Vjb25kcyBwZXIgYXN5bmMgdGVzdCwgdGhpcyBmdW5jdGlvbiBleHRlbmRzIHRoZSB0aW1lb3V0IHZhbHVlXG4gIH0pO1xuXG4gIHRlc3QoJ3Nob3VsZCBleHBvc2UgbG9naW4gZmllbGRzIGluIHNjcmFwZXJzIGNvbnN0YW50JywgKCkgPT4ge1xuICAgIGV4cGVjdChTQ1JBUEVSUy5oYXBvYWxpbSkudG9CZURlZmluZWQoKTtcbiAgICBleHBlY3QoU0NSQVBFUlMuaGFwb2FsaW0ubG9naW5GaWVsZHMpLnRvQ29udGFpbigndXNlckNvZGUnKTtcbiAgICBleHBlY3QoU0NSQVBFUlMuaGFwb2FsaW0ubG9naW5GaWVsZHMpLnRvQ29udGFpbigncGFzc3dvcmQnKTtcbiAgfSk7XG5cbiAgbWF5YmVUZXN0Q29tcGFueUFQSShDT01QQU5ZX0lELCBjb25maWcgPT4gY29uZmlnLmNvbXBhbnlBUEkuaW52YWxpZFBhc3N3b3JkKShcbiAgICAnc2hvdWxkIGZhaWwgb24gaW52YWxpZCB1c2VyL3Bhc3N3b3JkXCInLFxuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgIC4uLnRlc3RzQ29uZmlnLm9wdGlvbnMsXG4gICAgICAgIGNvbXBhbnlJZDogQ09NUEFOWV9JRCxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHNjcmFwZXIgPSBuZXcgSGFwb2FsaW1TY3JhcGVyKG9wdGlvbnMpO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzY3JhcGVyLnNjcmFwZSh7IHVzZXJDb2RlOiAnZTEwczEyJywgcGFzc3dvcmQ6ICczZjNzczNkJyB9KTtcblxuICAgICAgZXhwZWN0KHJlc3VsdCkudG9CZURlZmluZWQoKTtcbiAgICAgIGV4cGVjdChyZXN1bHQuc3VjY2VzcykudG9CZUZhbHN5KCk7XG4gICAgICBleHBlY3QocmVzdWx0LmVycm9yVHlwZSkudG9CZShMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkKTtcbiAgICB9LFxuICApO1xuXG4gIG1heWJlVGVzdENvbXBhbnlBUEkoQ09NUEFOWV9JRCkoJ3Nob3VsZCBzY3JhcGUgdHJhbnNhY3Rpb25zXCInLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIC4uLnRlc3RzQ29uZmlnLm9wdGlvbnMsXG4gICAgICBjb21wYW55SWQ6IENPTVBBTllfSUQsXG4gICAgfTtcblxuICAgIGNvbnN0IHNjcmFwZXIgPSBuZXcgSGFwb2FsaW1TY3JhcGVyKG9wdGlvbnMpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNjcmFwZXIuc2NyYXBlKHRlc3RzQ29uZmlnLmNyZWRlbnRpYWxzLmhhcG9hbGltKTtcbiAgICBleHBlY3QocmVzdWx0KS50b0JlRGVmaW5lZCgpO1xuICAgIGNvbnN0IGVycm9yID0gYCR7cmVzdWx0LmVycm9yVHlwZSB8fCAnJ30gJHtyZXN1bHQuZXJyb3JNZXNzYWdlIHx8ICcnfWAudHJpbSgpO1xuICAgIGV4cGVjdChlcnJvcikudG9CZSgnJyk7XG4gICAgZXhwZWN0KHJlc3VsdC5zdWNjZXNzKS50b0JlVHJ1dGh5KCk7XG5cbiAgICBleHBvcnRUcmFuc2FjdGlvbnMoQ09NUEFOWV9JRCwgcmVzdWx0LmFjY291bnRzIHx8IFtdKTtcbiAgfSk7XG59KTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxJQUFB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
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL2ludGVyZmFjZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIEJyb3dzZXJDb250ZXh0LCB0eXBlIEJyb3dzZXIsIHR5cGUgUGFnZSB9IGZyb20gJ3B1cHBldGVlcic7XG5pbXBvcnQgeyB0eXBlIENvbXBhbnlUeXBlcywgdHlwZSBTY3JhcGVyUHJvZ3Jlc3NUeXBlcyB9IGZyb20gJy4uL2RlZmluaXRpb25zJztcbmltcG9ydCB7IHR5cGUgVHJhbnNhY3Rpb25zQWNjb3VudCB9IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyB0eXBlIEVycm9yUmVzdWx0LCB0eXBlIFNjcmFwZXJFcnJvclR5cGVzIH0gZnJvbSAnLi9lcnJvcnMnO1xuXG4vLyBUT0RPOiBSZW1vdmUgdGhpcyB0eXBlIHdoZW4gdGhlIHNjcmFwZXIgJ2ZhY3RvcnknIHdpbGwgcmV0dXJuIGNvbmNyZXRlIHNjcmFwZXIgdHlwZXNcbi8vIEluc3RlYWQgb2YgYSBnZW5lcmljIGludGVyZmFjZSAod2hpY2ggaW4gdHVybiB1c2VzIHRoaXMgdHlwZSlcbmV4cG9ydCB0eXBlIFNjcmFwZXJDcmVkZW50aWFscyA9XG4gIHwgeyB1c2VyQ29kZTogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH1cbiAgfCB7IHVzZXJuYW1lOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmcgfVxuICB8IHsgaWQ6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9XG4gIHwgeyBpZDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nOyBudW06IHN0cmluZyB9XG4gIHwgeyBpZDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nOyBjYXJkNkRpZ2l0czogc3RyaW5nIH1cbiAgfCB7IHVzZXJuYW1lOiBzdHJpbmc7IG5hdGlvbmFsSUQ6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9XG4gIHwgKHsgZW1haWw6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9ICYgKFxuICAgICAgfCB7XG4gICAgICAgICAgb3RwQ29kZVJldHJpZXZlcjogKCkgPT4gUHJvbWlzZTxzdHJpbmc+O1xuICAgICAgICAgIHBob25lTnVtYmVyOiBzdHJpbmc7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIG90cExvbmdUZXJtVG9rZW46IHN0cmluZztcbiAgICAgICAgfVxuICAgICkpO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZ1dHVyZURlYml0IHtcbiAgYW1vdW50OiBudW1iZXI7XG4gIGFtb3VudEN1cnJlbmN5OiBzdHJpbmc7XG4gIGNoYXJnZURhdGU/OiBzdHJpbmc7XG4gIGJhbmtBY2NvdW50TnVtYmVyPzogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgRXh0ZXJuYWxCcm93c2VyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBbiBleHRlcm5hbGx5IGNyZWF0ZWQgYnJvd3NlciBpbnN0YW5jZS5cbiAgICogeW91IGNhbiBnZXQgYSBicm93c2VyIGRpcmVjdGx5IGZyb20gcHVwcGV0ZWVyIHZpYSBgcHVwcGV0ZWVyLmxhdW5jaCgpYFxuICAgKlxuICAgKiBOb3RlOiBUaGUgYnJvd3NlciB3aWxsIGJlIGNsb3NlZCBieSB0aGUgbGlicmFyeSBhZnRlciB0aGUgc2NyYXBlciBmaW5pc2hlcyB1bmxlc3MgYHNraXBDbG9zZUJyb3dzZXJgIGlzIHNldCB0byB0cnVlXG4gICAqL1xuICBicm93c2VyOiBCcm93c2VyO1xuXG4gIC8qKlxuICAgKiBJZiB0cnVlLCB0aGUgYnJvd3NlciB3aWxsIG5vdCBiZSBjbG9zZWQgYnkgdGhlIGxpYnJhcnkgYWZ0ZXIgdGhlIHNjcmFwZXIgZmluaXNoZXNcbiAgICovXG4gIHNraXBDbG9zZUJyb3dzZXI/OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgRXh0ZXJuYWxCcm93c2VyQ29udGV4dE9wdGlvbnMge1xuICAvKipcbiAgICogQW4gZXh0ZXJuYWxseSBtYW5hZ2VkIGJyb3dzZXIgY29udGV4dC4gVGhpcyBpcyB1c2VmdWwgd2hlbiB5b3Ugd2FudCB0byBtYW5hZ2UgdGhlIGJyb3dzZXJcbiAgICovXG4gIGJyb3dzZXJDb250ZXh0OiBCcm93c2VyQ29udGV4dDtcbn1cblxuaW50ZXJmYWNlIERlZmF1bHRCcm93c2VyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBzaG93cyB0aGUgYnJvd3NlciB3aGlsZSBzY3JhcGluZywgZ29vZCBmb3IgZGVidWdnaW5nIChkZWZhdWx0IGZhbHNlKVxuICAgKi9cbiAgc2hvd0Jyb3dzZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBwcm92aWRlIGEgcGF0Y2ggdG8gbG9jYWwgY2hyb21pdW0gdG8gYmUgdXNlZCBieSBwdXBwZXRlZXIuIFJlbGV2YW50IHdoZW4gdXNpbmdcbiAgICogYGlzcmFlbGktYmFuay1zY3JhcGVycy1jb3JlYCBsaWJyYXJ5XG4gICAqL1xuICBleGVjdXRhYmxlUGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogYWRkaXRpb25hbCBhcmd1bWVudHMgdG8gcGFzcyB0byB0aGUgYnJvd3NlciBpbnN0YW5jZS4gVGhlIGxpc3Qgb2YgZmxhZ3MgY2FuIGJlIGZvdW5kIGluXG4gICAqXG4gICAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvTW96aWxsYS9Db21tYW5kX0xpbmVfT3B0aW9uc1xuICAgKiBodHRwczovL3BldGVyLnNoL2V4cGVyaW1lbnRzL2Nocm9taXVtLWNvbW1hbmQtbGluZS1zd2l0Y2hlcy9cbiAgICovXG4gIGFyZ3M/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogTWF4aW11bSBuYXZpZ2F0aW9uIHRpbWUgaW4gbWlsbGlzZWNvbmRzLCBwYXNzIDAgdG8gZGlzYWJsZSB0aW1lb3V0LlxuICAgKiBAZGVmYXVsdCAzMDAwMFxuICAgKi9cbiAgdGltZW91dD86IG51bWJlcjtcblxuICAvKipcbiAgICogYWRqdXN0IHRoZSBicm93c2VyIGluc3RhbmNlIGJlZm9yZSBpdCBpcyBiZWluZyB1c2VkXG4gICAqXG4gICAqIEBwYXJhbSBicm93c2VyXG4gICAqL1xuICBwcmVwYXJlQnJvd3Nlcj86IChicm93c2VyOiBCcm93c2VyKSA9PiBQcm9taXNlPHZvaWQ+O1xufVxuXG50eXBlIFNjcmFwZXJCcm93c2VyT3B0aW9ucyA9IEV4dGVybmFsQnJvd3Nlck9wdGlvbnMgfCBFeHRlcm5hbEJyb3dzZXJDb250ZXh0T3B0aW9ucyB8IERlZmF1bHRCcm93c2VyT3B0aW9ucztcblxuZXhwb3J0IHR5cGUgU2NyYXBlck9wdGlvbnMgPSBTY3JhcGVyQnJvd3Nlck9wdGlvbnMgJiB7XG4gIC8qKlxuICAgKiBUaGUgY29tcGFueSB5b3Ugd2FudCB0byBzY3JhcGVcbiAgICovXG4gIGNvbXBhbnlJZDogQ29tcGFueVR5cGVzO1xuXG4gIC8qKlxuICAgKiBpbmNsdWRlIG1vcmUgZGVidWcgaW5mbyBhYm91dCBpbiB0aGUgb3V0cHV0XG4gICAqL1xuICB2ZXJib3NlPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogdGhlIGRhdGUgdG8gZmV0Y2ggdHJhbnNhY3Rpb25zIGZyb20gKGNhbid0IGJlIGJlZm9yZSB0aGUgbWluaW11bSBhbGxvd2VkIHRpbWUgZGlmZmVyZW5jZSBmb3IgdGhlIHNjcmFwZXIpXG4gICAqL1xuICBzdGFydERhdGU6IERhdGU7XG5cbiAgLyoqXG4gICAqIHNjcmFwZSB0cmFuc2FjdGlvbnMgdG8gYmUgcHJvY2Vzc2VkIFggbW9udGhzIGluIHRoZSBmdXR1cmVcbiAgICovXG4gIGZ1dHVyZU1vbnRoc1RvU2NyYXBlPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBpZiBzZXQgdG8gdHJ1ZSwgYWxsIGluc3RhbGxtZW50IHRyYW5zYWN0aW9ucyB3aWxsIGJlIGNvbWJpbmUgaW50byB0aGUgZmlyc3Qgb25lXG4gICAqL1xuICBjb21iaW5lSW5zdGFsbG1lbnRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogYWRqdXN0IHRoZSBwYWdlIGluc3RhbmNlIGJlZm9yZSBpdCBpcyBiZWluZyB1c2VkLlxuICAgKlxuICAgKiBAcGFyYW0gcGFnZVxuICAgKi9cbiAgcHJlcGFyZVBhZ2U/OiAocGFnZTogUGFnZSkgPT4gUHJvbWlzZTx2b2lkPjtcblxuICAvKipcbiAgICogaWYgc2V0LCBzdG9yZSBhIHNjcmVlbnNob3QgaWYgZmFpbGVkIHRvIHNjcmFwZS4gVXNlZCBmb3IgZGVidWcgcHVycG9zZXNcbiAgICovXG4gIHN0b3JlRmFpbHVyZVNjcmVlblNob3RQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBpZiBzZXQsIHdpbGwgc2V0IHRoZSB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyBvZiBwdXBwZXRlZXIncyBgcGFnZS5zZXREZWZhdWx0VGltZW91dGAuXG4gICAqL1xuICBkZWZhdWx0VGltZW91dD86IG51bWJlcjtcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgbWFuaXB1bGF0aW9uIG9mIG91dHB1dCBkYXRhXG4gICAqL1xuICBvdXRwdXREYXRhPzogT3V0cHV0RGF0YU9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFBlcmZvcm0gYWRkaXRpb25hbCBvcGVyYXRpb24gZm9yIGVhY2ggdHJhbnNhY3Rpb24gdG8gZ2V0IG1vcmUgaW5mb3JtYXRpb24gKExpa2UgY2F0ZWdvcnkpIGFib3V0IGl0LlxuICAgKiBQbGVhc2Ugbm90ZTogSXQgd2lsbCB0YWtlIG1vcmUgdGltZSB0byBmaW5pc2ggdGhlIHByb2Nlc3MuXG4gICAqL1xuICBhZGRpdGlvbmFsVHJhbnNhY3Rpb25JbmZvcm1hdGlvbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFkanVzdCB0aGUgdmlld3BvcnQgc2l6ZSBvZiB0aGUgYnJvd3NlciBwYWdlLlxuICAgKiBJZiBub3Qgc2V0LCB0aGUgZGVmYXVsdCB2aWV3cG9ydCBzaXplIG9mIDEwMjR4NzY4IHdpbGwgYmUgdXNlZC5cbiAgICovXG4gIHZpZXdwb3J0U2l6ZT86IHtcbiAgICB3aWR0aDogbnVtYmVyO1xuICAgIGhlaWdodDogbnVtYmVyO1xuICB9O1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHRpbWVzIHRvIHJldHJ5IHRoZSBuYXZpZ2F0aW9uIGluIGNhc2Ugb2YgYSBmYWlsdXJlIChkZWZhdWx0IDApXG4gICAqL1xuICBuYXZpZ2F0aW9uUmV0cnlDb3VudD86IG51bWJlcjtcbn07XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3V0cHV0RGF0YU9wdGlvbnMge1xuICAvKipcbiAgICogaWYgdHJ1ZSwgdGhlIHJlc3VsdCB3b3VsZG4ndCBiZSBmaWx0ZXJlZCBvdXQgYnkgZGF0ZSwgYW5kIHlvdSB3aWxsIHJldHVybiB1bmZpbHRlcmVkIHNjcmFwcGVkIGRhdGEuXG4gICAqL1xuICBlbmFibGVUcmFuc2FjdGlvbnNGaWx0ZXJCeURhdGU/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjcmFwZXJTY3JhcGluZ1Jlc3VsdCB7XG4gIHN1Y2Nlc3M6IGJvb2xlYW47XG4gIGFjY291bnRzPzogVHJhbnNhY3Rpb25zQWNjb3VudFtdO1xuICBmdXR1cmVEZWJpdHM/OiBGdXR1cmVEZWJpdFtdO1xuICBlcnJvclR5cGU/OiBTY3JhcGVyRXJyb3JUeXBlcztcbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nOyAvLyBvbmx5IG9uIHN1Y2Nlc3M9ZmFsc2Vcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY3JhcGVyPFRDcmVkZW50aWFscyBleHRlbmRzIFNjcmFwZXJDcmVkZW50aWFscz4ge1xuICBzY3JhcGUoY3JlZGVudGlhbHM6IFRDcmVkZW50aWFscyk6IFByb21pc2U8U2NyYXBlclNjcmFwaW5nUmVzdWx0PjtcbiAgb25Qcm9ncmVzcyhmdW5jOiAoY29tcGFueUlkOiBDb21wYW55VHlwZXMsIHBheWxvYWQ6IHsgdHlwZTogU2NyYXBlclByb2dyZXNzVHlwZXMgfSkgPT4gdm9pZCk6IHZvaWQ7XG4gIHRyaWdnZXJUd29GYWN0b3JBdXRoKHBob25lTnVtYmVyOiBzdHJpbmcpOiBQcm9taXNlPFNjcmFwZXJUd29GYWN0b3JBdXRoVHJpZ2dlclJlc3VsdD47XG4gIGdldExvbmdUZXJtVHdvRmFjdG9yVG9rZW4ob3RwQ29kZTogc3RyaW5nKTogUHJvbWlzZTxTY3JhcGVyR2V0TG9uZ1Rlcm1Ud29GYWN0b3JUb2tlblJlc3VsdD47XG59XG5cbmV4cG9ydCB0eXBlIFNjcmFwZXJUd29GYWN0b3JBdXRoVHJpZ2dlclJlc3VsdCA9XG4gIHwgRXJyb3JSZXN1bHRcbiAgfCB7XG4gICAgICBzdWNjZXNzOiB0cnVlO1xuICAgIH07XG5cbmV4cG9ydCB0eXBlIFNjcmFwZXJHZXRMb25nVGVybVR3b0ZhY3RvclRva2VuUmVzdWx0ID1cbiAgfCBFcnJvclJlc3VsdFxuICB8IHtcbiAgICAgIHN1Y2Nlc3M6IHRydWU7XG4gICAgICBsb25nVGVybVR3b0ZhY3RvckF1dGhUb2tlbjogc3RyaW5nO1xuICAgIH07XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NyYXBlckxvZ2luUmVzdWx0IHtcbiAgc3VjY2VzczogYm9vbGVhbjtcbiAgZXJyb3JUeXBlPzogU2NyYXBlckVycm9yVHlwZXM7XG4gIGVycm9yTWVzc2FnZT86IHN0cmluZzsgLy8gb25seSBvbiBzdWNjZXNzPWZhbHNlXG4gIHBlcnNpc3RlbnRPdHBUb2tlbj86IHN0cmluZztcbn1cbiJdLCJtYXBwaW5ncyI6IiIsImlnbm9yZUxpc3QiOltdfQ==
|
package/lib/scrapers/isracard.js
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _baseIsracardAmex = _interopRequireDefault(require("./base-isracard-amex"));
|
|
8
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
7
9
|
const BASE_URL = 'https://digital.isracard.co.il';
|
|
8
10
|
const COMPANY_CODE = '11';
|
|
9
|
-
class IsracardScraper extends
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
class IsracardScraper extends _baseIsracardAmex.default {
|
|
12
|
+
constructor(options) {
|
|
13
|
+
super(options, BASE_URL, COMPANY_CODE);
|
|
14
|
+
}
|
|
13
15
|
}
|
|
14
|
-
exports.default = IsracardScraper;
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
16
|
+
var _default = exports.default = IsracardScraper;
|
|
17
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYmFzZUlzcmFjYXJkQW1leCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiQkFTRV9VUkwiLCJDT01QQU5ZX0NPREUiLCJJc3JhY2FyZFNjcmFwZXIiLCJJc3JhY2FyZEFtZXhCYXNlU2NyYXBlciIsImNvbnN0cnVjdG9yIiwib3B0aW9ucyIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9pc3JhY2FyZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgSXNyYWNhcmRBbWV4QmFzZVNjcmFwZXIgZnJvbSAnLi9iYXNlLWlzcmFjYXJkLWFtZXgnO1xuaW1wb3J0IHsgdHlwZSBTY3JhcGVyT3B0aW9ucyB9IGZyb20gJy4vaW50ZXJmYWNlJztcblxuY29uc3QgQkFTRV9VUkwgPSAnaHR0cHM6Ly9kaWdpdGFsLmlzcmFjYXJkLmNvLmlsJztcbmNvbnN0IENPTVBBTllfQ09ERSA9ICcxMSc7XG5cbmNsYXNzIElzcmFjYXJkU2NyYXBlciBleHRlbmRzIElzcmFjYXJkQW1leEJhc2VTY3JhcGVyIHtcbiAgY29uc3RydWN0b3Iob3B0aW9uczogU2NyYXBlck9wdGlvbnMpIHtcbiAgICBzdXBlcihvcHRpb25zLCBCQVNFX1VSTCwgQ09NUEFOWV9DT0RFKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBJc3JhY2FyZFNjcmFwZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLGlCQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFBMkQsU0FBQUQsdUJBQUFFLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFHM0QsTUFBTUcsUUFBUSxHQUFHLGdDQUFnQztBQUNqRCxNQUFNQyxZQUFZLEdBQUcsSUFBSTtBQUV6QixNQUFNQyxlQUFlLFNBQVNDLHlCQUF1QixDQUFDO0VBQ3BEQyxXQUFXQSxDQUFDQyxPQUF1QixFQUFFO0lBQ25DLEtBQUssQ0FBQ0EsT0FBTyxFQUFFTCxRQUFRLEVBQUVDLFlBQVksQ0FBQztFQUN4QztBQUNGO0FBQUMsSUFBQUssUUFBQSxHQUFBQyxPQUFBLENBQUFSLE9BQUEsR0FFY0csZUFBZSIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|