israeli-bank-scrapers-core 6.6.0 → 6.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/helpers/transactions.d.ts +9 -0
- package/lib/helpers/transactions.js +38 -1
- package/lib/scrapers/base-beinleumi-group.js +7 -6
- package/lib/scrapers/base-isracard-amex.js +4 -3
- package/lib/scrapers/behatsdaa.js +6 -5
- package/lib/scrapers/beyahad-bishvilha.js +2 -2
- package/lib/scrapers/discount.js +7 -6
- package/lib/scrapers/hapoalim.js +5 -3
- package/lib/scrapers/leumi.js +9 -8
- package/lib/scrapers/max.js +2 -2
- package/lib/scrapers/mizrahi.js +6 -2
- package/lib/scrapers/one-zero.js +6 -5
- package/lib/scrapers/union-bank.js +7 -6
- package/lib/scrapers/visa-cal.js +2 -2
- package/lib/scrapers/yahav.js +6 -5
- package/package.json +1 -1
package/lib/scrapers/one-zero.js
CHANGED
|
@@ -7,7 +7,8 @@ exports.default = void 0;
|
|
|
7
7
|
var _moment = _interopRequireDefault(require("moment/moment"));
|
|
8
8
|
var _debug = require("../helpers/debug");
|
|
9
9
|
var _fetch = require("../helpers/fetch");
|
|
10
|
-
var _transactions = require("../transactions");
|
|
10
|
+
var _transactions = require("../helpers/transactions");
|
|
11
|
+
var _transactions2 = require("../transactions");
|
|
11
12
|
var _baseScraper = require("./base-scraper");
|
|
12
13
|
var _errors = require("./errors");
|
|
13
14
|
var _oneZeroQueries = require("./one-zero-queries");
|
|
@@ -180,11 +181,11 @@ class OneZeroScraper extends _baseScraper.BaseScraper {
|
|
|
180
181
|
originalCurrency: movement.movementCurrency,
|
|
181
182
|
description: this.sanitizeHebrew(movement.description),
|
|
182
183
|
processedDate: movement.movementTimestamp,
|
|
183
|
-
status:
|
|
184
|
-
type: hasInstallments ?
|
|
184
|
+
status: _transactions2.TransactionStatuses.Completed,
|
|
185
|
+
type: hasInstallments ? _transactions2.TransactionTypes.Installments : _transactions2.TransactionTypes.Normal
|
|
185
186
|
};
|
|
186
187
|
if (this.options?.includeRawTransaction) {
|
|
187
|
-
result.rawTransaction = movement;
|
|
188
|
+
result.rawTransaction = (0, _transactions.getRawTransaction)(movement);
|
|
188
189
|
}
|
|
189
190
|
return result;
|
|
190
191
|
})
|
|
@@ -239,4 +240,4 @@ class OneZeroScraper extends _baseScraper.BaseScraper {
|
|
|
239
240
|
}
|
|
240
241
|
}
|
|
241
242
|
exports.default = OneZeroScraper;
|
|
242
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZGVidWciLCJfZmV0Y2giLCJfdHJhbnNhY3Rpb25zIiwiX2Jhc2VTY3JhcGVyIiwiX2Vycm9ycyIsIl9vbmVaZXJvUXVlcmllcyIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIkhFQlJFV19XT1JEU19SRUdFWCIsImRlYnVnIiwiZ2V0RGVidWciLCJJREVOVElUWV9TRVJWRVJfVVJMIiwiR1JBUEhRTF9BUElfVVJMIiwiT25lWmVyb1NjcmFwZXIiLCJCYXNlU2NyYXBlciIsInRyaWdnZXJUd29GYWN0b3JBdXRoIiwicGhvbmVOdW1iZXIiLCJzdGFydHNXaXRoIiwiY3JlYXRlR2VuZXJpY0Vycm9yIiwiZGV2aWNlVG9rZW5SZXNwb25zZSIsImZldGNoUG9zdCIsImV4dENsaWVudElkIiwib3MiLCJyZXN1bHREYXRhIiwiZGV2aWNlVG9rZW4iLCJvdHBQcmVwYXJlUmVzcG9uc2UiLCJmYWN0b3JWYWx1ZSIsIm90cENoYW5uZWwiLCJvdHBDb250ZXh0Iiwic3VjY2VzcyIsImdldExvbmdUZXJtVHdvRmFjdG9yVG9rZW4iLCJvdHBDb2RlIiwib3RwVmVyaWZ5UmVzcG9uc2UiLCJvdHBUb2tlbiIsImxvbmdUZXJtVHdvRmFjdG9yQXV0aFRva2VuIiwicmVzb2x2ZU90cFRva2VuIiwiY3JlZGVudGlhbHMiLCJvdHBMb25nVGVybVRva2VuIiwib3RwQ29kZVJldHJpZXZlciIsImVycm9yVHlwZSIsIlNjcmFwZXJFcnJvclR5cGVzIiwiVHdvRmFjdG9yUmV0cmlldmVyTWlzc2luZyIsImVycm9yTWVzc2FnZSIsInRyaWdnZXJSZXN1bHQiLCJvdHBUb2tlblJlc3VsdCIsImxvZ2luIiwiZ2V0SWRUb2tlblJlc3BvbnNlIiwib3RwU21zVG9rZW4iLCJlbWFpbCIsInBhc3MiLCJwYXNzd29yZCIsInBpbkNvZGUiLCJpZFRva2VuIiwiZ2V0U2Vzc2lvblRva2VuUmVzcG9uc2UiLCJhY2Nlc3NUb2tlbiIsInBlcnNpc3RlbnRPdHBUb2tlbiIsImZldGNoUG9ydGZvbGlvTW92ZW1lbnRzIiwicG9ydGZvbGlvIiwic3RhcnREYXRlIiwiYWNjb3VudCIsImFjY291bnRzIiwiY3Vyc29yIiwibW92ZW1lbnRzIiwibGVuZ3RoIiwiRGF0ZSIsIm1vdmVtZW50VGltZXN0YW1wIiwicG9ydGZvbGlvTnVtIiwibmV3TW92ZW1lbnRzIiwicGFnaW5hdGlvbiIsImZldGNoR3JhcGhxbCIsIkdFVF9NT1ZFTUVOVFMiLCJwb3J0Zm9saW9JZCIsImFjY291bnRJZCIsImxhbmd1YWdlIiwibGltaXQiLCJhdXRob3JpemF0aW9uIiwidW5zaGlmdCIsImhhc01vcmUiLCJzb3J0IiwieCIsInkiLCJ2YWx1ZU9mIiwibWF0Y2hpbmdNb3ZlbWVudHMiLCJmaWx0ZXIiLCJtb3ZlbWVudCIsImFjY291bnROdW1iZXIiLCJiYWxhbmNlIiwicGFyc2VGbG9hdCIsInJ1bm5pbmdCYWxhbmNlIiwidHhucyIsIm1hcCIsImhhc0luc3RhbGxtZW50cyIsInRyYW5zYWN0aW9uIiwiZW5yaWNobWVudCIsInJlY3VycmVuY2VzIiwic29tZSIsImlzUmVjdXJyZW50IiwibW9kaWZpZXIiLCJjcmVkaXREZWJpdCIsInJlc3VsdCIsImlkZW50aWZpZXIiLCJtb3ZlbWVudElkIiwiZGF0ZSIsInZhbHVlRGF0ZSIsImNoYXJnZWRBbW91bnQiLCJtb3ZlbWVudEFtb3VudCIsImNoYXJnZWRDdXJyZW5jeSIsIm1vdmVtZW50Q3VycmVuY3kiLCJvcmlnaW5hbEFtb3VudCIsIm9yaWdpbmFsQ3VycmVuY3kiLCJkZXNjcmlwdGlvbiIsInNhbml0aXplSGVicmV3IiwicHJvY2Vzc2VkRGF0ZSIsInN0YXR1cyIsIlRyYW5zYWN0aW9uU3RhdHVzZXMiLCJDb21wbGV0ZWQiLCJ0eXBlIiwiVHJhbnNhY3Rpb25UeXBlcyIsIkluc3RhbGxtZW50cyIsIk5vcm1hbCIsIm9wdGlvbnMiLCJpbmNsdWRlUmF3VHJhbnNhY3Rpb24iLCJyYXdUcmFuc2FjdGlvbiIsInRleHQiLCJpbmNsdWRlcyIsInRyaW0iLCJwbGFpblN0cmluZyIsInJlcGxhY2UiLCJoZWJyZXdTdWJTdHJpbmdzUmFuZ2VzIiwibWF0Y2hBbGwiLCJyYW5nZXNUb1JldmVyc2UiLCJzdHIiLCJzdGFydCIsImluZGV4IiwiZW5kIiwib3V0IiwicHVzaCIsInN1YnN0cmluZyIsInJldmVyc2VkIiwicmV2ZXJzZSIsImpvaW4iLCJmZXRjaERhdGEiLCJkZWZhdWx0U3RhcnRNb21lbnQiLCJtb21lbnQiLCJzdWJ0cmFjdCIsImFkZCIsInRvRGF0ZSIsInN0YXJ0TW9tZW50IiwibWF4IiwiR0VUX0NVU1RPTUVSIiwicG9ydGZvbGlvcyIsImN1c3RvbWVyIiwiZmxhdE1hcCIsIlByb21pc2UiLCJhbGwiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL29uZS16ZXJvLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50L21vbWVudCc7XG5pbXBvcnQgeyBnZXREZWJ1ZyB9IGZyb20gJy4uL2hlbHBlcnMvZGVidWcnO1xuaW1wb3J0IHsgZmV0Y2hHcmFwaHFsLCBmZXRjaFBvc3QgfSBmcm9tICcuLi9oZWxwZXJzL2ZldGNoJztcbmltcG9ydCB7XG4gIHR5cGUgVHJhbnNhY3Rpb24gYXMgU2NyYXBpbmdUcmFuc2FjdGlvbixcbiAgVHJhbnNhY3Rpb25TdGF0dXNlcyxcbiAgVHJhbnNhY3Rpb25UeXBlcyxcbiAgdHlwZSBUcmFuc2FjdGlvbnNBY2NvdW50LFxufSBmcm9tICcuLi90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgQmFzZVNjcmFwZXIgfSBmcm9tICcuL2Jhc2Utc2NyYXBlcic7XG5pbXBvcnQgeyBTY3JhcGVyRXJyb3JUeXBlcywgY3JlYXRlR2VuZXJpY0Vycm9yIH0gZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IHtcbiAgdHlwZSBTY3JhcGVyR2V0TG9uZ1Rlcm1Ud29GYWN0b3JUb2tlblJlc3VsdCxcbiAgdHlwZSBTY3JhcGVyTG9naW5SZXN1bHQsXG4gIHR5cGUgU2NyYXBlclNjcmFwaW5nUmVzdWx0LFxuICB0eXBlIFNjcmFwZXJUd29GYWN0b3JBdXRoVHJpZ2dlclJlc3VsdCxcbn0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuaW1wb3J0IHsgR0VUX0NVU1RPTUVSLCBHRVRfTU9WRU1FTlRTIH0gZnJvbSAnLi9vbmUtemVyby1xdWVyaWVzJztcblxuY29uc3QgSEVCUkVXX1dPUkRTX1JFR0VYID0gL1tcXHUwNTkwLVxcdTA1RkZdW1xcdTA1OTAtXFx1MDVGRlwiJ1xcLV8gL1xcXFxdKltcXHUwNTkwLVxcdTA1RkZdL2c7XG5cbmNvbnN0IGRlYnVnID0gZ2V0RGVidWcoJ29uZS16ZXJvJyk7XG5cbnR5cGUgQWNjb3VudCA9IHtcbiAgYWNjb3VudElkOiBzdHJpbmc7XG59O1xuXG50eXBlIFBvcnRmb2xpbyA9IHtcbiAgYWNjb3VudHM6IEFycmF5PEFjY291bnQ+O1xuICBwb3J0Zm9saW9JZDogc3RyaW5nO1xuICBwb3J0Zm9saW9OdW06IHN0cmluZztcbn07XG5cbnR5cGUgQ3VzdG9tZXIgPSB7XG4gIGN1c3RvbWVySWQ6IHN0cmluZztcbiAgcG9ydGZvbGlvcz86IEFycmF5PFBvcnRmb2xpbz4gfCBudWxsO1xufTtcblxuZXhwb3J0IHR5cGUgQ2F0ZWdvcnkgPSB7XG4gIGNhdGVnb3J5SWQ6IG51bWJlcjtcbiAgZGF0YVNvdXJjZTogc3RyaW5nO1xuICBzdWJDYXRlZ29yeUlkPzogbnVtYmVyIHwgbnVsbDtcbn07XG5cbmV4cG9ydCB0eXBlIFJlY3VycmVuY2UgPSB7XG4gIGRhdGFTb3VyY2U6IHN0cmluZztcbiAgaXNSZWN1cnJlbnQ6IGJvb2xlYW47XG59O1xuXG50eXBlIFRyYW5zYWN0aW9uRW5yaWNobWVudCA9IHtcbiAgY2F0ZWdvcmllcz86IENhdGVnb3J5W10gfCBudWxsO1xuICByZWN1cnJlbmNlcz86IFJlY3VycmVuY2VbXSB8IG51bGw7XG59O1xuXG50eXBlIFRyYW5zYWN0aW9uID0ge1xuICBlbnJpY2htZW50PzogVHJhbnNhY3Rpb25FbnJpY2htZW50IHwgbnVsbDtcbiAgLy8gVE9ETzogR2V0IGluc3RhbGxtZW50cyBpbmZvcm1hdGlvbiBoZXJlXG4gIC8vIHRyYW5zYWN0aW9uRGV0YWlsczogVHJhbnNhY3Rpb25EZXRhaWxzO1xufTtcblxudHlwZSBNb3ZlbWVudCA9IHtcbiAgYWNjb3VudElkOiBzdHJpbmc7XG4gIGJhbmtDdXJyZW5jeUFtb3VudDogc3RyaW5nO1xuICBib29raW5nRGF0ZTogc3RyaW5nO1xuICBjb252ZXJzaW9uUmF0ZTogc3RyaW5nO1xuICBjcmVkaXREZWJpdDogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBpc1JldmVyc2VkOiBib29sZWFuO1xuICBtb3ZlbWVudEFtb3VudDogc3RyaW5nO1xuICBtb3ZlbWVudEN1cnJlbmN5OiBzdHJpbmc7XG4gIG1vdmVtZW50SWQ6IHN0cmluZztcbiAgbW92ZW1lbnRSZXZlcnNlZElkPzogc3RyaW5nIHwgbnVsbDtcbiAgbW92ZW1lbnRUaW1lc3RhbXA6IHN0cmluZztcbiAgbW92ZW1lbnRUeXBlOiBzdHJpbmc7XG4gIHBvcnRmb2xpb0lkOiBzdHJpbmc7XG4gIHJ1bm5pbmdCYWxhbmNlOiBzdHJpbmc7XG4gIHRyYW5zYWN0aW9uPzogVHJhbnNhY3Rpb24gfCBudWxsO1xuICB2YWx1ZURhdGU6IHN0cmluZztcbn07XG5cbnR5cGUgUXVlcnlQYWdpbmF0aW9uID0geyBoYXNNb3JlOiBib29sZWFuOyBjdXJzb3I6IHN0cmluZyB9O1xuXG5jb25zdCBJREVOVElUWV9TRVJWRVJfVVJMID0gJ2h0dHBzOi8vaWRlbnRpdHkudGZkLWJhbmsuY29tL3YxLyc7XG5cbmNvbnN0IEdSQVBIUUxfQVBJX1VSTCA9ICdodHRwczovL21vYmlsZS50ZmQtYmFuay5jb20vbW9iaWxlLWdyYXBoL2dyYXBocWwnO1xuXG50eXBlIFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzID0geyBlbWFpbDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH0gJiAoXG4gIHwge1xuICAgICAgb3RwQ29kZVJldHJpZXZlcjogKCkgPT4gUHJvbWlzZTxzdHJpbmc+O1xuICAgICAgcGhvbmVOdW1iZXI6IHN0cmluZztcbiAgICB9XG4gIHwge1xuICAgICAgb3RwTG9uZ1Rlcm1Ub2tlbjogc3RyaW5nO1xuICAgIH1cbik7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE9uZVplcm9TY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXI8U2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHM+IHtcbiAgcHJpdmF0ZSBvdHBDb250ZXh0Pzogc3RyaW5nO1xuXG4gIHByaXZhdGUgYWNjZXNzVG9rZW4/OiBzdHJpbmc7XG5cbiAgYXN5bmMgdHJpZ2dlclR3b0ZhY3RvckF1dGgocGhvbmVOdW1iZXI6IHN0cmluZyk6IFByb21pc2U8U2NyYXBlclR3b0ZhY3RvckF1dGhUcmlnZ2VyUmVzdWx0PiB7XG4gICAgaWYgKCFwaG9uZU51bWJlci5zdGFydHNXaXRoKCcrJykpIHtcbiAgICAgIHJldHVybiBjcmVhdGVHZW5lcmljRXJyb3IoXG4gICAgICAgICdBIGZ1bGwgaW50ZXJuYXRpb25hbCBwaG9uZSBudW1iZXIgc3RhcnRpbmcgd2l0aCArIGFuZCBhIHRocmVlIGRpZ2l0IGNvdW50cnkgY29kZSBpcyByZXF1aXJlZCcsXG4gICAgICApO1xuICAgIH1cblxuICAgIGRlYnVnKCdGZXRjaGluZyBkZXZpY2UgdG9rZW4nKTtcbiAgICBjb25zdCBkZXZpY2VUb2tlblJlc3BvbnNlID0gYXdhaXQgZmV0Y2hQb3N0KGAke0lERU5USVRZX1NFUlZFUl9VUkx9L2RldmljZXMvdG9rZW5gLCB7XG4gICAgICBleHRDbGllbnRJZDogJ21vYmlsZScsXG4gICAgICBvczogJ0FuZHJvaWQnLFxuICAgIH0pO1xuXG4gICAgY29uc3Qge1xuICAgICAgcmVzdWx0RGF0YTogeyBkZXZpY2VUb2tlbiB9LFxuICAgIH0gPSBkZXZpY2VUb2tlblJlc3BvbnNlO1xuXG4gICAgZGVidWcoYFNlbmRpbmcgT1RQIHRvIHBob25lIG51bWJlciAke3Bob25lTnVtYmVyfWApO1xuXG4gICAgY29uc3Qgb3RwUHJlcGFyZVJlc3BvbnNlID0gYXdhaXQgZmV0Y2hQb3N0KGAke0lERU5USVRZX1NFUlZFUl9VUkx9L290cC9wcmVwYXJlYCwge1xuICAgICAgZmFjdG9yVmFsdWU6IHBob25lTnVtYmVyLFxuICAgICAgZGV2aWNlVG9rZW4sXG4gICAgICBvdHBDaGFubmVsOiAnU01TX09UUCcsXG4gICAgfSk7XG5cbiAgICBjb25zdCB7XG4gICAgICByZXN1bHREYXRhOiB7IG90cENvbnRleHQgfSxcbiAgICB9ID0gb3RwUHJlcGFyZVJlc3BvbnNlO1xuXG4gICAgdGhpcy5vdHBDb250ZXh0ID0gb3RwQ29udGV4dDtcblxuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiB0cnVlLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0TG9uZ1Rlcm1Ud29GYWN0b3JUb2tlbihvdHBDb2RlOiBzdHJpbmcpOiBQcm9taXNlPFNjcmFwZXJHZXRMb25nVGVybVR3b0ZhY3RvclRva2VuUmVzdWx0PiB7XG4gICAgaWYgKCF0aGlzLm90cENvbnRleHQpIHtcbiAgICAgIHJldHVybiBjcmVhdGVHZW5lcmljRXJyb3IoJ3RyaWdnZXJPdHAgd2FzIG5vdCBjYWxsZWQgYmVmb3JlIGNhbGxpbmcgZ2V0UGVybWVuYW50T3RwVG9rZW4oKScpO1xuICAgIH1cblxuICAgIGRlYnVnKCdSZXF1ZXN0aW5nIE9UUCB0b2tlbicpO1xuICAgIGNvbnN0IG90cFZlcmlmeVJlc3BvbnNlID0gYXdhaXQgZmV0Y2hQb3N0KGAke0lERU5USVRZX1NFUlZFUl9VUkx9L290cC92ZXJpZnlgLCB7XG4gICAgICBvdHBDb250ZXh0OiB0aGlzLm90cENvbnRleHQsXG4gICAgICBvdHBDb2RlLFxuICAgIH0pO1xuXG4gICAgY29uc3Qge1xuICAgICAgcmVzdWx0RGF0YTogeyBvdHBUb2tlbiB9LFxuICAgIH0gPSBvdHBWZXJpZnlSZXNwb25zZTtcbiAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCBsb25nVGVybVR3b0ZhY3RvckF1dGhUb2tlbjogb3RwVG9rZW4gfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzb2x2ZU90cFRva2VuKFxuICAgIGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyxcbiAgKTogUHJvbWlzZTxTY3JhcGVyR2V0TG9uZ1Rlcm1Ud29GYWN0b3JUb2tlblJlc3VsdD4ge1xuICAgIGlmICgnb3RwTG9uZ1Rlcm1Ub2tlbicgaW4gY3JlZGVudGlhbHMpIHtcbiAgICAgIGlmICghY3JlZGVudGlhbHMub3RwTG9uZ1Rlcm1Ub2tlbikge1xuICAgICAgICByZXR1cm4gY3JlYXRlR2VuZXJpY0Vycm9yKCdJbnZhbGlkIG90cExvbmdUZXJtVG9rZW4nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUsIGxvbmdUZXJtVHdvRmFjdG9yQXV0aFRva2VuOiBjcmVkZW50aWFscy5vdHBMb25nVGVybVRva2VuIH07XG4gICAgfVxuXG4gICAgaWYgKCFjcmVkZW50aWFscy5vdHBDb2RlUmV0cmlldmVyKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgZXJyb3JUeXBlOiBTY3JhcGVyRXJyb3JUeXBlcy5Ud29GYWN0b3JSZXRyaWV2ZXJNaXNzaW5nLFxuICAgICAgICBlcnJvck1lc3NhZ2U6ICdvdHBDb2RlUmV0cmlldmVyIGlzIHJlcXVpcmVkIHdoZW4gb3RwUGVybWFuZW50VG9rZW4gaXMgbm90IHByb3ZpZGVkJyxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKCFjcmVkZW50aWFscy5waG9uZU51bWJlcikge1xuICAgICAgcmV0dXJuIGNyZWF0ZUdlbmVyaWNFcnJvcigncGhvbmVOdW1iZXIgaXMgcmVxdWlyZWQgd2hlbiBwcm92aWRpbmcgYSBvdHBDb2RlUmV0cmlldmVyIGNhbGxiYWNrJyk7XG4gICAgfVxuXG4gICAgZGVidWcoJ1RyaWdnZXJpbmcgdXNlciBzdXBwbGllZCBvdHBDb2RlUmV0cmlldmVyIGNhbGxiYWNrJyk7XG4gICAgY29uc3QgdHJpZ2dlclJlc3VsdCA9IGF3YWl0IHRoaXMudHJpZ2dlclR3b0ZhY3RvckF1dGgoY3JlZGVudGlhbHMucGhvbmVOdW1iZXIpO1xuXG4gICAgaWYgKCF0cmlnZ2VyUmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgIHJldHVybiB0cmlnZ2VyUmVzdWx0O1xuICAgIH1cblxuICAgIGNvbnN0IG90cENvZGUgPSBhd2FpdCBjcmVkZW50aWFscy5vdHBDb2RlUmV0cmlldmVyKCk7XG5cbiAgICBjb25zdCBvdHBUb2tlblJlc3VsdCA9IGF3YWl0IHRoaXMuZ2V0TG9uZ1Rlcm1Ud29GYWN0b3JUb2tlbihvdHBDb2RlKTtcbiAgICBpZiAoIW90cFRva2VuUmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgIHJldHVybiBvdHBUb2tlblJlc3VsdDtcbiAgICB9XG5cbiAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCBsb25nVGVybVR3b0ZhY3RvckF1dGhUb2tlbjogb3RwVG9rZW5SZXN1bHQubG9uZ1Rlcm1Ud29GYWN0b3JBdXRoVG9rZW4gfTtcbiAgfVxuXG4gIGFzeW5jIGxvZ2luKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyk6IFByb21pc2U8U2NyYXBlckxvZ2luUmVzdWx0PiB7XG4gICAgY29uc3Qgb3RwVG9rZW5SZXN1bHQgPSBhd2FpdCB0aGlzLnJlc29sdmVPdHBUb2tlbihjcmVkZW50aWFscyk7XG4gICAgaWYgKCFvdHBUb2tlblJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICByZXR1cm4gb3RwVG9rZW5SZXN1bHQ7XG4gICAgfVxuXG4gICAgZGVidWcoJ1JlcXVlc3RpbmcgaWQgdG9rZW4nKTtcbiAgICBjb25zdCBnZXRJZFRva2VuUmVzcG9uc2UgPSBhd2FpdCBmZXRjaFBvc3QoYCR7SURFTlRJVFlfU0VSVkVSX1VSTH0vZ2V0SWRUb2tlbmAsIHtcbiAgICAgIG90cFNtc1Rva2VuOiBvdHBUb2tlblJlc3VsdC5sb25nVGVybVR3b0ZhY3RvckF1dGhUb2tlbixcbiAgICAgIGVtYWlsOiBjcmVkZW50aWFscy5lbWFpbCxcbiAgICAgIHBhc3M6IGNyZWRlbnRpYWxzLnBhc3N3b3JkLFxuICAgICAgcGluQ29kZTogJycsXG4gICAgfSk7XG5cbiAgICBjb25zdCB7XG4gICAgICByZXN1bHREYXRhOiB7IGlkVG9rZW4gfSxcbiAgICB9ID0gZ2V0SWRUb2tlblJlc3BvbnNlO1xuXG4gICAgZGVidWcoJ1JlcXVlc3Rpbmcgc2Vzc2lvbiB0b2tlbicpO1xuXG4gICAgY29uc3QgZ2V0U2Vzc2lvblRva2VuUmVzcG9uc2UgPSBhd2FpdCBmZXRjaFBvc3QoYCR7SURFTlRJVFlfU0VSVkVSX1VSTH0vc2Vzc2lvbnMvdG9rZW5gLCB7XG4gICAgICBpZFRva2VuLFxuICAgICAgcGFzczogY3JlZGVudGlhbHMucGFzc3dvcmQsXG4gICAgfSk7XG5cbiAgICBjb25zdCB7XG4gICAgICByZXN1bHREYXRhOiB7IGFjY2Vzc1Rva2VuIH0sXG4gICAgfSA9IGdldFNlc3Npb25Ub2tlblJlc3BvbnNlO1xuXG4gICAgdGhpcy5hY2Nlc3NUb2tlbiA9IGFjY2Vzc1Rva2VuO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICBwZXJzaXN0ZW50T3RwVG9rZW46IG90cFRva2VuUmVzdWx0LmxvbmdUZXJtVHdvRmFjdG9yQXV0aFRva2VuLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZldGNoUG9ydGZvbGlvTW92ZW1lbnRzKHBvcnRmb2xpbzogUG9ydGZvbGlvLCBzdGFydERhdGU6IERhdGUpOiBQcm9taXNlPFRyYW5zYWN0aW9uc0FjY291bnQ+IHtcbiAgICAvLyBUT0RPOiBGaW5kIG91dCBpZiB3ZSBuZWVkIHRoZSBvdGhlciBhY2NvdW50cywgdGhlcmUgc2VlbXMgdG8gYWx3YXlzIGJlIG9uZVxuICAgIGNvbnN0IGFjY291bnQgPSBwb3J0Zm9saW8uYWNjb3VudHNbMF07XG4gICAgbGV0IGN1cnNvciA9IG51bGw7XG4gICAgY29uc3QgbW92ZW1lbnRzID0gW107XG5cbiAgICB3aGlsZSAoIW1vdmVtZW50cy5sZW5ndGggfHwgbmV3IERhdGUobW92ZW1lbnRzWzBdLm1vdmVtZW50VGltZXN0YW1wKSA+PSBzdGFydERhdGUpIHtcbiAgICAgIGRlYnVnKGBGZXRjaGluZyB0cmFuc2FjdGlvbnMgZm9yIGFjY291bnQgJHtwb3J0Zm9saW8ucG9ydGZvbGlvTnVtfS4uLmApO1xuICAgICAgY29uc3Qge1xuICAgICAgICBtb3ZlbWVudHM6IHsgbW92ZW1lbnRzOiBuZXdNb3ZlbWVudHMsIHBhZ2luYXRpb24gfSxcbiAgICAgIH06IHsgbW92ZW1lbnRzOiB7IG1vdmVtZW50czogTW92ZW1lbnRbXTsgcGFnaW5hdGlvbjogUXVlcnlQYWdpbmF0aW9uIH0gfSA9IGF3YWl0IGZldGNoR3JhcGhxbChcbiAgICAgICAgR1JBUEhRTF9BUElfVVJMLFxuICAgICAgICBHRVRfTU9WRU1FTlRTLFxuICAgICAgICB7XG4gICAgICAgICAgcG9ydGZvbGlvSWQ6IHBvcnRmb2xpby5wb3J0Zm9saW9JZCxcbiAgICAgICAgICBhY2NvdW50SWQ6IGFjY291bnQuYWNjb3VudElkLFxuICAgICAgICAgIGxhbmd1YWdlOiAnSEVCUkVXJyxcbiAgICAgICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgICAgICBjdXJzb3IsXG4gICAgICAgICAgICBsaW1pdDogNTAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgeyBhdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dGhpcy5hY2Nlc3NUb2tlbn1gIH0sXG4gICAgICApO1xuXG4gICAgICBtb3ZlbWVudHMudW5zaGlmdCguLi5uZXdNb3ZlbWVudHMpO1xuICAgICAgY3Vyc29yID0gcGFnaW5hdGlvbi5jdXJzb3I7XG4gICAgICBpZiAoIXBhZ2luYXRpb24uaGFzTW9yZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBtb3ZlbWVudHMuc29ydCgoeCwgeSkgPT4gbmV3IERhdGUoeC5tb3ZlbWVudFRpbWVzdGFtcCkudmFsdWVPZigpIC0gbmV3IERhdGUoeS5tb3ZlbWVudFRpbWVzdGFtcCkudmFsdWVPZigpKTtcblxuICAgIGNvbnN0IG1hdGNoaW5nTW92ZW1lbnRzID0gbW92ZW1lbnRzLmZpbHRlcihtb3ZlbWVudCA9PiBuZXcgRGF0ZShtb3ZlbWVudC5tb3ZlbWVudFRpbWVzdGFtcCkgPj0gc3RhcnREYXRlKTtcbiAgICByZXR1cm4ge1xuICAgICAgYWNjb3VudE51bWJlcjogcG9ydGZvbGlvLnBvcnRmb2xpb051bSxcbiAgICAgIGJhbGFuY2U6ICFtb3ZlbWVudHMubGVuZ3RoID8gMCA6IHBhcnNlRmxvYXQobW92ZW1lbnRzW21vdmVtZW50cy5sZW5ndGggLSAxXS5ydW5uaW5nQmFsYW5jZSksXG4gICAgICB0eG5zOiBtYXRjaGluZ01vdmVtZW50cy5tYXAoKG1vdmVtZW50KTogU2NyYXBpbmdUcmFuc2FjdGlvbiA9PiB7XG4gICAgICAgIGNvbnN0IGhhc0luc3RhbGxtZW50cyA9IG1vdmVtZW50LnRyYW5zYWN0aW9uPy5lbnJpY2htZW50Py5yZWN1cnJlbmNlcz8uc29tZSh4ID0+IHguaXNSZWN1cnJlbnQpO1xuICAgICAgICBjb25zdCBtb2RpZmllciA9IG1vdmVtZW50LmNyZWRpdERlYml0ID09PSAnREVCSVQnID8gLTEgOiAxO1xuICAgICAgICBjb25zdCByZXN1bHQ6IFNjcmFwaW5nVHJhbnNhY3Rpb24gPSB7XG4gICAgICAgICAgaWRlbnRpZmllcjogbW92ZW1lbnQubW92ZW1lbnRJZCxcbiAgICAgICAgICBkYXRlOiBtb3ZlbWVudC52YWx1ZURhdGUsXG4gICAgICAgICAgY2hhcmdlZEFtb3VudDogK21vdmVtZW50Lm1vdmVtZW50QW1vdW50ICogbW9kaWZpZXIsXG4gICAgICAgICAgY2hhcmdlZEN1cnJlbmN5OiBtb3ZlbWVudC5tb3ZlbWVudEN1cnJlbmN5LFxuICAgICAgICAgIG9yaWdpbmFsQW1vdW50OiArbW92ZW1lbnQubW92ZW1lbnRBbW91bnQgKiBtb2RpZmllcixcbiAgICAgICAgICBvcmlnaW5hbEN1cnJlbmN5OiBtb3ZlbWVudC5tb3ZlbWVudEN1cnJlbmN5LFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLnNhbml0aXplSGVicmV3KG1vdmVtZW50LmRlc2NyaXB0aW9uKSxcbiAgICAgICAgICBwcm9jZXNzZWREYXRlOiBtb3ZlbWVudC5tb3ZlbWVudFRpbWVzdGFtcCxcbiAgICAgICAgICBzdGF0dXM6IFRyYW5zYWN0aW9uU3RhdHVzZXMuQ29tcGxldGVkLFxuICAgICAgICAgIHR5cGU6IGhhc0luc3RhbGxtZW50cyA/IFRyYW5zYWN0aW9uVHlwZXMuSW5zdGFsbG1lbnRzIDogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWwsXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucz8uaW5jbHVkZVJhd1RyYW5zYWN0aW9uKSB7XG4gICAgICAgICAgcmVzdWx0LnJhd1RyYW5zYWN0aW9uID0gbW92ZW1lbnQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfSksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBvbmUgemVybyBoZWJyZXcgc3RyaW5ncyBhcmUgcmV2ZXJzZWQgd2l0aCBhIHVuaWNvZGUgY29udHJvbCBjaGFyYWN0ZXIgdGhhdCBmb3JjZXMgZGlzcGxheSBpbiBMVFIgb3JkZXJcbiAgICogV2UgbmVlZCB0byByZW1vdmUgdGhlIHVuaWNvZGUgY29udHJvbCBjaGFyYWN0ZXIsIGFuZCB0aGVuIHJldmVyc2UgaGVicmV3IHN1YnN0cmluZ3MgaW5zaWRlIHRoZSBzdHJpbmdcbiAgICovXG4gIHByaXZhdGUgc2FuaXRpemVIZWJyZXcodGV4dDogc3RyaW5nKSB7XG4gICAgaWYgKCF0ZXh0LmluY2x1ZGVzKCdcXHUyMDJkJykpIHtcbiAgICAgIHJldHVybiB0ZXh0LnRyaW0oKTtcbiAgICB9XG5cbiAgICBjb25zdCBwbGFpblN0cmluZyA9IHRleHQucmVwbGFjZSgvXFx1MjAyZC9naSwgJycpLnRyaW0oKTtcbiAgICBjb25zdCBoZWJyZXdTdWJTdHJpbmdzUmFuZ2VzID0gWy4uLnBsYWluU3RyaW5nLm1hdGNoQWxsKEhFQlJFV19XT1JEU19SRUdFWCldO1xuICAgIGNvbnN0IHJhbmdlc1RvUmV2ZXJzZSA9IGhlYnJld1N1YlN0cmluZ3NSYW5nZXMubWFwKHN0ciA9PiAoeyBzdGFydDogc3RyLmluZGV4ISwgZW5kOiBzdHIuaW5kZXghICsgc3RyWzBdLmxlbmd0aCB9KSk7XG4gICAgY29uc3Qgb3V0ID0gW107XG4gICAgbGV0IGluZGV4ID0gMDtcblxuICAgIGZvciAoY29uc3QgeyBzdGFydCwgZW5kIH0gb2YgcmFuZ2VzVG9SZXZlcnNlKSB7XG4gICAgICBvdXQucHVzaCguLi5wbGFpblN0cmluZy5zdWJzdHJpbmcoaW5kZXgsIHN0YXJ0KSk7XG4gICAgICBpbmRleCArPSBzdGFydCAtIGluZGV4O1xuICAgICAgY29uc3QgcmV2ZXJzZWQgPSBbLi4ucGxhaW5TdHJpbmcuc3Vic3RyaW5nKHN0YXJ0LCBlbmQpXS5yZXZlcnNlKCk7XG4gICAgICBvdXQucHVzaCguLi5yZXZlcnNlZCk7XG4gICAgICBpbmRleCArPSBlbmQgLSBzdGFydDtcbiAgICB9XG5cbiAgICBvdXQucHVzaCguLi5wbGFpblN0cmluZy5zdWJzdHJpbmcoaW5kZXgsIHBsYWluU3RyaW5nLmxlbmd0aCkpO1xuXG4gICAgcmV0dXJuIG91dC5qb2luKCcnKTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoRGF0YSgpOiBQcm9taXNlPFNjcmFwZXJTY3JhcGluZ1Jlc3VsdD4ge1xuICAgIGlmICghdGhpcy5hY2Nlc3NUb2tlbikge1xuICAgICAgcmV0dXJuIGNyZWF0ZUdlbmVyaWNFcnJvcignbG9naW4oKSB3YXMgbm90IGNhbGxlZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGRlZmF1bHRTdGFydE1vbWVudCA9IG1vbWVudCgpLnN1YnRyYWN0KDEsICd5ZWFycycpLmFkZCgxLCAnZGF5Jyk7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSB8fCBkZWZhdWx0U3RhcnRNb21lbnQudG9EYXRlKCk7XG4gICAgY29uc3Qgc3RhcnRNb21lbnQgPSBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xuXG4gICAgZGVidWcoJ0ZldGNoaW5nIGFjY291bnQgbGlzdCcpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZldGNoR3JhcGhxbDx7IGN1c3RvbWVyOiBDdXN0b21lcltdIH0+KFxuICAgICAgR1JBUEhRTF9BUElfVVJMLFxuICAgICAgR0VUX0NVU1RPTUVSLFxuICAgICAge30sXG4gICAgICB7IGF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0aGlzLmFjY2Vzc1Rva2VufWAgfSxcbiAgICApO1xuICAgIGNvbnN0IHBvcnRmb2xpb3MgPSByZXN1bHQuY3VzdG9tZXIuZmxhdE1hcChjdXN0b21lciA9PiBjdXN0b21lci5wb3J0Zm9saW9zIHx8IFtdKTtcblxuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgYWNjb3VudHM6IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBwb3J0Zm9saW9zLm1hcChwb3J0Zm9saW8gPT4gdGhpcy5mZXRjaFBvcnRmb2xpb01vdmVtZW50cyhwb3J0Zm9saW8sIHN0YXJ0TW9tZW50LnRvRGF0ZSgpKSksXG4gICAgICApLFxuICAgIH07XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsTUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsYUFBQSxHQUFBSCxPQUFBO0FBTUEsSUFBQUksWUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssT0FBQSxHQUFBTCxPQUFBO0FBT0EsSUFBQU0sZUFBQSxHQUFBTixPQUFBO0FBQWlFLFNBQUFELHVC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
|
|
243
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZGVidWciLCJfZmV0Y2giLCJfdHJhbnNhY3Rpb25zIiwiX3RyYW5zYWN0aW9uczIiLCJfYmFzZVNjcmFwZXIiLCJfZXJyb3JzIiwiX29uZVplcm9RdWVyaWVzIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiSEVCUkVXX1dPUkRTX1JFR0VYIiwiZGVidWciLCJnZXREZWJ1ZyIsIklERU5USVRZX1NFUlZFUl9VUkwiLCJHUkFQSFFMX0FQSV9VUkwiLCJPbmVaZXJvU2NyYXBlciIsIkJhc2VTY3JhcGVyIiwidHJpZ2dlclR3b0ZhY3RvckF1dGgiLCJwaG9uZU51bWJlciIsInN0YXJ0c1dpdGgiLCJjcmVhdGVHZW5lcmljRXJyb3IiLCJkZXZpY2VUb2tlblJlc3BvbnNlIiwiZmV0Y2hQb3N0IiwiZXh0Q2xpZW50SWQiLCJvcyIsInJlc3VsdERhdGEiLCJkZXZpY2VUb2tlbiIsIm90cFByZXBhcmVSZXNwb25zZSIsImZhY3RvclZhbHVlIiwib3RwQ2hhbm5lbCIsIm90cENvbnRleHQiLCJzdWNjZXNzIiwiZ2V0TG9uZ1Rlcm1Ud29GYWN0b3JUb2tlbiIsIm90cENvZGUiLCJvdHBWZXJpZnlSZXNwb25zZSIsIm90cFRva2VuIiwibG9uZ1Rlcm1Ud29GYWN0b3JBdXRoVG9rZW4iLCJyZXNvbHZlT3RwVG9rZW4iLCJjcmVkZW50aWFscyIsIm90cExvbmdUZXJtVG9rZW4iLCJvdHBDb2RlUmV0cmlldmVyIiwiZXJyb3JUeXBlIiwiU2NyYXBlckVycm9yVHlwZXMiLCJUd29GYWN0b3JSZXRyaWV2ZXJNaXNzaW5nIiwiZXJyb3JNZXNzYWdlIiwidHJpZ2dlclJlc3VsdCIsIm90cFRva2VuUmVzdWx0IiwibG9naW4iLCJnZXRJZFRva2VuUmVzcG9uc2UiLCJvdHBTbXNUb2tlbiIsImVtYWlsIiwicGFzcyIsInBhc3N3b3JkIiwicGluQ29kZSIsImlkVG9rZW4iLCJnZXRTZXNzaW9uVG9rZW5SZXNwb25zZSIsImFjY2Vzc1Rva2VuIiwicGVyc2lzdGVudE90cFRva2VuIiwiZmV0Y2hQb3J0Zm9saW9Nb3ZlbWVudHMiLCJwb3J0Zm9saW8iLCJzdGFydERhdGUiLCJhY2NvdW50IiwiYWNjb3VudHMiLCJjdXJzb3IiLCJtb3ZlbWVudHMiLCJsZW5ndGgiLCJEYXRlIiwibW92ZW1lbnRUaW1lc3RhbXAiLCJwb3J0Zm9saW9OdW0iLCJuZXdNb3ZlbWVudHMiLCJwYWdpbmF0aW9uIiwiZmV0Y2hHcmFwaHFsIiwiR0VUX01PVkVNRU5UUyIsInBvcnRmb2xpb0lkIiwiYWNjb3VudElkIiwibGFuZ3VhZ2UiLCJsaW1pdCIsImF1dGhvcml6YXRpb24iLCJ1bnNoaWZ0IiwiaGFzTW9yZSIsInNvcnQiLCJ4IiwieSIsInZhbHVlT2YiLCJtYXRjaGluZ01vdmVtZW50cyIsImZpbHRlciIsIm1vdmVtZW50IiwiYWNjb3VudE51bWJlciIsImJhbGFuY2UiLCJwYXJzZUZsb2F0IiwicnVubmluZ0JhbGFuY2UiLCJ0eG5zIiwibWFwIiwiaGFzSW5zdGFsbG1lbnRzIiwidHJhbnNhY3Rpb24iLCJlbnJpY2htZW50IiwicmVjdXJyZW5jZXMiLCJzb21lIiwiaXNSZWN1cnJlbnQiLCJtb2RpZmllciIsImNyZWRpdERlYml0IiwicmVzdWx0IiwiaWRlbnRpZmllciIsIm1vdmVtZW50SWQiLCJkYXRlIiwidmFsdWVEYXRlIiwiY2hhcmdlZEFtb3VudCIsIm1vdmVtZW50QW1vdW50IiwiY2hhcmdlZEN1cnJlbmN5IiwibW92ZW1lbnRDdXJyZW5jeSIsIm9yaWdpbmFsQW1vdW50Iiwib3JpZ2luYWxDdXJyZW5jeSIsImRlc2NyaXB0aW9uIiwic2FuaXRpemVIZWJyZXciLCJwcm9jZXNzZWREYXRlIiwic3RhdHVzIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIkNvbXBsZXRlZCIsInR5cGUiLCJUcmFuc2FjdGlvblR5cGVzIiwiSW5zdGFsbG1lbnRzIiwiTm9ybWFsIiwib3B0aW9ucyIsImluY2x1ZGVSYXdUcmFuc2FjdGlvbiIsInJhd1RyYW5zYWN0aW9uIiwiZ2V0UmF3VHJhbnNhY3Rpb24iLCJ0ZXh0IiwiaW5jbHVkZXMiLCJ0cmltIiwicGxhaW5TdHJpbmciLCJyZXBsYWNlIiwiaGVicmV3U3ViU3RyaW5nc1JhbmdlcyIsIm1hdGNoQWxsIiwicmFuZ2VzVG9SZXZlcnNlIiwic3RyIiwic3RhcnQiLCJpbmRleCIsImVuZCIsIm91dCIsInB1c2giLCJzdWJzdHJpbmciLCJyZXZlcnNlZCIsInJldmVyc2UiLCJqb2luIiwiZmV0Y2hEYXRhIiwiZGVmYXVsdFN0YXJ0TW9tZW50IiwibW9tZW50Iiwic3VidHJhY3QiLCJhZGQiLCJ0b0RhdGUiLCJzdGFydE1vbWVudCIsIm1heCIsIkdFVF9DVVNUT01FUiIsInBvcnRmb2xpb3MiLCJjdXN0b21lciIsImZsYXRNYXAiLCJQcm9taXNlIiwiYWxsIiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9vbmUtemVyby50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudC9tb21lbnQnO1xuaW1wb3J0IHsgZ2V0RGVidWcgfSBmcm9tICcuLi9oZWxwZXJzL2RlYnVnJztcbmltcG9ydCB7IGZldGNoR3JhcGhxbCwgZmV0Y2hQb3N0IH0gZnJvbSAnLi4vaGVscGVycy9mZXRjaCc7XG5pbXBvcnQgeyBnZXRSYXdUcmFuc2FjdGlvbiB9IGZyb20gJy4uL2hlbHBlcnMvdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7XG4gIHR5cGUgVHJhbnNhY3Rpb24gYXMgU2NyYXBpbmdUcmFuc2FjdGlvbixcbiAgVHJhbnNhY3Rpb25TdGF0dXNlcyxcbiAgVHJhbnNhY3Rpb25UeXBlcyxcbiAgdHlwZSBUcmFuc2FjdGlvbnNBY2NvdW50LFxufSBmcm9tICcuLi90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgQmFzZVNjcmFwZXIgfSBmcm9tICcuL2Jhc2Utc2NyYXBlcic7XG5pbXBvcnQgeyBTY3JhcGVyRXJyb3JUeXBlcywgY3JlYXRlR2VuZXJpY0Vycm9yIH0gZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IHtcbiAgdHlwZSBTY3JhcGVyR2V0TG9uZ1Rlcm1Ud29GYWN0b3JUb2tlblJlc3VsdCxcbiAgdHlwZSBTY3JhcGVyTG9naW5SZXN1bHQsXG4gIHR5cGUgU2NyYXBlclNjcmFwaW5nUmVzdWx0LFxuICB0eXBlIFNjcmFwZXJUd29GYWN0b3JBdXRoVHJpZ2dlclJlc3VsdCxcbn0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuaW1wb3J0IHsgR0VUX0NVU1RPTUVSLCBHRVRfTU9WRU1FTlRTIH0gZnJvbSAnLi9vbmUtemVyby1xdWVyaWVzJztcblxuY29uc3QgSEVCUkVXX1dPUkRTX1JFR0VYID0gL1tcXHUwNTkwLVxcdTA1RkZdW1xcdTA1OTAtXFx1MDVGRlwiJ1xcLV8gL1xcXFxdKltcXHUwNTkwLVxcdTA1RkZdL2c7XG5cbmNvbnN0IGRlYnVnID0gZ2V0RGVidWcoJ29uZS16ZXJvJyk7XG5cbnR5cGUgQWNjb3VudCA9IHtcbiAgYWNjb3VudElkOiBzdHJpbmc7XG59O1xuXG50eXBlIFBvcnRmb2xpbyA9IHtcbiAgYWNjb3VudHM6IEFycmF5PEFjY291bnQ+O1xuICBwb3J0Zm9saW9JZDogc3RyaW5nO1xuICBwb3J0Zm9saW9OdW06IHN0cmluZztcbn07XG5cbnR5cGUgQ3VzdG9tZXIgPSB7XG4gIGN1c3RvbWVySWQ6IHN0cmluZztcbiAgcG9ydGZvbGlvcz86IEFycmF5PFBvcnRmb2xpbz4gfCBudWxsO1xufTtcblxuZXhwb3J0IHR5cGUgQ2F0ZWdvcnkgPSB7XG4gIGNhdGVnb3J5SWQ6IG51bWJlcjtcbiAgZGF0YVNvdXJjZTogc3RyaW5nO1xuICBzdWJDYXRlZ29yeUlkPzogbnVtYmVyIHwgbnVsbDtcbn07XG5cbmV4cG9ydCB0eXBlIFJlY3VycmVuY2UgPSB7XG4gIGRhdGFTb3VyY2U6IHN0cmluZztcbiAgaXNSZWN1cnJlbnQ6IGJvb2xlYW47XG59O1xuXG50eXBlIFRyYW5zYWN0aW9uRW5yaWNobWVudCA9IHtcbiAgY2F0ZWdvcmllcz86IENhdGVnb3J5W10gfCBudWxsO1xuICByZWN1cnJlbmNlcz86IFJlY3VycmVuY2VbXSB8IG51bGw7XG59O1xuXG50eXBlIFRyYW5zYWN0aW9uID0ge1xuICBlbnJpY2htZW50PzogVHJhbnNhY3Rpb25FbnJpY2htZW50IHwgbnVsbDtcbiAgLy8gVE9ETzogR2V0IGluc3RhbGxtZW50cyBpbmZvcm1hdGlvbiBoZXJlXG4gIC8vIHRyYW5zYWN0aW9uRGV0YWlsczogVHJhbnNhY3Rpb25EZXRhaWxzO1xufTtcblxudHlwZSBNb3ZlbWVudCA9IHtcbiAgYWNjb3VudElkOiBzdHJpbmc7XG4gIGJhbmtDdXJyZW5jeUFtb3VudDogc3RyaW5nO1xuICBib29raW5nRGF0ZTogc3RyaW5nO1xuICBjb252ZXJzaW9uUmF0ZTogc3RyaW5nO1xuICBjcmVkaXREZWJpdDogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBpc1JldmVyc2VkOiBib29sZWFuO1xuICBtb3ZlbWVudEFtb3VudDogc3RyaW5nO1xuICBtb3ZlbWVudEN1cnJlbmN5OiBzdHJpbmc7XG4gIG1vdmVtZW50SWQ6IHN0cmluZztcbiAgbW92ZW1lbnRSZXZlcnNlZElkPzogc3RyaW5nIHwgbnVsbDtcbiAgbW92ZW1lbnRUaW1lc3RhbXA6IHN0cmluZztcbiAgbW92ZW1lbnRUeXBlOiBzdHJpbmc7XG4gIHBvcnRmb2xpb0lkOiBzdHJpbmc7XG4gIHJ1bm5pbmdCYWxhbmNlOiBzdHJpbmc7XG4gIHRyYW5zYWN0aW9uPzogVHJhbnNhY3Rpb24gfCBudWxsO1xuICB2YWx1ZURhdGU6IHN0cmluZztcbn07XG5cbnR5cGUgUXVlcnlQYWdpbmF0aW9uID0geyBoYXNNb3JlOiBib29sZWFuOyBjdXJzb3I6IHN0cmluZyB9O1xuXG5jb25zdCBJREVOVElUWV9TRVJWRVJfVVJMID0gJ2h0dHBzOi8vaWRlbnRpdHkudGZkLWJhbmsuY29tL3YxLyc7XG5cbmNvbnN0IEdSQVBIUUxfQVBJX1VSTCA9ICdodHRwczovL21vYmlsZS50ZmQtYmFuay5jb20vbW9iaWxlLWdyYXBoL2dyYXBocWwnO1xuXG50eXBlIFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzID0geyBlbWFpbDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH0gJiAoXG4gIHwge1xuICAgICAgb3RwQ29kZVJldHJpZXZlcjogKCkgPT4gUHJvbWlzZTxzdHJpbmc+O1xuICAgICAgcGhvbmVOdW1iZXI6IHN0cmluZztcbiAgICB9XG4gIHwge1xuICAgICAgb3RwTG9uZ1Rlcm1Ub2tlbjogc3RyaW5nO1xuICAgIH1cbik7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE9uZVplcm9TY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXI8U2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHM+IHtcbiAgcHJpdmF0ZSBvdHBDb250ZXh0Pzogc3RyaW5nO1xuXG4gIHByaXZhdGUgYWNjZXNzVG9rZW4/OiBzdHJpbmc7XG5cbiAgYXN5bmMgdHJpZ2dlclR3b0ZhY3RvckF1dGgocGhvbmVOdW1iZXI6IHN0cmluZyk6IFByb21pc2U8U2NyYXBlclR3b0ZhY3RvckF1dGhUcmlnZ2VyUmVzdWx0PiB7XG4gICAgaWYgKCFwaG9uZU51bWJlci5zdGFydHNXaXRoKCcrJykpIHtcbiAgICAgIHJldHVybiBjcmVhdGVHZW5lcmljRXJyb3IoXG4gICAgICAgICdBIGZ1bGwgaW50ZXJuYXRpb25hbCBwaG9uZSBudW1iZXIgc3RhcnRpbmcgd2l0aCArIGFuZCBhIHRocmVlIGRpZ2l0IGNvdW50cnkgY29kZSBpcyByZXF1aXJlZCcsXG4gICAgICApO1xuICAgIH1cblxuICAgIGRlYnVnKCdGZXRjaGluZyBkZXZpY2UgdG9rZW4nKTtcbiAgICBjb25zdCBkZXZpY2VUb2tlblJlc3BvbnNlID0gYXdhaXQgZmV0Y2hQb3N0KGAke0lERU5USVRZX1NFUlZFUl9VUkx9L2RldmljZXMvdG9rZW5gLCB7XG4gICAgICBleHRDbGllbnRJZDogJ21vYmlsZScsXG4gICAgICBvczogJ0FuZHJvaWQnLFxuICAgIH0pO1xuXG4gICAgY29uc3Qge1xuICAgICAgcmVzdWx0RGF0YTogeyBkZXZpY2VUb2tlbiB9LFxuICAgIH0gPSBkZXZpY2VUb2tlblJlc3BvbnNlO1xuXG4gICAgZGVidWcoYFNlbmRpbmcgT1RQIHRvIHBob25lIG51bWJlciAke3Bob25lTnVtYmVyfWApO1xuXG4gICAgY29uc3Qgb3RwUHJlcGFyZVJlc3BvbnNlID0gYXdhaXQgZmV0Y2hQb3N0KGAke0lERU5USVRZX1NFUlZFUl9VUkx9L290cC9wcmVwYXJlYCwge1xuICAgICAgZmFjdG9yVmFsdWU6IHBob25lTnVtYmVyLFxuICAgICAgZGV2aWNlVG9rZW4sXG4gICAgICBvdHBDaGFubmVsOiAnU01TX09UUCcsXG4gICAgfSk7XG5cbiAgICBjb25zdCB7XG4gICAgICByZXN1bHREYXRhOiB7IG90cENvbnRleHQgfSxcbiAgICB9ID0gb3RwUHJlcGFyZVJlc3BvbnNlO1xuXG4gICAgdGhpcy5vdHBDb250ZXh0ID0gb3RwQ29udGV4dDtcblxuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiB0cnVlLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgZ2V0TG9uZ1Rlcm1Ud29GYWN0b3JUb2tlbihvdHBDb2RlOiBzdHJpbmcpOiBQcm9taXNlPFNjcmFwZXJHZXRMb25nVGVybVR3b0ZhY3RvclRva2VuUmVzdWx0PiB7XG4gICAgaWYgKCF0aGlzLm90cENvbnRleHQpIHtcbiAgICAgIHJldHVybiBjcmVhdGVHZW5lcmljRXJyb3IoJ3RyaWdnZXJPdHAgd2FzIG5vdCBjYWxsZWQgYmVmb3JlIGNhbGxpbmcgZ2V0UGVybWVuYW50T3RwVG9rZW4oKScpO1xuICAgIH1cblxuICAgIGRlYnVnKCdSZXF1ZXN0aW5nIE9UUCB0b2tlbicpO1xuICAgIGNvbnN0IG90cFZlcmlmeVJlc3BvbnNlID0gYXdhaXQgZmV0Y2hQb3N0KGAke0lERU5USVRZX1NFUlZFUl9VUkx9L290cC92ZXJpZnlgLCB7XG4gICAgICBvdHBDb250ZXh0OiB0aGlzLm90cENvbnRleHQsXG4gICAgICBvdHBDb2RlLFxuICAgIH0pO1xuXG4gICAgY29uc3Qge1xuICAgICAgcmVzdWx0RGF0YTogeyBvdHBUb2tlbiB9LFxuICAgIH0gPSBvdHBWZXJpZnlSZXNwb25zZTtcbiAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCBsb25nVGVybVR3b0ZhY3RvckF1dGhUb2tlbjogb3RwVG9rZW4gfTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVzb2x2ZU90cFRva2VuKFxuICAgIGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyxcbiAgKTogUHJvbWlzZTxTY3JhcGVyR2V0TG9uZ1Rlcm1Ud29GYWN0b3JUb2tlblJlc3VsdD4ge1xuICAgIGlmICgnb3RwTG9uZ1Rlcm1Ub2tlbicgaW4gY3JlZGVudGlhbHMpIHtcbiAgICAgIGlmICghY3JlZGVudGlhbHMub3RwTG9uZ1Rlcm1Ub2tlbikge1xuICAgICAgICByZXR1cm4gY3JlYXRlR2VuZXJpY0Vycm9yKCdJbnZhbGlkIG90cExvbmdUZXJtVG9rZW4nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB7IHN1Y2Nlc3M6IHRydWUsIGxvbmdUZXJtVHdvRmFjdG9yQXV0aFRva2VuOiBjcmVkZW50aWFscy5vdHBMb25nVGVybVRva2VuIH07XG4gICAgfVxuXG4gICAgaWYgKCFjcmVkZW50aWFscy5vdHBDb2RlUmV0cmlldmVyKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgZXJyb3JUeXBlOiBTY3JhcGVyRXJyb3JUeXBlcy5Ud29GYWN0b3JSZXRyaWV2ZXJNaXNzaW5nLFxuICAgICAgICBlcnJvck1lc3NhZ2U6ICdvdHBDb2RlUmV0cmlldmVyIGlzIHJlcXVpcmVkIHdoZW4gb3RwUGVybWFuZW50VG9rZW4gaXMgbm90IHByb3ZpZGVkJyxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKCFjcmVkZW50aWFscy5waG9uZU51bWJlcikge1xuICAgICAgcmV0dXJuIGNyZWF0ZUdlbmVyaWNFcnJvcigncGhvbmVOdW1iZXIgaXMgcmVxdWlyZWQgd2hlbiBwcm92aWRpbmcgYSBvdHBDb2RlUmV0cmlldmVyIGNhbGxiYWNrJyk7XG4gICAgfVxuXG4gICAgZGVidWcoJ1RyaWdnZXJpbmcgdXNlciBzdXBwbGllZCBvdHBDb2RlUmV0cmlldmVyIGNhbGxiYWNrJyk7XG4gICAgY29uc3QgdHJpZ2dlclJlc3VsdCA9IGF3YWl0IHRoaXMudHJpZ2dlclR3b0ZhY3RvckF1dGgoY3JlZGVudGlhbHMucGhvbmVOdW1iZXIpO1xuXG4gICAgaWYgKCF0cmlnZ2VyUmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgIHJldHVybiB0cmlnZ2VyUmVzdWx0O1xuICAgIH1cblxuICAgIGNvbnN0IG90cENvZGUgPSBhd2FpdCBjcmVkZW50aWFscy5vdHBDb2RlUmV0cmlldmVyKCk7XG5cbiAgICBjb25zdCBvdHBUb2tlblJlc3VsdCA9IGF3YWl0IHRoaXMuZ2V0TG9uZ1Rlcm1Ud29GYWN0b3JUb2tlbihvdHBDb2RlKTtcbiAgICBpZiAoIW90cFRva2VuUmVzdWx0LnN1Y2Nlc3MpIHtcbiAgICAgIHJldHVybiBvdHBUb2tlblJlc3VsdDtcbiAgICB9XG5cbiAgICByZXR1cm4geyBzdWNjZXNzOiB0cnVlLCBsb25nVGVybVR3b0ZhY3RvckF1dGhUb2tlbjogb3RwVG9rZW5SZXN1bHQubG9uZ1Rlcm1Ud29GYWN0b3JBdXRoVG9rZW4gfTtcbiAgfVxuXG4gIGFzeW5jIGxvZ2luKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyk6IFByb21pc2U8U2NyYXBlckxvZ2luUmVzdWx0PiB7XG4gICAgY29uc3Qgb3RwVG9rZW5SZXN1bHQgPSBhd2FpdCB0aGlzLnJlc29sdmVPdHBUb2tlbihjcmVkZW50aWFscyk7XG4gICAgaWYgKCFvdHBUb2tlblJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICByZXR1cm4gb3RwVG9rZW5SZXN1bHQ7XG4gICAgfVxuXG4gICAgZGVidWcoJ1JlcXVlc3RpbmcgaWQgdG9rZW4nKTtcbiAgICBjb25zdCBnZXRJZFRva2VuUmVzcG9uc2UgPSBhd2FpdCBmZXRjaFBvc3QoYCR7SURFTlRJVFlfU0VSVkVSX1VSTH0vZ2V0SWRUb2tlbmAsIHtcbiAgICAgIG90cFNtc1Rva2VuOiBvdHBUb2tlblJlc3VsdC5sb25nVGVybVR3b0ZhY3RvckF1dGhUb2tlbixcbiAgICAgIGVtYWlsOiBjcmVkZW50aWFscy5lbWFpbCxcbiAgICAgIHBhc3M6IGNyZWRlbnRpYWxzLnBhc3N3b3JkLFxuICAgICAgcGluQ29kZTogJycsXG4gICAgfSk7XG5cbiAgICBjb25zdCB7XG4gICAgICByZXN1bHREYXRhOiB7IGlkVG9rZW4gfSxcbiAgICB9ID0gZ2V0SWRUb2tlblJlc3BvbnNlO1xuXG4gICAgZGVidWcoJ1JlcXVlc3Rpbmcgc2Vzc2lvbiB0b2tlbicpO1xuXG4gICAgY29uc3QgZ2V0U2Vzc2lvblRva2VuUmVzcG9uc2UgPSBhd2FpdCBmZXRjaFBvc3QoYCR7SURFTlRJVFlfU0VSVkVSX1VSTH0vc2Vzc2lvbnMvdG9rZW5gLCB7XG4gICAgICBpZFRva2VuLFxuICAgICAgcGFzczogY3JlZGVudGlhbHMucGFzc3dvcmQsXG4gICAgfSk7XG5cbiAgICBjb25zdCB7XG4gICAgICByZXN1bHREYXRhOiB7IGFjY2Vzc1Rva2VuIH0sXG4gICAgfSA9IGdldFNlc3Npb25Ub2tlblJlc3BvbnNlO1xuXG4gICAgdGhpcy5hY2Nlc3NUb2tlbiA9IGFjY2Vzc1Rva2VuO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICBwZXJzaXN0ZW50T3RwVG9rZW46IG90cFRva2VuUmVzdWx0LmxvbmdUZXJtVHdvRmFjdG9yQXV0aFRva2VuLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGZldGNoUG9ydGZvbGlvTW92ZW1lbnRzKHBvcnRmb2xpbzogUG9ydGZvbGlvLCBzdGFydERhdGU6IERhdGUpOiBQcm9taXNlPFRyYW5zYWN0aW9uc0FjY291bnQ+IHtcbiAgICAvLyBUT0RPOiBGaW5kIG91dCBpZiB3ZSBuZWVkIHRoZSBvdGhlciBhY2NvdW50cywgdGhlcmUgc2VlbXMgdG8gYWx3YXlzIGJlIG9uZVxuICAgIGNvbnN0IGFjY291bnQgPSBwb3J0Zm9saW8uYWNjb3VudHNbMF07XG4gICAgbGV0IGN1cnNvciA9IG51bGw7XG4gICAgY29uc3QgbW92ZW1lbnRzID0gW107XG5cbiAgICB3aGlsZSAoIW1vdmVtZW50cy5sZW5ndGggfHwgbmV3IERhdGUobW92ZW1lbnRzWzBdLm1vdmVtZW50VGltZXN0YW1wKSA+PSBzdGFydERhdGUpIHtcbiAgICAgIGRlYnVnKGBGZXRjaGluZyB0cmFuc2FjdGlvbnMgZm9yIGFjY291bnQgJHtwb3J0Zm9saW8ucG9ydGZvbGlvTnVtfS4uLmApO1xuICAgICAgY29uc3Qge1xuICAgICAgICBtb3ZlbWVudHM6IHsgbW92ZW1lbnRzOiBuZXdNb3ZlbWVudHMsIHBhZ2luYXRpb24gfSxcbiAgICAgIH06IHsgbW92ZW1lbnRzOiB7IG1vdmVtZW50czogTW92ZW1lbnRbXTsgcGFnaW5hdGlvbjogUXVlcnlQYWdpbmF0aW9uIH0gfSA9IGF3YWl0IGZldGNoR3JhcGhxbChcbiAgICAgICAgR1JBUEhRTF9BUElfVVJMLFxuICAgICAgICBHRVRfTU9WRU1FTlRTLFxuICAgICAgICB7XG4gICAgICAgICAgcG9ydGZvbGlvSWQ6IHBvcnRmb2xpby5wb3J0Zm9saW9JZCxcbiAgICAgICAgICBhY2NvdW50SWQ6IGFjY291bnQuYWNjb3VudElkLFxuICAgICAgICAgIGxhbmd1YWdlOiAnSEVCUkVXJyxcbiAgICAgICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgICAgICBjdXJzb3IsXG4gICAgICAgICAgICBsaW1pdDogNTAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgeyBhdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dGhpcy5hY2Nlc3NUb2tlbn1gIH0sXG4gICAgICApO1xuXG4gICAgICBtb3ZlbWVudHMudW5zaGlmdCguLi5uZXdNb3ZlbWVudHMpO1xuICAgICAgY3Vyc29yID0gcGFnaW5hdGlvbi5jdXJzb3I7XG4gICAgICBpZiAoIXBhZ2luYXRpb24uaGFzTW9yZSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBtb3ZlbWVudHMuc29ydCgoeCwgeSkgPT4gbmV3IERhdGUoeC5tb3ZlbWVudFRpbWVzdGFtcCkudmFsdWVPZigpIC0gbmV3IERhdGUoeS5tb3ZlbWVudFRpbWVzdGFtcCkudmFsdWVPZigpKTtcblxuICAgIGNvbnN0IG1hdGNoaW5nTW92ZW1lbnRzID0gbW92ZW1lbnRzLmZpbHRlcihtb3ZlbWVudCA9PiBuZXcgRGF0ZShtb3ZlbWVudC5tb3ZlbWVudFRpbWVzdGFtcCkgPj0gc3RhcnREYXRlKTtcbiAgICByZXR1cm4ge1xuICAgICAgYWNjb3VudE51bWJlcjogcG9ydGZvbGlvLnBvcnRmb2xpb051bSxcbiAgICAgIGJhbGFuY2U6ICFtb3ZlbWVudHMubGVuZ3RoID8gMCA6IHBhcnNlRmxvYXQobW92ZW1lbnRzW21vdmVtZW50cy5sZW5ndGggLSAxXS5ydW5uaW5nQmFsYW5jZSksXG4gICAgICB0eG5zOiBtYXRjaGluZ01vdmVtZW50cy5tYXAoKG1vdmVtZW50KTogU2NyYXBpbmdUcmFuc2FjdGlvbiA9PiB7XG4gICAgICAgIGNvbnN0IGhhc0luc3RhbGxtZW50cyA9IG1vdmVtZW50LnRyYW5zYWN0aW9uPy5lbnJpY2htZW50Py5yZWN1cnJlbmNlcz8uc29tZSh4ID0+IHguaXNSZWN1cnJlbnQpO1xuICAgICAgICBjb25zdCBtb2RpZmllciA9IG1vdmVtZW50LmNyZWRpdERlYml0ID09PSAnREVCSVQnID8gLTEgOiAxO1xuICAgICAgICBjb25zdCByZXN1bHQ6IFNjcmFwaW5nVHJhbnNhY3Rpb24gPSB7XG4gICAgICAgICAgaWRlbnRpZmllcjogbW92ZW1lbnQubW92ZW1lbnRJZCxcbiAgICAgICAgICBkYXRlOiBtb3ZlbWVudC52YWx1ZURhdGUsXG4gICAgICAgICAgY2hhcmdlZEFtb3VudDogK21vdmVtZW50Lm1vdmVtZW50QW1vdW50ICogbW9kaWZpZXIsXG4gICAgICAgICAgY2hhcmdlZEN1cnJlbmN5OiBtb3ZlbWVudC5tb3ZlbWVudEN1cnJlbmN5LFxuICAgICAgICAgIG9yaWdpbmFsQW1vdW50OiArbW92ZW1lbnQubW92ZW1lbnRBbW91bnQgKiBtb2RpZmllcixcbiAgICAgICAgICBvcmlnaW5hbEN1cnJlbmN5OiBtb3ZlbWVudC5tb3ZlbWVudEN1cnJlbmN5LFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiB0aGlzLnNhbml0aXplSGVicmV3KG1vdmVtZW50LmRlc2NyaXB0aW9uKSxcbiAgICAgICAgICBwcm9jZXNzZWREYXRlOiBtb3ZlbWVudC5tb3ZlbWVudFRpbWVzdGFtcCxcbiAgICAgICAgICBzdGF0dXM6IFRyYW5zYWN0aW9uU3RhdHVzZXMuQ29tcGxldGVkLFxuICAgICAgICAgIHR5cGU6IGhhc0luc3RhbGxtZW50cyA/IFRyYW5zYWN0aW9uVHlwZXMuSW5zdGFsbG1lbnRzIDogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWwsXG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucz8uaW5jbHVkZVJhd1RyYW5zYWN0aW9uKSB7XG4gICAgICAgICAgcmVzdWx0LnJhd1RyYW5zYWN0aW9uID0gZ2V0UmF3VHJhbnNhY3Rpb24obW92ZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0pLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogb25lIHplcm8gaGVicmV3IHN0cmluZ3MgYXJlIHJldmVyc2VkIHdpdGggYSB1bmljb2RlIGNvbnRyb2wgY2hhcmFjdGVyIHRoYXQgZm9yY2VzIGRpc3BsYXkgaW4gTFRSIG9yZGVyXG4gICAqIFdlIG5lZWQgdG8gcmVtb3ZlIHRoZSB1bmljb2RlIGNvbnRyb2wgY2hhcmFjdGVyLCBhbmQgdGhlbiByZXZlcnNlIGhlYnJldyBzdWJzdHJpbmdzIGluc2lkZSB0aGUgc3RyaW5nXG4gICAqL1xuICBwcml2YXRlIHNhbml0aXplSGVicmV3KHRleHQ6IHN0cmluZykge1xuICAgIGlmICghdGV4dC5pbmNsdWRlcygnXFx1MjAyZCcpKSB7XG4gICAgICByZXR1cm4gdGV4dC50cmltKCk7XG4gICAgfVxuXG4gICAgY29uc3QgcGxhaW5TdHJpbmcgPSB0ZXh0LnJlcGxhY2UoL1xcdTIwMmQvZ2ksICcnKS50cmltKCk7XG4gICAgY29uc3QgaGVicmV3U3ViU3RyaW5nc1JhbmdlcyA9IFsuLi5wbGFpblN0cmluZy5tYXRjaEFsbChIRUJSRVdfV09SRFNfUkVHRVgpXTtcbiAgICBjb25zdCByYW5nZXNUb1JldmVyc2UgPSBoZWJyZXdTdWJTdHJpbmdzUmFuZ2VzLm1hcChzdHIgPT4gKHsgc3RhcnQ6IHN0ci5pbmRleCEsIGVuZDogc3RyLmluZGV4ISArIHN0clswXS5sZW5ndGggfSkpO1xuICAgIGNvbnN0IG91dCA9IFtdO1xuICAgIGxldCBpbmRleCA9IDA7XG5cbiAgICBmb3IgKGNvbnN0IHsgc3RhcnQsIGVuZCB9IG9mIHJhbmdlc1RvUmV2ZXJzZSkge1xuICAgICAgb3V0LnB1c2goLi4ucGxhaW5TdHJpbmcuc3Vic3RyaW5nKGluZGV4LCBzdGFydCkpO1xuICAgICAgaW5kZXggKz0gc3RhcnQgLSBpbmRleDtcbiAgICAgIGNvbnN0IHJldmVyc2VkID0gWy4uLnBsYWluU3RyaW5nLnN1YnN0cmluZyhzdGFydCwgZW5kKV0ucmV2ZXJzZSgpO1xuICAgICAgb3V0LnB1c2goLi4ucmV2ZXJzZWQpO1xuICAgICAgaW5kZXggKz0gZW5kIC0gc3RhcnQ7XG4gICAgfVxuXG4gICAgb3V0LnB1c2goLi4ucGxhaW5TdHJpbmcuc3Vic3RyaW5nKGluZGV4LCBwbGFpblN0cmluZy5sZW5ndGgpKTtcblxuICAgIHJldHVybiBvdXQuam9pbignJyk7XG4gIH1cblxuICBhc3luYyBmZXRjaERhdGEoKTogUHJvbWlzZTxTY3JhcGVyU2NyYXBpbmdSZXN1bHQ+IHtcbiAgICBpZiAoIXRoaXMuYWNjZXNzVG9rZW4pIHtcbiAgICAgIHJldHVybiBjcmVhdGVHZW5lcmljRXJyb3IoJ2xvZ2luKCkgd2FzIG5vdCBjYWxsZWQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBkZWZhdWx0U3RhcnRNb21lbnQgPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAneWVhcnMnKS5hZGQoMSwgJ2RheScpO1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHRoaXMub3B0aW9ucy5zdGFydERhdGUgfHwgZGVmYXVsdFN0YXJ0TW9tZW50LnRvRGF0ZSgpO1xuICAgIGNvbnN0IHN0YXJ0TW9tZW50ID0gbW9tZW50Lm1heChkZWZhdWx0U3RhcnRNb21lbnQsIG1vbWVudChzdGFydERhdGUpKTtcblxuICAgIGRlYnVnKCdGZXRjaGluZyBhY2NvdW50IGxpc3QnKTtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBmZXRjaEdyYXBocWw8eyBjdXN0b21lcjogQ3VzdG9tZXJbXSB9PihcbiAgICAgIEdSQVBIUUxfQVBJX1VSTCxcbiAgICAgIEdFVF9DVVNUT01FUixcbiAgICAgIHt9LFxuICAgICAgeyBhdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dGhpcy5hY2Nlc3NUb2tlbn1gIH0sXG4gICAgKTtcbiAgICBjb25zdCBwb3J0Zm9saW9zID0gcmVzdWx0LmN1c3RvbWVyLmZsYXRNYXAoY3VzdG9tZXIgPT4gY3VzdG9tZXIucG9ydGZvbGlvcyB8fCBbXSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgIGFjY291bnRzOiBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgcG9ydGZvbGlvcy5tYXAocG9ydGZvbGlvID0+IHRoaXMuZmV0Y2hQb3J0Zm9saW9Nb3ZlbWVudHMocG9ydGZvbGlvLCBzdGFydE1vbWVudC50b0RhdGUoKSkpLFxuICAgICAgKSxcbiAgICB9O1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE1BQUEsR0FBQUYsT0FBQTtBQUNB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
|
|
@@ -7,8 +7,9 @@ exports.default = void 0;
|
|
|
7
7
|
var _moment = _interopRequireDefault(require("moment"));
|
|
8
8
|
var _constants = require("../constants");
|
|
9
9
|
var _elementsInteractions = require("../helpers/elements-interactions");
|
|
10
|
+
var _transactions = require("../helpers/transactions");
|
|
10
11
|
var _navigation = require("../helpers/navigation");
|
|
11
|
-
var
|
|
12
|
+
var _transactions2 = require("../transactions");
|
|
12
13
|
var _baseScraperWithBrowser = require("./base-scraper-with-browser");
|
|
13
14
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
15
|
const BASE_URL = 'https://hb.unionbank.co.il';
|
|
@@ -53,7 +54,7 @@ function convertTransactions(txns, options) {
|
|
|
53
54
|
const convertedDate = (0, _moment.default)(txn.date, DATE_FORMAT).toISOString();
|
|
54
55
|
const convertedAmount = getTxnAmount(txn);
|
|
55
56
|
const result = {
|
|
56
|
-
type:
|
|
57
|
+
type: _transactions2.TransactionTypes.Normal,
|
|
57
58
|
identifier: txn.reference ? parseInt(txn.reference, 10) : undefined,
|
|
58
59
|
date: convertedDate,
|
|
59
60
|
processedDate: convertedDate,
|
|
@@ -65,7 +66,7 @@ function convertTransactions(txns, options) {
|
|
|
65
66
|
memo: txn.memo
|
|
66
67
|
};
|
|
67
68
|
if (options?.includeRawTransaction) {
|
|
68
|
-
result.rawTransaction = txn;
|
|
69
|
+
result.rawTransaction = (0, _transactions.getRawTransaction)(txn);
|
|
69
70
|
}
|
|
70
71
|
return result;
|
|
71
72
|
});
|
|
@@ -181,8 +182,8 @@ async function expandTransactionsTable(page) {
|
|
|
181
182
|
}
|
|
182
183
|
}
|
|
183
184
|
async function scrapeTransactionsFromTable(page, options) {
|
|
184
|
-
const pendingTxns = await extractTransactionsFromTable(page, PENDING_TRANSACTIONS_TABLE_ID,
|
|
185
|
-
const completedTxns = await extractTransactionsFromTable(page, COMPLETED_TRANSACTIONS_TABLE_ID,
|
|
185
|
+
const pendingTxns = await extractTransactionsFromTable(page, PENDING_TRANSACTIONS_TABLE_ID, _transactions2.TransactionStatuses.Pending);
|
|
186
|
+
const completedTxns = await extractTransactionsFromTable(page, COMPLETED_TRANSACTIONS_TABLE_ID, _transactions2.TransactionStatuses.Completed);
|
|
186
187
|
const txns = [...pendingTxns, ...completedTxns];
|
|
187
188
|
return convertTransactions(txns, options);
|
|
188
189
|
}
|
|
@@ -243,4 +244,4 @@ class UnionBankScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
|
|
|
243
244
|
}
|
|
244
245
|
}
|
|
245
246
|
var _default = exports.default = UnionBankScraper;
|
|
246
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29uc3RhbnRzIiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX25hdmlnYXRpb24iLCJfdHJhbnNhY3Rpb25zIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJCQVNFX1VSTCIsIlRSQU5TQUNUSU9OU19VUkwiLCJEQVRFX0ZPUk1BVCIsIk5PX1RSQU5TQUNUSU9OX0lOX0RBVEVfUkFOR0VfVEVYVCIsIkRBVEVfSEVBREVSIiwiREVTQ1JJUFRJT05fSEVBREVSIiwiUkVGRVJFTkNFX0hFQURFUiIsIkRFQklUX0hFQURFUiIsIkNSRURJVF9IRUFERVIiLCJQRU5ESU5HX1RSQU5TQUNUSU9OU19UQUJMRV9JRCIsIkNPTVBMRVRFRF9UUkFOU0FDVElPTlNfVEFCTEVfSUQiLCJFUlJPUl9NRVNTQUdFX0NMQVNTIiwiQUNDT1VOVFNfRFJPUERPV05fU0VMRUNUT1IiLCJnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyIsInVybHMiLCJMb2dpblJlc3VsdHMiLCJTdWNjZXNzIiwiSW52YWxpZFBhc3N3b3JkIiwiY3JlYXRlTG9naW5GaWVsZHMiLCJjcmVkZW50aWFscyIsInNlbGVjdG9yIiwidmFsdWUiLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwiZ2V0QW1vdW50RGF0YSIsImFtb3VudFN0ciIsImFtb3VudFN0ckNvcHkiLCJyZXBsYWNlIiwicGFyc2VGbG9hdCIsImdldFR4bkFtb3VudCIsInR4biIsImNyZWRpdCIsImRlYml0IiwiTnVtYmVyIiwiaXNOYU4iLCJjb252ZXJ0VHJhbnNhY3Rpb25zIiwidHhucyIsIm9wdGlvbnMiLCJtYXAiLCJjb252ZXJ0ZWREYXRlIiwibW9tZW50IiwiZGF0ZSIsInRvSVNPU3RyaW5nIiwiY29udmVydGVkQW1vdW50IiwicmVzdWx0IiwidHlwZSIsIlRyYW5zYWN0aW9uVHlwZXMiLCJOb3JtYWwiLCJpZGVudGlmaWVyIiwicmVmZXJlbmNlIiwicGFyc2VJbnQiLCJ1bmRlZmluZWQiLCJwcm9jZXNzZWREYXRlIiwib3JpZ2luYWxBbW91bnQiLCJvcmlnaW5hbEN1cnJlbmN5IiwiU0hFS0VMX0NVUlJFTkNZIiwiY2hhcmdlZEFtb3VudCIsInN0YXR1cyIsImRlc2NyaXB0aW9uIiwibWVtbyIsImluY2x1ZGVSYXdUcmFuc2FjdGlvbiIsInJhd1RyYW5zYWN0aW9uIiwiZ2V0VHJhbnNhY3Rpb25EYXRlIiwidGRzIiwidHhuc1RhYmxlSGVhZGVycyIsInRyaW0iLCJnZXRUcmFuc2FjdGlvbkRlc2NyaXB0aW9uIiwiZ2V0VHJhbnNhY3Rpb25SZWZlcmVuY2UiLCJnZXRUcmFuc2FjdGlvbkRlYml0IiwiZ2V0VHJhbnNhY3Rpb25DcmVkaXQiLCJleHRyYWN0VHJhbnNhY3Rpb25EZXRhaWxzIiwidHhuUm93IiwidHhuU3RhdHVzIiwiaW5uZXJUZHMiLCJpc0V4cGFuZGVkRGVzY1JvdyIsImlkIiwiZWRpdExhc3RUcmFuc2FjdGlvbkRlc2MiLCJsYXN0VHhuIiwiaGFuZGxlVHJhbnNhY3Rpb25Sb3ciLCJ0eG5UeXBlIiwibGFzdFRyYW5zYWN0aW9uIiwicG9wIiwicHVzaCIsIkVycm9yIiwiZ2V0VHJhbnNhY3Rpb25zVGFibGVIZWFkZXJzIiwicGFnZSIsInRhYmxlVHlwZUlkIiwiaGVhZGVyc01hcCIsImhlYWRlcnNPYmpzIiwicGFnZUV2YWxBbGwiLCJ0aHMiLCJ0aCIsImluZGV4IiwidGV4dCIsImlubmVyVGV4dCIsImhlYWRlck9iaiIsImV4dHJhY3RUcmFuc2FjdGlvbnNGcm9tVGFibGUiLCJ0cmFuc2FjdGlvbnNUYWJsZUhlYWRlcnMiLCJ0cmFuc2FjdGlvbnNSb3dzIiwidHJzIiwidHIiLCJnZXRBdHRyaWJ1dGUiLCJBcnJheSIsImZyb20iLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsInRkIiwiaXNOb1RyYW5zYWN0aW9uSW5EYXRlUmFuZ2VFcnJvciIsImhhc0Vycm9ySW5mb0VsZW1lbnQiLCJlbGVtZW50UHJlc2VudE9uUGFnZSIsImVycm9yVGV4dCIsIiRldmFsIiwiZXJyb3JFbGVtZW50IiwiY2hvb3NlQWNjb3VudCIsImFjY291bnRJZCIsImhhc0Ryb3BEb3duTGlzdCIsImRyb3Bkb3duU2VsZWN0Iiwic2VhcmNoQnlEYXRlcyIsInN0YXJ0RGF0ZSIsIndhaXRVbnRpbEVsZW1lbnRGb3VuZCIsImZpbGxJbnB1dCIsImZvcm1hdCIsImNsaWNrQnV0dG9uIiwid2FpdEZvck5hdmlnYXRpb24iLCJnZXRBY2NvdW50TnVtYmVyIiwic2VsZWN0ZWRTbmlmQWNjb3VudCIsIm9wdGlvbiIsImV4cGFuZFRyYW5zYWN0aW9uc1RhYmxlIiwiaGFzRXhwYW5kQWxsQnV0dG9uIiwic2NyYXBlVHJhbnNhY3Rpb25zRnJvbVRhYmxlIiwicGVuZGluZ1R4bnMiLCJUcmFuc2FjdGlvblN0YXR1c2VzIiwiUGVuZGluZyIsImNvbXBsZXRlZFR4bnMiLCJDb21wbGV0ZWQiLCJnZXRBY2NvdW50VHJhbnNhY3Rpb25zIiwiUHJvbWlzZSIsInJhY2UiLCJub1RyYW5zYWN0aW9uSW5SYW5nZUVycm9yIiwiZmV0Y2hBY2NvdW50RGF0YSIsImFjY291bnROdW1iZXIiLCJmZXRjaEFjY291bnRzIiwiYWNjb3VudHMiLCJhY2NvdW50c0xpc3QiLCJkcm9wZG93bkVsZW1lbnRzIiwiYWNjb3VudCIsImFjY291bnREYXRhIiwid2FpdEZvclBvc3RMb2dpbiIsIlVuaW9uQmFua1NjcmFwZXIiLCJCYXNlU2NyYXBlcldpdGhCcm93c2VyIiwiZ2V0TG9naW5PcHRpb25zIiwibG9naW5VcmwiLCJmaWVsZHMiLCJzdWJtaXRCdXR0b25TZWxlY3RvciIsInBvc3RBY3Rpb24iLCJwb3NzaWJsZVJlc3VsdHMiLCJmZXRjaERhdGEiLCJkZWZhdWx0U3RhcnRNb21lbnQiLCJzdWJ0cmFjdCIsImFkZCIsInRvRGF0ZSIsInN0YXJ0TW9tZW50IiwibWF4IiwibmF2aWdhdGVUbyIsInN1Y2Nlc3MiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyYXBlcnMvdW5pb24tYmFuay50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50LCB7IHR5cGUgTW9tZW50IH0gZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IHR5cGUgUGFnZSB9IGZyb20gJ3B1cHBldGVlci1jb3JlJztcbmltcG9ydCB7IFNIRUtFTF9DVVJSRU5DWSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBjbGlja0J1dHRvbixcbiAgZHJvcGRvd25FbGVtZW50cyxcbiAgZHJvcGRvd25TZWxlY3QsXG4gIGVsZW1lbnRQcmVzZW50T25QYWdlLFxuICBmaWxsSW5wdXQsXG4gIHBhZ2VFdmFsQWxsLFxuICB3YWl0VW50aWxFbGVtZW50Rm91bmQsXG59IGZyb20gJy4uL2hlbHBlcnMvZWxlbWVudHMtaW50ZXJhY3Rpb25zJztcbmltcG9ydCB7IHdhaXRGb3JOYXZpZ2F0aW9uIH0gZnJvbSAnLi4vaGVscGVycy9uYXZpZ2F0aW9uJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uU3RhdHVzZXMsIFRyYW5zYWN0aW9uVHlwZXMsIHR5cGUgVHJhbnNhY3Rpb24sIHR5cGUgVHJhbnNhY3Rpb25zQWNjb3VudCB9IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBCYXNlU2NyYXBlcldpdGhCcm93c2VyLCBMb2dpblJlc3VsdHMsIHR5cGUgUG9zc2libGVMb2dpblJlc3VsdHMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInO1xuaW1wb3J0IHsgdHlwZSBTY3JhcGVyT3B0aW9ucyB9IGZyb20gJy4vaW50ZXJmYWNlJztcblxuY29uc3QgQkFTRV9VUkwgPSAnaHR0cHM6Ly9oYi51bmlvbmJhbmsuY28uaWwnO1xuY29uc3QgVFJBTlNBQ1RJT05TX1VSTCA9IGAke0JBU0VfVVJMfS9lQmFua2luZy9BY2NvdW50cy9FeHRlbmRlZEFjdGl2aXR5LmFzcHgjL2A7XG5jb25zdCBEQVRFX0ZPUk1BVCA9ICdERC9NTS9ZWSc7XG5jb25zdCBOT19UUkFOU0FDVElPTl9JTl9EQVRFX1JBTkdFX1RFWFQgPSAn15zXkCDXp9eZ15nXnteV16og16rXoNeV16LXldeqINee16rXkNeZ157XldeqINei15wg16TXmSDXlNeh15nXoNeV158g16nXlNeV15LXk9eoJztcbmNvbnN0IERBVEVfSEVBREVSID0gJ9eq15DXqNeZ15onO1xuY29uc3QgREVTQ1JJUFRJT05fSEVBREVSID0gJ9eq15nXkNeV16gnO1xuY29uc3QgUkVGRVJFTkNFX0hFQURFUiA9ICfXkNeh157Xm9eq15AnO1xuY29uc3QgREVCSVRfSEVBREVSID0gJ9eX15XXkdeUJztcbmNvbnN0IENSRURJVF9IRUFERVIgPSAn15bXm9eV16onO1xuY29uc3QgUEVORElOR19UUkFOU0FDVElPTlNfVEFCTEVfSUQgPSAndHJUb2RheUFjdGl2aXR5TmFwYVRhYmxlVXBwZXInO1xuY29uc3QgQ09NUExFVEVEX1RSQU5TQUNUSU9OU19UQUJMRV9JRCA9ICdjdGxBY3Rpdml0eVRhYmxlJztcbmNvbnN0IEVSUk9SX01FU1NBR0VfQ0xBU1MgPSAnZXJySW5mbyc7XG5jb25zdCBBQ0NPVU5UU19EUk9QRE9XTl9TRUxFQ1RPUiA9ICdzZWxlY3QjZGRsQWNjb3VudHNfbV9kZGwnO1xuXG5mdW5jdGlvbiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cygpIHtcbiAgY29uc3QgdXJsczogUG9zc2libGVMb2dpblJlc3VsdHMgPSB7fTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuU3VjY2Vzc10gPSBbL2VCYW5raW5nXFwvQWNjb3VudHMvXTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkXSA9IFsvSW50ZXJuYWxTaXRlXFwvQ3VzdG9tVXBkYXRlXFwvbGV1bWlcXC9Mb2dpblBhZ2UuQVNQL107XG4gIHJldHVybiB1cmxzO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpIHtcbiAgcmV0dXJuIFtcbiAgICB7IHNlbGVjdG9yOiAnI3VpZCcsIHZhbHVlOiBjcmVkZW50aWFscy51c2VybmFtZSB9LFxuICAgIHsgc2VsZWN0b3I6ICcjcGFzc3dvcmQnLCB2YWx1ZTogY3JlZGVudGlhbHMucGFzc3dvcmQgfSxcbiAgXTtcbn1cblxuZnVuY3Rpb24gZ2V0QW1vdW50RGF0YShhbW91bnRTdHI6IHN0cmluZykge1xuICBjb25zdCBhbW91bnRTdHJDb3B5ID0gYW1vdW50U3RyLnJlcGxhY2UoJywnLCAnJyk7XG4gIHJldHVybiBwYXJzZUZsb2F0KGFtb3VudFN0ckNvcHkpO1xufVxuXG5pbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uIHtcbiAgY3JlZGl0OiBzdHJpbmc7XG4gIGRlYml0OiBzdHJpbmc7XG4gIGRhdGU6IHN0cmluZztcbiAgcmVmZXJlbmNlPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBtZW1vOiBzdHJpbmc7XG4gIHN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcztcbn1cblxuZnVuY3Rpb24gZ2V0VHhuQW1vdW50KHR4bjogU2NyYXBlZFRyYW5zYWN0aW9uKSB7XG4gIGNvbnN0IGNyZWRpdCA9IGdldEFtb3VudERhdGEodHhuLmNyZWRpdCk7XG4gIGNvbnN0IGRlYml0ID0gZ2V0QW1vdW50RGF0YSh0eG4uZGViaXQpO1xuICByZXR1cm4gKE51bWJlci5pc05hTihjcmVkaXQpID8gMCA6IGNyZWRpdCkgLSAoTnVtYmVyLmlzTmFOKGRlYml0KSA/IDAgOiBkZWJpdCk7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRUcmFuc2FjdGlvbnModHhuczogU2NyYXBlZFRyYW5zYWN0aW9uW10sIG9wdGlvbnM/OiBTY3JhcGVyT3B0aW9ucyk6IFRyYW5zYWN0aW9uW10ge1xuICByZXR1cm4gdHhucy5tYXAodHhuID0+IHtcbiAgICBjb25zdCBjb252ZXJ0ZWREYXRlID0gbW9tZW50KHR4bi5kYXRlLCBEQVRFX0ZPUk1BVCkudG9JU09TdHJpbmcoKTtcbiAgICBjb25zdCBjb252ZXJ0ZWRBbW91bnQgPSBnZXRUeG5BbW91bnQodHhuKTtcbiAgICBjb25zdCByZXN1bHQ6IFRyYW5zYWN0aW9uID0ge1xuICAgICAgdHlwZTogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWwsXG4gICAgICBpZGVudGlmaWVyOiB0eG4ucmVmZXJlbmNlID8gcGFyc2VJbnQodHhuLnJlZmVyZW5jZSwgMTApIDogdW5kZWZpbmVkLFxuICAgICAgZGF0ZTogY29udmVydGVkRGF0ZSxcbiAgICAgIHByb2Nlc3NlZERhdGU6IGNvbnZlcnRlZERhdGUsXG4gICAgICBvcmlnaW5hbEFtb3VudDogY29udmVydGVkQW1vdW50LFxuICAgICAgb3JpZ2luYWxDdXJyZW5jeTogU0hFS0VMX0NVUlJFTkNZLFxuICAgICAgY2hhcmdlZEFtb3VudDogY29udmVydGVkQW1vdW50LFxuICAgICAgc3RhdHVzOiB0eG4uc3RhdHVzLFxuICAgICAgZGVzY3JpcHRpb246IHR4bi5kZXNjcmlwdGlvbixcbiAgICAgIG1lbW86IHR4bi5tZW1vLFxuICAgIH07XG5cbiAgICBpZiAob3B0aW9ucz8uaW5jbHVkZVJhd1RyYW5zYWN0aW9uKSB7XG4gICAgICByZXN1bHQucmF3VHJhbnNhY3Rpb24gPSB0eG47XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59XG5cbnR5cGUgVHJhbnNhY3Rpb25zVHIgPSB7IGlkOiBzdHJpbmc7IGlubmVyVGRzOiBUcmFuc2FjdGlvbnNUclRkcyB9O1xudHlwZSBUcmFuc2FjdGlvblRhYmxlSGVhZGVycyA9IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG50eXBlIFRyYW5zYWN0aW9uc1RyVGRzID0gc3RyaW5nW107XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uRGF0ZSh0ZHM6IFRyYW5zYWN0aW9uc1RyVGRzLCB0eG5zVGFibGVIZWFkZXJzOiBUcmFuc2FjdGlvblRhYmxlSGVhZGVycykge1xuICByZXR1cm4gKHRkc1t0eG5zVGFibGVIZWFkZXJzW0RBVEVfSEVBREVSXV0gfHwgJycpLnRyaW0oKTtcbn1cblxuZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25EZXNjcmlwdGlvbih0ZHM6IFRyYW5zYWN0aW9uc1RyVGRzLCB0eG5zVGFibGVIZWFkZXJzOiBUcmFuc2FjdGlvblRhYmxlSGVhZGVycykge1xuICByZXR1cm4gKHRkc1t0eG5zVGFibGVIZWFkZXJzW0RFU0NSSVBUSU9OX0hFQURFUl1dIHx8ICcnKS50cmltKCk7XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uUmVmZXJlbmNlKHRkczogVHJhbnNhY3Rpb25zVHJUZHMsIHR4bnNUYWJsZUhlYWRlcnM6IFRyYW5zYWN0aW9uVGFibGVIZWFkZXJzKSB7XG4gIHJldHVybiAodGRzW3R4bnNUYWJsZUhlYWRlcnNbUkVGRVJFTkNFX0hFQURFUl1dIHx8ICcnKS50cmltKCk7XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uRGViaXQodGRzOiBUcmFuc2FjdGlvbnNUclRkcywgdHhuc1RhYmxlSGVhZGVyczogVHJhbnNhY3Rpb25UYWJsZUhlYWRlcnMpIHtcbiAgcmV0dXJuICh0ZHNbdHhuc1RhYmxlSGVhZGVyc1tERUJJVF9IRUFERVJdXSB8fCAnJykudHJpbSgpO1xufVxuXG5mdW5jdGlvbiBnZXRUcmFuc2FjdGlvbkNyZWRpdCh0ZHM6IFRyYW5zYWN0aW9uc1RyVGRzLCB0eG5zVGFibGVIZWFkZXJzOiBUcmFuc2FjdGlvblRhYmxlSGVhZGVycykge1xuICByZXR1cm4gKHRkc1t0eG5zVGFibGVIZWFkZXJzW0NSRURJVF9IRUFERVJdXSB8fCAnJykudHJpbSgpO1xufVxuXG5mdW5jdGlvbiBleHRyYWN0VHJhbnNhY3Rpb25EZXRhaWxzKFxuICB0eG5Sb3c6IFRyYW5zYWN0aW9uc1RyLFxuICB0eG5zVGFibGVIZWFkZXJzOiBUcmFuc2FjdGlvblRhYmxlSGVhZGVycyxcbiAgdHhuU3RhdHVzOiBUcmFuc2FjdGlvblN0YXR1c2VzLFxuKTogU2NyYXBlZFRyYW5zYWN0aW9uIHtcbiAgY29uc3QgdGRzID0gdHhuUm93LmlubmVyVGRzO1xuICByZXR1cm4ge1xuICAgIHN0YXR1czogdHhuU3RhdHVzLFxuICAgIGRhdGU6IGdldFRyYW5zYWN0aW9uRGF0ZSh0ZHMsIHR4bnNUYWJsZUhlYWRlcnMpLFxuICAgIGRlc2NyaXB0aW9uOiBnZXRUcmFuc2FjdGlvbkRlc2NyaXB0aW9uKHRkcywgdHhuc1RhYmxlSGVhZGVycyksXG4gICAgcmVmZXJlbmNlOiBnZXRUcmFuc2FjdGlvblJlZmVyZW5jZSh0ZHMsIHR4bnNUYWJsZUhlYWRlcnMpLFxuICAgIGRlYml0OiBnZXRUcmFuc2FjdGlvbkRlYml0KHRkcywgdHhuc1RhYmxlSGVhZGVycyksXG4gICAgY3JlZGl0OiBnZXRUcmFuc2FjdGlvbkNyZWRpdCh0ZHMsIHR4bnNUYWJsZUhlYWRlcnMpLFxuICAgIG1lbW86ICcnLFxuICB9O1xufVxuXG5mdW5jdGlvbiBpc0V4cGFuZGVkRGVzY1Jvdyh0eG5Sb3c6IFRyYW5zYWN0aW9uc1RyKSB7XG4gIHJldHVybiB0eG5Sb3cuaWQgPT09ICdyb3dBZGRlZCc7XG59XG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXBhcmFtLXJlYXNzaWduICovXG5mdW5jdGlvbiBlZGl0TGFzdFRyYW5zYWN0aW9uRGVzYyh0eG5Sb3c6IFRyYW5zYWN0aW9uc1RyLCBsYXN0VHhuOiBTY3JhcGVkVHJhbnNhY3Rpb24pOiBTY3JhcGVkVHJhbnNhY3Rpb24ge1xuICBsYXN0VHhuLmRlc2NyaXB0aW9uID0gYCR7bGFzdFR4bi5kZXNjcmlwdGlvbn0gJHt0eG5Sb3cuaW5uZXJUZHNbMF19YDtcbiAgcmV0dXJuIGxhc3RUeG47XG59XG5cbmZ1bmN0aW9uIGhhbmRsZVRyYW5zYWN0aW9uUm93KFxuICB0eG5zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXSxcbiAgdHhuc1RhYmxlSGVhZGVyczogVHJhbnNhY3Rpb25UYWJsZUhlYWRlcnMsXG4gIHR4blJvdzogVHJhbnNhY3Rpb25zVHIsXG4gIHR4blR5cGU6IFRyYW5zYWN0aW9uU3RhdHVzZXMsXG4pIHtcbiAgaWYgKGlzRXhwYW5kZWREZXNjUm93KHR4blJvdykpIHtcbiAgICBjb25zdCBsYXN0VHJhbnNhY3Rpb24gPSB0eG5zLnBvcCgpO1xuICAgIGlmIChsYXN0VHJhbnNhY3Rpb24pIHtcbiAgICAgIHR4bnMucHVzaChlZGl0TGFzdFRyYW5zYWN0aW9uRGVzYyh0eG5Sb3csIGxhc3RUcmFuc2FjdGlvbikpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludGVybmFsIHVuaW9uLWJhbmsgZXJyb3InKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdHhucy5wdXNoKGV4dHJhY3RUcmFuc2FjdGlvbkRldGFpbHModHhuUm93LCB0eG5zVGFibGVIZWFkZXJzLCB0eG5UeXBlKSk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25zVGFibGVIZWFkZXJzKHBhZ2U6IFBhZ2UsIHRhYmxlVHlwZUlkOiBzdHJpbmcpIHtcbiAgY29uc3QgaGVhZGVyc01hcDogUmVjb3JkPHN0cmluZywgYW55PiA9IFtdO1xuICBjb25zdCBoZWFkZXJzT2JqcyA9IGF3YWl0IHBhZ2VFdmFsQWxsKHBhZ2UsIGAjV29ya1NwYWNlQm94ICMke3RhYmxlVHlwZUlkfSB0cltjbGFzcz0naGVhZGVyJ10gdGhgLCBudWxsLCB0aHMgPT4ge1xuICAgIHJldHVybiB0aHMubWFwKCh0aCwgaW5kZXgpID0+ICh7XG4gICAgICB0ZXh0OiAodGggYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dC50cmltKCksXG4gICAgICBpbmRleCxcbiAgICB9KSk7XG4gIH0pO1xuXG4gIGZvciAoY29uc3QgaGVhZGVyT2JqIG9mIGhlYWRlcnNPYmpzKSB7XG4gICAgaGVhZGVyc01hcFtoZWFkZXJPYmoudGV4dF0gPSBoZWFkZXJPYmouaW5kZXg7XG4gIH1cbiAgcmV0dXJuIGhlYWRlcnNNYXA7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGV4dHJhY3RUcmFuc2FjdGlvbnNGcm9tVGFibGUoXG4gIHBhZ2U6IFBhZ2UsXG4gIHRhYmxlVHlwZUlkOiBzdHJpbmcsXG4gIHR4blR5cGU6IFRyYW5zYWN0aW9uU3RhdHVzZXMsXG4pOiBQcm9taXNlPFNjcmFwZWRUcmFuc2FjdGlvbltdPiB7XG4gIGNvbnN0IHR4bnM6IFNjcmFwZWRUcmFuc2FjdGlvbltdID0gW107XG4gIGNvbnN0IHRyYW5zYWN0aW9uc1RhYmxlSGVhZGVycyA9IGF3YWl0IGdldFRyYW5zYWN0aW9uc1RhYmxlSGVhZGVycyhwYWdlLCB0YWJsZVR5cGVJZCk7XG5cbiAgY29uc3QgdHJhbnNhY3Rpb25zUm93cyA9IGF3YWl0IHBhZ2VFdmFsQWxsPFRyYW5zYWN0aW9uc1RyW10+KFxuICAgIHBhZ2UsXG4gICAgYCNXb3JrU3BhY2VCb3ggIyR7dGFibGVUeXBlSWR9IHRyW2NsYXNzXTpub3QoW2NsYXNzPSdoZWFkZXInXSlgLFxuICAgIFtdLFxuICAgIHRycyA9PiB7XG4gICAgICByZXR1cm4gKHRycyBhcyBIVE1MRWxlbWVudFtdKS5tYXAodHIgPT4gKHtcbiAgICAgICAgaWQ6IHRyLmdldEF0dHJpYnV0ZSgnaWQnKSB8fCAnJyxcbiAgICAgICAgaW5uZXJUZHM6IEFycmF5LmZyb20odHIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3RkJykpLm1hcCh0ZCA9PiAodGQgYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dCksXG4gICAgICB9KSk7XG4gICAgfSxcbiAgKTtcblxuICBmb3IgKGNvbnN0IHR4blJvdyBvZiB0cmFuc2FjdGlvbnNSb3dzKSB7XG4gICAgaGFuZGxlVHJhbnNhY3Rpb25Sb3codHhucywgdHJhbnNhY3Rpb25zVGFibGVIZWFkZXJzLCB0eG5Sb3csIHR4blR5cGUpO1xuICB9XG4gIHJldHVybiB0eG5zO1xufVxuXG5hc3luYyBmdW5jdGlvbiBpc05vVHJhbnNhY3Rpb25JbkRhdGVSYW5nZUVycm9yKHBhZ2U6IFBhZ2UpIHtcbiAgY29uc3QgaGFzRXJyb3JJbmZvRWxlbWVudCA9IGF3YWl0IGVsZW1lbnRQcmVzZW50T25QYWdlKHBhZ2UsIGAuJHtFUlJPUl9NRVNTQUdFX0NMQVNTfWApO1xuICBpZiAoaGFzRXJyb3JJbmZvRWxlbWVudCkge1xuICAgIGNvbnN0IGVycm9yVGV4dCA9IGF3YWl0IHBhZ2UuJGV2YWwoYC4ke0VSUk9SX01FU1NBR0VfQ0xBU1N9YCwgZXJyb3JFbGVtZW50ID0+IHtcbiAgICAgIHJldHVybiAoZXJyb3JFbGVtZW50IGFzIEhUTUxFbGVtZW50KS5pbm5lclRleHQ7XG4gICAgfSk7XG4gICAgcmV0dXJuIGVycm9yVGV4dC50cmltKCkgPT09IE5PX1RSQU5TQUNUSU9OX0lOX0RBVEVfUkFOR0VfVEVYVDtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNob29zZUFjY291bnQocGFnZTogUGFnZSwgYWNjb3VudElkOiBzdHJpbmcpIHtcbiAgY29uc3QgaGFzRHJvcERvd25MaXN0ID0gYXdhaXQgZWxlbWVudFByZXNlbnRPblBhZ2UocGFnZSwgQUNDT1VOVFNfRFJPUERPV05fU0VMRUNUT1IpO1xuICBpZiAoaGFzRHJvcERvd25MaXN0KSB7XG4gICAgYXdhaXQgZHJvcGRvd25TZWxlY3QocGFnZSwgQUNDT1VOVFNfRFJPUERPV05fU0VMRUNUT1IsIGFjY291bnRJZCk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gc2VhcmNoQnlEYXRlcyhwYWdlOiBQYWdlLCBzdGFydERhdGU6IE1vbWVudCkge1xuICBhd2FpdCBkcm9wZG93blNlbGVjdChwYWdlLCAnc2VsZWN0I2RkbFRyYW5zYWN0aW9uUGVyaW9kJywgJzAwNCcpO1xuICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJ3NlbGVjdCNkZGxUcmFuc2FjdGlvblBlcmlvZCcpO1xuICBhd2FpdCBmaWxsSW5wdXQocGFnZSwgJ2lucHV0I2R0RnJvbURhdGVfdGV4dEJveCcsIHN0YXJ0RGF0ZS5mb3JtYXQoREFURV9GT1JNQVQpKTtcbiAgYXdhaXQgY2xpY2tCdXR0b24ocGFnZSwgJ2lucHV0I2J0bkRpc3BsYXlEYXRlcycpO1xuICBhd2FpdCB3YWl0Rm9yTmF2aWdhdGlvbihwYWdlKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QWNjb3VudE51bWJlcihwYWdlOiBQYWdlKSB7XG4gIGNvbnN0IHNlbGVjdGVkU25pZkFjY291bnQgPSBhd2FpdCBwYWdlLiRldmFsKCcjZGRsQWNjb3VudHNfbV9kZGwgb3B0aW9uW3NlbGVjdGVkPVwic2VsZWN0ZWRcIl0nLCBvcHRpb24gPT4ge1xuICAgIHJldHVybiAob3B0aW9uIGFzIEhUTUxFbGVtZW50KS5pbm5lclRleHQ7XG4gIH0pO1xuXG4gIHJldHVybiBzZWxlY3RlZFNuaWZBY2NvdW50LnJlcGxhY2UoJy8nLCAnXycpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBleHBhbmRUcmFuc2FjdGlvbnNUYWJsZShwYWdlOiBQYWdlKSB7XG4gIGNvbnN0IGhhc0V4cGFuZEFsbEJ1dHRvbiA9IGF3YWl0IGVsZW1lbnRQcmVzZW50T25QYWdlKHBhZ2UsIFwiYVtpZCo9J2xua0N0bEV4cGFuZEFsbCddXCIpO1xuICBpZiAoaGFzRXhwYW5kQWxsQnV0dG9uKSB7XG4gICAgYXdhaXQgY2xpY2tCdXR0b24ocGFnZSwgXCJhW2lkKj0nbG5rQ3RsRXhwYW5kQWxsJ11cIik7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gc2NyYXBlVHJhbnNhY3Rpb25zRnJvbVRhYmxlKHBhZ2U6IFBhZ2UsIG9wdGlvbnM/OiBTY3JhcGVyT3B0aW9ucyk6IFByb21pc2U8VHJhbnNhY3Rpb25bXT4ge1xuICBjb25zdCBwZW5kaW5nVHhucyA9IGF3YWl0IGV4dHJhY3RUcmFuc2FjdGlvbnNGcm9tVGFibGUoXG4gICAgcGFnZSxcbiAgICBQRU5ESU5HX1RSQU5TQUNUSU9OU19UQUJMRV9JRCxcbiAgICBUcmFuc2FjdGlvblN0YXR1c2VzLlBlbmRpbmcsXG4gICk7XG4gIGNvbnN0IGNvbXBsZXRlZFR4bnMgPSBhd2FpdCBleHRyYWN0VHJhbnNhY3Rpb25zRnJvbVRhYmxlKFxuICAgIHBhZ2UsXG4gICAgQ09NUExFVEVEX1RSQU5TQUNUSU9OU19UQUJMRV9JRCxcbiAgICBUcmFuc2FjdGlvblN0YXR1c2VzLkNvbXBsZXRlZCxcbiAgKTtcbiAgY29uc3QgdHhucyA9IFsuLi5wZW5kaW5nVHhucywgLi4uY29tcGxldGVkVHhuc107XG4gIHJldHVybiBjb252ZXJ0VHJhbnNhY3Rpb25zKHR4bnMsIG9wdGlvbnMpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRBY2NvdW50VHJhbnNhY3Rpb25zKHBhZ2U6IFBhZ2UsIG9wdGlvbnM/OiBTY3JhcGVyT3B0aW9ucyk6IFByb21pc2U8VHJhbnNhY3Rpb25bXT4ge1xuICBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgIHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCBgIyR7Q09NUExFVEVEX1RSQU5TQUNUSU9OU19UQUJMRV9JRH1gLCBmYWxzZSksXG4gICAgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsIGAuJHtFUlJPUl9NRVNTQUdFX0NMQVNTfWAsIGZhbHNlKSxcbiAgXSk7XG5cbiAgY29uc3Qgbm9UcmFuc2FjdGlvbkluUmFuZ2VFcnJvciA9IGF3YWl0IGlzTm9UcmFuc2FjdGlvbkluRGF0ZVJhbmdlRXJyb3IocGFnZSk7XG4gIGlmIChub1RyYW5zYWN0aW9uSW5SYW5nZUVycm9yKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgYXdhaXQgZXhwYW5kVHJhbnNhY3Rpb25zVGFibGUocGFnZSk7XG4gIHJldHVybiBzY3JhcGVUcmFuc2FjdGlvbnNGcm9tVGFibGUocGFnZSwgb3B0aW9ucyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoQWNjb3VudERhdGEoXG4gIHBhZ2U6IFBhZ2UsXG4gIHN0YXJ0RGF0ZTogTW9tZW50LFxuICBhY2NvdW50SWQ6IHN0cmluZyxcbiAgb3B0aW9ucz86IFNjcmFwZXJPcHRpb25zLFxuKTogUHJvbWlzZTxUcmFuc2FjdGlvbnNBY2NvdW50PiB7XG4gIGF3YWl0IGNob29zZUFjY291bnQocGFnZSwgYWNjb3VudElkKTtcbiAgYXdhaXQgc2VhcmNoQnlEYXRlcyhwYWdlLCBzdGFydERhdGUpO1xuICBjb25zdCBhY2NvdW50TnVtYmVyID0gYXdhaXQgZ2V0QWNjb3VudE51bWJlcihwYWdlKTtcbiAgY29uc3QgdHhucyA9IGF3YWl0IGdldEFjY291bnRUcmFuc2FjdGlvbnMocGFnZSwgb3B0aW9ucyk7XG4gIHJldHVybiB7XG4gICAgYWNjb3VudE51bWJlcixcbiAgICB0eG5zLFxuICB9O1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaEFjY291bnRzKHBhZ2U6IFBhZ2UsIHN0YXJ0RGF0ZTogTW9tZW50LCBvcHRpb25zPzogU2NyYXBlck9wdGlvbnMpIHtcbiAgY29uc3QgYWNjb3VudHM6IFRyYW5zYWN0aW9uc0FjY291bnRbXSA9IFtdO1xuICBjb25zdCBhY2NvdW50c0xpc3QgPSBhd2FpdCBkcm9wZG93bkVsZW1lbnRzKHBhZ2UsIEFDQ09VTlRTX0RST1BET1dOX1NFTEVDVE9SKTtcbiAgZm9yIChjb25zdCBhY2NvdW50IG9mIGFjY291bnRzTGlzdCkge1xuICAgIGlmIChhY2NvdW50LnZhbHVlICE9PSAnLTEnKSB7XG4gICAgICAvLyBTa2lwIFwiQWxsIGFjY291bnRzXCIgb3B0aW9uXG4gICAgICBjb25zdCBhY2NvdW50RGF0YSA9IGF3YWl0IGZldGNoQWNjb3VudERhdGEocGFnZSwgc3RhcnREYXRlLCBhY2NvdW50LnZhbHVlLCBvcHRpb25zKTtcbiAgICAgIGFjY291bnRzLnB1c2goYWNjb3VudERhdGEpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gYWNjb3VudHM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdhaXRGb3JQb3N0TG9naW4ocGFnZTogUGFnZSkge1xuICByZXR1cm4gUHJvbWlzZS5yYWNlKFt3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJyNzaWdub2ZmJywgdHJ1ZSksIHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCAnI3Jlc3RvcmUnLCB0cnVlKV0pO1xufVxuXG50eXBlIFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzID0geyB1c2VybmFtZTogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH07XG5cbmNsYXNzIFVuaW9uQmFua1NjcmFwZXIgZXh0ZW5kcyBCYXNlU2NyYXBlcldpdGhCcm93c2VyPFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzPiB7XG4gIGdldExvZ2luT3B0aW9ucyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9naW5Vcmw6IGAke0JBU0VfVVJMfWAsXG4gICAgICBmaWVsZHM6IGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzKSxcbiAgICAgIHN1Ym1pdEJ1dHRvblNlbGVjdG9yOiAnI2VudGVyJyxcbiAgICAgIHBvc3RBY3Rpb246IGFzeW5jICgpID0+IHdhaXRGb3JQb3N0TG9naW4odGhpcy5wYWdlKSxcbiAgICAgIHBvc3NpYmxlUmVzdWx0czogZ2V0UG9zc2libGVMb2dpblJlc3VsdHMoKSxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hEYXRhKCkge1xuICAgIGNvbnN0IGRlZmF1bHRTdGFydE1vbWVudCA9IG1vbWVudCgpLnN1YnRyYWN0KDEsICd5ZWFycycpLmFkZCgxLCAnZGF5Jyk7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSB8fCBkZWZhdWx0U3RhcnRNb21lbnQudG9EYXRlKCk7XG4gICAgY29uc3Qgc3RhcnRNb21lbnQgPSBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xuXG4gICAgYXdhaXQgdGhpcy5uYXZpZ2F0ZVRvKFRSQU5TQUNUSU9OU19VUkwpO1xuXG4gICAgY29uc3QgYWNjb3VudHMgPSBhd2FpdCBmZXRjaEFjY291bnRzKHRoaXMucGFnZSwgc3RhcnRNb21lbnQsIHRoaXMub3B0aW9ucyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgIGFjY291bnRzLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVW5pb25CYW5rU2NyYXBlcjtcbiJdLCJtYXBwaW5n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QSxlQUFlSyxnQkFBZ0JBLENBQUM3RCxJQUFVLEVBQUU7RUFDMUMsT0FBT2tELE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsSUFBQWxCLDJDQUFxQixFQUFDakMsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFBaUMsMkNBQXFCLEVBQUNqQyxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDckg7QUFJQSxNQUFNOEQsZ0JBQWdCLFNBQVNDLDhDQUFzQixDQUE2QjtFQUNoRkMsZUFBZUEsQ0FBQ2xJLFdBQXVDLEVBQUU7SUFDdkQsT0FBTztNQUNMbUksUUFBUSxFQUFFLEdBQUd0SixRQUFRLEVBQUU7TUFDdkJ1SixNQUFNLEVBQUVySSxpQkFBaUIsQ0FBQ0MsV0FBVyxDQUFDO01BQ3RDcUksb0JBQW9CLEVBQUUsUUFBUTtNQUM5QkMsVUFBVSxFQUFFLE1BQUFBLENBQUEsS0FBWVAsZ0JBQWdCLENBQUMsSUFBSSxDQUFDN0QsSUFBSSxDQUFDO01BQ25EcUUsZUFBZSxFQUFFN0ksdUJBQXVCLENBQUM7SUFDM0MsQ0FBQztFQUNIO0VBRUEsTUFBTThJLFNBQVNBLENBQUEsRUFBRztJQUNoQixNQUFNQyxrQkFBa0IsR0FBRyxJQUFBcEgsZUFBTSxFQUFDLENBQUMsQ0FBQ3FILFFBQVEsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUNDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDO0lBQ3RFLE1BQU16QyxTQUFTLEdBQUcsSUFBSSxDQUFDaEYsT0FBTyxDQUFDZ0YsU0FBUyxJQUFJdUMsa0JBQWtCLENBQUNHLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZFLE1BQU1DLFdBQVcsR0FBR3hILGVBQU0sQ0FBQ3lILEdBQUcsQ0FBQ0wsa0JBQWtCLEVBQUUsSUFBQXBILGVBQU0sRUFBQzZFLFNBQVMsQ0FBQyxDQUFDO0lBRXJFLE1BQU0sSUFBSSxDQUFDNkMsVUFBVSxDQUFDakssZ0JBQWdCLENBQUM7SUFFdkMsTUFBTTRJLFFBQVEsR0FBRyxNQUFNRCxhQUFhLENBQUMsSUFBSSxDQUFDdkQsSUFBSSxFQUFFMkUsV0FBVyxFQUFFLElBQUksQ0FBQzNILE9BQU8sQ0FBQztJQUUxRSxPQUFPO01BQ0w4SCxPQUFPLEVBQUUsSUFBSTtNQUNidEI7SUFDRixDQUFDO0VBQ0g7QUFDRjtBQUFDLElBQUF1QixRQUFBLEdBQUFDLE9BQUEsQ0FBQXRLLE9BQUEsR0FFY29KLGdCQUFnQiIsImlnbm9yZUxpc3QiOltdfQ==
|
|
247
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29uc3RhbnRzIiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX3RyYW5zYWN0aW9ucyIsIl9uYXZpZ2F0aW9uIiwiX3RyYW5zYWN0aW9uczIiLCJfYmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsIkJBU0VfVVJMIiwiVFJBTlNBQ1RJT05TX1VSTCIsIkRBVEVfRk9STUFUIiwiTk9fVFJBTlNBQ1RJT05fSU5fREFURV9SQU5HRV9URVhUIiwiREFURV9IRUFERVIiLCJERVNDUklQVElPTl9IRUFERVIiLCJSRUZFUkVOQ0VfSEVBREVSIiwiREVCSVRfSEVBREVSIiwiQ1JFRElUX0hFQURFUiIsIlBFTkRJTkdfVFJBTlNBQ1RJT05TX1RBQkxFX0lEIiwiQ09NUExFVEVEX1RSQU5TQUNUSU9OU19UQUJMRV9JRCIsIkVSUk9SX01FU1NBR0VfQ0xBU1MiLCJBQ0NPVU5UU19EUk9QRE9XTl9TRUxFQ1RPUiIsImdldFBvc3NpYmxlTG9naW5SZXN1bHRzIiwidXJscyIsIkxvZ2luUmVzdWx0cyIsIlN1Y2Nlc3MiLCJJbnZhbGlkUGFzc3dvcmQiLCJjcmVhdGVMb2dpbkZpZWxkcyIsImNyZWRlbnRpYWxzIiwic2VsZWN0b3IiLCJ2YWx1ZSIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJnZXRBbW91bnREYXRhIiwiYW1vdW50U3RyIiwiYW1vdW50U3RyQ29weSIsInJlcGxhY2UiLCJwYXJzZUZsb2F0IiwiZ2V0VHhuQW1vdW50IiwidHhuIiwiY3JlZGl0IiwiZGViaXQiLCJOdW1iZXIiLCJpc05hTiIsImNvbnZlcnRUcmFuc2FjdGlvbnMiLCJ0eG5zIiwib3B0aW9ucyIsIm1hcCIsImNvbnZlcnRlZERhdGUiLCJtb21lbnQiLCJkYXRlIiwidG9JU09TdHJpbmciLCJjb252ZXJ0ZWRBbW91bnQiLCJyZXN1bHQiLCJ0eXBlIiwiVHJhbnNhY3Rpb25UeXBlcyIsIk5vcm1hbCIsImlkZW50aWZpZXIiLCJyZWZlcmVuY2UiLCJwYXJzZUludCIsInVuZGVmaW5lZCIsInByb2Nlc3NlZERhdGUiLCJvcmlnaW5hbEFtb3VudCIsIm9yaWdpbmFsQ3VycmVuY3kiLCJTSEVLRUxfQ1VSUkVOQ1kiLCJjaGFyZ2VkQW1vdW50Iiwic3RhdHVzIiwiZGVzY3JpcHRpb24iLCJtZW1vIiwiaW5jbHVkZVJhd1RyYW5zYWN0aW9uIiwicmF3VHJhbnNhY3Rpb24iLCJnZXRSYXdUcmFuc2FjdGlvbiIsImdldFRyYW5zYWN0aW9uRGF0ZSIsInRkcyIsInR4bnNUYWJsZUhlYWRlcnMiLCJ0cmltIiwiZ2V0VHJhbnNhY3Rpb25EZXNjcmlwdGlvbiIsImdldFRyYW5zYWN0aW9uUmVmZXJlbmNlIiwiZ2V0VHJhbnNhY3Rpb25EZWJpdCIsImdldFRyYW5zYWN0aW9uQ3JlZGl0IiwiZXh0cmFjdFRyYW5zYWN0aW9uRGV0YWlscyIsInR4blJvdyIsInR4blN0YXR1cyIsImlubmVyVGRzIiwiaXNFeHBhbmRlZERlc2NSb3ciLCJpZCIsImVkaXRMYXN0VHJhbnNhY3Rpb25EZXNjIiwibGFzdFR4biIsImhhbmRsZVRyYW5zYWN0aW9uUm93IiwidHhuVHlwZSIsImxhc3RUcmFuc2FjdGlvbiIsInBvcCIsInB1c2giLCJFcnJvciIsImdldFRyYW5zYWN0aW9uc1RhYmxlSGVhZGVycyIsInBhZ2UiLCJ0YWJsZVR5cGVJZCIsImhlYWRlcnNNYXAiLCJoZWFkZXJzT2JqcyIsInBhZ2VFdmFsQWxsIiwidGhzIiwidGgiLCJpbmRleCIsInRleHQiLCJpbm5lclRleHQiLCJoZWFkZXJPYmoiLCJleHRyYWN0VHJhbnNhY3Rpb25zRnJvbVRhYmxlIiwidHJhbnNhY3Rpb25zVGFibGVIZWFkZXJzIiwidHJhbnNhY3Rpb25zUm93cyIsInRycyIsInRyIiwiZ2V0QXR0cmlidXRlIiwiQXJyYXkiLCJmcm9tIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJ0ZCIsImlzTm9UcmFuc2FjdGlvbkluRGF0ZVJhbmdlRXJyb3IiLCJoYXNFcnJvckluZm9FbGVtZW50IiwiZWxlbWVudFByZXNlbnRPblBhZ2UiLCJlcnJvclRleHQiLCIkZXZhbCIsImVycm9yRWxlbWVudCIsImNob29zZUFjY291bnQiLCJhY2NvdW50SWQiLCJoYXNEcm9wRG93bkxpc3QiLCJkcm9wZG93blNlbGVjdCIsInNlYXJjaEJ5RGF0ZXMiLCJzdGFydERhdGUiLCJ3YWl0VW50aWxFbGVtZW50Rm91bmQiLCJmaWxsSW5wdXQiLCJmb3JtYXQiLCJjbGlja0J1dHRvbiIsIndhaXRGb3JOYXZpZ2F0aW9uIiwiZ2V0QWNjb3VudE51bWJlciIsInNlbGVjdGVkU25pZkFjY291bnQiLCJvcHRpb24iLCJleHBhbmRUcmFuc2FjdGlvbnNUYWJsZSIsImhhc0V4cGFuZEFsbEJ1dHRvbiIsInNjcmFwZVRyYW5zYWN0aW9uc0Zyb21UYWJsZSIsInBlbmRpbmdUeG5zIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIlBlbmRpbmciLCJjb21wbGV0ZWRUeG5zIiwiQ29tcGxldGVkIiwiZ2V0QWNjb3VudFRyYW5zYWN0aW9ucyIsIlByb21pc2UiLCJyYWNlIiwibm9UcmFuc2FjdGlvbkluUmFuZ2VFcnJvciIsImZldGNoQWNjb3VudERhdGEiLCJhY2NvdW50TnVtYmVyIiwiZmV0Y2hBY2NvdW50cyIsImFjY291bnRzIiwiYWNjb3VudHNMaXN0IiwiZHJvcGRvd25FbGVtZW50cyIsImFjY291bnQiLCJhY2NvdW50RGF0YSIsIndhaXRGb3JQb3N0TG9naW4iLCJVbmlvbkJhbmtTY3JhcGVyIiwiQmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImdldExvZ2luT3B0aW9ucyIsImxvZ2luVXJsIiwiZmllbGRzIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJwb3N0QWN0aW9uIiwicG9zc2libGVSZXN1bHRzIiwiZmV0Y2hEYXRhIiwiZGVmYXVsdFN0YXJ0TW9tZW50Iiwic3VidHJhY3QiLCJhZGQiLCJ0b0RhdGUiLCJzdGFydE1vbWVudCIsIm1heCIsIm5hdmlnYXRlVG8iLCJzdWNjZXNzIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL3VuaW9uLWJhbmsudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vbWVudCwgeyB0eXBlIE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyB0eXBlIFBhZ2UgfSBmcm9tICdwdXBwZXRlZXItY29yZSc7XG5pbXBvcnQgeyBTSEVLRUxfQ1VSUkVOQ1kgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgY2xpY2tCdXR0b24sXG4gIGRyb3Bkb3duRWxlbWVudHMsXG4gIGRyb3Bkb3duU2VsZWN0LFxuICBlbGVtZW50UHJlc2VudE9uUGFnZSxcbiAgZmlsbElucHV0LFxuICBwYWdlRXZhbEFsbCxcbiAgd2FpdFVudGlsRWxlbWVudEZvdW5kLFxufSBmcm9tICcuLi9oZWxwZXJzL2VsZW1lbnRzLWludGVyYWN0aW9ucyc7XG5pbXBvcnQgeyBnZXRSYXdUcmFuc2FjdGlvbiB9IGZyb20gJy4uL2hlbHBlcnMvdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IHdhaXRGb3JOYXZpZ2F0aW9uIH0gZnJvbSAnLi4vaGVscGVycy9uYXZpZ2F0aW9uJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uU3RhdHVzZXMsIFRyYW5zYWN0aW9uVHlwZXMsIHR5cGUgVHJhbnNhY3Rpb24sIHR5cGUgVHJhbnNhY3Rpb25zQWNjb3VudCB9IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBCYXNlU2NyYXBlcldpdGhCcm93c2VyLCBMb2dpblJlc3VsdHMsIHR5cGUgUG9zc2libGVMb2dpblJlc3VsdHMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInO1xuaW1wb3J0IHsgdHlwZSBTY3JhcGVyT3B0aW9ucyB9IGZyb20gJy4vaW50ZXJmYWNlJztcblxuY29uc3QgQkFTRV9VUkwgPSAnaHR0cHM6Ly9oYi51bmlvbmJhbmsuY28uaWwnO1xuY29uc3QgVFJBTlNBQ1RJT05TX1VSTCA9IGAke0JBU0VfVVJMfS9lQmFua2luZy9BY2NvdW50cy9FeHRlbmRlZEFjdGl2aXR5LmFzcHgjL2A7XG5jb25zdCBEQVRFX0ZPUk1BVCA9ICdERC9NTS9ZWSc7XG5jb25zdCBOT19UUkFOU0FDVElPTl9JTl9EQVRFX1JBTkdFX1RFWFQgPSAn15zXkCDXp9eZ15nXnteV16og16rXoNeV16LXldeqINee16rXkNeZ157XldeqINei15wg16TXmSDXlNeh15nXoNeV158g16nXlNeV15LXk9eoJztcbmNvbnN0IERBVEVfSEVBREVSID0gJ9eq15DXqNeZ15onO1xuY29uc3QgREVTQ1JJUFRJT05fSEVBREVSID0gJ9eq15nXkNeV16gnO1xuY29uc3QgUkVGRVJFTkNFX0hFQURFUiA9ICfXkNeh157Xm9eq15AnO1xuY29uc3QgREVCSVRfSEVBREVSID0gJ9eX15XXkdeUJztcbmNvbnN0IENSRURJVF9IRUFERVIgPSAn15bXm9eV16onO1xuY29uc3QgUEVORElOR19UUkFOU0FDVElPTlNfVEFCTEVfSUQgPSAndHJUb2RheUFjdGl2aXR5TmFwYVRhYmxlVXBwZXInO1xuY29uc3QgQ09NUExFVEVEX1RSQU5TQUNUSU9OU19UQUJMRV9JRCA9ICdjdGxBY3Rpdml0eVRhYmxlJztcbmNvbnN0IEVSUk9SX01FU1NBR0VfQ0xBU1MgPSAnZXJySW5mbyc7XG5jb25zdCBBQ0NPVU5UU19EUk9QRE9XTl9TRUxFQ1RPUiA9ICdzZWxlY3QjZGRsQWNjb3VudHNfbV9kZGwnO1xuXG5mdW5jdGlvbiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cygpIHtcbiAgY29uc3QgdXJsczogUG9zc2libGVMb2dpblJlc3VsdHMgPSB7fTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuU3VjY2Vzc10gPSBbL2VCYW5raW5nXFwvQWNjb3VudHMvXTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkXSA9IFsvSW50ZXJuYWxTaXRlXFwvQ3VzdG9tVXBkYXRlXFwvbGV1bWlcXC9Mb2dpblBhZ2UuQVNQL107XG4gIHJldHVybiB1cmxzO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpIHtcbiAgcmV0dXJuIFtcbiAgICB7IHNlbGVjdG9yOiAnI3VpZCcsIHZhbHVlOiBjcmVkZW50aWFscy51c2VybmFtZSB9LFxuICAgIHsgc2VsZWN0b3I6ICcjcGFzc3dvcmQnLCB2YWx1ZTogY3JlZGVudGlhbHMucGFzc3dvcmQgfSxcbiAgXTtcbn1cblxuZnVuY3Rpb24gZ2V0QW1vdW50RGF0YShhbW91bnRTdHI6IHN0cmluZykge1xuICBjb25zdCBhbW91bnRTdHJDb3B5ID0gYW1vdW50U3RyLnJlcGxhY2UoJywnLCAnJyk7XG4gIHJldHVybiBwYXJzZUZsb2F0KGFtb3VudFN0ckNvcHkpO1xufVxuXG5pbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uIHtcbiAgY3JlZGl0OiBzdHJpbmc7XG4gIGRlYml0OiBzdHJpbmc7XG4gIGRhdGU6IHN0cmluZztcbiAgcmVmZXJlbmNlPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBtZW1vOiBzdHJpbmc7XG4gIHN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcztcbn1cblxuZnVuY3Rpb24gZ2V0VHhuQW1vdW50KHR4bjogU2NyYXBlZFRyYW5zYWN0aW9uKSB7XG4gIGNvbnN0IGNyZWRpdCA9IGdldEFtb3VudERhdGEodHhuLmNyZWRpdCk7XG4gIGNvbnN0IGRlYml0ID0gZ2V0QW1vdW50RGF0YSh0eG4uZGViaXQpO1xuICByZXR1cm4gKE51bWJlci5pc05hTihjcmVkaXQpID8gMCA6IGNyZWRpdCkgLSAoTnVtYmVyLmlzTmFOKGRlYml0KSA/IDAgOiBkZWJpdCk7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRUcmFuc2FjdGlvbnModHhuczogU2NyYXBlZFRyYW5zYWN0aW9uW10sIG9wdGlvbnM/OiBTY3JhcGVyT3B0aW9ucyk6IFRyYW5zYWN0aW9uW10ge1xuICByZXR1cm4gdHhucy5tYXAodHhuID0+IHtcbiAgICBjb25zdCBjb252ZXJ0ZWREYXRlID0gbW9tZW50KHR4bi5kYXRlLCBEQVRFX0ZPUk1BVCkudG9JU09TdHJpbmcoKTtcbiAgICBjb25zdCBjb252ZXJ0ZWRBbW91bnQgPSBnZXRUeG5BbW91bnQodHhuKTtcbiAgICBjb25zdCByZXN1bHQ6IFRyYW5zYWN0aW9uID0ge1xuICAgICAgdHlwZTogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWwsXG4gICAgICBpZGVudGlmaWVyOiB0eG4ucmVmZXJlbmNlID8gcGFyc2VJbnQodHhuLnJlZmVyZW5jZSwgMTApIDogdW5kZWZpbmVkLFxuICAgICAgZGF0ZTogY29udmVydGVkRGF0ZSxcbiAgICAgIHByb2Nlc3NlZERhdGU6IGNvbnZlcnRlZERhdGUsXG4gICAgICBvcmlnaW5hbEFtb3VudDogY29udmVydGVkQW1vdW50LFxuICAgICAgb3JpZ2luYWxDdXJyZW5jeTogU0hFS0VMX0NVUlJFTkNZLFxuICAgICAgY2hhcmdlZEFtb3VudDogY29udmVydGVkQW1vdW50LFxuICAgICAgc3RhdHVzOiB0eG4uc3RhdHVzLFxuICAgICAgZGVzY3JpcHRpb246IHR4bi5kZXNjcmlwdGlvbixcbiAgICAgIG1lbW86IHR4bi5tZW1vLFxuICAgIH07XG5cbiAgICBpZiAob3B0aW9ucz8uaW5jbHVkZVJhd1RyYW5zYWN0aW9uKSB7XG4gICAgICByZXN1bHQucmF3VHJhbnNhY3Rpb24gPSBnZXRSYXdUcmFuc2FjdGlvbih0eG4pO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH0pO1xufVxuXG50eXBlIFRyYW5zYWN0aW9uc1RyID0geyBpZDogc3RyaW5nOyBpbm5lclRkczogVHJhbnNhY3Rpb25zVHJUZHMgfTtcbnR5cGUgVHJhbnNhY3Rpb25UYWJsZUhlYWRlcnMgPSBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xudHlwZSBUcmFuc2FjdGlvbnNUclRkcyA9IHN0cmluZ1tdO1xuXG5mdW5jdGlvbiBnZXRUcmFuc2FjdGlvbkRhdGUodGRzOiBUcmFuc2FjdGlvbnNUclRkcywgdHhuc1RhYmxlSGVhZGVyczogVHJhbnNhY3Rpb25UYWJsZUhlYWRlcnMpIHtcbiAgcmV0dXJuICh0ZHNbdHhuc1RhYmxlSGVhZGVyc1tEQVRFX0hFQURFUl1dIHx8ICcnKS50cmltKCk7XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uRGVzY3JpcHRpb24odGRzOiBUcmFuc2FjdGlvbnNUclRkcywgdHhuc1RhYmxlSGVhZGVyczogVHJhbnNhY3Rpb25UYWJsZUhlYWRlcnMpIHtcbiAgcmV0dXJuICh0ZHNbdHhuc1RhYmxlSGVhZGVyc1tERVNDUklQVElPTl9IRUFERVJdXSB8fCAnJykudHJpbSgpO1xufVxuXG5mdW5jdGlvbiBnZXRUcmFuc2FjdGlvblJlZmVyZW5jZSh0ZHM6IFRyYW5zYWN0aW9uc1RyVGRzLCB0eG5zVGFibGVIZWFkZXJzOiBUcmFuc2FjdGlvblRhYmxlSGVhZGVycykge1xuICByZXR1cm4gKHRkc1t0eG5zVGFibGVIZWFkZXJzW1JFRkVSRU5DRV9IRUFERVJdXSB8fCAnJykudHJpbSgpO1xufVxuXG5mdW5jdGlvbiBnZXRUcmFuc2FjdGlvbkRlYml0KHRkczogVHJhbnNhY3Rpb25zVHJUZHMsIHR4bnNUYWJsZUhlYWRlcnM6IFRyYW5zYWN0aW9uVGFibGVIZWFkZXJzKSB7XG4gIHJldHVybiAodGRzW3R4bnNUYWJsZUhlYWRlcnNbREVCSVRfSEVBREVSXV0gfHwgJycpLnRyaW0oKTtcbn1cblxuZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25DcmVkaXQodGRzOiBUcmFuc2FjdGlvbnNUclRkcywgdHhuc1RhYmxlSGVhZGVyczogVHJhbnNhY3Rpb25UYWJsZUhlYWRlcnMpIHtcbiAgcmV0dXJuICh0ZHNbdHhuc1RhYmxlSGVhZGVyc1tDUkVESVRfSEVBREVSXV0gfHwgJycpLnRyaW0oKTtcbn1cblxuZnVuY3Rpb24gZXh0cmFjdFRyYW5zYWN0aW9uRGV0YWlscyhcbiAgdHhuUm93OiBUcmFuc2FjdGlvbnNUcixcbiAgdHhuc1RhYmxlSGVhZGVyczogVHJhbnNhY3Rpb25UYWJsZUhlYWRlcnMsXG4gIHR4blN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcyxcbik6IFNjcmFwZWRUcmFuc2FjdGlvbiB7XG4gIGNvbnN0IHRkcyA9IHR4blJvdy5pbm5lclRkcztcbiAgcmV0dXJuIHtcbiAgICBzdGF0dXM6IHR4blN0YXR1cyxcbiAgICBkYXRlOiBnZXRUcmFuc2FjdGlvbkRhdGUodGRzLCB0eG5zVGFibGVIZWFkZXJzKSxcbiAgICBkZXNjcmlwdGlvbjogZ2V0VHJhbnNhY3Rpb25EZXNjcmlwdGlvbih0ZHMsIHR4bnNUYWJsZUhlYWRlcnMpLFxuICAgIHJlZmVyZW5jZTogZ2V0VHJhbnNhY3Rpb25SZWZlcmVuY2UodGRzLCB0eG5zVGFibGVIZWFkZXJzKSxcbiAgICBkZWJpdDogZ2V0VHJhbnNhY3Rpb25EZWJpdCh0ZHMsIHR4bnNUYWJsZUhlYWRlcnMpLFxuICAgIGNyZWRpdDogZ2V0VHJhbnNhY3Rpb25DcmVkaXQodGRzLCB0eG5zVGFibGVIZWFkZXJzKSxcbiAgICBtZW1vOiAnJyxcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNFeHBhbmRlZERlc2NSb3codHhuUm93OiBUcmFuc2FjdGlvbnNUcikge1xuICByZXR1cm4gdHhuUm93LmlkID09PSAncm93QWRkZWQnO1xufVxuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1wYXJhbS1yZWFzc2lnbiAqL1xuZnVuY3Rpb24gZWRpdExhc3RUcmFuc2FjdGlvbkRlc2ModHhuUm93OiBUcmFuc2FjdGlvbnNUciwgbGFzdFR4bjogU2NyYXBlZFRyYW5zYWN0aW9uKTogU2NyYXBlZFRyYW5zYWN0aW9uIHtcbiAgbGFzdFR4bi5kZXNjcmlwdGlvbiA9IGAke2xhc3RUeG4uZGVzY3JpcHRpb259ICR7dHhuUm93LmlubmVyVGRzWzBdfWA7XG4gIHJldHVybiBsYXN0VHhuO1xufVxuXG5mdW5jdGlvbiBoYW5kbGVUcmFuc2FjdGlvblJvdyhcbiAgdHhuczogU2NyYXBlZFRyYW5zYWN0aW9uW10sXG4gIHR4bnNUYWJsZUhlYWRlcnM6IFRyYW5zYWN0aW9uVGFibGVIZWFkZXJzLFxuICB0eG5Sb3c6IFRyYW5zYWN0aW9uc1RyLFxuICB0eG5UeXBlOiBUcmFuc2FjdGlvblN0YXR1c2VzLFxuKSB7XG4gIGlmIChpc0V4cGFuZGVkRGVzY1Jvdyh0eG5Sb3cpKSB7XG4gICAgY29uc3QgbGFzdFRyYW5zYWN0aW9uID0gdHhucy5wb3AoKTtcbiAgICBpZiAobGFzdFRyYW5zYWN0aW9uKSB7XG4gICAgICB0eG5zLnB1c2goZWRpdExhc3RUcmFuc2FjdGlvbkRlc2ModHhuUm93LCBsYXN0VHJhbnNhY3Rpb24pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnRlcm5hbCB1bmlvbi1iYW5rIGVycm9yJyk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHR4bnMucHVzaChleHRyYWN0VHJhbnNhY3Rpb25EZXRhaWxzKHR4blJvdywgdHhuc1RhYmxlSGVhZGVycywgdHhuVHlwZSkpO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uc1RhYmxlSGVhZGVycyhwYWdlOiBQYWdlLCB0YWJsZVR5cGVJZDogc3RyaW5nKSB7XG4gIGNvbnN0IGhlYWRlcnNNYXA6IFJlY29yZDxzdHJpbmcsIGFueT4gPSBbXTtcbiAgY29uc3QgaGVhZGVyc09ianMgPSBhd2FpdCBwYWdlRXZhbEFsbChwYWdlLCBgI1dvcmtTcGFjZUJveCAjJHt0YWJsZVR5cGVJZH0gdHJbY2xhc3M9J2hlYWRlciddIHRoYCwgbnVsbCwgdGhzID0+IHtcbiAgICByZXR1cm4gdGhzLm1hcCgodGgsIGluZGV4KSA9PiAoe1xuICAgICAgdGV4dDogKHRoIGFzIEhUTUxFbGVtZW50KS5pbm5lclRleHQudHJpbSgpLFxuICAgICAgaW5kZXgsXG4gICAgfSkpO1xuICB9KTtcblxuICBmb3IgKGNvbnN0IGhlYWRlck9iaiBvZiBoZWFkZXJzT2Jqcykge1xuICAgIGhlYWRlcnNNYXBbaGVhZGVyT2JqLnRleHRdID0gaGVhZGVyT2JqLmluZGV4O1xuICB9XG4gIHJldHVybiBoZWFkZXJzTWFwO1xufVxuXG5hc3luYyBmdW5jdGlvbiBleHRyYWN0VHJhbnNhY3Rpb25zRnJvbVRhYmxlKFxuICBwYWdlOiBQYWdlLFxuICB0YWJsZVR5cGVJZDogc3RyaW5nLFxuICB0eG5UeXBlOiBUcmFuc2FjdGlvblN0YXR1c2VzLFxuKTogUHJvbWlzZTxTY3JhcGVkVHJhbnNhY3Rpb25bXT4ge1xuICBjb25zdCB0eG5zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXSA9IFtdO1xuICBjb25zdCB0cmFuc2FjdGlvbnNUYWJsZUhlYWRlcnMgPSBhd2FpdCBnZXRUcmFuc2FjdGlvbnNUYWJsZUhlYWRlcnMocGFnZSwgdGFibGVUeXBlSWQpO1xuXG4gIGNvbnN0IHRyYW5zYWN0aW9uc1Jvd3MgPSBhd2FpdCBwYWdlRXZhbEFsbDxUcmFuc2FjdGlvbnNUcltdPihcbiAgICBwYWdlLFxuICAgIGAjV29ya1NwYWNlQm94ICMke3RhYmxlVHlwZUlkfSB0cltjbGFzc106bm90KFtjbGFzcz0naGVhZGVyJ10pYCxcbiAgICBbXSxcbiAgICB0cnMgPT4ge1xuICAgICAgcmV0dXJuICh0cnMgYXMgSFRNTEVsZW1lbnRbXSkubWFwKHRyID0+ICh7XG4gICAgICAgIGlkOiB0ci5nZXRBdHRyaWJ1dGUoJ2lkJykgfHwgJycsXG4gICAgICAgIGlubmVyVGRzOiBBcnJheS5mcm9tKHRyLmdldEVsZW1lbnRzQnlUYWdOYW1lKCd0ZCcpKS5tYXAodGQgPT4gKHRkIGFzIEhUTUxFbGVtZW50KS5pbm5lclRleHQpLFxuICAgICAgfSkpO1xuICAgIH0sXG4gICk7XG5cbiAgZm9yIChjb25zdCB0eG5Sb3cgb2YgdHJhbnNhY3Rpb25zUm93cykge1xuICAgIGhhbmRsZVRyYW5zYWN0aW9uUm93KHR4bnMsIHRyYW5zYWN0aW9uc1RhYmxlSGVhZGVycywgdHhuUm93LCB0eG5UeXBlKTtcbiAgfVxuICByZXR1cm4gdHhucztcbn1cblxuYXN5bmMgZnVuY3Rpb24gaXNOb1RyYW5zYWN0aW9uSW5EYXRlUmFuZ2VFcnJvcihwYWdlOiBQYWdlKSB7XG4gIGNvbnN0IGhhc0Vycm9ySW5mb0VsZW1lbnQgPSBhd2FpdCBlbGVtZW50UHJlc2VudE9uUGFnZShwYWdlLCBgLiR7RVJST1JfTUVTU0FHRV9DTEFTU31gKTtcbiAgaWYgKGhhc0Vycm9ySW5mb0VsZW1lbnQpIHtcbiAgICBjb25zdCBlcnJvclRleHQgPSBhd2FpdCBwYWdlLiRldmFsKGAuJHtFUlJPUl9NRVNTQUdFX0NMQVNTfWAsIGVycm9yRWxlbWVudCA9PiB7XG4gICAgICByZXR1cm4gKGVycm9yRWxlbWVudCBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0O1xuICAgIH0pO1xuICAgIHJldHVybiBlcnJvclRleHQudHJpbSgpID09PSBOT19UUkFOU0FDVElPTl9JTl9EQVRFX1JBTkdFX1RFWFQ7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5hc3luYyBmdW5jdGlvbiBjaG9vc2VBY2NvdW50KHBhZ2U6IFBhZ2UsIGFjY291bnRJZDogc3RyaW5nKSB7XG4gIGNvbnN0IGhhc0Ryb3BEb3duTGlzdCA9IGF3YWl0IGVsZW1lbnRQcmVzZW50T25QYWdlKHBhZ2UsIEFDQ09VTlRTX0RST1BET1dOX1NFTEVDVE9SKTtcbiAgaWYgKGhhc0Ryb3BEb3duTGlzdCkge1xuICAgIGF3YWl0IGRyb3Bkb3duU2VsZWN0KHBhZ2UsIEFDQ09VTlRTX0RST1BET1dOX1NFTEVDVE9SLCBhY2NvdW50SWQpO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNlYXJjaEJ5RGF0ZXMocGFnZTogUGFnZSwgc3RhcnREYXRlOiBNb21lbnQpIHtcbiAgYXdhaXQgZHJvcGRvd25TZWxlY3QocGFnZSwgJ3NlbGVjdCNkZGxUcmFuc2FjdGlvblBlcmlvZCcsICcwMDQnKTtcbiAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICdzZWxlY3QjZGRsVHJhbnNhY3Rpb25QZXJpb2QnKTtcbiAgYXdhaXQgZmlsbElucHV0KHBhZ2UsICdpbnB1dCNkdEZyb21EYXRlX3RleHRCb3gnLCBzdGFydERhdGUuZm9ybWF0KERBVEVfRk9STUFUKSk7XG4gIGF3YWl0IGNsaWNrQnV0dG9uKHBhZ2UsICdpbnB1dCNidG5EaXNwbGF5RGF0ZXMnKTtcbiAgYXdhaXQgd2FpdEZvck5hdmlnYXRpb24ocGFnZSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldEFjY291bnROdW1iZXIocGFnZTogUGFnZSkge1xuICBjb25zdCBzZWxlY3RlZFNuaWZBY2NvdW50ID0gYXdhaXQgcGFnZS4kZXZhbCgnI2RkbEFjY291bnRzX21fZGRsIG9wdGlvbltzZWxlY3RlZD1cInNlbGVjdGVkXCJdJywgb3B0aW9uID0+IHtcbiAgICByZXR1cm4gKG9wdGlvbiBhcyBIVE1MRWxlbWVudCkuaW5uZXJUZXh0O1xuICB9KTtcblxuICByZXR1cm4gc2VsZWN0ZWRTbmlmQWNjb3VudC5yZXBsYWNlKCcvJywgJ18nKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZXhwYW5kVHJhbnNhY3Rpb25zVGFibGUocGFnZTogUGFnZSkge1xuICBjb25zdCBoYXNFeHBhbmRBbGxCdXR0b24gPSBhd2FpdCBlbGVtZW50UHJlc2VudE9uUGFnZShwYWdlLCBcImFbaWQqPSdsbmtDdGxFeHBhbmRBbGwnXVwiKTtcbiAgaWYgKGhhc0V4cGFuZEFsbEJ1dHRvbikge1xuICAgIGF3YWl0IGNsaWNrQnV0dG9uKHBhZ2UsIFwiYVtpZCo9J2xua0N0bEV4cGFuZEFsbCddXCIpO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNjcmFwZVRyYW5zYWN0aW9uc0Zyb21UYWJsZShwYWdlOiBQYWdlLCBvcHRpb25zPzogU2NyYXBlck9wdGlvbnMpOiBQcm9taXNlPFRyYW5zYWN0aW9uW10+IHtcbiAgY29uc3QgcGVuZGluZ1R4bnMgPSBhd2FpdCBleHRyYWN0VHJhbnNhY3Rpb25zRnJvbVRhYmxlKFxuICAgIHBhZ2UsXG4gICAgUEVORElOR19UUkFOU0FDVElPTlNfVEFCTEVfSUQsXG4gICAgVHJhbnNhY3Rpb25TdGF0dXNlcy5QZW5kaW5nLFxuICApO1xuICBjb25zdCBjb21wbGV0ZWRUeG5zID0gYXdhaXQgZXh0cmFjdFRyYW5zYWN0aW9uc0Zyb21UYWJsZShcbiAgICBwYWdlLFxuICAgIENPTVBMRVRFRF9UUkFOU0FDVElPTlNfVEFCTEVfSUQsXG4gICAgVHJhbnNhY3Rpb25TdGF0dXNlcy5Db21wbGV0ZWQsXG4gICk7XG4gIGNvbnN0IHR4bnMgPSBbLi4ucGVuZGluZ1R4bnMsIC4uLmNvbXBsZXRlZFR4bnNdO1xuICByZXR1cm4gY29udmVydFRyYW5zYWN0aW9ucyh0eG5zLCBvcHRpb25zKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZ2V0QWNjb3VudFRyYW5zYWN0aW9ucyhwYWdlOiBQYWdlLCBvcHRpb25zPzogU2NyYXBlck9wdGlvbnMpOiBQcm9taXNlPFRyYW5zYWN0aW9uW10+IHtcbiAgYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgYCMke0NPTVBMRVRFRF9UUkFOU0FDVElPTlNfVEFCTEVfSUR9YCwgZmFsc2UpLFxuICAgIHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCBgLiR7RVJST1JfTUVTU0FHRV9DTEFTU31gLCBmYWxzZSksXG4gIF0pO1xuXG4gIGNvbnN0IG5vVHJhbnNhY3Rpb25JblJhbmdlRXJyb3IgPSBhd2FpdCBpc05vVHJhbnNhY3Rpb25JbkRhdGVSYW5nZUVycm9yKHBhZ2UpO1xuICBpZiAobm9UcmFuc2FjdGlvbkluUmFuZ2VFcnJvcikge1xuICAgIHJldHVybiBbXTtcbiAgfVxuXG4gIGF3YWl0IGV4cGFuZFRyYW5zYWN0aW9uc1RhYmxlKHBhZ2UpO1xuICByZXR1cm4gc2NyYXBlVHJhbnNhY3Rpb25zRnJvbVRhYmxlKHBhZ2UsIG9wdGlvbnMpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBmZXRjaEFjY291bnREYXRhKFxuICBwYWdlOiBQYWdlLFxuICBzdGFydERhdGU6IE1vbWVudCxcbiAgYWNjb3VudElkOiBzdHJpbmcsXG4gIG9wdGlvbnM/OiBTY3JhcGVyT3B0aW9ucyxcbik6IFByb21pc2U8VHJhbnNhY3Rpb25zQWNjb3VudD4ge1xuICBhd2FpdCBjaG9vc2VBY2NvdW50KHBhZ2UsIGFjY291bnRJZCk7XG4gIGF3YWl0IHNlYXJjaEJ5RGF0ZXMocGFnZSwgc3RhcnREYXRlKTtcbiAgY29uc3QgYWNjb3VudE51bWJlciA9IGF3YWl0IGdldEFjY291bnROdW1iZXIocGFnZSk7XG4gIGNvbnN0IHR4bnMgPSBhd2FpdCBnZXRBY2NvdW50VHJhbnNhY3Rpb25zKHBhZ2UsIG9wdGlvbnMpO1xuICByZXR1cm4ge1xuICAgIGFjY291bnROdW1iZXIsXG4gICAgdHhucyxcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hBY2NvdW50cyhwYWdlOiBQYWdlLCBzdGFydERhdGU6IE1vbWVudCwgb3B0aW9ucz86IFNjcmFwZXJPcHRpb25zKSB7XG4gIGNvbnN0IGFjY291bnRzOiBUcmFuc2FjdGlvbnNBY2NvdW50W10gPSBbXTtcbiAgY29uc3QgYWNjb3VudHNMaXN0ID0gYXdhaXQgZHJvcGRvd25FbGVtZW50cyhwYWdlLCBBQ0NPVU5UU19EUk9QRE9XTl9TRUxFQ1RPUik7XG4gIGZvciAoY29uc3QgYWNjb3VudCBvZiBhY2NvdW50c0xpc3QpIHtcbiAgICBpZiAoYWNjb3VudC52YWx1ZSAhPT0gJy0xJykge1xuICAgICAgLy8gU2tpcCBcIkFsbCBhY2NvdW50c1wiIG9wdGlvblxuICAgICAgY29uc3QgYWNjb3VudERhdGEgPSBhd2FpdCBmZXRjaEFjY291bnREYXRhKHBhZ2UsIHN0YXJ0RGF0ZSwgYWNjb3VudC52YWx1ZSwgb3B0aW9ucyk7XG4gICAgICBhY2NvdW50cy5wdXNoKGFjY291bnREYXRhKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGFjY291bnRzO1xufVxuXG5hc3luYyBmdW5jdGlvbiB3YWl0Rm9yUG9zdExvZ2luKHBhZ2U6IFBhZ2UpIHtcbiAgcmV0dXJuIFByb21pc2UucmFjZShbd2FpdFVudGlsRWxlbWVudEZvdW5kKHBhZ2UsICcjc2lnbm9mZicsIHRydWUpLCB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgJyNyZXN0b3JlJywgdHJ1ZSldKTtcbn1cblxudHlwZSBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyA9IHsgdXNlcm5hbWU6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9O1xuXG5jbGFzcyBVbmlvbkJhbmtTY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXJXaXRoQnJvd3NlcjxTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscz4ge1xuICBnZXRMb2dpbk9wdGlvbnMoY3JlZGVudGlhbHM6IFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvZ2luVXJsOiBgJHtCQVNFX1VSTH1gLFxuICAgICAgZmllbGRzOiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFscyksXG4gICAgICBzdWJtaXRCdXR0b25TZWxlY3RvcjogJyNlbnRlcicsXG4gICAgICBwb3N0QWN0aW9uOiBhc3luYyAoKSA9PiB3YWl0Rm9yUG9zdExvZ2luKHRoaXMucGFnZSksXG4gICAgICBwb3NzaWJsZVJlc3VsdHM6IGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKCksXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoRGF0YSgpIHtcbiAgICBjb25zdCBkZWZhdWx0U3RhcnRNb21lbnQgPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAneWVhcnMnKS5hZGQoMSwgJ2RheScpO1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHRoaXMub3B0aW9ucy5zdGFydERhdGUgfHwgZGVmYXVsdFN0YXJ0TW9tZW50LnRvRGF0ZSgpO1xuICAgIGNvbnN0IHN0YXJ0TW9tZW50ID0gbW9tZW50Lm1heChkZWZhdWx0U3RhcnRNb21lbnQsIG1vbWVudChzdGFydERhdGUpKTtcblxuICAgIGF3YWl0IHRoaXMubmF2aWdhdGVUbyhUUkFOU0FDVElPTlNfVVJMKTtcblxuICAgIGNvbnN0IGFjY291bnRzID0gYXdhaXQgZmV0Y2hBY2NvdW50cyh0aGlzLnBhZ2UsIHN0YXJ0TW9tZW50LCB0aGlzLm9wdGlvbnMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICBhY2NvdW50cyxcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFVuaW9uQmFua1NjcmFwZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFVBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLHFCQUFBLEdBQUFGLE9BQUE7QUFTQSxJQUFBRyxhQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxXQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxjQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSx1QkFBQSxHQUFBTixPQUFBO0FBQThHLFNBQUFELHVCQUFBUSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBRzlHLE1BQU1HLFFBQVEsR0FBRyw0QkFBNEI7QUFDN0MsTUFBTUMsZ0JBQWdCLEdBQUcsR0FBR0QsUUFBUSw0Q0FBNEM7QUFDaEYsTUFBTUUsV0FBVyxHQUFHLFVBQVU7QUFDOUIsTUFBTUMsaUNBQWlDLEdBQUcsOENBQThDO0FBQ3hGLE1BQU1DLFdBQVcsR0FBRyxPQUFPO0FBQzNCLE1BQU1DLGtCQUFrQixHQUFHLE9BQU87QUFDbEMsTUFBTUMsZ0JBQWdCLEdBQUcsUUFBUTtBQUNqQyxNQUFNQyxZQUFZLEdBQUcsTUFBTTtBQUMzQixNQUFNQyxhQUFhLEdBQUcsTUFBTTtBQUM1QixNQUFNQyw2QkFBNkIsR0FBRywrQkFBK0I7QUFDckUsTUFBTUMsK0JBQStCLEdBQUcsa0JBQWtCO0FBQzFELE1BQU1DLG1CQUFtQixHQUFHLFNBQVM7QUFDckMsTUFBTUMsMEJBQTBCLEdBQUcsMEJBQTBCO0FBRTdELFNBQVNDLHVCQUF1QkEsQ0FBQSxFQUFHO0VBQ2pDLE1BQU1DLElBQTBCLEdBQUcsQ0FBQyxDQUFDO0VBQ3JDQSxJQUFJLENBQUNDLG9DQUFZLENBQUNDLE9BQU8sQ0FBQyxHQUFHLENBQUMsb0JBQW9CLENBQUM7RUFDbkRGLElBQUksQ0FBQ0Msb0NBQVksQ0FBQ0UsZUFBZSxDQUFDLEdBQUcsQ0FBQyxrREFBa0QsQ0FBQztFQUN6RixPQUFPSCxJQUFJO0FBQ2I7QUFFQSxTQUFTSSxpQkFBaUJBLENBQUNDLFdBQXVDLEVBQUU7RUFDbEUsT0FBTyxDQUNMO0lBQUVDLFFBQVEsRUFBRSxNQUFNO0lBQUVDLEtBQUssRUFBRUYsV0FBVyxDQUFDRztFQUFTLENBQUMsRUFDakQ7SUFBRUYsUUFBUSxFQUFFLFdBQVc7SUFBRUMsS0FBSyxFQUFFRixXQUFXLENBQUNJO0VBQVMsQ0FBQyxDQUN2RDtBQUNIO0FBRUEsU0FBU0MsYUFBYUEsQ0FBQ0MsU0FBaUIsRUFBRTtFQUN4QyxNQUFNQyxhQUFhLEdBQUdELFNBQVMsQ0FBQ0UsT0FBTyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7RUFDaEQsT0FBT0MsVUFBVSxDQUFDRixhQUFhLENBQUM7QUFDbEM7QUFZQSxTQUFTRyxZQUFZQSxDQUFDQyxHQUF1QixFQUFFO0VBQzdDLE1BQU1DLE1BQU0sR0FBR1AsYUFBYSxDQUFDTSxHQUFHLENBQUNDLE1BQU0sQ0FBQztFQUN4QyxNQUFNQyxLQUFLLEdBQUdSLGFBQWEsQ0FBQ00sR0FBRyxDQUFDRSxLQUFLLENBQUM7RUFDdEMsT0FBTyxDQUFDQyxNQUFNLENBQUNDLEtBQUssQ0FBQ0gsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHQSxNQUFNLEtBQUtFLE1BQU0sQ0FBQ0MsS0FBSyxDQUFDRixLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUdBLEtBQUssQ0FBQztBQUNoRjtBQUVBLFNBQVNHLG1CQUFtQkEsQ0FBQ0MsSUFBMEIsRUFBRUMsT0FBd0IsRUFBaUI7RUFDaEcsT0FBT0QsSUFBSSxDQUFDRSxHQUFHLENBQUNSLEdBQUcsSUFBSTtJQUNyQixNQUFNUyxhQUFhLEdBQUcsSUFBQUMsZUFBTSxFQUFDVixHQUFHLENBQUNXLElBQUksRUFBRXZDLFdBQVcsQ0FBQyxDQUFDd0MsV0FBVyxDQUFDLENBQUM7SUFDakUsTUFBTUMsZUFBZSxHQUFHZCxZQUFZLENBQUNDLEdBQUcsQ0FBQztJQUN6QyxNQUFNYyxNQUFtQixHQUFHO01BQzFCQyxJQUFJLEVBQUVDLCtCQUFnQixDQUFDQyxNQUFNO01BQzdCQyxVQUFVLEVBQUVsQixHQUFHLENBQUNtQixTQUFTLEdBQUdDLFFBQVEsQ0FBQ3BCLEdBQUcsQ0FBQ21CLFNBQVMsRUFBRSxFQUFFLENBQUMsR0FBR0UsU0FBUztNQUNuRVYsSUFBSSxFQUFFRixhQUFhO01BQ25CYSxhQUFhLEVBQUViLGFBQWE7TUFDNUJjLGNBQWMsRUFBRVYsZUFBZTtNQUMvQlcsZ0JBQWdCLEVBQUVDLDBCQUFlO01BQ2pDQyxhQUFhLEVBQUViLGVBQWU7TUFDOUJjLE1BQU0sRUFBRTNCLEdBQUcsQ0FBQzJCLE1BQU07TUFDbEJDLFdBQVcsRUFBRTVCLEdBQUcsQ0FBQzRCLFdBQVc7TUFDNUJDLElBQUksRUFBRTdCLEdBQUcsQ0FBQzZCO0lBQ1osQ0FBQztJQUVELElBQUl0QixPQUFPLEVBQUV1QixxQkFBcUIsRUFBRTtNQUNsQ2hCLE1BQU0sQ0FBQ2lCLGNBQWMsR0FBRyxJQUFBQywrQkFBaUIsRUFBQ2hDLEdBQUcsQ0FBQztJQUNoRDtJQUVBLE9BQU9jLE1BQU07RUFDZixDQUFDLENBQUM7QUFDSjtBQU1BLFNBQVNtQixrQkFBa0JBLENBQUNDLEdBQXNCLEVBQUVDLGdCQUF5QyxFQUFFO0VBQzdGLE9BQU8sQ0FBQ0QsR0FBRyxDQUFDQyxnQkFBZ0IsQ0FBQzdELFdBQVcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFOEQsSUFBSSxDQUFDLENBQUM7QUFDMUQ7QUFFQSxTQUFTQyx5QkFBeUJBLENBQUNILEdBQXNCLEVBQUVDLGdCQUF5QyxFQUFFO0VBQ3BHLE9BQU8sQ0FBQ0QsR0FBRyxDQUFDQyxnQkFBZ0IsQ0FBQzVELGtCQUFrQixDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU2RCxJQUFJLENBQUMsQ0FBQztBQUNqRTtBQUVBLFNBQVNFLHVCQUF1QkEsQ0FBQ0osR0FBc0IsRUFBRUMsZ0JBQXlDLEVBQUU7RUFDbEcsT0FBTyxDQUFDRCxHQUFHLENBQUNDLGdCQUFnQixDQUFDM0QsZ0JBQWdCLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTRELElBQUksQ0FBQyxDQUFDO0FBQy9EO0FBRUEsU0FBU0csbUJBQW1CQSxDQUFDTCxHQUFzQixFQUFFQyxnQkFBeUMsRUFBRTtFQUM5RixPQUFPLENBQUNELEdBQUcsQ0FBQ0MsZ0JBQWdCLENBQUMxRCxZQUFZLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTJELElBQUksQ0FBQyxDQUFDO0FBQzNEO0FBRUEsU0FBU0ksb0JBQW9CQSxDQUFDTixHQUFzQixFQUFFQyxnQkFBeUMsRUFBRTtFQUMvRixPQUFPLENBQUNELEdBQUcsQ0FBQ0MsZ0JBQWdCLENBQUN6RCxhQUFhLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTBELElBQUksQ0FBQyxDQUFDO0FBQzVEO0FBRUEsU0FBU0sseUJBQXlCQSxDQUNoQ0MsTUFBc0IsRUFDdEJQLGdCQUF5QyxFQUN6Q1EsU0FBOEIsRUFDVjtFQUNwQixNQUFNVCxHQUFHLEdBQUdRLE1BQU0sQ0FBQ0UsUUFBUTtFQUMzQixPQUFPO0lBQ0xqQixNQUFNLEVBQUVnQixTQUFTO0lBQ2pCaEMsSUFBSSxFQUFFc0Isa0JBQWtCLENBQUNDLEdBQUcsRUFBRUMsZ0JBQWdCLENBQUM7SUFDL0NQLFdBQVcsRUFBRVMseUJBQXlCLENBQUNILEdBQUcsRUFBRUMsZ0JBQWdCLENBQUM7SUFDN0RoQixTQUFTLEVBQUVtQix1QkFBdUIsQ0FBQ0osR0FBRyxFQUFFQyxnQkFBZ0IsQ0FBQztJQUN6RGpDLEtBQUssRUFBRXFDLG1CQUFtQixDQUFDTCxHQUFHLEVBQUVDLGdCQUFnQixDQUFDO0lBQ2pEbEMsTUFBTSxFQUFFdUMsb0JBQW9CLENBQUNOLEdBQUcsRUFBRUMsZ0JBQWdCLENBQUM7SUFDbkROLElBQUksRUFBRTtFQUNSLENBQUM7QUFDSDtBQUVBLFNBQVNnQixpQkFBaUJBLENBQUNILE1BQXNCLEVBQUU7RUFDakQsT0FBT0EsTUFBTSxDQUFDSSxFQUFFLEtBQUssVUFBVTtBQUNqQzs7QUFFQTtBQUNBLFNBQVNDLHVCQUF1QkEsQ0FBQ0wsTUFBc0IsRUFBRU0sT0FBMkIsRUFBc0I7RUFDeEdBLE9BQU8sQ0FBQ3BCLFdBQVcsR0FBRyxHQUFHb0IsT0FBTyxDQUFDcEIsV0FBVyxJQUFJYyxNQUFNLENBQUNFLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRTtFQUNwRSxPQUFPSSxPQUFPO0FBQ2hCO0FBRUEsU0FBU0Msb0JBQW9CQSxDQUMzQjNDLElBQTBCLEVBQzFCNkIsZ0JBQXlDLEVBQ3pDTyxNQUFzQixFQUN0QlEsT0FBNEIsRUFDNUI7RUFDQSxJQUFJTCxpQkFBaUIsQ0FBQ0gsTUFBTSxDQUFDLEVBQUU7SUFDN0IsTUFBTVMsZUFBZSxHQUFHN0MsSUFBSSxDQUFDOEMsR0FBRyxDQUFDLENBQUM7SUFDbEMsSUFBSUQsZUFBZSxFQUFFO01BQ25CN0MsSUFBSSxDQUFDK0MsSUFBSSxDQUFDTix1QkFBdUIsQ0FBQ0wsTUFBTSxFQUFFUyxlQUFlLENBQUMsQ0FBQztJQUM3RCxDQUFDLE1BQU07TUFDTCxNQUFNLElBQUlHLEtBQUssQ0FBQywyQkFBMkIsQ0FBQztJQUM5QztFQUNGLENBQUMsTUFBTTtJQUNMaEQsSUFBSSxDQUFDK0MsSUFBSSxDQUFDWix5QkFBeUIsQ0FBQ0MsTUFBTSxFQUFFUCxnQkFBZ0IsRUFBRWUsT0FBTyxDQUFDLENBQUM7RUFDekU7QUFDRjtBQUVBLGVBQWVLLDJCQUEyQkEsQ0FBQ0MsSUFBVSxFQUFFQyxXQUFtQixFQUFFO0VBQzFFLE1BQU1DLFVBQStCLEdBQUcsRUFBRTtFQUMxQyxNQUFNQyxXQUFXLEdBQUcsTUFBTSxJQUFBQyxpQ0FBVyxFQUFDSixJQUFJLEVBQUUsa0JBQWtCQyxXQUFXLHdCQUF3QixFQUFFLElBQUksRUFBRUksR0FBRyxJQUFJO0lBQzlHLE9BQU9BLEdBQUcsQ0FBQ3JELEdBQUcsQ0FBQyxDQUFDc0QsRUFBRSxFQUFFQyxLQUFLLE1BQU07TUFDN0JDLElBQUksRUFBR0YsRUFBRSxDQUFpQkcsU0FBUyxDQUFDN0IsSUFBSSxDQUFDLENBQUM7TUFDMUMyQjtJQUNGLENBQUMsQ0FBQyxDQUFDO0VBQ0wsQ0FBQyxDQUFDO0VBRUYsS0FBSyxNQUFNRyxTQUFTLElBQUlQLFdBQVcsRUFBRTtJQUNuQ0QsVUFBVSxDQUFDUSxTQUFTLENBQUNGLElBQUksQ0FBQyxHQUFHRSxTQUFTLENBQUNILEtBQUs7RUFDOUM7RUFDQSxPQUFPTCxVQUFVO0FBQ25CO0FBRUEsZUFBZVMsNEJBQTRCQSxDQUN6Q1gsSUFBVSxFQUNWQyxXQUFtQixFQUNuQlAsT0FBNEIsRUFDRztFQUMvQixNQUFNNUMsSUFBMEIsR0FBRyxFQUFFO0VBQ3JDLE1BQU04RCx3QkFBd0IsR0FBRyxNQUFNYiwyQkFBMkIsQ0FBQ0MsSUFBSSxFQUFFQyxXQUFXLENBQUM7RUFFckYsTUFBTVksZ0JBQWdCLEdBQUcsTUFBTSxJQUFBVCxpQ0FBVyxFQUN4Q0osSUFBSSxFQUNKLGtCQUFrQkMsV0FBVyxrQ0FBa0MsRUFDL0QsRUFBRSxFQUNGYSxHQUFHLElBQUk7SUFDTCxPQUFRQSxHQUFHLENBQW1COUQsR0FBRyxDQUFDK0QsRUFBRSxLQUFLO01BQ3ZDekIsRUFBRSxFQUFFeUIsRUFBRSxDQUFDQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtNQUMvQjVCLFFBQVEsRUFBRTZCLEtBQUssQ0FBQ0MsSUFBSSxDQUFDSCxFQUFFLENBQUNJLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUNuRSxHQUFHLENBQUNvRSxFQUFFLElBQUtBLEVBQUUsQ0FBaUJYLFNBQVM7SUFDN0YsQ0FBQyxDQUFDLENBQUM7RUFDTCxDQUNGLENBQUM7RUFFRCxLQUFLLE1BQU12QixNQUFNLElBQUkyQixnQkFBZ0IsRUFBRTtJQUNyQ3BCLG9CQUFvQixDQUFDM0MsSUFBSSxFQUFFOEQsd0JBQXdCLEVBQUUxQixNQUFNLEVBQUVRLE9BQU8sQ0FBQztFQUN2RTtFQUNBLE9BQU81QyxJQUFJO0FBQ2I7QUFFQSxlQUFldUUsK0JBQStCQSxDQUFDckIsSUFBVSxFQUFFO0VBQ3pELE1BQU1zQixtQkFBbUIsR0FBRyxNQUFNLElBQUFDLDBDQUFvQixFQUFDdkIsSUFBSSxFQUFFLElBQUkzRSxtQkFBbUIsRUFBRSxDQUFDO0VBQ3ZGLElBQUlpRyxtQkFBbUIsRUFBRTtJQUN2QixNQUFNRSxTQUFTLEdBQUcsTUFBTXhCLElBQUksQ0FBQ3lCLEtBQUssQ0FBQyxJQUFJcEcsbUJBQW1CLEVBQUUsRUFBRXFHLFlBQVksSUFBSTtNQUM1RSxPQUFRQSxZQUFZLENBQWlCakIsU0FBUztJQUNoRCxDQUFDLENBQUM7SUFDRixPQUFPZSxTQUFTLENBQUM1QyxJQUFJLENBQUMsQ0FBQyxLQUFLL0QsaUNBQWlDO0VBQy9EO0VBQ0EsT0FBTyxLQUFLO0FBQ2Q7QUFFQSxlQUFlOEcsYUFBYUEsQ0FBQzNCLElBQVUsRUFBRTRCLFNBQWlCLEVBQUU7RUFDMUQsTUFBTUMsZUFBZSxHQUFHLE1BQU0sSUFBQU4sMENBQW9CLEVBQUN2QixJQUFJLEVBQUUxRSwwQkFBMEIsQ0FBQztFQUNwRixJQUFJdUcsZUFBZSxFQUFFO0lBQ25CLE1BQU0sSUFBQUMsb0NBQWMsRUFBQzlCLElBQUksRUFBRTFFLDBCQUEwQixFQUFFc0csU0FBUyxDQUFDO0VBQ25FO0FBQ0Y7QUFFQSxlQUFlRyxhQUFhQSxDQUFDL0IsSUFBVSxFQUFFZ0MsU0FBaUIsRUFBRTtFQUMxRCxNQUFNLElBQUFGLG9DQUFjLEVBQUM5QixJQUFJLEVBQUUsNkJBQTZCLEVBQUUsS0FBSyxDQUFDO0VBQ2hFLE1BQU0sSUFBQWlDLDJDQUFxQixFQUFDakMsSUFBSSxFQUFFLDZCQUE2QixDQUFDO0VBQ2hFLE1BQU0sSUFBQWtDLCtCQUFTLEVBQUNsQyxJQUFJLEVBQUUsMEJBQTBCLEVBQUVnQyxTQUFTLENBQUNHLE1BQU0sQ0FBQ3ZILFdBQVcsQ0FBQyxDQUFDO0VBQ2hGLE1BQU0sSUFBQXdILGlDQUFXLEVBQUNwQyxJQUFJLEVBQUUsdUJBQXVCLENBQUM7RUFDaEQsTUFBTSxJQUFBcUMsNkJBQWlCLEVBQUNyQyxJQUFJLENBQUM7QUFDL0I7QUFFQSxlQUFlc0MsZ0JBQWdCQSxDQUFDdEMsSUFBVSxFQUFFO0VBQzFDLE1BQU11QyxtQkFBbUIsR0FBRyxNQUFNdkMsSUFBSSxDQUFDeUIsS0FBSyxDQUFDLGdEQUFnRCxFQUFFZSxNQUFNLElBQUk7SUFDdkcsT0FBUUEsTUFBTSxDQUFpQi9CLFNBQVM7RUFDMUMsQ0FBQyxDQUFDO0VBRUYsT0FBTzhCLG1CQUFtQixDQUFDbEcsT0FBTyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7QUFDOUM7QUFFQSxlQUFlb0csdUJBQXVCQSxDQUFDekMsSUFBVSxFQUFFO0VBQ2pELE1BQU0wQyxrQkFBa0IsR0FBRyxNQUFNLElBQUFuQiwwQ0FBb0IsRUFBQ3ZCLElBQUksRUFBRSwwQkFBMEIsQ0FBQztFQUN2RixJQUFJMEMsa0JBQWtCLEVBQUU7SUFDdEIsTUFBTSxJQUFBTixpQ0FBVyxFQUFDcEMsSUFBSSxFQUFFLDBCQUEwQixDQUFDO0VBQ3JEO0FBQ0Y7QUFFQSxlQUFlMkMsMkJBQTJCQSxDQUFDM0MsSUFBVSxFQUFFakQsT0FBd0IsRUFBMEI7RUFDdkcsTUFBTTZGLFdBQVcsR0FBRyxNQUFNakMsNEJBQTRCLENBQ3BEWCxJQUFJLEVBQ0o3RSw2QkFBNkIsRUFDN0IwSCxrQ0FBbUIsQ0FBQ0MsT0FDdEIsQ0FBQztFQUNELE1BQU1DLGFBQWEsR0FBRyxNQUFNcEMsNEJBQTRCLENBQ3REWCxJQUFJLEVBQ0o1RSwrQkFBK0IsRUFDL0J5SCxrQ0FBbUIsQ0FBQ0csU0FDdEIsQ0FBQztFQUNELE1BQU1sRyxJQUFJLEdBQUcsQ0FBQyxHQUFHOEYsV0FBVyxFQUFFLEdBQUdHLGFBQWEsQ0FBQztFQUMvQyxPQUFPbEcsbUJBQW1CLENBQUNDLElBQUksRUFBRUMsT0FBTyxDQUFDO0FBQzNDO0FBRUEsZUFBZWtHLHNCQUFzQkEsQ0FBQ2pELElBQVUsRUFBRWpELE9BQXdCLEVBQTBCO0VBQ2xHLE1BQU1tRyxPQUFPLENBQUNDLElBQUksQ0FBQyxDQUNqQixJQUFBbEIsMkNBQXFCLEVBQUNqQyxJQUFJLEVBQUUsSUFBSTVFLCtCQUErQixFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQ3pFLElBQUE2RywyQ0FBcUIsRUFBQ2pDLElBQUksRUFBRSxJQUFJM0UsbUJBQW1CLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FDOUQsQ0FBQztFQUVGLE1BQU0rSCx5QkFBeUIsR0FBRyxNQUFNL0IsK0JBQStCLENBQUNyQixJQUFJLENBQUM7RUFDN0UsSUFBSW9ELHlCQUF5QixFQUFFO0lBQzdCLE9BQU8sRUFBRTtFQUNYO0VBRUEsTUFBTVgsdUJBQXVCLENBQUN6QyxJQUFJLENBQUM7RUFDbkMsT0FBTzJDLDJCQUEyQixDQUFDM0MsSUFBSSxFQUFFakQsT0FBTyxDQUFDO0FBQ25EO0FBRUEsZUFBZXNHLGdCQUFnQkEsQ0FDN0JyRCxJQUFVLEVBQ1ZnQyxTQUFpQixFQUNqQkosU0FBaUIsRUFDakI3RSxPQUF3QixFQUNNO0VBQzlCLE1BQU00RSxhQUFhLENBQUMzQixJQUFJLEVBQUU0QixTQUFTLENBQUM7RUFDcEMsTUFBTUcsYUFBYSxDQUFDL0IsSUFBSSxFQUFFZ0MsU0FBUyxDQUFDO0VBQ3BDLE1BQU1zQixhQUFhLEdBQUcsTUFBTWhCLGdCQUFnQixDQUFDdEMsSUFBSSxDQUFDO0VBQ2xELE1BQU1sRCxJQUFJLEdBQUcsTUFBTW1HLHNCQUFzQixDQUFDakQsSUFBSSxFQUFFakQsT0FBTyxDQUFDO0VBQ3hELE9BQU87SUFDTHVHLGFBQWE7SUFDYnhHO0VBQ0YsQ0FBQztBQUNIO0FBRUEsZUFBZXlHLGFBQWFBLENBQUN2RCxJQUFVLEVBQUVnQyxTQUFpQixFQUFFakYsT0FBd0IsRUFBRTtFQUNwRixNQUFNeUcsUUFBK0IsR0FBRyxFQUFFO0VBQzFDLE1BQU1DLFlBQVksR0FBRyxNQUFNLElBQUFDLHNDQUFnQixFQUFDMUQsSUFBSSxFQUFFMUUsMEJBQTBCLENBQUM7RUFDN0UsS0FBSyxNQUFNcUksT0FBTyxJQUFJRixZQUFZLEVBQUU7SUFDbEMsSUFBSUUsT0FBTyxDQUFDNUgsS0FBSyxLQUFLLElBQUksRUFBRTtNQUMxQjtNQUNBLE1BQU02SCxXQUFXLEdBQUcsTUFBTVAsZ0JBQWdCLENBQUNyRCxJQUFJLEVBQUVnQyxTQUFTLEVBQUUyQixPQUFPLENBQUM1SCxLQUFLLEVBQUVnQixPQUFPLENBQUM7TUFDbkZ5RyxRQUFRLENBQUMzRCxJQUFJLENBQUMrRCxXQUFXLENBQUM7SUFDNUI7RUFDRjtFQUNBLE9BQU9KLFFBQVE7QUFDakI7QUFFQSxlQUFlSyxnQkFBZ0JBLENBQUM3RCxJQUFVLEVBQUU7RUFDMUMsT0FBT2tELE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLENBQUMsSUFBQWxCLDJDQUFxQixFQUFDakMsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsRUFBRSxJQUFBaUMsMkNBQXFCLEVBQUNqQyxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDckg7QUFJQSxNQUFNOEQsZ0JBQWdCLFNBQVNDLDhDQUFzQixDQUE2QjtFQUNoRkMsZUFBZUEsQ0FBQ25JLFdBQXVDLEVBQUU7SUFDdkQsT0FBTztNQUNMb0ksUUFBUSxFQUFFLEdBQUd2SixRQUFRLEVBQUU7TUFDdkJ3SixNQUFNLEVBQUV0SSxpQkFBaUIsQ0FBQ0MsV0FBVyxDQUFDO01BQ3RDc0ksb0JBQW9CLEVBQUUsUUFBUTtNQUM5QkMsVUFBVSxFQUFFLE1BQUFBLENBQUEsS0FBWVAsZ0JBQWdCLENBQUMsSUFBSSxDQUFDN0QsSUFBSSxDQUFDO01BQ25EcUUsZUFBZSxFQUFFOUksdUJBQXVCLENBQUM7SUFDM0MsQ0FBQztFQUNIO0VBRUEsTUFBTStJLFNBQVNBLENBQUEsRUFBRztJQUNoQixNQUFNQyxrQkFBa0IsR0FBRyxJQUFBckgsZUFBTSxFQUFDLENBQUMsQ0FBQ3NILFFBQVEsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUNDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDO0lBQ3RFLE1BQU16QyxTQUFTLEdBQUcsSUFBSSxDQUFDakYsT0FBTyxDQUFDaUYsU0FBUyxJQUFJdUMsa0JBQWtCLENBQUNHLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZFLE1BQU1DLFdBQVcsR0FBR3pILGVBQU0sQ0FBQzBILEdBQUcsQ0FBQ0wsa0JBQWtCLEVBQUUsSUFBQXJILGVBQU0sRUFBQzhFLFNBQVMsQ0FBQyxDQUFDO0lBRXJFLE1BQU0sSUFBSSxDQUFDNkMsVUFBVSxDQUFDbEssZ0JBQWdCLENBQUM7SUFFdkMsTUFBTTZJLFFBQVEsR0FBRyxNQUFNRCxhQUFhLENBQUMsSUFBSSxDQUFDdkQsSUFBSSxFQUFFMkUsV0FBVyxFQUFFLElBQUksQ0FBQzVILE9BQU8sQ0FBQztJQUUxRSxPQUFPO01BQ0wrSCxPQUFPLEVBQUUsSUFBSTtNQUNidEI7SUFDRixDQUFDO0VBQ0g7QUFDRjtBQUFDLElBQUF1QixRQUFBLEdBQUFDLE9BQUEsQ0FBQXZLLE9BQUEsR0FFY3FKLGdCQUFnQiIsImlnbm9yZUxpc3QiOltdfQ==
|
package/lib/scrapers/visa-cal.js
CHANGED
|
@@ -146,7 +146,7 @@ function convertParsedDataToTransactions(data, pendingData, options) {
|
|
|
146
146
|
result.installments = installments;
|
|
147
147
|
}
|
|
148
148
|
if (options?.includeRawTransaction) {
|
|
149
|
-
result.rawTransaction = transaction;
|
|
149
|
+
result.rawTransaction = (0, _transactions.getRawTransaction)(transaction);
|
|
150
150
|
}
|
|
151
151
|
return result;
|
|
152
152
|
});
|
|
@@ -318,4 +318,4 @@ class VisaCalScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
|
|
|
318
318
|
}
|
|
319
319
|
}
|
|
320
320
|
var _default = exports.default = VisaCalScraper;
|
|
321
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZGVidWciLCJfZWxlbWVudHNJbnRlcmFjdGlvbnMiLCJfZmV0Y2giLCJfbmF2aWdhdGlvbiIsIl9zdG9yYWdlIiwiX3RyYW5zYWN0aW9ucyIsIl93YWl0aW5nIiwiX3RyYW5zYWN0aW9uczIiLCJfYmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsIl9sb2Rhc2giLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJhcGlIZWFkZXJzIiwiT3JpZ2luIiwiUmVmZXJlciIsIkxPR0lOX1VSTCIsIlRSQU5TQUNUSU9OU19SRVFVRVNUX0VORFBPSU5UIiwiRlJBTUVTX1JFUVVFU1RfRU5EUE9JTlQiLCJQRU5ESU5HX1RSQU5TQUNUSU9OU19SRVFVRVNUX0VORFBPSU5UIiwiU1NPX0FVVEhPUklaQVRJT05fUkVRVUVTVF9FTkRQT0lOVCIsIkludmFsaWRQYXNzd29yZE1lc3NhZ2UiLCJkZWJ1ZyIsImdldERlYnVnIiwiVHJuVHlwZUNvZGUiLCJpc0F1dGhNb2R1bGUiLCJyZXN1bHQiLCJCb29sZWFuIiwiYXV0aCIsImNhbENvbm5lY3RUb2tlbiIsIlN0cmluZyIsInRyaW0iLCJhdXRoTW9kdWxlT3JVbmRlZmluZWQiLCJ1bmRlZmluZWQiLCJpc1BlbmRpbmciLCJ0cmFuc2FjdGlvbiIsImRlYkNyZERhdGUiLCJpc0NhcmRUcmFuc2FjdGlvbkRldGFpbHMiLCJpc0NhcmRQZW5kaW5nVHJhbnNhY3Rpb25EZXRhaWxzIiwiZ2V0TG9naW5GcmFtZSIsInBhZ2UiLCJmcmFtZSIsIndhaXRVbnRpbCIsImZyYW1lcyIsImZpbmQiLCJmIiwidXJsIiwiaW5jbHVkZXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsIkVycm9yIiwiaGFzSW52YWxpZFBhc3N3b3JkRXJyb3IiLCJlcnJvckZvdW5kIiwiZWxlbWVudFByZXNlbnRPblBhZ2UiLCJlcnJvck1lc3NhZ2UiLCJwYWdlRXZhbCIsIml0ZW0iLCJpbm5lclRleHQiLCJoYXNDaGFuZ2VQYXNzd29yZEZvcm0iLCJnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyIsInVybHMiLCJMb2dpblJlc3VsdHMiLCJTdWNjZXNzIiwiSW52YWxpZFBhc3N3b3JkIiwib3B0aW9ucyIsIkNoYW5nZVBhc3N3b3JkIiwiY3JlYXRlTG9naW5GaWVsZHMiLCJjcmVkZW50aWFscyIsInNlbGVjdG9yIiwidmFsdWUiLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwiY29udmVydFBhcnNlZERhdGFUb1RyYW5zYWN0aW9ucyIsImRhdGEiLCJwZW5kaW5nRGF0YSIsInBlbmRpbmdUcmFuc2FjdGlvbnMiLCJjYXJkc0xpc3QiLCJmbGF0TWFwIiwiY2FyZCIsImF1dGhEZXRhbGlzTGlzdCIsImJhbmtBY2NvdW50cyIsIm1vbnRoRGF0YSIsInJlZ3VsYXJEZWJpdERheXMiLCJhY2NvdW50cyIsImRlYml0RGF0ZXMiLCJpbW1lZGlhdGVEZWJpdERheXMiLCJpbW1pZGlhdGVEZWJpdHMiLCJkZWJpdERheXMiLCJjb21wbGV0ZWRUcmFuc2FjdGlvbnMiLCJkZWJpdERhdGUiLCJ0cmFuc2FjdGlvbnMiLCJhbGwiLCJtYXAiLCJudW1PZlBheW1lbnRzIiwibnVtYmVyT2ZQYXltZW50cyIsImluc3RhbGxtZW50cyIsIm51bWJlciIsImN1clBheW1lbnROdW0iLCJ0b3RhbCIsImRhdGUiLCJtb21lbnQiLCJ0cm5QdXJjaGFzZURhdGUiLCJjaGFyZ2VkQW1vdW50IiwidHJuQW10IiwiYW10QmVmb3JlQ29udkFuZEluZGV4Iiwib3JpZ2luYWxBbW91bnQiLCJ0cm5UeXBlQ29kZSIsImNyZWRpdCIsImlkZW50aWZpZXIiLCJ0cm5JbnRJZCIsInR5cGUiLCJyZWd1bGFyIiwic3RhbmRpbmdPcmRlciIsIlRyYW5zYWN0aW9uVHlwZXMiLCJOb3JtYWwiLCJJbnN0YWxsbWVudHMiLCJzdGF0dXMiLCJUcmFuc2FjdGlvblN0YXR1c2VzIiwiUGVuZGluZyIsIkNvbXBsZXRlZCIsImFkZCIsInRvSVNPU3RyaW5nIiwicHJvY2Vzc2VkRGF0ZSIsIkRhdGUiLCJvcmlnaW5hbEN1cnJlbmN5IiwidHJuQ3VycmVuY3lTeW1ib2wiLCJjaGFyZ2VkQ3VycmVuY3kiLCJkZWJDcmRDdXJyZW5jeVN5bWJvbCIsImRlc2NyaXB0aW9uIiwibWVyY2hhbnROYW1lIiwibWVtbyIsInRyYW5zVHlwZUNvbW1lbnREZXRhaWxzIiwidG9TdHJpbmciLCJjYXRlZ29yeSIsImJyYW5jaENvZGVEZXNjIiwiaW5jbHVkZVJhd1RyYW5zYWN0aW9uIiwicmF3VHJhbnNhY3Rpb24iLCJWaXNhQ2FsU2NyYXBlciIsIkJhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJhdXRob3JpemF0aW9uIiwib3BlbkxvZ2luUG9wdXAiLCJ3YWl0VW50aWxFbGVtZW50Rm91bmQiLCJjbGlja0J1dHRvbiIsImdldENhcmRzIiwiaW5pdERhdGEiLCJnZXRGcm9tU2Vzc2lvblN0b3JhZ2UiLCJjYXJkcyIsImNhcmRVbmlxdWVJZCIsImxhc3Q0RGlnaXRzIiwiZ2V0QXV0aG9yaXphdGlvbkhlYWRlciIsImF1dGhNb2R1bGUiLCJnZXRYU2l0ZUlkIiwiZ2V0TG9naW5PcHRpb25zIiwiYXV0aFJlcXVlc3RQcm9taXNlIiwid2FpdEZvclJlcXVlc3QiLCJ0aW1lb3V0IiwiY2F0Y2giLCJsb2dpblVybCIsImZpZWxkcyIsInN1Ym1pdEJ1dHRvblNlbGVjdG9yIiwicG9zc2libGVSZXN1bHRzIiwiY2hlY2tSZWFkaW5lc3MiLCJwcmVBY3Rpb24iLCJwb3N0QWN0aW9uIiwid2FpdEZvck5hdmlnYXRpb24iLCJjdXJyZW50VXJsIiwiZ2V0Q3VycmVudFVybCIsImVuZHNXaXRoIiwicmVxdWVzdCIsImhlYWRlcnMiLCJyZXF1aXJlc0NoYW5nZVBhc3N3b3JkIiwidXNlckFnZW50IiwiZmV0Y2hEYXRhIiwiZGVmYXVsdFN0YXJ0TW9tZW50Iiwic3VidHJhY3QiLCJzdGFydERhdGUiLCJ0b0RhdGUiLCJzdGFydE1vbWVudCIsIm1heCIsImZvcm1hdCIsInhTaXRlSWQiLCJBdXRob3JpemF0aW9uIiwiZnV0dXJlTW9udGhzVG9TY3JhcGUiLCJmZXRjaFBvc3QiLCJjYXJkc0ZvckZyYW1lRGF0YSIsImZpbmFsTW9udGhUb0ZldGNoTW9tZW50IiwibW9udGhzIiwiZGlmZiIsImFsbE1vbnRoc0RhdGEiLCJfIiwiYmFua0lzc3VlZENhcmRzIiwiY2FyZExldmVsRnJhbWVzIiwiY2FyZFVuaXF1ZUlEQXJyYXkiLCJpIiwibW9udGgiLCJjbG9uZSIsInllYXIiLCJzdGF0dXNDb2RlIiwidGl0bGUiLCJwdXNoIiwidHhucyIsIm91dHB1dERhdGEiLCJlbmFibGVUcmFuc2FjdGlvbnNGaWx0ZXJCeURhdGUiLCJmaWx0ZXJPbGRUcmFuc2FjdGlvbnMiLCJjb21iaW5lSW5zdGFsbG1lbnRzIiwiYmFsYW5jZSIsIm5leHRUb3RhbERlYml0IiwiYWNjb3VudE51bWJlciIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdWNjZXNzIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL3Zpc2EtY2FsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IHR5cGUgSFRUUFJlcXVlc3QsIHR5cGUgRnJhbWUsIHR5cGUgUGFnZSB9IGZyb20gJ3B1cHBldGVlci1jb3JlJztcbmltcG9ydCB7IGdldERlYnVnIH0gZnJvbSAnLi4vaGVscGVycy9kZWJ1Zyc7XG5pbXBvcnQgeyBjbGlja0J1dHRvbiwgZWxlbWVudFByZXNlbnRPblBhZ2UsIHBhZ2VFdmFsLCB3YWl0VW50aWxFbGVtZW50Rm91bmQgfSBmcm9tICcuLi9oZWxwZXJzL2VsZW1lbnRzLWludGVyYWN0aW9ucyc7XG5pbXBvcnQgeyBmZXRjaFBvc3QgfSBmcm9tICcuLi9oZWxwZXJzL2ZldGNoJztcbmltcG9ydCB7IGdldEN1cnJlbnRVcmwsIHdhaXRGb3JOYXZpZ2F0aW9uIH0gZnJvbSAnLi4vaGVscGVycy9uYXZpZ2F0aW9uJztcbmltcG9ydCB7IGdldEZyb21TZXNzaW9uU3RvcmFnZSB9IGZyb20gJy4uL2hlbHBlcnMvc3RvcmFnZSc7XG5pbXBvcnQgeyBmaWx0ZXJPbGRUcmFuc2FjdGlvbnMgfSBmcm9tICcuLi9oZWxwZXJzL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyB3YWl0VW50aWwgfSBmcm9tICcuLi9oZWxwZXJzL3dhaXRpbmcnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25TdGF0dXNlcywgVHJhbnNhY3Rpb25UeXBlcywgdHlwZSBUcmFuc2FjdGlvbiwgdHlwZSBUcmFuc2FjdGlvbnNBY2NvdW50IH0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsIExvZ2luUmVzdWx0cywgdHlwZSBMb2dpbk9wdGlvbnMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInO1xuaW1wb3J0IHsgdHlwZSBTY3JhcGVyU2NyYXBpbmdSZXN1bHQsIHR5cGUgU2NyYXBlck9wdGlvbnMgfSBmcm9tICcuL2ludGVyZmFjZSc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5jb25zdCBhcGlIZWFkZXJzID0ge1xuICAnVXNlci1BZ2VudCc6XG4gICAgJ01vemlsbGEvNS4wIChNYWNpbnRvc2g7IEludGVsIE1hYyBPUyBYIDEwXzE1XzcpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xNDIuMC4wLjAgU2FmYXJpLzUzNy4zNicsXG4gIE9yaWdpbjogJ2h0dHBzOi8vZGlnaXRhbC13ZWIuY2FsLW9ubGluZS5jby5pbCcsXG4gIFJlZmVyZXI6ICdodHRwczovL2RpZ2l0YWwtd2ViLmNhbC1vbmxpbmUuY28uaWwnLFxuICAnQWNjZXB0LUxhbmd1YWdlJzogJ2hlLUlMLGhlO3E9MC45LGVuLVVTO3E9MC44LGVuO3E9MC43JyxcbiAgJ1NlYy1GZXRjaC1TaXRlJzogJ3NhbWUtc2l0ZScsXG4gICdTZWMtRmV0Y2gtTW9kZSc6ICdjb3JzJyxcbiAgJ1NlYy1GZXRjaC1EZXN0JzogJ2VtcHR5Jyxcbn07XG5jb25zdCBMT0dJTl9VUkwgPSAnaHR0cHM6Ly93d3cuY2FsLW9ubGluZS5jby5pbC8nO1xuY29uc3QgVFJBTlNBQ1RJT05TX1JFUVVFU1RfRU5EUE9JTlQgPVxuICAnaHR0cHM6Ly9hcGkuY2FsLW9ubGluZS5jby5pbC9UcmFuc2FjdGlvbnMvYXBpL3RyYW5zYWN0aW9uc0RldGFpbHMvZ2V0Q2FyZFRyYW5zYWN0aW9uc0RldGFpbHMnO1xuY29uc3QgRlJBTUVTX1JFUVVFU1RfRU5EUE9JTlQgPSAnaHR0cHM6Ly9hcGkuY2FsLW9ubGluZS5jby5pbC9GcmFtZXMvYXBpL0ZyYW1lcy9HZXRGcmFtZVN0YXR1cyc7XG5jb25zdCBQRU5ESU5HX1RSQU5TQUNUSU9OU19SRVFVRVNUX0VORFBPSU5UID1cbiAgJ2h0dHBzOi8vYXBpLmNhbC1vbmxpbmUuY28uaWwvVHJhbnNhY3Rpb25zL2FwaS9hcHByb3ZhbHMvZ2V0Q2xlYXJhbmNlUmVxdWVzdHMnO1xuY29uc3QgU1NPX0FVVEhPUklaQVRJT05fUkVRVUVTVF9FTkRQT0lOVCA9ICdodHRwczovL2Nvbm5lY3QuY2FsLW9ubGluZS5jby5pbC9jb2wtcmVzdC9jYWxjb25uZWN0L2F1dGhlbnRpY2F0aW9uL1NTTyc7XG5cbmNvbnN0IEludmFsaWRQYXNzd29yZE1lc3NhZ2UgPSAn16nXnSDXlNee16nXqtee16kg15DXlSDXlNeh15nXodee15Qg16nXlNeV15bXoNeVINep15LXldeZ15nXnSc7XG5cbmNvbnN0IGRlYnVnID0gZ2V0RGVidWcoJ3Zpc2EtY2FsJyk7XG5cbmVudW0gVHJuVHlwZUNvZGUge1xuICByZWd1bGFyID0gJzUnLFxuICBjcmVkaXQgPSAnNicsXG4gIGluc3RhbGxtZW50cyA9ICc4JyxcbiAgc3RhbmRpbmdPcmRlciA9ICc5Jyxcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbiB7XG4gIGFtdEJlZm9yZUNvbnZBbmRJbmRleDogbnVtYmVyO1xuICBicmFuY2hDb2RlRGVzYzogc3RyaW5nO1xuICBjYXNoQWNjTWFuYWdlck5hbWU6IG51bGw7XG4gIGNhc2hBY2NvdW50TWFuYWdlcjogbnVsbDtcbiAgY2FzaEFjY291bnRUcm5BbXQ6IG51bWJlcjtcbiAgY2hhcmdlRXh0ZXJuYWxUb0NhcmRDb21tZW50OiBzdHJpbmc7XG4gIGNvbW1lbnRzOiBbXTtcbiAgY3VyUGF5bWVudE51bTogbnVtYmVyO1xuICBkZWJDcmRDdXJyZW5jeVN5bWJvbDogQ3VycmVuY3lTeW1ib2w7XG4gIGRlYkNyZERhdGU6IHN0cmluZztcbiAgZGViaXRTcHJlYWRJbmQ6IGJvb2xlYW47XG4gIGRpc2NvdW50QW1vdW50OiB1bmtub3duO1xuICBkaXNjb3VudFJlYXNvbjogdW5rbm93bjtcbiAgaW1tZWRpYXRlQ29tbWVudHM6IFtdO1xuICBpc0ltbWVkaWF0ZUNvbW1lbnRJbmQ6IGJvb2xlYW47XG4gIGlzSW1tZWRpYXRlSEhLSW5kOiBib29sZWFuO1xuICBpc01hcmdhcml0YTogYm9vbGVhbjtcbiAgaXNTcHJlYWRQYXltZW5zdEFicm9hZDogYm9vbGVhbjtcbiAgbGlua2VkQ29tbWVudHM6IFtdO1xuICBtZXJjaGFudEFkZHJlc3M6IHN0cmluZztcbiAgbWVyY2hhbnROYW1lOiBzdHJpbmc7XG4gIG1lcmNoYW50UGhvbmVObzogc3RyaW5nO1xuICBudW1PZlBheW1lbnRzOiBudW1iZXI7XG4gIG9uR29pbmdUcmFuc2FjdGlvbnNDb21tZW50OiBzdHJpbmc7XG4gIHJlZnVuZEluZDogYm9vbGVhbjtcbiAgcm91bmRpbmdBbW91bnQ6IHVua25vd247XG4gIHJvdW5kaW5nUmVhc29uOiB1bmtub3duO1xuICB0b2tlbkluZDogMDtcbiAgdG9rZW5OdW1iZXJQYXJ0NDogJyc7XG4gIHRyYW5zQ2FyZFByZXNlbnRJbmQ6IGJvb2xlYW47XG4gIHRyYW5zVHlwZUNvbW1lbnREZXRhaWxzOiBbXTtcbiAgdHJuQW10OiBudW1iZXI7XG4gIHRybkN1cnJlbmN5U3ltYm9sOiBDdXJyZW5jeVN5bWJvbDtcbiAgdHJuRXhhY1dheTogbnVtYmVyO1xuICB0cm5JbnRJZDogc3RyaW5nO1xuICB0cm5OdW1hcmV0b3I6IG51bWJlcjtcbiAgdHJuUHVyY2hhc2VEYXRlOiBzdHJpbmc7XG4gIHRyblR5cGU6IHN0cmluZztcbiAgdHJuVHlwZUNvZGU6IFRyblR5cGVDb2RlO1xuICB3YWxsZXRQcm92aWRlckNvZGU6IDA7XG4gIHdhbGxldFByb3ZpZGVyRGVzYzogJyc7XG4gIGVhcmx5UGF5bWVudEluZDogYm9vbGVhbjtcbn1cbmludGVyZmFjZSBTY3JhcGVkUGVuZGluZ1RyYW5zYWN0aW9uIHtcbiAgbWVyY2hhbnRJRDogc3RyaW5nO1xuICBtZXJjaGFudE5hbWU6IHN0cmluZztcbiAgdHJuUHVyY2hhc2VEYXRlOiBzdHJpbmc7XG4gIHdhbGxldFRyYW5JbmQ6IG51bWJlcjtcbiAgdHJhbnNhY3Rpb25zT3JpZ2luOiBudW1iZXI7XG4gIHRybkFtdDogbnVtYmVyO1xuICB0cGFBcHByb3ZhbEFtb3VudDogdW5rbm93bjtcbiAgdHJuQ3VycmVuY3lTeW1ib2w6IEN1cnJlbmN5U3ltYm9sO1xuICB0cm5UeXBlQ29kZTogVHJuVHlwZUNvZGU7XG4gIHRyblR5cGU6IHN0cmluZztcbiAgYnJhbmNoQ29kZURlc2M6IHN0cmluZztcbiAgdHJhbnNDYXJkUHJlc2VudEluZDogYm9vbGVhbjtcbiAgajVJbmRpY2F0b3I6IHN0cmluZztcbiAgbnVtYmVyT2ZQYXltZW50czogbnVtYmVyO1xuICBmaXJzdFBheW1lbnRBbW91bnQ6IG51bWJlcjtcbiAgdHJhbnNUeXBlQ29tbWVudERldGFpbHM6IFtdO1xufVxuaW50ZXJmYWNlIEluaXRSZXNwb25zZSB7XG4gIHJlc3VsdDoge1xuICAgIGNhcmRzOiB7XG4gICAgICBjYXJkVW5pcXVlSWQ6IHN0cmluZztcbiAgICAgIGxhc3Q0RGlnaXRzOiBzdHJpbmc7XG4gICAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAgIH1bXTtcbiAgfTtcbn1cbnR5cGUgQ3VycmVuY3lTeW1ib2wgPSBzdHJpbmc7XG5pbnRlcmZhY2UgQ2FyZFRyYW5zYWN0aW9uRGV0YWlsc0Vycm9yIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgc3RhdHVzQ29kZTogbnVtYmVyO1xufVxuaW50ZXJmYWNlIENhcmRUcmFuc2FjdGlvbkRldGFpbHMgZXh0ZW5kcyBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzRXJyb3Ige1xuICByZXN1bHQ6IHtcbiAgICBiYW5rQWNjb3VudHM6IHtcbiAgICAgIGJhbmtBY2NvdW50TnVtOiBzdHJpbmc7XG4gICAgICBiYW5rTmFtZTogc3RyaW5nO1xuICAgICAgY2hvaWNlRXh0ZXJuYWxUcmFuc2FjdGlvbnM6IGFueTtcbiAgICAgIGN1cnJlbnRCYW5rQWNjb3VudEluZDogYm9vbGVhbjtcbiAgICAgIGRlYml0RGF0ZXM6IHtcbiAgICAgICAgYmFza2V0QW1vdW50Q29tbWVudDogdW5rbm93bjtcbiAgICAgICAgY2hvaWNlSEhLRGViaXQ6IG51bWJlcjtcbiAgICAgICAgZGF0ZTogc3RyaW5nO1xuICAgICAgICBkZWJpdFJlYXNvbjogdW5rbm93bjtcbiAgICAgICAgZml4RGViaXRBbW91bnQ6IG51bWJlcjtcbiAgICAgICAgZnJvbVB1cmNoYXNlRGF0ZTogc3RyaW5nO1xuICAgICAgICBpc0Nob2ljZVJlcGFpbWVudDogYm9vbGVhbjtcbiAgICAgICAgdG9QdXJjaGFzZURhdGU6IHN0cmluZztcbiAgICAgICAgdG90YWxCYXNrZXRBbW91bnQ6IG51bWJlcjtcbiAgICAgICAgdG90YWxEZWJpdHM6IHtcbiAgICAgICAgICBjdXJyZW5jeVN5bWJvbDogQ3VycmVuY3lTeW1ib2w7XG4gICAgICAgICAgYW1vdW50OiBudW1iZXI7XG4gICAgICAgIH1bXTtcbiAgICAgICAgdHJhbnNhY3Rpb25zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXTtcbiAgICAgIH1bXTtcbiAgICAgIGltbWlkaWF0ZURlYml0czogeyB0b3RhbERlYml0czogW107IGRlYml0RGF5czogW10gfTtcbiAgICB9W107XG4gICAgYmxvY2tlZENhcmRJbmQ6IGJvb2xlYW47XG4gIH07XG4gIHN0YXR1c0NvZGU6IDE7XG4gIHN0YXR1c0Rlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHN0YXR1c1RpdGxlOiBzdHJpbmc7XG59XG5pbnRlcmZhY2UgQ2FyZFBlbmRpbmdUcmFuc2FjdGlvbkRldGFpbHMgZXh0ZW5kcyBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzRXJyb3Ige1xuICByZXN1bHQ6IHtcbiAgICBjYXJkc0xpc3Q6IHtcbiAgICAgIGNhcmRVbmlxdWVJRDogc3RyaW5nO1xuICAgICAgYXV0aERldGFsaXNMaXN0OiBTY3JhcGVkUGVuZGluZ1RyYW5zYWN0aW9uW107XG4gICAgfVtdO1xuICB9O1xuICBzdGF0dXNDb2RlOiAxO1xuICBzdGF0dXNEZXNjcmlwdGlvbjogc3RyaW5nO1xuICBzdGF0dXNUaXRsZTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgQ2FyZExldmVsRnJhbWUge1xuICBjYXJkVW5pcXVlSWQ6IHN0cmluZztcbiAgbmV4dFRvdGFsRGViaXQ/OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBGcmFtZXNSZXNwb25zZSB7XG4gIHJlc3VsdD86IHtcbiAgICBiYW5rSXNzdWVkQ2FyZHM/OiB7XG4gICAgICBjYXJkTGV2ZWxGcmFtZXM/OiBDYXJkTGV2ZWxGcmFtZVtdO1xuICAgIH07XG4gIH07XG59XG5cbmludGVyZmFjZSBBdXRoTW9kdWxlIHtcbiAgYXV0aDoge1xuICAgIGNhbENvbm5lY3RUb2tlbjogc3RyaW5nIHwgbnVsbDtcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNBdXRoTW9kdWxlKHJlc3VsdDogYW55KTogcmVzdWx0IGlzIEF1dGhNb2R1bGUge1xuICByZXR1cm4gQm9vbGVhbihyZXN1bHQ/LmF1dGg/LmNhbENvbm5lY3RUb2tlbiAmJiBTdHJpbmcocmVzdWx0LmF1dGguY2FsQ29ubmVjdFRva2VuKS50cmltKCkpO1xufVxuXG5mdW5jdGlvbiBhdXRoTW9kdWxlT3JVbmRlZmluZWQocmVzdWx0OiBhbnkpOiBBdXRoTW9kdWxlIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGlzQXV0aE1vZHVsZShyZXN1bHQpID8gcmVzdWx0IDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBpc1BlbmRpbmcoXG4gIHRyYW5zYWN0aW9uOiBTY3JhcGVkVHJhbnNhY3Rpb24gfCBTY3JhcGVkUGVuZGluZ1RyYW5zYWN0aW9uLFxuKTogdHJhbnNhY3Rpb24gaXMgU2NyYXBlZFBlbmRpbmdUcmFuc2FjdGlvbiB7XG4gIHJldHVybiAodHJhbnNhY3Rpb24gYXMgU2NyYXBlZFRyYW5zYWN0aW9uKS5kZWJDcmREYXRlID09PSB1bmRlZmluZWQ7IC8vIGFuIGFyYml0cmFyeSBmaWVsZCB0aGF0IG9ubHkgYXBwZWFycyBpbiBhIGNvbXBsZXRlZCB0cmFuc2FjdGlvblxufVxuXG5mdW5jdGlvbiBpc0NhcmRUcmFuc2FjdGlvbkRldGFpbHMoXG4gIHJlc3VsdDogQ2FyZFRyYW5zYWN0aW9uRGV0YWlscyB8IENhcmRUcmFuc2FjdGlvbkRldGFpbHNFcnJvcixcbik6IHJlc3VsdCBpcyBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzIHtcbiAgcmV0dXJuIChyZXN1bHQgYXMgQ2FyZFRyYW5zYWN0aW9uRGV0YWlscykucmVzdWx0ICE9PSB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGlzQ2FyZFBlbmRpbmdUcmFuc2FjdGlvbkRldGFpbHMoXG4gIHJlc3VsdDogQ2FyZFBlbmRpbmdUcmFuc2FjdGlvbkRldGFpbHMgfCBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzRXJyb3IsXG4pOiByZXN1bHQgaXMgQ2FyZFBlbmRpbmdUcmFuc2FjdGlvbkRldGFpbHMge1xuICByZXR1cm4gKHJlc3VsdCBhcyBDYXJkUGVuZGluZ1RyYW5zYWN0aW9uRGV0YWlscykucmVzdWx0ICE9PSB1bmRlZmluZWQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldExvZ2luRnJhbWUocGFnZTogUGFnZSkge1xuICBsZXQgZnJhbWU6IEZyYW1lIHwgbnVsbCA9IG51bGw7XG4gIGRlYnVnKCd3YWl0IHVudGlsIGxvZ2luIGZyYW1lIGZvdW5kJyk7XG4gIGF3YWl0IHdhaXRVbnRpbChcbiAgICAoKSA9PiB7XG4gICAgICBmcmFtZSA9IHBhZ2UuZnJhbWVzKCkuZmluZChmID0+IGYudXJsKCkuaW5jbHVkZXMoJ2Nvbm5lY3QnKSkgfHwgbnVsbDtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoISFmcmFtZSk7XG4gICAgfSxcbiAgICAnd2FpdCBmb3IgaWZyYW1lIHdpdGggbG9naW4gZm9ybScsXG4gICAgMTAwMDAsXG4gICAgMTAwMCxcbiAgKTtcblxuICBpZiAoIWZyYW1lKSB7XG4gICAgZGVidWcoJ2ZhaWxlZCB0byBmaW5kIGxvZ2luIGZyYW1lIGZvciAxMCBzZWNvbmRzJyk7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdmYWlsZWQgdG8gZXh0cmFjdCBsb2dpbiBpZnJhbWUnKTtcbiAgfVxuXG4gIHJldHVybiBmcmFtZTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaGFzSW52YWxpZFBhc3N3b3JkRXJyb3IocGFnZTogUGFnZSkge1xuICBjb25zdCBmcmFtZSA9IGF3YWl0IGdldExvZ2luRnJhbWUocGFnZSk7XG4gIGNvbnN0IGVycm9yRm91bmQgPSBhd2FpdCBlbGVtZW50UHJlc2VudE9uUGFnZShmcmFtZSwgJ2Rpdi5nZW5lcmFsLWVycm9yID4gZGl2Jyk7XG4gIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yRm91bmRcbiAgICA/IGF3YWl0IHBhZ2VFdmFsKGZyYW1lLCAnZGl2LmdlbmVyYWwtZXJyb3IgPiBkaXYnLCAnJywgaXRlbSA9PiB7XG4gICAgICAgIHJldHVybiAoaXRlbSBhcyBIVE1MRGl2RWxlbWVudCkuaW5uZXJUZXh0O1xuICAgICAgfSlcbiAgICA6ICcnO1xuICByZXR1cm4gZXJyb3JNZXNzYWdlID09PSBJbnZhbGlkUGFzc3dvcmRNZXNzYWdlO1xufVxuXG5hc3luYyBmdW5jdGlvbiBoYXNDaGFuZ2VQYXNzd29yZEZvcm0ocGFnZTogUGFnZSkge1xuICBjb25zdCBmcmFtZSA9IGF3YWl0IGdldExvZ2luRnJhbWUocGFnZSk7XG4gIGNvbnN0IGVycm9yRm91bmQgPSBhd2FpdCBlbGVtZW50UHJlc2VudE9uUGFnZShmcmFtZSwgJy5jaGFuZ2UtcGFzc3dvcmQtc3VidGl0bGUnKTtcbiAgcmV0dXJuIGVycm9yRm91bmQ7XG59XG5cbmZ1bmN0aW9uIGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKCkge1xuICBkZWJ1ZygncmV0dXJuIHBvc3NpYmxlIGxvZ2luIHJlc3VsdHMnKTtcbiAgY29uc3QgdXJsczogTG9naW5PcHRpb25zWydwb3NzaWJsZVJlc3VsdHMnXSA9IHtcbiAgICBbTG9naW5SZXN1bHRzLlN1Y2Nlc3NdOiBbL2Rhc2hib2FyZC9pXSxcbiAgICBbTG9naW5SZXN1bHRzLkludmFsaWRQYXNzd29yZF06IFtcbiAgICAgIGFzeW5jIChvcHRpb25zPzogeyBwYWdlPzogUGFnZSB9KSA9PiB7XG4gICAgICAgIGNvbnN0IHBhZ2UgPSBvcHRpb25zPy5wYWdlO1xuICAgICAgICBpZiAoIXBhZ2UpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhhc0ludmFsaWRQYXNzd29yZEVycm9yKHBhZ2UpO1xuICAgICAgfSxcbiAgICBdLFxuICAgIC8vIFtMb2dpblJlc3VsdHMuQWNjb3VudEJsb2NrZWRdOiBbXSwgLy8gVE9ETyBhZGQgd2hlbiByZWFjaGluZyB0aGlzIHNjZW5hcmlvXG4gICAgW0xvZ2luUmVzdWx0cy5DaGFuZ2VQYXNzd29yZF06IFtcbiAgICAgIGFzeW5jIChvcHRpb25zPzogeyBwYWdlPzogUGFnZSB9KSA9PiB7XG4gICAgICAgIGNvbnN0IHBhZ2UgPSBvcHRpb25zPy5wYWdlO1xuICAgICAgICBpZiAoIXBhZ2UpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhhc0NoYW5nZVBhc3N3b3JkRm9ybShwYWdlKTtcbiAgICAgIH0sXG4gICAgXSxcbiAgfTtcbiAgcmV0dXJuIHVybHM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICBkZWJ1ZygnY3JlYXRlIGxvZ2luIGZpZWxkcyBmb3IgdXNlcm5hbWUgYW5kIHBhc3N3b3JkJyk7XG4gIHJldHVybiBbXG4gICAgeyBzZWxlY3RvcjogJ1tmb3JtY29udHJvbG5hbWU9XCJ1c2VyTmFtZVwiXScsIHZhbHVlOiBjcmVkZW50aWFscy51c2VybmFtZSB9LFxuICAgIHsgc2VsZWN0b3I6ICdbZm9ybWNvbnRyb2xuYW1lPVwicGFzc3dvcmRcIl0nLCB2YWx1ZTogY3JlZGVudGlhbHMucGFzc3dvcmQgfSxcbiAgXTtcbn1cblxuZnVuY3Rpb24gY29udmVydFBhcnNlZERhdGFUb1RyYW5zYWN0aW9ucyhcbiAgZGF0YTogQ2FyZFRyYW5zYWN0aW9uRGV0YWlsc1tdLFxuICBwZW5kaW5nRGF0YT86IENhcmRQZW5kaW5nVHJhbnNhY3Rpb25EZXRhaWxzIHwgbnVsbCxcbiAgb3B0aW9ucz86IFNjcmFwZXJPcHRpb25zLFxuKTogVHJhbnNhY3Rpb25bXSB7XG4gIGNvbnN0IHBlbmRpbmdUcmFuc2FjdGlvbnMgPSBwZW5kaW5nRGF0YT8ucmVzdWx0XG4gICAgPyBwZW5kaW5nRGF0YS5yZXN1bHQuY2FyZHNMaXN0LmZsYXRNYXAoY2FyZCA9PiBjYXJkLmF1dGhEZXRhbGlzTGlzdClcbiAgICA6IFtdO1xuXG4gIGNvbnN0IGJhbmtBY2NvdW50cyA9IGRhdGEuZmxhdE1hcChtb250aERhdGEgPT4gbW9udGhEYXRhLnJlc3VsdC5iYW5rQWNjb3VudHMpO1xuICBjb25zdCByZWd1bGFyRGViaXREYXlzID0gYmFua0FjY291bnRzLmZsYXRNYXAoYWNjb3VudHMgPT4gYWNjb3VudHMuZGViaXREYXRlcyk7XG4gIGNvbnN0IGltbWVkaWF0ZURlYml0RGF5cyA9IGJhbmtBY2NvdW50cy5mbGF0TWFwKGFjY291bnRzID0+IGFjY291bnRzLmltbWlkaWF0ZURlYml0cy5kZWJpdERheXMpO1xuICBjb25zdCBjb21wbGV0ZWRUcmFuc2FjdGlvbnMgPSBbLi4ucmVndWxhckRlYml0RGF5cywgLi4uaW1tZWRpYXRlRGViaXREYXlzXS5mbGF0TWFwKFxuICAgIGRlYml0RGF0ZSA9PiBkZWJpdERhdGUudHJhbnNhY3Rpb25zLFxuICApO1xuXG4gIGNvbnN0IGFsbDogKFNjcmFwZWRUcmFuc2FjdGlvbiB8IFNjcmFwZWRQZW5kaW5nVHJhbnNhY3Rpb24pW10gPSBbLi4ucGVuZGluZ1RyYW5zYWN0aW9ucywgLi4uY29tcGxldGVkVHJhbnNhY3Rpb25zXTtcblxuICByZXR1cm4gYWxsLm1hcCh0cmFuc2FjdGlvbiA9PiB7XG4gICAgY29uc3QgbnVtT2ZQYXltZW50cyA9IGlzUGVuZGluZyh0cmFuc2FjdGlvbikgPyB0cmFuc2FjdGlvbi5udW1iZXJPZlBheW1lbnRzIDogdHJhbnNhY3Rpb24ubnVtT2ZQYXltZW50cztcbiAgICBjb25zdCBpbnN0YWxsbWVudHMgPSBudW1PZlBheW1lbnRzXG4gICAgICA/IHtcbiAgICAgICAgICBudW1iZXI6IGlzUGVuZGluZyh0cmFuc2FjdGlvbikgPyAxIDogdHJhbnNhY3Rpb24uY3VyUGF5bWVudE51bSxcbiAgICAgICAgICB0b3RhbDogbnVtT2ZQYXltZW50cyxcbiAgICAgICAgfVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBkYXRlID0gbW9tZW50KHRyYW5zYWN0aW9uLnRyblB1cmNoYXNlRGF0ZSk7XG5cbiAgICBjb25zdCBjaGFyZ2VkQW1vdW50ID0gKGlzUGVuZGluZyh0cmFuc2FjdGlvbikgPyB0cmFuc2FjdGlvbi50cm5BbXQgOiB0cmFuc2FjdGlvbi5hbXRCZWZvcmVDb252QW5kSW5kZXgpICogLTE7XG4gICAgY29uc3Qgb3JpZ2luYWxBbW91bnQgPSB0cmFuc2FjdGlvbi50cm5BbXQgKiAodHJhbnNhY3Rpb24udHJuVHlwZUNvZGUgPT09IFRyblR5cGVDb2RlLmNyZWRpdCA/IDEgOiAtMSk7XG5cbiAgICBjb25zdCByZXN1bHQ6IFRyYW5zYWN0aW9uID0ge1xuICAgICAgaWRlbnRpZmllcjogIWlzUGVuZGluZyh0cmFuc2FjdGlvbikgPyB0cmFuc2FjdGlvbi50cm5JbnRJZCA6IHVuZGVmaW5lZCxcbiAgICAgIHR5cGU6IFtUcm5UeXBlQ29kZS5yZWd1bGFyLCBUcm5UeXBlQ29kZS5zdGFuZGluZ09yZGVyXS5pbmNsdWRlcyh0cmFuc2FjdGlvbi50cm5UeXBlQ29kZSlcbiAgICAgICAgPyBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbFxuICAgICAgICA6IFRyYW5zYWN0aW9uVHlwZXMuSW5zdGFsbG1lbnRzLFxuICAgICAgc3RhdHVzOiBpc1BlbmRpbmcodHJhbnNhY3Rpb24pID8gVHJhbnNhY3Rpb25TdGF0dXNlcy5QZW5kaW5nIDogVHJhbnNhY3Rpb25TdGF0dXNlcy5Db21wbGV0ZWQsXG4gICAgICBkYXRlOiBpbnN0YWxsbWVudHMgPyBkYXRlLmFkZChpbnN0YWxsbWVudHMubnVtYmVyIC0gMSwgJ21vbnRoJykudG9JU09TdHJpbmcoKSA6IGRhdGUudG9JU09TdHJpbmcoKSxcbiAgICAgIHByb2Nlc3NlZERhdGU6IGlzUGVuZGluZyh0cmFuc2FjdGlvbikgPyBkYXRlLnRvSVNPU3RyaW5nKCkgOiBuZXcgRGF0ZSh0cmFuc2FjdGlvbi5kZWJDcmREYXRlKS50b0lTT1N0cmluZygpLFxuICAgICAgb3JpZ2luYWxBbW91bnQsXG4gICAgICBvcmlnaW5hbEN1cnJlbmN5OiB0cmFuc2FjdGlvbi50cm5DdXJyZW5jeVN5bWJvbCxcbiAgICAgIGNoYXJnZWRBbW91bnQsXG4gICAgICBjaGFyZ2VkQ3VycmVuY3k6ICFpc1BlbmRpbmcodHJhbnNhY3Rpb24pID8gdHJhbnNhY3Rpb24uZGViQ3JkQ3VycmVuY3lTeW1ib2wgOiB1bmRlZmluZWQsXG4gICAgICBkZXNjcmlwdGlvbjogdHJhbnNhY3Rpb24ubWVyY2hhbnROYW1lLFxuICAgICAgbWVtbzogdHJhbnNhY3Rpb24udHJhbnNUeXBlQ29tbWVudERldGFpbHMudG9TdHJpbmcoKSxcbiAgICAgIGNhdGVnb3J5OiB0cmFuc2FjdGlvbi5icmFuY2hDb2RlRGVzYyxcbiAgICB9O1xuXG4gICAgaWYgKGluc3RhbGxtZW50cykge1xuICAgICAgcmVzdWx0Lmluc3RhbGxtZW50cyA9IGluc3RhbGxtZW50cztcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucz8uaW5jbHVkZVJhd1RyYW5zYWN0aW9uKSB7XG4gICAgICByZXN1bHQucmF3VHJhbnNhY3Rpb24gPSB0cmFuc2FjdGlvbjtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9KTtcbn1cblxudHlwZSBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyA9IHsgdXNlcm5hbWU6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9O1xuXG5jbGFzcyBWaXNhQ2FsU2NyYXBlciBleHRlbmRzIEJhc2VTY3JhcGVyV2l0aEJyb3dzZXI8U2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHM+IHtcbiAgcHJpdmF0ZSBhdXRob3JpemF0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQgPSB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBhdXRoUmVxdWVzdFByb21pc2U6IFByb21pc2U8SFRUUFJlcXVlc3QgfCB1bmRlZmluZWQ+IHwgdW5kZWZpbmVkO1xuXG4gIG9wZW5Mb2dpblBvcHVwID0gYXN5bmMgKCkgPT4ge1xuICAgIGRlYnVnKCdvcGVuIGxvZ2luIHBvcHVwLCB3YWl0IHVudGlsIGxvZ2luIGJ1dHRvbiBhdmFpbGFibGUnKTtcbiAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCAnI2NjTG9naW5EZXNrdG9wQnRuJywgdHJ1ZSk7XG4gICAgZGVidWcoJ2NsaWNrIG9uIHRoZSBsb2dpbiBidXR0b24nKTtcbiAgICBhd2FpdCBjbGlja0J1dHRvbih0aGlzLnBhZ2UsICcjY2NMb2dpbkRlc2t0b3BCdG4nKTtcbiAgICBkZWJ1ZygnZ2V0IHRoZSBmcmFtZSB0aGF0IGhvbGRzIHRoZSBsb2dpbicpO1xuICAgIGNvbnN0IGZyYW1lID0gYXdhaXQgZ2V0TG9naW5GcmFtZSh0aGlzLnBhZ2UpO1xuICAgIGRlYnVnKCd3YWl0IHVudGlsIHRoZSBwYXNzd29yZCBsb2dpbiB0YWIgaGVhZGVyIGlzIGF2YWlsYWJsZScpO1xuICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChmcmFtZSwgJyNyZWd1bGFyLWxvZ2luJyk7XG4gICAgZGVidWcoJ25hdmlnYXRlIHRvIHRoZSBwYXNzd29yZCBsb2dpbiB0YWInKTtcbiAgICBhd2FpdCBjbGlja0J1dHRvbihmcmFtZSwgJyNyZWd1bGFyLWxvZ2luJyk7XG4gICAgZGVidWcoJ3dhaXQgdW50aWwgdGhlIHBhc3N3b3JkIGxvZ2luIHRhYiBpcyBhY3RpdmUnKTtcbiAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQoZnJhbWUsICdyZWd1bGFyLWxvZ2luJyk7XG5cbiAgICByZXR1cm4gZnJhbWU7XG4gIH07XG5cbiAgYXN5bmMgZ2V0Q2FyZHMoKSB7XG4gICAgY29uc3QgaW5pdERhdGEgPSBhd2FpdCB3YWl0VW50aWwoXG4gICAgICAoKSA9PiBnZXRGcm9tU2Vzc2lvblN0b3JhZ2U8SW5pdFJlc3BvbnNlPih0aGlzLnBhZ2UsICdpbml0JyksXG4gICAgICAnZ2V0IGluaXQgZGF0YSBpbiBzZXNzaW9uIHN0b3JhZ2UnLFxuICAgICAgMTAwMDAsXG4gICAgICAxMDAwLFxuICAgICk7XG4gICAgaWYgKCFpbml0RGF0YSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgZmluZCBcImluaXRcIiBkYXRhIGluIHNlc3Npb24gc3RvcmFnZScpO1xuICAgIH1cbiAgICByZXR1cm4gaW5pdERhdGE/LnJlc3VsdC5jYXJkcy5tYXAoKHsgY2FyZFVuaXF1ZUlkLCBsYXN0NERpZ2l0cyB9KSA9PiAoeyBjYXJkVW5pcXVlSWQsIGxhc3Q0RGlnaXRzIH0pKTtcbiAgfVxuXG4gIGFzeW5jIGdldEF1dGhvcml6YXRpb25IZWFkZXIoKSB7XG4gICAgaWYgKCF0aGlzLmF1dGhvcml6YXRpb24pIHtcbiAgICAgIGRlYnVnKCdmZXRjaGluZyBhdXRob3JpemF0aW9uIGhlYWRlcicpO1xuICAgICAgY29uc3QgYXV0aE1vZHVsZSA9IGF3YWl0IHdhaXRVbnRpbChcbiAgICAgICAgYXN5bmMgKCkgPT4gYXV0aE1vZHVsZU9yVW5kZWZpbmVkKGF3YWl0IGdldEZyb21TZXNzaW9uU3RvcmFnZTxBdXRoTW9kdWxlPih0aGlzLnBhZ2UsICdhdXRoLW1vZHVsZScpKSxcbiAgICAgICAgJ2dldCBhdXRob3JpemF0aW9uIGhlYWRlciB3aXRoIHZhbGlkIHRva2VuIGluIHNlc3Npb24gc3RvcmFnZScsXG4gICAgICAgIDEwXzAwMCxcbiAgICAgICAgNTAsXG4gICAgICApO1xuICAgICAgcmV0dXJuIGBDQUxBdXRoU2NoZW1lICR7YXV0aE1vZHVsZS5hdXRoLmNhbENvbm5lY3RUb2tlbn1gO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hdXRob3JpemF0aW9uO1xuICB9XG5cbiAgYXN5bmMgZ2V0WFNpdGVJZCgpIHtcbiAgICAvKlxuICAgICAgSSBkb24ndCBrbm93IGlmIHRoZSBjb25zdGFudCBiZWxvdyB3aWxsIGNoYW5nZSBpbiB0aGUgZmVhdHVyZS5cbiAgICAgIElmIHNvLCB1c2UgdGhlIG5leHQgY29kZTpcblxuICAgICAgcmV0dXJuIHRoaXMucGFnZS5ldmFsdWF0ZSgoKSA9PiBuZXcgVXQoKS54U2l0ZUlkKTtcblxuICAgICAgVG8gZ2V0IHRoZSBjbGFzc25hbWUgc2VhcmNoIGZvciAneFNpdGVJZCcgaW4gdGhlIHBhZ2Ugc291cmNlXG4gICAgICBjbGFzcyBVdCB7XG4gICAgICAgIGNvbnN0cnVjdG9yKF9lLCBvbiwgeW4pIHtcbiAgICAgICAgICAgIHRoaXMuc3RvcmUgPSBfZSxcbiAgICAgICAgICAgIHRoaXMuY29uZmlnID0gb24sXG4gICAgICAgICAgICB0aGlzLmV2ZW50QnVzU2VydmljZSA9IHluLFxuICAgICAgICAgICAgdGhpcy54U2l0ZUlkID0gXCIwOTAzMTk4Ny0yNzNFLTIzMTEtOTA2Qy04QUY4NUIxN0M4RDlcIixcbiAgICAqL1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoJzA5MDMxOTg3LTI3M0UtMjMxMS05MDZDLThBRjg1QjE3QzhEOScpO1xuICB9XG5cbiAgZ2V0TG9naW5PcHRpb25zKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyk6IExvZ2luT3B0aW9ucyB7XG4gICAgdGhpcy5hdXRoUmVxdWVzdFByb21pc2UgPSB0aGlzLnBhZ2VcbiAgICAgIC53YWl0Rm9yUmVxdWVzdChTU09fQVVUSE9SSVpBVElPTl9SRVFVRVNUX0VORFBPSU5ULCB7IHRpbWVvdXQ6IDEwXzAwMCB9KVxuICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICBkZWJ1ZygnZXJyb3Igd2hpbGUgd2FpdGluZyBmb3IgdGhlIHRva2VuIHJlcXVlc3QnLCBlKTtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICBsb2dpblVybDogYCR7TE9HSU5fVVJMfWAsXG4gICAgICBmaWVsZHM6IGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzKSxcbiAgICAgIHN1Ym1pdEJ1dHRvblNlbGVjdG9yOiAnYnV0dG9uW3R5cGU9XCJzdWJtaXRcIl0nLFxuICAgICAgcG9zc2libGVSZXN1bHRzOiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cygpLFxuICAgICAgY2hlY2tSZWFkaW5lc3M6IGFzeW5jICgpID0+IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsICcjY2NMb2dpbkRlc2t0b3BCdG4nKSxcbiAgICAgIHByZUFjdGlvbjogdGhpcy5vcGVuTG9naW5Qb3B1cCxcbiAgICAgIHBvc3RBY3Rpb246IGFzeW5jICgpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB3YWl0Rm9yTmF2aWdhdGlvbih0aGlzLnBhZ2UpO1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRVcmwgPSBhd2FpdCBnZXRDdXJyZW50VXJsKHRoaXMucGFnZSk7XG4gICAgICAgICAgaWYgKGN1cnJlbnRVcmwuZW5kc1dpdGgoJ3NpdGUtdHV0b3JpYWwnKSkge1xuICAgICAgICAgICAgYXdhaXQgY2xpY2tCdXR0b24odGhpcy5wYWdlLCAnYnV0dG9uLmJ0bi1jbG9zZScpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCByZXF1ZXN0ID0gYXdhaXQgdGhpcy5hdXRoUmVxdWVzdFByb21pc2U7XG4gICAgICAgICAgdGhpcy5hdXRob3JpemF0aW9uID0gU3RyaW5nKHJlcXVlc3Q/LmhlYWRlcnMoKS5hdXRob3JpemF0aW9uIHx8ICcnKS50cmltKCk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBjb25zdCBjdXJyZW50VXJsID0gYXdhaXQgZ2V0Q3VycmVudFVybCh0aGlzLnBhZ2UpO1xuICAgICAgICAgIGlmIChjdXJyZW50VXJsLmVuZHNXaXRoKCdkYXNoYm9hcmQnKSkgcmV0dXJuO1xuICAgICAgICAgIGNvbnN0IHJlcXVpcmVzQ2hhbmdlUGFzc3dvcmQgPSBhd2FpdCBoYXNDaGFuZ2VQYXNzd29yZEZvcm0odGhpcy5wYWdlKTtcbiAgICAgICAgICBpZiAocmVxdWlyZXNDaGFuZ2VQYXNzd29yZCkgcmV0dXJuO1xuICAgICAgICAgIHRocm93IGU7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICB1c2VyQWdlbnQ6IGFwaUhlYWRlcnNbJ1VzZXItQWdlbnQnXSxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hEYXRhKCk6IFByb21pc2U8U2NyYXBlclNjcmFwaW5nUmVzdWx0PiB7XG4gICAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJykuc3VidHJhY3QoNiwgJ21vbnRocycpLmFkZCgxLCAnZGF5Jyk7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSB8fCBkZWZhdWx0U3RhcnRNb21lbnQudG9EYXRlKCk7XG4gICAgY29uc3Qgc3RhcnRNb21lbnQgPSBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xuICAgIGRlYnVnKGBmZXRjaCB0cmFuc2FjdGlvbnMgc3RhcnRpbmcgJHtzdGFydE1vbWVudC5mb3JtYXQoKX1gKTtcblxuICAgIGNvbnN0IFtjYXJkcywgeFNpdGVJZCwgQXV0aG9yaXphdGlvbl0gPSBhd2FpdCBQcm9taXNlLmFsbChbXG4gICAgICB0aGlzLmdldENhcmRzKCksXG4gICAgICB0aGlzLmdldFhTaXRlSWQoKSxcbiAgICAgIHRoaXMuZ2V0QXV0aG9yaXphdGlvbkhlYWRlcigpLFxuICAgIF0pO1xuXG4gICAgY29uc3QgZnV0dXJlTW9udGhzVG9TY3JhcGUgPSB0aGlzLm9wdGlvbnMuZnV0dXJlTW9udGhzVG9TY3JhcGUgPz8gMTtcblxuICAgIGRlYnVnKCdmZXRjaCBmcmFtZXMgKG1pc2dhcm90KSBvZiBjYXJkcycpO1xuICAgIGNvbnN0IGZyYW1lcyA9IGF3YWl0IGZldGNoUG9zdDxGcmFtZXNSZXNwb25zZT4oXG4gICAgICBGUkFNRVNfUkVRVUVTVF9FTkRQT0lOVCxcbiAgICAgIHsgY2FyZHNGb3JGcmFtZURhdGE6IGNhcmRzLm1hcCgoeyBjYXJkVW5pcXVlSWQgfSkgPT4gKHsgY2FyZFVuaXF1ZUlkIH0pKSB9LFxuICAgICAge1xuICAgICAgICBBdXRob3JpemF0aW9uLFxuICAgICAgICAnWC1TaXRlLUlkJzogeFNpdGVJZCxcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgLi4uYXBpSGVhZGVycyxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIGNvbnN0IGFjY291bnRzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBjYXJkcy5tYXAoYXN5bmMgY2FyZCA9PiB7XG4gICAgICAgIGNvbnN0IGZpbmFsTW9udGhUb0ZldGNoTW9tZW50ID0gbW9tZW50KCkuYWRkKGZ1dHVyZU1vbnRoc1RvU2NyYXBlLCAnbW9udGgnKTtcbiAgICAgICAgY29uc3QgbW9udGhzID0gZmluYWxNb250aFRvRmV0Y2hNb21lbnQuZGlmZihzdGFydE1vbWVudCwgJ21vbnRocycpO1xuICAgICAgICBjb25zdCBhbGxNb250aHNEYXRhOiBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzW10gPSBbXTtcbiAgICAgICAgY29uc3QgZnJhbWUgPSBfLmZpbmQoZnJhbWVzLnJlc3VsdD8uYmFua0lzc3VlZENhcmRzPy5jYXJkTGV2ZWxGcmFtZXMsIHsgY2FyZFVuaXF1ZUlkOiBjYXJkLmNhcmRVbmlxdWVJZCB9KTtcblxuICAgICAgICBkZWJ1ZyhgZmV0Y2ggcGVuZGluZyB0cmFuc2FjdGlvbnMgZm9yIGNhcmQgJHtjYXJkLmNhcmRVbmlxdWVJZH1gKTtcbiAgICAgICAgbGV0IHBlbmRpbmdEYXRhID0gYXdhaXQgZmV0Y2hQb3N0KFxuICAgICAgICAgIFBFTkRJTkdfVFJBTlNBQ1RJT05TX1JFUVVFU1RfRU5EUE9JTlQsXG4gICAgICAgICAgeyBjYXJkVW5pcXVlSURBcnJheTogW2NhcmQuY2FyZFVuaXF1ZUlkXSB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIEF1dGhvcml6YXRpb24sXG4gICAgICAgICAgICAnWC1TaXRlLUlkJzogeFNpdGVJZCxcbiAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgICAuLi5hcGlIZWFkZXJzLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG5cbiAgICAgICAgZGVidWcoYGZldGNoIGNvbXBsZXRlZCB0cmFuc2FjdGlvbnMgZm9yIGNhcmQgJHtjYXJkLmNhcmRVbmlxdWVJZH1gKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gbW9udGhzOyBpKyspIHtcbiAgICAgICAgICBjb25zdCBtb250aCA9IGZpbmFsTW9udGhUb0ZldGNoTW9tZW50LmNsb25lKCkuc3VidHJhY3QoaSwgJ21vbnRocycpO1xuICAgICAgICAgIGNvbnN0IG1vbnRoRGF0YSA9IGF3YWl0IGZldGNoUG9zdChcbiAgICAgICAgICAgIFRSQU5TQUNUSU9OU19SRVFVRVNUX0VORFBPSU5ULFxuICAgICAgICAgICAgeyBjYXJkVW5pcXVlSWQ6IGNhcmQuY2FyZFVuaXF1ZUlkLCBtb250aDogbW9udGguZm9ybWF0KCdNJyksIHllYXI6IG1vbnRoLmZvcm1hdCgnWVlZWScpIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEF1dGhvcml6YXRpb24sXG4gICAgICAgICAgICAgICdYLVNpdGUtSWQnOiB4U2l0ZUlkLFxuICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgICAuLi5hcGlIZWFkZXJzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKG1vbnRoRGF0YT8uc3RhdHVzQ29kZSAhPT0gMSlcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgYGZhaWxlZCB0byBmZXRjaCB0cmFuc2FjdGlvbnMgZm9yIGNhcmQgJHtjYXJkLmxhc3Q0RGlnaXRzfS4gTWVzc2FnZTogJHttb250aERhdGE/LnRpdGxlIHx8ICcnfWAsXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKCFpc0NhcmRUcmFuc2FjdGlvbkRldGFpbHMobW9udGhEYXRhKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdtb250aERhdGEgaXMgbm90IG9mIHR5cGUgQ2FyZFRyYW5zYWN0aW9uRGV0YWlscycpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGFsbE1vbnRoc0RhdGEucHVzaChtb250aERhdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBlbmRpbmdEYXRhPy5zdGF0dXNDb2RlICE9PSAxICYmIHBlbmRpbmdEYXRhPy5zdGF0dXNDb2RlICE9PSA5Nikge1xuICAgICAgICAgIGRlYnVnKFxuICAgICAgICAgICAgYGZhaWxlZCB0byBmZXRjaCBwZW5kaW5nIHRyYW5zYWN0aW9ucyBmb3IgY2FyZCAke2NhcmQubGFzdDREaWdpdHN9LiBNZXNzYWdlOiAke3BlbmRpbmdEYXRhPy50aXRsZSB8fCAnJ31gLFxuICAgICAgICAgICk7XG4gICAgICAgICAgcGVuZGluZ0RhdGEgPSBudWxsO1xuICAgICAgICB9IGVsc2UgaWYgKCFpc0NhcmRQZW5kaW5nVHJhbnNhY3Rpb25EZXRhaWxzKHBlbmRpbmdEYXRhKSkge1xuICAgICAgICAgIGRlYnVnKCdwZW5kaW5nRGF0YSBpcyBub3Qgb2YgdHlwZSBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzJyk7XG4gICAgICAgICAgcGVuZGluZ0RhdGEgPSBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdHJhbnNhY3Rpb25zID0gY29udmVydFBhcnNlZERhdGFUb1RyYW5zYWN0aW9ucyhhbGxNb250aHNEYXRhLCBwZW5kaW5nRGF0YSwgdGhpcy5vcHRpb25zKTtcblxuICAgICAgICBkZWJ1ZygnZmlsdGVyIG91dCBvbGQgdHJhbnNhY3Rpb25zJyk7XG4gICAgICAgIGNvbnN0IHR4bnMgPVxuICAgICAgICAgICh0aGlzLm9wdGlvbnMub3V0cHV0RGF0YT8uZW5hYmxlVHJhbnNhY3Rpb25zRmlsdGVyQnlEYXRlID8/IHRydWUpXG4gICAgICAgICAgICA/IGZpbHRlck9sZFRyYW5zYWN0aW9ucyh0cmFuc2FjdGlvbnMsIG1vbWVudChzdGFydERhdGUpLCB0aGlzLm9wdGlvbnMuY29tYmluZUluc3RhbGxtZW50cyB8fCBmYWxzZSlcbiAgICAgICAgICAgIDogdHJhbnNhY3Rpb25zO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgdHhucyxcbiAgICAgICAgICBiYWxhbmNlOiBmcmFtZT8ubmV4dFRvdGFsRGViaXQgIT0gbnVsbCA/IC1mcmFtZS5uZXh0VG90YWxEZWJpdCA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBhY2NvdW50TnVtYmVyOiBjYXJkLmxhc3Q0RGlnaXRzLFxuICAgICAgICB9IGFzIFRyYW5zYWN0aW9uc0FjY291bnQ7XG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgZGVidWcoJ3JldHVybiB0aGUgc2NyYXBlZCBhY2NvdW50cycpO1xuXG4gICAgZGVidWcoSlNPTi5zdHJpbmdpZnkoYWNjb3VudHMsIG51bGwsIDIpKTtcbiAgICByZXR1cm4ge1xuICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgIGFjY291bnRzLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgVmlzYUNhbFNjcmFwZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLHFCQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxXQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxRQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSxhQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxRQUFBLEdBQUFQLE9BQUE7QUFDQSxJQUFBUSxjQUFBLEdBQUFSLE9BQUE7QUFDQSxJQUFBUyx1QkFBQSxHQUFBVCxPQUFBO0FBRUEsSUFBQVUsT0FBQSxHQUFBWCxzQkFBQSxDQUFBQyxPQUFBO0FBQXVCLFNBQUFELHVCQUFBWSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBRXZCLE1BQU1HLFVBQVUsR0FBRztFQUNqQixZQUFZLEVBQ1YsdUhBQXVIO0VBQ3pIQyxNQUFNLEVBQUUsc0NBQXNDO0VBQzlDQyxPQUFPLEVBQUUsc0NBQXNDO0VBQy9DLGlCQUFpQixFQUFFLHFDQUFxQztFQUN4RCxnQkFBZ0IsRUFBRSxXQUFXO0VBQzdCLGdCQUFnQixFQUFFLE1BQU07RUFDeEIsZ0JBQWdCLEVBQUU7QUFDcEIsQ0FBQztBQUNELE1BQU1DLFNBQVMsR0FBRywrQkFBK0I7QUFDakQsTUFBTUMsNkJBQTZCLEdBQ2pDLDhGQUE4RjtBQUNoRyxNQUFNQyx1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
|
|
321
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZGVidWciLCJfZWxlbWVudHNJbnRlcmFjdGlvbnMiLCJfZmV0Y2giLCJfbmF2aWdhdGlvbiIsIl9zdG9yYWdlIiwiX3RyYW5zYWN0aW9ucyIsIl93YWl0aW5nIiwiX3RyYW5zYWN0aW9uczIiLCJfYmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsIl9sb2Rhc2giLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJhcGlIZWFkZXJzIiwiT3JpZ2luIiwiUmVmZXJlciIsIkxPR0lOX1VSTCIsIlRSQU5TQUNUSU9OU19SRVFVRVNUX0VORFBPSU5UIiwiRlJBTUVTX1JFUVVFU1RfRU5EUE9JTlQiLCJQRU5ESU5HX1RSQU5TQUNUSU9OU19SRVFVRVNUX0VORFBPSU5UIiwiU1NPX0FVVEhPUklaQVRJT05fUkVRVUVTVF9FTkRQT0lOVCIsIkludmFsaWRQYXNzd29yZE1lc3NhZ2UiLCJkZWJ1ZyIsImdldERlYnVnIiwiVHJuVHlwZUNvZGUiLCJpc0F1dGhNb2R1bGUiLCJyZXN1bHQiLCJCb29sZWFuIiwiYXV0aCIsImNhbENvbm5lY3RUb2tlbiIsIlN0cmluZyIsInRyaW0iLCJhdXRoTW9kdWxlT3JVbmRlZmluZWQiLCJ1bmRlZmluZWQiLCJpc1BlbmRpbmciLCJ0cmFuc2FjdGlvbiIsImRlYkNyZERhdGUiLCJpc0NhcmRUcmFuc2FjdGlvbkRldGFpbHMiLCJpc0NhcmRQZW5kaW5nVHJhbnNhY3Rpb25EZXRhaWxzIiwiZ2V0TG9naW5GcmFtZSIsInBhZ2UiLCJmcmFtZSIsIndhaXRVbnRpbCIsImZyYW1lcyIsImZpbmQiLCJmIiwidXJsIiwiaW5jbHVkZXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsIkVycm9yIiwiaGFzSW52YWxpZFBhc3N3b3JkRXJyb3IiLCJlcnJvckZvdW5kIiwiZWxlbWVudFByZXNlbnRPblBhZ2UiLCJlcnJvck1lc3NhZ2UiLCJwYWdlRXZhbCIsIml0ZW0iLCJpbm5lclRleHQiLCJoYXNDaGFuZ2VQYXNzd29yZEZvcm0iLCJnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyIsInVybHMiLCJMb2dpblJlc3VsdHMiLCJTdWNjZXNzIiwiSW52YWxpZFBhc3N3b3JkIiwib3B0aW9ucyIsIkNoYW5nZVBhc3N3b3JkIiwiY3JlYXRlTG9naW5GaWVsZHMiLCJjcmVkZW50aWFscyIsInNlbGVjdG9yIiwidmFsdWUiLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwiY29udmVydFBhcnNlZERhdGFUb1RyYW5zYWN0aW9ucyIsImRhdGEiLCJwZW5kaW5nRGF0YSIsInBlbmRpbmdUcmFuc2FjdGlvbnMiLCJjYXJkc0xpc3QiLCJmbGF0TWFwIiwiY2FyZCIsImF1dGhEZXRhbGlzTGlzdCIsImJhbmtBY2NvdW50cyIsIm1vbnRoRGF0YSIsInJlZ3VsYXJEZWJpdERheXMiLCJhY2NvdW50cyIsImRlYml0RGF0ZXMiLCJpbW1lZGlhdGVEZWJpdERheXMiLCJpbW1pZGlhdGVEZWJpdHMiLCJkZWJpdERheXMiLCJjb21wbGV0ZWRUcmFuc2FjdGlvbnMiLCJkZWJpdERhdGUiLCJ0cmFuc2FjdGlvbnMiLCJhbGwiLCJtYXAiLCJudW1PZlBheW1lbnRzIiwibnVtYmVyT2ZQYXltZW50cyIsImluc3RhbGxtZW50cyIsIm51bWJlciIsImN1clBheW1lbnROdW0iLCJ0b3RhbCIsImRhdGUiLCJtb21lbnQiLCJ0cm5QdXJjaGFzZURhdGUiLCJjaGFyZ2VkQW1vdW50IiwidHJuQW10IiwiYW10QmVmb3JlQ29udkFuZEluZGV4Iiwib3JpZ2luYWxBbW91bnQiLCJ0cm5UeXBlQ29kZSIsImNyZWRpdCIsImlkZW50aWZpZXIiLCJ0cm5JbnRJZCIsInR5cGUiLCJyZWd1bGFyIiwic3RhbmRpbmdPcmRlciIsIlRyYW5zYWN0aW9uVHlwZXMiLCJOb3JtYWwiLCJJbnN0YWxsbWVudHMiLCJzdGF0dXMiLCJUcmFuc2FjdGlvblN0YXR1c2VzIiwiUGVuZGluZyIsIkNvbXBsZXRlZCIsImFkZCIsInRvSVNPU3RyaW5nIiwicHJvY2Vzc2VkRGF0ZSIsIkRhdGUiLCJvcmlnaW5hbEN1cnJlbmN5IiwidHJuQ3VycmVuY3lTeW1ib2wiLCJjaGFyZ2VkQ3VycmVuY3kiLCJkZWJDcmRDdXJyZW5jeVN5bWJvbCIsImRlc2NyaXB0aW9uIiwibWVyY2hhbnROYW1lIiwibWVtbyIsInRyYW5zVHlwZUNvbW1lbnREZXRhaWxzIiwidG9TdHJpbmciLCJjYXRlZ29yeSIsImJyYW5jaENvZGVEZXNjIiwiaW5jbHVkZVJhd1RyYW5zYWN0aW9uIiwicmF3VHJhbnNhY3Rpb24iLCJnZXRSYXdUcmFuc2FjdGlvbiIsIlZpc2FDYWxTY3JhcGVyIiwiQmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImF1dGhvcml6YXRpb24iLCJvcGVuTG9naW5Qb3B1cCIsIndhaXRVbnRpbEVsZW1lbnRGb3VuZCIsImNsaWNrQnV0dG9uIiwiZ2V0Q2FyZHMiLCJpbml0RGF0YSIsImdldEZyb21TZXNzaW9uU3RvcmFnZSIsImNhcmRzIiwiY2FyZFVuaXF1ZUlkIiwibGFzdDREaWdpdHMiLCJnZXRBdXRob3JpemF0aW9uSGVhZGVyIiwiYXV0aE1vZHVsZSIsImdldFhTaXRlSWQiLCJnZXRMb2dpbk9wdGlvbnMiLCJhdXRoUmVxdWVzdFByb21pc2UiLCJ3YWl0Rm9yUmVxdWVzdCIsInRpbWVvdXQiLCJjYXRjaCIsImxvZ2luVXJsIiwiZmllbGRzIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJwb3NzaWJsZVJlc3VsdHMiLCJjaGVja1JlYWRpbmVzcyIsInByZUFjdGlvbiIsInBvc3RBY3Rpb24iLCJ3YWl0Rm9yTmF2aWdhdGlvbiIsImN1cnJlbnRVcmwiLCJnZXRDdXJyZW50VXJsIiwiZW5kc1dpdGgiLCJyZXF1ZXN0IiwiaGVhZGVycyIsInJlcXVpcmVzQ2hhbmdlUGFzc3dvcmQiLCJ1c2VyQWdlbnQiLCJmZXRjaERhdGEiLCJkZWZhdWx0U3RhcnRNb21lbnQiLCJzdWJ0cmFjdCIsInN0YXJ0RGF0ZSIsInRvRGF0ZSIsInN0YXJ0TW9tZW50IiwibWF4IiwiZm9ybWF0IiwieFNpdGVJZCIsIkF1dGhvcml6YXRpb24iLCJmdXR1cmVNb250aHNUb1NjcmFwZSIsImZldGNoUG9zdCIsImNhcmRzRm9yRnJhbWVEYXRhIiwiZmluYWxNb250aFRvRmV0Y2hNb21lbnQiLCJtb250aHMiLCJkaWZmIiwiYWxsTW9udGhzRGF0YSIsIl8iLCJiYW5rSXNzdWVkQ2FyZHMiLCJjYXJkTGV2ZWxGcmFtZXMiLCJjYXJkVW5pcXVlSURBcnJheSIsImkiLCJtb250aCIsImNsb25lIiwieWVhciIsInN0YXR1c0NvZGUiLCJ0aXRsZSIsInB1c2giLCJ0eG5zIiwib3V0cHV0RGF0YSIsImVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZSIsImZpbHRlck9sZFRyYW5zYWN0aW9ucyIsImNvbWJpbmVJbnN0YWxsbWVudHMiLCJiYWxhbmNlIiwibmV4dFRvdGFsRGViaXQiLCJhY2NvdW50TnVtYmVyIiwiSlNPTiIsInN0cmluZ2lmeSIsInN1Y2Nlc3MiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyYXBlcnMvdmlzYS1jYWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgdHlwZSBIVFRQUmVxdWVzdCwgdHlwZSBGcmFtZSwgdHlwZSBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyLWNvcmUnO1xuaW1wb3J0IHsgZ2V0RGVidWcgfSBmcm9tICcuLi9oZWxwZXJzL2RlYnVnJztcbmltcG9ydCB7IGNsaWNrQnV0dG9uLCBlbGVtZW50UHJlc2VudE9uUGFnZSwgcGFnZUV2YWwsIHdhaXRVbnRpbEVsZW1lbnRGb3VuZCB9IGZyb20gJy4uL2hlbHBlcnMvZWxlbWVudHMtaW50ZXJhY3Rpb25zJztcbmltcG9ydCB7IGZldGNoUG9zdCB9IGZyb20gJy4uL2hlbHBlcnMvZmV0Y2gnO1xuaW1wb3J0IHsgZ2V0Q3VycmVudFVybCwgd2FpdEZvck5hdmlnYXRpb24gfSBmcm9tICcuLi9oZWxwZXJzL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgZ2V0RnJvbVNlc3Npb25TdG9yYWdlIH0gZnJvbSAnLi4vaGVscGVycy9zdG9yYWdlJztcbmltcG9ydCB7IGZpbHRlck9sZFRyYW5zYWN0aW9ucywgZ2V0UmF3VHJhbnNhY3Rpb24gfSBmcm9tICcuLi9oZWxwZXJzL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyB3YWl0VW50aWwgfSBmcm9tICcuLi9oZWxwZXJzL3dhaXRpbmcnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25TdGF0dXNlcywgVHJhbnNhY3Rpb25UeXBlcywgdHlwZSBUcmFuc2FjdGlvbiwgdHlwZSBUcmFuc2FjdGlvbnNBY2NvdW50IH0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsIExvZ2luUmVzdWx0cywgdHlwZSBMb2dpbk9wdGlvbnMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInO1xuaW1wb3J0IHsgdHlwZSBTY3JhcGVyU2NyYXBpbmdSZXN1bHQsIHR5cGUgU2NyYXBlck9wdGlvbnMgfSBmcm9tICcuL2ludGVyZmFjZSc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5jb25zdCBhcGlIZWFkZXJzID0ge1xuICAnVXNlci1BZ2VudCc6XG4gICAgJ01vemlsbGEvNS4wIChNYWNpbnRvc2g7IEludGVsIE1hYyBPUyBYIDEwXzE1XzcpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS8xNDIuMC4wLjAgU2FmYXJpLzUzNy4zNicsXG4gIE9yaWdpbjogJ2h0dHBzOi8vZGlnaXRhbC13ZWIuY2FsLW9ubGluZS5jby5pbCcsXG4gIFJlZmVyZXI6ICdodHRwczovL2RpZ2l0YWwtd2ViLmNhbC1vbmxpbmUuY28uaWwnLFxuICAnQWNjZXB0LUxhbmd1YWdlJzogJ2hlLUlMLGhlO3E9MC45LGVuLVVTO3E9MC44LGVuO3E9MC43JyxcbiAgJ1NlYy1GZXRjaC1TaXRlJzogJ3NhbWUtc2l0ZScsXG4gICdTZWMtRmV0Y2gtTW9kZSc6ICdjb3JzJyxcbiAgJ1NlYy1GZXRjaC1EZXN0JzogJ2VtcHR5Jyxcbn07XG5jb25zdCBMT0dJTl9VUkwgPSAnaHR0cHM6Ly93d3cuY2FsLW9ubGluZS5jby5pbC8nO1xuY29uc3QgVFJBTlNBQ1RJT05TX1JFUVVFU1RfRU5EUE9JTlQgPVxuICAnaHR0cHM6Ly9hcGkuY2FsLW9ubGluZS5jby5pbC9UcmFuc2FjdGlvbnMvYXBpL3RyYW5zYWN0aW9uc0RldGFpbHMvZ2V0Q2FyZFRyYW5zYWN0aW9uc0RldGFpbHMnO1xuY29uc3QgRlJBTUVTX1JFUVVFU1RfRU5EUE9JTlQgPSAnaHR0cHM6Ly9hcGkuY2FsLW9ubGluZS5jby5pbC9GcmFtZXMvYXBpL0ZyYW1lcy9HZXRGcmFtZVN0YXR1cyc7XG5jb25zdCBQRU5ESU5HX1RSQU5TQUNUSU9OU19SRVFVRVNUX0VORFBPSU5UID1cbiAgJ2h0dHBzOi8vYXBpLmNhbC1vbmxpbmUuY28uaWwvVHJhbnNhY3Rpb25zL2FwaS9hcHByb3ZhbHMvZ2V0Q2xlYXJhbmNlUmVxdWVzdHMnO1xuY29uc3QgU1NPX0FVVEhPUklaQVRJT05fUkVRVUVTVF9FTkRQT0lOVCA9ICdodHRwczovL2Nvbm5lY3QuY2FsLW9ubGluZS5jby5pbC9jb2wtcmVzdC9jYWxjb25uZWN0L2F1dGhlbnRpY2F0aW9uL1NTTyc7XG5cbmNvbnN0IEludmFsaWRQYXNzd29yZE1lc3NhZ2UgPSAn16nXnSDXlNee16nXqtee16kg15DXlSDXlNeh15nXodee15Qg16nXlNeV15bXoNeVINep15LXldeZ15nXnSc7XG5cbmNvbnN0IGRlYnVnID0gZ2V0RGVidWcoJ3Zpc2EtY2FsJyk7XG5cbmVudW0gVHJuVHlwZUNvZGUge1xuICByZWd1bGFyID0gJzUnLFxuICBjcmVkaXQgPSAnNicsXG4gIGluc3RhbGxtZW50cyA9ICc4JyxcbiAgc3RhbmRpbmdPcmRlciA9ICc5Jyxcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbiB7XG4gIGFtdEJlZm9yZUNvbnZBbmRJbmRleDogbnVtYmVyO1xuICBicmFuY2hDb2RlRGVzYzogc3RyaW5nO1xuICBjYXNoQWNjTWFuYWdlck5hbWU6IG51bGw7XG4gIGNhc2hBY2NvdW50TWFuYWdlcjogbnVsbDtcbiAgY2FzaEFjY291bnRUcm5BbXQ6IG51bWJlcjtcbiAgY2hhcmdlRXh0ZXJuYWxUb0NhcmRDb21tZW50OiBzdHJpbmc7XG4gIGNvbW1lbnRzOiBbXTtcbiAgY3VyUGF5bWVudE51bTogbnVtYmVyO1xuICBkZWJDcmRDdXJyZW5jeVN5bWJvbDogQ3VycmVuY3lTeW1ib2w7XG4gIGRlYkNyZERhdGU6IHN0cmluZztcbiAgZGViaXRTcHJlYWRJbmQ6IGJvb2xlYW47XG4gIGRpc2NvdW50QW1vdW50OiB1bmtub3duO1xuICBkaXNjb3VudFJlYXNvbjogdW5rbm93bjtcbiAgaW1tZWRpYXRlQ29tbWVudHM6IFtdO1xuICBpc0ltbWVkaWF0ZUNvbW1lbnRJbmQ6IGJvb2xlYW47XG4gIGlzSW1tZWRpYXRlSEhLSW5kOiBib29sZWFuO1xuICBpc01hcmdhcml0YTogYm9vbGVhbjtcbiAgaXNTcHJlYWRQYXltZW5zdEFicm9hZDogYm9vbGVhbjtcbiAgbGlua2VkQ29tbWVudHM6IFtdO1xuICBtZXJjaGFudEFkZHJlc3M6IHN0cmluZztcbiAgbWVyY2hhbnROYW1lOiBzdHJpbmc7XG4gIG1lcmNoYW50UGhvbmVObzogc3RyaW5nO1xuICBudW1PZlBheW1lbnRzOiBudW1iZXI7XG4gIG9uR29pbmdUcmFuc2FjdGlvbnNDb21tZW50OiBzdHJpbmc7XG4gIHJlZnVuZEluZDogYm9vbGVhbjtcbiAgcm91bmRpbmdBbW91bnQ6IHVua25vd247XG4gIHJvdW5kaW5nUmVhc29uOiB1bmtub3duO1xuICB0b2tlbkluZDogMDtcbiAgdG9rZW5OdW1iZXJQYXJ0NDogJyc7XG4gIHRyYW5zQ2FyZFByZXNlbnRJbmQ6IGJvb2xlYW47XG4gIHRyYW5zVHlwZUNvbW1lbnREZXRhaWxzOiBbXTtcbiAgdHJuQW10OiBudW1iZXI7XG4gIHRybkN1cnJlbmN5U3ltYm9sOiBDdXJyZW5jeVN5bWJvbDtcbiAgdHJuRXhhY1dheTogbnVtYmVyO1xuICB0cm5JbnRJZDogc3RyaW5nO1xuICB0cm5OdW1hcmV0b3I6IG51bWJlcjtcbiAgdHJuUHVyY2hhc2VEYXRlOiBzdHJpbmc7XG4gIHRyblR5cGU6IHN0cmluZztcbiAgdHJuVHlwZUNvZGU6IFRyblR5cGVDb2RlO1xuICB3YWxsZXRQcm92aWRlckNvZGU6IDA7XG4gIHdhbGxldFByb3ZpZGVyRGVzYzogJyc7XG4gIGVhcmx5UGF5bWVudEluZDogYm9vbGVhbjtcbn1cbmludGVyZmFjZSBTY3JhcGVkUGVuZGluZ1RyYW5zYWN0aW9uIHtcbiAgbWVyY2hhbnRJRDogc3RyaW5nO1xuICBtZXJjaGFudE5hbWU6IHN0cmluZztcbiAgdHJuUHVyY2hhc2VEYXRlOiBzdHJpbmc7XG4gIHdhbGxldFRyYW5JbmQ6IG51bWJlcjtcbiAgdHJhbnNhY3Rpb25zT3JpZ2luOiBudW1iZXI7XG4gIHRybkFtdDogbnVtYmVyO1xuICB0cGFBcHByb3ZhbEFtb3VudDogdW5rbm93bjtcbiAgdHJuQ3VycmVuY3lTeW1ib2w6IEN1cnJlbmN5U3ltYm9sO1xuICB0cm5UeXBlQ29kZTogVHJuVHlwZUNvZGU7XG4gIHRyblR5cGU6IHN0cmluZztcbiAgYnJhbmNoQ29kZURlc2M6IHN0cmluZztcbiAgdHJhbnNDYXJkUHJlc2VudEluZDogYm9vbGVhbjtcbiAgajVJbmRpY2F0b3I6IHN0cmluZztcbiAgbnVtYmVyT2ZQYXltZW50czogbnVtYmVyO1xuICBmaXJzdFBheW1lbnRBbW91bnQ6IG51bWJlcjtcbiAgdHJhbnNUeXBlQ29tbWVudERldGFpbHM6IFtdO1xufVxuaW50ZXJmYWNlIEluaXRSZXNwb25zZSB7XG4gIHJlc3VsdDoge1xuICAgIGNhcmRzOiB7XG4gICAgICBjYXJkVW5pcXVlSWQ6IHN0cmluZztcbiAgICAgIGxhc3Q0RGlnaXRzOiBzdHJpbmc7XG4gICAgICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xuICAgIH1bXTtcbiAgfTtcbn1cbnR5cGUgQ3VycmVuY3lTeW1ib2wgPSBzdHJpbmc7XG5pbnRlcmZhY2UgQ2FyZFRyYW5zYWN0aW9uRGV0YWlsc0Vycm9yIHtcbiAgdGl0bGU6IHN0cmluZztcbiAgc3RhdHVzQ29kZTogbnVtYmVyO1xufVxuaW50ZXJmYWNlIENhcmRUcmFuc2FjdGlvbkRldGFpbHMgZXh0ZW5kcyBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzRXJyb3Ige1xuICByZXN1bHQ6IHtcbiAgICBiYW5rQWNjb3VudHM6IHtcbiAgICAgIGJhbmtBY2NvdW50TnVtOiBzdHJpbmc7XG4gICAgICBiYW5rTmFtZTogc3RyaW5nO1xuICAgICAgY2hvaWNlRXh0ZXJuYWxUcmFuc2FjdGlvbnM6IGFueTtcbiAgICAgIGN1cnJlbnRCYW5rQWNjb3VudEluZDogYm9vbGVhbjtcbiAgICAgIGRlYml0RGF0ZXM6IHtcbiAgICAgICAgYmFza2V0QW1vdW50Q29tbWVudDogdW5rbm93bjtcbiAgICAgICAgY2hvaWNlSEhLRGViaXQ6IG51bWJlcjtcbiAgICAgICAgZGF0ZTogc3RyaW5nO1xuICAgICAgICBkZWJpdFJlYXNvbjogdW5rbm93bjtcbiAgICAgICAgZml4RGViaXRBbW91bnQ6IG51bWJlcjtcbiAgICAgICAgZnJvbVB1cmNoYXNlRGF0ZTogc3RyaW5nO1xuICAgICAgICBpc0Nob2ljZVJlcGFpbWVudDogYm9vbGVhbjtcbiAgICAgICAgdG9QdXJjaGFzZURhdGU6IHN0cmluZztcbiAgICAgICAgdG90YWxCYXNrZXRBbW91bnQ6IG51bWJlcjtcbiAgICAgICAgdG90YWxEZWJpdHM6IHtcbiAgICAgICAgICBjdXJyZW5jeVN5bWJvbDogQ3VycmVuY3lTeW1ib2w7XG4gICAgICAgICAgYW1vdW50OiBudW1iZXI7XG4gICAgICAgIH1bXTtcbiAgICAgICAgdHJhbnNhY3Rpb25zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXTtcbiAgICAgIH1bXTtcbiAgICAgIGltbWlkaWF0ZURlYml0czogeyB0b3RhbERlYml0czogW107IGRlYml0RGF5czogW10gfTtcbiAgICB9W107XG4gICAgYmxvY2tlZENhcmRJbmQ6IGJvb2xlYW47XG4gIH07XG4gIHN0YXR1c0NvZGU6IDE7XG4gIHN0YXR1c0Rlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHN0YXR1c1RpdGxlOiBzdHJpbmc7XG59XG5pbnRlcmZhY2UgQ2FyZFBlbmRpbmdUcmFuc2FjdGlvbkRldGFpbHMgZXh0ZW5kcyBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzRXJyb3Ige1xuICByZXN1bHQ6IHtcbiAgICBjYXJkc0xpc3Q6IHtcbiAgICAgIGNhcmRVbmlxdWVJRDogc3RyaW5nO1xuICAgICAgYXV0aERldGFsaXNMaXN0OiBTY3JhcGVkUGVuZGluZ1RyYW5zYWN0aW9uW107XG4gICAgfVtdO1xuICB9O1xuICBzdGF0dXNDb2RlOiAxO1xuICBzdGF0dXNEZXNjcmlwdGlvbjogc3RyaW5nO1xuICBzdGF0dXNUaXRsZTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgQ2FyZExldmVsRnJhbWUge1xuICBjYXJkVW5pcXVlSWQ6IHN0cmluZztcbiAgbmV4dFRvdGFsRGViaXQ/OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBGcmFtZXNSZXNwb25zZSB7XG4gIHJlc3VsdD86IHtcbiAgICBiYW5rSXNzdWVkQ2FyZHM/OiB7XG4gICAgICBjYXJkTGV2ZWxGcmFtZXM/OiBDYXJkTGV2ZWxGcmFtZVtdO1xuICAgIH07XG4gIH07XG59XG5cbmludGVyZmFjZSBBdXRoTW9kdWxlIHtcbiAgYXV0aDoge1xuICAgIGNhbENvbm5lY3RUb2tlbjogc3RyaW5nIHwgbnVsbDtcbiAgfTtcbn1cblxuZnVuY3Rpb24gaXNBdXRoTW9kdWxlKHJlc3VsdDogYW55KTogcmVzdWx0IGlzIEF1dGhNb2R1bGUge1xuICByZXR1cm4gQm9vbGVhbihyZXN1bHQ/LmF1dGg/LmNhbENvbm5lY3RUb2tlbiAmJiBTdHJpbmcocmVzdWx0LmF1dGguY2FsQ29ubmVjdFRva2VuKS50cmltKCkpO1xufVxuXG5mdW5jdGlvbiBhdXRoTW9kdWxlT3JVbmRlZmluZWQocmVzdWx0OiBhbnkpOiBBdXRoTW9kdWxlIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGlzQXV0aE1vZHVsZShyZXN1bHQpID8gcmVzdWx0IDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBpc1BlbmRpbmcoXG4gIHRyYW5zYWN0aW9uOiBTY3JhcGVkVHJhbnNhY3Rpb24gfCBTY3JhcGVkUGVuZGluZ1RyYW5zYWN0aW9uLFxuKTogdHJhbnNhY3Rpb24gaXMgU2NyYXBlZFBlbmRpbmdUcmFuc2FjdGlvbiB7XG4gIHJldHVybiAodHJhbnNhY3Rpb24gYXMgU2NyYXBlZFRyYW5zYWN0aW9uKS5kZWJDcmREYXRlID09PSB1bmRlZmluZWQ7IC8vIGFuIGFyYml0cmFyeSBmaWVsZCB0aGF0IG9ubHkgYXBwZWFycyBpbiBhIGNvbXBsZXRlZCB0cmFuc2FjdGlvblxufVxuXG5mdW5jdGlvbiBpc0NhcmRUcmFuc2FjdGlvbkRldGFpbHMoXG4gIHJlc3VsdDogQ2FyZFRyYW5zYWN0aW9uRGV0YWlscyB8IENhcmRUcmFuc2FjdGlvbkRldGFpbHNFcnJvcixcbik6IHJlc3VsdCBpcyBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzIHtcbiAgcmV0dXJuIChyZXN1bHQgYXMgQ2FyZFRyYW5zYWN0aW9uRGV0YWlscykucmVzdWx0ICE9PSB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGlzQ2FyZFBlbmRpbmdUcmFuc2FjdGlvbkRldGFpbHMoXG4gIHJlc3VsdDogQ2FyZFBlbmRpbmdUcmFuc2FjdGlvbkRldGFpbHMgfCBDYXJkVHJhbnNhY3Rpb25EZXRhaWxzRXJyb3IsXG4pOiByZXN1bHQgaXMgQ2FyZFBlbmRpbmdUcmFuc2FjdGlvbkRldGFpbHMge1xuICByZXR1cm4gKHJlc3VsdCBhcyBDYXJkUGVuZGluZ1RyYW5zYWN0aW9uRGV0YWlscykucmVzdWx0ICE9PSB1bmRlZmluZWQ7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldExvZ2luRnJhbWUocGFnZTogUGFnZSkge1xuICBsZXQgZnJhbWU6IEZyYW1lIHwgbnVsbCA9IG51bGw7XG4gIGRlYnVnKCd3YWl0IHVudGlsIGxvZ2luIGZyYW1lIGZvdW5kJyk7XG4gIGF3YWl0IHdhaXRVbnRpbChcbiAgICAoKSA9PiB7XG4gICAgICBmcmFtZSA9IHBhZ2UuZnJhbWVzKCkuZmluZChmID0+IGYudXJsKCkuaW5jbHVkZXMoJ2Nvbm5lY3QnKSkgfHwgbnVsbDtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoISFmcmFtZSk7XG4gICAgfSxcbiAgICAnd2FpdCBmb3IgaWZyYW1lIHdpdGggbG9naW4gZm9ybScsXG4gICAgMTAwMDAsXG4gICAgMTAwMCxcbiAgKTtcblxuICBpZiAoIWZyYW1lKSB7XG4gICAgZGVidWcoJ2ZhaWxlZCB0byBmaW5kIGxvZ2luIGZyYW1lIGZvciAxMCBzZWNvbmRzJyk7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdmYWlsZWQgdG8gZXh0cmFjdCBsb2dpbiBpZnJhbWUnKTtcbiAgfVxuXG4gIHJldHVybiBmcmFtZTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gaGFzSW52YWxpZFBhc3N3b3JkRXJyb3IocGFnZTogUGFnZSkge1xuICBjb25zdCBmcmFtZSA9IGF3YWl0IGdldExvZ2luRnJhbWUocGFnZSk7XG4gIGNvbnN0IGVycm9yRm91bmQgPSBhd2FpdCBlbGVtZW50UHJlc2VudE9uUGFnZShmcmFtZSwgJ2Rpdi5nZW5lcmFsLWVycm9yID4gZGl2Jyk7XG4gIGNvbnN0IGVycm9yTWVzc2FnZSA9IGVycm9yRm91bmRcbiAgICA/IGF3YWl0IHBhZ2VFdmFsKGZyYW1lLCAnZGl2LmdlbmVyYWwtZXJyb3IgPiBkaXYnLCAnJywgaXRlbSA9PiB7XG4gICAgICAgIHJldHVybiAoaXRlbSBhcyBIVE1MRGl2RWxlbWVudCkuaW5uZXJUZXh0O1xuICAgICAgfSlcbiAgICA6ICcnO1xuICByZXR1cm4gZXJyb3JNZXNzYWdlID09PSBJbnZhbGlkUGFzc3dvcmRNZXNzYWdlO1xufVxuXG5hc3luYyBmdW5jdGlvbiBoYXNDaGFuZ2VQYXNzd29yZEZvcm0ocGFnZTogUGFnZSkge1xuICBjb25zdCBmcmFtZSA9IGF3YWl0IGdldExvZ2luRnJhbWUocGFnZSk7XG4gIGNvbnN0IGVycm9yRm91bmQgPSBhd2FpdCBlbGVtZW50UHJlc2VudE9uUGFnZShmcmFtZSwgJy5jaGFuZ2UtcGFzc3dvcmQtc3VidGl0bGUnKTtcbiAgcmV0dXJuIGVycm9yRm91bmQ7XG59XG5cbmZ1bmN0aW9uIGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKCkge1xuICBkZWJ1ZygncmV0dXJuIHBvc3NpYmxlIGxvZ2luIHJlc3VsdHMnKTtcbiAgY29uc3QgdXJsczogTG9naW5PcHRpb25zWydwb3NzaWJsZVJlc3VsdHMnXSA9IHtcbiAgICBbTG9naW5SZXN1bHRzLlN1Y2Nlc3NdOiBbL2Rhc2hib2FyZC9pXSxcbiAgICBbTG9naW5SZXN1bHRzLkludmFsaWRQYXNzd29yZF06IFtcbiAgICAgIGFzeW5jIChvcHRpb25zPzogeyBwYWdlPzogUGFnZSB9KSA9PiB7XG4gICAgICAgIGNvbnN0IHBhZ2UgPSBvcHRpb25zPy5wYWdlO1xuICAgICAgICBpZiAoIXBhZ2UpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhhc0ludmFsaWRQYXNzd29yZEVycm9yKHBhZ2UpO1xuICAgICAgfSxcbiAgICBdLFxuICAgIC8vIFtMb2dpblJlc3VsdHMuQWNjb3VudEJsb2NrZWRdOiBbXSwgLy8gVE9ETyBhZGQgd2hlbiByZWFjaGluZyB0aGlzIHNjZW5hcmlvXG4gICAgW0xvZ2luUmVzdWx0cy5DaGFuZ2VQYXNzd29yZF06IFtcbiAgICAgIGFzeW5jIChvcHRpb25zPzogeyBwYWdlPzogUGFnZSB9KSA9PiB7XG4gICAgICAgIGNvbnN0IHBhZ2UgPSBvcHRpb25zPy5wYWdlO1xuICAgICAgICBpZiAoIXBhZ2UpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGhhc0NoYW5nZVBhc3N3b3JkRm9ybShwYWdlKTtcbiAgICAgIH0sXG4gICAgXSxcbiAgfTtcbiAgcmV0dXJuIHVybHM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICBkZWJ1ZygnY3JlYXRlIGxvZ2luIGZpZWxkcyBmb3IgdXNlcm5hbWUgYW5kIHBhc3N3b3JkJyk7XG4gIHJldHVybiBbXG4gICAgeyBzZWxlY3RvcjogJ1tmb3JtY29udHJvbG5hbWU9XCJ1c2VyTmFtZVwiXScsIHZhbHVlOiBjcmVkZW50aWFscy51c2VybmFtZSB9LFxuICAgIHsgc2VsZWN0b3I6ICdbZm9ybWNvbnRyb2xuYW1lPVwicGFzc3dvcmRcIl0nLCB2YWx1ZTogY3JlZGVudGlhbHMucGFzc3dvcmQgfSxcbiAgXTtcbn1cblxuZnVuY3Rpb24gY29udmVydFBhcnNlZERhdGFUb1RyYW5zYWN0aW9ucyhcbiAgZGF0YTogQ2FyZFRyYW5zYWN0aW9uRGV0YWlsc1tdLFxuICBwZW5kaW5nRGF0YT86IENhcmRQZW5kaW5nVHJhbnNhY3Rpb25EZXRhaWxzIHwgbnVsbCxcbiAgb3B0aW9ucz86IFNjcmFwZXJPcHRpb25zLFxuKTogVHJhbnNhY3Rpb25bXSB7XG4gIGNvbnN0IHBlbmRpbmdUcmFuc2FjdGlvbnMgPSBwZW5kaW5nRGF0YT8ucmVzdWx0XG4gICAgPyBwZW5kaW5nRGF0YS5yZXN1bHQuY2FyZHNMaXN0LmZsYXRNYXAoY2FyZCA9PiBjYXJkLmF1dGhEZXRhbGlzTGlzdClcbiAgICA6IFtdO1xuXG4gIGNvbnN0IGJhbmtBY2NvdW50cyA9IGRhdGEuZmxhdE1hcChtb250aERhdGEgPT4gbW9udGhEYXRhLnJlc3VsdC5iYW5rQWNjb3VudHMpO1xuICBjb25zdCByZWd1bGFyRGViaXREYXlzID0gYmFua0FjY291bnRzLmZsYXRNYXAoYWNjb3VudHMgPT4gYWNjb3VudHMuZGViaXREYXRlcyk7XG4gIGNvbnN0IGltbWVkaWF0ZURlYml0RGF5cyA9IGJhbmtBY2NvdW50cy5mbGF0TWFwKGFjY291bnRzID0+IGFjY291bnRzLmltbWlkaWF0ZURlYml0cy5kZWJpdERheXMpO1xuICBjb25zdCBjb21wbGV0ZWRUcmFuc2FjdGlvbnMgPSBbLi4ucmVndWxhckRlYml0RGF5cywgLi4uaW1tZWRpYXRlRGViaXREYXlzXS5mbGF0TWFwKFxuICAgIGRlYml0RGF0ZSA9PiBkZWJpdERhdGUudHJhbnNhY3Rpb25zLFxuICApO1xuXG4gIGNvbnN0IGFsbDogKFNjcmFwZWRUcmFuc2FjdGlvbiB8IFNjcmFwZWRQZW5kaW5nVHJhbnNhY3Rpb24pW10gPSBbLi4ucGVuZGluZ1RyYW5zYWN0aW9ucywgLi4uY29tcGxldGVkVHJhbnNhY3Rpb25zXTtcblxuICByZXR1cm4gYWxsLm1hcCh0cmFuc2FjdGlvbiA9PiB7XG4gICAgY29uc3QgbnVtT2ZQYXltZW50cyA9IGlzUGVuZGluZyh0cmFuc2FjdGlvbikgPyB0cmFuc2FjdGlvbi5udW1iZXJPZlBheW1lbnRzIDogdHJhbnNhY3Rpb24ubnVtT2ZQYXltZW50cztcbiAgICBjb25zdCBpbnN0YWxsbWVudHMgPSBudW1PZlBheW1lbnRzXG4gICAgICA/IHtcbiAgICAgICAgICBudW1iZXI6IGlzUGVuZGluZyh0cmFuc2FjdGlvbikgPyAxIDogdHJhbnNhY3Rpb24uY3VyUGF5bWVudE51bSxcbiAgICAgICAgICB0b3RhbDogbnVtT2ZQYXltZW50cyxcbiAgICAgICAgfVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBkYXRlID0gbW9tZW50KHRyYW5zYWN0aW9uLnRyblB1cmNoYXNlRGF0ZSk7XG5cbiAgICBjb25zdCBjaGFyZ2VkQW1vdW50ID0gKGlzUGVuZGluZyh0cmFuc2FjdGlvbikgPyB0cmFuc2FjdGlvbi50cm5BbXQgOiB0cmFuc2FjdGlvbi5hbXRCZWZvcmVDb252QW5kSW5kZXgpICogLTE7XG4gICAgY29uc3Qgb3JpZ2luYWxBbW91bnQgPSB0cmFuc2FjdGlvbi50cm5BbXQgKiAodHJhbnNhY3Rpb24udHJuVHlwZUNvZGUgPT09IFRyblR5cGVDb2RlLmNyZWRpdCA/IDEgOiAtMSk7XG5cbiAgICBjb25zdCByZXN1bHQ6IFRyYW5zYWN0aW9uID0ge1xuICAgICAgaWRlbnRpZmllcjogIWlzUGVuZGluZyh0cmFuc2FjdGlvbikgPyB0cmFuc2FjdGlvbi50cm5JbnRJZCA6IHVuZGVmaW5lZCxcbiAgICAgIHR5cGU6IFtUcm5UeXBlQ29kZS5yZWd1bGFyLCBUcm5UeXBlQ29kZS5zdGFuZGluZ09yZGVyXS5pbmNsdWRlcyh0cmFuc2FjdGlvbi50cm5UeXBlQ29kZSlcbiAgICAgICAgPyBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbFxuICAgICAgICA6IFRyYW5zYWN0aW9uVHlwZXMuSW5zdGFsbG1lbnRzLFxuICAgICAgc3RhdHVzOiBpc1BlbmRpbmcodHJhbnNhY3Rpb24pID8gVHJhbnNhY3Rpb25TdGF0dXNlcy5QZW5kaW5nIDogVHJhbnNhY3Rpb25TdGF0dXNlcy5Db21wbGV0ZWQsXG4gICAgICBkYXRlOiBpbnN0YWxsbWVudHMgPyBkYXRlLmFkZChpbnN0YWxsbWVudHMubnVtYmVyIC0gMSwgJ21vbnRoJykudG9JU09TdHJpbmcoKSA6IGRhdGUudG9JU09TdHJpbmcoKSxcbiAgICAgIHByb2Nlc3NlZERhdGU6IGlzUGVuZGluZyh0cmFuc2FjdGlvbikgPyBkYXRlLnRvSVNPU3RyaW5nKCkgOiBuZXcgRGF0ZSh0cmFuc2FjdGlvbi5kZWJDcmREYXRlKS50b0lTT1N0cmluZygpLFxuICAgICAgb3JpZ2luYWxBbW91bnQsXG4gICAgICBvcmlnaW5hbEN1cnJlbmN5OiB0cmFuc2FjdGlvbi50cm5DdXJyZW5jeVN5bWJvbCxcbiAgICAgIGNoYXJnZWRBbW91bnQsXG4gICAgICBjaGFyZ2VkQ3VycmVuY3k6ICFpc1BlbmRpbmcodHJhbnNhY3Rpb24pID8gdHJhbnNhY3Rpb24uZGViQ3JkQ3VycmVuY3lTeW1ib2wgOiB1bmRlZmluZWQsXG4gICAgICBkZXNjcmlwdGlvbjogdHJhbnNhY3Rpb24ubWVyY2hhbnROYW1lLFxuICAgICAgbWVtbzogdHJhbnNhY3Rpb24udHJhbnNUeXBlQ29tbWVudERldGFpbHMudG9TdHJpbmcoKSxcbiAgICAgIGNhdGVnb3J5OiB0cmFuc2FjdGlvbi5icmFuY2hDb2RlRGVzYyxcbiAgICB9O1xuXG4gICAgaWYgKGluc3RhbGxtZW50cykge1xuICAgICAgcmVzdWx0Lmluc3RhbGxtZW50cyA9IGluc3RhbGxtZW50cztcbiAgICB9XG5cbiAgICBpZiAob3B0aW9ucz8uaW5jbHVkZVJhd1RyYW5zYWN0aW9uKSB7XG4gICAgICByZXN1bHQucmF3VHJhbnNhY3Rpb24gPSBnZXRSYXdUcmFuc2FjdGlvbih0cmFuc2FjdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59XG5cbnR5cGUgU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMgPSB7IHVzZXJuYW1lOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmcgfTtcblxuY2xhc3MgVmlzYUNhbFNjcmFwZXIgZXh0ZW5kcyBCYXNlU2NyYXBlcldpdGhCcm93c2VyPFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzPiB7XG4gIHByaXZhdGUgYXV0aG9yaXphdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuXG4gIHByaXZhdGUgYXV0aFJlcXVlc3RQcm9taXNlOiBQcm9taXNlPEhUVFBSZXF1ZXN0IHwgdW5kZWZpbmVkPiB8IHVuZGVmaW5lZDtcblxuICBvcGVuTG9naW5Qb3B1cCA9IGFzeW5jICgpID0+IHtcbiAgICBkZWJ1Zygnb3BlbiBsb2dpbiBwb3B1cCwgd2FpdCB1bnRpbCBsb2dpbiBidXR0b24gYXZhaWxhYmxlJyk7XG4gICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHRoaXMucGFnZSwgJyNjY0xvZ2luRGVza3RvcEJ0bicsIHRydWUpO1xuICAgIGRlYnVnKCdjbGljayBvbiB0aGUgbG9naW4gYnV0dG9uJyk7XG4gICAgYXdhaXQgY2xpY2tCdXR0b24odGhpcy5wYWdlLCAnI2NjTG9naW5EZXNrdG9wQnRuJyk7XG4gICAgZGVidWcoJ2dldCB0aGUgZnJhbWUgdGhhdCBob2xkcyB0aGUgbG9naW4nKTtcbiAgICBjb25zdCBmcmFtZSA9IGF3YWl0IGdldExvZ2luRnJhbWUodGhpcy5wYWdlKTtcbiAgICBkZWJ1Zygnd2FpdCB1bnRpbCB0aGUgcGFzc3dvcmQgbG9naW4gdGFiIGhlYWRlciBpcyBhdmFpbGFibGUnKTtcbiAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQoZnJhbWUsICcjcmVndWxhci1sb2dpbicpO1xuICAgIGRlYnVnKCduYXZpZ2F0ZSB0byB0aGUgcGFzc3dvcmQgbG9naW4gdGFiJyk7XG4gICAgYXdhaXQgY2xpY2tCdXR0b24oZnJhbWUsICcjcmVndWxhci1sb2dpbicpO1xuICAgIGRlYnVnKCd3YWl0IHVudGlsIHRoZSBwYXNzd29yZCBsb2dpbiB0YWIgaXMgYWN0aXZlJyk7XG4gICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKGZyYW1lLCAncmVndWxhci1sb2dpbicpO1xuXG4gICAgcmV0dXJuIGZyYW1lO1xuICB9O1xuXG4gIGFzeW5jIGdldENhcmRzKCkge1xuICAgIGNvbnN0IGluaXREYXRhID0gYXdhaXQgd2FpdFVudGlsKFxuICAgICAgKCkgPT4gZ2V0RnJvbVNlc3Npb25TdG9yYWdlPEluaXRSZXNwb25zZT4odGhpcy5wYWdlLCAnaW5pdCcpLFxuICAgICAgJ2dldCBpbml0IGRhdGEgaW4gc2Vzc2lvbiBzdG9yYWdlJyxcbiAgICAgIDEwMDAwLFxuICAgICAgMTAwMCxcbiAgICApO1xuICAgIGlmICghaW5pdERhdGEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IGZpbmQgXCJpbml0XCIgZGF0YSBpbiBzZXNzaW9uIHN0b3JhZ2UnKTtcbiAgICB9XG4gICAgcmV0dXJuIGluaXREYXRhPy5yZXN1bHQuY2FyZHMubWFwKCh7IGNhcmRVbmlxdWVJZCwgbGFzdDREaWdpdHMgfSkgPT4gKHsgY2FyZFVuaXF1ZUlkLCBsYXN0NERpZ2l0cyB9KSk7XG4gIH1cblxuICBhc3luYyBnZXRBdXRob3JpemF0aW9uSGVhZGVyKCkge1xuICAgIGlmICghdGhpcy5hdXRob3JpemF0aW9uKSB7XG4gICAgICBkZWJ1ZygnZmV0Y2hpbmcgYXV0aG9yaXphdGlvbiBoZWFkZXInKTtcbiAgICAgIGNvbnN0IGF1dGhNb2R1bGUgPSBhd2FpdCB3YWl0VW50aWwoXG4gICAgICAgIGFzeW5jICgpID0+IGF1dGhNb2R1bGVPclVuZGVmaW5lZChhd2FpdCBnZXRGcm9tU2Vzc2lvblN0b3JhZ2U8QXV0aE1vZHVsZT4odGhpcy5wYWdlLCAnYXV0aC1tb2R1bGUnKSksXG4gICAgICAgICdnZXQgYXV0aG9yaXphdGlvbiBoZWFkZXIgd2l0aCB2YWxpZCB0b2tlbiBpbiBzZXNzaW9uIHN0b3JhZ2UnLFxuICAgICAgICAxMF8wMDAsXG4gICAgICAgIDUwLFxuICAgICAgKTtcbiAgICAgIHJldHVybiBgQ0FMQXV0aFNjaGVtZSAke2F1dGhNb2R1bGUuYXV0aC5jYWxDb25uZWN0VG9rZW59YDtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuYXV0aG9yaXphdGlvbjtcbiAgfVxuXG4gIGFzeW5jIGdldFhTaXRlSWQoKSB7XG4gICAgLypcbiAgICAgIEkgZG9uJ3Qga25vdyBpZiB0aGUgY29uc3RhbnQgYmVsb3cgd2lsbCBjaGFuZ2UgaW4gdGhlIGZlYXR1cmUuXG4gICAgICBJZiBzbywgdXNlIHRoZSBuZXh0IGNvZGU6XG5cbiAgICAgIHJldHVybiB0aGlzLnBhZ2UuZXZhbHVhdGUoKCkgPT4gbmV3IFV0KCkueFNpdGVJZCk7XG5cbiAgICAgIFRvIGdldCB0aGUgY2xhc3NuYW1lIHNlYXJjaCBmb3IgJ3hTaXRlSWQnIGluIHRoZSBwYWdlIHNvdXJjZVxuICAgICAgY2xhc3MgVXQge1xuICAgICAgICBjb25zdHJ1Y3RvcihfZSwgb24sIHluKSB7XG4gICAgICAgICAgICB0aGlzLnN0b3JlID0gX2UsXG4gICAgICAgICAgICB0aGlzLmNvbmZpZyA9IG9uLFxuICAgICAgICAgICAgdGhpcy5ldmVudEJ1c1NlcnZpY2UgPSB5bixcbiAgICAgICAgICAgIHRoaXMueFNpdGVJZCA9IFwiMDkwMzE5ODctMjczRS0yMzExLTkwNkMtOEFGODVCMTdDOEQ5XCIsXG4gICAgKi9cbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCcwOTAzMTk4Ny0yNzNFLTIzMTEtOTA2Qy04QUY4NUIxN0M4RDknKTtcbiAgfVxuXG4gIGdldExvZ2luT3B0aW9ucyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpOiBMb2dpbk9wdGlvbnMge1xuICAgIHRoaXMuYXV0aFJlcXVlc3RQcm9taXNlID0gdGhpcy5wYWdlXG4gICAgICAud2FpdEZvclJlcXVlc3QoU1NPX0FVVEhPUklaQVRJT05fUkVRVUVTVF9FTkRQT0lOVCwgeyB0aW1lb3V0OiAxMF8wMDAgfSlcbiAgICAgIC5jYXRjaChlID0+IHtcbiAgICAgICAgZGVidWcoJ2Vycm9yIHdoaWxlIHdhaXRpbmcgZm9yIHRoZSB0b2tlbiByZXF1ZXN0JywgZSk7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgbG9naW5Vcmw6IGAke0xPR0lOX1VSTH1gLFxuICAgICAgZmllbGRzOiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFscyksXG4gICAgICBzdWJtaXRCdXR0b25TZWxlY3RvcjogJ2J1dHRvblt0eXBlPVwic3VibWl0XCJdJyxcbiAgICAgIHBvc3NpYmxlUmVzdWx0czogZ2V0UG9zc2libGVMb2dpblJlc3VsdHMoKSxcbiAgICAgIGNoZWNrUmVhZGluZXNzOiBhc3luYyAoKSA9PiB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCAnI2NjTG9naW5EZXNrdG9wQnRuJyksXG4gICAgICBwcmVBY3Rpb246IHRoaXMub3BlbkxvZ2luUG9wdXAsXG4gICAgICBwb3N0QWN0aW9uOiBhc3luYyAoKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgd2FpdEZvck5hdmlnYXRpb24odGhpcy5wYWdlKTtcbiAgICAgICAgICBjb25zdCBjdXJyZW50VXJsID0gYXdhaXQgZ2V0Q3VycmVudFVybCh0aGlzLnBhZ2UpO1xuICAgICAgICAgIGlmIChjdXJyZW50VXJsLmVuZHNXaXRoKCdzaXRlLXR1dG9yaWFsJykpIHtcbiAgICAgICAgICAgIGF3YWl0IGNsaWNrQnV0dG9uKHRoaXMucGFnZSwgJ2J1dHRvbi5idG4tY2xvc2UnKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgcmVxdWVzdCA9IGF3YWl0IHRoaXMuYXV0aFJlcXVlc3RQcm9taXNlO1xuICAgICAgICAgIHRoaXMuYXV0aG9yaXphdGlvbiA9IFN0cmluZyhyZXF1ZXN0Py5oZWFkZXJzKCkuYXV0aG9yaXphdGlvbiB8fCAnJykudHJpbSgpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgY29uc3QgY3VycmVudFVybCA9IGF3YWl0IGdldEN1cnJlbnRVcmwodGhpcy5wYWdlKTtcbiAgICAgICAgICBpZiAoY3VycmVudFVybC5lbmRzV2l0aCgnZGFzaGJvYXJkJykpIHJldHVybjtcbiAgICAgICAgICBjb25zdCByZXF1aXJlc0NoYW5nZVBhc3N3b3JkID0gYXdhaXQgaGFzQ2hhbmdlUGFzc3dvcmRGb3JtKHRoaXMucGFnZSk7XG4gICAgICAgICAgaWYgKHJlcXVpcmVzQ2hhbmdlUGFzc3dvcmQpIHJldHVybjtcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgdXNlckFnZW50OiBhcGlIZWFkZXJzWydVc2VyLUFnZW50J10sXG4gICAgfTtcbiAgfVxuXG4gIGFzeW5jIGZldGNoRGF0YSgpOiBQcm9taXNlPFNjcmFwZXJTY3JhcGluZ1Jlc3VsdD4ge1xuICAgIGNvbnN0IGRlZmF1bHRTdGFydE1vbWVudCA9IG1vbWVudCgpLnN1YnRyYWN0KDEsICd5ZWFycycpLnN1YnRyYWN0KDYsICdtb250aHMnKS5hZGQoMSwgJ2RheScpO1xuICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHRoaXMub3B0aW9ucy5zdGFydERhdGUgfHwgZGVmYXVsdFN0YXJ0TW9tZW50LnRvRGF0ZSgpO1xuICAgIGNvbnN0IHN0YXJ0TW9tZW50ID0gbW9tZW50Lm1heChkZWZhdWx0U3RhcnRNb21lbnQsIG1vbWVudChzdGFydERhdGUpKTtcbiAgICBkZWJ1ZyhgZmV0Y2ggdHJhbnNhY3Rpb25zIHN0YXJ0aW5nICR7c3RhcnRNb21lbnQuZm9ybWF0KCl9YCk7XG5cbiAgICBjb25zdCBbY2FyZHMsIHhTaXRlSWQsIEF1dGhvcml6YXRpb25dID0gYXdhaXQgUHJvbWlzZS5hbGwoW1xuICAgICAgdGhpcy5nZXRDYXJkcygpLFxuICAgICAgdGhpcy5nZXRYU2l0ZUlkKCksXG4gICAgICB0aGlzLmdldEF1dGhvcml6YXRpb25IZWFkZXIoKSxcbiAgICBdKTtcblxuICAgIGNvbnN0IGZ1dHVyZU1vbnRoc1RvU2NyYXBlID0gdGhpcy5vcHRpb25zLmZ1dHVyZU1vbnRoc1RvU2NyYXBlID8/IDE7XG5cbiAgICBkZWJ1ZygnZmV0Y2ggZnJhbWVzIChtaXNnYXJvdCkgb2YgY2FyZHMnKTtcbiAgICBjb25zdCBmcmFtZXMgPSBhd2FpdCBmZXRjaFBvc3Q8RnJhbWVzUmVzcG9uc2U+KFxuICAgICAgRlJBTUVTX1JFUVVFU1RfRU5EUE9JTlQsXG4gICAgICB7IGNhcmRzRm9yRnJhbWVEYXRhOiBjYXJkcy5tYXAoKHsgY2FyZFVuaXF1ZUlkIH0pID0+ICh7IGNhcmRVbmlxdWVJZCB9KSkgfSxcbiAgICAgIHtcbiAgICAgICAgQXV0aG9yaXphdGlvbixcbiAgICAgICAgJ1gtU2l0ZS1JZCc6IHhTaXRlSWQsXG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIC4uLmFwaUhlYWRlcnMsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICBjb25zdCBhY2NvdW50cyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgY2FyZHMubWFwKGFzeW5jIGNhcmQgPT4ge1xuICAgICAgICBjb25zdCBmaW5hbE1vbnRoVG9GZXRjaE1vbWVudCA9IG1vbWVudCgpLmFkZChmdXR1cmVNb250aHNUb1NjcmFwZSwgJ21vbnRoJyk7XG4gICAgICAgIGNvbnN0IG1vbnRocyA9IGZpbmFsTW9udGhUb0ZldGNoTW9tZW50LmRpZmYoc3RhcnRNb21lbnQsICdtb250aHMnKTtcbiAgICAgICAgY29uc3QgYWxsTW9udGhzRGF0YTogQ2FyZFRyYW5zYWN0aW9uRGV0YWlsc1tdID0gW107XG4gICAgICAgIGNvbnN0IGZyYW1lID0gXy5maW5kKGZyYW1lcy5yZXN1bHQ/LmJhbmtJc3N1ZWRDYXJkcz8uY2FyZExldmVsRnJhbWVzLCB7IGNhcmRVbmlxdWVJZDogY2FyZC5jYXJkVW5pcXVlSWQgfSk7XG5cbiAgICAgICAgZGVidWcoYGZldGNoIHBlbmRpbmcgdHJhbnNhY3Rpb25zIGZvciBjYXJkICR7Y2FyZC5jYXJkVW5pcXVlSWR9YCk7XG4gICAgICAgIGxldCBwZW5kaW5nRGF0YSA9IGF3YWl0IGZldGNoUG9zdChcbiAgICAgICAgICBQRU5ESU5HX1RSQU5TQUNUSU9OU19SRVFVRVNUX0VORFBPSU5ULFxuICAgICAgICAgIHsgY2FyZFVuaXF1ZUlEQXJyYXk6IFtjYXJkLmNhcmRVbmlxdWVJZF0gfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBBdXRob3JpemF0aW9uLFxuICAgICAgICAgICAgJ1gtU2l0ZS1JZCc6IHhTaXRlSWQsXG4gICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICAgICAgLi4uYXBpSGVhZGVycyxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuXG4gICAgICAgIGRlYnVnKGBmZXRjaCBjb21wbGV0ZWQgdHJhbnNhY3Rpb25zIGZvciBjYXJkICR7Y2FyZC5jYXJkVW5pcXVlSWR9YCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IG1vbnRoczsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgbW9udGggPSBmaW5hbE1vbnRoVG9GZXRjaE1vbWVudC5jbG9uZSgpLnN1YnRyYWN0KGksICdtb250aHMnKTtcbiAgICAgICAgICBjb25zdCBtb250aERhdGEgPSBhd2FpdCBmZXRjaFBvc3QoXG4gICAgICAgICAgICBUUkFOU0FDVElPTlNfUkVRVUVTVF9FTkRQT0lOVCxcbiAgICAgICAgICAgIHsgY2FyZFVuaXF1ZUlkOiBjYXJkLmNhcmRVbmlxdWVJZCwgbW9udGg6IG1vbnRoLmZvcm1hdCgnTScpLCB5ZWFyOiBtb250aC5mb3JtYXQoJ1lZWVknKSB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBBdXRob3JpemF0aW9uLFxuICAgICAgICAgICAgICAnWC1TaXRlLUlkJzogeFNpdGVJZCxcbiAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgICAgICAgICAgLi4uYXBpSGVhZGVycyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGlmIChtb250aERhdGE/LnN0YXR1c0NvZGUgIT09IDEpXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgIGBmYWlsZWQgdG8gZmV0Y2ggdHJhbnNhY3Rpb25zIGZvciBjYXJkICR7Y2FyZC5sYXN0NERpZ2l0c30uIE1lc3NhZ2U6ICR7bW9udGhEYXRhPy50aXRsZSB8fCAnJ31gLFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgIGlmICghaXNDYXJkVHJhbnNhY3Rpb25EZXRhaWxzKG1vbnRoRGF0YSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignbW9udGhEYXRhIGlzIG5vdCBvZiB0eXBlIENhcmRUcmFuc2FjdGlvbkRldGFpbHMnKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBhbGxNb250aHNEYXRhLnB1c2gobW9udGhEYXRhKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwZW5kaW5nRGF0YT8uc3RhdHVzQ29kZSAhPT0gMSAmJiBwZW5kaW5nRGF0YT8uc3RhdHVzQ29kZSAhPT0gOTYpIHtcbiAgICAgICAgICBkZWJ1ZyhcbiAgICAgICAgICAgIGBmYWlsZWQgdG8gZmV0Y2ggcGVuZGluZyB0cmFuc2FjdGlvbnMgZm9yIGNhcmQgJHtjYXJkLmxhc3Q0RGlnaXRzfS4gTWVzc2FnZTogJHtwZW5kaW5nRGF0YT8udGl0bGUgfHwgJyd9YCxcbiAgICAgICAgICApO1xuICAgICAgICAgIHBlbmRpbmdEYXRhID0gbnVsbDtcbiAgICAgICAgfSBlbHNlIGlmICghaXNDYXJkUGVuZGluZ1RyYW5zYWN0aW9uRGV0YWlscyhwZW5kaW5nRGF0YSkpIHtcbiAgICAgICAgICBkZWJ1ZygncGVuZGluZ0RhdGEgaXMgbm90IG9mIHR5cGUgQ2FyZFRyYW5zYWN0aW9uRGV0YWlscycpO1xuICAgICAgICAgIHBlbmRpbmdEYXRhID0gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRyYW5zYWN0aW9ucyA9IGNvbnZlcnRQYXJzZWREYXRhVG9UcmFuc2FjdGlvbnMoYWxsTW9udGhzRGF0YSwgcGVuZGluZ0RhdGEsIHRoaXMub3B0aW9ucyk7XG5cbiAgICAgICAgZGVidWcoJ2ZpbHRlciBvdXQgb2xkIHRyYW5zYWN0aW9ucycpO1xuICAgICAgICBjb25zdCB0eG5zID1cbiAgICAgICAgICAodGhpcy5vcHRpb25zLm91dHB1dERhdGE/LmVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZSA/PyB0cnVlKVxuICAgICAgICAgICAgPyBmaWx0ZXJPbGRUcmFuc2FjdGlvbnModHJhbnNhY3Rpb25zLCBtb21lbnQoc3RhcnREYXRlKSwgdGhpcy5vcHRpb25zLmNvbWJpbmVJbnN0YWxsbWVudHMgfHwgZmFsc2UpXG4gICAgICAgICAgICA6IHRyYW5zYWN0aW9ucztcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHR4bnMsXG4gICAgICAgICAgYmFsYW5jZTogZnJhbWU/Lm5leHRUb3RhbERlYml0ICE9IG51bGwgPyAtZnJhbWUubmV4dFRvdGFsRGViaXQgOiB1bmRlZmluZWQsXG4gICAgICAgICAgYWNjb3VudE51bWJlcjogY2FyZC5sYXN0NERpZ2l0cyxcbiAgICAgICAgfSBhcyBUcmFuc2FjdGlvbnNBY2NvdW50O1xuICAgICAgfSksXG4gICAgKTtcblxuICAgIGRlYnVnKCdyZXR1cm4gdGhlIHNjcmFwZWQgYWNjb3VudHMnKTtcblxuICAgIGRlYnVnKEpTT04uc3RyaW5naWZ5KGFjY291bnRzLCBudWxsLCAyKSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IHRydWUsXG4gICAgICBhY2NvdW50cyxcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFZpc2FDYWxTY3JhcGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxJQUFBQSxPQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxxQkFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsTUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksV0FBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssUUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sYUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sUUFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsY0FBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsdUJBQUEsR0FBQVQsT0FBQTtBQUVBLElBQUFVLE9BQUEsR0FBQVgsc0JBQUEsQ0FBQUMsT0FBQTtBQUF1QixTQUFBRCx1QkFBQVksQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUV2QixNQUFNRyxVQUFVLEdBQUc7RUFDakIsWUFBWSxFQUNWLHVIQUF1SDtFQUN6SEMsTUFBTSxFQUFFLHNDQUFzQztFQUM5Q0MsT0FBTyxFQUFFLHNDQUFzQztFQUMvQyxpQkFBaUIsRUFBRSxxQ0FBcUM7RUFDeEQsZ0JBQWdCLEVBQUUsV0FBVztFQUM3QixnQkFBZ0IsRUFBRSxNQUFNO0VBQ3hCLGdCQUFnQixFQUFFO0FBQ3BCLENBQUM7QUFDRCxNQUFNQyxTQUFT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
|