israeli-bank-scrapers 6.1.0 → 6.1.2
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/constants.js +1 -1
- package/lib/definitions.js +1 -1
- package/lib/helpers/browser.js +1 -4
- package/lib/helpers/elements-interactions.js +1 -3
- package/lib/helpers/fetch.js +7 -11
- package/lib/helpers/navigation.js +1 -4
- package/lib/helpers/storage.js +1 -2
- package/lib/helpers/transactions.js +4 -7
- package/lib/helpers/waiting.js +1 -3
- package/lib/index.js +1 -1
- package/lib/scrapers/amex.test.js +7 -12
- package/lib/scrapers/base-beinleumi-group.js +5 -18
- package/lib/scrapers/base-isracard-amex.js +13 -26
- package/lib/scrapers/base-scraper-with-browser.js +28 -40
- package/lib/scrapers/base-scraper-with-browser.test.js +4 -9
- package/lib/scrapers/base-scraper.js +2 -6
- package/lib/scrapers/behatsdaa.js +6 -10
- package/lib/scrapers/behatsdaa.test.js +7 -11
- package/lib/scrapers/beinleumi.js +4 -11
- package/lib/scrapers/beinleumi.test.js +7 -12
- package/lib/scrapers/beyahad-bishvilha.js +2 -8
- package/lib/scrapers/beyahad-bishvilha.test.js +7 -12
- package/lib/scrapers/discount.js +1 -3
- package/lib/scrapers/discount.test.js +7 -12
- package/lib/scrapers/hapoalim.js +7 -14
- package/lib/scrapers/hapoalim.test.js +7 -12
- package/lib/scrapers/interface.js +1 -1
- package/lib/scrapers/isracard.test.js +7 -12
- package/lib/scrapers/leumi.js +5 -11
- package/lib/scrapers/leumi.test.js +7 -12
- package/lib/scrapers/massad.js +4 -11
- package/lib/scrapers/max.js +14 -26
- package/lib/scrapers/max.test.js +7 -13
- package/lib/scrapers/mercantile.js +4 -8
- package/lib/scrapers/mercantile.test.js +7 -12
- package/lib/scrapers/mizrahi.js +6 -11
- package/lib/scrapers/mizrahi.test.js +7 -12
- package/lib/scrapers/one-zero.js +2 -21
- package/lib/scrapers/one-zero.test.js +7 -12
- package/lib/scrapers/otsar-hahayal.js +4 -11
- package/lib/scrapers/otsar-hahayal.test.js +7 -12
- package/lib/scrapers/pagi.js +4 -11
- package/lib/scrapers/pagi.test.js +7 -12
- package/lib/scrapers/union-bank.js +1 -7
- package/lib/scrapers/union-bank.test.js +7 -12
- package/lib/scrapers/visa-cal.js +27 -40
- package/lib/scrapers/visa-cal.test.js +7 -12
- package/lib/scrapers/yahav.js +1 -6
- package/lib/scrapers/yahav.test.js +7 -12
- package/package.json +10 -7
package/lib/scrapers/visa-cal.js
CHANGED
|
@@ -4,10 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
require("core-js/modules/es.array.flat-map.js");
|
|
8
|
-
require("core-js/modules/es.array.iterator.js");
|
|
9
|
-
require("core-js/modules/es.array.unscopables.flat-map.js");
|
|
10
|
-
require("core-js/modules/es.promise.js");
|
|
11
7
|
var _moment = _interopRequireDefault(require("moment"));
|
|
12
8
|
var _debug = require("../helpers/debug");
|
|
13
9
|
var _elementsInteractions = require("../helpers/elements-interactions");
|
|
@@ -19,9 +15,6 @@ var _waiting = require("../helpers/waiting");
|
|
|
19
15
|
var _transactions2 = require("../transactions");
|
|
20
16
|
var _baseScraperWithBrowser = require("./base-scraper-with-browser");
|
|
21
17
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
22
|
-
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
23
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
24
|
-
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
25
18
|
const LOGIN_URL = 'https://www.cal-online.co.il/';
|
|
26
19
|
const TRANSACTIONS_REQUEST_ENDPOINT = 'https://api.cal-online.co.il/Transactions/api/transactionsDetails/getCardTransactionsDetails';
|
|
27
20
|
const PENDING_TRANSACTIONS_REQUEST_ENDPOINT = 'https://api.cal-online.co.il/Transactions/api/approvals/getClearanceRequests';
|
|
@@ -74,7 +67,7 @@ function getPossibleLoginResults() {
|
|
|
74
67
|
const urls = {
|
|
75
68
|
[_baseScraperWithBrowser.LoginResults.Success]: [/dashboard/i],
|
|
76
69
|
[_baseScraperWithBrowser.LoginResults.InvalidPassword]: [async options => {
|
|
77
|
-
const page = options
|
|
70
|
+
const page = options?.page;
|
|
78
71
|
if (!page) {
|
|
79
72
|
return false;
|
|
80
73
|
}
|
|
@@ -82,7 +75,7 @@ function getPossibleLoginResults() {
|
|
|
82
75
|
}],
|
|
83
76
|
// [LoginResults.AccountBlocked]: [], // TODO add when reaching this scenario
|
|
84
77
|
[_baseScraperWithBrowser.LoginResults.ChangePassword]: [async options => {
|
|
85
|
-
const page = options
|
|
78
|
+
const page = options?.page;
|
|
86
79
|
if (!page) {
|
|
87
80
|
return false;
|
|
88
81
|
}
|
|
@@ -102,7 +95,7 @@ function createLoginFields(credentials) {
|
|
|
102
95
|
}];
|
|
103
96
|
}
|
|
104
97
|
function convertParsedDataToTransactions(data, pendingData) {
|
|
105
|
-
const pendingTransactions = pendingData
|
|
98
|
+
const pendingTransactions = pendingData?.result ? pendingData.result.cardsList.flatMap(card => card.authDetalisList) : [];
|
|
106
99
|
const bankAccounts = data.flatMap(monthData => monthData.result.bankAccounts);
|
|
107
100
|
const regularDebitDays = bankAccounts.flatMap(accounts => accounts.debitDates);
|
|
108
101
|
const immediateDebitDays = bankAccounts.flatMap(accounts => accounts.immidiateDebits.debitDays);
|
|
@@ -142,30 +135,27 @@ function convertParsedDataToTransactions(data, pendingData) {
|
|
|
142
135
|
});
|
|
143
136
|
}
|
|
144
137
|
class VisaCalScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
return frame;
|
|
161
|
-
});
|
|
162
|
-
}
|
|
138
|
+
openLoginPopup = async () => {
|
|
139
|
+
debug('open login popup, wait until login button available');
|
|
140
|
+
await (0, _elementsInteractions.waitUntilElementFound)(this.page, '#ccLoginDesktopBtn', true);
|
|
141
|
+
debug('click on the login button');
|
|
142
|
+
await (0, _elementsInteractions.clickButton)(this.page, '#ccLoginDesktopBtn');
|
|
143
|
+
debug('get the frame that holds the login');
|
|
144
|
+
const frame = await getLoginFrame(this.page);
|
|
145
|
+
debug('wait until the password login tab header is available');
|
|
146
|
+
await (0, _elementsInteractions.waitUntilElementFound)(frame, '#regular-login');
|
|
147
|
+
debug('navigate to the password login tab');
|
|
148
|
+
await (0, _elementsInteractions.clickButton)(frame, '#regular-login');
|
|
149
|
+
debug('wait until the password login tab is active');
|
|
150
|
+
await (0, _elementsInteractions.waitUntilElementFound)(frame, 'regular-login');
|
|
151
|
+
return frame;
|
|
152
|
+
};
|
|
163
153
|
async getCards() {
|
|
164
154
|
const initData = await (0, _waiting.waitUntil)(() => (0, _storage.getFromSessionStorage)(this.page, 'init'), 'get init data in session storage', 10000, 1000);
|
|
165
155
|
if (!initData) {
|
|
166
|
-
throw new Error(
|
|
156
|
+
throw new Error("could not find 'init' data in session storage");
|
|
167
157
|
}
|
|
168
|
-
return initData
|
|
158
|
+
return initData?.result.cards.map(({
|
|
169
159
|
cardUniqueId,
|
|
170
160
|
last4Digits
|
|
171
161
|
}) => ({
|
|
@@ -176,7 +166,7 @@ class VisaCalScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
|
|
|
176
166
|
async getAuthorizationHeader() {
|
|
177
167
|
const authModule = await (0, _storage.getFromSessionStorage)(this.page, 'auth-module');
|
|
178
168
|
if (!authModule) {
|
|
179
|
-
throw new Error(
|
|
169
|
+
throw new Error("could not find 'auth-module' in session storage");
|
|
180
170
|
}
|
|
181
171
|
return `CALAuthScheme ${authModule.auth.calConnectToken}`;
|
|
182
172
|
}
|
|
@@ -222,7 +212,6 @@ class VisaCalScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
|
|
|
222
212
|
};
|
|
223
213
|
}
|
|
224
214
|
async fetchData() {
|
|
225
|
-
var _this$options$futureM;
|
|
226
215
|
const defaultStartMoment = (0, _moment.default)().subtract(1, 'years').subtract(6, 'months').add(1, 'day');
|
|
227
216
|
const startDate = this.options.startDate || defaultStartMoment.toDate();
|
|
228
217
|
const startMoment = _moment.default.max(defaultStartMoment, (0, _moment.default)(startDate));
|
|
@@ -230,9 +219,8 @@ class VisaCalScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
|
|
|
230
219
|
const Authorization = await this.getAuthorizationHeader();
|
|
231
220
|
const cards = await this.getCards();
|
|
232
221
|
const xSiteId = await this.getXSiteId();
|
|
233
|
-
const futureMonthsToScrape =
|
|
222
|
+
const futureMonthsToScrape = this.options.futureMonthsToScrape ?? 1;
|
|
234
223
|
const accounts = await Promise.all(cards.map(async card => {
|
|
235
|
-
var _pendingData, _pendingData2, _this$options$outputD, _this$options$outputD2;
|
|
236
224
|
const finalMonthToFetchMoment = (0, _moment.default)().add(futureMonthsToScrape, 'month');
|
|
237
225
|
const months = finalMonthToFetchMoment.diff(startMoment, 'months');
|
|
238
226
|
const allMonthsData = [];
|
|
@@ -256,15 +244,14 @@ class VisaCalScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
|
|
|
256
244
|
'X-Site-Id': xSiteId,
|
|
257
245
|
'Content-Type': 'application/json'
|
|
258
246
|
});
|
|
259
|
-
if (
|
|
247
|
+
if (monthData?.statusCode !== 1) throw new Error(`failed to fetch transactions for card ${card.last4Digits}. Message: ${monthData?.title || ''}`);
|
|
260
248
|
if (!isCardTransactionDetails(monthData)) {
|
|
261
249
|
throw new Error('monthData is not of type CardTransactionDetails');
|
|
262
250
|
}
|
|
263
251
|
allMonthsData.push(monthData);
|
|
264
252
|
}
|
|
265
|
-
if (
|
|
266
|
-
|
|
267
|
-
debug(`failed to fetch pending transactions for card ${card.last4Digits}. Message: ${((_pendingData3 = pendingData) === null || _pendingData3 === void 0 ? void 0 : _pendingData3.title) || ''}`);
|
|
253
|
+
if (pendingData?.statusCode !== 1 && pendingData?.statusCode !== 96) {
|
|
254
|
+
debug(`failed to fetch pending transactions for card ${card.last4Digits}. Message: ${pendingData?.title || ''}`);
|
|
268
255
|
pendingData = null;
|
|
269
256
|
} else if (!isCardPendingTransactionDetails(pendingData)) {
|
|
270
257
|
debug('pendingData is not of type CardTransactionDetails');
|
|
@@ -272,7 +259,7 @@ class VisaCalScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
|
|
|
272
259
|
}
|
|
273
260
|
const transactions = convertParsedDataToTransactions(allMonthsData, pendingData);
|
|
274
261
|
debug('filer out old transactions');
|
|
275
|
-
const txns =
|
|
262
|
+
const txns = this.options.outputData?.enableTransactionsFilterByDate ?? true ? (0, _transactions.filterOldTransactions)(transactions, (0, _moment.default)(startDate), this.options.combineInstallments || false) : transactions;
|
|
276
263
|
return {
|
|
277
264
|
txns,
|
|
278
265
|
accountNumber: card.last4Digits
|
|
@@ -287,4 +274,4 @@ class VisaCalScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
|
|
|
287
274
|
}
|
|
288
275
|
}
|
|
289
276
|
var _default = exports.default = VisaCalScraper;
|
|
290
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZGVidWciLCJfZWxlbWVudHNJbnRlcmFjdGlvbnMiLCJfZmV0Y2giLCJfbmF2aWdhdGlvbiIsIl9zdG9yYWdlIiwiX3RyYW5zYWN0aW9ucyIsIl93YWl0aW5nIiwiX3RyYW5zYWN0aW9uczIiLCJfYmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIl9kZWZpbmVQcm9wZXJ0eSIsInIiLCJ0IiwiX3RvUHJvcGVydHlLZXkiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsInZhbHVlIiwiZW51bWVyYWJsZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiaSIsIl90b1ByaW1pdGl2ZSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsIkxPR0lOX1VSTCIsIlRSQU5TQUNUSU9OU19SRVFVRVNUX0VORFBPSU5UIiwiUEVORElOR19UUkFOU0FDVElPTlNfUkVRVUVTVF9FTkRQT0lOVCIsIkludmFsaWRQYXNzd29yZE1lc3NhZ2UiLCJkZWJ1ZyIsImdldERlYnVnIiwiVHJuVHlwZUNvZGUiLCJpc1BlbmRpbmciLCJ0cmFuc2FjdGlvbiIsImRlYkNyZERhdGUiLCJ1bmRlZmluZWQiLCJpc0NhcmRUcmFuc2FjdGlvbkRldGFpbHMiLCJyZXN1bHQiLCJpc0NhcmRQZW5kaW5nVHJhbnNhY3Rpb25EZXRhaWxzIiwiZ2V0TG9naW5GcmFtZSIsInBhZ2UiLCJmcmFtZSIsIndhaXRVbnRpbCIsImZyYW1lcyIsImZpbmQiLCJmIiwidXJsIiwiaW5jbHVkZXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsIkVycm9yIiwiaGFzSW52YWxpZFBhc3N3b3JkRXJyb3IiLCJlcnJvckZvdW5kIiwiZWxlbWVudFByZXNlbnRPblBhZ2UiLCJlcnJvck1lc3NhZ2UiLCJwYWdlRXZhbCIsIml0ZW0iLCJpbm5lclRleHQiLCJoYXNDaGFuZ2VQYXNzd29yZEZvcm0iLCJnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyIsInVybHMiLCJMb2dpblJlc3VsdHMiLCJTdWNjZXNzIiwiSW52YWxpZFBhc3N3b3JkIiwib3B0aW9ucyIsIkNoYW5nZVBhc3N3b3JkIiwiY3JlYXRlTG9naW5GaWVsZHMiLCJjcmVkZW50aWFscyIsInNlbGVjdG9yIiwidXNlcm5hbWUiLCJwYXNzd29yZCIsImNvbnZlcnRQYXJzZWREYXRhVG9UcmFuc2FjdGlvbnMiLCJkYXRhIiwicGVuZGluZ0RhdGEiLCJwZW5kaW5nVHJhbnNhY3Rpb25zIiwiY2FyZHNMaXN0IiwiZmxhdE1hcCIsImNhcmQiLCJhdXRoRGV0YWxpc0xpc3QiLCJiYW5rQWNjb3VudHMiLCJtb250aERhdGEiLCJyZWd1bGFyRGViaXREYXlzIiwiYWNjb3VudHMiLCJkZWJpdERhdGVzIiwiaW1tZWRpYXRlRGViaXREYXlzIiwiaW1taWRpYXRlRGViaXRzIiwiZGViaXREYXlzIiwiY29tcGxldGVkVHJhbnNhY3Rpb25zIiwiZGViaXREYXRlIiwidHJhbnNhY3Rpb25zIiwiYWxsIiwibWFwIiwibnVtT2ZQYXltZW50cyIsIm51bWJlck9mUGF5bWVudHMiLCJpbnN0YWxsbWVudHMiLCJudW1iZXIiLCJjdXJQYXltZW50TnVtIiwidG90YWwiLCJkYXRlIiwibW9tZW50IiwidHJuUHVyY2hhc2VEYXRlIiwiY2hhcmdlZEFtb3VudCIsInRybkFtdCIsImFtdEJlZm9yZUNvbnZBbmRJbmRleCIsIm9yaWdpbmFsQW1vdW50IiwidHJuVHlwZUNvZGUiLCJjcmVkaXQiLCJpZGVudGlmaWVyIiwidHJuSW50SWQiLCJ0eXBlIiwicmVndWxhciIsInN0YW5kaW5nT3JkZXIiLCJUcmFuc2FjdGlvblR5cGVzIiwiTm9ybWFsIiwiSW5zdGFsbG1lbnRzIiwic3RhdHVzIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIlBlbmRpbmciLCJDb21wbGV0ZWQiLCJhZGQiLCJ0b0lTT1N0cmluZyIsInByb2Nlc3NlZERhdGUiLCJEYXRlIiwib3JpZ2luYWxDdXJyZW5jeSIsInRybkN1cnJlbmN5U3ltYm9sIiwiY2hhcmdlZEN1cnJlbmN5IiwiZGViQ3JkQ3VycmVuY3lTeW1ib2wiLCJkZXNjcmlwdGlvbiIsIm1lcmNoYW50TmFtZSIsIm1lbW8iLCJ0cmFuc1R5cGVDb21tZW50RGV0YWlscyIsInRvU3RyaW5nIiwiY2F0ZWdvcnkiLCJicmFuY2hDb2RlRGVzYyIsIlZpc2FDYWxTY3JhcGVyIiwiQmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImNvbnN0cnVjdG9yIiwiYXJncyIsIndhaXRVbnRpbEVsZW1lbnRGb3VuZCIsImNsaWNrQnV0dG9uIiwiZ2V0Q2FyZHMiLCJpbml0RGF0YSIsImdldEZyb21TZXNzaW9uU3RvcmFnZSIsImNhcmRzIiwiY2FyZFVuaXF1ZUlkIiwibGFzdDREaWdpdHMiLCJnZXRBdXRob3JpemF0aW9uSGVhZGVyIiwiYXV0aE1vZHVsZSIsImF1dGgiLCJjYWxDb25uZWN0VG9rZW4iLCJnZXRYU2l0ZUlkIiwiZ2V0TG9naW5PcHRpb25zIiwibG9naW5VcmwiLCJmaWVsZHMiLCJzdWJtaXRCdXR0b25TZWxlY3RvciIsInBvc3NpYmxlUmVzdWx0cyIsImNoZWNrUmVhZGluZXNzIiwicHJlQWN0aW9uIiwib3BlbkxvZ2luUG9wdXAiLCJwb3N0QWN0aW9uIiwid2FpdEZvck5hdmlnYXRpb24iLCJjdXJyZW50VXJsIiwiZ2V0Q3VycmVudFVybCIsImVuZHNXaXRoIiwicmVxdWlyZXNDaGFuZ2VQYXNzd29yZCIsInVzZXJBZ2VudCIsImZldGNoRGF0YSIsIl90aGlzJG9wdGlvbnMkZnV0dXJlTSIsImRlZmF1bHRTdGFydE1vbWVudCIsInN1YnRyYWN0Iiwic3RhcnREYXRlIiwidG9EYXRlIiwic3RhcnRNb21lbnQiLCJtYXgiLCJmb3JtYXQiLCJBdXRob3JpemF0aW9uIiwieFNpdGVJZCIsImZ1dHVyZU1vbnRoc1RvU2NyYXBlIiwiX3BlbmRpbmdEYXRhIiwiX3BlbmRpbmdEYXRhMiIsIl90aGlzJG9wdGlvbnMkb3V0cHV0RCIsIl90aGlzJG9wdGlvbnMkb3V0cHV0RDIiLCJmaW5hbE1vbnRoVG9GZXRjaE1vbWVudCIsIm1vbnRocyIsImRpZmYiLCJhbGxNb250aHNEYXRhIiwiZmV0Y2hQb3N0V2l0aGluUGFnZSIsImNhcmRVbmlxdWVJREFycmF5IiwibW9udGgiLCJjbG9uZSIsInllYXIiLCJzdGF0dXNDb2RlIiwidGl0bGUiLCJwdXNoIiwiX3BlbmRpbmdEYXRhMyIsInR4bnMiLCJvdXRwdXREYXRhIiwiZW5hYmxlVHJhbnNhY3Rpb25zRmlsdGVyQnlEYXRlIiwiZmlsdGVyT2xkVHJhbnNhY3Rpb25zIiwiY29tYmluZUluc3RhbGxtZW50cyIsImFjY291bnROdW1iZXIiLCJKU09OIiwic3RyaW5naWZ5Iiwic3VjY2VzcyIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy92aXNhLWNhbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyB0eXBlIEZyYW1lLCB0eXBlIFBhZ2UgfSBmcm9tICdwdXBwZXRlZXInO1xuaW1wb3J0IHsgZ2V0RGVidWcgfSBmcm9tICcuLi9oZWxwZXJzL2RlYnVnJztcbmltcG9ydCB7XG4gIGNsaWNrQnV0dG9uLCBlbGVtZW50UHJlc2VudE9uUGFnZSwgcGFnZUV2YWwsIHdhaXRVbnRpbEVsZW1lbnRGb3VuZCxcbn0gZnJvbSAnLi4vaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMnO1xuaW1wb3J0IHsgZmV0Y2hQb3N0V2l0aGluUGFnZSB9IGZyb20gJy4uL2hlbHBlcnMvZmV0Y2gnO1xuaW1wb3J0IHsgZ2V0Q3VycmVudFVybCwgd2FpdEZvck5hdmlnYXRpb24gfSBmcm9tICcuLi9oZWxwZXJzL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgZ2V0RnJvbVNlc3Npb25TdG9yYWdlIH0gZnJvbSAnLi4vaGVscGVycy9zdG9yYWdlJztcbmltcG9ydCB7IGZpbHRlck9sZFRyYW5zYWN0aW9ucyB9IGZyb20gJy4uL2hlbHBlcnMvdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IHdhaXRVbnRpbCB9IGZyb20gJy4uL2hlbHBlcnMvd2FpdGluZyc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvblN0YXR1c2VzLFxuICBUcmFuc2FjdGlvblR5cGVzLFxuICB0eXBlIFRyYW5zYWN0aW9uLFxuICB0eXBlIFRyYW5zYWN0aW9uc0FjY291bnQsXG59IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBCYXNlU2NyYXBlcldpdGhCcm93c2VyLCBMb2dpblJlc3VsdHMsIHR5cGUgTG9naW5PcHRpb25zIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXItd2l0aC1icm93c2VyJztcbmltcG9ydCB7IHR5cGUgU2NyYXBlclNjcmFwaW5nUmVzdWx0IH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuXG5jb25zdCBMT0dJTl9VUkwgPSAnaHR0cHM6Ly93d3cuY2FsLW9ubGluZS5jby5pbC8nO1xuY29uc3QgVFJBTlNBQ1RJT05TX1JFUVVFU1RfRU5EUE9JTlQgPSAnaHR0cHM6Ly9hcGkuY2FsLW9ubGluZS5jby5pbC9UcmFuc2FjdGlvbnMvYXBpL3RyYW5zYWN0aW9uc0RldGFpbHMvZ2V0Q2FyZFRyYW5zYWN0aW9uc0RldGFpbHMnO1xuY29uc3QgUEVORElOR19UUkFOU0FDVElPTlNfUkVRVUVTVF9FTkRQT0lOVCA9ICdodHRwczovL2FwaS5jYWwtb25saW5lLmNvLmlsL1RyYW5zYWN0aW9ucy9hcGkvYXBwcm92YWxzL2dldENsZWFyYW5jZVJlcXVlc3RzJztcblxuY29uc3QgSW52YWxpZFBhc3N3b3JkTWVzc2FnZSA9ICfXqdedINeU157Xqdeq157XqSDXkNeVINeU16HXmdeh157XlCDXqdeU15XXlteg15Ug16nXkteV15nXmdedJztcblxuY29uc3QgZGVidWcgPSBnZXREZWJ1ZygndmlzYS1jYWwnKTtcblxuZW51bSBUcm5UeXBlQ29kZSB7XG4gIHJlZ3VsYXIgPSAnNScsXG4gIGNyZWRpdCA9ICc2JyxcbiAgaW5zdGFsbG1lbnRzID0gJzgnLFxuICBzdGFuZGluZ09yZGVyID0gJzknLFxufVxuXG5pbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uIHtcbiAgYW10QmVmb3JlQ29udkFuZEluZGV4OiBudW1iZXI7XG4gIGJyYW5jaENvZGVEZXNjOiBzdHJpbmc7XG4gIGNhc2hBY2NNYW5hZ2VyTmFtZTogbnVsbDtcbiAgY2FzaEFjY291bnRNYW5hZ2VyOiBudWxsO1xuICBjYXNoQWNjb3VudFRybkFtdDogbnVtYmVyO1xuICBjaGFyZ2VFeHRlcm5hbFRvQ2FyZENvbW1lbnQ6IHN0cmluZztcbiAgY29tbWVudHM6IFtdO1xuICBjdXJQYXltZW50TnVtOiBudW1iZXI7XG4gIGRlYkNyZEN1cnJlbmN5U3ltYm9sOiBDdXJyZW5jeVN5bWJvbDtcbiAgZGViQ3JkRGF0ZTogc3RyaW5nO1xuICBkZWJpdFNwcmVhZEluZDogYm9vbGVhbjtcbiAgZGlzY291bnRBbW91bnQ6IHVua25vd247XG4gIGRpc2NvdW50UmVhc29uOiB1bmtub3duO1xuICBpbW1lZGlhdGVDb21tZW50czogW107XG4gIGlzSW1tZWRpYXRlQ29tbWVudEluZDogYm9vbGVhbjtcbiAgaXNJbW1lZGlhdGVISEtJbmQ6IGJvb2xlYW47XG4gIGlzTWFyZ2FyaXRhOiBib29sZWFuO1xuICBpc1NwcmVhZFBheW1lbnN0QWJyb2FkOiBib29sZWFuO1xuICBsaW5rZWRDb21tZW50czogW107XG4gIG1lcmNoYW50QWRkcmVzczogc3RyaW5nO1xuICBtZXJjaGFudE5hbWU6IHN0cmluZztcbiAgbWVyY2hhbnRQaG9uZU5vOiBzdHJpbmc7XG4gIG51bU9mUGF5bWVudHM6IG51bWJlcjtcbiAgb25Hb2luZ1RyYW5zYWN0aW9uc0NvbW1lbnQ6IHN0cmluZztcbiAgcmVmdW5kSW5kOiBib29sZWFuO1xuICByb3VuZGluZ0Ftb3VudDogdW5rbm93bjtcbiAgcm91bmRpbmdSZWFzb246IHVua25vd247XG4gIHRva2VuSW5kOiAwO1xuICB0b2tlbk51bWJlclBhcnQ0OiAnJztcbiAgdHJhbnNDYXJkUHJlc2VudEluZDogYm9vbGVhbjtcbiAgdHJhbnNUeXBlQ29tbWVudERldGFpbHM6IFtdO1xuICB0cm5BbXQ6IG51bWJlcjtcbiAgdHJuQ3VycmVuY3lTeW1ib2w6IEN1cnJlbmN5U3ltYm9sO1xuICB0cm5FeGFjV2F5OiBudW1iZXI7XG4gIHRybkludElkOiBzdHJpbmc7XG4gIHRybk51bWFyZXRvcjogbnVtYmVyO1xuICB0cm5QdXJjaGFzZURhdGU6IHN0cmluZztcbiAgdHJuVHlwZTogc3RyaW5nO1xuICB0cm5UeXBlQ29kZTogVHJuVHlwZUNvZGU7XG4gIHdhbGxldFByb3ZpZGVyQ29kZTogMDtcbiAgd2FsbGV0UHJvdmlkZXJEZXNjOiAnJztcbiAgZWFybHlQYXltZW50SW5kOiBib29sZWFuO1xufVxuaW50ZXJmYWNlIFNjcmFwZWRQZW5kaW5nVHJhbnNhY3Rpb24ge1xuICBtZXJjaGFudElEOiBzdHJpbmc7XG4gIG1lcmNoYW50TmFtZTogc3RyaW5nO1xuICB0cm5QdXJjaGFzZURhdGU6IHN0cmluZztcbiAgd2FsbGV0VHJhbkluZDogbnVtYmVyO1xuICB0cmFuc2FjdGlvbnNPcmlnaW46IG51bWJlcjtcbiAgdHJuQW10OiBudW1iZXI7XG4gIHRwYUFwcHJvdmFsQW1vdW50OiB1bmtub3duO1xuICB0cm5DdXJyZW5jeVN5bWJvbDogQ3VycmVuY3lTeW1ib2w7XG4gIHRyblR5cGVDb2RlOiBUcm5UeXBlQ29kZTtcbiAgdHJuVHlwZTogc3RyaW5nO1xuICBicmFuY2hDb2RlRGVzYzogc3RyaW5nO1xuICB0cmFuc0NhcmRQcmVzZW50SW5kOiBib29sZWFuO1xuICBqNUluZGljYXRvcjogc3RyaW5nO1xuICBudW1iZXJPZlBheW1lbnRzOiBudW1iZXI7XG4gIGZpcnN0UGF5bWVudEFtb3VudDogbnVtYmVyO1xuICB0cmFuc1R5cGVDb21tZW50RGV0YWlsczogW107XG5cbn1cbmludGVyZmFjZSBJbml0UmVzcG9uc2Uge1xuICByZXN1bHQ6IHtcbiAgICBjYXJkczoge1xuICAgICAgY2FyZFVuaXF1ZUlkOiBzdHJpbmc7XG4gICAgICBsYXN0NERpZ2l0czogc3RyaW5nO1xuICAgICAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbiAgICB9W107XG4gIH07XG59XG50eXBlIEN1cnJlbmN5U3ltYm9sID0gc3RyaW5nO1xuaW50ZXJmYWNlIENhcmRUcmFuc2FjdGlvbkRldGFpbHNFcnJvciB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHN0YXR1c0NvZGU6IG51bWJlcjtcbn1cbmludGVyZmFjZSBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzIGV4dGVuZHMgQ2FyZFRyYW5zYWN0aW9uRGV0YWlsc0Vycm9yIHtcbiAgcmVzdWx0OiB7XG4gICAgYmFua0FjY291bnRzOiB7XG4gICAgICBiYW5rQWNjb3VudE51bTogc3RyaW5nO1xuICAgICAgYmFua05hbWU6IHN0cmluZztcbiAgICAgIGNob2ljZUV4dGVybmFsVHJhbnNhY3Rpb25zOiBhbnk7XG4gICAgICBjdXJyZW50QmFua0FjY291bnRJbmQ6IGJvb2xlYW47XG4gICAgICBkZWJpdERhdGVzOiB7XG4gICAgICAgIGJhc2tldEFtb3VudENvbW1lbnQ6IHVua25vd247XG4gICAgICAgIGNob2ljZUhIS0RlYml0OiBudW1iZXI7XG4gICAgICAgIGRhdGU6IHN0cmluZztcbiAgICAgICAgZGViaXRSZWFzb246IHVua25vd247XG4gICAgICAgIGZpeERlYml0QW1vdW50OiBudW1iZXI7XG4gICAgICAgIGZyb21QdXJjaGFzZURhdGU6IHN0cmluZztcbiAgICAgICAgaXNDaG9pY2VSZXBhaW1lbnQ6IGJvb2xlYW47XG4gICAgICAgIHRvUHVyY2hhc2VEYXRlOiBzdHJpbmc7XG4gICAgICAgIHRvdGFsQmFza2V0QW1vdW50OiBudW1iZXI7XG4gICAgICAgIHRvdGFsRGViaXRzOiB7XG4gICAgICAgICAgY3VycmVuY3lTeW1ib2w6IEN1cnJlbmN5U3ltYm9sO1xuICAgICAgICAgIGFtb3VudDogbnVtYmVyO1xuICAgICAgICB9W107XG4gICAgICAgIHRyYW5zYWN0aW9uczogU2NyYXBlZFRyYW5zYWN0aW9uW107XG4gICAgICB9W107XG4gICAgICBpbW1pZGlhdGVEZWJpdHM6IHsgdG90YWxEZWJpdHM6IFtdLCBkZWJpdERheXM6IFtdIH07XG4gICAgfVtdO1xuICAgIGJsb2NrZWRDYXJkSW5kOiBib29sZWFuO1xuICB9O1xuICBzdGF0dXNDb2RlOiAxO1xuICBzdGF0dXNEZXNjcmlwdGlvbjogc3RyaW5nO1xuICBzdGF0dXNUaXRsZTogc3RyaW5nO1xufVxuaW50ZXJmYWNlIENhcmRQZW5kaW5nVHJhbnNhY3Rpb25EZXRhaWxzIGV4dGVuZHMgQ2FyZFRyYW5zYWN0aW9uRGV0YWlsc0Vycm9yIHtcbiAgcmVzdWx0OiB7XG4gICAgY2FyZHNMaXN0OiB7XG4gICAgICBjYXJkVW5pcXVlSUQ6IHN0cmluZztcbiAgICAgIGF1dGhEZXRhbGlzTGlzdDogU2NyYXBlZFBlbmRpbmdUcmFuc2FjdGlvbltdO1xuICAgIH1bXTtcbiAgfTtcbiAgc3RhdHVzQ29kZTogMTtcbiAgc3RhdHVzRGVzY3JpcHRpb246IHN0cmluZztcbiAgc3RhdHVzVGl0bGU6IHN0cmluZztcbn1cblxuZnVuY3Rpb24gaXNQZW5kaW5nKHRyYW5zYWN0aW9uOiBTY3JhcGVkVHJhbnNhY3Rpb24gfCBTY3JhcGVkUGVuZGluZ1RyYW5zYWN0aW9uKTogdHJhbnNhY3Rpb24gaXMgU2NyYXBlZFBlbmRpbmdUcmFuc2FjdGlvbiB7XG4gIHJldHVybiAodHJhbnNhY3Rpb24gYXMgU2NyYXBlZFRyYW5zYWN0aW9uKS5kZWJDcmREYXRlID09PSB1bmRlZmluZWQ7IC8vIGFuIGFyYml0cmFyeSBmaWVsZCB0aGF0IG9ubHkgYXBwZWFycyBpbiBhIGNvbXBsZXRlZCB0cmFuc2FjdGlvblxufVxuXG5mdW5jdGlvbiBpc0NhcmRUcmFuc2FjdGlvbkRldGFpbHMocmVzdWx0OiBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzIHwgQ2FyZFRyYW5zYWN0aW9uRGV0YWlsc0Vycm9yKTpcbnJlc3VsdCBpcyBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzIHtcbiAgcmV0dXJuIChyZXN1bHQgYXMgQ2FyZFRyYW5zYWN0aW9uRGV0YWlscykucmVzdWx0ICE9PSB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGlzQ2FyZFBlbmRpbmdUcmFuc2FjdGlvbkRldGFpbHMocmVzdWx0OiBDYXJkUGVuZGluZ1RyYW5zYWN0aW9uRGV0YWlscyB8IENhcmRUcmFuc2FjdGlvbkRldGFpbHNFcnJvcik6XG5yZXN1bHQgaXMgQ2FyZFBlbmRpbmdUcmFuc2FjdGlvbkRldGFpbHMge1xuICByZXR1cm4gKHJlc3VsdCBhcyBDYXJkUGVuZGluZ1RyYW5zYWN0aW9uRGV0YWlscykucmVzdWx0ICE9PSB1bmRlZmluZWQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldExvZ2luRnJhbWUocGFnZTogUGFnZSkge1xuICBsZXQgZnJhbWU6IEZyYW1lIHwgbnVsbCA9IG51bGw7XG4gIGRlYnVnKCd3YWl0IHVudGlsIGxvZ2luIGZyYW1lIGZvdW5kJyk7XG4gIGF3YWl0IHdhaXRVbnRpbCgoKSA9PiB7XG4gICAgZnJhbWUgPSBwYWdlXG4gICAgICAuZnJhbWVzKClcbiAgICAgIC5maW5kKChmKSA9PiBmLnVybCgpLmluY2x1ZGVzKCdjb25uZWN0JykpIHx8IG51bGw7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSghIWZyYW1lKTtcbiAgfSwgJ3dhaXQgZm9yIGlmcmFtZSB3aXRoIGxvZ2luIGZvcm0nLCAxMDAwMCwgMTAwMCk7XG5cbiAgaWYgKCFmcmFtZSkge1xuICAgIGRlYnVnKCdmYWlsZWQgdG8gZmluZCBsb2dpbiBmcmFtZSBmb3IgMTAgc2Vjb25kcycpO1xuICAgIHRocm93IG5ldyBFcnJvcignZmFpbGVkIHRvIGV4dHJhY3QgbG9naW4gaWZyYW1lJyk7XG4gIH1cblxuICByZXR1cm4gZnJhbWU7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGhhc0ludmFsaWRQYXNzd29yZEVycm9yKHBhZ2U6IFBhZ2UpIHtcbiAgY29uc3QgZnJhbWUgPSBhd2FpdCBnZXRMb2dpbkZyYW1lKHBhZ2UpO1xuICBjb25zdCBlcnJvckZvdW5kID0gYXdhaXQgZWxlbWVudFByZXNlbnRPblBhZ2UoZnJhbWUsICdkaXYuZ2VuZXJhbC1lcnJvciA+IGRpdicpO1xuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvckZvdW5kID8gYXdhaXQgcGFnZUV2YWwoZnJhbWUsICdkaXYuZ2VuZXJhbC1lcnJvciA+IGRpdicsICcnLCAoaXRlbSkgPT4ge1xuICAgIHJldHVybiAoaXRlbSBhcyBIVE1MRGl2RWxlbWVudCkuaW5uZXJUZXh0O1xuICB9KSA6ICcnO1xuICByZXR1cm4gZXJyb3JNZXNzYWdlID09PSBJbnZhbGlkUGFzc3dvcmRNZXNzYWdlO1xufVxuXG5hc3luYyBmdW5jdGlvbiBoYXNDaGFuZ2VQYXNzd29yZEZvcm0ocGFnZTogUGFnZSkge1xuICBjb25zdCBmcmFtZSA9IGF3YWl0IGdldExvZ2luRnJhbWUocGFnZSk7XG4gIGNvbnN0IGVycm9yRm91bmQgPSBhd2FpdCBlbGVtZW50UHJlc2VudE9uUGFnZShmcmFtZSwgJy5jaGFuZ2UtcGFzc3dvcmQtc3VidGl0bGUnKTtcbiAgcmV0dXJuIGVycm9yRm91bmQ7XG59XG5cbmZ1bmN0aW9uIGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKCkge1xuICBkZWJ1ZygncmV0dXJuIHBvc3NpYmxlIGxvZ2luIHJlc3VsdHMnKTtcbiAgY29uc3QgdXJsczogTG9naW5PcHRpb25zWydwb3NzaWJsZVJlc3VsdHMnXSA9IHtcbiAgICBbTG9naW5SZXN1bHRzLlN1Y2Nlc3NdOiBbL2Rhc2hib2FyZC9pXSxcbiAgICBbTG9naW5SZXN1bHRzLkludmFsaWRQYXNzd29yZF06IFthc3luYyAob3B0aW9ucz86IHsgcGFnZT86IFBhZ2UgfSkgPT4ge1xuICAgICAgY29uc3QgcGFnZSA9IG9wdGlvbnM/LnBhZ2U7XG4gICAgICBpZiAoIXBhZ2UpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGhhc0ludmFsaWRQYXNzd29yZEVycm9yKHBhZ2UpO1xuICAgIH1dLFxuICAgIC8vIFtMb2dpblJlc3VsdHMuQWNjb3VudEJsb2NrZWRdOiBbXSwgLy8gVE9ETyBhZGQgd2hlbiByZWFjaGluZyB0aGlzIHNjZW5hcmlvXG4gICAgW0xvZ2luUmVzdWx0cy5DaGFuZ2VQYXNzd29yZF06IFthc3luYyAob3B0aW9ucz86IHsgcGFnZT86IFBhZ2UgfSkgPT4ge1xuICAgICAgY29uc3QgcGFnZSA9IG9wdGlvbnM/LnBhZ2U7XG4gICAgICBpZiAoIXBhZ2UpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGhhc0NoYW5nZVBhc3N3b3JkRm9ybShwYWdlKTtcbiAgICB9XSxcbiAgfTtcbiAgcmV0dXJuIHVybHM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICBkZWJ1ZygnY3JlYXRlIGxvZ2luIGZpZWxkcyBmb3IgdXNlcm5hbWUgYW5kIHBhc3N3b3JkJyk7XG4gIHJldHVybiBbXG4gICAgeyBzZWxlY3RvcjogJ1tmb3JtY29udHJvbG5hbWU9XCJ1c2VyTmFtZVwiXScsIHZhbHVlOiBjcmVkZW50aWFscy51c2VybmFtZSB9LFxuICAgIHsgc2VsZWN0b3I6ICdbZm9ybWNvbnRyb2xuYW1lPVwicGFzc3dvcmRcIl0nLCB2YWx1ZTogY3JlZGVudGlhbHMucGFzc3dvcmQgfSxcbiAgXTtcbn1cblxuZnVuY3Rpb24gY29udmVydFBhcnNlZERhdGFUb1RyYW5zYWN0aW9ucyhkYXRhOiBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzW10sIHBlbmRpbmdEYXRhPzogQ2FyZFBlbmRpbmdUcmFuc2FjdGlvbkRldGFpbHMgfCBudWxsKTogVHJhbnNhY3Rpb25bXSB7XG4gIGNvbnN0IHBlbmRpbmdUcmFuc2FjdGlvbnMgPSBwZW5kaW5nRGF0YT8ucmVzdWx0ID9cbiAgICBwZW5kaW5nRGF0YS5yZXN1bHQuY2FyZHNMaXN0LmZsYXRNYXAoKGNhcmQpID0+IGNhcmQuYXV0aERldGFsaXNMaXN0KSA6XG4gICAgW107XG5cbiAgY29uc3QgYmFua0FjY291bnRzID0gZGF0YVxuICAgIC5mbGF0TWFwKChtb250aERhdGEpID0+IG1vbnRoRGF0YS5yZXN1bHQuYmFua0FjY291bnRzKTtcbiAgY29uc3QgcmVndWxhckRlYml0RGF5cyA9IGJhbmtBY2NvdW50c1xuICAgIC5mbGF0TWFwKChhY2NvdW50cykgPT4gYWNjb3VudHMuZGViaXREYXRlcyk7XG4gIGNvbnN0IGltbWVkaWF0ZURlYml0RGF5cyA9IGJhbmtBY2NvdW50c1xuICAgIC5mbGF0TWFwKChhY2NvdW50cykgPT4gYWNjb3VudHMuaW1taWRpYXRlRGViaXRzLmRlYml0RGF5cyk7XG4gIGNvbnN0IGNvbXBsZXRlZFRyYW5zYWN0aW9ucyA9IFsuLi5yZWd1bGFyRGViaXREYXlzLCAuLi5pbW1lZGlhdGVEZWJpdERheXNdXG4gICAgLmZsYXRNYXAoKGRlYml0RGF0ZSkgPT4gZGViaXREYXRlLnRyYW5zYWN0aW9ucyk7XG5cbiAgY29uc3QgYWxsOiAoU2NyYXBlZFRyYW5zYWN0aW9uIHwgU2NyYXBlZFBlbmRpbmdUcmFuc2FjdGlvbilbXSA9IFsuLi5wZW5kaW5nVHJhbnNhY3Rpb25zLCAuLi5jb21wbGV0ZWRUcmFuc2FjdGlvbnNdO1xuXG4gIHJldHVybiBhbGwubWFwKCh0cmFuc2FjdGlvbikgPT4ge1xuICAgIGNvbnN0IG51bU9mUGF5bWVudHMgPSBpc1BlbmRpbmcodHJhbnNhY3Rpb24pID8gdHJhbnNhY3Rpb24ubnVtYmVyT2ZQYXltZW50cyA6IHRyYW5zYWN0aW9uLm51bU9mUGF5bWVudHM7XG4gICAgY29uc3QgaW5zdGFsbG1lbnRzID0gbnVtT2ZQYXltZW50cyA/XG4gICAgICB7XG4gICAgICAgIG51bWJlcjogaXNQZW5kaW5nKHRyYW5zYWN0aW9uKSA/IDEgOiB0cmFuc2FjdGlvbi5jdXJQYXltZW50TnVtLFxuICAgICAgICB0b3RhbDogbnVtT2ZQYXltZW50cyxcbiAgICAgIH0gOlxuICAgICAgdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgZGF0ZSA9IG1vbWVudCh0cmFuc2FjdGlvbi50cm5QdXJjaGFzZURhdGUpO1xuXG4gICAgbGV0IGNoYXJnZWRBbW91bnQgPSBpc1BlbmRpbmcodHJhbnNhY3Rpb24pID8gdHJhbnNhY3Rpb24udHJuQW10ICogKC0xKSA6IHRyYW5zYWN0aW9uLmFtdEJlZm9yZUNvbnZBbmRJbmRleCAqICgtMSk7XG4gICAgbGV0IG9yaWdpbmFsQW1vdW50ID0gdHJhbnNhY3Rpb24udHJuQW10ICogKC0xKTtcblxuICAgIGlmICh0cmFuc2FjdGlvbi50cm5UeXBlQ29kZSA9PT0gVHJuVHlwZUNvZGUuY3JlZGl0KSB7XG4gICAgICBjaGFyZ2VkQW1vdW50ID0gaXNQZW5kaW5nKHRyYW5zYWN0aW9uKSA/IHRyYW5zYWN0aW9uLnRybkFtdCA6IHRyYW5zYWN0aW9uLmFtdEJlZm9yZUNvbnZBbmRJbmRleDtcbiAgICAgIG9yaWdpbmFsQW1vdW50ID0gdHJhbnNhY3Rpb24udHJuQW10O1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdDogVHJhbnNhY3Rpb24gPSB7XG4gICAgICBpZGVudGlmaWVyOiAhaXNQZW5kaW5nKHRyYW5zYWN0aW9uKSA/IHRyYW5zYWN0aW9uLnRybkludElkIDogdW5kZWZpbmVkLFxuICAgICAgdHlwZTogW1RyblR5cGVDb2RlLnJlZ3VsYXIsIFRyblR5cGVDb2RlLnN0YW5kaW5nT3JkZXJdLmluY2x1ZGVzKHRyYW5zYWN0aW9uLnRyblR5cGVDb2RlKSA/XG4gICAgICAgIFRyYW5zYWN0aW9uVHlwZXMuTm9ybWFsIDpcbiAgICAgICAgVHJhbnNhY3Rpb25UeXBlcy5JbnN0YWxsbWVudHMsXG4gICAgICBzdGF0dXM6IGlzUGVuZGluZyh0cmFuc2FjdGlvbikgPyBUcmFuc2FjdGlvblN0YXR1c2VzLlBlbmRpbmcgOiBUcmFuc2FjdGlvblN0YXR1c2VzLkNvbXBsZXRlZCxcbiAgICAgIGRhdGU6IGluc3RhbGxtZW50cyA/XG4gICAgICAgIGRhdGUuYWRkKGluc3RhbGxtZW50cy5udW1iZXIgLSAxLCAnbW9udGgnKS50b0lTT1N0cmluZygpIDpcbiAgICAgICAgZGF0ZS50b0lTT1N0cmluZygpLFxuICAgICAgcHJvY2Vzc2VkRGF0ZTogaXNQZW5kaW5nKHRyYW5zYWN0aW9uKSA/IGRhdGUudG9JU09TdHJpbmcoKSA6IG5ldyBEYXRlKHRyYW5zYWN0aW9uLmRlYkNyZERhdGUpLnRvSVNPU3RyaW5nKCksXG4gICAgICBvcmlnaW5hbEFtb3VudCxcbiAgICAgIG9yaWdpbmFsQ3VycmVuY3k6IHRyYW5zYWN0aW9uLnRybkN1cnJlbmN5U3ltYm9sLFxuICAgICAgY2hhcmdlZEFtb3VudCxcbiAgICAgIGNoYXJnZWRDdXJyZW5jeTogIWlzUGVuZGluZyh0cmFuc2FjdGlvbikgPyB0cmFuc2FjdGlvbi5kZWJDcmRDdXJyZW5jeVN5bWJvbCA6IHVuZGVmaW5lZCxcbiAgICAgIGRlc2NyaXB0aW9uOiB0cmFuc2FjdGlvbi5tZXJjaGFudE5hbWUsXG4gICAgICBtZW1vOiB0cmFuc2FjdGlvbi50cmFuc1R5cGVDb21tZW50RGV0YWlscy50b1N0cmluZygpLFxuICAgICAgY2F0ZWdvcnk6IHRyYW5zYWN0aW9uLmJyYW5jaENvZGVEZXNjLFxuICAgIH07XG5cbiAgICBpZiAoaW5zdGFsbG1lbnRzKSB7XG4gICAgICByZXN1bHQuaW5zdGFsbG1lbnRzID0gaW5zdGFsbG1lbnRzO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0pO1xufVxuXG50eXBlIFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzID0geyB1c2VybmFtZTogc3RyaW5nLCBwYXNzd29yZDogc3RyaW5nIH07XG5cbmNsYXNzIFZpc2FDYWxTY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXJXaXRoQnJvd3NlcjxTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscz4ge1xuICBvcGVuTG9naW5Qb3B1cCA9IGFzeW5jICgpID0+IHtcbiAgICBkZWJ1Zygnb3BlbiBsb2dpbiBwb3B1cCwgd2FpdCB1bnRpbCBsb2dpbiBidXR0b24gYXZhaWxhYmxlJyk7XG4gICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHRoaXMucGFnZSwgJyNjY0xvZ2luRGVza3RvcEJ0bicsIHRydWUpO1xuICAgIGRlYnVnKCdjbGljayBvbiB0aGUgbG9naW4gYnV0dG9uJyk7XG4gICAgYXdhaXQgY2xpY2tCdXR0b24odGhpcy5wYWdlLCAnI2NjTG9naW5EZXNrdG9wQnRuJyk7XG4gICAgZGVidWcoJ2dldCB0aGUgZnJhbWUgdGhhdCBob2xkcyB0aGUgbG9naW4nKTtcbiAgICBjb25zdCBmcmFtZSA9IGF3YWl0IGdldExvZ2luRnJhbWUodGhpcy5wYWdlKTtcbiAgICBkZWJ1Zygnd2FpdCB1bnRpbCB0aGUgcGFzc3dvcmQgbG9naW4gdGFiIGhlYWRlciBpcyBhdmFpbGFibGUnKTtcbiAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQoZnJhbWUsICcjcmVndWxhci1sb2dpbicpO1xuICAgIGRlYnVnKCduYXZpZ2F0ZSB0byB0aGUgcGFzc3dvcmQgbG9naW4gdGFiJyk7XG4gICAgYXdhaXQgY2xpY2tCdXR0b24oZnJhbWUsICcjcmVndWxhci1sb2dpbicpO1xuICAgIGRlYnVnKCd3YWl0IHVudGlsIHRoZSBwYXNzd29yZCBsb2dpbiB0YWIgaXMgYWN0aXZlJyk7XG4gICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKGZyYW1lLCAncmVndWxhci1sb2dpbicpO1xuXG4gICAgcmV0dXJuIGZyYW1lO1xuICB9O1xuXG4gIGFzeW5jIGdldENhcmRzKCkge1xuICAgIGNvbnN0IGluaXREYXRhID0gYXdhaXQgd2FpdFVudGlsKFxuICAgICAgKCkgPT4gZ2V0RnJvbVNlc3Npb25TdG9yYWdlPEluaXRSZXNwb25zZT4odGhpcy5wYWdlLCAnaW5pdCcpLFxuICAgICAgJ2dldCBpbml0IGRhdGEgaW4gc2Vzc2lvbiBzdG9yYWdlJyxcbiAgICAgIDEwMDAwLFxuICAgICAgMTAwMCxcbiAgICApO1xuICAgIGlmICghaW5pdERhdGEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IGZpbmQgXFwnaW5pdFxcJyBkYXRhIGluIHNlc3Npb24gc3RvcmFnZScpO1xuICAgIH1cbiAgICByZXR1cm4gaW5pdERhdGE/LnJlc3VsdC5jYXJkcy5tYXAoKHsgY2FyZFVuaXF1ZUlkLCBsYXN0NERpZ2l0cyB9KSA9PiAoeyBjYXJkVW5pcXVlSWQsIGxhc3Q0RGlnaXRzIH0pKTtcbiAgfVxuXG4gIGFzeW5jIGdldEF1dGhvcml6YXRpb25IZWFkZXIoKSB7XG4gICAgY29uc3QgYXV0aE1vZHVsZSA9IGF3YWl0IGdldEZyb21TZXNzaW9uU3RvcmFnZTx7IGF1dGg6IHsgY2FsQ29ubmVjdFRva2VuOiBzdHJpbmcgfSB9Pih0aGlzLnBhZ2UsICdhdXRoLW1vZHVsZScpO1xuICAgIGlmICghYXV0aE1vZHVsZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgZmluZCBcXCdhdXRoLW1vZHVsZVxcJyBpbiBzZXNzaW9uIHN0b3JhZ2UnKTtcbiAgICB9XG4gICAgcmV0dXJuIGBDQUxBdXRoU2NoZW1lICR7YXV0aE1vZHVsZS5hdXRoLmNhbENvbm5lY3RUb2tlbn1gO1xuICB9XG5cbiAgYXN5bmMgZ2V0WFNpdGVJZCgpIHtcbiAgICAvKlxuICAgICAgSSBkb24ndCBrbm93IGlmIHRoZSBjb25zdGFudCBiZWxvdyB3aWxsIGNoYW5nZSBpbiB0aGUgZmVhdHVyZS5cbiAgICAgIElmIHNvLCB1c2UgdGhlIG5leHQgY29kZTpcblxuICAgICAgcmV0dXJuIHRoaXMucGFnZS5ldmFsdWF0ZSgoKSA9PiBuZXcgVXQoKS54U2l0ZUlkKTtcblxuICAgICAgVG8gZ2V0IHRoZSBjbGFzc25hbWUgc2VhcmNoIGZvciAneFNpdGVJZCcgaW4gdGhlIHBhZ2Ugc291cmNlXG4gICAgICBjbGFzcyBVdCB7XG4gICAgICAgIGNvbnN0cnVjdG9yKF9lLCBvbiwgeW4pIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUgPSBfZSxcbiAgICAgICAgICAgIHRoaXMuY29uZmlnID0gb24sXG4gICAgICAgICAgICB0aGlzLmV2ZW50QnVzU2VydmljZSA9IHluLFxuICAgICAgICAgICAgdGhpcy54U2l0ZUlkID0gXCIwOTAzMTk4Ny0yNzNFLTIzMTEtOTA2Qy04QUY4NUIxN0M4RDlcIixcbiAgICAqL1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoJzA5MDMxOTg3LTI3M0UtMjMxMS05MDZDLThBRjg1QjE3QzhEOScpO1xuICB9XG5cbiAgZ2V0TG9naW5PcHRpb25zKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyk6IExvZ2luT3B0aW9ucyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvZ2luVXJsOiBgJHtMT0dJTl9VUkx9YCxcbiAgICAgIGZpZWxkczogY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHMpLFxuICAgICAgc3VibWl0QnV0dG9uU2VsZWN0b3I6ICdidXR0b25bdHlwZT1cInN1Ym1pdFwiXScsXG4gICAgICBwb3NzaWJsZVJlc3VsdHM6IGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKCksXG4gICAgICBjaGVja1JlYWRpbmVzczogYXN5bmMgKCkgPT4gd2FpdFVudGlsRWxlbWVudEZvdW5kKHRoaXMucGFnZSwgJyNjY0xvZ2luRGVza3RvcEJ0bicpLFxuICAgICAgcHJlQWN0aW9uOiB0aGlzLm9wZW5Mb2dpblBvcHVwLFxuICAgICAgcG9zdEFjdGlvbjogYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHdhaXRGb3JOYXZpZ2F0aW9uKHRoaXMucGFnZSk7XG4gICAgICAgICAgY29uc3QgY3VycmVudFVybCA9IGF3YWl0IGdldEN1cnJlbnRVcmwodGhpcy5wYWdlKTtcbiAgICAgICAgICBpZiAoY3VycmVudFVybC5lbmRzV2l0aCgnc2l0ZS10dXRvcmlhbCcpKSB7XG4gICAgICAgICAgICBhd2FpdCBjbGlja0J1dHRvbih0aGlzLnBhZ2UsICdidXR0b24uYnRuLWNsb3NlJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc3QgY3VycmVudFVybCA9IGF3YWl0IGdldEN1cnJlbnRVcmwodGhpcy5wYWdlKTtcbiAgICAgICAgICBpZiAoY3VycmVudFVybC5lbmRzV2l0aCgnZGFzaGJvYXJkJykpIHJldHVybjtcbiAgICAgICAgICBjb25zdCByZXF1aXJlc0NoYW5nZVBhc3N3b3JkID0gYXdhaXQgaGFzQ2hhbmdlUGFzc3dvcmRGb3JtKHRoaXMucGFnZSk7XG4gICAgICAgICAgaWYgKHJlcXVpcmVzQ2hhbmdlUGFzc3dvcmQpIHJldHVybjtcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdXNlckFnZW50OiAnTW96aWxsYS81LjAgKFgxMTsgTGludXggeDg2XzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNzguMC4zOTA0LjEwOCBTYWZhcmkvNTM3LjM2JyxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hEYXRhKCk6IFByb21pc2U8U2NyYXBlclNjcmFwaW5nUmVzdWx0PiB7XG4gICAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJykuc3VidHJhY3QoNiwgJ21vbnRocycpLmFkZCgxLCAnZGF5Jyk7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSB8fCBkZWZhdWx0U3RhcnRNb21lbnQudG9EYXRlKCk7XG4gICAgY29uc3Qgc3RhcnRNb21lbnQgPSBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xuICAgIGRlYnVnKGBmZXRjaCB0cmFuc2FjdGlvbnMgc3RhcnRpbmcgJHtzdGFydE1vbWVudC5mb3JtYXQoKX1gKTtcblxuICAgIGNvbnN0IEF1dGhvcml6YXRpb24gPSBhd2FpdCB0aGlzLmdldEF1dGhvcml6YXRpb25IZWFkZXIoKTtcbiAgICBjb25zdCBjYXJkcyA9IGF3YWl0IHRoaXMuZ2V0Q2FyZHMoKTtcbiAgICBjb25zdCB4U2l0ZUlkID0gYXdhaXQgdGhpcy5nZXRYU2l0ZUlkKCk7XG4gICAgY29uc3QgZnV0dXJlTW9udGhzVG9TY3JhcGUgPSB0aGlzLm9wdGlvbnMuZnV0dXJlTW9udGhzVG9TY3JhcGUgPz8gMTtcblxuICAgIGNvbnN0IGFjY291bnRzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBjYXJkcy5tYXAoYXN5bmMgKGNhcmQpID0+IHtcbiAgICAgICAgY29uc3QgZmluYWxNb250aFRvRmV0Y2hNb21lbnQgPSBtb21lbnQoKS5hZGQoZnV0dXJlTW9udGhzVG9TY3JhcGUsICdtb250aCcpO1xuICAgICAgICBjb25zdCBtb250aHMgPSBmaW5hbE1vbnRoVG9GZXRjaE1vbWVudC5kaWZmKHN0YXJ0TW9tZW50LCAnbW9udGhzJyk7XG5cbiAgICAgICAgY29uc3QgYWxsTW9udGhzRGF0YTogKENhcmRUcmFuc2FjdGlvbkRldGFpbHMpW10gPSBbXTtcblxuICAgICAgICBkZWJ1ZyhgZmV0Y2ggcGVuZGluZyB0cmFuc2FjdGlvbnMgZm9yIGNhcmQgJHtjYXJkLmNhcmRVbmlxdWVJZH1gKTtcbiAgICAgICAgbGV0IHBlbmRpbmdEYXRhID0gYXdhaXQgZmV0Y2hQb3N0V2l0aGluUGFnZTxDYXJkUGVuZGluZ1RyYW5zYWN0aW9uRGV0YWlscyB8IENhcmRUcmFuc2FjdGlvbkRldGFpbHNFcnJvcj4oXG4gICAgICAgICAgdGhpcy5wYWdlLCBQRU5ESU5HX1RSQU5TQUNUSU9OU19SRVFVRVNUX0VORFBPSU5ULFxuICAgICAgICAgIHsgY2FyZFVuaXF1ZUlEQXJyYXk6IFtjYXJkLmNhcmRVbmlxdWVJZF0gfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBBdXRob3JpemF0aW9uLFxuICAgICAgICAgICAgJ1gtU2l0ZS1JZCc6IHhTaXRlSWQsXG4gICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG5cbiAgICAgICAgZGVidWcoYGZldGNoIGNvbXBsZXRlZCB0cmFuc2FjdGlvbnMgZm9yIGNhcmQgJHtjYXJkLmNhcmRVbmlxdWVJZH1gKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gbW9udGhzOyBpICs9IDEpIHtcbiAgICAgICAgICBjb25zdCBtb250aCA9IGZpbmFsTW9udGhUb0ZldGNoTW9tZW50LmNsb25lKCkuc3VidHJhY3QoaSwgJ21vbnRocycpO1xuICAgICAgICAgIGNvbnN0IG1vbnRoRGF0YSA9IGF3YWl0IGZldGNoUG9zdFdpdGhpblBhZ2U8Q2FyZFRyYW5zYWN0aW9uRGV0YWlscyB8IENhcmRUcmFuc2FjdGlvbkRldGFpbHNFcnJvcj4oXG4gICAgICAgICAgICB0aGlzLnBhZ2UsIFRSQU5TQUNUSU9OU19SRVFVRVNUX0VORFBPSU5ULFxuICAgICAgICAgICAgeyBjYXJkVW5pcXVlSWQ6IGNhcmQuY2FyZFVuaXF1ZUlkLCBtb250aDogbW9udGguZm9ybWF0KCdNJyksIHllYXI6IG1vbnRoLmZvcm1hdCgnWVlZWScpIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEF1dGhvcml6YXRpb24sXG4gICAgICAgICAgICAgICdYLVNpdGUtSWQnOiB4U2l0ZUlkLFxuICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKG1vbnRoRGF0YT8uc3RhdHVzQ29kZSAhPT0gMSkgdGhyb3cgbmV3IEVycm9yKGBmYWlsZWQgdG8gZmV0Y2ggdHJhbnNhY3Rpb25zIGZvciBjYXJkICR7Y2FyZC5sYXN0NERpZ2l0c30uIE1lc3NhZ2U6ICR7bW9udGhEYXRhPy50aXRsZSB8fCAnJ31gKTtcblxuICAgICAgICAgIGlmICghaXNDYXJkVHJhbnNhY3Rpb25EZXRhaWxzKG1vbnRoRGF0YSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignbW9udGhEYXRhIGlzIG5vdCBvZiB0eXBlIENhcmRUcmFuc2FjdGlvbkRldGFpbHMnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBhbGxNb250aHNEYXRhLnB1c2gobW9udGhEYXRhKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwZW5kaW5nRGF0YT8uc3RhdHVzQ29kZSAhPT0gMSAmJiBwZW5kaW5nRGF0YT8uc3RhdHVzQ29kZSAhPT0gOTYpIHtcbiAgICAgICAgICBkZWJ1ZyhgZmFpbGVkIHRvIGZldGNoIHBlbmRpbmcgdHJhbnNhY3Rpb25zIGZvciBjYXJkICR7Y2FyZC5sYXN0NERpZ2l0c30uIE1lc3NhZ2U6ICR7cGVuZGluZ0RhdGE/LnRpdGxlIHx8ICcnfWApO1xuICAgICAgICAgIHBlbmRpbmdEYXRhID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIGlmICghaXNDYXJkUGVuZGluZ1RyYW5zYWN0aW9uRGV0YWlscyhwZW5kaW5nRGF0YSkpIHtcbiAgICAgICAgICBkZWJ1ZygncGVuZGluZ0RhdGEgaXMgbm90IG9mIHR5cGUgQ2FyZFRyYW5zYWN0aW9uRGV0YWlscycpO1xuICAgICAgICAgIHBlbmRpbmdEYXRhID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRyYW5zYWN0aW9ucyA9IGNvbnZlcnRQYXJzZWREYXRhVG9UcmFuc2FjdGlvbnMoYWxsTW9udGhzRGF0YSwgcGVuZGluZ0RhdGEpO1xuXG4gICAgICAgIGRlYnVnKCdmaWxlciBvdXQgb2xkIHRyYW5zYWN0aW9ucycpO1xuICAgICAgICBjb25zdCB0eG5zID0gKHRoaXMub3B0aW9ucy5vdXRwdXREYXRhPy5lbmFibGVUcmFuc2FjdGlvbnNGaWx0ZXJCeURhdGUgPz8gdHJ1ZSkgP1xuICAgICAgICAgIGZpbHRlck9sZFRyYW5zYWN0aW9ucyh0cmFuc2FjdGlvbnMsIG1vbWVudChzdGFydERhdGUpLCB0aGlzLm9wdGlvbnMuY29tYmluZUluc3RhbGxtZW50cyB8fCBmYWxzZSkgOlxuICAgICAgICAgIHRyYW5zYWN0aW9ucztcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR4bnMsXG4gICAgICAgICAgYWNjb3VudE51bWJlcjogY2FyZC5sYXN0NERpZ2l0cyxcbiAgICAgICAgfSBhcyBUcmFuc2FjdGlvbnNBY2NvdW50O1xuICAgICAgfSksXG4gICAgKTtcblxuICAgIGRlYnVnKCdyZXR1cm4gdGhlIHNjcmFwZWQgYWNjb3VudHMnKTtcblxuICAgIGRlYnVnKEpTT04uc3RyaW5naWZ5KGFjY291bnRzLCBudWxsLCAyKSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICBhY2NvdW50cyxcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFZpc2FDYWxTY3JhcGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUscUJBQUEsR0FBQUYsT0FBQTtBQUdBLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFdBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFFBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLGFBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLFFBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLGNBQUEsR0FBQVIsT0FBQTtBQU1BLElBQUFTLHVCQUFBLEdBQUFULE9BQUE7QUFBc0csU0FBQUQsdUJBQUFXLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFBQSxTQUFBRyxnQkFBQUgsQ0FBQSxFQUFBSSxDQUFBLEVBQUFDLENBQUEsWUFBQUQsQ0FBQSxHQUFBRSxjQUFBLENBQUFGLENBQUEsTUFBQUosQ0FBQSxHQUFBTyxNQUFBLENBQUFDLGNBQUEsQ0FBQVIsQ0FBQSxFQUFBSSxDQUFBLElBQUFLLEtBQUEsRUFB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
|
|
277
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZGVidWciLCJfZWxlbWVudHNJbnRlcmFjdGlvbnMiLCJfZmV0Y2giLCJfbmF2aWdhdGlvbiIsIl9zdG9yYWdlIiwiX3RyYW5zYWN0aW9ucyIsIl93YWl0aW5nIiwiX3RyYW5zYWN0aW9uczIiLCJfYmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIkxPR0lOX1VSTCIsIlRSQU5TQUNUSU9OU19SRVFVRVNUX0VORFBPSU5UIiwiUEVORElOR19UUkFOU0FDVElPTlNfUkVRVUVTVF9FTkRQT0lOVCIsIkludmFsaWRQYXNzd29yZE1lc3NhZ2UiLCJkZWJ1ZyIsImdldERlYnVnIiwiVHJuVHlwZUNvZGUiLCJpc1BlbmRpbmciLCJ0cmFuc2FjdGlvbiIsImRlYkNyZERhdGUiLCJ1bmRlZmluZWQiLCJpc0NhcmRUcmFuc2FjdGlvbkRldGFpbHMiLCJyZXN1bHQiLCJpc0NhcmRQZW5kaW5nVHJhbnNhY3Rpb25EZXRhaWxzIiwiZ2V0TG9naW5GcmFtZSIsInBhZ2UiLCJmcmFtZSIsIndhaXRVbnRpbCIsImZyYW1lcyIsImZpbmQiLCJmIiwidXJsIiwiaW5jbHVkZXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsIkVycm9yIiwiaGFzSW52YWxpZFBhc3N3b3JkRXJyb3IiLCJlcnJvckZvdW5kIiwiZWxlbWVudFByZXNlbnRPblBhZ2UiLCJlcnJvck1lc3NhZ2UiLCJwYWdlRXZhbCIsIml0ZW0iLCJpbm5lclRleHQiLCJoYXNDaGFuZ2VQYXNzd29yZEZvcm0iLCJnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyIsInVybHMiLCJMb2dpblJlc3VsdHMiLCJTdWNjZXNzIiwiSW52YWxpZFBhc3N3b3JkIiwib3B0aW9ucyIsIkNoYW5nZVBhc3N3b3JkIiwiY3JlYXRlTG9naW5GaWVsZHMiLCJjcmVkZW50aWFscyIsInNlbGVjdG9yIiwidmFsdWUiLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwiY29udmVydFBhcnNlZERhdGFUb1RyYW5zYWN0aW9ucyIsImRhdGEiLCJwZW5kaW5nRGF0YSIsInBlbmRpbmdUcmFuc2FjdGlvbnMiLCJjYXJkc0xpc3QiLCJmbGF0TWFwIiwiY2FyZCIsImF1dGhEZXRhbGlzTGlzdCIsImJhbmtBY2NvdW50cyIsIm1vbnRoRGF0YSIsInJlZ3VsYXJEZWJpdERheXMiLCJhY2NvdW50cyIsImRlYml0RGF0ZXMiLCJpbW1lZGlhdGVEZWJpdERheXMiLCJpbW1pZGlhdGVEZWJpdHMiLCJkZWJpdERheXMiLCJjb21wbGV0ZWRUcmFuc2FjdGlvbnMiLCJkZWJpdERhdGUiLCJ0cmFuc2FjdGlvbnMiLCJhbGwiLCJtYXAiLCJudW1PZlBheW1lbnRzIiwibnVtYmVyT2ZQYXltZW50cyIsImluc3RhbGxtZW50cyIsIm51bWJlciIsImN1clBheW1lbnROdW0iLCJ0b3RhbCIsImRhdGUiLCJtb21lbnQiLCJ0cm5QdXJjaGFzZURhdGUiLCJjaGFyZ2VkQW1vdW50IiwidHJuQW10IiwiYW10QmVmb3JlQ29udkFuZEluZGV4Iiwib3JpZ2luYWxBbW91bnQiLCJ0cm5UeXBlQ29kZSIsImNyZWRpdCIsImlkZW50aWZpZXIiLCJ0cm5JbnRJZCIsInR5cGUiLCJyZWd1bGFyIiwic3RhbmRpbmdPcmRlciIsIlRyYW5zYWN0aW9uVHlwZXMiLCJOb3JtYWwiLCJJbnN0YWxsbWVudHMiLCJzdGF0dXMiLCJUcmFuc2FjdGlvblN0YXR1c2VzIiwiUGVuZGluZyIsIkNvbXBsZXRlZCIsImFkZCIsInRvSVNPU3RyaW5nIiwicHJvY2Vzc2VkRGF0ZSIsIkRhdGUiLCJvcmlnaW5hbEN1cnJlbmN5IiwidHJuQ3VycmVuY3lTeW1ib2wiLCJjaGFyZ2VkQ3VycmVuY3kiLCJkZWJDcmRDdXJyZW5jeVN5bWJvbCIsImRlc2NyaXB0aW9uIiwibWVyY2hhbnROYW1lIiwibWVtbyIsInRyYW5zVHlwZUNvbW1lbnREZXRhaWxzIiwidG9TdHJpbmciLCJjYXRlZ29yeSIsImJyYW5jaENvZGVEZXNjIiwiVmlzYUNhbFNjcmFwZXIiLCJCYXNlU2NyYXBlcldpdGhCcm93c2VyIiwib3BlbkxvZ2luUG9wdXAiLCJ3YWl0VW50aWxFbGVtZW50Rm91bmQiLCJjbGlja0J1dHRvbiIsImdldENhcmRzIiwiaW5pdERhdGEiLCJnZXRGcm9tU2Vzc2lvblN0b3JhZ2UiLCJjYXJkcyIsImNhcmRVbmlxdWVJZCIsImxhc3Q0RGlnaXRzIiwiZ2V0QXV0aG9yaXphdGlvbkhlYWRlciIsImF1dGhNb2R1bGUiLCJhdXRoIiwiY2FsQ29ubmVjdFRva2VuIiwiZ2V0WFNpdGVJZCIsImdldExvZ2luT3B0aW9ucyIsImxvZ2luVXJsIiwiZmllbGRzIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJwb3NzaWJsZVJlc3VsdHMiLCJjaGVja1JlYWRpbmVzcyIsInByZUFjdGlvbiIsInBvc3RBY3Rpb24iLCJ3YWl0Rm9yTmF2aWdhdGlvbiIsImN1cnJlbnRVcmwiLCJnZXRDdXJyZW50VXJsIiwiZW5kc1dpdGgiLCJyZXF1aXJlc0NoYW5nZVBhc3N3b3JkIiwidXNlckFnZW50IiwiZmV0Y2hEYXRhIiwiZGVmYXVsdFN0YXJ0TW9tZW50Iiwic3VidHJhY3QiLCJzdGFydERhdGUiLCJ0b0RhdGUiLCJzdGFydE1vbWVudCIsIm1heCIsImZvcm1hdCIsIkF1dGhvcml6YXRpb24iLCJ4U2l0ZUlkIiwiZnV0dXJlTW9udGhzVG9TY3JhcGUiLCJmaW5hbE1vbnRoVG9GZXRjaE1vbWVudCIsIm1vbnRocyIsImRpZmYiLCJhbGxNb250aHNEYXRhIiwiZmV0Y2hQb3N0V2l0aGluUGFnZSIsImNhcmRVbmlxdWVJREFycmF5IiwiaSIsIm1vbnRoIiwiY2xvbmUiLCJ5ZWFyIiwic3RhdHVzQ29kZSIsInRpdGxlIiwicHVzaCIsInR4bnMiLCJvdXRwdXREYXRhIiwiZW5hYmxlVHJhbnNhY3Rpb25zRmlsdGVyQnlEYXRlIiwiZmlsdGVyT2xkVHJhbnNhY3Rpb25zIiwiY29tYmluZUluc3RhbGxtZW50cyIsImFjY291bnROdW1iZXIiLCJKU09OIiwic3RyaW5naWZ5Iiwic3VjY2VzcyIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy92aXNhLWNhbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyB0eXBlIEZyYW1lLCB0eXBlIFBhZ2UgfSBmcm9tICdwdXBwZXRlZXInO1xuaW1wb3J0IHsgZ2V0RGVidWcgfSBmcm9tICcuLi9oZWxwZXJzL2RlYnVnJztcbmltcG9ydCB7IGNsaWNrQnV0dG9uLCBlbGVtZW50UHJlc2VudE9uUGFnZSwgcGFnZUV2YWwsIHdhaXRVbnRpbEVsZW1lbnRGb3VuZCB9IGZyb20gJy4uL2hlbHBlcnMvZWxlbWVudHMtaW50ZXJhY3Rpb25zJztcbmltcG9ydCB7IGZldGNoUG9zdFdpdGhpblBhZ2UgfSBmcm9tICcuLi9oZWxwZXJzL2ZldGNoJztcbmltcG9ydCB7IGdldEN1cnJlbnRVcmwsIHdhaXRGb3JOYXZpZ2F0aW9uIH0gZnJvbSAnLi4vaGVscGVycy9uYXZpZ2F0aW9uJztcbmltcG9ydCB7IGdldEZyb21TZXNzaW9uU3RvcmFnZSB9IGZyb20gJy4uL2hlbHBlcnMvc3RvcmFnZSc7XG5pbXBvcnQgeyBmaWx0ZXJPbGRUcmFuc2FjdGlvbnMgfSBmcm9tICcuLi9oZWxwZXJzL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyB3YWl0VW50aWwgfSBmcm9tICcuLi9oZWxwZXJzL3dhaXRpbmcnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25TdGF0dXNlcywgVHJhbnNhY3Rpb25UeXBlcywgdHlwZSBUcmFuc2FjdGlvbiwgdHlwZSBUcmFuc2FjdGlvbnNBY2NvdW50IH0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsIExvZ2luUmVzdWx0cywgdHlwZSBMb2dpbk9wdGlvbnMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInO1xuaW1wb3J0IHsgdHlwZSBTY3JhcGVyU2NyYXBpbmdSZXN1bHQgfSBmcm9tICcuL2ludGVyZmFjZSc7XG5cbmNvbnN0IExPR0lOX1VSTCA9ICdodHRwczovL3d3dy5jYWwtb25saW5lLmNvLmlsLyc7XG5jb25zdCBUUkFOU0FDVElPTlNfUkVRVUVTVF9FTkRQT0lOVCA9XG4gICdodHRwczovL2FwaS5jYWwtb25saW5lLmNvLmlsL1RyYW5zYWN0aW9ucy9hcGkvdHJhbnNhY3Rpb25zRGV0YWlscy9nZXRDYXJkVHJhbnNhY3Rpb25zRGV0YWlscyc7XG5jb25zdCBQRU5ESU5HX1RSQU5TQUNUSU9OU19SRVFVRVNUX0VORFBPSU5UID1cbiAgJ2h0dHBzOi8vYXBpLmNhbC1vbmxpbmUuY28uaWwvVHJhbnNhY3Rpb25zL2FwaS9hcHByb3ZhbHMvZ2V0Q2xlYXJhbmNlUmVxdWVzdHMnO1xuXG5jb25zdCBJbnZhbGlkUGFzc3dvcmRNZXNzYWdlID0gJ9ep150g15TXntep16rXntepINeQ15Ug15TXodeZ16HXnteUINep15TXldeW16DXlSDXqdeS15XXmdeZ150nO1xuXG5jb25zdCBkZWJ1ZyA9IGdldERlYnVnKCd2aXNhLWNhbCcpO1xuXG5lbnVtIFRyblR5cGVDb2RlIHtcbiAgcmVndWxhciA9ICc1JyxcbiAgY3JlZGl0ID0gJzYnLFxuICBpbnN0YWxsbWVudHMgPSAnOCcsXG4gIHN0YW5kaW5nT3JkZXIgPSAnOScsXG59XG5cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb24ge1xuICBhbXRCZWZvcmVDb252QW5kSW5kZXg6IG51bWJlcjtcbiAgYnJhbmNoQ29kZURlc2M6IHN0cmluZztcbiAgY2FzaEFjY01hbmFnZXJOYW1lOiBudWxsO1xuICBjYXNoQWNjb3VudE1hbmFnZXI6IG51bGw7XG4gIGNhc2hBY2NvdW50VHJuQW10OiBudW1iZXI7XG4gIGNoYXJnZUV4dGVybmFsVG9DYXJkQ29tbWVudDogc3RyaW5nO1xuICBjb21tZW50czogW107XG4gIGN1clBheW1lbnROdW06IG51bWJlcjtcbiAgZGViQ3JkQ3VycmVuY3lTeW1ib2w6IEN1cnJlbmN5U3ltYm9sO1xuICBkZWJDcmREYXRlOiBzdHJpbmc7XG4gIGRlYml0U3ByZWFkSW5kOiBib29sZWFuO1xuICBkaXNjb3VudEFtb3VudDogdW5rbm93bjtcbiAgZGlzY291bnRSZWFzb246IHVua25vd247XG4gIGltbWVkaWF0ZUNvbW1lbnRzOiBbXTtcbiAgaXNJbW1lZGlhdGVDb21tZW50SW5kOiBib29sZWFuO1xuICBpc0ltbWVkaWF0ZUhIS0luZDogYm9vbGVhbjtcbiAgaXNNYXJnYXJpdGE6IGJvb2xlYW47XG4gIGlzU3ByZWFkUGF5bWVuc3RBYnJvYWQ6IGJvb2xlYW47XG4gIGxpbmtlZENvbW1lbnRzOiBbXTtcbiAgbWVyY2hhbnRBZGRyZXNzOiBzdHJpbmc7XG4gIG1lcmNoYW50TmFtZTogc3RyaW5nO1xuICBtZXJjaGFudFBob25lTm86IHN0cmluZztcbiAgbnVtT2ZQYXltZW50czogbnVtYmVyO1xuICBvbkdvaW5nVHJhbnNhY3Rpb25zQ29tbWVudDogc3RyaW5nO1xuICByZWZ1bmRJbmQ6IGJvb2xlYW47XG4gIHJvdW5kaW5nQW1vdW50OiB1bmtub3duO1xuICByb3VuZGluZ1JlYXNvbjogdW5rbm93bjtcbiAgdG9rZW5JbmQ6IDA7XG4gIHRva2VuTnVtYmVyUGFydDQ6ICcnO1xuICB0cmFuc0NhcmRQcmVzZW50SW5kOiBib29sZWFuO1xuICB0cmFuc1R5cGVDb21tZW50RGV0YWlsczogW107XG4gIHRybkFtdDogbnVtYmVyO1xuICB0cm5DdXJyZW5jeVN5bWJvbDogQ3VycmVuY3lTeW1ib2w7XG4gIHRybkV4YWNXYXk6IG51bWJlcjtcbiAgdHJuSW50SWQ6IHN0cmluZztcbiAgdHJuTnVtYXJldG9yOiBudW1iZXI7XG4gIHRyblB1cmNoYXNlRGF0ZTogc3RyaW5nO1xuICB0cm5UeXBlOiBzdHJpbmc7XG4gIHRyblR5cGVDb2RlOiBUcm5UeXBlQ29kZTtcbiAgd2FsbGV0UHJvdmlkZXJDb2RlOiAwO1xuICB3YWxsZXRQcm92aWRlckRlc2M6ICcnO1xuICBlYXJseVBheW1lbnRJbmQ6IGJvb2xlYW47XG59XG5pbnRlcmZhY2UgU2NyYXBlZFBlbmRpbmdUcmFuc2FjdGlvbiB7XG4gIG1lcmNoYW50SUQ6IHN0cmluZztcbiAgbWVyY2hhbnROYW1lOiBzdHJpbmc7XG4gIHRyblB1cmNoYXNlRGF0ZTogc3RyaW5nO1xuICB3YWxsZXRUcmFuSW5kOiBudW1iZXI7XG4gIHRyYW5zYWN0aW9uc09yaWdpbjogbnVtYmVyO1xuICB0cm5BbXQ6IG51bWJlcjtcbiAgdHBhQXBwcm92YWxBbW91bnQ6IHVua25vd247XG4gIHRybkN1cnJlbmN5U3ltYm9sOiBDdXJyZW5jeVN5bWJvbDtcbiAgdHJuVHlwZUNvZGU6IFRyblR5cGVDb2RlO1xuICB0cm5UeXBlOiBzdHJpbmc7XG4gIGJyYW5jaENvZGVEZXNjOiBzdHJpbmc7XG4gIHRyYW5zQ2FyZFByZXNlbnRJbmQ6IGJvb2xlYW47XG4gIGo1SW5kaWNhdG9yOiBzdHJpbmc7XG4gIG51bWJlck9mUGF5bWVudHM6IG51bWJlcjtcbiAgZmlyc3RQYXltZW50QW1vdW50OiBudW1iZXI7XG4gIHRyYW5zVHlwZUNvbW1lbnREZXRhaWxzOiBbXTtcbn1cbmludGVyZmFjZSBJbml0UmVzcG9uc2Uge1xuICByZXN1bHQ6IHtcbiAgICBjYXJkczoge1xuICAgICAgY2FyZFVuaXF1ZUlkOiBzdHJpbmc7XG4gICAgICBsYXN0NERpZ2l0czogc3RyaW5nO1xuICAgICAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbiAgICB9W107XG4gIH07XG59XG50eXBlIEN1cnJlbmN5U3ltYm9sID0gc3RyaW5nO1xuaW50ZXJmYWNlIENhcmRUcmFuc2FjdGlvbkRldGFpbHNFcnJvciB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHN0YXR1c0NvZGU6IG51bWJlcjtcbn1cbmludGVyZmFjZSBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzIGV4dGVuZHMgQ2FyZFRyYW5zYWN0aW9uRGV0YWlsc0Vycm9yIHtcbiAgcmVzdWx0OiB7XG4gICAgYmFua0FjY291bnRzOiB7XG4gICAgICBiYW5rQWNjb3VudE51bTogc3RyaW5nO1xuICAgICAgYmFua05hbWU6IHN0cmluZztcbiAgICAgIGNob2ljZUV4dGVybmFsVHJhbnNhY3Rpb25zOiBhbnk7XG4gICAgICBjdXJyZW50QmFua0FjY291bnRJbmQ6IGJvb2xlYW47XG4gICAgICBkZWJpdERhdGVzOiB7XG4gICAgICAgIGJhc2tldEFtb3VudENvbW1lbnQ6IHVua25vd247XG4gICAgICAgIGNob2ljZUhIS0RlYml0OiBudW1iZXI7XG4gICAgICAgIGRhdGU6IHN0cmluZztcbiAgICAgICAgZGViaXRSZWFzb246IHVua25vd247XG4gICAgICAgIGZpeERlYml0QW1vdW50OiBudW1iZXI7XG4gICAgICAgIGZyb21QdXJjaGFzZURhdGU6IHN0cmluZztcbiAgICAgICAgaXNDaG9pY2VSZXBhaW1lbnQ6IGJvb2xlYW47XG4gICAgICAgIHRvUHVyY2hhc2VEYXRlOiBzdHJpbmc7XG4gICAgICAgIHRvdGFsQmFza2V0QW1vdW50OiBudW1iZXI7XG4gICAgICAgIHRvdGFsRGViaXRzOiB7XG4gICAgICAgICAgY3VycmVuY3lTeW1ib2w6IEN1cnJlbmN5U3ltYm9sO1xuICAgICAgICAgIGFtb3VudDogbnVtYmVyO1xuICAgICAgICB9W107XG4gICAgICAgIHRyYW5zYWN0aW9uczogU2NyYXBlZFRyYW5zYWN0aW9uW107XG4gICAgICB9W107XG4gICAgICBpbW1pZGlhdGVEZWJpdHM6IHsgdG90YWxEZWJpdHM6IFtdOyBkZWJpdERheXM6IFtdIH07XG4gICAgfVtdO1xuICAgIGJsb2NrZWRDYXJkSW5kOiBib29sZWFuO1xuICB9O1xuICBzdGF0dXNDb2RlOiAxO1xuICBzdGF0dXNEZXNjcmlwdGlvbjogc3RyaW5nO1xuICBzdGF0dXNUaXRsZTogc3RyaW5nO1xufVxuaW50ZXJmYWNlIENhcmRQZW5kaW5nVHJhbnNhY3Rpb25EZXRhaWxzIGV4dGVuZHMgQ2FyZFRyYW5zYWN0aW9uRGV0YWlsc0Vycm9yIHtcbiAgcmVzdWx0OiB7XG4gICAgY2FyZHNMaXN0OiB7XG4gICAgICBjYXJkVW5pcXVlSUQ6IHN0cmluZztcbiAgICAgIGF1dGhEZXRhbGlzTGlzdDogU2NyYXBlZFBlbmRpbmdUcmFuc2FjdGlvbltdO1xuICAgIH1bXTtcbiAgfTtcbiAgc3RhdHVzQ29kZTogMTtcbiAgc3RhdHVzRGVzY3JpcHRpb246IHN0cmluZztcbiAgc3RhdHVzVGl0bGU6IHN0cmluZztcbn1cblxuZnVuY3Rpb24gaXNQZW5kaW5nKFxuICB0cmFuc2FjdGlvbjogU2NyYXBlZFRyYW5zYWN0aW9uIHwgU2NyYXBlZFBlbmRpbmdUcmFuc2FjdGlvbixcbik6IHRyYW5zYWN0aW9uIGlzIFNjcmFwZWRQZW5kaW5nVHJhbnNhY3Rpb24ge1xuICByZXR1cm4gKHRyYW5zYWN0aW9uIGFzIFNjcmFwZWRUcmFuc2FjdGlvbikuZGViQ3JkRGF0ZSA9PT0gdW5kZWZpbmVkOyAvLyBhbiBhcmJpdHJhcnkgZmllbGQgdGhhdCBvbmx5IGFwcGVhcnMgaW4gYSBjb21wbGV0ZWQgdHJhbnNhY3Rpb25cbn1cblxuZnVuY3Rpb24gaXNDYXJkVHJhbnNhY3Rpb25EZXRhaWxzKFxuICByZXN1bHQ6IENhcmRUcmFuc2FjdGlvbkRldGFpbHMgfCBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzRXJyb3IsXG4pOiByZXN1bHQgaXMgQ2FyZFRyYW5zYWN0aW9uRGV0YWlscyB7XG4gIHJldHVybiAocmVzdWx0IGFzIENhcmRUcmFuc2FjdGlvbkRldGFpbHMpLnJlc3VsdCAhPT0gdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBpc0NhcmRQZW5kaW5nVHJhbnNhY3Rpb25EZXRhaWxzKFxuICByZXN1bHQ6IENhcmRQZW5kaW5nVHJhbnNhY3Rpb25EZXRhaWxzIHwgQ2FyZFRyYW5zYWN0aW9uRGV0YWlsc0Vycm9yLFxuKTogcmVzdWx0IGlzIENhcmRQZW5kaW5nVHJhbnNhY3Rpb25EZXRhaWxzIHtcbiAgcmV0dXJuIChyZXN1bHQgYXMgQ2FyZFBlbmRpbmdUcmFuc2FjdGlvbkRldGFpbHMpLnJlc3VsdCAhPT0gdW5kZWZpbmVkO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRMb2dpbkZyYW1lKHBhZ2U6IFBhZ2UpIHtcbiAgbGV0IGZyYW1lOiBGcmFtZSB8IG51bGwgPSBudWxsO1xuICBkZWJ1Zygnd2FpdCB1bnRpbCBsb2dpbiBmcmFtZSBmb3VuZCcpO1xuICBhd2FpdCB3YWl0VW50aWwoXG4gICAgKCkgPT4ge1xuICAgICAgZnJhbWUgPSBwYWdlLmZyYW1lcygpLmZpbmQoZiA9PiBmLnVybCgpLmluY2x1ZGVzKCdjb25uZWN0JykpIHx8IG51bGw7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCEhZnJhbWUpO1xuICAgIH0sXG4gICAgJ3dhaXQgZm9yIGlmcmFtZSB3aXRoIGxvZ2luIGZvcm0nLFxuICAgIDEwMDAwLFxuICAgIDEwMDAsXG4gICk7XG5cbiAgaWYgKCFmcmFtZSkge1xuICAgIGRlYnVnKCdmYWlsZWQgdG8gZmluZCBsb2dpbiBmcmFtZSBmb3IgMTAgc2Vjb25kcycpO1xuICAgIHRocm93IG5ldyBFcnJvcignZmFpbGVkIHRvIGV4dHJhY3QgbG9naW4gaWZyYW1lJyk7XG4gIH1cblxuICByZXR1cm4gZnJhbWU7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGhhc0ludmFsaWRQYXNzd29yZEVycm9yKHBhZ2U6IFBhZ2UpIHtcbiAgY29uc3QgZnJhbWUgPSBhd2FpdCBnZXRMb2dpbkZyYW1lKHBhZ2UpO1xuICBjb25zdCBlcnJvckZvdW5kID0gYXdhaXQgZWxlbWVudFByZXNlbnRPblBhZ2UoZnJhbWUsICdkaXYuZ2VuZXJhbC1lcnJvciA+IGRpdicpO1xuICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvckZvdW5kXG4gICAgPyBhd2FpdCBwYWdlRXZhbChmcmFtZSwgJ2Rpdi5nZW5lcmFsLWVycm9yID4gZGl2JywgJycsIGl0ZW0gPT4ge1xuICAgICAgICByZXR1cm4gKGl0ZW0gYXMgSFRNTERpdkVsZW1lbnQpLmlubmVyVGV4dDtcbiAgICAgIH0pXG4gICAgOiAnJztcbiAgcmV0dXJuIGVycm9yTWVzc2FnZSA9PT0gSW52YWxpZFBhc3N3b3JkTWVzc2FnZTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaGFzQ2hhbmdlUGFzc3dvcmRGb3JtKHBhZ2U6IFBhZ2UpIHtcbiAgY29uc3QgZnJhbWUgPSBhd2FpdCBnZXRMb2dpbkZyYW1lKHBhZ2UpO1xuICBjb25zdCBlcnJvckZvdW5kID0gYXdhaXQgZWxlbWVudFByZXNlbnRPblBhZ2UoZnJhbWUsICcuY2hhbmdlLXBhc3N3b3JkLXN1YnRpdGxlJyk7XG4gIHJldHVybiBlcnJvckZvdW5kO1xufVxuXG5mdW5jdGlvbiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cygpIHtcbiAgZGVidWcoJ3JldHVybiBwb3NzaWJsZSBsb2dpbiByZXN1bHRzJyk7XG4gIGNvbnN0IHVybHM6IExvZ2luT3B0aW9uc1sncG9zc2libGVSZXN1bHRzJ10gPSB7XG4gICAgW0xvZ2luUmVzdWx0cy5TdWNjZXNzXTogWy9kYXNoYm9hcmQvaV0sXG4gICAgW0xvZ2luUmVzdWx0cy5JbnZhbGlkUGFzc3dvcmRdOiBbXG4gICAgICBhc3luYyAob3B0aW9ucz86IHsgcGFnZT86IFBhZ2UgfSkgPT4ge1xuICAgICAgICBjb25zdCBwYWdlID0gb3B0aW9ucz8ucGFnZTtcbiAgICAgICAgaWYgKCFwYWdlKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBoYXNJbnZhbGlkUGFzc3dvcmRFcnJvcihwYWdlKTtcbiAgICAgIH0sXG4gICAgXSxcbiAgICAvLyBbTG9naW5SZXN1bHRzLkFjY291bnRCbG9ja2VkXTogW10sIC8vIFRPRE8gYWRkIHdoZW4gcmVhY2hpbmcgdGhpcyBzY2VuYXJpb1xuICAgIFtMb2dpblJlc3VsdHMuQ2hhbmdlUGFzc3dvcmRdOiBbXG4gICAgICBhc3luYyAob3B0aW9ucz86IHsgcGFnZT86IFBhZ2UgfSkgPT4ge1xuICAgICAgICBjb25zdCBwYWdlID0gb3B0aW9ucz8ucGFnZTtcbiAgICAgICAgaWYgKCFwYWdlKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBoYXNDaGFuZ2VQYXNzd29yZEZvcm0ocGFnZSk7XG4gICAgICB9LFxuICAgIF0sXG4gIH07XG4gIHJldHVybiB1cmxzO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpIHtcbiAgZGVidWcoJ2NyZWF0ZSBsb2dpbiBmaWVsZHMgZm9yIHVzZXJuYW1lIGFuZCBwYXNzd29yZCcpO1xuICByZXR1cm4gW1xuICAgIHsgc2VsZWN0b3I6ICdbZm9ybWNvbnRyb2xuYW1lPVwidXNlck5hbWVcIl0nLCB2YWx1ZTogY3JlZGVudGlhbHMudXNlcm5hbWUgfSxcbiAgICB7IHNlbGVjdG9yOiAnW2Zvcm1jb250cm9sbmFtZT1cInBhc3N3b3JkXCJdJywgdmFsdWU6IGNyZWRlbnRpYWxzLnBhc3N3b3JkIH0sXG4gIF07XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRQYXJzZWREYXRhVG9UcmFuc2FjdGlvbnMoXG4gIGRhdGE6IENhcmRUcmFuc2FjdGlvbkRldGFpbHNbXSxcbiAgcGVuZGluZ0RhdGE/OiBDYXJkUGVuZGluZ1RyYW5zYWN0aW9uRGV0YWlscyB8IG51bGwsXG4pOiBUcmFuc2FjdGlvbltdIHtcbiAgY29uc3QgcGVuZGluZ1RyYW5zYWN0aW9ucyA9IHBlbmRpbmdEYXRhPy5yZXN1bHRcbiAgICA/IHBlbmRpbmdEYXRhLnJlc3VsdC5jYXJkc0xpc3QuZmxhdE1hcChjYXJkID0+IGNhcmQuYXV0aERldGFsaXNMaXN0KVxuICAgIDogW107XG5cbiAgY29uc3QgYmFua0FjY291bnRzID0gZGF0YS5mbGF0TWFwKG1vbnRoRGF0YSA9PiBtb250aERhdGEucmVzdWx0LmJhbmtBY2NvdW50cyk7XG4gIGNvbnN0IHJlZ3VsYXJEZWJpdERheXMgPSBiYW5rQWNjb3VudHMuZmxhdE1hcChhY2NvdW50cyA9PiBhY2NvdW50cy5kZWJpdERhdGVzKTtcbiAgY29uc3QgaW1tZWRpYXRlRGViaXREYXlzID0gYmFua0FjY291bnRzLmZsYXRNYXAoYWNjb3VudHMgPT4gYWNjb3VudHMuaW1taWRpYXRlRGViaXRzLmRlYml0RGF5cyk7XG4gIGNvbnN0IGNvbXBsZXRlZFRyYW5zYWN0aW9ucyA9IFsuLi5yZWd1bGFyRGViaXREYXlzLCAuLi5pbW1lZGlhdGVEZWJpdERheXNdLmZsYXRNYXAoXG4gICAgZGViaXREYXRlID0+IGRlYml0RGF0ZS50cmFuc2FjdGlvbnMsXG4gICk7XG5cbiAgY29uc3QgYWxsOiAoU2NyYXBlZFRyYW5zYWN0aW9uIHwgU2NyYXBlZFBlbmRpbmdUcmFuc2FjdGlvbilbXSA9IFsuLi5wZW5kaW5nVHJhbnNhY3Rpb25zLCAuLi5jb21wbGV0ZWRUcmFuc2FjdGlvbnNdO1xuXG4gIHJldHVybiBhbGwubWFwKHRyYW5zYWN0aW9uID0+IHtcbiAgICBjb25zdCBudW1PZlBheW1lbnRzID0gaXNQZW5kaW5nKHRyYW5zYWN0aW9uKSA/IHRyYW5zYWN0aW9uLm51bWJlck9mUGF5bWVudHMgOiB0cmFuc2FjdGlvbi5udW1PZlBheW1lbnRzO1xuICAgIGNvbnN0IGluc3RhbGxtZW50cyA9IG51bU9mUGF5bWVudHNcbiAgICAgID8ge1xuICAgICAgICAgIG51bWJlcjogaXNQZW5kaW5nKHRyYW5zYWN0aW9uKSA/IDEgOiB0cmFuc2FjdGlvbi5jdXJQYXltZW50TnVtLFxuICAgICAgICAgIHRvdGFsOiBudW1PZlBheW1lbnRzLFxuICAgICAgICB9XG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIGNvbnN0IGRhdGUgPSBtb21lbnQodHJhbnNhY3Rpb24udHJuUHVyY2hhc2VEYXRlKTtcblxuICAgIGxldCBjaGFyZ2VkQW1vdW50ID0gaXNQZW5kaW5nKHRyYW5zYWN0aW9uKSA/IHRyYW5zYWN0aW9uLnRybkFtdCAqIC0xIDogdHJhbnNhY3Rpb24uYW10QmVmb3JlQ29udkFuZEluZGV4ICogLTE7XG4gICAgbGV0IG9yaWdpbmFsQW1vdW50ID0gdHJhbnNhY3Rpb24udHJuQW10ICogLTE7XG5cbiAgICBpZiAodHJhbnNhY3Rpb24udHJuVHlwZUNvZGUgPT09IFRyblR5cGVDb2RlLmNyZWRpdCkge1xuICAgICAgY2hhcmdlZEFtb3VudCA9IGlzUGVuZGluZyh0cmFuc2FjdGlvbikgPyB0cmFuc2FjdGlvbi50cm5BbXQgOiB0cmFuc2FjdGlvbi5hbXRCZWZvcmVDb252QW5kSW5kZXg7XG4gICAgICBvcmlnaW5hbEFtb3VudCA9IHRyYW5zYWN0aW9uLnRybkFtdDtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQ6IFRyYW5zYWN0aW9uID0ge1xuICAgICAgaWRlbnRpZmllcjogIWlzUGVuZGluZyh0cmFuc2FjdGlvbikgPyB0cmFuc2FjdGlvbi50cm5JbnRJZCA6IHVuZGVmaW5lZCxcbiAgICAgIHR5cGU6IFtUcm5UeXBlQ29kZS5yZWd1bGFyLCBUcm5UeXBlQ29kZS5zdGFuZGluZ09yZGVyXS5pbmNsdWRlcyh0cmFuc2FjdGlvbi50cm5UeXBlQ29kZSlcbiAgICAgICAgPyBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbFxuICAgICAgICA6IFRyYW5zYWN0aW9uVHlwZXMuSW5zdGFsbG1lbnRzLFxuICAgICAgc3RhdHVzOiBpc1BlbmRpbmcodHJhbnNhY3Rpb24pID8gVHJhbnNhY3Rpb25TdGF0dXNlcy5QZW5kaW5nIDogVHJhbnNhY3Rpb25TdGF0dXNlcy5Db21wbGV0ZWQsXG4gICAgICBkYXRlOiBpbnN0YWxsbWVudHMgPyBkYXRlLmFkZChpbnN0YWxsbWVudHMubnVtYmVyIC0gMSwgJ21vbnRoJykudG9JU09TdHJpbmcoKSA6IGRhdGUudG9JU09TdHJpbmcoKSxcbiAgICAgIHByb2Nlc3NlZERhdGU6IGlzUGVuZGluZyh0cmFuc2FjdGlvbikgPyBkYXRlLnRvSVNPU3RyaW5nKCkgOiBuZXcgRGF0ZSh0cmFuc2FjdGlvbi5kZWJDcmREYXRlKS50b0lTT1N0cmluZygpLFxuICAgICAgb3JpZ2luYWxBbW91bnQsXG4gICAgICBvcmlnaW5hbEN1cnJlbmN5OiB0cmFuc2FjdGlvbi50cm5DdXJyZW5jeVN5bWJvbCxcbiAgICAgIGNoYXJnZWRBbW91bnQsXG4gICAgICBjaGFyZ2VkQ3VycmVuY3k6ICFpc1BlbmRpbmcodHJhbnNhY3Rpb24pID8gdHJhbnNhY3Rpb24uZGViQ3JkQ3VycmVuY3lTeW1ib2wgOiB1bmRlZmluZWQsXG4gICAgICBkZXNjcmlwdGlvbjogdHJhbnNhY3Rpb24ubWVyY2hhbnROYW1lLFxuICAgICAgbWVtbzogdHJhbnNhY3Rpb24udHJhbnNUeXBlQ29tbWVudERldGFpbHMudG9TdHJpbmcoKSxcbiAgICAgIGNhdGVnb3J5OiB0cmFuc2FjdGlvbi5icmFuY2hDb2RlRGVzYyxcbiAgICB9O1xuXG4gICAgaWYgKGluc3RhbGxtZW50cykge1xuICAgICAgcmVzdWx0Lmluc3RhbGxtZW50cyA9IGluc3RhbGxtZW50cztcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9KTtcbn1cblxudHlwZSBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyA9IHsgdXNlcm5hbWU6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9O1xuXG5jbGFzcyBWaXNhQ2FsU2NyYXBlciBleHRlbmRzIEJhc2VTY3JhcGVyV2l0aEJyb3dzZXI8U2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHM+IHtcbiAgb3BlbkxvZ2luUG9wdXAgPSBhc3luYyAoKSA9PiB7XG4gICAgZGVidWcoJ29wZW4gbG9naW4gcG9wdXAsIHdhaXQgdW50aWwgbG9naW4gYnV0dG9uIGF2YWlsYWJsZScpO1xuICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsICcjY2NMb2dpbkRlc2t0b3BCdG4nLCB0cnVlKTtcbiAgICBkZWJ1ZygnY2xpY2sgb24gdGhlIGxvZ2luIGJ1dHRvbicpO1xuICAgIGF3YWl0IGNsaWNrQnV0dG9uKHRoaXMucGFnZSwgJyNjY0xvZ2luRGVza3RvcEJ0bicpO1xuICAgIGRlYnVnKCdnZXQgdGhlIGZyYW1lIHRoYXQgaG9sZHMgdGhlIGxvZ2luJyk7XG4gICAgY29uc3QgZnJhbWUgPSBhd2FpdCBnZXRMb2dpbkZyYW1lKHRoaXMucGFnZSk7XG4gICAgZGVidWcoJ3dhaXQgdW50aWwgdGhlIHBhc3N3b3JkIGxvZ2luIHRhYiBoZWFkZXIgaXMgYXZhaWxhYmxlJyk7XG4gICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKGZyYW1lLCAnI3JlZ3VsYXItbG9naW4nKTtcbiAgICBkZWJ1ZygnbmF2aWdhdGUgdG8gdGhlIHBhc3N3b3JkIGxvZ2luIHRhYicpO1xuICAgIGF3YWl0IGNsaWNrQnV0dG9uKGZyYW1lLCAnI3JlZ3VsYXItbG9naW4nKTtcbiAgICBkZWJ1Zygnd2FpdCB1bnRpbCB0aGUgcGFzc3dvcmQgbG9naW4gdGFiIGlzIGFjdGl2ZScpO1xuICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChmcmFtZSwgJ3JlZ3VsYXItbG9naW4nKTtcblxuICAgIHJldHVybiBmcmFtZTtcbiAgfTtcblxuICBhc3luYyBnZXRDYXJkcygpIHtcbiAgICBjb25zdCBpbml0RGF0YSA9IGF3YWl0IHdhaXRVbnRpbChcbiAgICAgICgpID0+IGdldEZyb21TZXNzaW9uU3RvcmFnZTxJbml0UmVzcG9uc2U+KHRoaXMucGFnZSwgJ2luaXQnKSxcbiAgICAgICdnZXQgaW5pdCBkYXRhIGluIHNlc3Npb24gc3RvcmFnZScsXG4gICAgICAxMDAwMCxcbiAgICAgIDEwMDAsXG4gICAgKTtcbiAgICBpZiAoIWluaXREYXRhKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJjb3VsZCBub3QgZmluZCAnaW5pdCcgZGF0YSBpbiBzZXNzaW9uIHN0b3JhZ2VcIik7XG4gICAgfVxuICAgIHJldHVybiBpbml0RGF0YT8ucmVzdWx0LmNhcmRzLm1hcCgoeyBjYXJkVW5pcXVlSWQsIGxhc3Q0RGlnaXRzIH0pID0+ICh7IGNhcmRVbmlxdWVJZCwgbGFzdDREaWdpdHMgfSkpO1xuICB9XG5cbiAgYXN5bmMgZ2V0QXV0aG9yaXphdGlvbkhlYWRlcigpIHtcbiAgICBjb25zdCBhdXRoTW9kdWxlID0gYXdhaXQgZ2V0RnJvbVNlc3Npb25TdG9yYWdlPHsgYXV0aDogeyBjYWxDb25uZWN0VG9rZW46IHN0cmluZyB9IH0+KHRoaXMucGFnZSwgJ2F1dGgtbW9kdWxlJyk7XG4gICAgaWYgKCFhdXRoTW9kdWxlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJjb3VsZCBub3QgZmluZCAnYXV0aC1tb2R1bGUnIGluIHNlc3Npb24gc3RvcmFnZVwiKTtcbiAgICB9XG4gICAgcmV0dXJuIGBDQUxBdXRoU2NoZW1lICR7YXV0aE1vZHVsZS5hdXRoLmNhbENvbm5lY3RUb2tlbn1gO1xuICB9XG5cbiAgYXN5bmMgZ2V0WFNpdGVJZCgpIHtcbiAgICAvKlxuICAgICAgSSBkb24ndCBrbm93IGlmIHRoZSBjb25zdGFudCBiZWxvdyB3aWxsIGNoYW5nZSBpbiB0aGUgZmVhdHVyZS5cbiAgICAgIElmIHNvLCB1c2UgdGhlIG5leHQgY29kZTpcblxuICAgICAgcmV0dXJuIHRoaXMucGFnZS5ldmFsdWF0ZSgoKSA9PiBuZXcgVXQoKS54U2l0ZUlkKTtcblxuICAgICAgVG8gZ2V0IHRoZSBjbGFzc25hbWUgc2VhcmNoIGZvciAneFNpdGVJZCcgaW4gdGhlIHBhZ2Ugc291cmNlXG4gICAgICBjbGFzcyBVdCB7XG4gICAgICAgIGNvbnN0cnVjdG9yKF9lLCBvbiwgeW4pIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUgPSBfZSxcbiAgICAgICAgICAgIHRoaXMuY29uZmlnID0gb24sXG4gICAgICAgICAgICB0aGlzLmV2ZW50QnVzU2VydmljZSA9IHluLFxuICAgICAgICAgICAgdGhpcy54U2l0ZUlkID0gXCIwOTAzMTk4Ny0yNzNFLTIzMTEtOTA2Qy04QUY4NUIxN0M4RDlcIixcbiAgICAqL1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoJzA5MDMxOTg3LTI3M0UtMjMxMS05MDZDLThBRjg1QjE3QzhEOScpO1xuICB9XG5cbiAgZ2V0TG9naW5PcHRpb25zKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyk6IExvZ2luT3B0aW9ucyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvZ2luVXJsOiBgJHtMT0dJTl9VUkx9YCxcbiAgICAgIGZpZWxkczogY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHMpLFxuICAgICAgc3VibWl0QnV0dG9uU2VsZWN0b3I6ICdidXR0b25bdHlwZT1cInN1Ym1pdFwiXScsXG4gICAgICBwb3NzaWJsZVJlc3VsdHM6IGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKCksXG4gICAgICBjaGVja1JlYWRpbmVzczogYXN5bmMgKCkgPT4gd2FpdFVudGlsRWxlbWVudEZvdW5kKHRoaXMucGFnZSwgJyNjY0xvZ2luRGVza3RvcEJ0bicpLFxuICAgICAgcHJlQWN0aW9uOiB0aGlzLm9wZW5Mb2dpblBvcHVwLFxuICAgICAgcG9zdEFjdGlvbjogYXN5bmMgKCkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHdhaXRGb3JOYXZpZ2F0aW9uKHRoaXMucGFnZSk7XG4gICAgICAgICAgY29uc3QgY3VycmVudFVybCA9IGF3YWl0IGdldEN1cnJlbnRVcmwodGhpcy5wYWdlKTtcbiAgICAgICAgICBpZiAoY3VycmVudFVybC5lbmRzV2l0aCgnc2l0ZS10dXRvcmlhbCcpKSB7XG4gICAgICAgICAgICBhd2FpdCBjbGlja0J1dHRvbih0aGlzLnBhZ2UsICdidXR0b24uYnRuLWNsb3NlJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc3QgY3VycmVudFVybCA9IGF3YWl0IGdldEN1cnJlbnRVcmwodGhpcy5wYWdlKTtcbiAgICAgICAgICBpZiAoY3VycmVudFVybC5lbmRzV2l0aCgnZGFzaGJvYXJkJykpIHJldHVybjtcbiAgICAgICAgICBjb25zdCByZXF1aXJlc0NoYW5nZVBhc3N3b3JkID0gYXdhaXQgaGFzQ2hhbmdlUGFzc3dvcmRGb3JtKHRoaXMucGFnZSk7XG4gICAgICAgICAgaWYgKHJlcXVpcmVzQ2hhbmdlUGFzc3dvcmQpIHJldHVybjtcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdXNlckFnZW50OlxuICAgICAgICAnTW96aWxsYS81LjAgKFgxMTsgTGludXggeDg2XzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNzguMC4zOTA0LjEwOCBTYWZhcmkvNTM3LjM2JyxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hEYXRhKCk6IFByb21pc2U8U2NyYXBlclNjcmFwaW5nUmVzdWx0PiB7XG4gICAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJykuc3VidHJhY3QoNiwgJ21vbnRocycpLmFkZCgxLCAnZGF5Jyk7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSB8fCBkZWZhdWx0U3RhcnRNb21lbnQudG9EYXRlKCk7XG4gICAgY29uc3Qgc3RhcnRNb21lbnQgPSBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xuICAgIGRlYnVnKGBmZXRjaCB0cmFuc2FjdGlvbnMgc3RhcnRpbmcgJHtzdGFydE1vbWVudC5mb3JtYXQoKX1gKTtcblxuICAgIGNvbnN0IEF1dGhvcml6YXRpb24gPSBhd2FpdCB0aGlzLmdldEF1dGhvcml6YXRpb25IZWFkZXIoKTtcbiAgICBjb25zdCBjYXJkcyA9IGF3YWl0IHRoaXMuZ2V0Q2FyZHMoKTtcbiAgICBjb25zdCB4U2l0ZUlkID0gYXdhaXQgdGhpcy5nZXRYU2l0ZUlkKCk7XG4gICAgY29uc3QgZnV0dXJlTW9udGhzVG9TY3JhcGUgPSB0aGlzLm9wdGlvbnMuZnV0dXJlTW9udGhzVG9TY3JhcGUgPz8gMTtcblxuICAgIGNvbnN0IGFjY291bnRzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBjYXJkcy5tYXAoYXN5bmMgY2FyZCA9PiB7XG4gICAgICAgIGNvbnN0IGZpbmFsTW9udGhUb0ZldGNoTW9tZW50ID0gbW9tZW50KCkuYWRkKGZ1dHVyZU1vbnRoc1RvU2NyYXBlLCAnbW9udGgnKTtcbiAgICAgICAgY29uc3QgbW9udGhzID0gZmluYWxNb250aFRvRmV0Y2hNb21lbnQuZGlmZihzdGFydE1vbWVudCwgJ21vbnRocycpO1xuXG4gICAgICAgIGNvbnN0IGFsbE1vbnRoc0RhdGE6IENhcmRUcmFuc2FjdGlvbkRldGFpbHNbXSA9IFtdO1xuXG4gICAgICAgIGRlYnVnKGBmZXRjaCBwZW5kaW5nIHRyYW5zYWN0aW9ucyBmb3IgY2FyZCAke2NhcmQuY2FyZFVuaXF1ZUlkfWApO1xuICAgICAgICBsZXQgcGVuZGluZ0RhdGEgPSBhd2FpdCBmZXRjaFBvc3RXaXRoaW5QYWdlPENhcmRQZW5kaW5nVHJhbnNhY3Rpb25EZXRhaWxzIHwgQ2FyZFRyYW5zYWN0aW9uRGV0YWlsc0Vycm9yPihcbiAgICAgICAgICB0aGlzLnBhZ2UsXG4gICAgICAgICAgUEVORElOR19UUkFOU0FDVElPTlNfUkVRVUVTVF9FTkRQT0lOVCxcbiAgICAgICAgICB7IGNhcmRVbmlxdWVJREFycmF5OiBbY2FyZC5jYXJkVW5pcXVlSWRdIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgQXV0aG9yaXphdGlvbixcbiAgICAgICAgICAgICdYLVNpdGUtSWQnOiB4U2l0ZUlkLFxuICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuXG4gICAgICAgIGRlYnVnKGBmZXRjaCBjb21wbGV0ZWQgdHJhbnNhY3Rpb25zIGZvciBjYXJkICR7Y2FyZC5jYXJkVW5pcXVlSWR9YCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IG1vbnRoczsgaSArPSAxKSB7XG4gICAgICAgICAgY29uc3QgbW9udGggPSBmaW5hbE1vbnRoVG9GZXRjaE1vbWVudC5jbG9uZSgpLnN1YnRyYWN0KGksICdtb250aHMnKTtcbiAgICAgICAgICBjb25zdCBtb250aERhdGEgPSBhd2FpdCBmZXRjaFBvc3RXaXRoaW5QYWdlPENhcmRUcmFuc2FjdGlvbkRldGFpbHMgfCBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzRXJyb3I+KFxuICAgICAgICAgICAgdGhpcy5wYWdlLFxuICAgICAgICAgICAgVFJBTlNBQ1RJT05TX1JFUVVFU1RfRU5EUE9JTlQsXG4gICAgICAgICAgICB7IGNhcmRVbmlxdWVJZDogY2FyZC5jYXJkVW5pcXVlSWQsIG1vbnRoOiBtb250aC5mb3JtYXQoJ00nKSwgeWVhcjogbW9udGguZm9ybWF0KCdZWVlZJykgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgQXV0aG9yaXphdGlvbixcbiAgICAgICAgICAgICAgJ1gtU2l0ZS1JZCc6IHhTaXRlSWQsXG4gICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAobW9udGhEYXRhPy5zdGF0dXNDb2RlICE9PSAxKVxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICBgZmFpbGVkIHRvIGZldGNoIHRyYW5zYWN0aW9ucyBmb3IgY2FyZCAke2NhcmQubGFzdDREaWdpdHN9LiBNZXNzYWdlOiAke21vbnRoRGF0YT8udGl0bGUgfHwgJyd9YCxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAoIWlzQ2FyZFRyYW5zYWN0aW9uRGV0YWlscyhtb250aERhdGEpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ21vbnRoRGF0YSBpcyBub3Qgb2YgdHlwZSBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzJyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYWxsTW9udGhzRGF0YS5wdXNoKG1vbnRoRGF0YSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGVuZGluZ0RhdGE/LnN0YXR1c0NvZGUgIT09IDEgJiYgcGVuZGluZ0RhdGE/LnN0YXR1c0NvZGUgIT09IDk2KSB7XG4gICAgICAgICAgZGVidWcoXG4gICAgICAgICAgICBgZmFpbGVkIHRvIGZldGNoIHBlbmRpbmcgdHJhbnNhY3Rpb25zIGZvciBjYXJkICR7Y2FyZC5sYXN0NERpZ2l0c30uIE1lc3NhZ2U6ICR7cGVuZGluZ0RhdGE/LnRpdGxlIHx8ICcnfWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgICBwZW5kaW5nRGF0YSA9IG51bGw7XG4gICAgICAgIH0gZWxzZSBpZiAoIWlzQ2FyZFBlbmRpbmdUcmFuc2FjdGlvbkRldGFpbHMocGVuZGluZ0RhdGEpKSB7XG4gICAgICAgICAgZGVidWcoJ3BlbmRpbmdEYXRhIGlzIG5vdCBvZiB0eXBlIENhcmRUcmFuc2FjdGlvbkRldGFpbHMnKTtcbiAgICAgICAgICBwZW5kaW5nRGF0YSA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0cmFuc2FjdGlvbnMgPSBjb252ZXJ0UGFyc2VkRGF0YVRvVHJhbnNhY3Rpb25zKGFsbE1vbnRoc0RhdGEsIHBlbmRpbmdEYXRhKTtcblxuICAgICAgICBkZWJ1ZygnZmlsZXIgb3V0IG9sZCB0cmFuc2FjdGlvbnMnKTtcbiAgICAgICAgY29uc3QgdHhucyA9XG4gICAgICAgICAgKHRoaXMub3B0aW9ucy5vdXRwdXREYXRhPy5lbmFibGVUcmFuc2FjdGlvbnNGaWx0ZXJCeURhdGUgPz8gdHJ1ZSlcbiAgICAgICAgICAgID8gZmlsdGVyT2xkVHJhbnNhY3Rpb25zKHRyYW5zYWN0aW9ucywgbW9tZW50KHN0YXJ0RGF0ZSksIHRoaXMub3B0aW9ucy5jb21iaW5lSW5zdGFsbG1lbnRzIHx8IGZhbHNlKVxuICAgICAgICAgICAgOiB0cmFuc2FjdGlvbnM7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICB0eG5zLFxuICAgICAgICAgIGFjY291bnROdW1iZXI6IGNhcmQubGFzdDREaWdpdHMsXG4gICAgICAgIH0gYXMgVHJhbnNhY3Rpb25zQWNjb3VudDtcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICBkZWJ1ZygncmV0dXJuIHRoZSBzY3JhcGVkIGFjY291bnRzJyk7XG5cbiAgICBkZWJ1ZyhKU09OLnN0cmluZ2lmeShhY2NvdW50cywgbnVsbCwgMikpO1xuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgYWNjb3VudHMsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBWaXNhQ2FsU2NyYXBlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUscUJBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFdBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFFBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLGFBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLFFBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLGNBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLHVCQUFBLEdBQUFULE9BQUE7QUFBc0csU0FBQUQsdUJBQUFXLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFHdEcsTUFBTUcsU0FBUyxHQUFHLCtCQUErQjtBQUNqRCxNQUFNQyw2QkFBNkIsR0FDakMsOEZBQThGO0FBQ2hHLE1BQU1DLHFDQUFxQyxHQUN6Qyw4RUFBOEU7QUFFaEYsTUFBTUMsc0JBQXNCLEdBQUcsbUNBQW1DO0FBRWxFLE1BQU1DLEtBQUssR0FBRyxJQUFBQyxlQUFRLEVBQUMsVUFBVSxDQUFDO0FBQUMsSUFFOUJDLFdBQVcsMEJBQVhBLFdBQVc7RUFBWEEsV0FBVztFQUFYQSxXQUFXO0VBQVhBLFdBQVc7RUFBWEEsV0FBVztFQUFBLE9BQVhBLFdBQVc7QUFBQSxFQUFYQSxXQUFXO0FBOEhoQixTQUFTQyxTQUFTQSxDQUNoQkMsV0FBMkQs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
|
|
@@ -1,17 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
require("core-js/modules/es.promise.js");
|
|
4
|
-
require("core-js/modules/es.string.trim.js");
|
|
5
3
|
var _definitions = require("../definitions");
|
|
6
4
|
var _testsUtils = require("../tests/tests-utils");
|
|
7
5
|
var _baseScraperWithBrowser = require("./base-scraper-with-browser");
|
|
8
6
|
var _visaCal = _interopRequireDefault(require("./visa-cal"));
|
|
9
7
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
10
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
11
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
12
|
-
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
13
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
|
|
14
|
-
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
15
8
|
const COMPANY_ID = 'visaCal'; // TODO this property should be hard-coded in the provider
|
|
16
9
|
const testsConfig = (0, _testsUtils.getTestsConfig)();
|
|
17
10
|
describe('VisaCal legacy scraper', () => {
|
|
@@ -24,9 +17,10 @@ describe('VisaCal legacy scraper', () => {
|
|
|
24
17
|
expect(_definitions.SCRAPERS.visaCal.loginFields).toContain('password');
|
|
25
18
|
});
|
|
26
19
|
(0, _testsUtils.maybeTestCompanyAPI)(COMPANY_ID, config => config.companyAPI.invalidPassword)('should fail on invalid user/password"', async () => {
|
|
27
|
-
const options =
|
|
20
|
+
const options = {
|
|
21
|
+
...testsConfig.options,
|
|
28
22
|
companyId: COMPANY_ID
|
|
29
|
-
}
|
|
23
|
+
};
|
|
30
24
|
const scraper = new _visaCal.default(options);
|
|
31
25
|
const result = await scraper.scrape({
|
|
32
26
|
username: '971sddksmsl',
|
|
@@ -37,9 +31,10 @@ describe('VisaCal legacy scraper', () => {
|
|
|
37
31
|
expect(result.errorType).toBe(_baseScraperWithBrowser.LoginResults.InvalidPassword);
|
|
38
32
|
});
|
|
39
33
|
(0, _testsUtils.maybeTestCompanyAPI)(COMPANY_ID)('should scrape transactions"', async () => {
|
|
40
|
-
const options =
|
|
34
|
+
const options = {
|
|
35
|
+
...testsConfig.options,
|
|
41
36
|
companyId: COMPANY_ID
|
|
42
|
-
}
|
|
37
|
+
};
|
|
43
38
|
const scraper = new _visaCal.default(options);
|
|
44
39
|
const result = await scraper.scrape(testsConfig.credentials.visaCal);
|
|
45
40
|
expect(result).toBeDefined();
|
|
@@ -51,4 +46,4 @@ describe('VisaCal legacy scraper', () => {
|
|
|
51
46
|
(0, _testsUtils.exportTransactions)(COMPANY_ID, result.accounts || []);
|
|
52
47
|
});
|
|
53
48
|
});
|
|
54
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZGVmaW5pdGlvbnMiLCJyZXF1aXJlIiwiX3Rlc3RzVXRpbHMiLCJfYmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsIl92aXNhQ2FsIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIkNPTVBBTllfSUQiLCJ0ZXN0c0NvbmZpZyIsImdldFRlc3RzQ29uZmlnIiwiZGVzY3JpYmUiLCJiZWZvcmVBbGwiLCJleHRlbmRBc3luY1RpbWVvdXQiLCJ0ZXN0IiwiZXhwZWN0IiwiU0NSQVBFUlMiLCJ2aXNhQ2FsIiwidG9CZURlZmluZWQiLCJsb2dpbkZpZWxkcyIsInRvQ29udGFpbiIsIm1heWJlVGVzdENvbXBhbnlBUEkiLCJjb25maWciLCJjb21wYW55QVBJIiwiaW52YWxpZFBhc3N3b3JkIiwib3B0aW9ucyIsImNvbXBhbnlJZCIsInNjcmFwZXIiLCJWaXNhQ2FsU2NyYXBlciIsInJlc3VsdCIsInNjcmFwZSIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJzdWNjZXNzIiwidG9CZUZhbHN5IiwiZXJyb3JUeXBlIiwidG9CZSIsIkxvZ2luUmVzdWx0cyIsIkludmFsaWRQYXNzd29yZCIsImNyZWRlbnRpYWxzIiwiZXJyb3IiLCJlcnJvck1lc3NhZ2UiLCJ0cmltIiwidG9CZVRydXRoeSIsImV4cG9ydFRyYW5zYWN0aW9ucyIsImFjY291bnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL3Zpc2EtY2FsLnRlc3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU0NSQVBFUlMgfSBmcm9tICcuLi9kZWZpbml0aW9ucyc7XG5pbXBvcnQgeyBleHBvcnRUcmFuc2FjdGlvbnMsIGV4dGVuZEFzeW5jVGltZW91dCwgZ2V0VGVzdHNDb25maWcsIG1heWJlVGVzdENvbXBhbnlBUEkgfSBmcm9tICcuLi90ZXN0cy90ZXN0cy11dGlscyc7XG5pbXBvcnQgeyBMb2dpblJlc3VsdHMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInO1xuaW1wb3J0IFZpc2FDYWxTY3JhcGVyIGZyb20gJy4vdmlzYS1jYWwnO1xuXG5jb25zdCBDT01QQU5ZX0lEID0gJ3Zpc2FDYWwnOyAvLyBUT0RPIHRoaXMgcHJvcGVydHkgc2hvdWxkIGJlIGhhcmQtY29kZWQgaW4gdGhlIHByb3ZpZGVyXG5jb25zdCB0ZXN0c0NvbmZpZyA9IGdldFRlc3RzQ29uZmlnKCk7XG5cbmRlc2NyaWJlKCdWaXNhQ2FsIGxlZ2FjeSBzY3JhcGVyJywgKCkgPT4ge1xuICBiZWZvcmVBbGwoKCkgPT4ge1xuICAgIGV4dGVuZEFzeW5jVGltZW91dCgpOyAvLyBUaGUgZGVmYXVsdCB0aW1lb3V0IGlzIDUgc2Vjb25kcyBwZXIgYXN5bmMgdGVzdCwgdGhpcyBmdW5jdGlvbiBleHRlbmRzIHRoZSB0aW1lb3V0IHZhbHVlXG4gIH0pO1xuXG4gIHRlc3QoJ3Nob3VsZCBleHBvc2UgbG9naW4gZmllbGRzIGluIHNjcmFwZXJzIGNvbnN0YW50JywgKCkgPT4ge1xuICAgIGV4cGVjdChTQ1JBUEVSUy52aXNhQ2FsKS50b0JlRGVmaW5lZCgpO1xuICAgIGV4cGVjdChTQ1JBUEVSUy52aXNhQ2FsLmxvZ2luRmllbGRzKS50b0NvbnRhaW4oJ3VzZXJuYW1lJyk7XG4gICAgZXhwZWN0KFNDUkFQRVJTLnZpc2FDYWwubG9naW5GaWVsZHMpLnRvQ29udGFpbigncGFzc3dvcmQnKTtcbiAgfSk7XG5cbiAgbWF5YmVUZXN0Q29tcGFueUFQSShDT01QQU5ZX0lELCBjb25maWcgPT4gY29uZmlnLmNvbXBhbnlBUEkuaW52YWxpZFBhc3N3b3JkKShcbiAgICAnc2hvdWxkIGZhaWwgb24gaW52YWxpZCB1c2VyL3Bhc3N3b3JkXCInLFxuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgIC4uLnRlc3RzQ29uZmlnLm9wdGlvbnMsXG4gICAgICAgIGNvbXBhbnlJZDogQ09NUEFOWV9JRCxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHNjcmFwZXIgPSBuZXcgVmlzYUNhbFNjcmFwZXIob3B0aW9ucyk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNjcmFwZXIuc2NyYXBlKHsgdXNlcm5hbWU6ICc5NzFzZGRrc21zbCcsIHBhc3N3b3JkOiAnM2Yzc3Nka1NEM2QnIH0pO1xuXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHJlc3VsdC5zdWNjZXNzKS50b0JlRmFsc3koKTtcbiAgICAgIGV4cGVjdChyZXN1bHQuZXJyb3JUeXBlKS50b0JlKExvZ2luUmVzdWx0cy5JbnZhbGlkUGFzc3dvcmQpO1xuICAgIH0sXG4gICk7XG5cbiAgbWF5YmVUZXN0Q29tcGFueUFQSShDT01QQU5ZX0lEKSgnc2hvdWxkIHNjcmFwZSB0cmFuc2FjdGlvbnNcIicsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgLi4udGVzdHNDb25maWcub3B0aW9ucyxcbiAgICAgIGNvbXBhbnlJZDogQ09NUEFOWV9JRCxcbiAgICB9O1xuXG4gICAgY29uc3Qgc2NyYXBlciA9IG5ldyBWaXNhQ2FsU2NyYXBlcihvcHRpb25zKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBzY3JhcGVyLnNjcmFwZSh0ZXN0c0NvbmZpZy5jcmVkZW50aWFscy52aXNhQ2FsKTtcbiAgICBleHBlY3QocmVzdWx0KS50b0JlRGVmaW5lZCgpO1xuICAgIGNvbnN0IGVycm9yID0gYCR7cmVzdWx0LmVycm9yVHlwZSB8fCAnJ30gJHtyZXN1bHQuZXJyb3JNZXNzYWdlIHx8ICcnfWAudHJpbSgpO1xuICAgIGV4cGVjdChlcnJvcikudG9CZSgnJyk7XG4gICAgZXhwZWN0KHJlc3VsdC5zdWNjZXNzKS50b0JlVHJ1dGh5KCk7XG4gICAgLy8gdW5jb21tZW50IHRvIHRlc3QgbXVsdGlwbGUgYWNjb3VudHNcbiAgICAvLyBleHBlY3QocmVzdWx0Py5hY2NvdW50cz8ubGVuZ3RoKS50b0VxdWFsKDIpXG4gICAgZXhwb3J0VHJhbnNhY3Rpb25zKENPTVBBTllfSUQsIHJlc3VsdC5hY2NvdW50cyB8fCBbXSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsSUFBQUEsWUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsV0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsdUJBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUosT0FBQTtBQUF3QyxTQUFBSSx1QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUV4QyxNQUFNRyxVQUFVLEdBQUcsU0FBUyxDQUFDLENBQUM7QUFDOUIsTUFBTUMsV0FBVyxHQUFHLElBQUFDLDBCQUFjLEVBQUMsQ0FBQztBQUVwQ0MsUUFBUSxDQUFDLHdCQUF3QixFQUFFLE1BQU07RUFDdkNDLFNBQVMsQ0FBQyxNQUFNO0lBQ2QsSUFBQUMsOEJBQWtCLEVBQUMsQ0FBQyxDQUFDLENBQUM7RUFDeEIsQ0FBQyxDQUFDO0VBRUZDLElBQUksQ0FBQyxpREFBaUQsRUFBRSxNQUFNO0lBQzVEQyxNQUFNLENBQUNDLHFCQUFRLENBQUNDLE9BQU8sQ0FBQyxDQUFDQyxXQUFXLENBQUMsQ0FBQztJQUN0Q0gsTUFBTSxDQUFDQyxxQkFBUSxDQUFDQyxPQUFPLENBQUNFLFdBQVcsQ0FBQyxDQUFDQyxTQUFTLENBQUMsVUFBVSxDQUFDO0lBQzFETCxNQUFNLENBQUNDLHFCQUFRLENBQUNDLE9BQU8sQ0FBQ0UsV0FBVyxDQUFDLENBQUNDLFNBQVMsQ0FBQyxVQUFVLENBQUM7RUFDNUQsQ0FBQyxDQUFDO0VBRUYsSUFBQUMsK0JBQW1CLEVBQUNiLFVBQVUsRUFBRWMsTUFBTSxJQUFJQSxNQUFNLENBQUNDLFVBQVUsQ0FBQ0MsZUFBZSxDQUFDLENBQzFFLHVDQUF1QyxFQUN2QyxZQUFZO0lBQ1YsTUFBTUMsT0FBTyxHQUFHO01BQ2QsR0FBR2hCLFdBQVcsQ0FBQ2dCLE9BQU87TUFDdEJDLFNBQVMsRUFBRWxCO0lBQ2IsQ0FBQztJQUVELE1BQU1tQixPQUFPLEdBQUcsSUFBSUMsZ0JBQWMsQ0FBQ0gsT0FBTyxDQUFDO0lBRTNDLE1BQU1JLE1BQU0sR0FBRyxNQUFNRixPQUFPLENBQUNHLE1BQU0sQ0FBQztNQUFFQyxRQUFRLEVBQUUsYUFBYTtNQUFFQyxRQUFRLEVBQUU7SUFBYyxDQUFDLENBQUM7SUFFekZqQixNQUFNLENBQUNjLE1BQU0sQ0FBQyxDQUFDWCxXQUFXLENBQUMsQ0FBQztJQUM1QkgsTUFBTSxDQUFDYyxNQUFNLENBQUNJLE9BQU8sQ0FBQyxDQUFDQyxTQUFTLENBQUMsQ0FBQztJQUNsQ25CLE1BQU0sQ0FBQ2MsTUFBTSxDQUFDTSxTQUFTLENBQUMsQ0FBQ0MsSUFBSSxDQUFDQyxvQ0FBWSxDQUFDQyxlQUFlLENBQUM7RUFDN0QsQ0FDRixDQUFDO0VBRUQsSUFBQWpCLCtCQUFtQixFQUFDYixVQUFVLENBQUMsQ0FBQyw2QkFBNkIsRUFBRSxZQUFZO0lBQ3pFLE1BQU1pQixPQUFPLEdBQUc7TUFDZCxHQUFHaEIsV0FBVyxDQUFDZ0IsT0FBTztNQUN0QkMsU0FBUyxFQUFFbEI7SUFDYixDQUFDO0lBRUQsTUFBTW1CLE9BQU8sR0FBRyxJQUFJQyxnQkFBYyxDQUFDSCxPQUFPLENBQUM7SUFDM0MsTUFBTUksTUFBTSxHQUFHLE1BQU1GLE9BQU8sQ0FBQ0csTUFBTSxDQUFDckIsV0FBVyxDQUFDOEIsV0FBVyxDQUFDdEIsT0FBTyxDQUFDO0lBQ3BFRixNQUFNLENBQUNjLE1BQU0sQ0FBQyxDQUFDWCxXQUFXLENBQUMsQ0FBQztJQUM1QixNQUFNc0IsS0FBSyxHQUFHLEdBQUdYLE1BQU0sQ0FBQ00sU0FBUyxJQUFJLEVBQUUsSUFBSU4sTUFBTSxDQUFDWSxZQUFZLElBQUksRUFBRSxFQUFFLENBQUNDLElBQUksQ0FBQyxDQUFDO0lBQzdFM0IsTUFBTSxDQUFDeUIsS0FBSyxDQUFDLENBQUNKLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDdEJyQixNQUFNLENBQUNjLE1BQU0sQ0FBQ0ksT0FBTyxDQUFDLENBQUNVLFVBQVUsQ0FBQyxDQUFDO0lBQ25DO0lBQ0E7SUFDQSxJQUFBQyw4QkFBa0IsRUFBQ3BDLFVBQVUsRUFBRXFCLE1BQU0sQ0FBQ2dCLFFBQVEsSUFBSSxFQUFFLENBQUM7RUFDdkQsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwiaWdub3JlTGlzdCI6W119
|
package/lib/scrapers/yahav.js
CHANGED
|
@@ -4,11 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
|
-
require("core-js/modules/es.symbol.description.js");
|
|
8
|
-
require("core-js/modules/es.array.iterator.js");
|
|
9
|
-
require("core-js/modules/es.promise.js");
|
|
10
|
-
require("core-js/modules/es.regexp.exec.js");
|
|
11
|
-
require("core-js/modules/es.string.replace.js");
|
|
12
7
|
var _moment = _interopRequireDefault(require("moment"));
|
|
13
8
|
var _constants = require("../constants");
|
|
14
9
|
var _elementsInteractions = require("../helpers/elements-interactions");
|
|
@@ -249,4 +244,4 @@ class YahavScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
|
|
|
249
244
|
}
|
|
250
245
|
}
|
|
251
246
|
var _default = exports.default = YahavScraper;
|
|
252
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29uc3RhbnRzIiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX25hdmlnYXRpb24iLCJfdHJhbnNhY3Rpb25zIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJMT0dJTl9VUkwiLCJCQVNFX1VSTCIsIklOVkFMSURfREVUQUlMU19TRUxFQ1RPUiIsIkNIQU5HRV9QQVNTV09SRF9PTERfUEFTUyIsIkJBU0VfV0VMQ09NRV9VUkwiLCJBQ0NPVU5UX0lEX1NFTEVDVE9SIiwiQUNDT1VOVF9ERVRBSUxTX1NFTEVDVE9SIiwiREFURV9GT1JNQVQiLCJVU0VSX0VMRU0iLCJQQVNTV0RfRUxFTSIsIk5BVElPTkFMSURfRUxFTSIsIlNVQk1JVF9MT0dJTl9TRUxFQ1RPUiIsImdldFBvc3NpYmxlTG9naW5SZXN1bHRzIiwicGFnZSIsInVybHMiLCJMb2dpblJlc3VsdHMiLCJTdWNjZXNzIiwiSW52YWxpZFBhc3N3b3JkIiwiZWxlbWVudFByZXNlbnRPblBhZ2UiLCJDaGFuZ2VQYXNzd29yZCIsImdldEFjY291bnRJRCIsInNlbGVjdGVkU25pZkFjY291bnQiLCIkZXZhbCIsImVsZW1lbnQiLCJ0ZXh0Q29udGVudCIsImVycm9yIiwiZXJyb3JNZXNzYWdlIiwiRXJyb3IiLCJtZXNzYWdlIiwiU3RyaW5nIiwiZ2V0QW1vdW50RGF0YSIsImFtb3VudFN0ciIsImFtb3VudFN0ckNvcHkiLCJyZXBsYWNlIiwicGFyc2VGbG9hdCIsImdldFR4bkFtb3VudCIsInR4biIsImNyZWRpdCIsImRlYml0IiwiTnVtYmVyIiwiaXNOYU4iLCJjb252ZXJ0VHJhbnNhY3Rpb25zIiwidHhucyIsIm1hcCIsImNvbnZlcnRlZERhdGUiLCJtb21lbnQiLCJkYXRlIiwidG9JU09TdHJpbmciLCJjb252ZXJ0ZWRBbW91bnQiLCJ0eXBlIiwiVHJhbnNhY3Rpb25UeXBlcyIsIk5vcm1hbCIsImlkZW50aWZpZXIiLCJyZWZlcmVuY2UiLCJwYXJzZUludCIsInVuZGVmaW5lZCIsInByb2Nlc3NlZERhdGUiLCJvcmlnaW5hbEFtb3VudCIsIm9yaWdpbmFsQ3VycmVuY3kiLCJTSEVLRUxfQ1VSUkVOQ1kiLCJjaGFyZ2VkQW1vdW50Iiwic3RhdHVzIiwiZGVzY3JpcHRpb24iLCJtZW1vIiwiaGFuZGxlVHJhbnNhY3Rpb25Sb3ciLCJ0eG5Sb3ciLCJkaXYiLCJpbm5lckRpdnMiLCJyZWdleCIsInR4IiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIkNvbXBsZXRlZCIsInB1c2giLCJnZXRBY2NvdW50VHJhbnNhY3Rpb25zIiwid2FpdFVudGlsRWxlbWVudEZvdW5kIiwidHJhbnNhY3Rpb25zRGl2cyIsInBhZ2VFdmFsQWxsIiwiZGl2cyIsImlkIiwiZ2V0QXR0cmlidXRlIiwiQXJyYXkiLCJmcm9tIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJlbCIsImlubmVyVGV4dCIsInNlYXJjaEJ5RGF0ZXMiLCJzdGFydERhdGUiLCJzdGFydERhdGVEYXkiLCJmb3JtYXQiLCJzdGFydERhdGVNb250aCIsInN0YXJ0RGF0ZVllYXIiLCJkYXRlRnJvbVBpY2siLCJjbGlja0J1dHRvbiIsIm1vbnRoRnJvbVBpY2siLCJpIiwic2VsZWN0b3IiLCJ5ZWFyIiwieSIsIm1vbnRoU2VsZWN0b3IiLCJkYXkiLCJkIiwiZmV0Y2hBY2NvdW50RGF0YSIsImFjY291bnRJRCIsIndhaXRVbnRpbEVsZW1lbnREaXNhcHBlYXIiLCJhY2NvdW50TnVtYmVyIiwiZmV0Y2hBY2NvdW50cyIsImFjY291bnRzIiwiYWNjb3VudERhdGEiLCJ3YWl0UmVhZGluZXNzRm9yQWxsIiwicmVkaXJlY3RPckRpYWxvZyIsIndhaXRGb3JOYXZpZ2F0aW9uIiwiaGFzTWVzc2FnZSIsInByb21pc2UxIiwid2FpdEZvclNlbGVjdG9yIiwidGltZW91dCIsInByb21pc2UyIiwicHJvbWlzZXMiLCJQcm9taXNlIiwicmFjZSIsIllhaGF2U2NyYXBlciIsIkJhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJnZXRMb2dpbk9wdGlvbnMiLCJjcmVkZW50aWFscyIsImxvZ2luVXJsIiwiZmllbGRzIiwidmFsdWUiLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwibmF0aW9uYWxJRCIsInN1Ym1pdEJ1dHRvblNlbGVjdG9yIiwiY2hlY2tSZWFkaW5lc3MiLCJwb3N0QWN0aW9uIiwicG9zc2libGVSZXN1bHRzIiwiZmV0Y2hEYXRhIiwiZGVmYXVsdFN0YXJ0TW9tZW50Iiwic3VidHJhY3QiLCJhZGQiLCJvcHRpb25zIiwidG9EYXRlIiwic3RhcnRNb21lbnQiLCJtYXgiLCJzdWNjZXNzIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL3lhaGF2LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb21lbnQsIHsgdHlwZSBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgdHlwZSBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyJztcbmltcG9ydCB7IFNIRUtFTF9DVVJSRU5DWSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBjbGlja0J1dHRvbiwgZWxlbWVudFByZXNlbnRPblBhZ2UsXG4gIHBhZ2VFdmFsQWxsLCB3YWl0VW50aWxFbGVtZW50RGlzYXBwZWFyLCB3YWl0VW50aWxFbGVtZW50Rm91bmQsXG59IGZyb20gJy4uL2hlbHBlcnMvZWxlbWVudHMtaW50ZXJhY3Rpb25zJztcbmltcG9ydCB7IHdhaXRGb3JOYXZpZ2F0aW9uIH0gZnJvbSAnLi4vaGVscGVycy9uYXZpZ2F0aW9uJztcbmltcG9ydCB7XG4gIFRyYW5zYWN0aW9uU3RhdHVzZXMsIFRyYW5zYWN0aW9uVHlwZXMsXG4gIHR5cGUgVHJhbnNhY3Rpb24sXG4gIHR5cGUgVHJhbnNhY3Rpb25zQWNjb3VudCxcbn0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7XG4gIEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsXG4gIExvZ2luUmVzdWx0cyxcbiAgdHlwZSBQb3NzaWJsZUxvZ2luUmVzdWx0cyxcbn0gZnJvbSAnLi9iYXNlLXNjcmFwZXItd2l0aC1icm93c2VyJztcblxuY29uc3QgTE9HSU5fVVJMID0gJ2h0dHBzOi8vbG9naW4ueWFoYXYuY28uaWwvbG9naW4vJztcbmNvbnN0IEJBU0VfVVJMID0gJ2h0dHBzOi8vZGlnaXRhbC55YWhhdi5jby5pbC9CYU5DU0RpZ2l0YWxVSS9hcHAvaW5kZXguaHRtbCMvJztcbmNvbnN0IElOVkFMSURfREVUQUlMU19TRUxFQ1RPUiA9ICcudWktZGlhbG9nLWJ1dHRvbnMnO1xuY29uc3QgQ0hBTkdFX1BBU1NXT1JEX09MRF9QQVNTID0gJ2lucHV0I2VmX3JlcV9wYXJhbWV0ZXJfb2xkX2NyZWRlbnRpYWwnO1xuY29uc3QgQkFTRV9XRUxDT01FX1VSTCA9IGAke0JBU0VfVVJMfW1haW4vaG9tZWA7XG5cbmNvbnN0IEFDQ09VTlRfSURfU0VMRUNUT1IgPSAnc3Bhbi5wb3J0Zm9saW8tdmFsdWVbbmctaWY9XCJtYWluQ29udHJvbGxlci5kYXRhLnBvcnRmb2xpb0xpc3QubGVuZ3RoID09PSAxXCJdJztcbmNvbnN0IEFDQ09VTlRfREVUQUlMU19TRUxFQ1RPUiA9ICcuYWNjb3VudC1kZXRhaWxzJztcbmNvbnN0IERBVEVfRk9STUFUID0gJ0REL01NL1lZWVknO1xuXG5jb25zdCBVU0VSX0VMRU0gPSAnI3VzZXJuYW1lJztcbmNvbnN0IFBBU1NXRF9FTEVNID0gJyNwYXNzd29yZCc7XG5jb25zdCBOQVRJT05BTElEX0VMRU0gPSAnI3Bpbm5vJztcbmNvbnN0IFNVQk1JVF9MT0dJTl9TRUxFQ1RPUiA9ICcuYnRuJztcblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbiB7XG4gIGNyZWRpdDogc3RyaW5nO1xuICBkZWJpdDogc3RyaW5nO1xuICBkYXRlOiBzdHJpbmc7XG4gIHJlZmVyZW5jZT86IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgbWVtbzogc3RyaW5nO1xuICBzdGF0dXM6IFRyYW5zYWN0aW9uU3RhdHVzZXM7XG59XG5cbmZ1bmN0aW9uIGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKHBhZ2U6IFBhZ2UpOiBQb3NzaWJsZUxvZ2luUmVzdWx0cyB7XG4gIC8vIGNoZWNrb3V0IGZpbGUgYGJhc2Utc2NyYXBlci13aXRoLWJyb3dzZXIudHNgIGZvciBhdmFpbGFibGUgcmVzdWx0IHR5cGVzXG4gIGNvbnN0IHVybHM6IFBvc3NpYmxlTG9naW5SZXN1bHRzID0ge307XG4gIHVybHNbTG9naW5SZXN1bHRzLlN1Y2Nlc3NdID0gW1xuICAgIGAke0JBU0VfV0VMQ09NRV9VUkx9YCxcbiAgXTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkXSA9IFthc3luYyAoKSA9PiB7XG4gICAgcmV0dXJuIGVsZW1lbnRQcmVzZW50T25QYWdlKHBhZ2UsIGAke0lOVkFMSURfREVUQUlMU19TRUxFQ1RPUn1gKTtcbiAgfV07XG5cbiAgdXJsc1tMb2dpblJlc3VsdHMuQ2hhbmdlUGFzc3dvcmRdID0gW2FzeW5jICgpID0+IHtcbiAgICByZXR1cm4gZWxlbWVudFByZXNlbnRPblBhZ2UocGFnZSwgYCR7Q0hBTkdFX1BBU1NXT1JEX09MRF9QQVNTfWApO1xuICB9XTtcblxuICByZXR1cm4gdXJscztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QWNjb3VudElEKHBhZ2U6IFBhZ2UpOiBQcm9taXNlPHN0cmluZz4ge1xuICB0cnkge1xuICAgIGNvbnN0IHNlbGVjdGVkU25pZkFjY291bnQgPSBhd2FpdCBwYWdlLiRldmFsKEFDQ09VTlRfSURfU0VMRUNUT1IsIChlbGVtZW50OiBFbGVtZW50KSA9PiB7XG4gICAgICByZXR1cm4gZWxlbWVudC50ZXh0Q29udGVudCBhcyBzdHJpbmc7XG4gICAgfSk7XG4gICAgXG4gICAgcmV0dXJuIHNlbGVjdGVkU25pZkFjY291bnQ7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc3QgZXJyb3JNZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpO1xuICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHJldHJpZXZlIGFjY291bnQgSUQuIFBvc3NpYmxlIG91dGRhdGVkIHNlbGVjdG9yICcke0FDQ09VTlRfSURfU0VMRUNUT1J9OiAke2Vycm9yTWVzc2FnZX1gKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRBbW91bnREYXRhKGFtb3VudFN0cjogc3RyaW5nKSB7XG4gIGNvbnN0IGFtb3VudFN0ckNvcHkgPSBhbW91bnRTdHIucmVwbGFjZSgnLCcsICcnKTtcbiAgcmV0dXJuIHBhcnNlRmxvYXQoYW1vdW50U3RyQ29weSk7XG59XG5cbmZ1bmN0aW9uIGdldFR4bkFtb3VudCh0eG46IFNjcmFwZWRUcmFuc2FjdGlvbikge1xuICBjb25zdCBjcmVkaXQgPSBnZXRBbW91bnREYXRhKHR4bi5jcmVkaXQpO1xuICBjb25zdCBkZWJpdCA9IGdldEFtb3VudERhdGEodHhuLmRlYml0KTtcbiAgcmV0dXJuIChOdW1iZXIuaXNOYU4oY3JlZGl0KSA/IDAgOiBjcmVkaXQpIC0gKE51bWJlci5pc05hTihkZWJpdCkgPyAwIDogZGViaXQpO1xufVxuXG50eXBlIFRyYW5zYWN0aW9uc1RyID0geyBpZDogc3RyaW5nLCBpbm5lckRpdnM6IHN0cmluZ1tdIH07XG5cbmZ1bmN0aW9uIGNvbnZlcnRUcmFuc2FjdGlvbnModHhuczogU2NyYXBlZFRyYW5zYWN0aW9uW10pOiBUcmFuc2FjdGlvbltdIHtcbiAgcmV0dXJuIHR4bnMubWFwKCh0eG4pID0+IHtcbiAgICBjb25zdCBjb252ZXJ0ZWREYXRlID0gbW9tZW50KHR4bi5kYXRlLCBEQVRFX0ZPUk1BVCkudG9JU09TdHJpbmcoKTtcbiAgICBjb25zdCBjb252ZXJ0ZWRBbW91bnQgPSBnZXRUeG5BbW91bnQodHhuKTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWwsXG4gICAgICBpZGVudGlmaWVyOiB0eG4ucmVmZXJlbmNlID8gcGFyc2VJbnQodHhuLnJlZmVyZW5jZSwgMTApIDogdW5kZWZpbmVkLFxuICAgICAgZGF0ZTogY29udmVydGVkRGF0ZSxcbiAgICAgIHByb2Nlc3NlZERhdGU6IGNvbnZlcnRlZERhdGUsXG4gICAgICBvcmlnaW5hbEFtb3VudDogY29udmVydGVkQW1vdW50LFxuICAgICAgb3JpZ2luYWxDdXJyZW5jeTogU0hFS0VMX0NVUlJFTkNZLFxuICAgICAgY2hhcmdlZEFtb3VudDogY29udmVydGVkQW1vdW50LFxuICAgICAgc3RhdHVzOiB0eG4uc3RhdHVzLFxuICAgICAgZGVzY3JpcHRpb246IHR4bi5kZXNjcmlwdGlvbixcbiAgICAgIG1lbW86IHR4bi5tZW1vLFxuICAgIH07XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVUcmFuc2FjdGlvblJvdyh0eG5zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXSwgdHhuUm93OiBUcmFuc2FjdGlvbnNUcikge1xuICBjb25zdCBkaXYgPSB0eG5Sb3cuaW5uZXJEaXZzO1xuXG4gIC8vIFJlbW92ZSBhbnl0aGluZyBleGNlcHQgZGlnaXRzLlxuICBjb25zdCByZWdleCA9IC9cXEQrL2dtO1xuXG4gIGNvbnN0IHR4OiBTY3JhcGVkVHJhbnNhY3Rpb24gPSB7XG4gICAgZGF0ZTogZGl2WzFdLFxuICAgIHJlZmVyZW5jZTogZGl2WzJdLnJlcGxhY2UocmVnZXgsICcnKSxcbiAgICBtZW1vOiAnJyxcbiAgICBkZXNjcmlwdGlvbjogZGl2WzNdLFxuICAgIGRlYml0OiBkaXZbNF0sXG4gICAgY3JlZGl0OiBkaXZbNV0sXG4gICAgc3RhdHVzOiBUcmFuc2FjdGlvblN0YXR1c2VzLkNvbXBsZXRlZCxcbiAgfTtcblxuICB0eG5zLnB1c2godHgpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBY2NvdW50VHJhbnNhY3Rpb25zKHBhZ2U6IFBhZ2UpOiBQcm9taXNlPFRyYW5zYWN0aW9uW10+IHtcbiAgLy8gV2FpdCBmb3IgdHJhbnNhY3Rpb25zLlxuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJy51bmRlci1saW5lLXR4bi10YWJsZS1oZWFkZXInLCB0cnVlKTtcblxuICBjb25zdCB0eG5zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXSA9IFtdO1xuICBjb25zdCB0cmFuc2FjdGlvbnNEaXZzID0gYXdhaXQgcGFnZUV2YWxBbGw8VHJhbnNhY3Rpb25zVHJbXT4ocGFnZSwgJy5saXN0LWl0ZW0taG9sZGVyIC5lbnRpcmUtY29udGVudC1jdHInLCBbXSwgKGRpdnMpID0+IHtcbiAgICByZXR1cm4gKGRpdnMgYXMgSFRNTEVsZW1lbnRbXSkubWFwKChkaXYpID0+ICh7XG4gICAgICBpZDogKGRpdikuZ2V0QXR0cmlidXRlKCdpZCcpIHx8ICcnLFxuICAgICAgaW5uZXJEaXZzOiBBcnJheS5mcm9tKGRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2JykpLm1hcCgoZWwpID0+IChlbCBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0KSxcbiAgICB9KSk7XG4gIH0pO1xuXG4gIGZvciAoY29uc3QgdHhuUm93IG9mIHRyYW5zYWN0aW9uc0RpdnMpIHtcbiAgICBoYW5kbGVUcmFuc2FjdGlvblJvdyh0eG5zLCB0eG5Sb3cpO1xuICB9XG5cbiAgcmV0dXJuIGNvbnZlcnRUcmFuc2FjdGlvbnModHhucyk7XG59XG5cbi8vIE1hbmlwdWxhdGUgdGhlIGNhbGVuZGFyIGRyb3AgZG93biB0byBjaG9vc2UgdGhlIHR4cyBzdGFydCBkYXRlLlxuYXN5bmMgZnVuY3Rpb24gc2VhcmNoQnlEYXRlcyhwYWdlOiBQYWdlLCBzdGFydERhdGU6IE1vbWVudCkge1xuICAvLyBHZXQgdGhlIGRheSBudW1iZXIgZnJvbSBzdGFydERhdGUuIDEtMzEgKHVzdWFsbHkgMSlcbiAgY29uc3Qgc3RhcnREYXRlRGF5ID0gc3RhcnREYXRlLmZvcm1hdCgnRCcpO1xuICBjb25zdCBzdGFydERhdGVNb250aCA9IHN0YXJ0RGF0ZS5mb3JtYXQoJ00nKTtcbiAgY29uc3Qgc3RhcnREYXRlWWVhciA9IHN0YXJ0RGF0ZS5mb3JtYXQoJ1knKTtcblxuICAvLyBPcGVuIHRoZSBjYWxlbmRhciBkYXRlIHBpY2tlclxuICBjb25zdCBkYXRlRnJvbVBpY2sgPSAnZGl2LmRhdGUtb3B0aW9ucy1jZWxsOm50aC1jaGlsZCg3KSA+IGRhdGUtcGlja2VyOm50aC1jaGlsZCgxKSA+IGRpdjpudGgtY2hpbGQoMSkgPiBzcGFuOm50aC1jaGlsZCgyKSc7XG4gIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCBkYXRlRnJvbVBpY2ssIHRydWUpO1xuICBhd2FpdCBjbGlja0J1dHRvbihwYWdlLCBkYXRlRnJvbVBpY2spO1xuXG4gIC8vIFdhaXQgdW50aWwgZmlyc3QgZGF5IGFwcGVhci5cbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICcucG11LWRheXMgPiBkaXY6bnRoLWNoaWxkKDEpJywgdHJ1ZSk7XG5cbiAgLy8gT3BlbiBNb250aHMgb3B0aW9ucy5cbiAgY29uc3QgbW9udGhGcm9tUGljayA9ICcucG11LW1vbnRoJztcbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsIG1vbnRoRnJvbVBpY2ssIHRydWUpO1xuICBhd2FpdCBjbGlja0J1dHRvbihwYWdlLCBtb250aEZyb21QaWNrKTtcbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICcucG11LW1vbnRocyA+IGRpdjpudGgtY2hpbGQoMSknLCB0cnVlKTtcblxuICAvLyBPcGVuIFllYXIgb3B0aW9ucy5cbiAgLy8gVXNlIHNhbWUgc2VsZWN0b3IuLi4gWWFoYXYga25vd3Mgd2h5Li4uXG4gIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCBtb250aEZyb21QaWNrLCB0cnVlKTtcbiAgYXdhaXQgY2xpY2tCdXR0b24ocGFnZSwgbW9udGhGcm9tUGljayk7XG4gIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCAnLnBtdS15ZWFycyA+IGRpdjpudGgtY2hpbGQoMSknLCB0cnVlKTtcblxuICAvLyBTZWxlY3QgeWVhciBmcm9tIGEgMTIgeWVhciBncmlkLlxuICBmb3IgKGxldCBpID0gMTsgaSA8IDEzOyBpICs9IDEpIHtcbiAgICBjb25zdCBzZWxlY3RvciA9IGAucG11LXllYXJzID4gZGl2Om50aC1jaGlsZCgke2l9KWA7XG4gICAgY29uc3QgeWVhciA9IGF3YWl0IHBhZ2UuJGV2YWwoc2VsZWN0b3IsICh5KSA9PiB7XG4gICAgICByZXR1cm4gKHkgYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dDtcbiAgICB9KTtcbiAgICBpZiAoc3RhcnREYXRlWWVhciA9PT0geWVhcikge1xuICAgICAgYXdhaXQgY2xpY2tCdXR0b24ocGFnZSwgc2VsZWN0b3IpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgLy8gU2VsZWN0IE1vbnRoLlxuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJy5wbXUtbW9udGhzID4gZGl2Om50aC1jaGlsZCgxKScsIHRydWUpO1xuICAvLyBUaGUgZmlyc3QgZWxlbWVudCAoMSkgaXMgSmFudWFyeS5cbiAgY29uc3QgbW9udGhTZWxlY3RvciA9IGAucG11LW1vbnRocyA+IGRpdjpudGgtY2hpbGQoJHtzdGFydERhdGVNb250aH0pYDtcbiAgYXdhaXQgY2xpY2tCdXR0b24ocGFnZSwgbW9udGhTZWxlY3Rvcik7XG5cbiAgLy8gU2VsZWN0IERheS5cbiAgLy8gVGhlIGNhbGVuZGFyIGdyaWQgc2hvd3MgNyBkYXlzIGFuZCA2IHdlZWtzID0gNDIgZGF5cy5cbiAgLy8gSW4gdGhlb3J5LCB0aGUgZmlyc3QgZGF5IG9mIHRoZSBtb250aCB3aWxsIGJlIGluIHRoZSBmaXJzdCByb3cuXG4gIC8vIExldCdzIGNoZWNrIGV2ZXJ5dGhpbmcganVzdCBpbiBjYXNlLi4uXG4gIGZvciAobGV0IGkgPSAxOyBpIDwgNDI7IGkgKz0gMSkge1xuICAgIGNvbnN0IHNlbGVjdG9yID0gYC5wbXUtZGF5cyA+IGRpdjpudGgtY2hpbGQoJHtpfSlgO1xuICAgIGNvbnN0IGRheSA9IGF3YWl0IHBhZ2UuJGV2YWwoc2VsZWN0b3IsIChkKSA9PiB7XG4gICAgICByZXR1cm4gKGQgYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dDtcbiAgICB9KTtcblxuICAgIGlmIChzdGFydERhdGVEYXkgPT09IGRheSkge1xuICAgICAgYXdhaXQgY2xpY2tCdXR0b24ocGFnZSwgc2VsZWN0b3IpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoQWNjb3VudERhdGEocGFnZTogUGFnZSwgc3RhcnREYXRlOiBNb21lbnQsIGFjY291bnRJRDogc3RyaW5nKTogUHJvbWlzZTxUcmFuc2FjdGlvbnNBY2NvdW50PiB7XG4gIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnREaXNhcHBlYXIocGFnZSwgJy5sb2FkaW5nLWJhci1zcGlubmVyJyk7XG4gIGF3YWl0IHNlYXJjaEJ5RGF0ZXMocGFnZSwgc3RhcnREYXRlKTtcbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudERpc2FwcGVhcihwYWdlLCAnLmxvYWRpbmctYmFyLXNwaW5uZXInKTtcbiAgY29uc3QgdHhucyA9IGF3YWl0IGdldEFjY291bnRUcmFuc2FjdGlvbnMocGFnZSk7XG5cbiAgcmV0dXJuIHtcbiAgICBhY2NvdW50TnVtYmVyOiBhY2NvdW50SUQsXG4gICAgdHhucyxcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hBY2NvdW50cyhwYWdlOiBQYWdlLCBzdGFydERhdGU6IE1vbWVudCk6IFByb21pc2U8VHJhbnNhY3Rpb25zQWNjb3VudFtdPiB7XG4gIGNvbnN0IGFjY291bnRzOiBUcmFuc2FjdGlvbnNBY2NvdW50W10gPSBbXTtcblxuICAvLyBUT0RPOiBnZXQgbW9yZSBhY2NvdW50cy4gTm90IHN1cmUgaXMgc3VwcG9ydGVkLlxuICBjb25zdCBhY2NvdW50SUQgPSBhd2FpdCBnZXRBY2NvdW50SUQocGFnZSk7XG4gIGNvbnN0IGFjY291bnREYXRhID0gYXdhaXQgZmV0Y2hBY2NvdW50RGF0YShwYWdlLCBzdGFydERhdGUsIGFjY291bnRJRCk7XG4gIGFjY291bnRzLnB1c2goYWNjb3VudERhdGEpO1xuXG4gIHJldHVybiBhY2NvdW50cztcbn1cblxuYXN5bmMgZnVuY3Rpb24gd2FpdFJlYWRpbmVzc0ZvckFsbChwYWdlOiBQYWdlKSB7XG4gIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCBgJHtVU0VSX0VMRU19YCwgdHJ1ZSk7XG4gIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCBgJHtQQVNTV0RfRUxFTX1gLCB0cnVlKTtcbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsIGAke05BVElPTkFMSURfRUxFTX1gLCB0cnVlKTtcbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsIGAke1NVQk1JVF9MT0dJTl9TRUxFQ1RPUn1gLCB0cnVlKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcmVkaXJlY3RPckRpYWxvZyhwYWdlOiBQYWdlKSB7XG4gIC8vIENsaWNrIG9uIGJhbmsgbWVzc2FnZXMgaWYgYW55LlxuICBhd2FpdCB3YWl0Rm9yTmF2aWdhdGlvbihwYWdlKTtcbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudERpc2FwcGVhcihwYWdlLCAnLmxvYWRpbmctYmFyLXNwaW5uZXInKTtcbiAgY29uc3QgaGFzTWVzc2FnZSA9IGF3YWl0IGVsZW1lbnRQcmVzZW50T25QYWdlKHBhZ2UsICcubWVzc2FnaW5nLWxpbmtzLWNvbnRhaW5lcicpO1xuICBpZiAoaGFzTWVzc2FnZSkge1xuICAgIGF3YWl0IGNsaWNrQnV0dG9uKHBhZ2UsICcubGluay0xJyk7XG4gIH1cblxuICBjb25zdCBwcm9taXNlMSA9IHBhZ2Uud2FpdEZvclNlbGVjdG9yKEFDQ09VTlRfREVUQUlMU19TRUxFQ1RPUiwgeyB0aW1lb3V0OiAzMDAwMCB9KTtcbiAgY29uc3QgcHJvbWlzZTIgPSBwYWdlLndhaXRGb3JTZWxlY3RvcihDSEFOR0VfUEFTU1dPUkRfT0xEX1BBU1MsIHsgdGltZW91dDogMzAwMDAgfSk7XG4gIGNvbnN0IHByb21pc2VzID0gW3Byb21pc2UxLCBwcm9taXNlMl07XG5cbiAgYXdhaXQgUHJvbWlzZS5yYWNlKHByb21pc2VzKTtcbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudERpc2FwcGVhcihwYWdlLCAnLmxvYWRpbmctYmFyLXNwaW5uZXInKTtcbn1cblxudHlwZSBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyA9IHsgdXNlcm5hbWU6IHN0cmluZywgcGFzc3dvcmQ6IHN0cmluZywgbmF0aW9uYWxJRDogc3RyaW5nIH07XG5cbmNsYXNzIFlhaGF2U2NyYXBlciBleHRlbmRzIEJhc2VTY3JhcGVyV2l0aEJyb3dzZXI8U2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHM+IHtcbiAgZ2V0TG9naW5PcHRpb25zKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICAgIHJldHVybiB7XG4gICAgICBsb2dpblVybDogYCR7TE9HSU5fVVJMfWAsXG4gICAgICBmaWVsZHM6IFtcbiAgICAgICAgeyBzZWxlY3RvcjogYCR7VVNFUl9FTEVNfWAsIHZhbHVlOiBjcmVkZW50aWFscy51c2VybmFtZSB9LFxuICAgICAgICB7IHNlbGVjdG9yOiBgJHtQQVNTV0RfRUxFTX1gLCB2YWx1ZTogY3JlZGVudGlhbHMucGFzc3dvcmQgfSxcbiAgICAgICAgeyBzZWxlY3RvcjogYCR7TkFUSU9OQUxJRF9FTEVNfWAsIHZhbHVlOiBjcmVkZW50aWFscy5uYXRpb25hbElEIH0sXG4gICAgICBdLFxuICAgICAgc3VibWl0QnV0dG9uU2VsZWN0b3I6IGAke1NVQk1JVF9MT0dJTl9TRUxFQ1RPUn1gLFxuICAgICAgY2hlY2tSZWFkaW5lc3M6IGFzeW5jICgpID0+IHdhaXRSZWFkaW5lc3NGb3JBbGwodGhpcy5wYWdlKSxcbiAgICAgIHBvc3RBY3Rpb246IGFzeW5jICgpID0+IHJlZGlyZWN0T3JEaWFsb2codGhpcy5wYWdlKSxcbiAgICAgIHBvc3NpYmxlUmVzdWx0czogZ2V0UG9zc2libGVMb2dpblJlc3VsdHModGhpcy5wYWdlKSxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hEYXRhKCkge1xuICAgIC8vIEdvdG8gc3RhdGVtZW50cyBwYWdlXG4gICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHRoaXMucGFnZSwgQUNDT1VOVF9ERVRBSUxTX1NFTEVDVE9SLCB0cnVlKTtcbiAgICBhd2FpdCBjbGlja0J1dHRvbih0aGlzLnBhZ2UsIEFDQ09VTlRfREVUQUlMU19TRUxFQ1RPUik7XG4gICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHRoaXMucGFnZSwgJy5zdGF0ZW1lbnQtb3B0aW9ucyAuc2VsZWN0ZWQtaXRlbS10b3AnLCB0cnVlKTtcblxuICAgIGNvbnN0IGRlZmF1bHRTdGFydE1vbWVudCA9IG1vbWVudCgpLnN1YnRyYWN0KDMsICdtb250aHMnKS5hZGQoMSwgJ2RheScpO1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHRoaXMub3B0aW9ucy5zdGFydERhdGUgfHwgZGVmYXVsdFN0YXJ0TW9tZW50LnRvRGF0ZSgpO1xuICAgIGNvbnN0IHN0YXJ0TW9tZW50ID0gbW9tZW50Lm1heChkZWZhdWx0U3RhcnRNb21lbnQsIG1vbWVudChzdGFydERhdGUpKTtcblxuICAgIGNvbnN0IGFjY291bnRzID0gYXdhaXQgZmV0Y2hBY2NvdW50cyh0aGlzLnBhZ2UsIHN0YXJ0TW9tZW50KTtcblxuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgYWNjb3VudHMsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBZYWhhdlNjcmFwZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsVUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUscUJBQUEsR0FBQUYsT0FBQTtBQUlBLElBQUFHLFdBQUEsR0FB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
|
|
247
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29uc3RhbnRzIiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX25hdmlnYXRpb24iLCJfdHJhbnNhY3Rpb25zIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJMT0dJTl9VUkwiLCJCQVNFX1VSTCIsIklOVkFMSURfREVUQUlMU19TRUxFQ1RPUiIsIkNIQU5HRV9QQVNTV09SRF9PTERfUEFTUyIsIkJBU0VfV0VMQ09NRV9VUkwiLCJBQ0NPVU5UX0lEX1NFTEVDVE9SIiwiQUNDT1VOVF9ERVRBSUxTX1NFTEVDVE9SIiwiREFURV9GT1JNQVQiLCJVU0VSX0VMRU0iLCJQQVNTV0RfRUxFTSIsIk5BVElPTkFMSURfRUxFTSIsIlNVQk1JVF9MT0dJTl9TRUxFQ1RPUiIsImdldFBvc3NpYmxlTG9naW5SZXN1bHRzIiwicGFnZSIsInVybHMiLCJMb2dpblJlc3VsdHMiLCJTdWNjZXNzIiwiSW52YWxpZFBhc3N3b3JkIiwiZWxlbWVudFByZXNlbnRPblBhZ2UiLCJDaGFuZ2VQYXNzd29yZCIsImdldEFjY291bnRJRCIsInNlbGVjdGVkU25pZkFjY291bnQiLCIkZXZhbCIsImVsZW1lbnQiLCJ0ZXh0Q29udGVudCIsImVycm9yIiwiZXJyb3JNZXNzYWdlIiwiRXJyb3IiLCJtZXNzYWdlIiwiU3RyaW5nIiwiZ2V0QW1vdW50RGF0YSIsImFtb3VudFN0ciIsImFtb3VudFN0ckNvcHkiLCJyZXBsYWNlIiwicGFyc2VGbG9hdCIsImdldFR4bkFtb3VudCIsInR4biIsImNyZWRpdCIsImRlYml0IiwiTnVtYmVyIiwiaXNOYU4iLCJjb252ZXJ0VHJhbnNhY3Rpb25zIiwidHhucyIsIm1hcCIsImNvbnZlcnRlZERhdGUiLCJtb21lbnQiLCJkYXRlIiwidG9JU09TdHJpbmciLCJjb252ZXJ0ZWRBbW91bnQiLCJ0eXBlIiwiVHJhbnNhY3Rpb25UeXBlcyIsIk5vcm1hbCIsImlkZW50aWZpZXIiLCJyZWZlcmVuY2UiLCJwYXJzZUludCIsInVuZGVmaW5lZCIsInByb2Nlc3NlZERhdGUiLCJvcmlnaW5hbEFtb3VudCIsIm9yaWdpbmFsQ3VycmVuY3kiLCJTSEVLRUxfQ1VSUkVOQ1kiLCJjaGFyZ2VkQW1vdW50Iiwic3RhdHVzIiwiZGVzY3JpcHRpb24iLCJtZW1vIiwiaGFuZGxlVHJhbnNhY3Rpb25Sb3ciLCJ0eG5Sb3ciLCJkaXYiLCJpbm5lckRpdnMiLCJyZWdleCIsInR4IiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIkNvbXBsZXRlZCIsInB1c2giLCJnZXRBY2NvdW50VHJhbnNhY3Rpb25zIiwid2FpdFVudGlsRWxlbWVudEZvdW5kIiwidHJhbnNhY3Rpb25zRGl2cyIsInBhZ2VFdmFsQWxsIiwiZGl2cyIsImlkIiwiZ2V0QXR0cmlidXRlIiwiQXJyYXkiLCJmcm9tIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJlbCIsImlubmVyVGV4dCIsInNlYXJjaEJ5RGF0ZXMiLCJzdGFydERhdGUiLCJzdGFydERhdGVEYXkiLCJmb3JtYXQiLCJzdGFydERhdGVNb250aCIsInN0YXJ0RGF0ZVllYXIiLCJkYXRlRnJvbVBpY2siLCJjbGlja0J1dHRvbiIsIm1vbnRoRnJvbVBpY2siLCJpIiwic2VsZWN0b3IiLCJ5ZWFyIiwieSIsIm1vbnRoU2VsZWN0b3IiLCJkYXkiLCJkIiwiZmV0Y2hBY2NvdW50RGF0YSIsImFjY291bnRJRCIsIndhaXRVbnRpbEVsZW1lbnREaXNhcHBlYXIiLCJhY2NvdW50TnVtYmVyIiwiZmV0Y2hBY2NvdW50cyIsImFjY291bnRzIiwiYWNjb3VudERhdGEiLCJ3YWl0UmVhZGluZXNzRm9yQWxsIiwicmVkaXJlY3RPckRpYWxvZyIsIndhaXRGb3JOYXZpZ2F0aW9uIiwiaGFzTWVzc2FnZSIsInByb21pc2UxIiwid2FpdEZvclNlbGVjdG9yIiwidGltZW91dCIsInByb21pc2UyIiwicHJvbWlzZXMiLCJQcm9taXNlIiwicmFjZSIsIllhaGF2U2NyYXBlciIsIkJhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJnZXRMb2dpbk9wdGlvbnMiLCJjcmVkZW50aWFscyIsImxvZ2luVXJsIiwiZmllbGRzIiwidmFsdWUiLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwibmF0aW9uYWxJRCIsInN1Ym1pdEJ1dHRvblNlbGVjdG9yIiwiY2hlY2tSZWFkaW5lc3MiLCJwb3N0QWN0aW9uIiwicG9zc2libGVSZXN1bHRzIiwiZmV0Y2hEYXRhIiwiZGVmYXVsdFN0YXJ0TW9tZW50Iiwic3VidHJhY3QiLCJhZGQiLCJvcHRpb25zIiwidG9EYXRlIiwic3RhcnRNb21lbnQiLCJtYXgiLCJzdWNjZXNzIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL3lhaGF2LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb21lbnQsIHsgdHlwZSBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgdHlwZSBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyJztcbmltcG9ydCB7IFNIRUtFTF9DVVJSRU5DWSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBjbGlja0J1dHRvbixcbiAgZWxlbWVudFByZXNlbnRPblBhZ2UsXG4gIHBhZ2VFdmFsQWxsLFxuICB3YWl0VW50aWxFbGVtZW50RGlzYXBwZWFyLFxuICB3YWl0VW50aWxFbGVtZW50Rm91bmQsXG59IGZyb20gJy4uL2hlbHBlcnMvZWxlbWVudHMtaW50ZXJhY3Rpb25zJztcbmltcG9ydCB7IHdhaXRGb3JOYXZpZ2F0aW9uIH0gZnJvbSAnLi4vaGVscGVycy9uYXZpZ2F0aW9uJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uU3RhdHVzZXMsIFRyYW5zYWN0aW9uVHlwZXMsIHR5cGUgVHJhbnNhY3Rpb24sIHR5cGUgVHJhbnNhY3Rpb25zQWNjb3VudCB9IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBCYXNlU2NyYXBlcldpdGhCcm93c2VyLCBMb2dpblJlc3VsdHMsIHR5cGUgUG9zc2libGVMb2dpblJlc3VsdHMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInO1xuXG5jb25zdCBMT0dJTl9VUkwgPSAnaHR0cHM6Ly9sb2dpbi55YWhhdi5jby5pbC9sb2dpbi8nO1xuY29uc3QgQkFTRV9VUkwgPSAnaHR0cHM6Ly9kaWdpdGFsLnlhaGF2LmNvLmlsL0JhTkNTRGlnaXRhbFVJL2FwcC9pbmRleC5odG1sIy8nO1xuY29uc3QgSU5WQUxJRF9ERVRBSUxTX1NFTEVDVE9SID0gJy51aS1kaWFsb2ctYnV0dG9ucyc7XG5jb25zdCBDSEFOR0VfUEFTU1dPUkRfT0xEX1BBU1MgPSAnaW5wdXQjZWZfcmVxX3BhcmFtZXRlcl9vbGRfY3JlZGVudGlhbCc7XG5jb25zdCBCQVNFX1dFTENPTUVfVVJMID0gYCR7QkFTRV9VUkx9bWFpbi9ob21lYDtcblxuY29uc3QgQUNDT1VOVF9JRF9TRUxFQ1RPUiA9ICdzcGFuLnBvcnRmb2xpby12YWx1ZVtuZy1pZj1cIm1haW5Db250cm9sbGVyLmRhdGEucG9ydGZvbGlvTGlzdC5sZW5ndGggPT09IDFcIl0nO1xuY29uc3QgQUNDT1VOVF9ERVRBSUxTX1NFTEVDVE9SID0gJy5hY2NvdW50LWRldGFpbHMnO1xuY29uc3QgREFURV9GT1JNQVQgPSAnREQvTU0vWVlZWSc7XG5cbmNvbnN0IFVTRVJfRUxFTSA9ICcjdXNlcm5hbWUnO1xuY29uc3QgUEFTU1dEX0VMRU0gPSAnI3Bhc3N3b3JkJztcbmNvbnN0IE5BVElPTkFMSURfRUxFTSA9ICcjcGlubm8nO1xuY29uc3QgU1VCTUlUX0xPR0lOX1NFTEVDVE9SID0gJy5idG4nO1xuXG5pbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uIHtcbiAgY3JlZGl0OiBzdHJpbmc7XG4gIGRlYml0OiBzdHJpbmc7XG4gIGRhdGU6IHN0cmluZztcbiAgcmVmZXJlbmNlPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBtZW1vOiBzdHJpbmc7XG4gIHN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcztcbn1cblxuZnVuY3Rpb24gZ2V0UG9zc2libGVMb2dpblJlc3VsdHMocGFnZTogUGFnZSk6IFBvc3NpYmxlTG9naW5SZXN1bHRzIHtcbiAgLy8gY2hlY2tvdXQgZmlsZSBgYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlci50c2AgZm9yIGF2YWlsYWJsZSByZXN1bHQgdHlwZXNcbiAgY29uc3QgdXJsczogUG9zc2libGVMb2dpblJlc3VsdHMgPSB7fTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuU3VjY2Vzc10gPSBbYCR7QkFTRV9XRUxDT01FX1VSTH1gXTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkXSA9IFtcbiAgICBhc3luYyAoKSA9PiB7XG4gICAgICByZXR1cm4gZWxlbWVudFByZXNlbnRPblBhZ2UocGFnZSwgYCR7SU5WQUxJRF9ERVRBSUxTX1NFTEVDVE9SfWApO1xuICAgIH0sXG4gIF07XG5cbiAgdXJsc1tMb2dpblJlc3VsdHMuQ2hhbmdlUGFzc3dvcmRdID0gW1xuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIHJldHVybiBlbGVtZW50UHJlc2VudE9uUGFnZShwYWdlLCBgJHtDSEFOR0VfUEFTU1dPUkRfT0xEX1BBU1N9YCk7XG4gICAgfSxcbiAgXTtcblxuICByZXR1cm4gdXJscztcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QWNjb3VudElEKHBhZ2U6IFBhZ2UpOiBQcm9taXNlPHN0cmluZz4ge1xuICB0cnkge1xuICAgIGNvbnN0IHNlbGVjdGVkU25pZkFjY291bnQgPSBhd2FpdCBwYWdlLiRldmFsKEFDQ09VTlRfSURfU0VMRUNUT1IsIChlbGVtZW50OiBFbGVtZW50KSA9PiB7XG4gICAgICByZXR1cm4gZWxlbWVudC50ZXh0Q29udGVudCBhcyBzdHJpbmc7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gc2VsZWN0ZWRTbmlmQWNjb3VudDtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zdCBlcnJvck1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcik7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYEZhaWxlZCB0byByZXRyaWV2ZSBhY2NvdW50IElELiBQb3NzaWJsZSBvdXRkYXRlZCBzZWxlY3RvciAnJHtBQ0NPVU5UX0lEX1NFTEVDVE9SfTogJHtlcnJvck1lc3NhZ2V9YCxcbiAgICApO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEFtb3VudERhdGEoYW1vdW50U3RyOiBzdHJpbmcpIHtcbiAgY29uc3QgYW1vdW50U3RyQ29weSA9IGFtb3VudFN0ci5yZXBsYWNlKCcsJywgJycpO1xuICByZXR1cm4gcGFyc2VGbG9hdChhbW91bnRTdHJDb3B5KTtcbn1cblxuZnVuY3Rpb24gZ2V0VHhuQW1vdW50KHR4bjogU2NyYXBlZFRyYW5zYWN0aW9uKSB7XG4gIGNvbnN0IGNyZWRpdCA9IGdldEFtb3VudERhdGEodHhuLmNyZWRpdCk7XG4gIGNvbnN0IGRlYml0ID0gZ2V0QW1vdW50RGF0YSh0eG4uZGViaXQpO1xuICByZXR1cm4gKE51bWJlci5pc05hTihjcmVkaXQpID8gMCA6IGNyZWRpdCkgLSAoTnVtYmVyLmlzTmFOKGRlYml0KSA/IDAgOiBkZWJpdCk7XG59XG5cbnR5cGUgVHJhbnNhY3Rpb25zVHIgPSB7IGlkOiBzdHJpbmc7IGlubmVyRGl2czogc3RyaW5nW10gfTtcblxuZnVuY3Rpb24gY29udmVydFRyYW5zYWN0aW9ucyh0eG5zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXSk6IFRyYW5zYWN0aW9uW10ge1xuICByZXR1cm4gdHhucy5tYXAodHhuID0+IHtcbiAgICBjb25zdCBjb252ZXJ0ZWREYXRlID0gbW9tZW50KHR4bi5kYXRlLCBEQVRFX0ZPUk1BVCkudG9JU09TdHJpbmcoKTtcbiAgICBjb25zdCBjb252ZXJ0ZWRBbW91bnQgPSBnZXRUeG5BbW91bnQodHhuKTtcbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWwsXG4gICAgICBpZGVudGlmaWVyOiB0eG4ucmVmZXJlbmNlID8gcGFyc2VJbnQodHhuLnJlZmVyZW5jZSwgMTApIDogdW5kZWZpbmVkLFxuICAgICAgZGF0ZTogY29udmVydGVkRGF0ZSxcbiAgICAgIHByb2Nlc3NlZERhdGU6IGNvbnZlcnRlZERhdGUsXG4gICAgICBvcmlnaW5hbEFtb3VudDogY29udmVydGVkQW1vdW50LFxuICAgICAgb3JpZ2luYWxDdXJyZW5jeTogU0hFS0VMX0NVUlJFTkNZLFxuICAgICAgY2hhcmdlZEFtb3VudDogY29udmVydGVkQW1vdW50LFxuICAgICAgc3RhdHVzOiB0eG4uc3RhdHVzLFxuICAgICAgZGVzY3JpcHRpb246IHR4bi5kZXNjcmlwdGlvbixcbiAgICAgIG1lbW86IHR4bi5tZW1vLFxuICAgIH07XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVUcmFuc2FjdGlvblJvdyh0eG5zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXSwgdHhuUm93OiBUcmFuc2FjdGlvbnNUcikge1xuICBjb25zdCBkaXYgPSB0eG5Sb3cuaW5uZXJEaXZzO1xuXG4gIC8vIFJlbW92ZSBhbnl0aGluZyBleGNlcHQgZGlnaXRzLlxuICBjb25zdCByZWdleCA9IC9cXEQrL2dtO1xuXG4gIGNvbnN0IHR4OiBTY3JhcGVkVHJhbnNhY3Rpb24gPSB7XG4gICAgZGF0ZTogZGl2WzFdLFxuICAgIHJlZmVyZW5jZTogZGl2WzJdLnJlcGxhY2UocmVnZXgsICcnKSxcbiAgICBtZW1vOiAnJyxcbiAgICBkZXNjcmlwdGlvbjogZGl2WzNdLFxuICAgIGRlYml0OiBkaXZbNF0sXG4gICAgY3JlZGl0OiBkaXZbNV0sXG4gICAgc3RhdHVzOiBUcmFuc2FjdGlvblN0YXR1c2VzLkNvbXBsZXRlZCxcbiAgfTtcblxuICB0eG5zLnB1c2godHgpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBY2NvdW50VHJhbnNhY3Rpb25zKHBhZ2U6IFBhZ2UpOiBQcm9taXNlPFRyYW5zYWN0aW9uW10+IHtcbiAgLy8gV2FpdCBmb3IgdHJhbnNhY3Rpb25zLlxuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJy51bmRlci1saW5lLXR4bi10YWJsZS1oZWFkZXInLCB0cnVlKTtcblxuICBjb25zdCB0eG5zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXSA9IFtdO1xuICBjb25zdCB0cmFuc2FjdGlvbnNEaXZzID0gYXdhaXQgcGFnZUV2YWxBbGw8VHJhbnNhY3Rpb25zVHJbXT4oXG4gICAgcGFnZSxcbiAgICAnLmxpc3QtaXRlbS1ob2xkZXIgLmVudGlyZS1jb250ZW50LWN0cicsXG4gICAgW10sXG4gICAgZGl2cyA9PiB7XG4gICAgICByZXR1cm4gKGRpdnMgYXMgSFRNTEVsZW1lbnRbXSkubWFwKGRpdiA9PiAoe1xuICAgICAgICBpZDogZGl2LmdldEF0dHJpYnV0ZSgnaWQnKSB8fCAnJyxcbiAgICAgICAgaW5uZXJEaXZzOiBBcnJheS5mcm9tKGRpdi5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2JykpLm1hcChlbCA9PiAoZWwgYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dCksXG4gICAgICB9KSk7XG4gICAgfSxcbiAgKTtcblxuICBmb3IgKGNvbnN0IHR4blJvdyBvZiB0cmFuc2FjdGlvbnNEaXZzKSB7XG4gICAgaGFuZGxlVHJhbnNhY3Rpb25Sb3codHhucywgdHhuUm93KTtcbiAgfVxuXG4gIHJldHVybiBjb252ZXJ0VHJhbnNhY3Rpb25zKHR4bnMpO1xufVxuXG4vLyBNYW5pcHVsYXRlIHRoZSBjYWxlbmRhciBkcm9wIGRvd24gdG8gY2hvb3NlIHRoZSB0eHMgc3RhcnQgZGF0ZS5cbmFzeW5jIGZ1bmN0aW9uIHNlYXJjaEJ5RGF0ZXMocGFnZTogUGFnZSwgc3RhcnREYXRlOiBNb21lbnQpIHtcbiAgLy8gR2V0IHRoZSBkYXkgbnVtYmVyIGZyb20gc3RhcnREYXRlLiAxLTMxICh1c3VhbGx5IDEpXG4gIGNvbnN0IHN0YXJ0RGF0ZURheSA9IHN0YXJ0RGF0ZS5mb3JtYXQoJ0QnKTtcbiAgY29uc3Qgc3RhcnREYXRlTW9udGggPSBzdGFydERhdGUuZm9ybWF0KCdNJyk7XG4gIGNvbnN0IHN0YXJ0RGF0ZVllYXIgPSBzdGFydERhdGUuZm9ybWF0KCdZJyk7XG5cbiAgLy8gT3BlbiB0aGUgY2FsZW5kYXIgZGF0ZSBwaWNrZXJcbiAgY29uc3QgZGF0ZUZyb21QaWNrID1cbiAgICAnZGl2LmRhdGUtb3B0aW9ucy1jZWxsOm50aC1jaGlsZCg3KSA+IGRhdGUtcGlja2VyOm50aC1jaGlsZCgxKSA+IGRpdjpudGgtY2hpbGQoMSkgPiBzcGFuOm50aC1jaGlsZCgyKSc7XG4gIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCBkYXRlRnJvbVBpY2ssIHRydWUpO1xuICBhd2FpdCBjbGlja0J1dHRvbihwYWdlLCBkYXRlRnJvbVBpY2spO1xuXG4gIC8vIFdhaXQgdW50aWwgZmlyc3QgZGF5IGFwcGVhci5cbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICcucG11LWRheXMgPiBkaXY6bnRoLWNoaWxkKDEpJywgdHJ1ZSk7XG5cbiAgLy8gT3BlbiBNb250aHMgb3B0aW9ucy5cbiAgY29uc3QgbW9udGhGcm9tUGljayA9ICcucG11LW1vbnRoJztcbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsIG1vbnRoRnJvbVBpY2ssIHRydWUpO1xuICBhd2FpdCBjbGlja0J1dHRvbihwYWdlLCBtb250aEZyb21QaWNrKTtcbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICcucG11LW1vbnRocyA+IGRpdjpudGgtY2hpbGQoMSknLCB0cnVlKTtcblxuICAvLyBPcGVuIFllYXIgb3B0aW9ucy5cbiAgLy8gVXNlIHNhbWUgc2VsZWN0b3IuLi4gWWFoYXYga25vd3Mgd2h5Li4uXG4gIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCBtb250aEZyb21QaWNrLCB0cnVlKTtcbiAgYXdhaXQgY2xpY2tCdXR0b24ocGFnZSwgbW9udGhGcm9tUGljayk7XG4gIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCAnLnBtdS15ZWFycyA+IGRpdjpudGgtY2hpbGQoMSknLCB0cnVlKTtcblxuICAvLyBTZWxlY3QgeWVhciBmcm9tIGEgMTIgeWVhciBncmlkLlxuICBmb3IgKGxldCBpID0gMTsgaSA8IDEzOyBpICs9IDEpIHtcbiAgICBjb25zdCBzZWxlY3RvciA9IGAucG11LXllYXJzID4gZGl2Om50aC1jaGlsZCgke2l9KWA7XG4gICAgY29uc3QgeWVhciA9IGF3YWl0IHBhZ2UuJGV2YWwoc2VsZWN0b3IsIHkgPT4ge1xuICAgICAgcmV0dXJuICh5IGFzIEhUTUxFbGVtZW50KS5pbm5lclRleHQ7XG4gICAgfSk7XG4gICAgaWYgKHN0YXJ0RGF0ZVllYXIgPT09IHllYXIpIHtcbiAgICAgIGF3YWl0IGNsaWNrQnV0dG9uKHBhZ2UsIHNlbGVjdG9yKTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNlbGVjdCBNb250aC5cbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICcucG11LW1vbnRocyA+IGRpdjpudGgtY2hpbGQoMSknLCB0cnVlKTtcbiAgLy8gVGhlIGZpcnN0IGVsZW1lbnQgKDEpIGlzIEphbnVhcnkuXG4gIGNvbnN0IG1vbnRoU2VsZWN0b3IgPSBgLnBtdS1tb250aHMgPiBkaXY6bnRoLWNoaWxkKCR7c3RhcnREYXRlTW9udGh9KWA7XG4gIGF3YWl0IGNsaWNrQnV0dG9uKHBhZ2UsIG1vbnRoU2VsZWN0b3IpO1xuXG4gIC8vIFNlbGVjdCBEYXkuXG4gIC8vIFRoZSBjYWxlbmRhciBncmlkIHNob3dzIDcgZGF5cyBhbmQgNiB3ZWVrcyA9IDQyIGRheXMuXG4gIC8vIEluIHRoZW9yeSwgdGhlIGZpcnN0IGRheSBvZiB0aGUgbW9udGggd2lsbCBiZSBpbiB0aGUgZmlyc3Qgcm93LlxuICAvLyBMZXQncyBjaGVjayBldmVyeXRoaW5nIGp1c3QgaW4gY2FzZS4uLlxuICBmb3IgKGxldCBpID0gMTsgaSA8IDQyOyBpICs9IDEpIHtcbiAgICBjb25zdCBzZWxlY3RvciA9IGAucG11LWRheXMgPiBkaXY6bnRoLWNoaWxkKCR7aX0pYDtcbiAgICBjb25zdCBkYXkgPSBhd2FpdCBwYWdlLiRldmFsKHNlbGVjdG9yLCBkID0+IHtcbiAgICAgIHJldHVybiAoZCBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0O1xuICAgIH0pO1xuXG4gICAgaWYgKHN0YXJ0RGF0ZURheSA9PT0gZGF5KSB7XG4gICAgICBhd2FpdCBjbGlja0J1dHRvbihwYWdlLCBzZWxlY3Rvcik7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hBY2NvdW50RGF0YShwYWdlOiBQYWdlLCBzdGFydERhdGU6IE1vbWVudCwgYWNjb3VudElEOiBzdHJpbmcpOiBQcm9taXNlPFRyYW5zYWN0aW9uc0FjY291bnQ+IHtcbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudERpc2FwcGVhcihwYWdlLCAnLmxvYWRpbmctYmFyLXNwaW5uZXInKTtcbiAgYXdhaXQgc2VhcmNoQnlEYXRlcyhwYWdlLCBzdGFydERhdGUpO1xuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50RGlzYXBwZWFyKHBhZ2UsICcubG9hZGluZy1iYXItc3Bpbm5lcicpO1xuICBjb25zdCB0eG5zID0gYXdhaXQgZ2V0QWNjb3VudFRyYW5zYWN0aW9ucyhwYWdlKTtcblxuICByZXR1cm4ge1xuICAgIGFjY291bnROdW1iZXI6IGFjY291bnRJRCxcbiAgICB0eG5zLFxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaEFjY291bnRzKHBhZ2U6IFBhZ2UsIHN0YXJ0RGF0ZTogTW9tZW50KTogUHJvbWlzZTxUcmFuc2FjdGlvbnNBY2NvdW50W10+IHtcbiAgY29uc3QgYWNjb3VudHM6IFRyYW5zYWN0aW9uc0FjY291bnRbXSA9IFtdO1xuXG4gIC8vIFRPRE86IGdldCBtb3JlIGFjY291bnRzLiBOb3Qgc3VyZSBpcyBzdXBwb3J0ZWQuXG4gIGNvbnN0IGFjY291bnRJRCA9IGF3YWl0IGdldEFjY291bnRJRChwYWdlKTtcbiAgY29uc3QgYWNjb3VudERhdGEgPSBhd2FpdCBmZXRjaEFjY291bnREYXRhKHBhZ2UsIHN0YXJ0RGF0ZSwgYWNjb3VudElEKTtcbiAgYWNjb3VudHMucHVzaChhY2NvdW50RGF0YSk7XG5cbiAgcmV0dXJuIGFjY291bnRzO1xufVxuXG5hc3luYyBmdW5jdGlvbiB3YWl0UmVhZGluZXNzRm9yQWxsKHBhZ2U6IFBhZ2UpIHtcbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsIGAke1VTRVJfRUxFTX1gLCB0cnVlKTtcbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsIGAke1BBU1NXRF9FTEVNfWAsIHRydWUpO1xuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgYCR7TkFUSU9OQUxJRF9FTEVNfWAsIHRydWUpO1xuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgYCR7U1VCTUlUX0xPR0lOX1NFTEVDVE9SfWAsIHRydWUpO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZWRpcmVjdE9yRGlhbG9nKHBhZ2U6IFBhZ2UpIHtcbiAgLy8gQ2xpY2sgb24gYmFuayBtZXNzYWdlcyBpZiBhbnkuXG4gIGF3YWl0IHdhaXRGb3JOYXZpZ2F0aW9uKHBhZ2UpO1xuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50RGlzYXBwZWFyKHBhZ2UsICcubG9hZGluZy1iYXItc3Bpbm5lcicpO1xuICBjb25zdCBoYXNNZXNzYWdlID0gYXdhaXQgZWxlbWVudFByZXNlbnRPblBhZ2UocGFnZSwgJy5tZXNzYWdpbmctbGlua3MtY29udGFpbmVyJyk7XG4gIGlmIChoYXNNZXNzYWdlKSB7XG4gICAgYXdhaXQgY2xpY2tCdXR0b24ocGFnZSwgJy5saW5rLTEnKTtcbiAgfVxuXG4gIGNvbnN0IHByb21pc2UxID0gcGFnZS53YWl0Rm9yU2VsZWN0b3IoQUNDT1VOVF9ERVRBSUxTX1NFTEVDVE9SLCB7IHRpbWVvdXQ6IDMwMDAwIH0pO1xuICBjb25zdCBwcm9taXNlMiA9IHBhZ2Uud2FpdEZvclNlbGVjdG9yKENIQU5HRV9QQVNTV09SRF9PTERfUEFTUywgeyB0aW1lb3V0OiAzMDAwMCB9KTtcbiAgY29uc3QgcHJvbWlzZXMgPSBbcHJvbWlzZTEsIHByb21pc2UyXTtcblxuICBhd2FpdCBQcm9taXNlLnJhY2UocHJvbWlzZXMpO1xuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50RGlzYXBwZWFyKHBhZ2UsICcubG9hZGluZy1iYXItc3Bpbm5lcicpO1xufVxuXG50eXBlIFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzID0geyB1c2VybmFtZTogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nOyBuYXRpb25hbElEOiBzdHJpbmcgfTtcblxuY2xhc3MgWWFoYXZTY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXJXaXRoQnJvd3NlcjxTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscz4ge1xuICBnZXRMb2dpbk9wdGlvbnMoY3JlZGVudGlhbHM6IFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvZ2luVXJsOiBgJHtMT0dJTl9VUkx9YCxcbiAgICAgIGZpZWxkczogW1xuICAgICAgICB7IHNlbGVjdG9yOiBgJHtVU0VSX0VMRU19YCwgdmFsdWU6IGNyZWRlbnRpYWxzLnVzZXJuYW1lIH0sXG4gICAgICAgIHsgc2VsZWN0b3I6IGAke1BBU1NXRF9FTEVNfWAsIHZhbHVlOiBjcmVkZW50aWFscy5wYXNzd29yZCB9LFxuICAgICAgICB7IHNlbGVjdG9yOiBgJHtOQVRJT05BTElEX0VMRU19YCwgdmFsdWU6IGNyZWRlbnRpYWxzLm5hdGlvbmFsSUQgfSxcbiAgICAgIF0sXG4gICAgICBzdWJtaXRCdXR0b25TZWxlY3RvcjogYCR7U1VCTUlUX0xPR0lOX1NFTEVDVE9SfWAsXG4gICAgICBjaGVja1JlYWRpbmVzczogYXN5bmMgKCkgPT4gd2FpdFJlYWRpbmVzc0ZvckFsbCh0aGlzLnBhZ2UpLFxuICAgICAgcG9zdEFjdGlvbjogYXN5bmMgKCkgPT4gcmVkaXJlY3RPckRpYWxvZyh0aGlzLnBhZ2UpLFxuICAgICAgcG9zc2libGVSZXN1bHRzOiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyh0aGlzLnBhZ2UpLFxuICAgIH07XG4gIH1cblxuICBhc3luYyBmZXRjaERhdGEoKSB7XG4gICAgLy8gR290byBzdGF0ZW1lbnRzIHBhZ2VcbiAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCBBQ0NPVU5UX0RFVEFJTFNfU0VMRUNUT1IsIHRydWUpO1xuICAgIGF3YWl0IGNsaWNrQnV0dG9uKHRoaXMucGFnZSwgQUNDT1VOVF9ERVRBSUxTX1NFTEVDVE9SKTtcbiAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCAnLnN0YXRlbWVudC1vcHRpb25zIC5zZWxlY3RlZC1pdGVtLXRvcCcsIHRydWUpO1xuXG4gICAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMywgJ21vbnRocycpLmFkZCgxLCAnZGF5Jyk7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSB8fCBkZWZhdWx0U3RhcnRNb21lbnQudG9EYXRlKCk7XG4gICAgY29uc3Qgc3RhcnRNb21lbnQgPSBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xuXG4gICAgY29uc3QgYWNjb3VudHMgPSBhd2FpdCBmZXRjaEFjY291bnRzKHRoaXMucGFnZSwgc3RhcnRNb21lbnQpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICBhY2NvdW50cyxcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFlhaGF2U2NyYXBlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsVUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFB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
|