israeli-bank-scrapers-core 6.3.0 → 6.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -178,6 +178,13 @@ const scrapeResult = await scraper.scrape({ username: 'vr29485', password: 'some
178
178
  await browser.close();
179
179
  ```
180
180
 
181
+ ### OptIn Features
182
+
183
+ Some scrapers support opt-in features that can be enabled by passing the `optInFeatures` option when creating the scraper.
184
+ Opt in features are usually used for breaking changes that are not enabled by default to avoid breaking existing users.
185
+
186
+ See the [OptInFeatures](https://github.com/eshaham/israeli-bank-scrapers/blob/master/src/scrapers/interface.ts#:~:text=export-,type%20OptInFeatures) interface for available features.
187
+
181
188
  ## Two-Factor Authentication Scrapers
182
189
 
183
190
  Some companies require two-factor authentication, and as such the scraper cannot be fully automated. When using the relevant scrapers, you have two options:
@@ -2,5 +2,5 @@ import { type Page } from 'puppeteer-core';
2
2
  export declare function fetchGet<TResult>(url: string, extraHeaders: Record<string, any>): Promise<TResult>;
3
3
  export declare function fetchPost(url: string, data: Record<string, any>, extraHeaders?: Record<string, any>): Promise<any>;
4
4
  export declare function fetchGraphql<TResult>(url: string, query: string, variables?: Record<string, unknown>, extraHeaders?: Record<string, any>): Promise<TResult>;
5
- export declare function fetchGetWithinPage<TResult>(page: Page, url: string): Promise<TResult | null>;
6
- export declare function fetchPostWithinPage<TResult>(page: Page, url: string, data: Record<string, any>, extraHeaders?: Record<string, any>): Promise<TResult | null>;
5
+ export declare function fetchGetWithinPage<TResult>(page: Page, url: string, ignoreErrors?: boolean): Promise<TResult | null>;
6
+ export declare function fetchPostWithinPage<TResult>(page: Page, url: string, data: Record<string, any>, extraHeaders?: Record<string, any>, ignoreErrors?: boolean): Promise<TResult | null>;
@@ -55,45 +55,57 @@ async function fetchGraphql(url, query, variables = {}, extraHeaders = {}) {
55
55
  }
56
56
  return result.data;
57
57
  }
58
- function fetchGetWithinPage(page, url) {
59
- return page.evaluate(innerUrl => {
60
- return new Promise((resolve, reject) => {
61
- fetch(innerUrl, {
58
+ async function fetchGetWithinPage(page, url, ignoreErrors = false) {
59
+ const [result, status] = await page.evaluate(async innerUrl => {
60
+ let response;
61
+ try {
62
+ response = await fetch(innerUrl, {
62
63
  credentials: 'include'
63
- }).then(result => {
64
- if (result.status === 204) {
65
- resolve(null);
66
- } else {
67
- resolve(result.json());
68
- }
69
- }).catch(e => {
70
- reject(e);
71
64
  });
72
- });
65
+ if (response.status === 204) {
66
+ return [null, response.status];
67
+ }
68
+ return [await response.text(), response.status];
69
+ } catch (e) {
70
+ throw new Error(`fetchGetWithinPage error: ${e instanceof Error ? `${e.message}\n${e.stack}` : String(e)}, url: ${innerUrl}, status: ${response?.status}`);
71
+ }
73
72
  }, url);
73
+ if (result !== null) {
74
+ try {
75
+ return JSON.parse(result);
76
+ } catch (e) {
77
+ if (!ignoreErrors) {
78
+ throw new Error(`fetchGetWithinPage parse error: ${e instanceof Error ? `${e.message}\n${e.stack}` : String(e)}, url: ${url}, result: ${result}, status: ${status}`);
79
+ }
80
+ }
81
+ }
82
+ return null;
74
83
  }
75
- function fetchPostWithinPage(page, url, data, extraHeaders = {}) {
76
- return page.evaluate((innerUrl, innerData, innerExtraHeaders) => {
77
- return new Promise((resolve, reject) => {
78
- fetch(innerUrl, {
79
- method: 'POST',
80
- body: JSON.stringify(innerData),
81
- credentials: 'include',
82
- // eslint-disable-next-line prefer-object-spread
83
- headers: Object.assign({
84
- 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
85
- }, innerExtraHeaders)
86
- }).then(result => {
87
- if (result.status === 204) {
88
- // No content response
89
- resolve(null);
90
- } else {
91
- resolve(result.json());
92
- }
93
- }).catch(e => {
94
- reject(e);
95
- });
84
+ async function fetchPostWithinPage(page, url, data, extraHeaders = {}, ignoreErrors = false) {
85
+ const result = await page.evaluate(async (innerUrl, innerData, innerExtraHeaders) => {
86
+ const response = await fetch(innerUrl, {
87
+ method: 'POST',
88
+ body: JSON.stringify(innerData),
89
+ credentials: 'include',
90
+ // eslint-disable-next-line prefer-object-spread
91
+ headers: Object.assign({
92
+ 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
93
+ }, innerExtraHeaders)
96
94
  });
95
+ if (response.status === 204) {
96
+ return null;
97
+ }
98
+ return response.text();
97
99
  }, url, data, extraHeaders);
100
+ try {
101
+ if (result !== null) {
102
+ return JSON.parse(result);
103
+ }
104
+ } catch (e) {
105
+ if (!ignoreErrors) {
106
+ throw new Error(`fetchPostWithinPage parse error: ${e instanceof Error ? `${e.message}\n${e.stack}` : String(e)}, url: ${url}, data: ${JSON.stringify(data)}, extraHeaders: ${JSON.stringify(extraHeaders)}, result: ${result}`);
107
+ }
108
+ }
109
+ return null;
98
110
  }
99
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZUZldGNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJKU09OX0NPTlRFTlRfVFlQRSIsImdldEpzb25IZWFkZXJzIiwiQWNjZXB0IiwiZmV0Y2hHZXQiLCJ1cmwiLCJleHRyYUhlYWRlcnMiLCJoZWFkZXJzIiwiT2JqZWN0IiwiYXNzaWduIiwicmVxdWVzdCIsIm1ldGhvZCIsImZldGNoUmVzdWx0Iiwibm9kZUZldGNoIiwic3RhdHVzIiwiRXJyb3IiLCJqc29uIiwiZmV0Y2hQb3N0IiwiZGF0YSIsImJvZHkiLCJKU09OIiwic3RyaW5naWZ5IiwicmVzdWx0IiwiZmV0Y2hHcmFwaHFsIiwicXVlcnkiLCJ2YXJpYWJsZXMiLCJvcGVyYXRpb25OYW1lIiwiZXJyb3JzIiwibGVuZ3RoIiwibWVzc2FnZSIsImZldGNoR2V0V2l0aGluUGFnZSIsInBhZ2UiLCJldmFsdWF0ZSIsImlubmVyVXJsIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJmZXRjaCIsImNyZWRlbnRpYWxzIiwidGhlbiIsImNhdGNoIiwiZmV0Y2hQb3N0V2l0aGluUGFnZSIsImlubmVyRGF0YSIsImlubmVyRXh0cmFIZWFkZXJzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hlbHBlcnMvZmV0Y2gudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG5vZGVGZXRjaCBmcm9tICdub2RlLWZldGNoJztcbmltcG9ydCB7IHR5cGUgUGFnZSB9IGZyb20gJ3B1cHBldGVlci1jb3JlJztcblxuY29uc3QgSlNPTl9DT05URU5UX1RZUEUgPSAnYXBwbGljYXRpb24vanNvbic7XG5cbmZ1bmN0aW9uIGdldEpzb25IZWFkZXJzKCkge1xuICByZXR1cm4ge1xuICAgIEFjY2VwdDogSlNPTl9DT05URU5UX1RZUEUsXG4gICAgJ0NvbnRlbnQtVHlwZSc6IEpTT05fQ09OVEVOVF9UWVBFLFxuICB9O1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hHZXQ8VFJlc3VsdD4odXJsOiBzdHJpbmcsIGV4dHJhSGVhZGVyczogUmVjb3JkPHN0cmluZywgYW55Pik6IFByb21pc2U8VFJlc3VsdD4ge1xuICBsZXQgaGVhZGVycyA9IGdldEpzb25IZWFkZXJzKCk7XG4gIGlmIChleHRyYUhlYWRlcnMpIHtcbiAgICBoZWFkZXJzID0gT2JqZWN0LmFzc2lnbihoZWFkZXJzLCBleHRyYUhlYWRlcnMpO1xuICB9XG4gIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgbWV0aG9kOiAnR0VUJyxcbiAgICBoZWFkZXJzLFxuICB9O1xuICBjb25zdCBmZXRjaFJlc3VsdCA9IGF3YWl0IG5vZGVGZXRjaCh1cmwsIHJlcXVlc3QpO1xuXG4gIGlmIChmZXRjaFJlc3VsdC5zdGF0dXMgIT09IDIwMCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgc2VuZGluZyBhIHJlcXVlc3QgdG8gdGhlIGluc3RpdHV0ZSBzZXJ2ZXIgcmV0dXJuZWQgd2l0aCBzdGF0dXMgY29kZSAke2ZldGNoUmVzdWx0LnN0YXR1c31gKTtcbiAgfVxuXG4gIHJldHVybiBmZXRjaFJlc3VsdC5qc29uKCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaFBvc3QodXJsOiBzdHJpbmcsIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sIGV4dHJhSGVhZGVyczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9KSB7XG4gIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgaGVhZGVyczogeyAuLi5nZXRKc29uSGVhZGVycygpLCAuLi5leHRyYUhlYWRlcnMgfSxcbiAgICBib2R5OiBKU09OLnN0cmluZ2lmeShkYXRhKSxcbiAgfTtcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbm9kZUZldGNoKHVybCwgcmVxdWVzdCk7XG4gIHJldHVybiByZXN1bHQuanNvbigpO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hHcmFwaHFsPFRSZXN1bHQ+KFxuICB1cmw6IHN0cmluZyxcbiAgcXVlcnk6IHN0cmluZyxcbiAgdmFyaWFibGVzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9LFxuICBleHRyYUhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fSxcbik6IFByb21pc2U8VFJlc3VsdD4ge1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCBmZXRjaFBvc3QodXJsLCB7IG9wZXJhdGlvbk5hbWU6IG51bGwsIHF1ZXJ5LCB2YXJpYWJsZXMgfSwgZXh0cmFIZWFkZXJzKTtcbiAgaWYgKHJlc3VsdC5lcnJvcnM/Lmxlbmd0aCkge1xuICAgIHRocm93IG5ldyBFcnJvcihyZXN1bHQuZXJyb3JzWzBdLm1lc3NhZ2UpO1xuICB9XG4gIHJldHVybiByZXN1bHQuZGF0YSBhcyBQcm9taXNlPFRSZXN1bHQ+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmV0Y2hHZXRXaXRoaW5QYWdlPFRSZXN1bHQ+KHBhZ2U6IFBhZ2UsIHVybDogc3RyaW5nKTogUHJvbWlzZTxUUmVzdWx0IHwgbnVsbD4ge1xuICByZXR1cm4gcGFnZS5ldmFsdWF0ZShpbm5lclVybCA9PiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlPFRSZXN1bHQgfCBudWxsPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICBmZXRjaChpbm5lclVybCwge1xuICAgICAgICBjcmVkZW50aWFsczogJ2luY2x1ZGUnLFxuICAgICAgfSlcbiAgICAgICAgLnRoZW4ocmVzdWx0ID0+IHtcbiAgICAgICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gMjA0KSB7XG4gICAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXNvbHZlKHJlc3VsdC5qc29uKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGUgPT4ge1xuICAgICAgICAgIHJlamVjdChlKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG4gIH0sIHVybCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmZXRjaFBvc3RXaXRoaW5QYWdlPFRSZXN1bHQ+KFxuICBwYWdlOiBQYWdlLFxuICB1cmw6IHN0cmluZyxcbiAgZGF0YTogUmVjb3JkPHN0cmluZywgYW55PixcbiAgZXh0cmFIZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30sXG4pOiBQcm9taXNlPFRSZXN1bHQgfCBudWxsPiB7XG4gIHJldHVybiBwYWdlLmV2YWx1YXRlKFxuICAgIChpbm5lclVybDogc3RyaW5nLCBpbm5lckRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sIGlubmVyRXh0cmFIZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSA9PiB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2U8VFJlc3VsdCB8IG51bGw+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgZmV0Y2goaW5uZXJVcmwsIHtcbiAgICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeShpbm5lckRhdGEpLFxuICAgICAgICAgIGNyZWRlbnRpYWxzOiAnaW5jbHVkZScsXG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1vYmplY3Qtc3ByZWFkXG4gICAgICAgICAgaGVhZGVyczogT2JqZWN0LmFzc2lnbihcbiAgICAgICAgICAgIHsgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9VVRGLTgnIH0sXG4gICAgICAgICAgICBpbm5lckV4dHJhSGVhZGVycyxcbiAgICAgICAgICApLFxuICAgICAgICB9KVxuICAgICAgICAgIC50aGVuKHJlc3VsdCA9PiB7XG4gICAgICAgICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gMjA0KSB7XG4gICAgICAgICAgICAgIC8vIE5vIGNvbnRlbnQgcmVzcG9uc2VcbiAgICAgICAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlc29sdmUocmVzdWx0Lmpzb24oKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgICAuY2F0Y2goZSA9PiB7XG4gICAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9LFxuICAgIHVybCxcbiAgICBkYXRhLFxuICAgIGV4dHJhSGVhZGVycyxcbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBLElBQUFBLFVBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUFtQyxTQUFBRCx1QkFBQUUsQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUduQyxNQUFNRyxpQkFBaUIsR0FBRyxrQkFBa0I7QUFFNUMsU0FBU0MsY0FBY0EsQ0FBQSxFQUFHO0VBQ3hCLE9BQU87SUFDTEMsTUFBTSxFQUFFRixpQkFBaUI7SUFDekIsY0FBYyxFQUFFQTtFQUNsQixDQUFDO0FBQ0g7QUFFTyxlQUFlRyxRQUFRQSxDQUFVQyxHQUFXLEVBQUVDLFlBQWlDLEVBQW9CO0VBQ3hHLElBQUlDLE9BQU8sR0FBR0wsY0FBYyxDQUFDLENBQUM7RUFDOUIsSUFBSUksWUFBWSxFQUFFO0lBQ2hCQyxPQUFPLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDRixPQUFPLEVBQUVELFlBQVksQ0FBQztFQUNoRDtFQUNBLE1BQU1JLE9BQU8sR0FBRztJQUNkQyxNQUFNLEVBQUUsS0FBSztJQUNiSjtFQUNGLENBQUM7RUFDRCxNQUFNSyxXQUFXLEdBQUcsTUFBTSxJQUFBQyxrQkFBUyxFQUFDUixHQUFHLEVBQUVLLE9BQU8sQ0FBQztFQUVqRCxJQUFJRSxXQUFXLENBQUNFLE1BQU0sS0FBSyxHQUFHLEVBQUU7SUFDOUIsTUFBTSxJQUFJQyxLQUFLLENBQUMsdUVBQXVFSCxXQUFXLENBQUNFLE1BQU0sRUFBRSxDQUFDO0VBQzlHO0VB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
111
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbm9kZUZldGNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJKU09OX0NPTlRFTlRfVFlQRSIsImdldEpzb25IZWFkZXJzIiwiQWNjZXB0IiwiZmV0Y2hHZXQiLCJ1cmwiLCJleHRyYUhlYWRlcnMiLCJoZWFkZXJzIiwiT2JqZWN0IiwiYXNzaWduIiwicmVxdWVzdCIsIm1ldGhvZCIsImZldGNoUmVzdWx0Iiwibm9kZUZldGNoIiwic3RhdHVzIiwiRXJyb3IiLCJqc29uIiwiZmV0Y2hQb3N0IiwiZGF0YSIsImJvZHkiLCJKU09OIiwic3RyaW5naWZ5IiwicmVzdWx0IiwiZmV0Y2hHcmFwaHFsIiwicXVlcnkiLCJ2YXJpYWJsZXMiLCJvcGVyYXRpb25OYW1lIiwiZXJyb3JzIiwibGVuZ3RoIiwibWVzc2FnZSIsImZldGNoR2V0V2l0aGluUGFnZSIsInBhZ2UiLCJpZ25vcmVFcnJvcnMiLCJldmFsdWF0ZSIsImlubmVyVXJsIiwicmVzcG9uc2UiLCJmZXRjaCIsImNyZWRlbnRpYWxzIiwidGV4dCIsInN0YWNrIiwiU3RyaW5nIiwicGFyc2UiLCJmZXRjaFBvc3RXaXRoaW5QYWdlIiwiaW5uZXJEYXRhIiwiaW5uZXJFeHRyYUhlYWRlcnMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaGVscGVycy9mZXRjaC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbm9kZUZldGNoIGZyb20gJ25vZGUtZmV0Y2gnO1xuaW1wb3J0IHsgdHlwZSBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyLWNvcmUnO1xuXG5jb25zdCBKU09OX0NPTlRFTlRfVFlQRSA9ICdhcHBsaWNhdGlvbi9qc29uJztcblxuZnVuY3Rpb24gZ2V0SnNvbkhlYWRlcnMoKSB7XG4gIHJldHVybiB7XG4gICAgQWNjZXB0OiBKU09OX0NPTlRFTlRfVFlQRSxcbiAgICAnQ29udGVudC1UeXBlJzogSlNPTl9DT05URU5UX1RZUEUsXG4gIH07XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaEdldDxUUmVzdWx0Pih1cmw6IHN0cmluZywgZXh0cmFIZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogUHJvbWlzZTxUUmVzdWx0PiB7XG4gIGxldCBoZWFkZXJzID0gZ2V0SnNvbkhlYWRlcnMoKTtcbiAgaWYgKGV4dHJhSGVhZGVycykge1xuICAgIGhlYWRlcnMgPSBPYmplY3QuYXNzaWduKGhlYWRlcnMsIGV4dHJhSGVhZGVycyk7XG4gIH1cbiAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICBtZXRob2Q6ICdHRVQnLFxuICAgIGhlYWRlcnMsXG4gIH07XG4gIGNvbnN0IGZldGNoUmVzdWx0ID0gYXdhaXQgbm9kZUZldGNoKHVybCwgcmVxdWVzdCk7XG5cbiAgaWYgKGZldGNoUmVzdWx0LnN0YXR1cyAhPT0gMjAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBzZW5kaW5nIGEgcmVxdWVzdCB0byB0aGUgaW5zdGl0dXRlIHNlcnZlciByZXR1cm5lZCB3aXRoIHN0YXR1cyBjb2RlICR7ZmV0Y2hSZXN1bHQuc3RhdHVzfWApO1xuICB9XG5cbiAgcmV0dXJuIGZldGNoUmVzdWx0Lmpzb24oKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGZldGNoUG9zdCh1cmw6IHN0cmluZywgZGF0YTogUmVjb3JkPHN0cmluZywgYW55PiwgZXh0cmFIZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge30pIHtcbiAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBoZWFkZXJzOiB7IC4uLmdldEpzb25IZWFkZXJzKCksIC4uLmV4dHJhSGVhZGVycyB9LFxuICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KGRhdGEpLFxuICB9O1xuICBjb25zdCByZXN1bHQgPSBhd2FpdCBub2RlRmV0Y2godXJsLCByZXF1ZXN0KTtcbiAgcmV0dXJuIHJlc3VsdC5qc29uKCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaEdyYXBocWw8VFJlc3VsdD4oXG4gIHVybDogc3RyaW5nLFxuICBxdWVyeTogc3RyaW5nLFxuICB2YXJpYWJsZXM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge30sXG4gIGV4dHJhSGVhZGVyczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9LFxuKTogUHJvbWlzZTxUUmVzdWx0PiB7XG4gIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZldGNoUG9zdCh1cmwsIHsgb3BlcmF0aW9uTmFtZTogbnVsbCwgcXVlcnksIHZhcmlhYmxlcyB9LCBleHRyYUhlYWRlcnMpO1xuICBpZiAocmVzdWx0LmVycm9ycz8ubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKHJlc3VsdC5lcnJvcnNbMF0ubWVzc2FnZSk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdC5kYXRhIGFzIFByb21pc2U8VFJlc3VsdD47XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaEdldFdpdGhpblBhZ2U8VFJlc3VsdD4oXG4gIHBhZ2U6IFBhZ2UsXG4gIHVybDogc3RyaW5nLFxuICBpZ25vcmVFcnJvcnMgPSBmYWxzZSxcbik6IFByb21pc2U8VFJlc3VsdCB8IG51bGw+IHtcbiAgY29uc3QgW3Jlc3VsdCwgc3RhdHVzXSA9IGF3YWl0IHBhZ2UuZXZhbHVhdGUoYXN5bmMgaW5uZXJVcmwgPT4ge1xuICAgIGxldCByZXNwb25zZTogUmVzcG9uc2UgfCB1bmRlZmluZWQ7XG4gICAgdHJ5IHtcbiAgICAgIHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goaW5uZXJVcmwsIHsgY3JlZGVudGlhbHM6ICdpbmNsdWRlJyB9KTtcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwNCkge1xuICAgICAgICByZXR1cm4gW251bGwsIHJlc3BvbnNlLnN0YXR1c10gYXMgY29uc3Q7XG4gICAgICB9XG4gICAgICByZXR1cm4gW2F3YWl0IHJlc3BvbnNlLnRleHQoKSwgcmVzcG9uc2Uuc3RhdHVzXSBhcyBjb25zdDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBmZXRjaEdldFdpdGhpblBhZ2UgZXJyb3I6ICR7ZSBpbnN0YW5jZW9mIEVycm9yID8gYCR7ZS5tZXNzYWdlfVxcbiR7ZS5zdGFja31gIDogU3RyaW5nKGUpfSwgdXJsOiAke2lubmVyVXJsfSwgc3RhdHVzOiAke3Jlc3BvbnNlPy5zdGF0dXN9YCxcbiAgICAgICk7XG4gICAgfVxuICB9LCB1cmwpO1xuICBpZiAocmVzdWx0ICE9PSBudWxsKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKHJlc3VsdCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKCFpZ25vcmVFcnJvcnMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBmZXRjaEdldFdpdGhpblBhZ2UgcGFyc2UgZXJyb3I6ICR7ZSBpbnN0YW5jZW9mIEVycm9yID8gYCR7ZS5tZXNzYWdlfVxcbiR7ZS5zdGFja31gIDogU3RyaW5nKGUpfSwgdXJsOiAke3VybH0sIHJlc3VsdDogJHtyZXN1bHR9LCBzdGF0dXM6ICR7c3RhdHVzfWAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZmV0Y2hQb3N0V2l0aGluUGFnZTxUUmVzdWx0PihcbiAgcGFnZTogUGFnZSxcbiAgdXJsOiBzdHJpbmcsXG4gIGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gIGV4dHJhSGVhZGVyczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9LFxuICBpZ25vcmVFcnJvcnMgPSBmYWxzZSxcbik6IFByb21pc2U8VFJlc3VsdCB8IG51bGw+IHtcbiAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcGFnZS5ldmFsdWF0ZShcbiAgICBhc3luYyAoaW5uZXJVcmw6IHN0cmluZywgaW5uZXJEYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBpbm5lckV4dHJhSGVhZGVyczogUmVjb3JkPHN0cmluZywgYW55PikgPT4ge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChpbm5lclVybCwge1xuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoaW5uZXJEYXRhKSxcbiAgICAgICAgY3JlZGVudGlhbHM6ICdpbmNsdWRlJyxcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1vYmplY3Qtc3ByZWFkXG4gICAgICAgIGhlYWRlcnM6IE9iamVjdC5hc3NpZ24oXG4gICAgICAgICAgeyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD1VVEYtOCcgfSxcbiAgICAgICAgICBpbm5lckV4dHJhSGVhZGVycyxcbiAgICAgICAgKSxcbiAgICAgIH0pO1xuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjA0KSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3BvbnNlLnRleHQoKTtcbiAgICB9LFxuICAgIHVybCxcbiAgICBkYXRhLFxuICAgIGV4dHJhSGVhZGVycyxcbiAgKTtcblxuICB0cnkge1xuICAgIGlmIChyZXN1bHQgIT09IG51bGwpIHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKHJlc3VsdCk7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKCFpZ25vcmVFcnJvcnMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYGZldGNoUG9zdFdpdGhpblBhZ2UgcGFyc2UgZXJyb3I6ICR7ZSBpbnN0YW5jZW9mIEVycm9yID8gYCR7ZS5tZXNzYWdlfVxcbiR7ZS5zdGFja31gIDogU3RyaW5nKGUpfSwgdXJsOiAke3VybH0sIGRhdGE6ICR7SlNPTi5zdHJpbmdpZnkoZGF0YSl9LCBleHRyYUhlYWRlcnM6ICR7SlNPTi5zdHJpbmdpZnkoZXh0cmFIZWFkZXJzKX0sIHJlc3Vs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
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
- var _buildUrl = _interopRequireDefault(require("build-url"));
8
7
  var _lodash = _interopRequireDefault(require("lodash"));
9
8
  var _moment = _interopRequireDefault(require("moment"));
10
9
  var _constants = require("../constants");
@@ -26,14 +25,12 @@ const DATE_FORMAT = 'DD/MM/YYYY';
26
25
  const debug = (0, _debug.getDebug)('base-isracard-amex');
27
26
  function getAccountsUrl(servicesUrl, monthMoment) {
28
27
  const billingDate = monthMoment.format('YYYY-MM-DD');
29
- return (0, _buildUrl.default)(servicesUrl, {
30
- queryParams: {
31
- reqName: 'DashboardMonth',
32
- actionCode: '0',
33
- billingDate,
34
- format: 'Json'
35
- }
36
- });
28
+ const url = new URL(servicesUrl);
29
+ url.searchParams.set('reqName', 'DashboardMonth');
30
+ url.searchParams.set('actionCode', '0');
31
+ url.searchParams.set('billingDate', billingDate);
32
+ url.searchParams.set('format', 'Json');
33
+ return url.toString();
37
34
  }
38
35
  async function fetchAccounts(page, servicesUrl, monthMoment) {
39
36
  const dataUrl = getAccountsUrl(servicesUrl, monthMoment);
@@ -58,14 +55,12 @@ function getTransactionsUrl(servicesUrl, monthMoment) {
58
55
  const month = monthMoment.month() + 1;
59
56
  const year = monthMoment.year();
60
57
  const monthStr = month < 10 ? `0${month}` : month.toString();
61
- return (0, _buildUrl.default)(servicesUrl, {
62
- queryParams: {
63
- reqName: 'CardsTransactionsList',
64
- month: monthStr,
65
- year: `${year}`,
66
- requiredDate: 'N'
67
- }
68
- });
58
+ const url = new URL(servicesUrl);
59
+ url.searchParams.set('reqName', 'CardsTransactionsList');
60
+ url.searchParams.set('month', monthStr);
61
+ url.searchParams.set('year', `${year}`);
62
+ url.searchParams.set('requiredDate', 'N');
63
+ return url.toString();
69
64
  }
70
65
  function convertCurrency(currencyStr) {
71
66
  if (currencyStr === _constants.SHEKEL_CURRENCY_KEYWORD || currencyStr === _constants.ALT_SHEKEL_CURRENCY) {
@@ -152,14 +147,12 @@ async function fetchTransactions(page, options, companyServiceOptions, startMome
152
147
  }
153
148
  function getTransactionExtraDetails(servicesUrl, month, accountIndex, transaction) {
154
149
  const moedChiuv = month.format('MMYYYY');
155
- return (0, _buildUrl.default)(servicesUrl, {
156
- queryParams: {
157
- reqName: 'PirteyIska_204',
158
- CardIndex: accountIndex.toString(),
159
- shovarRatz: transaction.identifier.toString(),
160
- moedChiuv
161
- }
162
- });
150
+ const url = new URL(servicesUrl);
151
+ url.searchParams.set('reqName', 'PirteyIska_204');
152
+ url.searchParams.set('CardIndex', accountIndex.toString());
153
+ url.searchParams.set('shovarRatz', transaction.identifier.toString());
154
+ url.searchParams.set('moedChiuv', moedChiuv);
155
+ return url.toString();
163
156
  }
164
157
  async function getExtraScrapTransaction(page, options, month, accountIndex, transaction) {
165
158
  const dataUrl = getTransactionExtraDetails(options.servicesUrl, month, accountIndex, transaction);
@@ -315,4 +308,4 @@ class IsracardAmexBaseScraper extends _baseScraperWithBrowser.BaseScraperWithBro
315
308
  }
316
309
  }
317
310
  var _default = exports.default = IsracardAmexBaseScraper;
318
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYnVpbGRVcmwiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9sb2Rhc2giLCJfbW9tZW50IiwiX2NvbnN0YW50cyIsIl9kZWZpbml0aW9ucyIsIl9kYXRlcyIsIl9kZWJ1ZyIsIl9mZXRjaCIsIl90cmFuc2FjdGlvbnMiLCJfd2FpdGluZyIsIl90cmFuc2FjdGlvbnMyIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJfZXJyb3JzIiwiX2Jyb3dzZXIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJDT1VOVFJZX0NPREUiLCJJRF9UWVBFIiwiSU5TVEFMTE1FTlRTX0tFWVdPUkQiLCJEQVRFX0ZPUk1BVCIsImRlYnVnIiwiZ2V0RGVidWciLCJnZXRBY2NvdW50c1VybCIsInNlcnZpY2VzVXJsIiwibW9udGhNb21lbnQiLCJiaWxsaW5nRGF0ZSIsImZvcm1hdCIsImJ1aWxkVXJsIiwicXVlcnlQYXJhbXMiLCJyZXFOYW1lIiwiYWN0aW9uQ29kZSIsImZldGNoQWNjb3VudHMiLCJwYWdlIiwiZGF0YVVybCIsImRhdGFSZXN1bHQiLCJmZXRjaEdldFdpdGhpblBhZ2UiLCJfIiwiZ2V0IiwiRGFzaGJvYXJkTW9udGhCZWFuIiwiY2FyZHNDaGFyZ2VzIiwibWFwIiwiY2FyZENoYXJnZSIsImluZGV4IiwicGFyc2VJbnQiLCJjYXJkSW5kZXgiLCJhY2NvdW50TnVtYmVyIiwiY2FyZE51bWJlciIsInByb2Nlc3NlZERhdGUiLCJtb21lbnQiLCJ0b0lTT1N0cmluZyIsImdldFRyYW5zYWN0aW9uc1VybCIsIm1vbnRoIiwieWVhciIsIm1vbnRoU3RyIiwidG9TdHJpbmciLCJyZXF1aXJlZERhdGUiLCJjb252ZXJ0Q3VycmVuY3kiLCJjdXJyZW5jeVN0ciIsIlNIRUtFTF9DVVJSRU5DWV9LRVlXT1JEIiwiQUxUX1NIRUtFTF9DVVJSRU5DWSIsIlNIRUtFTF9DVVJSRU5DWSIsImdldEluc3RhbGxtZW50c0luZm8iLCJ0eG4iLCJtb3JlSW5mbyIsImluY2x1ZGVzIiwidW5kZWZpbmVkIiwibWF0Y2hlcyIsIm1hdGNoIiwibGVuZ3RoIiwibnVtYmVyIiwidG90YWwiLCJnZXRUcmFuc2FjdGlvblR5cGUiLCJUcmFuc2FjdGlvblR5cGVzIiwiSW5zdGFsbG1lbnRzIiwiTm9ybWFsIiwiY29udmVydFRyYW5zYWN0aW9ucyIsInR4bnMiLCJmaWx0ZXJlZFR4bnMiLCJmaWx0ZXIiLCJkZWFsU3VtVHlwZSIsInZvdWNoZXJOdW1iZXJSYXR6Iiwidm91Y2hlck51bWJlclJhdHpPdXRib3VuZCIsImlzT3V0Ym91bmQiLCJkZWFsU3VtT3V0Ym91bmQiLCJ0eG5EYXRlU3RyIiwiZnVsbFB1cmNoYXNlRGF0ZU91dGJvdW5kIiwiZnVsbFB1cmNoYXNlRGF0ZSIsInR4bk1vbWVudCIsImN1cnJlbnRQcm9jZXNzZWREYXRlIiwiZnVsbFBheW1lbnREYXRlIiwicmVzdWx0IiwidHlwZSIsImlkZW50aWZpZXIiLCJkYXRlIiwib3JpZ2luYWxBbW91bnQiLCJkZWFsU3VtIiwib3JpZ2luYWxDdXJyZW5jeSIsImN1cnJlbnRQYXltZW50Q3VycmVuY3kiLCJjdXJyZW5jeUlkIiwiY2hhcmdlZEFtb3VudCIsInBheW1lbnRTdW1PdXRib3VuZCIsInBheW1lbnRTdW0iLCJjaGFyZ2VkQ3VycmVuY3kiLCJkZXNjcmlwdGlvbiIsImZ1bGxTdXBwbGllck5hbWVPdXRib3VuZCIsImZ1bGxTdXBwbGllck5hbWVIZWIiLCJtZW1vIiwiaW5zdGFsbG1lbnRzIiwic3RhdHVzIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIkNvbXBsZXRlZCIsImZldGNoVHJhbnNhY3Rpb25zIiwib3B0aW9ucyIsImNvbXBhbnlTZXJ2aWNlT3B0aW9ucyIsInN0YXJ0TW9tZW50IiwiYWNjb3VudHMiLCJDYXJkc1RyYW5zYWN0aW9uc0xpc3RCZWFuIiwiYWNjb3VudFR4bnMiLCJmb3JFYWNoIiwiYWNjb3VudCIsInR4bkdyb3VwcyIsImFsbFR4bnMiLCJ0eG5Hcm91cCIsInR4bklzcmFlbCIsInB1c2giLCJ0eG5BYnJvYWQiLCJjb21iaW5lSW5zdGFsbG1lbnRzIiwiZml4SW5zdGFsbG1lbnRzIiwib3V0cHV0RGF0YSIsImVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZSIsImZpbHRlck9sZFRyYW5zYWN0aW9ucyIsImdldFRyYW5zYWN0aW9uRXh0cmFEZXRhaWxzIiwiYWNjb3VudEluZGV4IiwidHJhbnNhY3Rpb24iLCJtb2VkQ2hpdXYiLCJDYXJkSW5kZXgiLCJzaG92YXJSYXR6IiwiZ2V0RXh0cmFTY3JhcFRyYW5zYWN0aW9uIiwiZGF0YSIsInJhd0NhdGVnb3J5IiwiY2F0ZWdvcnkiLCJ0cmltIiwiZ2V0RXh0cmFTY3JhcFRyYW5zYWN0aW9ucyIsImFjY291bnRXaXRoSW5kZXgiLCJwcm9taXNlcyIsInQiLCJQcm9taXNlIiwiYWxsIiwiZ2V0RXh0cmFTY3JhcEFjY291bnQiLCJhY2NvdW50TWFwIiwiT2JqZWN0Iiwia2V5cyIsImEiLCJyZWR1Y2UiLCJtIiwieCIsImdldEV4dHJhU2NyYXAiLCJhY2NvdW50c1dpdGhJbmRleCIsImFsbE1vbnRocyIsImFjdGlvbnMiLCJpIiwicnVuU2VyaWFsIiwiZmV0Y2hBbGxUcmFuc2FjdGlvbnMiLCJmdXR1cmVNb250aHNUb1NjcmFwZSIsImdldEFsbE1vbnRoTW9tZW50cyIsInJlc3VsdHMiLCJmaW5hbFJlc3VsdCIsImFkZGl0aW9uYWxUcmFuc2FjdGlvbkluZm9ybWF0aW9uIiwiY29tYmluZWRUeG5zIiwidHhuc0ZvckFjY291bnQiLCJ0b0JlQWRkZWRUeG5zIiwic3VjY2VzcyIsIklzcmFjYXJkQW1leEJhc2VTY3JhcGVyIiwiQmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImNvbnN0cnVjdG9yIiwiYmFzZVVybCIsImNvbXBhbnlDb2RlIiwibG9naW4iLCJjcmVkZW50aWFscyIsInNldFJlcXVlc3RJbnRlcmNlcHRpb24iLCJvbiIsInJlcXVlc3QiLCJ1cmwiLCJhYm9ydCIsImludGVyY2VwdGlvblByaW9yaXRpZXMiLCJjb250aW51ZSIsIm1hc2tIZWFkbGVzc1VzZXJBZ2VudCIsIm5hdmlnYXRlVG8iLCJlbWl0UHJvZ3Jlc3MiLCJTY3JhcGVyUHJvZ3Jlc3NUeXBlcyIsIkxvZ2dpbmdJbiIsInZhbGlkYXRlVXJsIiwidmFsaWRhdGVSZXF1ZXN0IiwiaWQiLCJjYXJkU3VmZml4IiwiY2FyZDZEaWdpdHMiLCJjb3VudHJ5Q29kZSIsImlkVHlwZSIsImNoZWNrTGV2ZWwiLCJ2YWxpZGF0ZVJlc3VsdCIsImZldGNoUG9zdFdpdGhpblBhZ2UiLCJIZWFkZXIiLCJTdGF0dXMiLCJWYWxpZGF0ZUlkRGF0YUJlYW4iLCJFcnJvciIsInZhbGlkYXRlUmV0dXJuQ29kZSIsInJldHVybkNvZGUiLCJ1c2VyTmFtZSIsImxvZ2luVXJsIiwiS29kTWlzaHRhbWVzaCIsIk1pc3BhclppaHV5IiwiU2lzbWEiLCJwYXNzd29yZCIsImxvZ2luUmVzdWx0IiwiTG9naW5TdWNjZXNzIiwiQ2hhbmdlUGFzc3dvcmQiLCJlcnJvclR5cGUiLCJTY3JhcGVyRXJyb3JUeXBlcyIsIkxvZ2luRmFpbGVkIiwiSW52YWxpZFBhc3N3b3JkIiwiZmV0Y2hEYXRhIiwiZGVmYXVsdFN0YXJ0TW9tZW50Iiwic3VidHJhY3QiLCJzdGFydERhdGUiLCJ0b0RhdGUiLCJtYXgiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyYXBlcnMvYmFzZS1pc3JhY2FyZC1hbWV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBidWlsZFVybCBmcm9tICdidWlsZC11cmwnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBtb21lbnQsIHsgdHlwZSBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgdHlwZSBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyLWNvcmUnO1xuaW1wb3J0IHsgQUxUX1NIRUtFTF9DVVJSRU5DWSwgU0hFS0VMX0NVUlJFTkNZLCBTSEVLRUxfQ1VSUkVOQ1lfS0VZV09SRCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBTY3JhcGVyUHJvZ3Jlc3NUeXBlcyB9IGZyb20gJy4uL2RlZmluaXRpb25zJztcbmltcG9ydCBnZXRBbGxNb250aE1vbWVudHMgZnJvbSAnLi4vaGVscGVycy9kYXRlcyc7XG5pbXBvcnQgeyBnZXREZWJ1ZyB9IGZyb20gJy4uL2hlbHBlcnMvZGVidWcnO1xuaW1wb3J0IHsgZmV0Y2hHZXRXaXRoaW5QYWdlLCBmZXRjaFBvc3RXaXRoaW5QYWdlIH0gZnJvbSAnLi4vaGVscGVycy9mZXRjaCc7XG5pbXBvcnQgeyBmaWx0ZXJPbGRUcmFuc2FjdGlvbnMsIGZpeEluc3RhbGxtZW50cyB9IGZyb20gJy4uL2hlbHBlcnMvdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IHJ1blNlcmlhbCB9IGZyb20gJy4uL2hlbHBlcnMvd2FpdGluZyc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvblN0YXR1c2VzLFxuICBUcmFuc2FjdGlvblR5cGVzLFxuICB0eXBlIFRyYW5zYWN0aW9uLFxuICB0eXBlIFRyYW5zYWN0aW9uSW5zdGFsbG1lbnRzLFxuICB0eXBlIFRyYW5zYWN0aW9uc0FjY291bnQsXG59IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBCYXNlU2NyYXBlcldpdGhCcm93c2VyIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXItd2l0aC1icm93c2VyJztcbmltcG9ydCB7IFNjcmFwZXJFcnJvclR5cGVzIH0gZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IHsgdHlwZSBTY3JhcGVyT3B0aW9ucywgdHlwZSBTY3JhcGVyU2NyYXBpbmdSZXN1bHQgfSBmcm9tICcuL2ludGVyZmFjZSc7XG5pbXBvcnQgeyBpbnRlcmNlcHRpb25Qcmlvcml0aWVzLCBtYXNrSGVhZGxlc3NVc2VyQWdlbnQgfSBmcm9tICcuLi9oZWxwZXJzL2Jyb3dzZXInO1xuXG5jb25zdCBDT1VOVFJZX0NPREUgPSAnMjEyJztcbmNvbnN0IElEX1RZUEUgPSAnMSc7XG5jb25zdCBJTlNUQUxMTUVOVFNfS0VZV09SRCA9ICfXqtep15zXldedJztcblxuY29uc3QgREFURV9GT1JNQVQgPSAnREQvTU0vWVlZWSc7XG5cbmNvbnN0IGRlYnVnID0gZ2V0RGVidWcoJ2Jhc2UtaXNyYWNhcmQtYW1leCcpO1xuXG50eXBlIENvbXBhbnlTZXJ2aWNlT3B0aW9ucyA9IHtcbiAgc2VydmljZXNVcmw6IHN0cmluZztcbiAgY29tcGFueUNvZGU6IHN0cmluZztcbn07XG5cbnR5cGUgU2NyYXBlZEFjY291bnRzV2l0aEluZGV4ID0gUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25zQWNjb3VudCAmIHsgaW5kZXg6IG51bWJlciB9PjtcblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbiB7XG4gIGRlYWxTdW1UeXBlOiBzdHJpbmc7XG4gIHZvdWNoZXJOdW1iZXJSYXR6T3V0Ym91bmQ6IHN0cmluZztcbiAgdm91Y2hlck51bWJlclJhdHo6IHN0cmluZztcbiAgbW9yZUluZm8/OiBzdHJpbmc7XG4gIGRlYWxTdW1PdXRib3VuZDogYm9vbGVhbjtcbiAgY3VycmVuY3lJZDogc3RyaW5nO1xuICBjdXJyZW50UGF5bWVudEN1cnJlbmN5OiBzdHJpbmc7XG4gIGRlYWxTdW06IG51bWJlcjtcbiAgZnVsbFBheW1lbnREYXRlPzogc3RyaW5nO1xuICBmdWxsUHVyY2hhc2VEYXRlPzogc3RyaW5nO1xuICBmdWxsUHVyY2hhc2VEYXRlT3V0Ym91bmQ/OiBzdHJpbmc7XG4gIGZ1bGxTdXBwbGllck5hbWVIZWI6IHN0cmluZztcbiAgZnVsbFN1cHBsaWVyTmFtZU91dGJvdW5kOiBzdHJpbmc7XG4gIHBheW1lbnRTdW06IG51bWJlcjtcbiAgcGF5bWVudFN1bU91dGJvdW5kOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBTY3JhcGVkQWNjb3VudCB7XG4gIGluZGV4OiBudW1iZXI7XG4gIGFjY291bnROdW1iZXI6IHN0cmluZztcbiAgcHJvY2Vzc2VkRGF0ZTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgU2NyYXBlZExvZ2luVmFsaWRhdGlvbiB7XG4gIEhlYWRlcjoge1xuICAgIFN0YXR1czogc3RyaW5nO1xuICB9O1xuICBWYWxpZGF0ZUlkRGF0YUJlYW4/OiB7XG4gICAgdXNlck5hbWU/OiBzdHJpbmc7XG4gICAgcmV0dXJuQ29kZTogc3RyaW5nO1xuICB9O1xufVxuXG5pbnRlcmZhY2UgU2NyYXBlZEFjY291bnRzV2l0aGluUGFnZVJlc3BvbnNlIHtcbiAgSGVhZGVyOiB7XG4gICAgU3RhdHVzOiBzdHJpbmc7XG4gIH07XG4gIERhc2hib2FyZE1vbnRoQmVhbj86IHtcbiAgICBjYXJkc0NoYXJnZXM6IHtcbiAgICAgIGNhcmRJbmRleDogc3RyaW5nO1xuICAgICAgY2FyZE51bWJlcjogc3RyaW5nO1xuICAgICAgYmlsbGluZ0RhdGU6IHN0cmluZztcbiAgICB9W107XG4gIH07XG59XG5cbmludGVyZmFjZSBTY3JhcGVkQ3VycmVudENhcmRUcmFuc2FjdGlvbnMge1xuICB0eG5Jc3JhZWw/OiBTY3JhcGVkVHJhbnNhY3Rpb25bXTtcbiAgdHhuQWJyb2FkPzogU2NyYXBlZFRyYW5zYWN0aW9uW107XG59XG5cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb25EYXRhIHtcbiAgSGVhZGVyPzoge1xuICAgIFN0YXR1czogc3RyaW5nO1xuICB9O1xuICBQaXJ0ZXlJc2thXzIwNEJlYW4/OiB7XG4gICAgc2VjdG9yOiBzdHJpbmc7XG4gIH07XG5cbiAgQ2FyZHNUcmFuc2FjdGlvbnNMaXN0QmVhbj86IFJlY29yZDxcbiAgICBzdHJpbmcsXG4gICAge1xuICAgICAgQ3VycmVudENhcmRUcmFuc2FjdGlvbnM6IFNjcmFwZWRDdXJyZW50Q2FyZFRyYW5zYWN0aW9uc1tdO1xuICAgIH1cbiAgPjtcbn1cblxuZnVuY3Rpb24gZ2V0QWNjb3VudHNVcmwoc2VydmljZXNVcmw6IHN0cmluZywgbW9udGhNb21lbnQ6IE1vbWVudCkge1xuICBjb25zdCBiaWxsaW5nRGF0ZSA9IG1vbnRoTW9tZW50LmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xuICByZXR1cm4gYnVpbGRVcmwoc2VydmljZXNVcmwsIHtcbiAgICBxdWVyeVBhcmFtczoge1xuICAgICAgcmVxTmFtZTogJ0Rhc2hib2FyZE1vbnRoJyxcbiAgICAgIGFjdGlvbkNvZGU6ICcwJyxcbiAgICAgIGJpbGxpbmdEYXRlLFxuICAgICAgZm9ybWF0OiAnSnNvbicsXG4gICAgfSxcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoQWNjb3VudHMocGFnZTogUGFnZSwgc2VydmljZXNVcmw6IHN0cmluZywgbW9udGhNb21lbnQ6IE1vbWVudCk6IFByb21pc2U8U2NyYXBlZEFjY291bnRbXT4ge1xuICBjb25zdCBkYXRhVXJsID0gZ2V0QWNjb3VudHNVcmwoc2VydmljZXNVcmwsIG1vbnRoTW9tZW50KTtcbiAgY29uc3QgZGF0YVJlc3VsdCA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxTY3JhcGVkQWNjb3VudHNXaXRoaW5QYWdlUmVzcG9uc2U+KHBhZ2UsIGRhdGFVcmwpO1xuICBpZiAoZGF0YVJlc3VsdCAmJiBfLmdldChkYXRhUmVzdWx0LCAnSGVhZGVyLlN0YXR1cycpID09PSAnMScgJiYgZGF0YVJlc3VsdC5EYXNoYm9hcmRNb250aEJlYW4pIHtcbiAgICBjb25zdCB7IGNhcmRzQ2hhcmdlcyB9ID0gZGF0YVJlc3VsdC5EYXNoYm9hcmRNb250aEJlYW47XG4gICAgaWYgKGNhcmRzQ2hhcmdlcykge1xuICAgICAgcmV0dXJuIGNhcmRzQ2hhcmdlcy5tYXAoY2FyZENoYXJnZSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaW5kZXg6IHBhcnNlSW50KGNhcmRDaGFyZ2UuY2FyZEluZGV4LCAxMCksXG4gICAgICAgICAgYWNjb3VudE51bWJlcjogY2FyZENoYXJnZS5jYXJkTnVtYmVyLFxuICAgICAgICAgIHByb2Nlc3NlZERhdGU6IG1vbWVudChjYXJkQ2hhcmdlLmJpbGxpbmdEYXRlLCBEQVRFX0ZPUk1BVCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gW107XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uc1VybChzZXJ2aWNlc1VybDogc3RyaW5nLCBtb250aE1vbWVudDogTW9tZW50KSB7XG4gIGNvbnN0IG1vbnRoID0gbW9udGhNb21lbnQubW9udGgoKSArIDE7XG4gIGNvbnN0IHllYXIgPSBtb250aE1vbWVudC55ZWFyKCk7XG4gIGNvbnN0IG1vbnRoU3RyID0gbW9udGggPCAxMCA/IGAwJHttb250aH1gIDogbW9udGgudG9TdHJpbmcoKTtcbiAgcmV0dXJuIGJ1aWxkVXJsKHNlcnZpY2VzVXJsLCB7XG4gICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgIHJlcU5hbWU6ICdDYXJkc1RyYW5zYWN0aW9uc0xpc3QnLFxuICAgICAgbW9udGg6IG1vbnRoU3RyLFxuICAgICAgeWVhcjogYCR7eWVhcn1gLFxuICAgICAgcmVxdWlyZWREYXRlOiAnTicsXG4gICAgfSxcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRDdXJyZW5jeShjdXJyZW5jeVN0cjogc3RyaW5nKSB7XG4gIGlmIChjdXJyZW5jeVN0ciA9PT0gU0hFS0VMX0NVUlJFTkNZX0tFWVdPUkQgfHwgY3VycmVuY3lTdHIgPT09IEFMVF9TSEVLRUxfQ1VSUkVOQ1kpIHtcbiAgICByZXR1cm4gU0hFS0VMX0NVUlJFTkNZO1xuICB9XG4gIHJldHVybiBjdXJyZW5jeVN0cjtcbn1cblxuZnVuY3Rpb24gZ2V0SW5zdGFsbG1lbnRzSW5mbyh0eG46IFNjcmFwZWRUcmFuc2FjdGlvbik6IFRyYW5zYWN0aW9uSW5zdGFsbG1lbnRzIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCF0eG4ubW9yZUluZm8gfHwgIXR4bi5tb3JlSW5mby5pbmNsdWRlcyhJTlNUQUxMTUVOVFNfS0VZV09SRCkpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGNvbnN0IG1hdGNoZXMgPSB0eG4ubW9yZUluZm8ubWF0Y2goL1xcZCsvZyk7XG4gIGlmICghbWF0Y2hlcyB8fCBtYXRjaGVzLmxlbmd0aCA8IDIpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBudW1iZXI6IHBhcnNlSW50KG1hdGNoZXNbMF0sIDEwKSxcbiAgICB0b3RhbDogcGFyc2VJbnQobWF0Y2hlc1sxXSwgMTApLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRUcmFuc2FjdGlvblR5cGUodHhuOiBTY3JhcGVkVHJhbnNhY3Rpb24pIHtcbiAgcmV0dXJuIGdldEluc3RhbGxtZW50c0luZm8odHhuKSA/IFRyYW5zYWN0aW9uVHlwZXMuSW5zdGFsbG1lbnRzIDogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWw7XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRUcmFuc2FjdGlvbnModHhuczogU2NyYXBlZFRyYW5zYWN0aW9uW10sIHByb2Nlc3NlZERhdGU6IHN0cmluZyk6IFRyYW5zYWN0aW9uW10ge1xuICBjb25zdCBmaWx0ZXJlZFR4bnMgPSB0eG5zLmZpbHRlcihcbiAgICB0eG4gPT5cbiAgICAgIHR4bi5kZWFsU3VtVHlwZSAhPT0gJzEnICYmIHR4bi52b3VjaGVyTnVtYmVyUmF0eiAhPT0gJzAwMDAwMDAwMCcgJiYgdHhuLnZvdWNoZXJOdW1iZXJSYXR6T3V0Ym91bmQgIT09ICcwMDAwMDAwMDAnLFxuICApO1xuXG4gIHJldHVybiBmaWx0ZXJlZFR4bnMubWFwKHR4biA9PiB7XG4gICAgY29uc3QgaXNPdXRib3VuZCA9IHR4bi5kZWFsU3VtT3V0Ym91bmQ7XG4gICAgY29uc3QgdHhuRGF0ZVN0ciA9IGlzT3V0Ym91bmQgPyB0eG4uZnVsbFB1cmNoYXNlRGF0ZU91dGJvdW5kIDogdHhuLmZ1bGxQdXJjaGFzZURhdGU7XG4gICAgY29uc3QgdHhuTW9tZW50ID0gbW9tZW50KHR4bkRhdGVTdHIsIERBVEVfRk9STUFUKTtcblxuICAgIGNvbnN0IGN1cnJlbnRQcm9jZXNzZWREYXRlID0gdHhuLmZ1bGxQYXltZW50RGF0ZVxuICAgICAgPyBtb21lbnQodHhuLmZ1bGxQYXltZW50RGF0ZSwgREFURV9GT1JNQVQpLnRvSVNPU3RyaW5nKClcbiAgICAgIDogcHJvY2Vzc2VkRGF0ZTtcbiAgICBjb25zdCByZXN1bHQ6IFRyYW5zYWN0aW9uID0ge1xuICAgICAgdHlwZTogZ2V0VHJhbnNhY3Rpb25UeXBlKHR4biksXG4gICAgICBpZGVudGlmaWVyOiBwYXJzZUludChpc091dGJvdW5kID8gdHhuLnZvdWNoZXJOdW1iZXJSYXR6T3V0Ym91bmQgOiB0eG4udm91Y2hlck51bWJlclJhdHosIDEwKSxcbiAgICAgIGRhdGU6IHR4bk1vbWVudC50b0lTT1N0cmluZygpLFxuICAgICAgcHJvY2Vzc2VkRGF0ZTogY3VycmVudFByb2Nlc3NlZERhdGUsXG4gICAgICBvcmlnaW5hbEFtb3VudDogaXNPdXRib3VuZCA/IC10eG4uZGVhbFN1bU91dGJvdW5kIDogLXR4bi5kZWFsU3VtLFxuICAgICAgb3JpZ2luYWxDdXJyZW5jeTogY29udmVydEN1cnJlbmN5KHR4bi5jdXJyZW50UGF5bWVudEN1cnJlbmN5ID8/IHR4bi5jdXJyZW5jeUlkKSxcbiAgICAgIGNoYXJnZWRBbW91bnQ6IGlzT3V0Ym91bmQgPyAtdHhuLnBheW1lbnRTdW1PdXRib3VuZCA6IC10eG4ucGF5bWVudFN1bSxcbiAgICAgIGNoYXJnZWRDdXJyZW5jeTogY29udmVydEN1cnJlbmN5KHR4bi5jdXJyZW5jeUlkKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBpc091dGJvdW5kID8gdHhuLmZ1bGxTdXBwbGllck5hbWVPdXRib3VuZCA6IHR4bi5mdWxsU3VwcGxpZXJOYW1lSGViLFxuICAgICAgbWVtbzogdHhuLm1vcmVJbmZvIHx8ICcnLFxuICAgICAgaW5zdGFsbG1lbnRzOiBnZXRJbnN0YWxsbWVudHNJbmZvKHR4bikgfHwgdW5kZWZpbmVkLFxuICAgICAgc3RhdHVzOiBUcmFuc2FjdGlvblN0YXR1c2VzLkNvbXBsZXRlZCxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoVHJhbnNhY3Rpb25zKFxuICBwYWdlOiBQYWdlLFxuICBvcHRpb25zOiBTY3JhcGVyT3B0aW9ucyxcbiAgY29tcGFueVNlcnZpY2VPcHRpb25zOiBDb21wYW55U2VydmljZU9wdGlvbnMsXG4gIHN0YXJ0TW9tZW50OiBNb21lbnQsXG4gIG1vbnRoTW9tZW50OiBNb21lbnQsXG4pOiBQcm9taXNlPFNjcmFwZWRBY2NvdW50c1dpdGhJbmRleD4ge1xuICBjb25zdCBhY2NvdW50cyA9IGF3YWl0IGZldGNoQWNjb3VudHMocGFnZSwgY29tcGFueVNlcnZpY2VPcHRpb25zLnNlcnZpY2VzVXJsLCBtb250aE1vbWVudCk7XG4gIGNvbnN0IGRhdGFVcmwgPSBnZXRUcmFuc2FjdGlvbnNVcmwoY29tcGFueVNlcnZpY2VPcHRpb25zLnNlcnZpY2VzVXJsLCBtb250aE1vbWVudCk7XG4gIGNvbnN0IGRhdGFSZXN1bHQgPSBhd2FpdCBmZXRjaEdldFdpdGhpblBhZ2U8U2NyYXBlZFRyYW5zYWN0aW9uRGF0YT4ocGFnZSwgZGF0YVVybCk7XG4gIGlmIChkYXRhUmVzdWx0ICYmIF8uZ2V0KGRhdGFSZXN1bHQsICdIZWFkZXIuU3RhdHVzJykgPT09ICcxJyAmJiBkYXRhUmVzdWx0LkNhcmRzVHJhbnNhY3Rpb25zTGlzdEJlYW4pIHtcbiAgICBjb25zdCBhY2NvdW50VHhuczogU2NyYXBlZEFjY291bnRzV2l0aEluZGV4ID0ge307XG4gICAgYWNjb3VudHMuZm9yRWFjaChhY2NvdW50ID0+IHtcbiAgICAgIGNvbnN0IHR4bkdyb3VwczogU2NyYXBlZEN1cnJlbnRDYXJkVHJhbnNhY3Rpb25zW10gfCB1bmRlZmluZWQgPSBfLmdldChcbiAgICAgICAgZGF0YVJlc3VsdCxcbiAgICAgICAgYENhcmRzVHJhbnNhY3Rpb25zTGlzdEJlYW4uSW5kZXgke2FjY291bnQuaW5kZXh9LkN1cnJlbnRDYXJkVHJhbnNhY3Rpb25zYCxcbiAgICAgICk7XG4gICAgICBpZiAodHhuR3JvdXBzKSB7XG4gICAgICAgIGxldCBhbGxUeG5zOiBUcmFuc2FjdGlvbltdID0gW107XG4gICAgICAgIHR4bkdyb3Vwcy5mb3JFYWNoKHR4bkdyb3VwID0+IHtcbiAgICAgICAgICBpZiAodHhuR3JvdXAudHhuSXNyYWVsKSB7XG4gICAgICAgICAgICBjb25zdCB0eG5zID0gY29udmVydFRyYW5zYWN0aW9ucyh0eG5Hcm91cC50eG5Jc3JhZWwsIGFjY291bnQucHJvY2Vzc2VkRGF0ZSk7XG4gICAgICAgICAgICBhbGxUeG5zLnB1c2goLi4udHhucyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh0eG5Hcm91cC50eG5BYnJvYWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHR4bnMgPSBjb252ZXJ0VHJhbnNhY3Rpb25zKHR4bkdyb3VwLnR4bkFicm9hZCwgYWNjb3VudC5wcm9jZXNzZWREYXRlKTtcbiAgICAgICAgICAgIGFsbFR4bnMucHVzaCguLi50eG5zKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghb3B0aW9ucy5jb21iaW5lSW5zdGFsbG1lbnRzKSB7XG4gICAgICAgICAgYWxsVHhucyA9IGZpeEluc3RhbGxtZW50cyhhbGxUeG5zKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5vdXRwdXREYXRhPy5lbmFibGVUcmFuc2FjdGlvbnNGaWx0ZXJCeURhdGUgPz8gdHJ1ZSkge1xuICAgICAgICAgIGFsbFR4bnMgPSBmaWx0ZXJPbGRUcmFuc2FjdGlvbnMoYWxsVHhucywgc3RhcnRNb21lbnQsIG9wdGlvbnMuY29tYmluZUluc3RhbGxtZW50cyB8fCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgYWNjb3VudFR4bnNbYWNjb3VudC5hY2NvdW50TnVtYmVyXSA9IHtcbiAgICAgICAgICBhY2NvdW50TnVtYmVyOiBhY2NvdW50LmFjY291bnROdW1iZXIsXG4gICAgICAgICAgaW5kZXg6IGFjY291bnQuaW5kZXgsXG4gICAgICAgICAgdHhuczogYWxsVHhucyxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gYWNjb3VudFR4bnM7XG4gIH1cblxuICByZXR1cm4ge307XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uRXh0cmFEZXRhaWxzKFxuICBzZXJ2aWNlc1VybDogc3RyaW5nLFxuICBtb250aDogTW9tZW50LFxuICBhY2NvdW50SW5kZXg6IG51bWJlcixcbiAgdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uLFxuKTogc3RyaW5nIHtcbiAgY29uc3QgbW9lZENoaXV2ID0gbW9udGguZm9ybWF0KCdNTVlZWVknKTtcbiAgcmV0dXJuIGJ1aWxkVXJsKHNlcnZpY2VzVXJsLCB7XG4gICAgcXVlcnlQYXJhbXM6IHtcbiAgICAgIHJlcU5hbWU6ICdQaXJ0ZXlJc2thXzIwNCcsXG4gICAgICBDYXJkSW5kZXg6IGFjY291bnRJbmRleC50b1N0cmluZygpLFxuICAgICAgc2hvdmFyUmF0ejogdHJhbnNhY3Rpb24uaWRlbnRpZmllciEudG9TdHJpbmcoKSxcbiAgICAgIG1vZWRDaGl1dixcbiAgICB9LFxuICB9KTtcbn1cbmFzeW5jIGZ1bmN0aW9uIGdldEV4dHJhU2NyYXBUcmFuc2FjdGlvbihcbiAgcGFnZTogUGFnZSxcbiAgb3B0aW9uczogQ29tcGFueVNlcnZpY2VPcHRpb25zLFxuICBtb250aDogTW9tZW50LFxuICBhY2NvdW50SW5kZXg6IG51bWJlcixcbiAgdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uLFxuKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICBjb25zdCBkYXRhVXJsID0gZ2V0VHJhbnNhY3Rpb25FeHRyYURldGFpbHMob3B0aW9ucy5zZXJ2aWNlc1VybCwgbW9udGgsIGFjY291bnRJbmRleCwgdHJhbnNhY3Rpb24pO1xuICBjb25zdCBkYXRhID0gYXdhaXQgZmV0Y2hHZXRXaXRoaW5QYWdlPFNjcmFwZWRUcmFuc2FjdGlvbkRhdGE+KHBhZ2UsIGRhdGFVcmwpO1xuXG4gIGlmICghZGF0YSkge1xuICAgIHJldHVybiB0cmFuc2FjdGlvbjtcbiAgfVxuXG4gIGNvbnN0IHJhd0NhdGVnb3J5ID0gXy5nZXQoZGF0YSwgJ1BpcnRleUlza2FfMjA0QmVhbi5zZWN0b3InKSA/PyAnJztcbiAgcmV0dXJuIHtcbiAgICAuLi50cmFuc2FjdGlvbixcbiAgICBjYXRlZ29yeTogcmF3Q2F0ZWdvcnkudHJpbSgpLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRFeHRyYVNjcmFwVHJhbnNhY3Rpb25zKFxuICBhY2NvdW50V2l0aEluZGV4OiBUcmFuc2FjdGlvbnNBY2NvdW50ICYgeyBpbmRleDogbnVtYmVyIH0sXG4gIHBhZ2U6IFBhZ2UsXG4gIG9wdGlvbnM6IENvbXBhbnlTZXJ2aWNlT3B0aW9ucyxcbiAgbW9udGg6IG1vbWVudC5Nb21lbnQsXG4pOiBQcm9taXNlPFRyYW5zYWN0aW9uW10+IHtcbiAgY29uc3QgcHJvbWlzZXMgPSBhY2NvdW50V2l0aEluZGV4LnR4bnMubWFwKHQgPT5cbiAgICBnZXRFeHRyYVNjcmFwVHJhbnNhY3Rpb24ocGFnZSwgb3B0aW9ucywgbW9udGgsIGFjY291bnRXaXRoSW5kZXguaW5kZXgsIHQpLFxuICApO1xuICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRFeHRyYVNjcmFwQWNjb3VudChcbiAgcGFnZTogUGFnZSxcbiAgb3B0aW9uczogQ29tcGFueVNlcnZpY2VPcHRpb25zLFxuICBhY2NvdW50TWFwOiBTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXgsXG4gIG1vbnRoOiBtb21lbnQuTW9tZW50LFxuKTogUHJvbWlzZTxTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXg+IHtcbiAgY29uc3QgcHJvbWlzZXMgPSBPYmplY3Qua2V5cyhhY2NvdW50TWFwKS5tYXAoYXN5bmMgYSA9PiAoe1xuICAgIC4uLmFjY291bnRNYXBbYV0sXG4gICAgdHhuczogYXdhaXQgZ2V0RXh0cmFTY3JhcFRyYW5zYWN0aW9ucyhhY2NvdW50TWFwW2FdLCBwYWdlLCBvcHRpb25zLCBtb250aCksXG4gIH0pKTtcbiAgY29uc3QgYWNjb3VudHMgPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gIHJldHVybiBhY2NvdW50cy5yZWR1Y2UoKG0sIHgpID0+ICh7IC4uLm0sIFt4LmFjY291bnROdW1iZXJdOiB4IH0pLCB7fSk7XG59XG5cbmZ1bmN0aW9uIGdldEV4dHJhU2NyYXAoXG4gIGFjY291bnRzV2l0aEluZGV4OiBTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXhbXSxcbiAgcGFnZTogUGFnZSxcbiAgb3B0aW9uczogQ29tcGFueVNlcnZpY2VPcHRpb25zLFxuICBhbGxNb250aHM6IG1vbWVudC5Nb21lbnRbXSxcbik6IFByb21pc2U8U2NyYXBlZEFjY291bnRzV2l0aEluZGV4W10+IHtcbiAgY29uc3QgYWN0aW9ucyA9IGFjY291bnRzV2l0aEluZGV4Lm1hcCgoYSwgaSkgPT4gKCkgPT4gZ2V0RXh0cmFTY3JhcEFjY291bnQocGFnZSwgb3B0aW9ucywgYSwgYWxsTW9udGhzW2ldKSk7XG4gIHJldHVybiBydW5TZXJpYWwoYWN0aW9ucyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoQWxsVHJhbnNhY3Rpb25zKFxuICBwYWdlOiBQYWdlLFxuICBvcHRpb25zOiBTY3JhcGVyT3B0aW9ucyxcbiAgY29tcGFueVNlcnZpY2VPcHRpb25zOiBDb21wYW55U2VydmljZU9wdGlvbnMsXG4gIHN0YXJ0TW9tZW50OiBNb21lbnQsXG4pIHtcbiAgY29uc3QgZnV0dXJlTW9udGhzVG9TY3JhcGUgPSBvcHRpb25zLmZ1dHVyZU1vbnRoc1RvU2NyYXBlID8/IDE7XG4gIGNvbnN0IGFsbE1vbnRocyA9IGdldEFsbE1vbnRoTW9tZW50cyhzdGFydE1vbWVudCwgZnV0dXJlTW9udGhzVG9TY3JhcGUpO1xuICBjb25zdCByZXN1bHRzOiBTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXhbXSA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgIGFsbE1vbnRocy5tYXAoYXN5bmMgbW9udGhNb21lbnQgPT4ge1xuICAgICAgcmV0dXJuIGZldGNoVHJhbnNhY3Rpb25zKHBhZ2UsIG9wdGlvbnMsIGNvbXBhbnlTZXJ2aWNlT3B0aW9ucywgc3RhcnRNb21lbnQsIG1vbnRoTW9tZW50KTtcbiAgICB9KSxcbiAgKTtcblxuICBjb25zdCBmaW5hbFJlc3VsdCA9IG9wdGlvbnMuYWRkaXRpb25hbFRyYW5zYWN0aW9uSW5mb3JtYXRpb25cbiAgICA/IGF3YWl0IGdldEV4dHJhU2NyYXAocmVzdWx0cywgcGFnZSwgY29tcGFueVNlcnZpY2VPcHRpb25zLCBhbGxNb250aHMpXG4gICAgOiByZXN1bHRzO1xuXG4gIGNvbnN0IGNvbWJpbmVkVHhuczogUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25bXT4gPSB7fTtcblxuICBmaW5hbFJlc3VsdC5mb3JFYWNoKHJlc3VsdCA9PiB7XG4gICAgT2JqZWN0LmtleXMocmVzdWx0KS5mb3JFYWNoKGFjY291bnROdW1iZXIgPT4ge1xuICAgICAgbGV0IHR4bnNGb3JBY2NvdW50ID0gY29tYmluZWRUeG5zW2FjY291bnROdW1iZXJdO1xuICAgICAgaWYgKCF0eG5zRm9yQWNjb3VudCkge1xuICAgICAgICB0eG5zRm9yQWNjb3VudCA9IFtdO1xuICAgICAgICBjb21iaW5lZFR4bnNbYWNjb3VudE51bWJlcl0gPSB0eG5zRm9yQWNjb3VudDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHRvQmVBZGRlZFR4bnMgPSByZXN1bHRbYWNjb3VudE51bWJlcl0udHhucztcbiAgICAgIGNvbWJpbmVkVHhuc1thY2NvdW50TnVtYmVyXS5wdXNoKC4uLnRvQmVBZGRlZFR4bnMpO1xuICAgIH0pO1xuICB9KTtcblxuICBjb25zdCBhY2NvdW50cyA9IE9iamVjdC5rZXlzKGNvbWJpbmVkVHhucykubWFwKGFjY291bnROdW1iZXIgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBhY2NvdW50TnVtYmVyLFxuICAgICAgdHhuczogY29tYmluZWRUeG5zW2FjY291bnROdW1iZXJdLFxuICAgIH07XG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgc3VjY2VzczogdHJ1ZSxcbiAgICBhY2NvdW50cyxcbiAgfTtcbn1cblxudHlwZSBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyA9IHsgaWQ6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZzsgY2FyZDZEaWdpdHM6IHN0cmluZyB9O1xuY2xhc3MgSXNyYWNhcmRBbWV4QmFzZVNjcmFwZXIgZXh0ZW5kcyBCYXNlU2NyYXBlcldpdGhCcm93c2VyPFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzPiB7XG4gIHByaXZhdGUgYmFzZVVybDogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29tcGFueUNvZGU6IHN0cmluZztcblxuICBwcml2YXRlIHNlcnZpY2VzVXJsOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogU2NyYXBlck9wdGlvbnMsIGJhc2VVcmw6IHN0cmluZywgY29tcGFueUNvZGU6IHN0cmluZykge1xuICAgIHN1cGVyKG9wdGlvbnMpO1xuXG4gICAgdGhpcy5iYXNlVXJsID0gYmFzZVVybDtcbiAgICB0aGlzLmNvbXBhbnlDb2RlID0gY29tcGFueUNvZGU7XG4gICAgdGhpcy5zZXJ2aWNlc1VybCA9IGAke2Jhc2VVcmx9L3NlcnZpY2VzL1Byb3h5UmVxdWVzdEhhbmRsZXIuYXNoeGA7XG4gIH1cblxuICBhc3luYyBsb2dpbihjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpOiBQcm9taXNlPFNjcmFwZXJTY3JhcGluZ1Jlc3VsdD4ge1xuICAgIGF3YWl0IHRoaXMucGFnZS5zZXRSZXF1ZXN0SW50ZXJjZXB0aW9uKHRydWUpO1xuICAgIHRoaXMucGFnZS5vbigncmVxdWVzdCcsIHJlcXVlc3QgPT4ge1xuICAgICAgaWYgKHJlcXVlc3QudXJsKCkuaW5jbHVkZXMoJ2RldGVjdG9yLWRvbS5taW4uanMnKSkge1xuICAgICAgICBkZWJ1ZygnZm9yY2UgYWJvcnQgZm9yIHJlcXVlc3QgZG8gZG93bmxvYWQgZGV0ZWN0b3ItZG9tLm1pbi5qcyByZXNvdXJjZScpO1xuICAgICAgICB2b2lkIHJlcXVlc3QuYWJvcnQodW5kZWZpbmVkLCBpbnRlcmNlcHRpb25Qcmlvcml0aWVzLmFib3J0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZvaWQgcmVxdWVzdC5jb250aW51ZSh1bmRlZmluZWQsIGludGVyY2VwdGlvblByaW9yaXRpZXMuY29udGludWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgYXdhaXQgbWFza0hlYWRsZXNzVXNlckFnZW50KHRoaXMucGFnZSk7XG5cbiAgICBhd2FpdCB0aGlzLm5hdmlnYXRlVG8oYCR7dGhpcy5iYXNlVXJsfS9wZXJzb25hbGFyZWEvTG9naW5gKTtcblxuICAgIHRoaXMuZW1pdFByb2dyZXNzKFNjcmFwZXJQcm9ncmVzc1R5cGVzLkxvZ2dpbmdJbik7XG5cbiAgICBjb25zdCB2YWxpZGF0ZVVybCA9IGAke3RoaXMuc2VydmljZXNVcmx9P3JlcU5hbWU9VmFsaWRhdGVJZERhdGFgO1xuICAgIGNvbnN0IHZhbGlkYXRlUmVxdWVzdCA9IHtcbiAgICAgIGlkOiBjcmVkZW50aWFscy5pZCxcbiAgICAgIGNhcmRTdWZmaXg6IGNyZWRlbnRpYWxzLmNhcmQ2RGlnaXRzLFxuICAgICAgY291bnRyeUNvZGU6IENPVU5UUllfQ09ERSxcbiAgICAgIGlkVHlwZTogSURfVFlQRSxcbiAgICAgIGNoZWNrTGV2ZWw6ICcxJyxcbiAgICAgIGNvbXBhbnlDb2RlOiB0aGlzLmNvbXBhbnlDb2RlLFxuICAgIH07XG4gICAgY29uc3QgdmFsaWRhdGVSZXN1bHQgPSBhd2FpdCBmZXRjaFBvc3RXaXRoaW5QYWdlPFNjcmFwZWRMb2dpblZhbGlkYXRpb24+KHRoaXMucGFnZSwgdmFsaWRhdGVVcmwsIHZhbGlkYXRlUmVxdWVzdCk7XG4gICAgaWYgKFxuICAgICAgIXZhbGlkYXRlUmVzdWx0IHx8XG4gICAgICAhdmFsaWRhdGVSZXN1bHQuSGVhZGVyIHx8XG4gICAgICB2YWxpZGF0ZVJlc3VsdC5IZWFkZXIuU3RhdHVzICE9PSAnMScgfHxcbiAgICAgICF2YWxpZGF0ZVJlc3VsdC5WYWxpZGF0ZUlkRGF0YUJlYW5cbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5rbm93biBlcnJvciBkdXJpbmcgbG9naW4nKTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWxpZGF0ZVJldHVybkNvZGUgPSB2YWxpZGF0ZVJlc3VsdC5WYWxpZGF0ZUlkRGF0YUJlYW4ucmV0dXJuQ29kZTtcbiAgICBkZWJ1ZyhgdXNlciB2YWxpZGF0ZSB3aXRoIHJldHVybiBjb2RlICcke3ZhbGlkYXRlUmV0dXJuQ29kZX0nYCk7XG4gICAgaWYgKHZhbGlkYXRlUmV0dXJuQ29kZSA9PT0gJzEnKSB7XG4gICAgICBjb25zdCB7IHVzZXJOYW1lIH0gPSB2YWxpZGF0ZVJlc3VsdC5WYWxpZGF0ZUlkRGF0YUJlYW47XG5cbiAgICAgIGNvbnN0IGxvZ2luVXJsID0gYCR7dGhpcy5zZXJ2aWNlc1VybH0/cmVxTmFtZT1wZXJmb3JtTG9nb25JYDtcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICAgIEtvZE1pc2h0YW1lc2g6IHVzZXJOYW1lLFxuICAgICAgICBNaXNwYXJaaWh1eTogY3JlZGVudGlhbHMuaWQsXG4gICAgICAgIFNpc21hOiBjcmVkZW50aWFscy5wYXNzd29yZCxcbiAgICAgICAgY2FyZFN1ZmZpeDogY3JlZGVudGlhbHMuY2FyZDZEaWdpdHMsXG4gICAgICAgIGNvdW50cnlDb2RlOiBDT1VOVFJZX0NPREUsXG4gICAgICAgIGlkVHlwZTogSURfVFlQRSxcbiAgICAgIH07XG4gICAgICBjb25zdCBsb2dpblJlc3VsdCA9IGF3YWl0IGZldGNoUG9zdFdpdGhpblBhZ2U8eyBzdGF0dXM6IHN0cmluZyB9Pih0aGlzLnBhZ2UsIGxvZ2luVXJsLCByZXF1ZXN0KTtcbiAgICAgIGRlYnVnKGB1c2VyIGxvZ2luIHdpdGggc3RhdHVzICcke2xvZ2luUmVzdWx0Py5zdGF0dXN9J2ApO1xuXG4gICAgICBpZiAobG9naW5SZXN1bHQgJiYgbG9naW5SZXN1bHQuc3RhdHVzID09PSAnMScpIHtcbiAgICAgICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NyYXBlclByb2dyZXNzVHlwZXMuTG9naW5TdWNjZXNzKTtcbiAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSB9O1xuICAgICAgfVxuXG4gICAgICBpZiAobG9naW5SZXN1bHQgJiYgbG9naW5SZXN1bHQuc3RhdHVzID09PSAnMycpIHtcbiAgICAgICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NyYXBlclByb2dyZXNzVHlwZXMuQ2hhbmdlUGFzc3dvcmQpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICAgIGVycm9yVHlwZTogU2NyYXBlckVycm9yVHlwZXMuQ2hhbmdlUGFzc3dvcmQsXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZW1pdFByb2dyZXNzKFNjcmFwZXJQcm9ncmVzc1R5cGVzLkxvZ2luRmFpbGVkKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkludmFsaWRQYXNzd29yZCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHZhbGlkYXRlUmV0dXJuQ29kZSA9PT0gJzQnKSB7XG4gICAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY3JhcGVyUHJvZ3Jlc3NUeXBlcy5DaGFuZ2VQYXNzd29yZCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgZXJyb3JUeXBlOiBTY3JhcGVyRXJyb3JUeXBlcy5DaGFuZ2VQYXNzd29yZCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NyYXBlclByb2dyZXNzVHlwZXMuTG9naW5GYWlsZWQpO1xuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgIGVycm9yVHlwZTogU2NyYXBlckVycm9yVHlwZXMuSW52YWxpZFBhc3N3b3JkLFxuICAgIH07XG4gIH1cblxuICBhc3luYyBmZXRjaERhdGEoKSB7XG4gICAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJyk7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSB8fCBkZWZhdWx0U3RhcnRNb21lbnQudG9EYXRlKCk7XG4gICAgY29uc3Qgc3RhcnRNb21lbnQgPSBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xuXG4gICAgcmV0dXJuIGZldGNoQWxsVHJhbnNhY3Rpb25zKFxuICAgICAgdGhpcy5wYWdlLFxuICAgICAgdGhpcy5vcHRpb25zLFxuICAgICAge1xuICAgICAgICBzZXJ2aWNlc1VybDogdGhpcy5zZXJ2aWNlc1VybCxcbiAgICAgICAgY29tcGFueUNvZGU6IHRoaXMuY29tcGFueUNvZGUsXG4gICAgICB9LFxuICAgICAgc3RhcnRNb21lbnQsXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBJc3JhY2FyZEFtZXhCYXNlU2NyYXBlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsU0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsT0FBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUcsVUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksWUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUssTUFBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU0sTUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sTUFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsYUFBQSxHQUFBUixPQUFBO0FBQ0EsSUFBQVMsUUFBQSxHQUFBVCxPQUFBO0FBQ0EsSUFBQVUsY0FBQSxHQUFBVixPQUFBO0FBT0EsSUFBQVcsdUJBQUEsR0FBQVgsT0FBQTtBQUNBLElBQUFZLE9BQUEsR0FBQVosT0FBQTtBQUVBLElBQUFh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
311
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbW9tZW50IiwiX2NvbnN0YW50cyIsIl9kZWZpbml0aW9ucyIsIl9kYXRlcyIsIl9kZWJ1ZyIsIl9mZXRjaCIsIl90cmFuc2FjdGlvbnMiLCJfd2FpdGluZyIsIl90cmFuc2FjdGlvbnMyIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJfZXJyb3JzIiwiX2Jyb3dzZXIiLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJDT1VOVFJZX0NPREUiLCJJRF9UWVBFIiwiSU5TVEFMTE1FTlRTX0tFWVdPUkQiLCJEQVRFX0ZPUk1BVCIsImRlYnVnIiwiZ2V0RGVidWciLCJnZXRBY2NvdW50c1VybCIsInNlcnZpY2VzVXJsIiwibW9udGhNb21lbnQiLCJiaWxsaW5nRGF0ZSIsImZvcm1hdCIsInVybCIsIlVSTCIsInNlYXJjaFBhcmFtcyIsInNldCIsInRvU3RyaW5nIiwiZmV0Y2hBY2NvdW50cyIsInBhZ2UiLCJkYXRhVXJsIiwiZGF0YVJlc3VsdCIsImZldGNoR2V0V2l0aGluUGFnZSIsIl8iLCJnZXQiLCJEYXNoYm9hcmRNb250aEJlYW4iLCJjYXJkc0NoYXJnZXMiLCJtYXAiLCJjYXJkQ2hhcmdlIiwiaW5kZXgiLCJwYXJzZUludCIsImNhcmRJbmRleCIsImFjY291bnROdW1iZXIiLCJjYXJkTnVtYmVyIiwicHJvY2Vzc2VkRGF0ZSIsIm1vbWVudCIsInRvSVNPU3RyaW5nIiwiZ2V0VHJhbnNhY3Rpb25zVXJsIiwibW9udGgiLCJ5ZWFyIiwibW9udGhTdHIiLCJjb252ZXJ0Q3VycmVuY3kiLCJjdXJyZW5jeVN0ciIsIlNIRUtFTF9DVVJSRU5DWV9LRVlXT1JEIiwiQUxUX1NIRUtFTF9DVVJSRU5DWSIsIlNIRUtFTF9DVVJSRU5DWSIsImdldEluc3RhbGxtZW50c0luZm8iLCJ0eG4iLCJtb3JlSW5mbyIsImluY2x1ZGVzIiwidW5kZWZpbmVkIiwibWF0Y2hlcyIsIm1hdGNoIiwibGVuZ3RoIiwibnVtYmVyIiwidG90YWwiLCJnZXRUcmFuc2FjdGlvblR5cGUiLCJUcmFuc2FjdGlvblR5cGVzIiwiSW5zdGFsbG1lbnRzIiwiTm9ybWFsIiwiY29udmVydFRyYW5zYWN0aW9ucyIsInR4bnMiLCJmaWx0ZXJlZFR4bnMiLCJmaWx0ZXIiLCJkZWFsU3VtVHlwZSIsInZvdWNoZXJOdW1iZXJSYXR6Iiwidm91Y2hlck51bWJlclJhdHpPdXRib3VuZCIsImlzT3V0Ym91bmQiLCJkZWFsU3VtT3V0Ym91bmQiLCJ0eG5EYXRlU3RyIiwiZnVsbFB1cmNoYXNlRGF0ZU91dGJvdW5kIiwiZnVsbFB1cmNoYXNlRGF0ZSIsInR4bk1vbWVudCIsImN1cnJlbnRQcm9jZXNzZWREYXRlIiwiZnVsbFBheW1lbnREYXRlIiwicmVzdWx0IiwidHlwZSIsImlkZW50aWZpZXIiLCJkYXRlIiwib3JpZ2luYWxBbW91bnQiLCJkZWFsU3VtIiwib3JpZ2luYWxDdXJyZW5jeSIsImN1cnJlbnRQYXltZW50Q3VycmVuY3kiLCJjdXJyZW5jeUlkIiwiY2hhcmdlZEFtb3VudCIsInBheW1lbnRTdW1PdXRib3VuZCIsInBheW1lbnRTdW0iLCJjaGFyZ2VkQ3VycmVuY3kiLCJkZXNjcmlwdGlvbiIsImZ1bGxTdXBwbGllck5hbWVPdXRib3VuZCIsImZ1bGxTdXBwbGllck5hbWVIZWIiLCJtZW1vIiwiaW5zdGFsbG1lbnRzIiwic3RhdHVzIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIkNvbXBsZXRlZCIsImZldGNoVHJhbnNhY3Rpb25zIiwib3B0aW9ucyIsImNvbXBhbnlTZXJ2aWNlT3B0aW9ucyIsInN0YXJ0TW9tZW50IiwiYWNjb3VudHMiLCJDYXJkc1RyYW5zYWN0aW9uc0xpc3RCZWFuIiwiYWNjb3VudFR4bnMiLCJmb3JFYWNoIiwiYWNjb3VudCIsInR4bkdyb3VwcyIsImFsbFR4bnMiLCJ0eG5Hcm91cCIsInR4bklzcmFlbCIsInB1c2giLCJ0eG5BYnJvYWQiLCJjb21iaW5lSW5zdGFsbG1lbnRzIiwiZml4SW5zdGFsbG1lbnRzIiwib3V0cHV0RGF0YSIsImVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZSIsImZpbHRlck9sZFRyYW5zYWN0aW9ucyIsImdldFRyYW5zYWN0aW9uRXh0cmFEZXRhaWxzIiwiYWNjb3VudEluZGV4IiwidHJhbnNhY3Rpb24iLCJtb2VkQ2hpdXYiLCJnZXRFeHRyYVNjcmFwVHJhbnNhY3Rpb24iLCJkYXRhIiwicmF3Q2F0ZWdvcnkiLCJjYXRlZ29yeSIsInRyaW0iLCJnZXRFeHRyYVNjcmFwVHJhbnNhY3Rpb25zIiwiYWNjb3VudFdpdGhJbmRleCIsInByb21pc2VzIiwidCIsIlByb21pc2UiLCJhbGwiLCJnZXRFeHRyYVNjcmFwQWNjb3VudCIsImFjY291bnRNYXAiLCJPYmplY3QiLCJrZXlzIiwiYSIsInJlZHVjZSIsIm0iLCJ4IiwiZ2V0RXh0cmFTY3JhcCIsImFjY291bnRzV2l0aEluZGV4IiwiYWxsTW9udGhzIiwiYWN0aW9ucyIsImkiLCJydW5TZXJpYWwiLCJmZXRjaEFsbFRyYW5zYWN0aW9ucyIsImZ1dHVyZU1vbnRoc1RvU2NyYXBlIiwiZ2V0QWxsTW9udGhNb21lbnRzIiwicmVzdWx0cyIsImZpbmFsUmVzdWx0IiwiYWRkaXRpb25hbFRyYW5zYWN0aW9uSW5mb3JtYXRpb24iLCJjb21iaW5lZFR4bnMiLCJ0eG5zRm9yQWNjb3VudCIsInRvQmVBZGRlZFR4bnMiLCJzdWNjZXNzIiwiSXNyYWNhcmRBbWV4QmFzZVNjcmFwZXIiLCJCYXNlU2NyYXBlcldpdGhCcm93c2VyIiwiY29uc3RydWN0b3IiLCJiYXNlVXJsIiwiY29tcGFueUNvZGUiLCJsb2dpbiIsImNyZWRlbnRpYWxzIiwic2V0UmVxdWVzdEludGVyY2VwdGlvbiIsIm9uIiwicmVxdWVzdCIsImFib3J0IiwiaW50ZXJjZXB0aW9uUHJpb3JpdGllcyIsImNvbnRpbnVlIiwibWFza0hlYWRsZXNzVXNlckFnZW50IiwibmF2aWdhdGVUbyIsImVtaXRQcm9ncmVzcyIsIlNjcmFwZXJQcm9ncmVzc1R5cGVzIiwiTG9nZ2luZ0luIiwidmFsaWRhdGVVcmwiLCJ2YWxpZGF0ZVJlcXVlc3QiLCJpZCIsImNhcmRTdWZmaXgiLCJjYXJkNkRpZ2l0cyIsImNvdW50cnlDb2RlIiwiaWRUeXBlIiwiY2hlY2tMZXZlbCIsInZhbGlkYXRlUmVzdWx0IiwiZmV0Y2hQb3N0V2l0aGluUGFnZSIsIkhlYWRlciIsIlN0YXR1cyIsIlZhbGlkYXRlSWREYXRhQmVhbiIsIkVycm9yIiwidmFsaWRhdGVSZXR1cm5Db2RlIiwicmV0dXJuQ29kZSIsInVzZXJOYW1lIiwibG9naW5VcmwiLCJLb2RNaXNodGFtZXNoIiwiTWlzcGFyWmlodXkiLCJTaXNtYSIsInBhc3N3b3JkIiwibG9naW5SZXN1bHQiLCJMb2dpblN1Y2Nlc3MiLCJDaGFuZ2VQYXNzd29yZCIsImVycm9yVHlwZSIsIlNjcmFwZXJFcnJvclR5cGVzIiwiTG9naW5GYWlsZWQiLCJJbnZhbGlkUGFzc3dvcmQiLCJmZXRjaERhdGEiLCJkZWZhdWx0U3RhcnRNb21lbnQiLCJzdWJ0cmFjdCIsInN0YXJ0RGF0ZSIsInRvRGF0ZSIsIm1heCIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9iYXNlLWlzcmFjYXJkLWFtZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBtb21lbnQsIHsgdHlwZSBNb21lbnQgfSBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgdHlwZSBQYWdlIH0gZnJvbSAncHVwcGV0ZWVyLWNvcmUnO1xuaW1wb3J0IHsgQUxUX1NIRUtFTF9DVVJSRU5DWSwgU0hFS0VMX0NVUlJFTkNZLCBTSEVLRUxfQ1VSUkVOQ1lfS0VZV09SRCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBTY3JhcGVyUHJvZ3Jlc3NUeXBlcyB9IGZyb20gJy4uL2RlZmluaXRpb25zJztcbmltcG9ydCBnZXRBbGxNb250aE1vbWVudHMgZnJvbSAnLi4vaGVscGVycy9kYXRlcyc7XG5pbXBvcnQgeyBnZXREZWJ1ZyB9IGZyb20gJy4uL2hlbHBlcnMvZGVidWcnO1xuaW1wb3J0IHsgZmV0Y2hHZXRXaXRoaW5QYWdlLCBmZXRjaFBvc3RXaXRoaW5QYWdlIH0gZnJvbSAnLi4vaGVscGVycy9mZXRjaCc7XG5pbXBvcnQgeyBmaWx0ZXJPbGRUcmFuc2FjdGlvbnMsIGZpeEluc3RhbGxtZW50cyB9IGZyb20gJy4uL2hlbHBlcnMvdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IHJ1blNlcmlhbCB9IGZyb20gJy4uL2hlbHBlcnMvd2FpdGluZyc7XG5pbXBvcnQge1xuICBUcmFuc2FjdGlvblN0YXR1c2VzLFxuICBUcmFuc2FjdGlvblR5cGVzLFxuICB0eXBlIFRyYW5zYWN0aW9uLFxuICB0eXBlIFRyYW5zYWN0aW9uSW5zdGFsbG1lbnRzLFxuICB0eXBlIFRyYW5zYWN0aW9uc0FjY291bnQsXG59IGZyb20gJy4uL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBCYXNlU2NyYXBlcldpdGhCcm93c2VyIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXItd2l0aC1icm93c2VyJztcbmltcG9ydCB7IFNjcmFwZXJFcnJvclR5cGVzIH0gZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IHsgdHlwZSBTY3JhcGVyT3B0aW9ucywgdHlwZSBTY3JhcGVyU2NyYXBpbmdSZXN1bHQgfSBmcm9tICcuL2ludGVyZmFjZSc7XG5pbXBvcnQgeyBpbnRlcmNlcHRpb25Qcmlvcml0aWVzLCBtYXNrSGVhZGxlc3NVc2VyQWdlbnQgfSBmcm9tICcuLi9oZWxwZXJzL2Jyb3dzZXInO1xuXG5jb25zdCBDT1VOVFJZX0NPREUgPSAnMjEyJztcbmNvbnN0IElEX1RZUEUgPSAnMSc7XG5jb25zdCBJTlNUQUxMTUVOVFNfS0VZV09SRCA9ICfXqtep15zXldedJztcblxuY29uc3QgREFURV9GT1JNQVQgPSAnREQvTU0vWVlZWSc7XG5cbmNvbnN0IGRlYnVnID0gZ2V0RGVidWcoJ2Jhc2UtaXNyYWNhcmQtYW1leCcpO1xuXG50eXBlIENvbXBhbnlTZXJ2aWNlT3B0aW9ucyA9IHtcbiAgc2VydmljZXNVcmw6IHN0cmluZztcbiAgY29tcGFueUNvZGU6IHN0cmluZztcbn07XG5cbnR5cGUgU2NyYXBlZEFjY291bnRzV2l0aEluZGV4ID0gUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25zQWNjb3VudCAmIHsgaW5kZXg6IG51bWJlciB9PjtcblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbiB7XG4gIGRlYWxTdW1UeXBlOiBzdHJpbmc7XG4gIHZvdWNoZXJOdW1iZXJSYXR6T3V0Ym91bmQ6IHN0cmluZztcbiAgdm91Y2hlck51bWJlclJhdHo6IHN0cmluZztcbiAgbW9yZUluZm8/OiBzdHJpbmc7XG4gIGRlYWxTdW1PdXRib3VuZDogYm9vbGVhbjtcbiAgY3VycmVuY3lJZDogc3RyaW5nO1xuICBjdXJyZW50UGF5bWVudEN1cnJlbmN5OiBzdHJpbmc7XG4gIGRlYWxTdW06IG51bWJlcjtcbiAgZnVsbFBheW1lbnREYXRlPzogc3RyaW5nO1xuICBmdWxsUHVyY2hhc2VEYXRlPzogc3RyaW5nO1xuICBmdWxsUHVyY2hhc2VEYXRlT3V0Ym91bmQ/OiBzdHJpbmc7XG4gIGZ1bGxTdXBwbGllck5hbWVIZWI6IHN0cmluZztcbiAgZnVsbFN1cHBsaWVyTmFtZU91dGJvdW5kOiBzdHJpbmc7XG4gIHBheW1lbnRTdW06IG51bWJlcjtcbiAgcGF5bWVudFN1bU91dGJvdW5kOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBTY3JhcGVkQWNjb3VudCB7XG4gIGluZGV4OiBudW1iZXI7XG4gIGFjY291bnROdW1iZXI6IHN0cmluZztcbiAgcHJvY2Vzc2VkRGF0ZTogc3RyaW5nO1xufVxuXG5pbnRlcmZhY2UgU2NyYXBlZExvZ2luVmFsaWRhdGlvbiB7XG4gIEhlYWRlcjoge1xuICAgIFN0YXR1czogc3RyaW5nO1xuICB9O1xuICBWYWxpZGF0ZUlkRGF0YUJlYW4/OiB7XG4gICAgdXNlck5hbWU/OiBzdHJpbmc7XG4gICAgcmV0dXJuQ29kZTogc3RyaW5nO1xuICB9O1xufVxuXG5pbnRlcmZhY2UgU2NyYXBlZEFjY291bnRzV2l0aGluUGFnZVJlc3BvbnNlIHtcbiAgSGVhZGVyOiB7XG4gICAgU3RhdHVzOiBzdHJpbmc7XG4gIH07XG4gIERhc2hib2FyZE1vbnRoQmVhbj86IHtcbiAgICBjYXJkc0NoYXJnZXM6IHtcbiAgICAgIGNhcmRJbmRleDogc3RyaW5nO1xuICAgICAgY2FyZE51bWJlcjogc3RyaW5nO1xuICAgICAgYmlsbGluZ0RhdGU6IHN0cmluZztcbiAgICB9W107XG4gIH07XG59XG5cbmludGVyZmFjZSBTY3JhcGVkQ3VycmVudENhcmRUcmFuc2FjdGlvbnMge1xuICB0eG5Jc3JhZWw/OiBTY3JhcGVkVHJhbnNhY3Rpb25bXTtcbiAgdHhuQWJyb2FkPzogU2NyYXBlZFRyYW5zYWN0aW9uW107XG59XG5cbmludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb25EYXRhIHtcbiAgSGVhZGVyPzoge1xuICAgIFN0YXR1czogc3RyaW5nO1xuICB9O1xuICBQaXJ0ZXlJc2thXzIwNEJlYW4/OiB7XG4gICAgc2VjdG9yOiBzdHJpbmc7XG4gIH07XG5cbiAgQ2FyZHNUcmFuc2FjdGlvbnNMaXN0QmVhbj86IFJlY29yZDxcbiAgICBzdHJpbmcsXG4gICAge1xuICAgICAgQ3VycmVudENhcmRUcmFuc2FjdGlvbnM6IFNjcmFwZWRDdXJyZW50Q2FyZFRyYW5zYWN0aW9uc1tdO1xuICAgIH1cbiAgPjtcbn1cblxuZnVuY3Rpb24gZ2V0QWNjb3VudHNVcmwoc2VydmljZXNVcmw6IHN0cmluZywgbW9udGhNb21lbnQ6IE1vbWVudCkge1xuICBjb25zdCBiaWxsaW5nRGF0ZSA9IG1vbnRoTW9tZW50LmZvcm1hdCgnWVlZWS1NTS1ERCcpO1xuICBjb25zdCB1cmwgPSBuZXcgVVJMKHNlcnZpY2VzVXJsKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3JlcU5hbWUnLCAnRGFzaGJvYXJkTW9udGgnKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ2FjdGlvbkNvZGUnLCAnMCcpO1xuICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnYmlsbGluZ0RhdGUnLCBiaWxsaW5nRGF0ZSk7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdmb3JtYXQnLCAnSnNvbicpO1xuICByZXR1cm4gdXJsLnRvU3RyaW5nKCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoQWNjb3VudHMocGFnZTogUGFnZSwgc2VydmljZXNVcmw6IHN0cmluZywgbW9udGhNb21lbnQ6IE1vbWVudCk6IFByb21pc2U8U2NyYXBlZEFjY291bnRbXT4ge1xuICBjb25zdCBkYXRhVXJsID0gZ2V0QWNjb3VudHNVcmwoc2VydmljZXNVcmwsIG1vbnRoTW9tZW50KTtcbiAgY29uc3QgZGF0YVJlc3VsdCA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxTY3JhcGVkQWNjb3VudHNXaXRoaW5QYWdlUmVzcG9uc2U+KHBhZ2UsIGRhdGFVcmwpO1xuICBpZiAoZGF0YVJlc3VsdCAmJiBfLmdldChkYXRhUmVzdWx0LCAnSGVhZGVyLlN0YXR1cycpID09PSAnMScgJiYgZGF0YVJlc3VsdC5EYXNoYm9hcmRNb250aEJlYW4pIHtcbiAgICBjb25zdCB7IGNhcmRzQ2hhcmdlcyB9ID0gZGF0YVJlc3VsdC5EYXNoYm9hcmRNb250aEJlYW47XG4gICAgaWYgKGNhcmRzQ2hhcmdlcykge1xuICAgICAgcmV0dXJuIGNhcmRzQ2hhcmdlcy5tYXAoY2FyZENoYXJnZSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgaW5kZXg6IHBhcnNlSW50KGNhcmRDaGFyZ2UuY2FyZEluZGV4LCAxMCksXG4gICAgICAgICAgYWNjb3VudE51bWJlcjogY2FyZENoYXJnZS5jYXJkTnVtYmVyLFxuICAgICAgICAgIHByb2Nlc3NlZERhdGU6IG1vbWVudChjYXJkQ2hhcmdlLmJpbGxpbmdEYXRlLCBEQVRFX0ZPUk1BVCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gW107XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uc1VybChzZXJ2aWNlc1VybDogc3RyaW5nLCBtb250aE1vbWVudDogTW9tZW50KSB7XG4gIGNvbnN0IG1vbnRoID0gbW9udGhNb21lbnQubW9udGgoKSArIDE7XG4gIGNvbnN0IHllYXIgPSBtb250aE1vbWVudC55ZWFyKCk7XG4gIGNvbnN0IG1vbnRoU3RyID0gbW9udGggPCAxMCA/IGAwJHttb250aH1gIDogbW9udGgudG9TdHJpbmcoKTtcbiAgY29uc3QgdXJsID0gbmV3IFVSTChzZXJ2aWNlc1VybCk7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KCdyZXFOYW1lJywgJ0NhcmRzVHJhbnNhY3Rpb25zTGlzdCcpO1xuICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnbW9udGgnLCBtb250aFN0cik7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KCd5ZWFyJywgYCR7eWVhcn1gKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3JlcXVpcmVkRGF0ZScsICdOJyk7XG4gIHJldHVybiB1cmwudG9TdHJpbmcoKTtcbn1cblxuZnVuY3Rpb24gY29udmVydEN1cnJlbmN5KGN1cnJlbmN5U3RyOiBzdHJpbmcpIHtcbiAgaWYgKGN1cnJlbmN5U3RyID09PSBTSEVLRUxfQ1VSUkVOQ1lfS0VZV09SRCB8fCBjdXJyZW5jeVN0ciA9PT0gQUxUX1NIRUtFTF9DVVJSRU5DWSkge1xuICAgIHJldHVybiBTSEVLRUxfQ1VSUkVOQ1k7XG4gIH1cbiAgcmV0dXJuIGN1cnJlbmN5U3RyO1xufVxuXG5mdW5jdGlvbiBnZXRJbnN0YWxsbWVudHNJbmZvKHR4bjogU2NyYXBlZFRyYW5zYWN0aW9uKTogVHJhbnNhY3Rpb25JbnN0YWxsbWVudHMgfCB1bmRlZmluZWQge1xuICBpZiAoIXR4bi5tb3JlSW5mbyB8fCAhdHhuLm1vcmVJbmZvLmluY2x1ZGVzKElOU1RBTExNRU5UU19LRVlXT1JEKSkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgbWF0Y2hlcyA9IHR4bi5tb3JlSW5mby5tYXRjaCgvXFxkKy9nKTtcbiAgaWYgKCFtYXRjaGVzIHx8IG1hdGNoZXMubGVuZ3RoIDwgMikge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG51bWJlcjogcGFyc2VJbnQobWF0Y2hlc1swXSwgMTApLFxuICAgIHRvdGFsOiBwYXJzZUludChtYXRjaGVzWzFdLCAxMCksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdldFRyYW5zYWN0aW9uVHlwZSh0eG46IFNjcmFwZWRUcmFuc2FjdGlvbikge1xuICByZXR1cm4gZ2V0SW5zdGFsbG1lbnRzSW5mbyh0eG4pID8gVHJhbnNhY3Rpb25UeXBlcy5JbnN0YWxsbWVudHMgOiBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbDtcbn1cblxuZnVuY3Rpb24gY29udmVydFRyYW5zYWN0aW9ucyh0eG5zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXSwgcHJvY2Vzc2VkRGF0ZTogc3RyaW5nKTogVHJhbnNhY3Rpb25bXSB7XG4gIGNvbnN0IGZpbHRlcmVkVHhucyA9IHR4bnMuZmlsdGVyKFxuICAgIHR4biA9PlxuICAgICAgdHhuLmRlYWxTdW1UeXBlICE9PSAnMScgJiYgdHhuLnZvdWNoZXJOdW1iZXJSYXR6ICE9PSAnMDAwMDAwMDAwJyAmJiB0eG4udm91Y2hlck51bWJlclJhdHpPdXRib3VuZCAhPT0gJzAwMDAwMDAwMCcsXG4gICk7XG5cbiAgcmV0dXJuIGZpbHRlcmVkVHhucy5tYXAodHhuID0+IHtcbiAgICBjb25zdCBpc091dGJvdW5kID0gdHhuLmRlYWxTdW1PdXRib3VuZDtcbiAgICBjb25zdCB0eG5EYXRlU3RyID0gaXNPdXRib3VuZCA/IHR4bi5mdWxsUHVyY2hhc2VEYXRlT3V0Ym91bmQgOiB0eG4uZnVsbFB1cmNoYXNlRGF0ZTtcbiAgICBjb25zdCB0eG5Nb21lbnQgPSBtb21lbnQodHhuRGF0ZVN0ciwgREFURV9GT1JNQVQpO1xuXG4gICAgY29uc3QgY3VycmVudFByb2Nlc3NlZERhdGUgPSB0eG4uZnVsbFBheW1lbnREYXRlXG4gICAgICA/IG1vbWVudCh0eG4uZnVsbFBheW1lbnREYXRlLCBEQVRFX0ZPUk1BVCkudG9JU09TdHJpbmcoKVxuICAgICAgOiBwcm9jZXNzZWREYXRlO1xuICAgIGNvbnN0IHJlc3VsdDogVHJhbnNhY3Rpb24gPSB7XG4gICAgICB0eXBlOiBnZXRUcmFuc2FjdGlvblR5cGUodHhuKSxcbiAgICAgIGlkZW50aWZpZXI6IHBhcnNlSW50KGlzT3V0Ym91bmQgPyB0eG4udm91Y2hlck51bWJlclJhdHpPdXRib3VuZCA6IHR4bi52b3VjaGVyTnVtYmVyUmF0eiwgMTApLFxuICAgICAgZGF0ZTogdHhuTW9tZW50LnRvSVNPU3RyaW5nKCksXG4gICAgICBwcm9jZXNzZWREYXRlOiBjdXJyZW50UHJvY2Vzc2VkRGF0ZSxcbiAgICAgIG9yaWdpbmFsQW1vdW50OiBpc091dGJvdW5kID8gLXR4bi5kZWFsU3VtT3V0Ym91bmQgOiAtdHhuLmRlYWxTdW0sXG4gICAgICBvcmlnaW5hbEN1cnJlbmN5OiBjb252ZXJ0Q3VycmVuY3kodHhuLmN1cnJlbnRQYXltZW50Q3VycmVuY3kgPz8gdHhuLmN1cnJlbmN5SWQpLFxuICAgICAgY2hhcmdlZEFtb3VudDogaXNPdXRib3VuZCA/IC10eG4ucGF5bWVudFN1bU91dGJvdW5kIDogLXR4bi5wYXltZW50U3VtLFxuICAgICAgY2hhcmdlZEN1cnJlbmN5OiBjb252ZXJ0Q3VycmVuY3kodHhuLmN1cnJlbmN5SWQpLFxuICAgICAgZGVzY3JpcHRpb246IGlzT3V0Ym91bmQgPyB0eG4uZnVsbFN1cHBsaWVyTmFtZU91dGJvdW5kIDogdHhuLmZ1bGxTdXBwbGllck5hbWVIZWIsXG4gICAgICBtZW1vOiB0eG4ubW9yZUluZm8gfHwgJycsXG4gICAgICBpbnN0YWxsbWVudHM6IGdldEluc3RhbGxtZW50c0luZm8odHhuKSB8fCB1bmRlZmluZWQsXG4gICAgICBzdGF0dXM6IFRyYW5zYWN0aW9uU3RhdHVzZXMuQ29tcGxldGVkLFxuICAgIH07XG5cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hUcmFuc2FjdGlvbnMoXG4gIHBhZ2U6IFBhZ2UsXG4gIG9wdGlvbnM6IFNjcmFwZXJPcHRpb25zLFxuICBjb21wYW55U2VydmljZU9wdGlvbnM6IENvbXBhbnlTZXJ2aWNlT3B0aW9ucyxcbiAgc3RhcnRNb21lbnQ6IE1vbWVudCxcbiAgbW9udGhNb21lbnQ6IE1vbWVudCxcbik6IFByb21pc2U8U2NyYXBlZEFjY291bnRzV2l0aEluZGV4PiB7XG4gIGNvbnN0IGFjY291bnRzID0gYXdhaXQgZmV0Y2hBY2NvdW50cyhwYWdlLCBjb21wYW55U2VydmljZU9wdGlvbnMuc2VydmljZXNVcmwsIG1vbnRoTW9tZW50KTtcbiAgY29uc3QgZGF0YVVybCA9IGdldFRyYW5zYWN0aW9uc1VybChjb21wYW55U2VydmljZU9wdGlvbnMuc2VydmljZXNVcmwsIG1vbnRoTW9tZW50KTtcbiAgY29uc3QgZGF0YVJlc3VsdCA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxTY3JhcGVkVHJhbnNhY3Rpb25EYXRhPihwYWdlLCBkYXRhVXJsKTtcbiAgaWYgKGRhdGFSZXN1bHQgJiYgXy5nZXQoZGF0YVJlc3VsdCwgJ0hlYWRlci5TdGF0dXMnKSA9PT0gJzEnICYmIGRhdGFSZXN1bHQuQ2FyZHNUcmFuc2FjdGlvbnNMaXN0QmVhbikge1xuICAgIGNvbnN0IGFjY291bnRUeG5zOiBTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXggPSB7fTtcbiAgICBhY2NvdW50cy5mb3JFYWNoKGFjY291bnQgPT4ge1xuICAgICAgY29uc3QgdHhuR3JvdXBzOiBTY3JhcGVkQ3VycmVudENhcmRUcmFuc2FjdGlvbnNbXSB8IHVuZGVmaW5lZCA9IF8uZ2V0KFxuICAgICAgICBkYXRhUmVzdWx0LFxuICAgICAgICBgQ2FyZHNUcmFuc2FjdGlvbnNMaXN0QmVhbi5JbmRleCR7YWNjb3VudC5pbmRleH0uQ3VycmVudENhcmRUcmFuc2FjdGlvbnNgLFxuICAgICAgKTtcbiAgICAgIGlmICh0eG5Hcm91cHMpIHtcbiAgICAgICAgbGV0IGFsbFR4bnM6IFRyYW5zYWN0aW9uW10gPSBbXTtcbiAgICAgICAgdHhuR3JvdXBzLmZvckVhY2godHhuR3JvdXAgPT4ge1xuICAgICAgICAgIGlmICh0eG5Hcm91cC50eG5Jc3JhZWwpIHtcbiAgICAgICAgICAgIGNvbnN0IHR4bnMgPSBjb252ZXJ0VHJhbnNhY3Rpb25zKHR4bkdyb3VwLnR4bklzcmFlbCwgYWNjb3VudC5wcm9jZXNzZWREYXRlKTtcbiAgICAgICAgICAgIGFsbFR4bnMucHVzaCguLi50eG5zKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHR4bkdyb3VwLnR4bkFicm9hZCkge1xuICAgICAgICAgICAgY29uc3QgdHhucyA9IGNvbnZlcnRUcmFuc2FjdGlvbnModHhuR3JvdXAudHhuQWJyb2FkLCBhY2NvdW50LnByb2Nlc3NlZERhdGUpO1xuICAgICAgICAgICAgYWxsVHhucy5wdXNoKC4uLnR4bnMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFvcHRpb25zLmNvbWJpbmVJbnN0YWxsbWVudHMpIHtcbiAgICAgICAgICBhbGxUeG5zID0gZml4SW5zdGFsbG1lbnRzKGFsbFR4bnMpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLm91dHB1dERhdGE/LmVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZSA/PyB0cnVlKSB7XG4gICAgICAgICAgYWxsVHhucyA9IGZpbHRlck9sZFRyYW5zYWN0aW9ucyhhbGxUeG5zLCBzdGFydE1vbWVudCwgb3B0aW9ucy5jb21iaW5lSW5zdGFsbG1lbnRzIHx8IGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICBhY2NvdW50VHhuc1thY2NvdW50LmFjY291bnROdW1iZXJdID0ge1xuICAgICAgICAgIGFjY291bnROdW1iZXI6IGFjY291bnQuYWNjb3VudE51bWJlcixcbiAgICAgICAgICBpbmRleDogYWNjb3VudC5pbmRleCxcbiAgICAgICAgICB0eG5zOiBhbGxUeG5zLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBhY2NvdW50VHhucztcbiAgfVxuXG4gIHJldHVybiB7fTtcbn1cblxuZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25FeHRyYURldGFpbHMoXG4gIHNlcnZpY2VzVXJsOiBzdHJpbmcsXG4gIG1vbnRoOiBNb21lbnQsXG4gIGFjY291bnRJbmRleDogbnVtYmVyLFxuICB0cmFuc2FjdGlvbjogVHJhbnNhY3Rpb24sXG4pOiBzdHJpbmcge1xuICBjb25zdCBtb2VkQ2hpdXYgPSBtb250aC5mb3JtYXQoJ01NWVlZWScpO1xuICBjb25zdCB1cmwgPSBuZXcgVVJMKHNlcnZpY2VzVXJsKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3JlcU5hbWUnLCAnUGlydGV5SXNrYV8yMDQnKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ0NhcmRJbmRleCcsIGFjY291bnRJbmRleC50b1N0cmluZygpKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ3Nob3ZhclJhdHonLCB0cmFuc2FjdGlvbi5pZGVudGlmaWVyIS50b1N0cmluZygpKTtcbiAgdXJsLnNlYXJjaFBhcmFtcy5zZXQoJ21vZWRDaGl1dicsIG1vZWRDaGl1dik7XG4gIHJldHVybiB1cmwudG9TdHJpbmcoKTtcbn1cbmFzeW5jIGZ1bmN0aW9uIGdldEV4dHJhU2NyYXBUcmFuc2FjdGlvbihcbiAgcGFnZTogUGFnZSxcbiAgb3B0aW9uczogQ29tcGFueVNlcnZpY2VPcHRpb25zLFxuICBtb250aDogTW9tZW50LFxuICBhY2NvdW50SW5kZXg6IG51bWJlcixcbiAgdHJhbnNhY3Rpb246IFRyYW5zYWN0aW9uLFxuKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICBjb25zdCBkYXRhVXJsID0gZ2V0VHJhbnNhY3Rpb25FeHRyYURldGFpbHMob3B0aW9ucy5zZXJ2aWNlc1VybCwgbW9udGgsIGFjY291bnRJbmRleCwgdHJhbnNhY3Rpb24pO1xuICBjb25zdCBkYXRhID0gYXdhaXQgZmV0Y2hHZXRXaXRoaW5QYWdlPFNjcmFwZWRUcmFuc2FjdGlvbkRhdGE+KHBhZ2UsIGRhdGFVcmwpO1xuXG4gIGlmICghZGF0YSkge1xuICAgIHJldHVybiB0cmFuc2FjdGlvbjtcbiAgfVxuXG4gIGNvbnN0IHJhd0NhdGVnb3J5ID0gXy5nZXQoZGF0YSwgJ1BpcnRleUlza2FfMjA0QmVhbi5zZWN0b3InKSA/PyAnJztcbiAgcmV0dXJuIHtcbiAgICAuLi50cmFuc2FjdGlvbixcbiAgICBjYXRlZ29yeTogcmF3Q2F0ZWdvcnkudHJpbSgpLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRFeHRyYVNjcmFwVHJhbnNhY3Rpb25zKFxuICBhY2NvdW50V2l0aEluZGV4OiBUcmFuc2FjdGlvbnNBY2NvdW50ICYgeyBpbmRleDogbnVtYmVyIH0sXG4gIHBhZ2U6IFBhZ2UsXG4gIG9wdGlvbnM6IENvbXBhbnlTZXJ2aWNlT3B0aW9ucyxcbiAgbW9udGg6IG1vbWVudC5Nb21lbnQsXG4pOiBQcm9taXNlPFRyYW5zYWN0aW9uW10+IHtcbiAgY29uc3QgcHJvbWlzZXMgPSBhY2NvdW50V2l0aEluZGV4LnR4bnMubWFwKHQgPT5cbiAgICBnZXRFeHRyYVNjcmFwVHJhbnNhY3Rpb24ocGFnZSwgb3B0aW9ucywgbW9udGgsIGFjY291bnRXaXRoSW5kZXguaW5kZXgsIHQpLFxuICApO1xuICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRFeHRyYVNjcmFwQWNjb3VudChcbiAgcGFnZTogUGFnZSxcbiAgb3B0aW9uczogQ29tcGFueVNlcnZpY2VPcHRpb25zLFxuICBhY2NvdW50TWFwOiBTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXgsXG4gIG1vbnRoOiBtb21lbnQuTW9tZW50LFxuKTogUHJvbWlzZTxTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXg+IHtcbiAgY29uc3QgcHJvbWlzZXMgPSBPYmplY3Qua2V5cyhhY2NvdW50TWFwKS5tYXAoYXN5bmMgYSA9PiAoe1xuICAgIC4uLmFjY291bnRNYXBbYV0sXG4gICAgdHhuczogYXdhaXQgZ2V0RXh0cmFTY3JhcFRyYW5zYWN0aW9ucyhhY2NvdW50TWFwW2FdLCBwYWdlLCBvcHRpb25zLCBtb250aCksXG4gIH0pKTtcbiAgY29uc3QgYWNjb3VudHMgPSBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcyk7XG4gIHJldHVybiBhY2NvdW50cy5yZWR1Y2UoKG0sIHgpID0+ICh7IC4uLm0sIFt4LmFjY291bnROdW1iZXJdOiB4IH0pLCB7fSk7XG59XG5cbmZ1bmN0aW9uIGdldEV4dHJhU2NyYXAoXG4gIGFjY291bnRzV2l0aEluZGV4OiBTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXhbXSxcbiAgcGFnZTogUGFnZSxcbiAgb3B0aW9uczogQ29tcGFueVNlcnZpY2VPcHRpb25zLFxuICBhbGxNb250aHM6IG1vbWVudC5Nb21lbnRbXSxcbik6IFByb21pc2U8U2NyYXBlZEFjY291bnRzV2l0aEluZGV4W10+IHtcbiAgY29uc3QgYWN0aW9ucyA9IGFjY291bnRzV2l0aEluZGV4Lm1hcCgoYSwgaSkgPT4gKCkgPT4gZ2V0RXh0cmFTY3JhcEFjY291bnQocGFnZSwgb3B0aW9ucywgYSwgYWxsTW9udGhzW2ldKSk7XG4gIHJldHVybiBydW5TZXJpYWwoYWN0aW9ucyk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoQWxsVHJhbnNhY3Rpb25zKFxuICBwYWdlOiBQYWdlLFxuICBvcHRpb25zOiBTY3JhcGVyT3B0aW9ucyxcbiAgY29tcGFueVNlcnZpY2VPcHRpb25zOiBDb21wYW55U2VydmljZU9wdGlvbnMsXG4gIHN0YXJ0TW9tZW50OiBNb21lbnQsXG4pIHtcbiAgY29uc3QgZnV0dXJlTW9udGhzVG9TY3JhcGUgPSBvcHRpb25zLmZ1dHVyZU1vbnRoc1RvU2NyYXBlID8/IDE7XG4gIGNvbnN0IGFsbE1vbnRocyA9IGdldEFsbE1vbnRoTW9tZW50cyhzdGFydE1vbWVudCwgZnV0dXJlTW9udGhzVG9TY3JhcGUpO1xuICBjb25zdCByZXN1bHRzOiBTY3JhcGVkQWNjb3VudHNXaXRoSW5kZXhbXSA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgIGFsbE1vbnRocy5tYXAoYXN5bmMgbW9udGhNb21lbnQgPT4ge1xuICAgICAgcmV0dXJuIGZldGNoVHJhbnNhY3Rpb25zKHBhZ2UsIG9wdGlvbnMsIGNvbXBhbnlTZXJ2aWNlT3B0aW9ucywgc3RhcnRNb21lbnQsIG1vbnRoTW9tZW50KTtcbiAgICB9KSxcbiAgKTtcblxuICBjb25zdCBmaW5hbFJlc3VsdCA9IG9wdGlvbnMuYWRkaXRpb25hbFRyYW5zYWN0aW9uSW5mb3JtYXRpb25cbiAgICA/IGF3YWl0IGdldEV4dHJhU2NyYXAocmVzdWx0cywgcGFnZSwgY29tcGFueVNlcnZpY2VPcHRpb25zLCBhbGxNb250aHMpXG4gICAgOiByZXN1bHRzO1xuXG4gIGNvbnN0IGNvbWJpbmVkVHhuczogUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25bXT4gPSB7fTtcblxuICBmaW5hbFJlc3VsdC5mb3JFYWNoKHJlc3VsdCA9PiB7XG4gICAgT2JqZWN0LmtleXMocmVzdWx0KS5mb3JFYWNoKGFjY291bnROdW1iZXIgPT4ge1xuICAgICAgbGV0IHR4bnNGb3JBY2NvdW50ID0gY29tYmluZWRUeG5zW2FjY291bnROdW1iZXJdO1xuICAgICAgaWYgKCF0eG5zRm9yQWNjb3VudCkge1xuICAgICAgICB0eG5zRm9yQWNjb3VudCA9IFtdO1xuICAgICAgICBjb21iaW5lZFR4bnNbYWNjb3VudE51bWJlcl0gPSB0eG5zRm9yQWNjb3VudDtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHRvQmVBZGRlZFR4bnMgPSByZXN1bHRbYWNjb3VudE51bWJlcl0udHhucztcbiAgICAgIGNvbWJpbmVkVHhuc1thY2NvdW50TnVtYmVyXS5wdXNoKC4uLnRvQmVBZGRlZFR4bnMpO1xuICAgIH0pO1xuICB9KTtcblxuICBjb25zdCBhY2NvdW50cyA9IE9iamVjdC5rZXlzKGNvbWJpbmVkVHhucykubWFwKGFjY291bnROdW1iZXIgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBhY2NvdW50TnVtYmVyLFxuICAgICAgdHhuczogY29tYmluZWRUeG5zW2FjY291bnROdW1iZXJdLFxuICAgIH07XG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgc3VjY2VzczogdHJ1ZSxcbiAgICBhY2NvdW50cyxcbiAgfTtcbn1cblxudHlwZSBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyA9IHsgaWQ6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZzsgY2FyZDZEaWdpdHM6IHN0cmluZyB9O1xuY2xhc3MgSXNyYWNhcmRBbWV4QmFzZVNjcmFwZXIgZXh0ZW5kcyBCYXNlU2NyYXBlcldpdGhCcm93c2VyPFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzPiB7XG4gIHByaXZhdGUgYmFzZVVybDogc3RyaW5nO1xuXG4gIHByaXZhdGUgY29tcGFueUNvZGU6IHN0cmluZztcblxuICBwcml2YXRlIHNlcnZpY2VzVXJsOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogU2NyYXBlck9wdGlvbnMsIGJhc2VVcmw6IHN0cmluZywgY29tcGFueUNvZGU6IHN0cmluZykge1xuICAgIHN1cGVyKG9wdGlvbnMpO1xuXG4gICAgdGhpcy5iYXNlVXJsID0gYmFzZVVybDtcbiAgICB0aGlzLmNvbXBhbnlDb2RlID0gY29tcGFueUNvZGU7XG4gICAgdGhpcy5zZXJ2aWNlc1VybCA9IGAke2Jhc2VVcmx9L3NlcnZpY2VzL1Byb3h5UmVxdWVzdEhhbmRsZXIuYXNoeGA7XG4gIH1cblxuICBhc3luYyBsb2dpbihjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpOiBQcm9taXNlPFNjcmFwZXJTY3JhcGluZ1Jlc3VsdD4ge1xuICAgIGF3YWl0IHRoaXMucGFnZS5zZXRSZXF1ZXN0SW50ZXJjZXB0aW9uKHRydWUpO1xuICAgIHRoaXMucGFnZS5vbigncmVxdWVzdCcsIHJlcXVlc3QgPT4ge1xuICAgICAgaWYgKHJlcXVlc3QudXJsKCkuaW5jbHVkZXMoJ2RldGVjdG9yLWRvbS5taW4uanMnKSkge1xuICAgICAgICBkZWJ1ZygnZm9yY2UgYWJvcnQgZm9yIHJlcXVlc3QgZG8gZG93bmxvYWQgZGV0ZWN0b3ItZG9tLm1pbi5qcyByZXNvdXJjZScpO1xuICAgICAgICB2b2lkIHJlcXVlc3QuYWJvcnQodW5kZWZpbmVkLCBpbnRlcmNlcHRpb25Qcmlvcml0aWVzLmFib3J0KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZvaWQgcmVxdWVzdC5jb250aW51ZSh1bmRlZmluZWQsIGludGVyY2VwdGlvblByaW9yaXRpZXMuY29udGludWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgYXdhaXQgbWFza0hlYWRsZXNzVXNlckFnZW50KHRoaXMucGFnZSk7XG5cbiAgICBhd2FpdCB0aGlzLm5hdmlnYXRlVG8oYCR7dGhpcy5iYXNlVXJsfS9wZXJzb25hbGFyZWEvTG9naW5gKTtcblxuICAgIHRoaXMuZW1pdFByb2dyZXNzKFNjcmFwZXJQcm9ncmVzc1R5cGVzLkxvZ2dpbmdJbik7XG5cbiAgICBjb25zdCB2YWxpZGF0ZVVybCA9IGAke3RoaXMuc2VydmljZXNVcmx9P3JlcU5hbWU9VmFsaWRhdGVJZERhdGFgO1xuICAgIGNvbnN0IHZhbGlkYXRlUmVxdWVzdCA9IHtcbiAgICAgIGlkOiBjcmVkZW50aWFscy5pZCxcbiAgICAgIGNhcmRTdWZmaXg6IGNyZWRlbnRpYWxzLmNhcmQ2RGlnaXRzLFxuICAgICAgY291bnRyeUNvZGU6IENPVU5UUllfQ09ERSxcbiAgICAgIGlkVHlwZTogSURfVFlQRSxcbiAgICAgIGNoZWNrTGV2ZWw6ICcxJyxcbiAgICAgIGNvbXBhbnlDb2RlOiB0aGlzLmNvbXBhbnlDb2RlLFxuICAgIH07XG4gICAgY29uc3QgdmFsaWRhdGVSZXN1bHQgPSBhd2FpdCBmZXRjaFBvc3RXaXRoaW5QYWdlPFNjcmFwZWRMb2dpblZhbGlkYXRpb24+KHRoaXMucGFnZSwgdmFsaWRhdGVVcmwsIHZhbGlkYXRlUmVxdWVzdCk7XG4gICAgaWYgKFxuICAgICAgIXZhbGlkYXRlUmVzdWx0IHx8XG4gICAgICAhdmFsaWRhdGVSZXN1bHQuSGVhZGVyIHx8XG4gICAgICB2YWxpZGF0ZVJlc3VsdC5IZWFkZXIuU3RhdHVzICE9PSAnMScgfHxcbiAgICAgICF2YWxpZGF0ZVJlc3VsdC5WYWxpZGF0ZUlkRGF0YUJlYW5cbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndW5rbm93biBlcnJvciBkdXJpbmcgbG9naW4nKTtcbiAgICB9XG5cbiAgICBjb25zdCB2YWxpZGF0ZVJldHVybkNvZGUgPSB2YWxpZGF0ZVJlc3VsdC5WYWxpZGF0ZUlkRGF0YUJlYW4ucmV0dXJuQ29kZTtcbiAgICBkZWJ1ZyhgdXNlciB2YWxpZGF0ZSB3aXRoIHJldHVybiBjb2RlICcke3ZhbGlkYXRlUmV0dXJuQ29kZX0nYCk7XG4gICAgaWYgKHZhbGlkYXRlUmV0dXJuQ29kZSA9PT0gJzEnKSB7XG4gICAgICBjb25zdCB7IHVzZXJOYW1lIH0gPSB2YWxpZGF0ZVJlc3VsdC5WYWxpZGF0ZUlkRGF0YUJlYW47XG5cbiAgICAgIGNvbnN0IGxvZ2luVXJsID0gYCR7dGhpcy5zZXJ2aWNlc1VybH0/cmVxTmFtZT1wZXJmb3JtTG9nb25JYDtcbiAgICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICAgIEtvZE1pc2h0YW1lc2g6IHVzZXJOYW1lLFxuICAgICAgICBNaXNwYXJaaWh1eTogY3JlZGVudGlhbHMuaWQsXG4gICAgICAgIFNpc21hOiBjcmVkZW50aWFscy5wYXNzd29yZCxcbiAgICAgICAgY2FyZFN1ZmZpeDogY3JlZGVudGlhbHMuY2FyZDZEaWdpdHMsXG4gICAgICAgIGNvdW50cnlDb2RlOiBDT1VOVFJZX0NPREUsXG4gICAgICAgIGlkVHlwZTogSURfVFlQRSxcbiAgICAgIH07XG4gICAgICBjb25zdCBsb2dpblJlc3VsdCA9IGF3YWl0IGZldGNoUG9zdFdpdGhpblBhZ2U8eyBzdGF0dXM6IHN0cmluZyB9Pih0aGlzLnBhZ2UsIGxvZ2luVXJsLCByZXF1ZXN0KTtcbiAgICAgIGRlYnVnKGB1c2VyIGxvZ2luIHdpdGggc3RhdHVzICcke2xvZ2luUmVzdWx0Py5zdGF0dXN9J2ApO1xuXG4gICAgICBpZiAobG9naW5SZXN1bHQgJiYgbG9naW5SZXN1bHQuc3RhdHVzID09PSAnMScpIHtcbiAgICAgICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NyYXBlclByb2dyZXNzVHlwZXMuTG9naW5TdWNjZXNzKTtcbiAgICAgICAgcmV0dXJuIHsgc3VjY2VzczogdHJ1ZSB9O1xuICAgICAgfVxuXG4gICAgICBpZiAobG9naW5SZXN1bHQgJiYgbG9naW5SZXN1bHQuc3RhdHVzID09PSAnMycpIHtcbiAgICAgICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NyYXBlclByb2dyZXNzVHlwZXMuQ2hhbmdlUGFzc3dvcmQpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICAgIGVycm9yVHlwZTogU2NyYXBlckVycm9yVHlwZXMuQ2hhbmdlUGFzc3dvcmQsXG4gICAgICAgIH07XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZW1pdFByb2dyZXNzKFNjcmFwZXJQcm9ncmVzc1R5cGVzLkxvZ2luRmFpbGVkKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkludmFsaWRQYXNzd29yZCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKHZhbGlkYXRlUmV0dXJuQ29kZSA9PT0gJzQnKSB7XG4gICAgICB0aGlzLmVtaXRQcm9ncmVzcyhTY3JhcGVyUHJvZ3Jlc3NUeXBlcy5DaGFuZ2VQYXNzd29yZCk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgICAgZXJyb3JUeXBlOiBTY3JhcGVyRXJyb3JUeXBlcy5DaGFuZ2VQYXNzd29yZCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0UHJvZ3Jlc3MoU2NyYXBlclByb2dyZXNzVHlwZXMuTG9naW5GYWlsZWQpO1xuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgIGVycm9yVHlwZTogU2NyYXBlckVycm9yVHlwZXMuSW52YWxpZFBhc3N3b3JkLFxuICAgIH07XG4gIH1cblxuICBhc3luYyBmZXRjaERhdGEoKSB7XG4gICAgY29uc3QgZGVmYXVsdFN0YXJ0TW9tZW50ID0gbW9tZW50KCkuc3VidHJhY3QoMSwgJ3llYXJzJyk7XG4gICAgY29uc3Qgc3RhcnREYXRlID0gdGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSB8fCBkZWZhdWx0U3RhcnRNb21lbnQudG9EYXRlKCk7XG4gICAgY29uc3Qgc3RhcnRNb21lbnQgPSBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xuXG4gICAgcmV0dXJuIGZldGNoQWxsVHJhbnNhY3Rpb25zKFxuICAgICAgdGhpcy5wYWdlLFxuICAgICAgdGhpcy5vcHRpb25zLFxuICAgICAge1xuICAgICAgICBzZXJ2aWNlc1VybDogdGhpcy5zZXJ2aWNlc1VybCxcbiAgICAgICAgY29tcGFueUNvZGU6IHRoaXMuY29tcGFueUNvZGUsXG4gICAgICB9LFxuICAgICAgc3RhcnRNb21lbnQsXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBJc3JhY2FyZEFtZXhCYXNlU2NyYXBlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUUsVUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsWUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksTUFBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssTUFBQSxHQUFBTCxPQUFBO0FBQ0EsSUFBQU0sTUFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sYUFBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsUUFBQSxHQUFB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
@@ -32,6 +32,7 @@ export type ScraperCredentials = {
32
32
  } | {
33
33
  otpLongTermToken: string;
34
34
  }));
35
+ export type OptInFeatures = 'mizrahi:pendingIfNoIdentifier' | 'mizrahi:pendingIfHasGenericDescription' | 'mizrahi:pendingIfTodayTransaction';
35
36
  export interface FutureDebit {
36
37
  amount: number;
37
38
  amountCurrency: string;
@@ -143,6 +144,10 @@ export type ScraperOptions = ScraperBrowserOptions & {
143
144
  * The number of times to retry the navigation in case of a failure (default 0)
144
145
  */
145
146
  navigationRetryCount?: number;
147
+ /**
148
+ * Opt-in features for the scrapers, allowing safe rollout of new breaking changes.
149
+ */
150
+ optInFeatures?: Array<OptInFeatures>;
146
151
  };
147
152
  export interface OutputDataOptions {
148
153
  /**
@@ -3,4 +3,4 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL2ludGVyZmFjZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIEJyb3dzZXJDb250ZXh0LCB0eXBlIEJyb3dzZXIsIHR5cGUgUGFnZSB9IGZyb20gJ3B1cHBldGVlci1jb3JlJztcbmltcG9ydCB7IHR5cGUgQ29tcGFueVR5cGVzLCB0eXBlIFNjcmFwZXJQcm9ncmVzc1R5cGVzIH0gZnJvbSAnLi4vZGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsgdHlwZSBUcmFuc2FjdGlvbnNBY2NvdW50IH0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IHR5cGUgRXJyb3JSZXN1bHQsIHR5cGUgU2NyYXBlckVycm9yVHlwZXMgfSBmcm9tICcuL2Vycm9ycyc7XG5cbi8vIFRPRE86IFJlbW92ZSB0aGlzIHR5cGUgd2hlbiB0aGUgc2NyYXBlciAnZmFjdG9yeScgd2lsbCByZXR1cm4gY29uY3JldGUgc2NyYXBlciB0eXBlc1xuLy8gSW5zdGVhZCBvZiBhIGdlbmVyaWMgaW50ZXJmYWNlICh3aGljaCBpbiB0dXJuIHVzZXMgdGhpcyB0eXBlKVxuZXhwb3J0IHR5cGUgU2NyYXBlckNyZWRlbnRpYWxzID1cbiAgfCB7IHVzZXJDb2RlOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmcgfVxuICB8IHsgdXNlcm5hbWU6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9XG4gIHwgeyBpZDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH1cbiAgfCB7IGlkOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmc7IG51bTogc3RyaW5nIH1cbiAgfCB7IGlkOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmc7IGNhcmQ2RGlnaXRzOiBzdHJpbmcgfVxuICB8IHsgdXNlcm5hbWU6IHN0cmluZzsgbmF0aW9uYWxJRDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH1cbiAgfCAoeyBlbWFpbDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH0gJiAoXG4gICAgICB8IHtcbiAgICAgICAgICBvdHBDb2RlUmV0cmlldmVyOiAoKSA9PiBQcm9taXNlPHN0cmluZz47XG4gICAgICAgICAgcGhvbmVOdW1iZXI6IHN0cmluZztcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgb3RwTG9uZ1Rlcm1Ub2tlbjogc3RyaW5nO1xuICAgICAgICB9XG4gICAgKSk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnV0dXJlRGViaXQge1xuICBhbW91bnQ6IG51bWJlcjtcbiAgYW1vdW50Q3VycmVuY3k6IHN0cmluZztcbiAgY2hhcmdlRGF0ZT86IHN0cmluZztcbiAgYmFua0FjY291bnROdW1iZXI/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBFeHRlcm5hbEJyb3dzZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIEFuIGV4dGVybmFsbHkgY3JlYXRlZCBicm93c2VyIGluc3RhbmNlLlxuICAgKiB5b3UgY2FuIGdldCBhIGJyb3dzZXIgZGlyZWN0bHkgZnJvbSBwdXBwZXRlZXIgdmlhIGBwdXBwZXRlZXIubGF1bmNoKClgXG4gICAqXG4gICAqIE5vdGU6IFRoZSBicm93c2VyIHdpbGwgYmUgY2xvc2VkIGJ5IHRoZSBsaWJyYXJ5IGFmdGVyIHRoZSBzY3JhcGVyIGZpbmlzaGVzIHVubGVzcyBgc2tpcENsb3NlQnJvd3NlcmAgaXMgc2V0IHRvIHRydWVcbiAgICovXG4gIGJyb3dzZXI6IEJyb3dzZXI7XG5cbiAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBicm93c2VyIHdpbGwgbm90IGJlIGNsb3NlZCBieSB0aGUgbGlicmFyeSBhZnRlciB0aGUgc2NyYXBlciBmaW5pc2hlc1xuICAgKi9cbiAgc2tpcENsb3NlQnJvd3Nlcj86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBFeHRlcm5hbEJyb3dzZXJDb250ZXh0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBbiBleHRlcm5hbGx5IG1hbmFnZWQgYnJvd3NlciBjb250ZXh0LiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHlvdSB3YW50IHRvIG1hbmFnZSB0aGUgYnJvd3NlclxuICAgKi9cbiAgYnJvd3NlckNvbnRleHQ6IEJyb3dzZXJDb250ZXh0O1xufVxuXG5pbnRlcmZhY2UgRGVmYXVsdEJyb3dzZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIHNob3dzIHRoZSBicm93c2VyIHdoaWxlIHNjcmFwaW5nLCBnb29kIGZvciBkZWJ1Z2dpbmcgKGRlZmF1bHQgZmFsc2UpXG4gICAqL1xuICBzaG93QnJvd3Nlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHByb3ZpZGUgYSBwYXRjaCB0byBsb2NhbCBjaHJvbWl1bSB0byBiZSB1c2VkIGJ5IHB1cHBldGVlci4gUmVsZXZhbnQgd2hlbiB1c2luZ1xuICAgKiBgaXNyYWVsaS1iYW5rLXNjcmFwZXJzLWNvcmVgIGxpYnJhcnlcbiAgICovXG4gIGV4ZWN1dGFibGVQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBicm93c2VyIGluc3RhbmNlLiBUaGUgbGlzdCBvZiBmbGFncyBjYW4gYmUgZm91bmQgaW5cbiAgICpcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9Nb3ppbGxhL0NvbW1hbmRfTGluZV9PcHRpb25zXG4gICAqIGh0dHBzOi8vcGV0ZXIuc2gvZXhwZXJpbWVudHMvY2hyb21pdW0tY29tbWFuZC1saW5lLXN3aXRjaGVzL1xuICAgKi9cbiAgYXJncz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIG5hdmlnYXRpb24gdGltZSBpbiBtaWxsaXNlY29uZHMsIHBhc3MgMCB0byBkaXNhYmxlIHRpbWVvdXQuXG4gICAqIEBkZWZhdWx0IDMwMDAwXG4gICAqL1xuICB0aW1lb3V0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBhZGp1c3QgdGhlIGJyb3dzZXIgaW5zdGFuY2UgYmVmb3JlIGl0IGlzIGJlaW5nIHVzZWRcbiAgICpcbiAgICogQHBhcmFtIGJyb3dzZXJcbiAgICovXG4gIHByZXBhcmVCcm93c2VyPzogKGJyb3dzZXI6IEJyb3dzZXIpID0+IFByb21pc2U8dm9pZD47XG59XG5cbnR5cGUgU2NyYXBlckJyb3dzZXJPcHRpb25zID0gRXh0ZXJuYWxCcm93c2VyT3B0aW9ucyB8IEV4dGVybmFsQnJvd3NlckNvbnRleHRPcHRpb25zIHwgRGVmYXVsdEJyb3dzZXJPcHRpb25zO1xuXG5leHBvcnQgdHlwZSBTY3JhcGVyT3B0aW9ucyA9IFNjcmFwZXJCcm93c2VyT3B0aW9ucyAmIHtcbiAgLyoqXG4gICAqIFRoZSBjb21wYW55IHlvdSB3YW50IHRvIHNjcmFwZVxuICAgKi9cbiAgY29tcGFueUlkOiBDb21wYW55VHlwZXM7XG5cbiAgLyoqXG4gICAqIGluY2x1ZGUgbW9yZSBkZWJ1ZyBpbmZvIGFib3V0IGluIHRoZSBvdXRwdXRcbiAgICovXG4gIHZlcmJvc2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiB0aGUgZGF0ZSB0byBmZXRjaCB0cmFuc2FjdGlvbnMgZnJvbSAoY2FuJ3QgYmUgYmVmb3JlIHRoZSBtaW5pbXVtIGFsbG93ZWQgdGltZSBkaWZmZXJlbmNlIGZvciB0aGUgc2NyYXBlcilcbiAgICovXG4gIHN0YXJ0RGF0ZTogRGF0ZTtcblxuICAvKipcbiAgICogc2NyYXBlIHRyYW5zYWN0aW9ucyB0byBiZSBwcm9jZXNzZWQgWCBtb250aHMgaW4gdGhlIGZ1dHVyZVxuICAgKi9cbiAgZnV0dXJlTW9udGhzVG9TY3JhcGU/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIGlmIHNldCB0byB0cnVlLCBhbGwgaW5zdGFsbG1lbnQgdHJhbnNhY3Rpb25zIHdpbGwgYmUgY29tYmluZSBpbnRvIHRoZSBmaXJzdCBvbmVcbiAgICovXG4gIGNvbWJpbmVJbnN0YWxsbWVudHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBhZGp1c3QgdGhlIHBhZ2UgaW5zdGFuY2UgYmVmb3JlIGl0IGlzIGJlaW5nIHVzZWQuXG4gICAqXG4gICAqIEBwYXJhbSBwYWdlXG4gICAqL1xuICBwcmVwYXJlUGFnZT86IChwYWdlOiBQYWdlKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBpZiBzZXQsIHN0b3JlIGEgc2NyZWVuc2hvdCBpZiBmYWlsZWQgdG8gc2NyYXBlLiBVc2VkIGZvciBkZWJ1ZyBwdXJwb3Nlc1xuICAgKi9cbiAgc3RvcmVGYWlsdXJlU2NyZWVuU2hvdFBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIGlmIHNldCwgd2lsbCBzZXQgdGhlIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIG9mIHB1cHBldGVlcidzIGBwYWdlLnNldERlZmF1bHRUaW1lb3V0YC5cbiAgICovXG4gIGRlZmF1bHRUaW1lb3V0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBtYW5pcHVsYXRpb24gb2Ygb3V0cHV0IGRhdGFcbiAgICovXG4gIG91dHB1dERhdGE/OiBPdXRwdXREYXRhT3B0aW9ucztcblxuICAvKipcbiAgICogUGVyZm9ybSBhZGRpdGlvbmFsIG9wZXJhdGlvbiBmb3IgZWFjaCB0cmFuc2FjdGlvbiB0byBnZXQgbW9yZSBpbmZvcm1hdGlvbiAoTGlrZSBjYXRlZ29yeSkgYWJvdXQgaXQuXG4gICAqIFBsZWFzZSBub3RlOiBJdCB3aWxsIHRha2UgbW9yZSB0aW1lIHRvIGZpbmlzaCB0aGUgcHJvY2Vzcy5cbiAgICovXG4gIGFkZGl0aW9uYWxUcmFuc2FjdGlvbkluZm9ybWF0aW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWRqdXN0IHRoZSB2aWV3cG9ydCBzaXplIG9mIHRoZSBicm93c2VyIHBhZ2UuXG4gICAqIElmIG5vdCBzZXQsIHRoZSBkZWZhdWx0IHZpZXdwb3J0IHNpemUgb2YgMTAyNHg3Njggd2lsbCBiZSB1c2VkLlxuICAgKi9cbiAgdmlld3BvcnRTaXplPzoge1xuICAgIHdpZHRoOiBudW1iZXI7XG4gICAgaGVpZ2h0OiBudW1iZXI7XG4gIH07XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gcmV0cnkgdGhlIG5hdmlnYXRpb24gaW4gY2FzZSBvZiBhIGZhaWx1cmUgKGRlZmF1bHQgMClcbiAgICovXG4gIG5hdmlnYXRpb25SZXRyeUNvdW50PzogbnVtYmVyO1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBPdXRwdXREYXRhT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBpZiB0cnVlLCB0aGUgcmVzdWx0IHdvdWxkbid0IGJlIGZpbHRlcmVkIG91dCBieSBkYXRlLCBhbmQgeW91IHdpbGwgcmV0dXJuIHVuZmlsdGVyZWQgc2NyYXBwZWQgZGF0YS5cbiAgICovXG4gIGVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NyYXBlclNjcmFwaW5nUmVzdWx0IHtcbiAgc3VjY2VzczogYm9vbGVhbjtcbiAgYWNjb3VudHM/OiBUcmFuc2FjdGlvbnNBY2NvdW50W107XG4gIGZ1dHVyZURlYml0cz86IEZ1dHVyZURlYml0W107XG4gIGVycm9yVHlwZT86IFNjcmFwZXJFcnJvclR5cGVzO1xuICBlcnJvck1lc3NhZ2U/OiBzdHJpbmc7IC8vIG9ubHkgb24gc3VjY2Vzcz1mYWxzZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjcmFwZXI8VENyZWRlbnRpYWxzIGV4dGVuZHMgU2NyYXBlckNyZWRlbnRpYWxzPiB7XG4gIHNjcmFwZShjcmVkZW50aWFsczogVENyZWRlbnRpYWxzKTogUHJvbWlzZTxTY3JhcGVyU2NyYXBpbmdSZXN1bHQ+O1xuICBvblByb2dyZXNzKGZ1bmM6IChjb21wYW55SWQ6IENvbXBhbnlUeXBlcywgcGF5bG9hZDogeyB0eXBlOiBTY3JhcGVyUHJvZ3Jlc3NUeXBlcyB9KSA9PiB2b2lkKTogdm9pZDtcbiAgdHJpZ2dlclR3b0ZhY3RvckF1dGgocGhvbmVOdW1iZXI6IHN0cmluZyk6IFByb21pc2U8U2NyYXBlclR3b0ZhY3RvckF1dGhUcmlnZ2VyUmVzdWx0PjtcbiAgZ2V0TG9uZ1Rlcm1Ud29GYWN0b3JUb2tlbihvdHBDb2RlOiBzdHJpbmcpOiBQcm9taXNlPFNjcmFwZXJHZXRMb25nVGVybVR3b0ZhY3RvclRva2VuUmVzdWx0Pjtcbn1cblxuZXhwb3J0IHR5cGUgU2NyYXBlclR3b0ZhY3RvckF1dGhUcmlnZ2VyUmVzdWx0ID1cbiAgfCBFcnJvclJlc3VsdFxuICB8IHtcbiAgICAgIHN1Y2Nlc3M6IHRydWU7XG4gICAgfTtcblxuZXhwb3J0IHR5cGUgU2NyYXBlckdldExvbmdUZXJtVHdvRmFjdG9yVG9rZW5SZXN1bHQgPVxuICB8IEVycm9yUmVzdWx0XG4gIHwge1xuICAgICAgc3VjY2VzczogdHJ1ZTtcbiAgICAgIGxvbmdUZXJtVHdvRmFjdG9yQXV0aFRva2VuOiBzdHJpbmc7XG4gICAgfTtcblxuZXhwb3J0IGludGVyZmFjZSBTY3JhcGVyTG9naW5SZXN1bHQge1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBlcnJvclR5cGU/OiBTY3JhcGVyRXJyb3JUeXBlcztcbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nOyAvLyBvbmx5IG9uIHN1Y2Nlc3M9ZmFsc2VcbiAgcGVyc2lzdGVudE90cFRva2VuPzogc3RyaW5nO1xufVxuIl0sIm1hcHBpbmdzIjoiIiwiaWdub3JlTGlzdCI6W119
6
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL2ludGVyZmFjZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB0eXBlIEJyb3dzZXJDb250ZXh0LCB0eXBlIEJyb3dzZXIsIHR5cGUgUGFnZSB9IGZyb20gJ3B1cHBldGVlci1jb3JlJztcbmltcG9ydCB7IHR5cGUgQ29tcGFueVR5cGVzLCB0eXBlIFNjcmFwZXJQcm9ncmVzc1R5cGVzIH0gZnJvbSAnLi4vZGVmaW5pdGlvbnMnO1xuaW1wb3J0IHsgdHlwZSBUcmFuc2FjdGlvbnNBY2NvdW50IH0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IHR5cGUgRXJyb3JSZXN1bHQsIHR5cGUgU2NyYXBlckVycm9yVHlwZXMgfSBmcm9tICcuL2Vycm9ycyc7XG5cbi8vIFRPRE86IFJlbW92ZSB0aGlzIHR5cGUgd2hlbiB0aGUgc2NyYXBlciAnZmFjdG9yeScgd2lsbCByZXR1cm4gY29uY3JldGUgc2NyYXBlciB0eXBlc1xuLy8gSW5zdGVhZCBvZiBhIGdlbmVyaWMgaW50ZXJmYWNlICh3aGljaCBpbiB0dXJuIHVzZXMgdGhpcyB0eXBlKVxuZXhwb3J0IHR5cGUgU2NyYXBlckNyZWRlbnRpYWxzID1cbiAgfCB7IHVzZXJDb2RlOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmcgfVxuICB8IHsgdXNlcm5hbWU6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9XG4gIHwgeyBpZDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH1cbiAgfCB7IGlkOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmc7IG51bTogc3RyaW5nIH1cbiAgfCB7IGlkOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmc7IGNhcmQ2RGlnaXRzOiBzdHJpbmcgfVxuICB8IHsgdXNlcm5hbWU6IHN0cmluZzsgbmF0aW9uYWxJRDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH1cbiAgfCAoeyBlbWFpbDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH0gJiAoXG4gICAgICB8IHtcbiAgICAgICAgICBvdHBDb2RlUmV0cmlldmVyOiAoKSA9PiBQcm9taXNlPHN0cmluZz47XG4gICAgICAgICAgcGhvbmVOdW1iZXI6IHN0cmluZztcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgb3RwTG9uZ1Rlcm1Ub2tlbjogc3RyaW5nO1xuICAgICAgICB9XG4gICAgKSk7XG5cbmV4cG9ydCB0eXBlIE9wdEluRmVhdHVyZXMgPVxuICB8ICdtaXpyYWhpOnBlbmRpbmdJZk5vSWRlbnRpZmllcidcbiAgfCAnbWl6cmFoaTpwZW5kaW5nSWZIYXNHZW5lcmljRGVzY3JpcHRpb24nXG4gIHwgJ21penJhaGk6cGVuZGluZ0lmVG9kYXlUcmFuc2FjdGlvbic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRnV0dXJlRGViaXQge1xuICBhbW91bnQ6IG51bWJlcjtcbiAgYW1vdW50Q3VycmVuY3k6IHN0cmluZztcbiAgY2hhcmdlRGF0ZT86IHN0cmluZztcbiAgYmFua0FjY291bnROdW1iZXI/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBFeHRlcm5hbEJyb3dzZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIEFuIGV4dGVybmFsbHkgY3JlYXRlZCBicm93c2VyIGluc3RhbmNlLlxuICAgKiB5b3UgY2FuIGdldCBhIGJyb3dzZXIgZGlyZWN0bHkgZnJvbSBwdXBwZXRlZXIgdmlhIGBwdXBwZXRlZXIubGF1bmNoKClgXG4gICAqXG4gICAqIE5vdGU6IFRoZSBicm93c2VyIHdpbGwgYmUgY2xvc2VkIGJ5IHRoZSBsaWJyYXJ5IGFmdGVyIHRoZSBzY3JhcGVyIGZpbmlzaGVzIHVubGVzcyBgc2tpcENsb3NlQnJvd3NlcmAgaXMgc2V0IHRvIHRydWVcbiAgICovXG4gIGJyb3dzZXI6IEJyb3dzZXI7XG5cbiAgLyoqXG4gICAqIElmIHRydWUsIHRoZSBicm93c2VyIHdpbGwgbm90IGJlIGNsb3NlZCBieSB0aGUgbGlicmFyeSBhZnRlciB0aGUgc2NyYXBlciBmaW5pc2hlc1xuICAgKi9cbiAgc2tpcENsb3NlQnJvd3Nlcj86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBFeHRlcm5hbEJyb3dzZXJDb250ZXh0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBBbiBleHRlcm5hbGx5IG1hbmFnZWQgYnJvd3NlciBjb250ZXh0LiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHlvdSB3YW50IHRvIG1hbmFnZSB0aGUgYnJvd3NlclxuICAgKi9cbiAgYnJvd3NlckNvbnRleHQ6IEJyb3dzZXJDb250ZXh0O1xufVxuXG5pbnRlcmZhY2UgRGVmYXVsdEJyb3dzZXJPcHRpb25zIHtcbiAgLyoqXG4gICAqIHNob3dzIHRoZSBicm93c2VyIHdoaWxlIHNjcmFwaW5nLCBnb29kIGZvciBkZWJ1Z2dpbmcgKGRlZmF1bHQgZmFsc2UpXG4gICAqL1xuICBzaG93QnJvd3Nlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIHByb3ZpZGUgYSBwYXRjaCB0byBsb2NhbCBjaHJvbWl1bSB0byBiZSB1c2VkIGJ5IHB1cHBldGVlci4gUmVsZXZhbnQgd2hlbiB1c2luZ1xuICAgKiBgaXNyYWVsaS1iYW5rLXNjcmFwZXJzLWNvcmVgIGxpYnJhcnlcbiAgICovXG4gIGV4ZWN1dGFibGVQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBhZGRpdGlvbmFsIGFyZ3VtZW50cyB0byBwYXNzIHRvIHRoZSBicm93c2VyIGluc3RhbmNlLiBUaGUgbGlzdCBvZiBmbGFncyBjYW4gYmUgZm91bmQgaW5cbiAgICpcbiAgICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9Nb3ppbGxhL0NvbW1hbmRfTGluZV9PcHRpb25zXG4gICAqIGh0dHBzOi8vcGV0ZXIuc2gvZXhwZXJpbWVudHMvY2hyb21pdW0tY29tbWFuZC1saW5lLXN3aXRjaGVzL1xuICAgKi9cbiAgYXJncz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBNYXhpbXVtIG5hdmlnYXRpb24gdGltZSBpbiBtaWxsaXNlY29uZHMsIHBhc3MgMCB0byBkaXNhYmxlIHRpbWVvdXQuXG4gICAqIEBkZWZhdWx0IDMwMDAwXG4gICAqL1xuICB0aW1lb3V0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBhZGp1c3QgdGhlIGJyb3dzZXIgaW5zdGFuY2UgYmVmb3JlIGl0IGlzIGJlaW5nIHVzZWRcbiAgICpcbiAgICogQHBhcmFtIGJyb3dzZXJcbiAgICovXG4gIHByZXBhcmVCcm93c2VyPzogKGJyb3dzZXI6IEJyb3dzZXIpID0+IFByb21pc2U8dm9pZD47XG59XG5cbnR5cGUgU2NyYXBlckJyb3dzZXJPcHRpb25zID0gRXh0ZXJuYWxCcm93c2VyT3B0aW9ucyB8IEV4dGVybmFsQnJvd3NlckNvbnRleHRPcHRpb25zIHwgRGVmYXVsdEJyb3dzZXJPcHRpb25zO1xuXG5leHBvcnQgdHlwZSBTY3JhcGVyT3B0aW9ucyA9IFNjcmFwZXJCcm93c2VyT3B0aW9ucyAmIHtcbiAgLyoqXG4gICAqIFRoZSBjb21wYW55IHlvdSB3YW50IHRvIHNjcmFwZVxuICAgKi9cbiAgY29tcGFueUlkOiBDb21wYW55VHlwZXM7XG5cbiAgLyoqXG4gICAqIGluY2x1ZGUgbW9yZSBkZWJ1ZyBpbmZvIGFib3V0IGluIHRoZSBvdXRwdXRcbiAgICovXG4gIHZlcmJvc2U/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiB0aGUgZGF0ZSB0byBmZXRjaCB0cmFuc2FjdGlvbnMgZnJvbSAoY2FuJ3QgYmUgYmVmb3JlIHRoZSBtaW5pbXVtIGFsbG93ZWQgdGltZSBkaWZmZXJlbmNlIGZvciB0aGUgc2NyYXBlcilcbiAgICovXG4gIHN0YXJ0RGF0ZTogRGF0ZTtcblxuICAvKipcbiAgICogc2NyYXBlIHRyYW5zYWN0aW9ucyB0byBiZSBwcm9jZXNzZWQgWCBtb250aHMgaW4gdGhlIGZ1dHVyZVxuICAgKi9cbiAgZnV0dXJlTW9udGhzVG9TY3JhcGU/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIGlmIHNldCB0byB0cnVlLCBhbGwgaW5zdGFsbG1lbnQgdHJhbnNhY3Rpb25zIHdpbGwgYmUgY29tYmluZSBpbnRvIHRoZSBmaXJzdCBvbmVcbiAgICovXG4gIGNvbWJpbmVJbnN0YWxsbWVudHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBhZGp1c3QgdGhlIHBhZ2UgaW5zdGFuY2UgYmVmb3JlIGl0IGlzIGJlaW5nIHVzZWQuXG4gICAqXG4gICAqIEBwYXJhbSBwYWdlXG4gICAqL1xuICBwcmVwYXJlUGFnZT86IChwYWdlOiBQYWdlKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG4gIC8qKlxuICAgKiBpZiBzZXQsIHN0b3JlIGEgc2NyZWVuc2hvdCBpZiBmYWlsZWQgdG8gc2NyYXBlLiBVc2VkIGZvciBkZWJ1ZyBwdXJwb3Nlc1xuICAgKi9cbiAgc3RvcmVGYWlsdXJlU2NyZWVuU2hvdFBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIGlmIHNldCwgd2lsbCBzZXQgdGhlIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIG9mIHB1cHBldGVlcidzIGBwYWdlLnNldERlZmF1bHRUaW1lb3V0YC5cbiAgICovXG4gIGRlZmF1bHRUaW1lb3V0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBPcHRpb25zIGZvciBtYW5pcHVsYXRpb24gb2Ygb3V0cHV0IGRhdGFcbiAgICovXG4gIG91dHB1dERhdGE/OiBPdXRwdXREYXRhT3B0aW9ucztcblxuICAvKipcbiAgICogUGVyZm9ybSBhZGRpdGlvbmFsIG9wZXJhdGlvbiBmb3IgZWFjaCB0cmFuc2FjdGlvbiB0byBnZXQgbW9yZSBpbmZvcm1hdGlvbiAoTGlrZSBjYXRlZ29yeSkgYWJvdXQgaXQuXG4gICAqIFBsZWFzZSBub3RlOiBJdCB3aWxsIHRha2UgbW9yZSB0aW1lIHRvIGZpbmlzaCB0aGUgcHJvY2Vzcy5cbiAgICovXG4gIGFkZGl0aW9uYWxUcmFuc2FjdGlvbkluZm9ybWF0aW9uPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWRqdXN0IHRoZSB2aWV3cG9ydCBzaXplIG9mIHRoZSBicm93c2VyIHBhZ2UuXG4gICAqIElmIG5vdCBzZXQsIHRoZSBkZWZhdWx0IHZpZXdwb3J0IHNpemUgb2YgMTAyNHg3Njggd2lsbCBiZSB1c2VkLlxuICAgKi9cbiAgdmlld3BvcnRTaXplPzoge1xuICAgIHdpZHRoOiBudW1iZXI7XG4gICAgaGVpZ2h0OiBudW1iZXI7XG4gIH07XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgdGltZXMgdG8gcmV0cnkgdGhlIG5hdmlnYXRpb24gaW4gY2FzZSBvZiBhIGZhaWx1cmUgKGRlZmF1bHQgMClcbiAgICovXG4gIG5hdmlnYXRpb25SZXRyeUNvdW50PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBPcHQtaW4gZmVhdHVyZXMgZm9yIHRoZSBzY3JhcGVycywgYWxsb3dpbmcgc2FmZSByb2xsb3V0IG9mIG5ldyBicmVha2luZyBjaGFuZ2VzLlxuICAgKi9cbiAgb3B0SW5GZWF0dXJlcz86IEFycmF5PE9wdEluRmVhdHVyZXM+O1xufTtcblxuZXhwb3J0IGludGVyZmFjZSBPdXRwdXREYXRhT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBpZiB0cnVlLCB0aGUgcmVzdWx0IHdvdWxkbid0IGJlIGZpbHRlcmVkIG91dCBieSBkYXRlLCBhbmQgeW91IHdpbGwgcmV0dXJuIHVuZmlsdGVyZWQgc2NyYXBwZWQgZGF0YS5cbiAgICovXG4gIGVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NyYXBlclNjcmFwaW5nUmVzdWx0IHtcbiAgc3VjY2VzczogYm9vbGVhbjtcbiAgYWNjb3VudHM/OiBUcmFuc2FjdGlvbnNBY2NvdW50W107XG4gIGZ1dHVyZURlYml0cz86IEZ1dHVyZURlYml0W107XG4gIGVycm9yVHlwZT86IFNjcmFwZXJFcnJvclR5cGVzO1xuICBlcnJvck1lc3NhZ2U/OiBzdHJpbmc7IC8vIG9ubHkgb24gc3VjY2Vzcz1mYWxzZVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjcmFwZXI8VENyZWRlbnRpYWxzIGV4dGVuZHMgU2NyYXBlckNyZWRlbnRpYWxzPiB7XG4gIHNjcmFwZShjcmVkZW50aWFsczogVENyZWRlbnRpYWxzKTogUHJvbWlzZTxTY3JhcGVyU2NyYXBpbmdSZXN1bHQ+O1xuICBvblByb2dyZXNzKGZ1bmM6IChjb21wYW55SWQ6IENvbXBhbnlUeXBlcywgcGF5bG9hZDogeyB0eXBlOiBTY3JhcGVyUHJvZ3Jlc3NUeXBlcyB9KSA9PiB2b2lkKTogdm9pZDtcbiAgdHJpZ2dlclR3b0ZhY3RvckF1dGgocGhvbmVOdW1iZXI6IHN0cmluZyk6IFByb21pc2U8U2NyYXBlclR3b0ZhY3RvckF1dGhUcmlnZ2VyUmVzdWx0PjtcbiAgZ2V0TG9uZ1Rlcm1Ud29GYWN0b3JUb2tlbihvdHBDb2RlOiBzdHJpbmcpOiBQcm9taXNlPFNjcmFwZXJHZXRMb25nVGVybVR3b0ZhY3RvclRva2VuUmVzdWx0Pjtcbn1cblxuZXhwb3J0IHR5cGUgU2NyYXBlclR3b0ZhY3RvckF1dGhUcmlnZ2VyUmVzdWx0ID1cbiAgfCBFcnJvclJlc3VsdFxuICB8IHtcbiAgICAgIHN1Y2Nlc3M6IHRydWU7XG4gICAgfTtcblxuZXhwb3J0IHR5cGUgU2NyYXBlckdldExvbmdUZXJtVHdvRmFjdG9yVG9rZW5SZXN1bHQgPVxuICB8IEVycm9yUmVzdWx0XG4gIHwge1xuICAgICAgc3VjY2VzczogdHJ1ZTtcbiAgICAgIGxvbmdUZXJtVHdvRmFjdG9yQXV0aFRva2VuOiBzdHJpbmc7XG4gICAgfTtcblxuZXhwb3J0IGludGVyZmFjZSBTY3JhcGVyTG9naW5SZXN1bHQge1xuICBzdWNjZXNzOiBib29sZWFuO1xuICBlcnJvclR5cGU/OiBTY3JhcGVyRXJyb3JUeXBlcztcbiAgZXJyb3JNZXNzYWdlPzogc3RyaW5nOyAvLyBvbmx5IG9uIHN1Y2Nlc3M9ZmFsc2VcbiAgcGVyc2lzdGVudE90cFRva2VuPzogc3RyaW5nO1xufVxuIl0sIm1hcHBpbmdzIjoiIiwiaWdub3JlTGlzdCI6W119
@@ -5,7 +5,6 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
  exports.getMemo = getMemo;
8
- var _buildUrl = _interopRequireDefault(require("build-url"));
9
8
  var _moment = _interopRequireDefault(require("moment"));
10
9
  var _constants = require("../constants");
11
10
  var _dates = _interopRequireDefault(require("../helpers/dates"));
@@ -65,9 +64,10 @@ function getTransactionsUrl(monthMoment) {
65
64
  * cardIndex: -1 for all cards under the account
66
65
  * all other query params are static, beside the date which changes for request per month
67
66
  */
68
- return (0, _buildUrl.default)(BASE_API_ACTIONS_URL, {
69
- path: `/api/registered/transactionDetails/getTransactionsAndGraphs?filterData={"userIndex":-1,"cardIndex":-1,"monthView":true,"date":"${date}","dates":{"startDate":"0","endDate":"0"},"bankAccount":{"bankAccountIndex":-1,"cards":null}}&firstCallCardIndex=-1`
70
- });
67
+ const url = new URL(`${BASE_API_ACTIONS_URL}/api/registered/transactionDetails/getTransactionsAndGraphs`);
68
+ url.searchParams.set('filterData', `{"userIndex":-1,"cardIndex":-1,"monthView":true,"date":"${date}","dates":{"startDate":"0","endDate":"0"},"bankAccount":{"bankAccountIndex":-1,"cards":null}}`);
69
+ url.searchParams.set('firstCallCardIndex', '-1');
70
+ return url.toString();
71
71
  }
72
72
  async function loadCategories(page) {
73
73
  debug('Loading categories');
@@ -296,4 +296,4 @@ class MaxScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
296
296
  }
297
297
  }
298
298
  var _default = exports.default = MaxScraper;
299
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYnVpbGRVcmwiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9tb21lbnQiLCJfY29uc3RhbnRzIiwiX2RhdGVzIiwiX2RlYnVnIiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX2ZldGNoIiwiX25hdmlnYXRpb24iLCJfdHJhbnNhY3Rpb25zIiwiX3RyYW5zYWN0aW9uczIiLCJfYmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImRlYnVnIiwiZ2V0RGVidWciLCJCQVNFX0FQSV9BQ1RJT05TX1VSTCIsIkJBU0VfV0VMQ09NRV9VUkwiLCJMT0dJTl9VUkwiLCJQQVNTV09SRF9FWFBJUkVEX1VSTCIsIlNVQ0NFU1NfVVJMIiwiTWF4UGxhbk5hbWUiLCJJTlZBTElEX0RFVEFJTFNfU0VMRUNUT1IiLCJMT0dJTl9FUlJPUl9TRUxFQ1RPUiIsImNhdGVnb3JpZXMiLCJNYXAiLCJyZWRpcmVjdE9yRGlhbG9nIiwicGFnZSIsIlByb21pc2UiLCJyYWNlIiwid2FpdEZvclJlZGlyZWN0Iiwid2FpdFVudGlsRWxlbWVudEZvdW5kIiwiZ2V0VHJhbnNhY3Rpb25zVXJsIiwibW9udGhNb21lbnQiLCJtb250aCIsInllYXIiLCJkYXRlIiwiYnVpbGRVcmwiLCJwYXRoIiwibG9hZENhdGVnb3JpZXMiLCJyZXMiLCJmZXRjaEdldFdpdGhpblBhZ2UiLCJBcnJheSIsImlzQXJyYXkiLCJyZXN1bHQiLCJsZW5ndGgiLCJmb3JFYWNoIiwiaWQiLCJuYW1lIiwic2V0IiwiZ2V0VHJhbnNhY3Rpb25UeXBlIiwicGxhbk5hbWUiLCJwbGFuVHlwZUlkIiwiY2xlYW5lZFVwVHhuVHlwZVN0ciIsInJlcGxhY2UiLCJ0cmltIiwiSW1tZWRpYXRlQ2hhcmdlIiwiTm9ybWFsIiwiTW9udGhseUNoYXJnZSIsIk9uZU1vbnRoUG9zdHBvbmVkIiwiTW9udGhseVBvc3Rwb25lZCIsIkZ1dHVyZVB1cmNoYXNlRmluYW5jaW5nIiwiTW9udGhseVBheW1lbnQiLCJNb250aGx5UG9zdHBvbmVkSW5zdGFsbG1lbnRzIiwiVGhpcnR5RGF5c1BsdXMiLCJUd29Nb250aHNQb3N0cG9uZWQiLCJUd29Nb250aHNQb3N0cG9uZWQyIiwiQWNjdW11bGF0aW5nQmFza2V0IiwiSW50ZXJuZXRTaG9wcGluZyIsIk1vbnRobHlDaGFyZ2VQbHVzSW50ZXJlc3QiLCJQb3N0cG9uZWRUcmFuc2FjdGlvbkluc3RhbGxtZW50cyIsIlJlcGxhY2VtZW50Q2FyZCIsIkVhcmx5UmVwYXltZW50IiwiTW9udGhseUNhcmRGZWUiLCJDdXJyZW5jeVBvY2tldCIsIlRyYW5zYWN0aW9uVHlwZXMiLCJJbnN0YWxsbWVudHMiLCJDcmVkaXQiLCJDcmVkaXRPdXRzaWRlVGhlTGltaXQiLCJFcnJvciIsImdldEluc3RhbGxtZW50c0luZm8iLCJjb21tZW50cyIsInVuZGVmaW5lZCIsIm1hdGNoZXMiLCJtYXRjaCIsIm51bWJlciIsInBhcnNlSW50IiwidG90YWwiLCJnZXRDaGFyZ2VkQ3VycmVuY3kiLCJjdXJyZW5jeUlkIiwiU0hFS0VMX0NVUlJFTkNZIiwiRE9MTEFSX0NVUlJFTkNZIiwiRVVST19DVVJSRU5DWSIsImdldE1lbW8iLCJmdW5kc1RyYW5zZmVyUmVjZWl2ZXJPclRyYW5zZmVyIiwiZnVuZHNUcmFuc2ZlckNvbW1lbnQiLCJtZW1vIiwibWFwVHJhbnNhY3Rpb24iLCJyYXdUcmFuc2FjdGlvbiIsImlzUGVuZGluZyIsInBheW1lbnREYXRlIiwicHJvY2Vzc2VkRGF0ZSIsIm1vbWVudCIsInB1cmNoYXNlRGF0ZSIsInRvSVNPU3RyaW5nIiwic3RhdHVzIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIlBlbmRpbmciLCJDb21wbGV0ZWQiLCJpbnN0YWxsbWVudHMiLCJpZGVudGlmaWVyIiwiZGVhbERhdGEiLCJhcm4iLCJ0eXBlIiwib3JpZ2luYWxBbW91bnQiLCJvcmlnaW5hbEN1cnJlbmN5IiwiY2hhcmdlZEFtb3VudCIsImFjdHVhbFBheW1lbnRBbW91bnQiLCJjaGFyZ2VkQ3VycmVuY3kiLCJwYXltZW50Q3VycmVuY3kiLCJkZXNjcmlwdGlvbiIsIm1lcmNoYW50TmFtZSIsImNhdGVnb3J5IiwiZ2V0IiwiY2F0ZWdvcnlJZCIsImZldGNoVHJhbnNhY3Rpb25zRm9yTW9udGgiLCJ1cmwiLCJkYXRhIiwidHJhbnNhY3Rpb25zQnlBY2NvdW50IiwidHJhbnNhY3Rpb25zIiwiZmlsdGVyIiwidHJhbnNhY3Rpb24iLCJzaG9ydENhcmROdW1iZXIiLCJtYXBwZWRUcmFuc2FjdGlvbiIsInB1c2giLCJhZGRSZXN1bHQiLCJhbGxSZXN1bHRzIiwiY2xvbmVkUmVzdWx0cyIsIk9iamVjdCIsImtleXMiLCJhY2NvdW50TnVtYmVyIiwicHJlcGFyZVRyYW5zYWN0aW9ucyIsInR4bnMiLCJzdGFydE1vbWVudCIsImNvbWJpbmVJbnN0YWxsbWVudHMiLCJlbmFibGVUcmFuc2FjdGlvbnNGaWx0ZXJCeURhdGUiLCJjbG9uZWRUeG5zIiwiZnJvbSIsImZpeEluc3RhbGxtZW50cyIsInNvcnRUcmFuc2FjdGlvbnNCeURhdGUiLCJmaWx0ZXJPbGRUcmFuc2FjdGlvbnMiLCJmZXRjaFRyYW5zYWN0aW9ucyIsIm9wdGlvbnMiLCJmdXR1cmVNb250aHNUb1NjcmFwZSIsImRlZmF1bHRTdGFydE1vbWVudCIsInN1YnRyYWN0Iiwic3RhcnRNb21lbnRMaW1pdCIsInN0YXJ0RGF0ZSIsInRvRGF0ZSIsIm1heCIsImFsbE1vbnRocyIsImdldEFsbE1vbnRoTW9tZW50cyIsImkiLCJvdXRwdXREYXRhIiwiZ2V0UG9zc2libGVMb2dpblJlc3VsdHMiLCJ1cmxzIiwiTG9naW5SZXN1bHRzIiwiU3VjY2VzcyIsIkNoYW5nZVBhc3N3b3JkIiwiSW52YWxpZFBhc3N3b3JkIiwiZWxlbWVudFByZXNlbnRPblBhZ2UiLCJVbmtub3duRXJyb3IiLCJjcmVhdGVMb2dpbkZpZWxkcyIsImNyZWRlbnRpYWxzIiwic2VsZWN0b3IiLCJ2YWx1ZSIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJNYXhTY3JhcGVyIiwiQmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImdldExvZ2luT3B0aW9ucyIsImxvZ2luVXJsIiwiZmllbGRzIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJwcmVBY3Rpb24iLCJjbGlja0J1dHRvbiIsImNoZWNrUmVhZGluZXNzIiwicG9zdEFjdGlvbiIsInBvc3NpYmxlUmVzdWx0cyIsIndhaXRVbnRpbCIsImZldGNoRGF0YSIsInJlc3VsdHMiLCJhY2NvdW50cyIsIm1hcCIsInN1Y2Nlc3MiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyYXBlcnMvbWF4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBidWlsZFVybCBmcm9tICdidWlsZC11cmwnO1xuaW1wb3J0IG1vbWVudCwgeyB0eXBlIE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyB0eXBlIFBhZ2UgfSBmcm9tICdwdXBwZXRlZXItY29yZSc7XG5pbXBvcnQgeyBET0xMQVJfQ1VSUkVOQ1ksIEVVUk9fQ1VSUkVOQ1ksIFNIRUtFTF9DVVJSRU5DWSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgZ2V0QWxsTW9udGhNb21lbnRzIGZyb20gJy4uL2hlbHBlcnMvZGF0ZXMnO1xuaW1wb3J0IHsgZ2V0RGVidWcgfSBmcm9tICcuLi9oZWxwZXJzL2RlYnVnJztcbmltcG9ydCB7IGNsaWNrQnV0dG9uLCBlbGVtZW50UHJlc2VudE9uUGFnZSwgd2FpdFVudGlsRWxlbWVudEZvdW5kIH0gZnJvbSAnLi4vaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMnO1xuaW1wb3J0IHsgZmV0Y2hHZXRXaXRoaW5QYWdlIH0gZnJvbSAnLi4vaGVscGVycy9mZXRjaCc7XG5pbXBvcnQgeyB3YWl0Rm9yUmVkaXJlY3QgfSBmcm9tICcuLi9oZWxwZXJzL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgZmlsdGVyT2xkVHJhbnNhY3Rpb25zLCBmaXhJbnN0YWxsbWVudHMsIHNvcnRUcmFuc2FjdGlvbnNCeURhdGUgfSBmcm9tICcuLi9oZWxwZXJzL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblN0YXR1c2VzLCBUcmFuc2FjdGlvblR5cGVzLCB0eXBlIFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7XG4gIEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsXG4gIExvZ2luUmVzdWx0cyxcbiAgdHlwZSBMb2dpbk9wdGlvbnMsXG4gIHR5cGUgUG9zc2libGVMb2dpblJlc3VsdHMsXG59IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQgeyB0eXBlIFNjcmFwZXJPcHRpb25zIH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuXG5jb25zdCBkZWJ1ZyA9IGdldERlYnVnKCdtYXgnKTtcblxuZXhwb3J0IGludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb24ge1xuICBzaG9ydENhcmROdW1iZXI6IHN0cmluZztcbiAgcGF5bWVudERhdGU/OiBzdHJpbmc7XG4gIHB1cmNoYXNlRGF0ZTogc3RyaW5nO1xuICBhY3R1YWxQYXltZW50QW1vdW50OiBzdHJpbmc7XG4gIHBheW1lbnRDdXJyZW5jeTogbnVtYmVyIHwgbnVsbDtcbiAgb3JpZ2luYWxDdXJyZW5jeTogc3RyaW5nO1xuICBvcmlnaW5hbEFtb3VudDogbnVtYmVyO1xuICBwbGFuTmFtZTogc3RyaW5nO1xuICBwbGFuVHlwZUlkOiBudW1iZXI7XG4gIGNvbW1lbnRzOiBzdHJpbmc7XG4gIG1lcmNoYW50TmFtZTogc3RyaW5nO1xuICBjYXRlZ29yeUlkOiBudW1iZXI7XG4gIGZ1bmRzVHJhbnNmZXJDb21tZW50Pzogc3RyaW5nO1xuICBmdW5kc1RyYW5zZmVyUmVjZWl2ZXJPclRyYW5zZmVyPzogc3RyaW5nO1xuICBkZWFsRGF0YT86IHtcbiAgICBhcm46IHN0cmluZztcbiAgfTtcbn1cblxuY29uc3QgQkFTRV9BUElfQUNUSU9OU19VUkwgPSAnaHR0cHM6Ly9vbmxpbmVsY2FwaS5tYXguY28uaWwnO1xuY29uc3QgQkFTRV9XRUxDT01FX1VSTCA9ICdodHRwczovL3d3dy5tYXguY28uaWwnO1xuXG5jb25zdCBMT0dJTl9VUkwgPSBgJHtCQVNFX1dFTENPTUVfVVJMfS9ob21lcGFnZS93ZWxjb21lYDtcbmNvbnN0IFBBU1NXT1JEX0VYUElSRURfVVJMID0gYCR7QkFTRV9XRUxDT01FX1VSTH0vcmVuZXctcGFzc3dvcmRgO1xuY29uc3QgU1VDQ0VTU19VUkwgPSBgJHtCQVNFX1dFTENPTUVfVVJMfS9ob21lcGFnZS9wZXJzb25hbGA7XG5cbmVudW0gTWF4UGxhbk5hbWUge1xuICBOb3JtYWwgPSAn16jXkteZ15zXlCcsXG4gIEltbWVkaWF0ZUNoYXJnZSA9ICfXl9eZ15XXkSDXoteh16fXldeqINee15nXmdeT15knLFxuICBJbnRlcm5ldFNob3BwaW5nID0gJ9eQ15nXoNeY16jXoNeYL9eX15VcItecJyxcbiAgSW5zdGFsbG1lbnRzID0gJ9eq16nXnNeV157XmdedJyxcbiAgTW9udGhseUNoYXJnZSA9ICfXl9eZ15XXkSDXl9eV15PXqdeZJyxcbiAgT25lTW9udGhQb3N0cG9uZWQgPSAn15PXl9eV15kg15fXldeT16knLFxuICBNb250aGx5UG9zdHBvbmVkID0gJ9eT15fXldeZINec15fXmdeV15Eg15TXl9eV15PXqdeZJyxcbiAgTW9udGhseVBheW1lbnQgPSAn16rXqdec15XXnSDXl9eV15PXqdeZJyxcbiAgRnV0dXJlUHVyY2hhc2VGaW5hbmNpbmcgPSAn157Xmdee15XXnyDXnNeo15vXmdep15Qg16LXqteZ15PXmdeqJyxcbiAgTW9udGhseVBvc3Rwb25lZEluc3RhbGxtZW50cyA9ICfXk9eX15XXmSDXl9eV15PXqSDXqtep15zXldee15nXnScsXG4gIFRoaXJ0eURheXNQbHVzID0gJ9ei16HXp9eqIDMwINek15zXldehJyxcbiAgVHdvTW9udGhzUG9zdHBvbmVkID0gJ9eT15fXldeZINeX15XXk9ep15nXmdedJyxcbiAgVHdvTW9udGhzUG9zdHBvbmVkMiA9IFwi15PXl9eV15kgMiDXlycg16rXqdec15XXnteZ151cIixcbiAgTW9udGhseUNoYXJnZVBsdXNJbnRlcmVzdCA9ICfXl9eV15PXqdeZICsg16jXmdeR15nXqicsXG4gIENyZWRpdCA9ICfXp9eo15PXmdeYJyxcbiAgQ3JlZGl0T3V0c2lkZVRoZUxpbWl0ID0gJ9en16jXk9eZ15gt157Xl9eV16Ug15zXnteh15LXqNeqJyxcbiAgQWNjdW11bGF0aW5nQmFza2V0ID0gJ9eh15wg157XpteY15HXqCcsXG4gIFBvc3Rwb25lZFRyYW5zYWN0aW9uSW5zdGFsbG1lbnRzID0gJ9ek16jXmdeh16og15TXoteh16fXlCDXlNeT15fXldeZ15QnLFxuICBSZXBsYWNlbWVudENhcmQgPSAn15vXqNeY15nXoSDXl9ec15nXpNeZJyxcbiAgRWFybHlSZXBheW1lbnQgPSAn16TXqNei15XXnyDXnteV16fXk9edJyxcbiAgTW9udGhseUNhcmRGZWUgPSAn15PXnteZINeb16jXmNeZ16EnLFxuICBDdXJyZW5jeVBvY2tldCA9ICfXl9eZ15XXkSDXkNeo16DXpyDXnteY15cnLFxufVxuXG5jb25zdCBJTlZBTElEX0RFVEFJTFNfU0VMRUNUT1IgPSAnI3BvcHVwV3JvbmdEZXRhaWxzJztcbmNvbnN0IExPR0lOX0VSUk9SX1NFTEVDVE9SID0gJyNwb3B1cENhcmRIb2xkZXJzTG9naW5FcnJvcic7XG5cbmNvbnN0IGNhdGVnb3JpZXMgPSBuZXcgTWFwPG51bWJlciwgc3RyaW5nPigpO1xuXG5mdW5jdGlvbiByZWRpcmVjdE9yRGlhbG9nKHBhZ2U6IFBhZ2UpIHtcbiAgcmV0dXJuIFByb21pc2UucmFjZShbXG4gICAgd2FpdEZvclJlZGlyZWN0KHBhZ2UsIDIwMDAwLCBmYWxzZSwgW0JBU0VfV0VMQ09NRV9VUkwsIGAke0JBU0VfV0VMQ09NRV9VUkx9L2BdKSxcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgSU5WQUxJRF9ERVRBSUxTX1NFTEVDVE9SLCB0cnVlKSxcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgTE9HSU5fRVJST1JfU0VMRUNUT1IsIHRydWUpLFxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25zVXJsKG1vbnRoTW9tZW50OiBNb21lbnQpIHtcbiAgY29uc3QgbW9udGggPSBtb250aE1vbWVudC5tb250aCgpICsgMTtcbiAgY29uc3QgeWVhciA9IG1vbnRoTW9tZW50LnllYXIoKTtcbiAgY29uc3QgZGF0ZSA9IGAke3llYXJ9LSR7bW9udGh9LTAxYDtcblxuICAvKipcbiAgICogdXJsIGV4cGxhbmF0aW9uOlxuICAgKiB1c2VySW5kZXg6IC0xIGZvciBhbGwgYWNjb3VudCBvd25lcnNcbiAgICogY2FyZEluZGV4OiAtMSBmb3IgYWxsIGNhcmRzIHVuZGVyIHRoZSBhY2NvdW50XG4gICAqIGFsbCBvdGhlciBxdWVyeSBwYXJhbXMgYXJlIHN0YXRpYywgYmVzaWRlIHRoZSBkYXRlIHdoaWNoIGNoYW5nZXMgZm9yIHJlcXVlc3QgcGVyIG1vbnRoXG4gICAqL1xuICByZXR1cm4gYnVpbGRVcmwoQkFTRV9BUElfQUNUSU9OU19VUkwsIHtcbiAgICBwYXRoOiBgL2FwaS9yZWdpc3RlcmVkL3RyYW5zYWN0aW9uRGV0YWlscy9nZXRUcmFuc2FjdGlvbnNBbmRHcmFwaHM/ZmlsdGVyRGF0YT17XCJ1c2VySW5kZXhcIjotMSxcImNhcmRJbmRleFwiOi0xLFwibW9udGhWaWV3XCI6dHJ1ZSxcImRhdGVcIjpcIiR7ZGF0ZX1cIixcImRhdGVzXCI6e1wic3RhcnREYXRlXCI6XCIwXCIsXCJlbmREYXRlXCI6XCIwXCJ9LFwiYmFua0FjY291bnRcIjp7XCJiYW5rQWNjb3VudEluZGV4XCI6LTEsXCJjYXJkc1wiOm51bGx9fSZmaXJzdENhbGxDYXJkSW5kZXg9LTFgLFxuICB9KTtcbn1cblxuaW50ZXJmYWNlIEZldGNoQ2F0ZWdvcnlSZXN1bHQge1xuICByZXN1bHQ/OiBBcnJheTx7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBuYW1lOiBzdHJpbmc7XG4gIH0+O1xufVxuXG5hc3luYyBmdW5jdGlvbiBsb2FkQ2F0ZWdvcmllcyhwYWdlOiBQYWdlKSB7XG4gIGRlYnVnKCdMb2FkaW5nIGNhdGVnb3JpZXMnKTtcbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2hHZXRXaXRoaW5QYWdlPEZldGNoQ2F0ZWdvcnlSZXN1bHQ+KHBhZ2UsIGAke0JBU0VfQVBJX0FDVElPTlNfVVJMfS9hcGkvY29udGVudHMvZ2V0Q2F0ZWdvcmllc2ApO1xuICBpZiAocmVzICYmIEFycmF5LmlzQXJyYXkocmVzLnJlc3VsdCkpIHtcbiAgICBkZWJ1ZyhgJHtyZXMucmVzdWx0Lmxlbmd0aH0gY2F0ZWdvcmllcyBsb2FkZWRgKTtcbiAgICByZXMucmVzdWx0Py5mb3JFYWNoKCh7IGlkLCBuYW1lIH0pID0+IGNhdGVnb3JpZXMuc2V0KGlkLCBuYW1lKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25UeXBlKHBsYW5OYW1lOiBzdHJpbmcsIHBsYW5UeXBlSWQ6IG51bWJlcikge1xuICBjb25zdCBjbGVhbmVkVXBUeG5UeXBlU3RyID0gcGxhbk5hbWUucmVwbGFjZSgnXFx0JywgJyAnKS50cmltKCkgYXMgTWF4UGxhbk5hbWU7XG4gIHN3aXRjaCAoY2xlYW5lZFVwVHhuVHlwZVN0cikge1xuICAgIGNhc2UgTWF4UGxhbk5hbWUuSW1tZWRpYXRlQ2hhcmdlOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuTm9ybWFsOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuTW9udGhseUNoYXJnZTpcbiAgICBjYXNlIE1heFBsYW5OYW1lLk9uZU1vbnRoUG9zdHBvbmVkOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuTW9udGhseVBvc3Rwb25lZDpcbiAgICBjYXNlIE1heFBsYW5OYW1lLkZ1dHVyZVB1cmNoYXNlRmluYW5jaW5nOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuTW9udGhseVBheW1lbnQ6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5Nb250aGx5UG9zdHBvbmVkSW5zdGFsbG1lbnRzOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuVGhpcnR5RGF5c1BsdXM6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5Ud29Nb250aHNQb3N0cG9uZWQ6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5Ud29Nb250aHNQb3N0cG9uZWQyOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuQWNjdW11bGF0aW5nQmFza2V0OlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuSW50ZXJuZXRTaG9wcGluZzpcbiAgICBjYXNlIE1heFBsYW5OYW1lLk1vbnRobHlDaGFyZ2VQbHVzSW50ZXJlc3Q6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5Qb3N0cG9uZWRUcmFuc2FjdGlvbkluc3RhbGxtZW50czpcbiAgICBjYXNlIE1heFBsYW5OYW1lLlJlcGxhY2VtZW50Q2FyZDpcbiAgICBjYXNlIE1heFBsYW5OYW1lLkVhcmx5UmVwYXltZW50OlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuTW9udGhseUNhcmRGZWU6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5DdXJyZW5jeVBvY2tldDpcbiAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbDtcbiAgICBjYXNlIE1heFBsYW5OYW1lLkluc3RhbGxtZW50czpcbiAgICBjYXNlIE1heFBsYW5OYW1lLkNyZWRpdDpcbiAgICBjYXNlIE1heFBsYW5OYW1lLkNyZWRpdE91dHNpZGVUaGVMaW1pdDpcbiAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGVzLkluc3RhbGxtZW50cztcbiAgICBkZWZhdWx0OlxuICAgICAgc3dpdGNoIChwbGFuVHlwZUlkKSB7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGVzLkluc3RhbGxtZW50cztcbiAgICAgICAgY2FzZSA1OlxuICAgICAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbDtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gdHJhbnNhY3Rpb24gdHlwZSAke2NsZWFuZWRVcFR4blR5cGVTdHIgYXMgc3RyaW5nfWApO1xuICAgICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldEluc3RhbGxtZW50c0luZm8oY29tbWVudHM6IHN0cmluZykge1xuICBpZiAoIWNvbW1lbnRzKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCBtYXRjaGVzID0gY29tbWVudHMubWF0Y2goL1xcZCsvZyk7XG4gIGlmICghbWF0Y2hlcyB8fCBtYXRjaGVzLmxlbmd0aCA8IDIpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBudW1iZXI6IHBhcnNlSW50KG1hdGNoZXNbMF0sIDEwKSxcbiAgICB0b3RhbDogcGFyc2VJbnQobWF0Y2hlc1sxXSwgMTApLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRDaGFyZ2VkQ3VycmVuY3koY3VycmVuY3lJZDogbnVtYmVyIHwgbnVsbCkge1xuICBzd2l0Y2ggKGN1cnJlbmN5SWQpIHtcbiAgICBjYXNlIDM3NjpcbiAgICAgIHJldHVybiBTSEVLRUxfQ1VSUkVOQ1k7XG4gICAgY2FzZSA4NDA6XG4gICAgICByZXR1cm4gRE9MTEFSX0NVUlJFTkNZO1xuICAgIGNhc2UgOTc4OlxuICAgICAgcmV0dXJuIEVVUk9fQ1VSUkVOQ1k7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1lbW8oe1xuICBjb21tZW50cyxcbiAgZnVuZHNUcmFuc2ZlclJlY2VpdmVyT3JUcmFuc2ZlcixcbiAgZnVuZHNUcmFuc2ZlckNvbW1lbnQsXG59OiBQaWNrPFNjcmFwZWRUcmFuc2FjdGlvbiwgJ2NvbW1lbnRzJyB8ICdmdW5kc1RyYW5zZmVyUmVjZWl2ZXJPclRyYW5zZmVyJyB8ICdmdW5kc1RyYW5zZmVyQ29tbWVudCc+KSB7XG4gIGlmIChmdW5kc1RyYW5zZmVyUmVjZWl2ZXJPclRyYW5zZmVyKSB7XG4gICAgY29uc3QgbWVtbyA9IGNvbW1lbnRzID8gYCR7Y29tbWVudHN9ICR7ZnVuZHNUcmFuc2ZlclJlY2VpdmVyT3JUcmFuc2Zlcn1gIDogZnVuZHNUcmFuc2ZlclJlY2VpdmVyT3JUcmFuc2ZlcjtcbiAgICByZXR1cm4gZnVuZHNUcmFuc2ZlckNvbW1lbnQgPyBgJHttZW1vfTogJHtmdW5kc1RyYW5zZmVyQ29tbWVudH1gIDogbWVtbztcbiAgfVxuXG4gIHJldHVybiBjb21tZW50cztcbn1cblxuZnVuY3Rpb24gbWFwVHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IFNjcmFwZWRUcmFuc2FjdGlvbik6IFRyYW5zYWN0aW9uIHtcbiAgY29uc3QgaXNQZW5kaW5nID0gcmF3VHJhbnNhY3Rpb24ucGF5bWVudERhdGUgPT09IG51bGw7XG4gIGNvbnN0IHByb2Nlc3NlZERhdGUgPSBtb21lbnQoaXNQZW5kaW5nID8gcmF3VHJhbnNhY3Rpb24ucHVyY2hhc2VEYXRlIDogcmF3VHJhbnNhY3Rpb24ucGF5bWVudERhdGUpLnRvSVNPU3RyaW5nKCk7XG4gIGNvbnN0IHN0YXR1cyA9IGlzUGVuZGluZyA/IFRyYW5zYWN0aW9uU3RhdHVzZXMuUGVuZGluZyA6IFRyYW5zYWN0aW9uU3RhdHVzZXMuQ29tcGxldGVkO1xuXG4gIGNvbnN0IGluc3RhbGxtZW50cyA9IGdldEluc3RhbGxtZW50c0luZm8ocmF3VHJhbnNhY3Rpb24uY29tbWVudHMpO1xuICBjb25zdCBpZGVudGlmaWVyID0gaW5zdGFsbG1lbnRzXG4gICAgPyBgJHtyYXdUcmFuc2FjdGlvbi5kZWFsRGF0YT8uYXJufV8ke2luc3RhbGxtZW50cy5udW1iZXJ9YFxuICAgIDogcmF3VHJhbnNhY3Rpb24uZGVhbERhdGE/LmFybjtcblxuICByZXR1cm4ge1xuICAgIHR5cGU6IGdldFRyYW5zYWN0aW9uVHlwZShyYXdUcmFuc2FjdGlvbi5wbGFuTmFtZSwgcmF3VHJhbnNhY3Rpb24ucGxhblR5cGVJZCksXG4gICAgZGF0ZTogbW9tZW50KHJhd1RyYW5zYWN0aW9uLnB1cmNoYXNlRGF0ZSkudG9JU09TdHJpbmcoKSxcbiAgICBwcm9jZXNzZWREYXRlLFxuICAgIG9yaWdpbmFsQW1vdW50OiAtcmF3VHJhbnNhY3Rpb24ub3JpZ2luYWxBbW91bnQsXG4gICAgb3JpZ2luYWxDdXJyZW5jeTogcmF3VHJhbnNhY3Rpb24ub3JpZ2luYWxDdXJyZW5jeSxcbiAgICBjaGFyZ2VkQW1vdW50OiAtcmF3VHJhbnNhY3Rpb24uYWN0dWFsUGF5bWVudEFtb3VudCxcbiAgICBjaGFyZ2VkQ3VycmVuY3k6IGdldENoYXJnZWRDdXJyZW5jeShyYXdUcmFuc2FjdGlvbi5wYXltZW50Q3VycmVuY3kpLFxuICAgIGRlc2NyaXB0aW9uOiByYXdUcmFuc2FjdGlvbi5tZXJjaGFudE5hbWUudHJpbSgpLFxuICAgIG1lbW86IGdldE1lbW8ocmF3VHJhbnNhY3Rpb24pLFxuICAgIGNhdGVnb3J5OiBjYXRlZ29yaWVzLmdldChyYXdUcmFuc2FjdGlvbj8uY2F0ZWdvcnlJZCksXG4gICAgaW5zdGFsbG1lbnRzLFxuICAgIGlkZW50aWZpZXIsXG4gICAgc3RhdHVzLFxuICB9O1xufVxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbnNSZXN1bHQge1xuICByZXN1bHQ/OiB7XG4gICAgdHJhbnNhY3Rpb25zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXTtcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hUcmFuc2FjdGlvbnNGb3JNb250aChwYWdlOiBQYWdlLCBtb250aE1vbWVudDogTW9tZW50KSB7XG4gIGNvbnN0IHVybCA9IGdldFRyYW5zYWN0aW9uc1VybChtb250aE1vbWVudCk7XG5cbiAgY29uc3QgZGF0YSA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxTY3JhcGVkVHJhbnNhY3Rpb25zUmVzdWx0PihwYWdlLCB1cmwpO1xuICBjb25zdCB0cmFuc2FjdGlvbnNCeUFjY291bnQ6IFJlY29yZDxzdHJpbmcsIFRyYW5zYWN0aW9uW10+ID0ge307XG5cbiAgaWYgKCFkYXRhIHx8ICFkYXRhLnJlc3VsdCkgcmV0dXJuIHRyYW5zYWN0aW9uc0J5QWNjb3VudDtcblxuICBkYXRhLnJlc3VsdC50cmFuc2FjdGlvbnNcbiAgICAvLyBGaWx0ZXIgb3V0IG5vbi10cmFuc2FjdGlvbnMgd2l0aG91dCBhIHBsYW4gdHlwZSwgZS5nLiBzdW1tYXJ5IHJvd3NcbiAgICAuZmlsdGVyKHRyYW5zYWN0aW9uID0+ICEhdHJhbnNhY3Rpb24ucGxhbk5hbWUpXG4gICAgLmZvckVhY2goKHRyYW5zYWN0aW9uOiBTY3JhcGVkVHJhbnNhY3Rpb24pID0+IHtcbiAgICAgIGlmICghdHJhbnNhY3Rpb25zQnlBY2NvdW50W3RyYW5zYWN0aW9uLnNob3J0Q2FyZE51bWJlcl0pIHtcbiAgICAgICAgdHJhbnNhY3Rpb25zQnlBY2NvdW50W3RyYW5zYWN0aW9uLnNob3J0Q2FyZE51bWJlcl0gPSBbXTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbWFwcGVkVHJhbnNhY3Rpb24gPSBtYXBUcmFuc2FjdGlvbih0cmFuc2FjdGlvbik7XG4gICAgICB0cmFuc2FjdGlvbnNCeUFjY291bnRbdHJhbnNhY3Rpb24uc2hvcnRDYXJkTnVtYmVyXS5wdXNoKG1hcHBlZFRyYW5zYWN0aW9uKTtcbiAgICB9KTtcblxuICByZXR1cm4gdHJhbnNhY3Rpb25zQnlBY2NvdW50O1xufVxuXG5mdW5jdGlvbiBhZGRSZXN1bHQoYWxsUmVzdWx0czogUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25bXT4sIHJlc3VsdDogUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25bXT4pIHtcbiAgY29uc3QgY2xvbmVkUmVzdWx0czogUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25bXT4gPSB7IC4uLmFsbFJlc3VsdHMgfTtcbiAgT2JqZWN0LmtleXMocmVzdWx0KS5mb3JFYWNoKGFjY291bnROdW1iZXIgPT4ge1xuICAgIGlmICghY2xvbmVkUmVzdWx0c1thY2NvdW50TnVtYmVyXSkge1xuICAgICAgY2xvbmVkUmVzdWx0c1thY2NvdW50TnVtYmVyXSA9IFtdO1xuICAgIH1cbiAgICBjbG9uZWRSZXN1bHRzW2FjY291bnROdW1iZXJdLnB1c2goLi4ucmVzdWx0W2FjY291bnROdW1iZXJdKTtcbiAgfSk7XG4gIHJldHVybiBjbG9uZWRSZXN1bHRzO1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlVHJhbnNhY3Rpb25zKFxuICB0eG5zOiBUcmFuc2FjdGlvbltdLFxuICBzdGFydE1vbWVudDogbW9tZW50Lk1vbWVudCxcbiAgY29tYmluZUluc3RhbGxtZW50czogYm9vbGVhbixcbiAgZW5hYmxlVHJhbnNhY3Rpb25zRmlsdGVyQnlEYXRlOiBib29sZWFuLFxuKSB7XG4gIGxldCBjbG9uZWRUeG5zID0gQXJyYXkuZnJvbSh0eG5zKTtcbiAgaWYgKCFjb21iaW5lSW5zdGFsbG1lbnRzKSB7XG4gICAgY2xvbmVkVHhucyA9IGZpeEluc3RhbGxtZW50cyhjbG9uZWRUeG5zKTtcbiAgfVxuICBjbG9uZWRUeG5zID0gc29ydFRyYW5zYWN0aW9uc0J5RGF0ZShjbG9uZWRUeG5zKTtcbiAgY2xvbmVkVHhucyA9IGVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZVxuICAgID8gZmlsdGVyT2xkVHJhbnNhY3Rpb25zKGNsb25lZFR4bnMsIHN0YXJ0TW9tZW50LCBjb21iaW5lSW5zdGFsbG1lbnRzIHx8IGZhbHNlKVxuICAgIDogY2xvbmVkVHhucztcbiAgcmV0dXJuIGNsb25lZFR4bnM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoVHJhbnNhY3Rpb25zKHBhZ2U6IFBhZ2UsIG9wdGlvbnM6IFNjcmFwZXJPcHRpb25zKSB7XG4gIGNvbnN0IGZ1dHVyZU1vbnRoc1RvU2NyYXBlID0gb3B0aW9ucy5mdXR1cmVNb250aHNUb1NjcmFwZSA/PyAxO1xuICBjb25zdCBkZWZhdWx0U3RhcnRNb21lbnQgPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAneWVhcnMnKTtcbiAgY29uc3Qgc3RhcnRNb21lbnRMaW1pdCA9IG1vbWVudCgpLnN1YnRyYWN0KDQsICd5ZWFycycpO1xuICBjb25zdCBzdGFydERhdGUgPSBvcHRpb25zLnN0YXJ0RGF0ZSB8fCBkZWZhdWx0U3RhcnRNb21lbnQudG9EYXRlKCk7XG4gIGNvbnN0IHN0YXJ0TW9tZW50ID0gbW9tZW50Lm1heChzdGFydE1vbWVudExpbWl0LCBtb21lbnQoc3RhcnREYXRlKSk7XG4gIGNvbnN0IGFsbE1vbnRocyA9IGdldEFsbE1vbnRoTW9tZW50cyhzdGFydE1vbWVudCwgZnV0dXJlTW9udGhzVG9TY3JhcGUpO1xuXG4gIGF3YWl0IGxvYWRDYXRlZ29yaWVzKHBhZ2UpO1xuXG4gIGxldCBhbGxSZXN1bHRzOiBSZWNvcmQ8c3RyaW5nLCBUcmFuc2FjdGlvbltdPiA9IHt9O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGFsbE1vbnRocy5sZW5ndGg7IGkgKz0gMSkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZldGNoVHJhbnNhY3Rpb25zRm9yTW9udGgocGFnZSwgYWxsTW9udGhzW2ldKTtcbiAgICBhbGxSZXN1bHRzID0gYWRkUmVzdWx0KGFsbFJlc3VsdHMsIHJlc3VsdCk7XG4gIH1cblxuICBPYmplY3Qua2V5cyhhbGxSZXN1bHRzKS5mb3JFYWNoKGFjY291bnROdW1iZXIgPT4ge1xuICAgIGxldCB0eG5zID0gYWxsUmVzdWx0c1thY2NvdW50TnVtYmVyXTtcbiAgICB0eG5zID0gcHJlcGFyZVRyYW5zYWN0aW9ucyhcbiAgICAgIHR4bnMsXG4gICAgICBzdGFydE1vbWVudCxcbiAgICAgIG9wdGlvbnMuY29tYmluZUluc3RhbGxtZW50cyB8fCBmYWxzZSxcbiAgICAgIG9wdGlvbnMub3V0cHV0RGF0YT8uZW5hYmxlVHJhbnNhY3Rpb25zRmlsdGVyQnlEYXRlID8/IHRydWUsXG4gICAgKTtcbiAgICBhbGxSZXN1bHRzW2FjY291bnROdW1iZXJdID0gdHhucztcbiAgfSk7XG5cbiAgcmV0dXJuIGFsbFJlc3VsdHM7XG59XG5cbmZ1bmN0aW9uIGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKHBhZ2U6IFBhZ2UpOiBQb3NzaWJsZUxvZ2luUmVzdWx0cyB7XG4gIGNvbnN0IHVybHM6IFBvc3NpYmxlTG9naW5SZXN1bHRzID0ge307XG4gIHVybHNbTG9naW5SZXN1bHRzLlN1Y2Nlc3NdID0gW1NVQ0NFU1NfVVJMXTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuQ2hhbmdlUGFzc3dvcmRdID0gW1BBU1NXT1JEX0VYUElSRURfVVJMXTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkXSA9IFtcbiAgICBhc3luYyAoKSA9PiB7XG4gICAgICByZXR1cm4gZWxlbWVudFByZXNlbnRPblBhZ2UocGFnZSwgSU5WQUxJRF9ERVRBSUxTX1NFTEVDVE9SKTtcbiAgICB9LFxuICBdO1xuICB1cmxzW0xvZ2luUmVzdWx0cy5Vbmtub3duRXJyb3JdID0gW1xuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIHJldHVybiBlbGVtZW50UHJlc2VudE9uUGFnZShwYWdlLCBMT0dJTl9FUlJPUl9TRUxFQ1RPUik7XG4gICAgfSxcbiAgXTtcbiAgcmV0dXJuIHVybHM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICByZXR1cm4gW1xuICAgIHsgc2VsZWN0b3I6ICcjdXNlci1uYW1lJywgdmFsdWU6IGNyZWRlbnRpYWxzLnVzZXJuYW1lIH0sXG4gICAgeyBzZWxlY3RvcjogJyNwYXNzd29yZCcsIHZhbHVlOiBjcmVkZW50aWFscy5wYXNzd29yZCB9LFxuICBdO1xufVxuXG50eXBlIFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzID0geyB1c2VybmFtZTogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH07XG5cbmNsYXNzIE1heFNjcmFwZXIgZXh0ZW5kcyBCYXNlU2NyYXBlcldpdGhCcm93c2VyPFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzPiB7XG4gIGdldExvZ2luT3B0aW9ucyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpOiBMb2dpbk9wdGlvbnMge1xuICAgIHJldHVybiB7XG4gICAgICBsb2dpblVybDogTE9HSU5fVVJMLFxuICAgICAgZmllbGRzOiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFscyksXG4gICAgICBzdWJtaXRCdXR0b25TZWxlY3RvcjogJ2FwcC11c2VyLWxvZ2luLWZvcm0gLmdlbmVyYWwtYnV0dG9uLnNlbmQtbWUtY29kZScsXG4gICAgICBwcmVBY3Rpb246IGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKGF3YWl0IGVsZW1lbnRQcmVzZW50T25QYWdlKHRoaXMucGFnZSwgJyNjbG9zZVBvcHVwJykpIHtcbiAgICAgICAgICBhd2FpdCBjbGlja0J1dHRvbih0aGlzLnBhZ2UsICcjY2xvc2VQb3B1cCcpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGNsaWNrQnV0dG9uKHRoaXMucGFnZSwgJy5wZXJzb25hbC1hcmVhID4gYS5nby10by1wZXJzb25hbC1hcmVhJyk7XG4gICAgICAgIGlmIChhd2FpdCBlbGVtZW50UHJlc2VudE9uUGFnZSh0aGlzLnBhZ2UsICcubG9naW4tbGluayNwcml2YXRlJykpIHtcbiAgICAgICAgICBhd2FpdCBjbGlja0J1dHRvbih0aGlzLnBhZ2UsICcubG9naW4tbGluayNwcml2YXRlJyk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHRoaXMucGFnZSwgJyNsb2dpbi1wYXNzd29yZC1saW5rJywgdHJ1ZSk7XG4gICAgICAgIGF3YWl0IGNsaWNrQnV0dG9uKHRoaXMucGFnZSwgJyNsb2dpbi1wYXNzd29yZC1saW5rJyk7XG4gICAgICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsICcjbG9naW4tcGFzc3dvcmQudGFiLXBhbmUuYWN0aXZlIGFwcC11c2VyLWxvZ2luLWZvcm0nLCB0cnVlKTtcbiAgICAgIH0sXG4gICAgICBjaGVja1JlYWRpbmVzczogYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCAnLnBlcnNvbmFsLWFyZWEgPiBhLmdvLXRvLXBlcnNvbmFsLWFyZWEnLCB0cnVlKTtcbiAgICAgIH0sXG4gICAgICBwb3N0QWN0aW9uOiBhc3luYyAoKSA9PiByZWRpcmVjdE9yRGlhbG9nKHRoaXMucGFnZSksXG4gICAgICBwb3NzaWJsZVJlc3VsdHM6IGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKHRoaXMucGFnZSksXG4gICAgICB3YWl0VW50aWw6ICdkb21jb250ZW50bG9hZGVkJyxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hEYXRhKCkge1xuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBmZXRjaFRyYW5zYWN0aW9ucyh0aGlzLnBhZ2UsIHRoaXMub3B0aW9ucyk7XG4gICAgY29uc3QgYWNjb3VudHMgPSBPYmplY3Qua2V5cyhyZXN1bHRzKS5tYXAoYWNjb3VudE51bWJlciA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhY2NvdW50TnVtYmVyLFxuICAgICAgICB0eG5zOiByZXN1bHRzW2FjY291bnROdW1iZXJdLFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgYWNjb3VudHMsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBNYXhTY3JhcGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsU0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUUsVUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsTUFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksTUFBQSxHQUFBSixPQUFBO0FBQ0EsSUFBQUsscUJBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLE1BQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLFdBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLGFBQUEsR0FBQVIsT0FBQTtBQUNBLElBQUFTLGNBQUEsR0FBQVQsT0FBQTtBQUNB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
299
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29uc3RhbnRzIiwiX2RhdGVzIiwiX2RlYnVnIiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX2ZldGNoIiwiX25hdmlnYXRpb24iLCJfdHJhbnNhY3Rpb25zIiwiX3RyYW5zYWN0aW9uczIiLCJfYmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImUiLCJfX2VzTW9kdWxlIiwiZGVmYXVsdCIsImRlYnVnIiwiZ2V0RGVidWciLCJCQVNFX0FQSV9BQ1RJT05TX1VSTCIsIkJBU0VfV0VMQ09NRV9VUkwiLCJMT0dJTl9VUkwiLCJQQVNTV09SRF9FWFBJUkVEX1VSTCIsIlNVQ0NFU1NfVVJMIiwiTWF4UGxhbk5hbWUiLCJJTlZBTElEX0RFVEFJTFNfU0VMRUNUT1IiLCJMT0dJTl9FUlJPUl9TRUxFQ1RPUiIsImNhdGVnb3JpZXMiLCJNYXAiLCJyZWRpcmVjdE9yRGlhbG9nIiwicGFnZSIsIlByb21pc2UiLCJyYWNlIiwid2FpdEZvclJlZGlyZWN0Iiwid2FpdFVudGlsRWxlbWVudEZvdW5kIiwiZ2V0VHJhbnNhY3Rpb25zVXJsIiwibW9udGhNb21lbnQiLCJtb250aCIsInllYXIiLCJkYXRlIiwidXJsIiwiVVJMIiwic2VhcmNoUGFyYW1zIiwic2V0IiwidG9TdHJpbmciLCJsb2FkQ2F0ZWdvcmllcyIsInJlcyIsImZldGNoR2V0V2l0aGluUGFnZSIsIkFycmF5IiwiaXNBcnJheSIsInJlc3VsdCIsImxlbmd0aCIsImZvckVhY2giLCJpZCIsIm5hbWUiLCJnZXRUcmFuc2FjdGlvblR5cGUiLCJwbGFuTmFtZSIsInBsYW5UeXBlSWQiLCJjbGVhbmVkVXBUeG5UeXBlU3RyIiwicmVwbGFjZSIsInRyaW0iLCJJbW1lZGlhdGVDaGFyZ2UiLCJOb3JtYWwiLCJNb250aGx5Q2hhcmdlIiwiT25lTW9udGhQb3N0cG9uZWQiLCJNb250aGx5UG9zdHBvbmVkIiwiRnV0dXJlUHVyY2hhc2VGaW5hbmNpbmciLCJNb250aGx5UGF5bWVudCIsIk1vbnRobHlQb3N0cG9uZWRJbnN0YWxsbWVudHMiLCJUaGlydHlEYXlzUGx1cyIsIlR3b01vbnRoc1Bvc3Rwb25lZCIsIlR3b01vbnRoc1Bvc3Rwb25lZDIiLCJBY2N1bXVsYXRpbmdCYXNrZXQiLCJJbnRlcm5ldFNob3BwaW5nIiwiTW9udGhseUNoYXJnZVBsdXNJbnRlcmVzdCIsIlBvc3Rwb25lZFRyYW5zYWN0aW9uSW5zdGFsbG1lbnRzIiwiUmVwbGFjZW1lbnRDYXJkIiwiRWFybHlSZXBheW1lbnQiLCJNb250aGx5Q2FyZEZlZSIsIkN1cnJlbmN5UG9ja2V0IiwiVHJhbnNhY3Rpb25UeXBlcyIsIkluc3RhbGxtZW50cyIsIkNyZWRpdCIsIkNyZWRpdE91dHNpZGVUaGVMaW1pdCIsIkVycm9yIiwiZ2V0SW5zdGFsbG1lbnRzSW5mbyIsImNvbW1lbnRzIiwidW5kZWZpbmVkIiwibWF0Y2hlcyIsIm1hdGNoIiwibnVtYmVyIiwicGFyc2VJbnQiLCJ0b3RhbCIsImdldENoYXJnZWRDdXJyZW5jeSIsImN1cnJlbmN5SWQiLCJTSEVLRUxfQ1VSUkVOQ1kiLCJET0xMQVJfQ1VSUkVOQ1kiLCJFVVJPX0NVUlJFTkNZIiwiZ2V0TWVtbyIsImZ1bmRzVHJhbnNmZXJSZWNlaXZlck9yVHJhbnNmZXIiLCJmdW5kc1RyYW5zZmVyQ29tbWVudCIsIm1lbW8iLCJtYXBUcmFuc2FjdGlvbiIsInJhd1RyYW5zYWN0aW9uIiwiaXNQZW5kaW5nIiwicGF5bWVudERhdGUiLCJwcm9jZXNzZWREYXRlIiwibW9tZW50IiwicHVyY2hhc2VEYXRlIiwidG9JU09TdHJpbmciLCJzdGF0dXMiLCJUcmFuc2FjdGlvblN0YXR1c2VzIiwiUGVuZGluZyIsIkNvbXBsZXRlZCIsImluc3RhbGxtZW50cyIsImlkZW50aWZpZXIiLCJkZWFsRGF0YSIsImFybiIsInR5cGUiLCJvcmlnaW5hbEFtb3VudCIsIm9yaWdpbmFsQ3VycmVuY3kiLCJjaGFyZ2VkQW1vdW50IiwiYWN0dWFsUGF5bWVudEFtb3VudCIsImNoYXJnZWRDdXJyZW5jeSIsInBheW1lbnRDdXJyZW5jeSIsImRlc2NyaXB0aW9uIiwibWVyY2hhbnROYW1lIiwiY2F0ZWdvcnkiLCJnZXQiLCJjYXRlZ29yeUlkIiwiZmV0Y2hUcmFuc2FjdGlvbnNGb3JNb250aCIsImRhdGEiLCJ0cmFuc2FjdGlvbnNCeUFjY291bnQiLCJ0cmFuc2FjdGlvbnMiLCJmaWx0ZXIiLCJ0cmFuc2FjdGlvbiIsInNob3J0Q2FyZE51bWJlciIsIm1hcHBlZFRyYW5zYWN0aW9uIiwicHVzaCIsImFkZFJlc3VsdCIsImFsbFJlc3VsdHMiLCJjbG9uZWRSZXN1bHRzIiwiT2JqZWN0Iiwia2V5cyIsImFjY291bnROdW1iZXIiLCJwcmVwYXJlVHJhbnNhY3Rpb25zIiwidHhucyIsInN0YXJ0TW9tZW50IiwiY29tYmluZUluc3RhbGxtZW50cyIsImVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZSIsImNsb25lZFR4bnMiLCJmcm9tIiwiZml4SW5zdGFsbG1lbnRzIiwic29ydFRyYW5zYWN0aW9uc0J5RGF0ZSIsImZpbHRlck9sZFRyYW5zYWN0aW9ucyIsImZldGNoVHJhbnNhY3Rpb25zIiwib3B0aW9ucyIsImZ1dHVyZU1vbnRoc1RvU2NyYXBlIiwiZGVmYXVsdFN0YXJ0TW9tZW50Iiwic3VidHJhY3QiLCJzdGFydE1vbWVudExpbWl0Iiwic3RhcnREYXRlIiwidG9EYXRlIiwibWF4IiwiYWxsTW9udGhzIiwiZ2V0QWxsTW9udGhNb21lbnRzIiwiaSIsIm91dHB1dERhdGEiLCJnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyIsInVybHMiLCJMb2dpblJlc3VsdHMiLCJTdWNjZXNzIiwiQ2hhbmdlUGFzc3dvcmQiLCJJbnZhbGlkUGFzc3dvcmQiLCJlbGVtZW50UHJlc2VudE9uUGFnZSIsIlVua25vd25FcnJvciIsImNyZWF0ZUxvZ2luRmllbGRzIiwiY3JlZGVudGlhbHMiLCJzZWxlY3RvciIsInZhbHVlIiwidXNlcm5hbWUiLCJwYXNzd29yZCIsIk1heFNjcmFwZXIiLCJCYXNlU2NyYXBlcldpdGhCcm93c2VyIiwiZ2V0TG9naW5PcHRpb25zIiwibG9naW5VcmwiLCJmaWVsZHMiLCJzdWJtaXRCdXR0b25TZWxlY3RvciIsInByZUFjdGlvbiIsImNsaWNrQnV0dG9uIiwiY2hlY2tSZWFkaW5lc3MiLCJwb3N0QWN0aW9uIiwicG9zc2libGVSZXN1bHRzIiwid2FpdFVudGlsIiwiZmV0Y2hEYXRhIiwicmVzdWx0cyIsImFjY291bnRzIiwibWFwIiwic3VjY2VzcyIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9tYXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IG1vbWVudCwgeyB0eXBlIE1vbWVudCB9IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyB0eXBlIFBhZ2UgfSBmcm9tICdwdXBwZXRlZXItY29yZSc7XG5pbXBvcnQgeyBET0xMQVJfQ1VSUkVOQ1ksIEVVUk9fQ1VSUkVOQ1ksIFNIRUtFTF9DVVJSRU5DWSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgZ2V0QWxsTW9udGhNb21lbnRzIGZyb20gJy4uL2hlbHBlcnMvZGF0ZXMnO1xuaW1wb3J0IHsgZ2V0RGVidWcgfSBmcm9tICcuLi9oZWxwZXJzL2RlYnVnJztcbmltcG9ydCB7IGNsaWNrQnV0dG9uLCBlbGVtZW50UHJlc2VudE9uUGFnZSwgd2FpdFVudGlsRWxlbWVudEZvdW5kIH0gZnJvbSAnLi4vaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMnO1xuaW1wb3J0IHsgZmV0Y2hHZXRXaXRoaW5QYWdlIH0gZnJvbSAnLi4vaGVscGVycy9mZXRjaCc7XG5pbXBvcnQgeyB3YWl0Rm9yUmVkaXJlY3QgfSBmcm9tICcuLi9oZWxwZXJzL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgZmlsdGVyT2xkVHJhbnNhY3Rpb25zLCBmaXhJbnN0YWxsbWVudHMsIHNvcnRUcmFuc2FjdGlvbnNCeURhdGUgfSBmcm9tICcuLi9oZWxwZXJzL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblN0YXR1c2VzLCBUcmFuc2FjdGlvblR5cGVzLCB0eXBlIFRyYW5zYWN0aW9uIH0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7XG4gIEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsXG4gIExvZ2luUmVzdWx0cyxcbiAgdHlwZSBMb2dpbk9wdGlvbnMsXG4gIHR5cGUgUG9zc2libGVMb2dpblJlc3VsdHMsXG59IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQgeyB0eXBlIFNjcmFwZXJPcHRpb25zIH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuXG5jb25zdCBkZWJ1ZyA9IGdldERlYnVnKCdtYXgnKTtcblxuZXhwb3J0IGludGVyZmFjZSBTY3JhcGVkVHJhbnNhY3Rpb24ge1xuICBzaG9ydENhcmROdW1iZXI6IHN0cmluZztcbiAgcGF5bWVudERhdGU/OiBzdHJpbmc7XG4gIHB1cmNoYXNlRGF0ZTogc3RyaW5nO1xuICBhY3R1YWxQYXltZW50QW1vdW50OiBzdHJpbmc7XG4gIHBheW1lbnRDdXJyZW5jeTogbnVtYmVyIHwgbnVsbDtcbiAgb3JpZ2luYWxDdXJyZW5jeTogc3RyaW5nO1xuICBvcmlnaW5hbEFtb3VudDogbnVtYmVyO1xuICBwbGFuTmFtZTogc3RyaW5nO1xuICBwbGFuVHlwZUlkOiBudW1iZXI7XG4gIGNvbW1lbnRzOiBzdHJpbmc7XG4gIG1lcmNoYW50TmFtZTogc3RyaW5nO1xuICBjYXRlZ29yeUlkOiBudW1iZXI7XG4gIGZ1bmRzVHJhbnNmZXJDb21tZW50Pzogc3RyaW5nO1xuICBmdW5kc1RyYW5zZmVyUmVjZWl2ZXJPclRyYW5zZmVyPzogc3RyaW5nO1xuICBkZWFsRGF0YT86IHtcbiAgICBhcm46IHN0cmluZztcbiAgfTtcbn1cblxuY29uc3QgQkFTRV9BUElfQUNUSU9OU19VUkwgPSAnaHR0cHM6Ly9vbmxpbmVsY2FwaS5tYXguY28uaWwnO1xuY29uc3QgQkFTRV9XRUxDT01FX1VSTCA9ICdodHRwczovL3d3dy5tYXguY28uaWwnO1xuXG5jb25zdCBMT0dJTl9VUkwgPSBgJHtCQVNFX1dFTENPTUVfVVJMfS9ob21lcGFnZS93ZWxjb21lYDtcbmNvbnN0IFBBU1NXT1JEX0VYUElSRURfVVJMID0gYCR7QkFTRV9XRUxDT01FX1VSTH0vcmVuZXctcGFzc3dvcmRgO1xuY29uc3QgU1VDQ0VTU19VUkwgPSBgJHtCQVNFX1dFTENPTUVfVVJMfS9ob21lcGFnZS9wZXJzb25hbGA7XG5cbmVudW0gTWF4UGxhbk5hbWUge1xuICBOb3JtYWwgPSAn16jXkteZ15zXlCcsXG4gIEltbWVkaWF0ZUNoYXJnZSA9ICfXl9eZ15XXkSDXoteh16fXldeqINee15nXmdeT15knLFxuICBJbnRlcm5ldFNob3BwaW5nID0gJ9eQ15nXoNeY16jXoNeYL9eX15VcItecJyxcbiAgSW5zdGFsbG1lbnRzID0gJ9eq16nXnNeV157XmdedJyxcbiAgTW9udGhseUNoYXJnZSA9ICfXl9eZ15XXkSDXl9eV15PXqdeZJyxcbiAgT25lTW9udGhQb3N0cG9uZWQgPSAn15PXl9eV15kg15fXldeT16knLFxuICBNb250aGx5UG9zdHBvbmVkID0gJ9eT15fXldeZINec15fXmdeV15Eg15TXl9eV15PXqdeZJyxcbiAgTW9udGhseVBheW1lbnQgPSAn16rXqdec15XXnSDXl9eV15PXqdeZJyxcbiAgRnV0dXJlUHVyY2hhc2VGaW5hbmNpbmcgPSAn157Xmdee15XXnyDXnNeo15vXmdep15Qg16LXqteZ15PXmdeqJyxcbiAgTW9udGhseVBvc3Rwb25lZEluc3RhbGxtZW50cyA9ICfXk9eX15XXmSDXl9eV15PXqSDXqtep15zXldee15nXnScsXG4gIFRoaXJ0eURheXNQbHVzID0gJ9ei16HXp9eqIDMwINek15zXldehJyxcbiAgVHdvTW9udGhzUG9zdHBvbmVkID0gJ9eT15fXldeZINeX15XXk9ep15nXmdedJyxcbiAgVHdvTW9udGhzUG9zdHBvbmVkMiA9IFwi15PXl9eV15kgMiDXlycg16rXqdec15XXnteZ151cIixcbiAgTW9udGhseUNoYXJnZVBsdXNJbnRlcmVzdCA9ICfXl9eV15PXqdeZICsg16jXmdeR15nXqicsXG4gIENyZWRpdCA9ICfXp9eo15PXmdeYJyxcbiAgQ3JlZGl0T3V0c2lkZVRoZUxpbWl0ID0gJ9en16jXk9eZ15gt157Xl9eV16Ug15zXnteh15LXqNeqJyxcbiAgQWNjdW11bGF0aW5nQmFza2V0ID0gJ9eh15wg157XpteY15HXqCcsXG4gIFBvc3Rwb25lZFRyYW5zYWN0aW9uSW5zdGFsbG1lbnRzID0gJ9ek16jXmdeh16og15TXoteh16fXlCDXlNeT15fXldeZ15QnLFxuICBSZXBsYWNlbWVudENhcmQgPSAn15vXqNeY15nXoSDXl9ec15nXpNeZJyxcbiAgRWFybHlSZXBheW1lbnQgPSAn16TXqNei15XXnyDXnteV16fXk9edJyxcbiAgTW9udGhseUNhcmRGZWUgPSAn15PXnteZINeb16jXmNeZ16EnLFxuICBDdXJyZW5jeVBvY2tldCA9ICfXl9eZ15XXkSDXkNeo16DXpyDXnteY15cnLFxufVxuXG5jb25zdCBJTlZBTElEX0RFVEFJTFNfU0VMRUNUT1IgPSAnI3BvcHVwV3JvbmdEZXRhaWxzJztcbmNvbnN0IExPR0lOX0VSUk9SX1NFTEVDVE9SID0gJyNwb3B1cENhcmRIb2xkZXJzTG9naW5FcnJvcic7XG5cbmNvbnN0IGNhdGVnb3JpZXMgPSBuZXcgTWFwPG51bWJlciwgc3RyaW5nPigpO1xuXG5mdW5jdGlvbiByZWRpcmVjdE9yRGlhbG9nKHBhZ2U6IFBhZ2UpIHtcbiAgcmV0dXJuIFByb21pc2UucmFjZShbXG4gICAgd2FpdEZvclJlZGlyZWN0KHBhZ2UsIDIwMDAwLCBmYWxzZSwgW0JBU0VfV0VMQ09NRV9VUkwsIGAke0JBU0VfV0VMQ09NRV9VUkx9L2BdKSxcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgSU5WQUxJRF9ERVRBSUxTX1NFTEVDVE9SLCB0cnVlKSxcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgTE9HSU5fRVJST1JfU0VMRUNUT1IsIHRydWUpLFxuICBdKTtcbn1cblxuZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25zVXJsKG1vbnRoTW9tZW50OiBNb21lbnQpIHtcbiAgY29uc3QgbW9udGggPSBtb250aE1vbWVudC5tb250aCgpICsgMTtcbiAgY29uc3QgeWVhciA9IG1vbnRoTW9tZW50LnllYXIoKTtcbiAgY29uc3QgZGF0ZSA9IGAke3llYXJ9LSR7bW9udGh9LTAxYDtcblxuICAvKipcbiAgICogdXJsIGV4cGxhbmF0aW9uOlxuICAgKiB1c2VySW5kZXg6IC0xIGZvciBhbGwgYWNjb3VudCBvd25lcnNcbiAgICogY2FyZEluZGV4OiAtMSBmb3IgYWxsIGNhcmRzIHVuZGVyIHRoZSBhY2NvdW50XG4gICAqIGFsbCBvdGhlciBxdWVyeSBwYXJhbXMgYXJlIHN0YXRpYywgYmVzaWRlIHRoZSBkYXRlIHdoaWNoIGNoYW5nZXMgZm9yIHJlcXVlc3QgcGVyIG1vbnRoXG4gICAqL1xuICBjb25zdCB1cmwgPSBuZXcgVVJMKGAke0JBU0VfQVBJX0FDVElPTlNfVVJMfS9hcGkvcmVnaXN0ZXJlZC90cmFuc2FjdGlvbkRldGFpbHMvZ2V0VHJhbnNhY3Rpb25zQW5kR3JhcGhzYCk7XG4gIHVybC5zZWFyY2hQYXJhbXMuc2V0KFxuICAgICdmaWx0ZXJEYXRhJyxcbiAgICBge1widXNlckluZGV4XCI6LTEsXCJjYXJkSW5kZXhcIjotMSxcIm1vbnRoVmlld1wiOnRydWUsXCJkYXRlXCI6XCIke2RhdGV9XCIsXCJkYXRlc1wiOntcInN0YXJ0RGF0ZVwiOlwiMFwiLFwiZW5kRGF0ZVwiOlwiMFwifSxcImJhbmtBY2NvdW50XCI6e1wiYmFua0FjY291bnRJbmRleFwiOi0xLFwiY2FyZHNcIjpudWxsfX1gLFxuICApO1xuICB1cmwuc2VhcmNoUGFyYW1zLnNldCgnZmlyc3RDYWxsQ2FyZEluZGV4JywgJy0xJyk7XG4gIHJldHVybiB1cmwudG9TdHJpbmcoKTtcbn1cblxuaW50ZXJmYWNlIEZldGNoQ2F0ZWdvcnlSZXN1bHQge1xuICByZXN1bHQ/OiBBcnJheTx7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBuYW1lOiBzdHJpbmc7XG4gIH0+O1xufVxuXG5hc3luYyBmdW5jdGlvbiBsb2FkQ2F0ZWdvcmllcyhwYWdlOiBQYWdlKSB7XG4gIGRlYnVnKCdMb2FkaW5nIGNhdGVnb3JpZXMnKTtcbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2hHZXRXaXRoaW5QYWdlPEZldGNoQ2F0ZWdvcnlSZXN1bHQ+KHBhZ2UsIGAke0JBU0VfQVBJX0FDVElPTlNfVVJMfS9hcGkvY29udGVudHMvZ2V0Q2F0ZWdvcmllc2ApO1xuICBpZiAocmVzICYmIEFycmF5LmlzQXJyYXkocmVzLnJlc3VsdCkpIHtcbiAgICBkZWJ1ZyhgJHtyZXMucmVzdWx0Lmxlbmd0aH0gY2F0ZWdvcmllcyBsb2FkZWRgKTtcbiAgICByZXMucmVzdWx0Py5mb3JFYWNoKCh7IGlkLCBuYW1lIH0pID0+IGNhdGVnb3JpZXMuc2V0KGlkLCBuYW1lKSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0VHJhbnNhY3Rpb25UeXBlKHBsYW5OYW1lOiBzdHJpbmcsIHBsYW5UeXBlSWQ6IG51bWJlcikge1xuICBjb25zdCBjbGVhbmVkVXBUeG5UeXBlU3RyID0gcGxhbk5hbWUucmVwbGFjZSgnXFx0JywgJyAnKS50cmltKCkgYXMgTWF4UGxhbk5hbWU7XG4gIHN3aXRjaCAoY2xlYW5lZFVwVHhuVHlwZVN0cikge1xuICAgIGNhc2UgTWF4UGxhbk5hbWUuSW1tZWRpYXRlQ2hhcmdlOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuTm9ybWFsOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuTW9udGhseUNoYXJnZTpcbiAgICBjYXNlIE1heFBsYW5OYW1lLk9uZU1vbnRoUG9zdHBvbmVkOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuTW9udGhseVBvc3Rwb25lZDpcbiAgICBjYXNlIE1heFBsYW5OYW1lLkZ1dHVyZVB1cmNoYXNlRmluYW5jaW5nOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuTW9udGhseVBheW1lbnQ6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5Nb250aGx5UG9zdHBvbmVkSW5zdGFsbG1lbnRzOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuVGhpcnR5RGF5c1BsdXM6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5Ud29Nb250aHNQb3N0cG9uZWQ6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5Ud29Nb250aHNQb3N0cG9uZWQyOlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuQWNjdW11bGF0aW5nQmFza2V0OlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuSW50ZXJuZXRTaG9wcGluZzpcbiAgICBjYXNlIE1heFBsYW5OYW1lLk1vbnRobHlDaGFyZ2VQbHVzSW50ZXJlc3Q6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5Qb3N0cG9uZWRUcmFuc2FjdGlvbkluc3RhbGxtZW50czpcbiAgICBjYXNlIE1heFBsYW5OYW1lLlJlcGxhY2VtZW50Q2FyZDpcbiAgICBjYXNlIE1heFBsYW5OYW1lLkVhcmx5UmVwYXltZW50OlxuICAgIGNhc2UgTWF4UGxhbk5hbWUuTW9udGhseUNhcmRGZWU6XG4gICAgY2FzZSBNYXhQbGFuTmFtZS5DdXJyZW5jeVBvY2tldDpcbiAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbDtcbiAgICBjYXNlIE1heFBsYW5OYW1lLkluc3RhbGxtZW50czpcbiAgICBjYXNlIE1heFBsYW5OYW1lLkNyZWRpdDpcbiAgICBjYXNlIE1heFBsYW5OYW1lLkNyZWRpdE91dHNpZGVUaGVMaW1pdDpcbiAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGVzLkluc3RhbGxtZW50cztcbiAgICBkZWZhdWx0OlxuICAgICAgc3dpdGNoIChwbGFuVHlwZUlkKSB7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGVzLkluc3RhbGxtZW50cztcbiAgICAgICAgY2FzZSA1OlxuICAgICAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbDtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gdHJhbnNhY3Rpb24gdHlwZSAke2NsZWFuZWRVcFR4blR5cGVTdHIgYXMgc3RyaW5nfWApO1xuICAgICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldEluc3RhbGxtZW50c0luZm8oY29tbWVudHM6IHN0cmluZykge1xuICBpZiAoIWNvbW1lbnRzKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBjb25zdCBtYXRjaGVzID0gY29tbWVudHMubWF0Y2goL1xcZCsvZyk7XG4gIGlmICghbWF0Y2hlcyB8fCBtYXRjaGVzLmxlbmd0aCA8IDIpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBudW1iZXI6IHBhcnNlSW50KG1hdGNoZXNbMF0sIDEwKSxcbiAgICB0b3RhbDogcGFyc2VJbnQobWF0Y2hlc1sxXSwgMTApLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRDaGFyZ2VkQ3VycmVuY3koY3VycmVuY3lJZDogbnVtYmVyIHwgbnVsbCkge1xuICBzd2l0Y2ggKGN1cnJlbmN5SWQpIHtcbiAgICBjYXNlIDM3NjpcbiAgICAgIHJldHVybiBTSEVLRUxfQ1VSUkVOQ1k7XG4gICAgY2FzZSA4NDA6XG4gICAgICByZXR1cm4gRE9MTEFSX0NVUlJFTkNZO1xuICAgIGNhc2UgOTc4OlxuICAgICAgcmV0dXJuIEVVUk9fQ1VSUkVOQ1k7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1lbW8oe1xuICBjb21tZW50cyxcbiAgZnVuZHNUcmFuc2ZlclJlY2VpdmVyT3JUcmFuc2ZlcixcbiAgZnVuZHNUcmFuc2ZlckNvbW1lbnQsXG59OiBQaWNrPFNjcmFwZWRUcmFuc2FjdGlvbiwgJ2NvbW1lbnRzJyB8ICdmdW5kc1RyYW5zZmVyUmVjZWl2ZXJPclRyYW5zZmVyJyB8ICdmdW5kc1RyYW5zZmVyQ29tbWVudCc+KSB7XG4gIGlmIChmdW5kc1RyYW5zZmVyUmVjZWl2ZXJPclRyYW5zZmVyKSB7XG4gICAgY29uc3QgbWVtbyA9IGNvbW1lbnRzID8gYCR7Y29tbWVudHN9ICR7ZnVuZHNUcmFuc2ZlclJlY2VpdmVyT3JUcmFuc2Zlcn1gIDogZnVuZHNUcmFuc2ZlclJlY2VpdmVyT3JUcmFuc2ZlcjtcbiAgICByZXR1cm4gZnVuZHNUcmFuc2ZlckNvbW1lbnQgPyBgJHttZW1vfTogJHtmdW5kc1RyYW5zZmVyQ29tbWVudH1gIDogbWVtbztcbiAgfVxuXG4gIHJldHVybiBjb21tZW50cztcbn1cblxuZnVuY3Rpb24gbWFwVHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IFNjcmFwZWRUcmFuc2FjdGlvbik6IFRyYW5zYWN0aW9uIHtcbiAgY29uc3QgaXNQZW5kaW5nID0gcmF3VHJhbnNhY3Rpb24ucGF5bWVudERhdGUgPT09IG51bGw7XG4gIGNvbnN0IHByb2Nlc3NlZERhdGUgPSBtb21lbnQoaXNQZW5kaW5nID8gcmF3VHJhbnNhY3Rpb24ucHVyY2hhc2VEYXRlIDogcmF3VHJhbnNhY3Rpb24ucGF5bWVudERhdGUpLnRvSVNPU3RyaW5nKCk7XG4gIGNvbnN0IHN0YXR1cyA9IGlzUGVuZGluZyA/IFRyYW5zYWN0aW9uU3RhdHVzZXMuUGVuZGluZyA6IFRyYW5zYWN0aW9uU3RhdHVzZXMuQ29tcGxldGVkO1xuXG4gIGNvbnN0IGluc3RhbGxtZW50cyA9IGdldEluc3RhbGxtZW50c0luZm8ocmF3VHJhbnNhY3Rpb24uY29tbWVudHMpO1xuICBjb25zdCBpZGVudGlmaWVyID0gaW5zdGFsbG1lbnRzXG4gICAgPyBgJHtyYXdUcmFuc2FjdGlvbi5kZWFsRGF0YT8uYXJufV8ke2luc3RhbGxtZW50cy5udW1iZXJ9YFxuICAgIDogcmF3VHJhbnNhY3Rpb24uZGVhbERhdGE/LmFybjtcblxuICByZXR1cm4ge1xuICAgIHR5cGU6IGdldFRyYW5zYWN0aW9uVHlwZShyYXdUcmFuc2FjdGlvbi5wbGFuTmFtZSwgcmF3VHJhbnNhY3Rpb24ucGxhblR5cGVJZCksXG4gICAgZGF0ZTogbW9tZW50KHJhd1RyYW5zYWN0aW9uLnB1cmNoYXNlRGF0ZSkudG9JU09TdHJpbmcoKSxcbiAgICBwcm9jZXNzZWREYXRlLFxuICAgIG9yaWdpbmFsQW1vdW50OiAtcmF3VHJhbnNhY3Rpb24ub3JpZ2luYWxBbW91bnQsXG4gICAgb3JpZ2luYWxDdXJyZW5jeTogcmF3VHJhbnNhY3Rpb24ub3JpZ2luYWxDdXJyZW5jeSxcbiAgICBjaGFyZ2VkQW1vdW50OiAtcmF3VHJhbnNhY3Rpb24uYWN0dWFsUGF5bWVudEFtb3VudCxcbiAgICBjaGFyZ2VkQ3VycmVuY3k6IGdldENoYXJnZWRDdXJyZW5jeShyYXdUcmFuc2FjdGlvbi5wYXltZW50Q3VycmVuY3kpLFxuICAgIGRlc2NyaXB0aW9uOiByYXdUcmFuc2FjdGlvbi5tZXJjaGFudE5hbWUudHJpbSgpLFxuICAgIG1lbW86IGdldE1lbW8ocmF3VHJhbnNhY3Rpb24pLFxuICAgIGNhdGVnb3J5OiBjYXRlZ29yaWVzLmdldChyYXdUcmFuc2FjdGlvbj8uY2F0ZWdvcnlJZCksXG4gICAgaW5zdGFsbG1lbnRzLFxuICAgIGlkZW50aWZpZXIsXG4gICAgc3RhdHVzLFxuICB9O1xufVxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbnNSZXN1bHQge1xuICByZXN1bHQ/OiB7XG4gICAgdHJhbnNhY3Rpb25zOiBTY3JhcGVkVHJhbnNhY3Rpb25bXTtcbiAgfTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hUcmFuc2FjdGlvbnNGb3JNb250aChwYWdlOiBQYWdlLCBtb250aE1vbWVudDogTW9tZW50KSB7XG4gIGNvbnN0IHVybCA9IGdldFRyYW5zYWN0aW9uc1VybChtb250aE1vbWVudCk7XG5cbiAgY29uc3QgZGF0YSA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxTY3JhcGVkVHJhbnNhY3Rpb25zUmVzdWx0PihwYWdlLCB1cmwpO1xuICBjb25zdCB0cmFuc2FjdGlvbnNCeUFjY291bnQ6IFJlY29yZDxzdHJpbmcsIFRyYW5zYWN0aW9uW10+ID0ge307XG5cbiAgaWYgKCFkYXRhIHx8ICFkYXRhLnJlc3VsdCkgcmV0dXJuIHRyYW5zYWN0aW9uc0J5QWNjb3VudDtcblxuICBkYXRhLnJlc3VsdC50cmFuc2FjdGlvbnNcbiAgICAvLyBGaWx0ZXIgb3V0IG5vbi10cmFuc2FjdGlvbnMgd2l0aG91dCBhIHBsYW4gdHlwZSwgZS5nLiBzdW1tYXJ5IHJvd3NcbiAgICAuZmlsdGVyKHRyYW5zYWN0aW9uID0+ICEhdHJhbnNhY3Rpb24ucGxhbk5hbWUpXG4gICAgLmZvckVhY2goKHRyYW5zYWN0aW9uOiBTY3JhcGVkVHJhbnNhY3Rpb24pID0+IHtcbiAgICAgIGlmICghdHJhbnNhY3Rpb25zQnlBY2NvdW50W3RyYW5zYWN0aW9uLnNob3J0Q2FyZE51bWJlcl0pIHtcbiAgICAgICAgdHJhbnNhY3Rpb25zQnlBY2NvdW50W3RyYW5zYWN0aW9uLnNob3J0Q2FyZE51bWJlcl0gPSBbXTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbWFwcGVkVHJhbnNhY3Rpb24gPSBtYXBUcmFuc2FjdGlvbih0cmFuc2FjdGlvbik7XG4gICAgICB0cmFuc2FjdGlvbnNCeUFjY291bnRbdHJhbnNhY3Rpb24uc2hvcnRDYXJkTnVtYmVyXS5wdXNoKG1hcHBlZFRyYW5zYWN0aW9uKTtcbiAgICB9KTtcblxuICByZXR1cm4gdHJhbnNhY3Rpb25zQnlBY2NvdW50O1xufVxuXG5mdW5jdGlvbiBhZGRSZXN1bHQoYWxsUmVzdWx0czogUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25bXT4sIHJlc3VsdDogUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25bXT4pIHtcbiAgY29uc3QgY2xvbmVkUmVzdWx0czogUmVjb3JkPHN0cmluZywgVHJhbnNhY3Rpb25bXT4gPSB7IC4uLmFsbFJlc3VsdHMgfTtcbiAgT2JqZWN0LmtleXMocmVzdWx0KS5mb3JFYWNoKGFjY291bnROdW1iZXIgPT4ge1xuICAgIGlmICghY2xvbmVkUmVzdWx0c1thY2NvdW50TnVtYmVyXSkge1xuICAgICAgY2xvbmVkUmVzdWx0c1thY2NvdW50TnVtYmVyXSA9IFtdO1xuICAgIH1cbiAgICBjbG9uZWRSZXN1bHRzW2FjY291bnROdW1iZXJdLnB1c2goLi4ucmVzdWx0W2FjY291bnROdW1iZXJdKTtcbiAgfSk7XG4gIHJldHVybiBjbG9uZWRSZXN1bHRzO1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlVHJhbnNhY3Rpb25zKFxuICB0eG5zOiBUcmFuc2FjdGlvbltdLFxuICBzdGFydE1vbWVudDogbW9tZW50Lk1vbWVudCxcbiAgY29tYmluZUluc3RhbGxtZW50czogYm9vbGVhbixcbiAgZW5hYmxlVHJhbnNhY3Rpb25zRmlsdGVyQnlEYXRlOiBib29sZWFuLFxuKSB7XG4gIGxldCBjbG9uZWRUeG5zID0gQXJyYXkuZnJvbSh0eG5zKTtcbiAgaWYgKCFjb21iaW5lSW5zdGFsbG1lbnRzKSB7XG4gICAgY2xvbmVkVHhucyA9IGZpeEluc3RhbGxtZW50cyhjbG9uZWRUeG5zKTtcbiAgfVxuICBjbG9uZWRUeG5zID0gc29ydFRyYW5zYWN0aW9uc0J5RGF0ZShjbG9uZWRUeG5zKTtcbiAgY2xvbmVkVHhucyA9IGVuYWJsZVRyYW5zYWN0aW9uc0ZpbHRlckJ5RGF0ZVxuICAgID8gZmlsdGVyT2xkVHJhbnNhY3Rpb25zKGNsb25lZFR4bnMsIHN0YXJ0TW9tZW50LCBjb21iaW5lSW5zdGFsbG1lbnRzIHx8IGZhbHNlKVxuICAgIDogY2xvbmVkVHhucztcbiAgcmV0dXJuIGNsb25lZFR4bnM7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGZldGNoVHJhbnNhY3Rpb25zKHBhZ2U6IFBhZ2UsIG9wdGlvbnM6IFNjcmFwZXJPcHRpb25zKSB7XG4gIGNvbnN0IGZ1dHVyZU1vbnRoc1RvU2NyYXBlID0gb3B0aW9ucy5mdXR1cmVNb250aHNUb1NjcmFwZSA/PyAxO1xuICBjb25zdCBkZWZhdWx0U3RhcnRNb21lbnQgPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAneWVhcnMnKTtcbiAgY29uc3Qgc3RhcnRNb21lbnRMaW1pdCA9IG1vbWVudCgpLnN1YnRyYWN0KDQsICd5ZWFycycpO1xuICBjb25zdCBzdGFydERhdGUgPSBvcHRpb25zLnN0YXJ0RGF0ZSB8fCBkZWZhdWx0U3RhcnRNb21lbnQudG9EYXRlKCk7XG4gIGNvbnN0IHN0YXJ0TW9tZW50ID0gbW9tZW50Lm1heChzdGFydE1vbWVudExpbWl0LCBtb21lbnQoc3RhcnREYXRlKSk7XG4gIGNvbnN0IGFsbE1vbnRocyA9IGdldEFsbE1vbnRoTW9tZW50cyhzdGFydE1vbWVudCwgZnV0dXJlTW9udGhzVG9TY3JhcGUpO1xuXG4gIGF3YWl0IGxvYWRDYXRlZ29yaWVzKHBhZ2UpO1xuXG4gIGxldCBhbGxSZXN1bHRzOiBSZWNvcmQ8c3RyaW5nLCBUcmFuc2FjdGlvbltdPiA9IHt9O1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGFsbE1vbnRocy5sZW5ndGg7IGkgKz0gMSkge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGZldGNoVHJhbnNhY3Rpb25zRm9yTW9udGgocGFnZSwgYWxsTW9udGhzW2ldKTtcbiAgICBhbGxSZXN1bHRzID0gYWRkUmVzdWx0KGFsbFJlc3VsdHMsIHJlc3VsdCk7XG4gIH1cblxuICBPYmplY3Qua2V5cyhhbGxSZXN1bHRzKS5mb3JFYWNoKGFjY291bnROdW1iZXIgPT4ge1xuICAgIGxldCB0eG5zID0gYWxsUmVzdWx0c1thY2NvdW50TnVtYmVyXTtcbiAgICB0eG5zID0gcHJlcGFyZVRyYW5zYWN0aW9ucyhcbiAgICAgIHR4bnMsXG4gICAgICBzdGFydE1vbWVudCxcbiAgICAgIG9wdGlvbnMuY29tYmluZUluc3RhbGxtZW50cyB8fCBmYWxzZSxcbiAgICAgIG9wdGlvbnMub3V0cHV0RGF0YT8uZW5hYmxlVHJhbnNhY3Rpb25zRmlsdGVyQnlEYXRlID8/IHRydWUsXG4gICAgKTtcbiAgICBhbGxSZXN1bHRzW2FjY291bnROdW1iZXJdID0gdHhucztcbiAgfSk7XG5cbiAgcmV0dXJuIGFsbFJlc3VsdHM7XG59XG5cbmZ1bmN0aW9uIGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKHBhZ2U6IFBhZ2UpOiBQb3NzaWJsZUxvZ2luUmVzdWx0cyB7XG4gIGNvbnN0IHVybHM6IFBvc3NpYmxlTG9naW5SZXN1bHRzID0ge307XG4gIHVybHNbTG9naW5SZXN1bHRzLlN1Y2Nlc3NdID0gW1NVQ0NFU1NfVVJMXTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuQ2hhbmdlUGFzc3dvcmRdID0gW1BBU1NXT1JEX0VYUElSRURfVVJMXTtcbiAgdXJsc1tMb2dpblJlc3VsdHMuSW52YWxpZFBhc3N3b3JkXSA9IFtcbiAgICBhc3luYyAoKSA9PiB7XG4gICAgICByZXR1cm4gZWxlbWVudFByZXNlbnRPblBhZ2UocGFnZSwgSU5WQUxJRF9ERVRBSUxTX1NFTEVDVE9SKTtcbiAgICB9LFxuICBdO1xuICB1cmxzW0xvZ2luUmVzdWx0cy5Vbmtub3duRXJyb3JdID0gW1xuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIHJldHVybiBlbGVtZW50UHJlc2VudE9uUGFnZShwYWdlLCBMT0dJTl9FUlJPUl9TRUxFQ1RPUik7XG4gICAgfSxcbiAgXTtcbiAgcmV0dXJuIHVybHM7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICByZXR1cm4gW1xuICAgIHsgc2VsZWN0b3I6ICcjdXNlci1uYW1lJywgdmFsdWU6IGNyZWRlbnRpYWxzLnVzZXJuYW1lIH0sXG4gICAgeyBzZWxlY3RvcjogJyNwYXNzd29yZCcsIHZhbHVlOiBjcmVkZW50aWFscy5wYXNzd29yZCB9LFxuICBdO1xufVxuXG50eXBlIFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzID0geyB1c2VybmFtZTogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH07XG5cbmNsYXNzIE1heFNjcmFwZXIgZXh0ZW5kcyBCYXNlU2NyYXBlcldpdGhCcm93c2VyPFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzPiB7XG4gIGdldExvZ2luT3B0aW9ucyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpOiBMb2dpbk9wdGlvbnMge1xuICAgIHJldHVybiB7XG4gICAgICBsb2dpblVybDogTE9HSU5fVVJMLFxuICAgICAgZmllbGRzOiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFscyksXG4gICAgICBzdWJtaXRCdXR0b25TZWxlY3RvcjogJ2FwcC11c2VyLWxvZ2luLWZvcm0gLmdlbmVyYWwtYnV0dG9uLnNlbmQtbWUtY29kZScsXG4gICAgICBwcmVBY3Rpb246IGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKGF3YWl0IGVsZW1lbnRQcmVzZW50T25QYWdlKHRoaXMucGFnZSwgJyNjbG9zZVBvcHVwJykpIHtcbiAgICAgICAgICBhd2FpdCBjbGlja0J1dHRvbih0aGlzLnBhZ2UsICcjY2xvc2VQb3B1cCcpO1xuICAgICAgICB9XG4gICAgICAgIGF3YWl0IGNsaWNrQnV0dG9uKHRoaXMucGFnZSwgJy5wZXJzb25hbC1hcmVhID4gYS5nby10by1wZXJzb25hbC1hcmVhJyk7XG4gICAgICAgIGlmIChhd2FpdCBlbGVtZW50UHJlc2VudE9uUGFnZSh0aGlzLnBhZ2UsICcubG9naW4tbGluayNwcml2YXRlJykpIHtcbiAgICAgICAgICBhd2FpdCBjbGlja0J1dHRvbih0aGlzLnBhZ2UsICcubG9naW4tbGluayNwcml2YXRlJyk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgd2FpdFVudGlsRWxlbWVudEZvdW5kKHRoaXMucGFnZSwgJyNsb2dpbi1wYXNzd29yZC1saW5rJywgdHJ1ZSk7XG4gICAgICAgIGF3YWl0IGNsaWNrQnV0dG9uKHRoaXMucGFnZSwgJyNsb2dpbi1wYXNzd29yZC1saW5rJyk7XG4gICAgICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZCh0aGlzLnBhZ2UsICcjbG9naW4tcGFzc3dvcmQudGFiLXBhbmUuYWN0aXZlIGFwcC11c2VyLWxvZ2luLWZvcm0nLCB0cnVlKTtcbiAgICAgIH0sXG4gICAgICBjaGVja1JlYWRpbmVzczogYXN5bmMgKCkgPT4ge1xuICAgICAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCAnLnBlcnNvbmFsLWFyZWEgPiBhLmdvLXRvLXBlcnNvbmFsLWFyZWEnLCB0cnVlKTtcbiAgICAgIH0sXG4gICAgICBwb3N0QWN0aW9uOiBhc3luYyAoKSA9PiByZWRpcmVjdE9yRGlhbG9nKHRoaXMucGFnZSksXG4gICAgICBwb3NzaWJsZVJlc3VsdHM6IGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKHRoaXMucGFnZSksXG4gICAgICB3YWl0VW50aWw6ICdkb21jb250ZW50bG9hZGVkJyxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hEYXRhKCkge1xuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBmZXRjaFRyYW5zYWN0aW9ucyh0aGlzLnBhZ2UsIHRoaXMub3B0aW9ucyk7XG4gICAgY29uc3QgYWNjb3VudHMgPSBPYmplY3Qua2V5cyhyZXN1bHRzKS5tYXAoYWNjb3VudE51bWJlciA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhY2NvdW50TnVtYmVyLFxuICAgICAgICB0eG5zOiByZXN1bHRzW2FjY291bnROdW1iZXJdLFxuICAgICAgfTtcbiAgICB9KTtcblxuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiB0cnVlLFxuICAgICAgYWNjb3VudHMsXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBNYXhTY3JhcGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsVUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsTUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsTUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUkscUJBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLE1BQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFdBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLGFBQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLGNB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
@@ -30,5 +30,6 @@ declare class MizrahiScraper extends BaseScraperWithBrowser<ScraperSpecificCrede
30
30
  }>;
31
31
  private getPendingTransactions;
32
32
  private fetchAccount;
33
+ private shouldMarkAsPending;
33
34
  }
34
35
  export default MizrahiScraper;
@@ -38,6 +38,7 @@ const accountDropDownItemSelector = '#AccountPicker .item';
38
38
  const pendingTrxIdentifierId = '#ctl00_ContentPlaceHolder2_panel1';
39
39
  const checkingAccountTabHebrewName = 'עובר ושב';
40
40
  const checkingAccountTabEnglishName = 'Checking Account';
41
+ const genericDescriptions = ['העברת יומן לבנק זר מסניף זר'];
41
42
  function createLoginFields(credentials) {
42
43
  return [{
43
44
  selector: usernameSelector,
@@ -118,7 +119,7 @@ function createHeadersFromRequest(request) {
118
119
  'Content-Type': request.headers()['content-type']
119
120
  };
120
121
  }
121
- async function convertTransactions(txns, getMoreDetails) {
122
+ async function convertTransactions(txns, getMoreDetails, pendingIfTodayTransaction = false) {
122
123
  return Promise.all(txns.map(async row => {
123
124
  const moreDetails = await getMoreDetails(row);
124
125
  const txnDate = (0, _moment.default)(row.MC02PeulaTaaEZ, _moment.default.HTML5_FMT.DATETIME_LOCAL_SECONDS).toISOString();
@@ -132,7 +133,7 @@ async function convertTransactions(txns, getMoreDetails) {
132
133
  chargedAmount: row.MC02SchumEZ,
133
134
  description: row.MC02TnuaTeurEZ,
134
135
  memo: moreDetails?.memo,
135
- status: _transactions.TransactionStatuses.Completed
136
+ status: pendingIfTodayTransaction && row.IsTodayTransaction ? _transactions.TransactionStatuses.Pending : _transactions.TransactionStatuses.Completed
136
137
  };
137
138
  }));
138
139
  }
@@ -142,7 +143,7 @@ async function extractPendingTransactions(page) {
142
143
  });
143
144
  return pendingTxn.map(([dateStr, description, incomeAmountStr, amountStr]) => ({
144
145
  date: (0, _moment.default)(dateStr, 'DD/MM/YY').toISOString(),
145
- amount: parseInt(amountStr, 10),
146
+ amount: parseFloat(amountStr.replaceAll(',', '')),
146
147
  description,
147
148
  incomeAmountStr // TODO: handle incomeAmountStr once we know the sign of it
148
149
  })).filter(txn => txn.date).map(({
@@ -232,7 +233,10 @@ class MizrahiScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
232
233
  const oshTxn = await convertTransactions(relevantRows, this.options.additionalTransactionInformation ? row => getExtraTransactionDetails(this.page, row, apiHeaders) : () => Promise.resolve({
233
234
  entries: {},
234
235
  memo: undefined
235
- }));
236
+ }), this.options.optInFeatures?.includes('mizrahi:pendingIfTodayTransaction'));
237
+ oshTxn.filter(txn => this.shouldMarkAsPending(txn)).forEach(txn => {
238
+ txn.status = _transactions.TransactionStatuses.Pending;
239
+ });
236
240
 
237
241
  // workaround for a bug which the bank's API returns transactions before the requested start date
238
242
  const startMoment = getStartMoment(this.options.startDate);
@@ -245,6 +249,17 @@ class MizrahiScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser {
245
249
  balance: +response.body.fields?.Yitra
246
250
  };
247
251
  }
252
+ shouldMarkAsPending(txn) {
253
+ if (this.options.optInFeatures?.includes('mizrahi:pendingIfNoIdentifier') && !txn.identifier) {
254
+ debug(`Marking transaction '${txn.description}' as pending due to no identifier.`);
255
+ return true;
256
+ }
257
+ if (this.options.optInFeatures?.includes('mizrahi:pendingIfHasGenericDescription') && genericDescriptions.includes(txn.description)) {
258
+ debug(`Marking transaction '${txn.description}' as pending due to generic description.`);
259
+ return true;
260
+ }
261
+ return false;
262
+ }
248
263
  }
249
264
  var _default = exports.default = MizrahiScraper;
250
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29uc3RhbnRzIiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX2ZldGNoIiwiX25hdmlnYXRpb24iLCJfdHJhbnNhY3Rpb25zIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJfZXJyb3JzIiwiX2RlYnVnIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiZGVidWciLCJnZXREZWJ1ZyIsIkJBU0VfV0VCU0lURV9VUkwiLCJMT0dJTl9VUkwiLCJCQVNFX0FQUF9VUkwiLCJBRlRFUl9MT0dJTl9CQVNFX1VSTCIsIk9TSF9QQUdFIiwiVFJBTlNBQ1RJT05TX1BBR0UiLCJUUkFOU0FDVElPTlNfUkVRVUVTVF9VUkxTIiwiUEVORElOR19UUkFOU0FDVElPTlNfUEFHRSIsIlBFTkRJTkdfVFJBTlNBQ1RJT05TX0lGUkFNRSIsIk1PUkVfREVUQUlMU19VUkwiLCJDSEFOR0VfUEFTU1dPUkRfVVJMIiwiREFURV9GT1JNQVQiLCJNQVhfUk9XU19QRVJfUkVRVUVTVCIsInVzZXJuYW1lU2VsZWN0b3IiLCJwYXNzd29yZFNlbGVjdG9yIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJpbnZhbGlkUGFzc3dvcmRTZWxlY3RvciIsImFmdGVyTG9naW5TZWxlY3RvciIsImxvZ2luU3Bpbm5lclNlbGVjdG9yIiwiYWNjb3VudERyb3BEb3duSXRlbVNlbGVjdG9yIiwicGVuZGluZ1RyeElkZW50aWZpZXJJZCIsImNoZWNraW5nQWNjb3VudFRhYkhlYnJld05hbWUiLCJjaGVja2luZ0FjY291bnRUYWJFbmdsaXNoTmFtZSIsImNyZWF0ZUxvZ2luRmllbGRzIiwiY3JlZGVudGlhbHMiLCJzZWxlY3RvciIsInZhbHVlIiwidXNlcm5hbWUiLCJwYXNzd29yZCIsImlzTG9nZ2VkSW4iLCJvcHRpb25zIiwicGFnZSIsIm9zaFhQYXRoIiwib3NoVGFiIiwiJCQiLCJsZW5ndGgiLCJnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cyIsIkxvZ2luUmVzdWx0cyIsIlN1Y2Nlc3MiLCJJbnZhbGlkUGFzc3dvcmQiLCIkIiwiQ2hhbmdlUGFzc3dvcmQiLCJnZXRTdGFydE1vbWVudCIsIm9wdGlvbnNTdGFydERhdGUiLCJkZWZhdWx0U3RhcnRNb21lbnQiLCJtb21lbnQiLCJzdWJ0cmFjdCIsInN0YXJ0RGF0ZSIsInRvRGF0ZSIsIm1heCIsImdldEV4dHJhVHJhbnNhY3Rpb25EZXRhaWxzIiwiaXRlbSIsImFwaUhlYWRlcnMiLCJNQzAyU2hvd0RldGFpbHNFWiIsInRhclBldWxhIiwiTUMwMlBldWxhVGFhRVoiLCJ0YXJFcmVjaCIsIk1DMDJFcmVoVGFhRVoiLCJwYXJhbXMiLCJpbktvZEdvcmVtIiwiTUMwMktvZEdvcmVtRVoiLCJpbkFzbWFjaHRhIiwiTUMwMkFzbWFodGFNZWtvcml0RVoiLCJpblNjaHVtIiwiTUMwMlNjaHVtRVoiLCJpbk5ha3Zhbml0IiwiaW5TdWdUbnVhIiwiTUMwMlN1Z1RudWFLYXNwaXRFWiIsImluQWdpZCIsIk1DMDJBZ2lkRVoiLCJpblRhclBldWxhRm9ybWF0dGVkIiwiZm9ybWF0IiwiaW5UYXJFcmVjaEZvcm1hdHRlZCIsInllYXIiLCJpbktvZE5vc2UiLCJNQzAyU2VpZk1hcmFsRVoiLCJpbktvZFRhdE5vc2UiLCJNQzAyTm9zZU1hcmFsRVoiLCJpblRyYW5zYWN0aW9uTnVtYmVyIiwiVHJhbnNhY3Rpb25OdW1iZXIiLCJyZXNwb25zZSIsImZldGNoUG9zdFdpdGhpblBhZ2UiLCJkZXRhaWxzIiwiYm9keSIsImZpZWxkcyIsIlJlY29yZHMiLCJGaWVsZHMiLCJBcnJheSIsImlzQXJyYXkiLCJlbnRyaWVzIiwibWFwIiwicmVjb3JkIiwiTGFiZWwiLCJ0cmltIiwiVmFsdWUiLCJPYmplY3QiLCJmcm9tRW50cmllcyIsIm1lbW8iLCJmaWx0ZXIiLCJsYWJlbCIsInNvbWUiLCJrZXkiLCJzdGFydHNXaXRoIiwiam9pbiIsImVycm9yIiwidW5kZWZpbmVkIiwiY3JlYXRlRGF0YUZyb21SZXF1ZXN0IiwicmVxdWVzdCIsImRhdGEiLCJKU09OIiwicGFyc2UiLCJwb3N0RGF0YSIsImluRnJvbURhdGUiLCJpblRvRGF0ZSIsInRhYmxlIiwibWF4Um93IiwiY3JlYXRlSGVhZGVyc0Zyb21SZXF1ZXN0IiwibWl6cmFoaXhzcmZ0b2tlbiIsImhlYWRlcnMiLCJjb252ZXJ0VHJhbnNhY3Rpb25zIiwidHhucyIsImdldE1vcmVEZXRhaWxzIiwiUHJvbWlzZSIsImFsbCIsInJvdyIsIm1vcmVEZXRhaWxzIiwidHhuRGF0ZSIsIkhUTUw1X0ZNVCIsIkRBVEVUSU1FX0xPQ0FMX1NFQ09ORFMiLCJ0b0lTT1N0cmluZyIsInR5cGUiLCJUcmFuc2FjdGlvblR5cGVzIiwiTm9ybWFsIiwiaWRlbnRpZmllciIsInBhcnNlSW50IiwiZGF0ZSIsInByb2Nlc3NlZERhdGUiLCJvcmlnaW5hbEFtb3VudCIsIm9yaWdpbmFsQ3VycmVuY3kiLCJTSEVLRUxfQ1VSUkVOQ1kiLCJjaGFyZ2VkQW1vdW50IiwiZGVzY3JpcHRpb24iLCJNQzAyVG51YVRldXJFWiIsInN0YXR1cyIsIlRyYW5zYWN0aW9uU3RhdHVzZXMiLCJDb21wbGV0ZWQiLCJleHRyYWN0UGVuZGluZ1RyYW5zYWN0aW9ucyIsInBlbmRpbmdUeG4iLCJwYWdlRXZhbEFsbCIsInRycyIsInRyIiwiZnJvbSIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJ0ZCIsInRleHRDb250ZW50IiwiZGF0ZVN0ciIsImluY29tZUFtb3VudFN0ciIsImFtb3VudFN0ciIsImFtb3VudCIsInR4biIsIlBlbmRpbmciLCJwb3N0TG9naW4iLCJyYWNlIiwid2FpdFVudGlsRWxlbWVudEZvdW5kIiwid2FpdEZvclVybCIsIk1penJhaGlTY3JhcGVyIiwiQmFzZVNjcmFwZXJXaXRoQnJvd3NlciIsImdldExvZ2luT3B0aW9ucyIsImxvZ2luVXJsIiwiY2hlY2tSZWFkaW5lc3MiLCJ3YWl0VW50aWxFbGVtZW50RGlzYXBwZWFyIiwicG9zdEFjdGlvbiIsInBvc3NpYmxlUmVzdWx0cyIsImZldGNoRGF0YSIsIiRldmFsIiwiZWwiLCJjbGljayIsIm51bU9mQWNjb3VudHMiLCJyZXN1bHRzIiwiaSIsInB1c2giLCJmZXRjaEFjY291bnQiLCJzdWNjZXNzIiwiYWNjb3VudHMiLCJlcnJvclR5cGUiLCJTY3JhcGVyRXJyb3JUeXBlcyIsIkdlbmVyaWMiLCJlcnJvck1lc3NhZ2UiLCJtZXNzYWdlIiwiZ2V0UGVuZGluZ1RyYW5zYWN0aW9ucyIsImZyYW1lIiwid2FpdFVudGlsSWZyYW1lRm91bmQiLCJmIiwidXJsIiwiaW5jbHVkZXMiLCJpc1BlbmRpbmciLCJ0aGVuIiwiY2F0Y2giLCJ3YWl0Rm9yU2VsZWN0b3IiLCJhY2NvdW50TnVtYmVyRWxlbWVudCIsImFjY291bnROdW1iZXJIYW5kbGUiLCJnZXRQcm9wZXJ0eSIsImFjY291bnROdW1iZXIiLCJqc29uVmFsdWUiLCJFcnJvciIsImFueSIsIndhaXRGb3JSZXF1ZXN0IiwiaGVhZGVyIiwibWVzc2FnZXMiLCJ0ZXh0IiwicmVsZXZhbnRSb3dzIiwicm93cyIsIlJlY1R5cGVTcGVjaWZpZWQiLCJvc2hUeG4iLCJhZGRpdGlvbmFsVHJhbnNhY3Rpb25JbmZvcm1hdGlvbiIsInJlc29sdmUiLCJzdGFydE1vbWVudCIsIm9zaFR4bkFmdGVyU3RhcnREYXRlIiwiaXNTYW1lT3JBZnRlciIsImFsbFR4biIsImNvbmNhdCIsImJhbGFuY2UiLCJZaXRyYSIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9taXpyYWhpLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IHR5cGUgRnJhbWUsIHR5cGUgSFRUUFJlcXVlc3QsIHR5cGUgUGFnZSB9IGZyb20gJ3B1cHBldGVlci1jb3JlJztcbmltcG9ydCB7IFNIRUtFTF9DVVJSRU5DWSB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQge1xuICBwYWdlRXZhbEFsbCxcbiAgd2FpdFVudGlsRWxlbWVudERpc2FwcGVhcixcbiAgd2FpdFVudGlsRWxlbWVudEZvdW5kLFxuICB3YWl0VW50aWxJZnJhbWVGb3VuZCxcbn0gZnJvbSAnLi4vaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMnO1xuaW1wb3J0IHsgZmV0Y2hQb3N0V2l0aGluUGFnZSB9IGZyb20gJy4uL2hlbHBlcnMvZmV0Y2gnO1xuaW1wb3J0IHsgd2FpdEZvclVybCB9IGZyb20gJy4uL2hlbHBlcnMvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyB0eXBlIFRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvblN0YXR1c2VzLCBUcmFuc2FjdGlvblR5cGVzLCB0eXBlIFRyYW5zYWN0aW9uc0FjY291bnQgfSBmcm9tICcuLi90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IHsgQmFzZVNjcmFwZXJXaXRoQnJvd3NlciwgTG9naW5SZXN1bHRzLCB0eXBlIFBvc3NpYmxlTG9naW5SZXN1bHRzIH0gZnJvbSAnLi9iYXNlLXNjcmFwZXItd2l0aC1icm93c2VyJztcbmltcG9ydCB7IFNjcmFwZXJFcnJvclR5cGVzIH0gZnJvbSAnLi9lcnJvcnMnO1xuaW1wb3J0IHsgZ2V0RGVidWcgfSBmcm9tICcuLi9oZWxwZXJzL2RlYnVnJztcblxuY29uc3QgZGVidWcgPSBnZXREZWJ1ZygnbWl6cmFoaScpO1xuXG5pbnRlcmZhY2UgU2NyYXBlZFRyYW5zYWN0aW9uIHtcbiAgUmVjVHlwZVNwZWNpZmllZDogYm9vbGVhbjtcbiAgTUMwMlBldWxhVGFhRVo6IHN0cmluZztcbiAgTUMwMlNjaHVtRVo6IG51bWJlcjtcbiAgTUMwMkFzbWFodGFNZWtvcml0RVo6IHN0cmluZztcbiAgTUMwMlRudWFUZXVyRVo6IHN0cmluZztcbiAgTUMwMkVyZWhUYWFFWjogc3RyaW5nO1xuICBNQzAyU2hvd0RldGFpbHNFWj86IHN0cmluZztcbiAgTUMwMktvZEdvcmVtRVo6IGFueTtcbiAgTUMwMlN1Z1RudWFLYXNwaXRFWjogYW55O1xuICBNQzAyQWdpZEVaOiBhbnk7XG4gIE1DMDJTZWlmTWFyYWxFWjogYW55O1xuICBNQzAyTm9zZU1hcmFsRVo6IGFueTtcbiAgVHJhbnNhY3Rpb25OdW1iZXI6IGFueTtcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbnNSZXN1bHQge1xuICBoZWFkZXI6IHtcbiAgICBzdWNjZXNzOiBib29sZWFuO1xuICAgIG1lc3NhZ2VzOiB7IHRleHQ6IHN0cmluZyB9W107XG4gIH07XG4gIGJvZHk6IHtcbiAgICBmaWVsZHM6IHtcbiAgICAgIFlpdHJhOiBzdHJpbmc7XG4gICAgfTtcbiAgICB0YWJsZToge1xuICAgICAgcm93czogU2NyYXBlZFRyYW5zYWN0aW9uW107XG4gICAgfTtcbiAgfTtcbn1cblxudHlwZSBNb3JlRGV0YWlsc1Jlc3BvbnNlID0ge1xuICBib2R5OiB7XG4gICAgZmllbGRzOiBbXG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICBSZWNvcmRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEZpZWxkczogQXJyYXk8e1xuICAgICAgICAgICAgICAgIExhYmVsOiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgVmFsdWU6IHN0cmluZztcbiAgICAgICAgICAgICAgfT47XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF07XG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIF07XG4gIH07XG59O1xuXG50eXBlIE1vcmVEZXRhaWxzID0ge1xuICBlbnRyaWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBtZW1vOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5jb25zdCBCQVNFX1dFQlNJVEVfVVJMID0gJ2h0dHBzOi8vd3d3Lm1penJhaGktdGVmYWhvdC5jby5pbCc7XG5jb25zdCBMT0dJTl9VUkwgPSBgJHtCQVNFX1dFQlNJVEVfVVJMfS9sb2dpbi9pbmRleC5odG1sIy9hdXRoLXBhZ2UtaGVgO1xuY29uc3QgQkFTRV9BUFBfVVJMID0gJ2h0dHBzOi8vbXRvLm1penJhaGktdGVmYWhvdC5jby5pbCc7XG5jb25zdCBBRlRFUl9MT0dJTl9CQVNFX1VSTCA9IC9odHRwczpcXC9cXC9tdG9cXC5taXpyYWhpLXRlZmFob3RcXC5jb1xcLmlsXFwvT25saW5lQXBwXFwvLiovO1xuY29uc3QgT1NIX1BBR0UgPSAnL29zaC9sZWdhY3kvbGVnYWN5LU9zaC1NYWluJztcbmNvbnN0IFRSQU5TQUNUSU9OU19QQUdFID0gJy9vc2gvbGVnYWN5L3Jvb3QtbWFpbi1vc2gtcDQyOE5ldyc7XG5jb25zdCBUUkFOU0FDVElPTlNfUkVRVUVTVF9VUkxTID0gW1xuICBgJHtCQVNFX0FQUF9VUkx9L09ubGluZVBpbG90L2FwaS9Ta3lPU0gvZ2V0NDI4SW5kZXhgLFxuICBgJHtCQVNFX0FQUF9VUkx9L09ubGluZS9hcGkvU2t5T1NIL2dldDQyOEluZGV4YCxcbl07XG5jb25zdCBQRU5ESU5HX1RSQU5TQUNUSU9OU19QQUdFID0gJy9vc2gvbGVnYWN5L2xlZ2FjeS1Pc2gtcDQyMCc7XG5jb25zdCBQRU5ESU5HX1RSQU5TQUNUSU9OU19JRlJBTUUgPSAncDQyMC5hc3B4JztcbmNvbnN0IE1PUkVfREVUQUlMU19VUkwgPSBgJHtCQVNFX0FQUF9VUkx9L09ubGluZS9hcGkvT1NIL2dldE1haGVyQmVydXJpbVNNRmA7XG5jb25zdCBDSEFOR0VfUEFTU1dPUkRfVVJMID0gL2h0dHBzOlxcL1xcL3d3d1xcLm1penJhaGktdGVmYWhvdFxcLmNvXFwuaWxcXC9sb2dpblxcL2luZGV4XFwuaHRtbCNcXC9jaGFuZ2UtcGFzcy87XG5jb25zdCBEQVRFX0ZPUk1BVCA9ICdERC9NTS9ZWVlZJztcbmNvbnN0IE1BWF9ST1dTX1BFUl9SRVFVRVNUID0gMTAwMDAwMDAwMDA7XG5cbmNvbnN0IHVzZXJuYW1lU2VsZWN0b3IgPSAnI3VzZXJOdW1iZXJEZXNrdG9wSGViJztcbmNvbnN0IHBhc3N3b3JkU2VsZWN0b3IgPSAnI3Bhc3N3b3JkRGVza3RvcEhlYic7XG5jb25zdCBzdWJtaXRCdXR0b25TZWxlY3RvciA9ICdidXR0b24uYnRuLmJ0bi1wcmltYXJ5JztcbmNvbnN0IGludmFsaWRQYXNzd29yZFNlbGVjdG9yID0gJ2FbaHJlZio9XCJodHRwczovL3NjLm1penJhaGktdGVmYWhvdC5jby5pbC9TQ1NlcnZpY2VzL1NDL1AwMTAuYXNweFwiXSc7XG5jb25zdCBhZnRlckxvZ2luU2VsZWN0b3IgPSAnI2Ryb3Bkb3duQmFzaWMnO1xuY29uc3QgbG9naW5TcGlubmVyU2VsZWN0b3IgPSAnZGl2Lm5neC1vdmVybGF5LmxvYWRpbmctZm9yZWdyb3VuZCc7XG5jb25zdCBhY2NvdW50RHJvcERvd25JdGVtU2VsZWN0b3IgPSAnI0FjY291bnRQaWNrZXIgLml0ZW0nO1xuY29uc3QgcGVuZGluZ1RyeElkZW50aWZpZXJJZCA9ICcjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMl9wYW5lbDEnO1xuY29uc3QgY2hlY2tpbmdBY2NvdW50VGFiSGVicmV3TmFtZSA9ICfXoteV15HXqCDXldep15EnO1xuY29uc3QgY2hlY2tpbmdBY2NvdW50VGFiRW5nbGlzaE5hbWUgPSAnQ2hlY2tpbmcgQWNjb3VudCc7XG5cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICByZXR1cm4gW1xuICAgIHsgc2VsZWN0b3I6IHVzZXJuYW1lU2VsZWN0b3IsIHZhbHVlOiBjcmVkZW50aWFscy51c2VybmFtZSB9LFxuICAgIHsgc2VsZWN0b3I6IHBhc3N3b3JkU2VsZWN0b3IsIHZhbHVlOiBjcmVkZW50aWFscy5wYXNzd29yZCB9LFxuICBdO1xufVxuXG5hc3luYyBmdW5jdGlvbiBpc0xvZ2dlZEluKG9wdGlvbnM6IHsgcGFnZT86IFBhZ2UgfCB1bmRlZmluZWQgfSB8IHVuZGVmaW5lZCkge1xuICBpZiAoIW9wdGlvbnM/LnBhZ2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3Qgb3NoWFBhdGggPSBgLy9hLy9zcGFuW2NvbnRhaW5zKC4sIFwiJHtjaGVja2luZ0FjY291bnRUYWJIZWJyZXdOYW1lfVwiKSBvciBjb250YWlucyguLCBcIiR7Y2hlY2tpbmdBY2NvdW50VGFiRW5nbGlzaE5hbWV9XCIpXWA7XG4gIGNvbnN0IG9zaFRhYiA9IGF3YWl0IG9wdGlvbnMucGFnZS4kJChgeHBhdGgke29zaFhQYXRofWApO1xuICByZXR1cm4gb3NoVGFiLmxlbmd0aCA+IDA7XG59XG5cbmZ1bmN0aW9uIGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKHBhZ2U6IFBhZ2UpOiBQb3NzaWJsZUxvZ2luUmVzdWx0cyB7XG4gIHJldHVybiB7XG4gICAgW0xvZ2luUmVzdWx0cy5TdWNjZXNzXTogW0FGVEVSX0xPR0lOX0JBU0VfVVJMLCBpc0xvZ2dlZEluXSxcbiAgICBbTG9naW5SZXN1bHRzLkludmFsaWRQYXNzd29yZF06IFthc3luYyAoKSA9PiAhIShhd2FpdCBwYWdlLiQoaW52YWxpZFBhc3N3b3JkU2VsZWN0b3IpKV0sXG4gICAgW0xvZ2luUmVzdWx0cy5DaGFuZ2VQYXNzd29yZF06IFtDSEFOR0VfUEFTU1dPUkRfVVJMXSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0U3RhcnRNb21lbnQob3B0aW9uc1N0YXJ0RGF0ZTogRGF0ZSkge1xuICBjb25zdCBkZWZhdWx0U3RhcnRNb21lbnQgPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAneWVhcnMnKTtcbiAgY29uc3Qgc3RhcnREYXRlID0gb3B0aW9uc1N0YXJ0RGF0ZSB8fCBkZWZhdWx0U3RhcnRNb21lbnQudG9EYXRlKCk7XG4gIHJldHVybiBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRFeHRyYVRyYW5zYWN0aW9uRGV0YWlscyhcbiAgcGFnZTogUGFnZSxcbiAgaXRlbTogU2NyYXBlZFRyYW5zYWN0aW9uLFxuICBhcGlIZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuKTogUHJvbWlzZTxNb3JlRGV0YWlscz4ge1xuICB0cnkge1xuICAgIGRlYnVnKCdnZXRFeHRyYVRyYW5zYWN0aW9uRGV0YWlscyBmb3IgaXRlbTonLCBpdGVtKTtcbiAgICBpZiAoaXRlbS5NQzAyU2hvd0RldGFpbHNFWiA9PT0gJzEnKSB7XG4gICAgICBjb25zdCB0YXJQZXVsYSA9IG1vbWVudChpdGVtLk1DMDJQZXVsYVRhYUVaKTtcbiAgICAgIGNvbnN0IHRhckVyZWNoID0gbW9tZW50KGl0ZW0uTUMwMkVyZWhUYWFFWik7XG5cbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgaW5Lb2RHb3JlbTogaXRlbS5NQzAyS29kR29yZW1FWixcbiAgICAgICAgaW5Bc21hY2h0YTogaXRlbS5NQzAyQXNtYWh0YU1la29yaXRFWixcbiAgICAgICAgaW5TY2h1bTogaXRlbS5NQzAyU2NodW1FWixcbiAgICAgICAgaW5OYWt2YW5pdDogaXRlbS5NQzAyS29kR29yZW1FWixcbiAgICAgICAgaW5TdWdUbnVhOiBpdGVtLk1DMDJTdWdUbnVhS2FzcGl0RVosXG4gICAgICAgIGluQWdpZDogaXRlbS5NQzAyQWdpZEVaLFxuICAgICAgICBpblRhclBldWxhRm9ybWF0dGVkOiB0YXJQZXVsYS5mb3JtYXQoREFURV9GT1JNQVQpLFxuICAgICAgICBpblRhckVyZWNoRm9ybWF0dGVkOiAodGFyRXJlY2gueWVhcigpID4gMjAwMCA/IHRhckVyZWNoIDogdGFyUGV1bGEpLmZvcm1hdChEQVRFX0ZPUk1BVCksXG4gICAgICAgIGluS29kTm9zZTogaXRlbS5NQzAyU2VpZk1hcmFsRVosXG4gICAgICAgIGluS29kVGF0Tm9zZTogaXRlbS5NQzAyTm9zZU1hcmFsRVosXG4gICAgICAgIGluVHJhbnNhY3Rpb25OdW1iZXI6IGl0ZW0uVHJhbnNhY3Rpb25OdW1iZXIsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoUG9zdFdpdGhpblBhZ2U8TW9yZURldGFpbHNSZXNwb25zZT4ocGFnZSwgTU9SRV9ERVRBSUxTX1VSTCwgcGFyYW1zLCBhcGlIZWFkZXJzKTtcbiAgICAgIGNvbnN0IGRldGFpbHMgPSByZXNwb25zZT8uYm9keS5maWVsZHM/LlswXT8uWzBdPy5SZWNvcmRzPy5bMF0uRmllbGRzO1xuICAgICAgZGVidWcoJ2ZldGNoIGRldGFpbHMgZm9yJywgcGFyYW1zLCAnZGV0YWlsczonLCBkZXRhaWxzKTtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRldGFpbHMpICYmIGRldGFpbHMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBlbnRyaWVzID0gZGV0YWlscy5tYXAocmVjb3JkID0+IFtyZWNvcmQuTGFiZWwudHJpbSgpLCByZWNvcmQuVmFsdWUudHJpbSgpXSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZW50cmllczogT2JqZWN0LmZyb21FbnRyaWVzKGVudHJpZXMpLFxuICAgICAgICAgIG1lbW86IGVudHJpZXNcbiAgICAgICAgICAgIC5maWx0ZXIoKFtsYWJlbF0pID0+IFsn16nXnScsICfXnteU15XXqicsICfXl9ep15HXldefJ10uc29tZShrZXkgPT4gbGFiZWwuc3RhcnRzV2l0aChrZXkpKSlcbiAgICAgICAgICAgIC5tYXAoKFtsYWJlbCwgdmFsdWVdKSA9PiBgJHtsYWJlbH0gJHt2YWx1ZX1gKVxuICAgICAgICAgICAgLmpvaW4oJywgJyksXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGRlYnVnKCdFcnJvciBmZXRjaGluZyBleHRyYSB0cmFuc2FjdGlvbiBkZXRhaWxzOicsIGVycm9yKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZW50cmllczoge30sXG4gICAgbWVtbzogdW5kZWZpbmVkLFxuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVEYXRhRnJvbVJlcXVlc3QocmVxdWVzdDogSFRUUFJlcXVlc3QsIG9wdGlvbnNTdGFydERhdGU6IERhdGUpIHtcbiAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UocmVxdWVzdC5wb3N0RGF0YSgpIHx8ICd7fScpO1xuXG4gIGRhdGEuaW5Gcm9tRGF0ZSA9IGdldFN0YXJ0TW9tZW50KG9wdGlvbnNTdGFydERhdGUpLmZvcm1hdChEQVRFX0ZPUk1BVCk7XG4gIGRhdGEuaW5Ub0RhdGUgPSBtb21lbnQoKS5mb3JtYXQoREFURV9GT1JNQVQpO1xuICBkYXRhLnRhYmxlLm1heFJvdyA9IE1BWF9ST1dTX1BFUl9SRVFVRVNUO1xuXG4gIHJldHVybiBkYXRhO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVIZWFkZXJzRnJvbVJlcXVlc3QocmVxdWVzdDogSFRUUFJlcXVlc3QpIHtcbiAgcmV0dXJuIHtcbiAgICBtaXpyYWhpeHNyZnRva2VuOiByZXF1ZXN0LmhlYWRlcnMoKS5taXpyYWhpeHNyZnRva2VuLFxuICAgICdDb250ZW50LVR5cGUnOiByZXF1ZXN0LmhlYWRlcnMoKVsnY29udGVudC10eXBlJ10sXG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNvbnZlcnRUcmFuc2FjdGlvbnMoXG4gIHR4bnM6IFNjcmFwZWRUcmFuc2FjdGlvbltdLFxuICBnZXRNb3JlRGV0YWlsczogKHJvdzogU2NyYXBlZFRyYW5zYWN0aW9uKSA9PiBQcm9taXNlPE1vcmVEZXRhaWxzPixcbik6IFByb21pc2U8VHJhbnNhY3Rpb25bXT4ge1xuICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgdHhucy5tYXAoYXN5bmMgcm93ID0+IHtcbiAgICAgIGNvbnN0IG1vcmVEZXRhaWxzID0gYXdhaXQgZ2V0TW9yZURldGFpbHMocm93KTtcblxuICAgICAgY29uc3QgdHhuRGF0ZSA9IG1vbWVudChyb3cuTUMwMlBldWxhVGFhRVosIG1vbWVudC5IVE1MNV9GTVQuREFURVRJTUVfTE9DQUxfU0VDT05EUykudG9JU09TdHJpbmcoKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWwsXG4gICAgICAgIGlkZW50aWZpZXI6IHJvdy5NQzAyQXNtYWh0YU1la29yaXRFWiA/IHBhcnNlSW50KHJvdy5NQzAyQXNtYWh0YU1la29yaXRFWiwgMTApIDogdW5kZWZpbmVkLFxuICAgICAgICBkYXRlOiB0eG5EYXRlLFxuICAgICAgICBwcm9jZXNzZWREYXRlOiB0eG5EYXRlLFxuICAgICAgICBvcmlnaW5hbEFtb3VudDogcm93Lk1DMDJTY2h1bUVaLFxuICAgICAgICBvcmlnaW5hbEN1cnJlbmN5OiBTSEVLRUxfQ1VSUkVOQ1ksXG4gICAgICAgIGNoYXJnZWRBbW91bnQ6IHJvdy5NQzAyU2NodW1FWixcbiAgICAgICAgZGVzY3JpcHRpb246IHJvdy5NQzAyVG51YVRldXJFWixcbiAgICAgICAgbWVtbzogbW9yZURldGFpbHM/Lm1lbW8sXG4gICAgICAgIHN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcy5Db21wbGV0ZWQsXG4gICAgICB9O1xuICAgIH0pLFxuICApO1xufVxuXG5hc3luYyBmdW5jdGlvbiBleHRyYWN0UGVuZGluZ1RyYW5zYWN0aW9ucyhwYWdlOiBGcmFtZSk6IFByb21pc2U8VHJhbnNhY3Rpb25bXT4ge1xuICBjb25zdCBwZW5kaW5nVHhuID0gYXdhaXQgcGFnZUV2YWxBbGwocGFnZSwgJ3RyLnJnUm93LCB0ci5yZ0FsdFJvdycsIFtdLCB0cnMgPT4ge1xuICAgIHJldHVybiB0cnMubWFwKHRyID0+IEFycmF5LmZyb20odHIucXVlcnlTZWxlY3RvckFsbCgndGQnKSwgdGQgPT4gdGQudGV4dENvbnRlbnQgfHwgJycpKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHBlbmRpbmdUeG5cbiAgICAubWFwKChbZGF0ZVN0ciwgZGVzY3JpcHRpb24sIGluY29tZUFtb3VudFN0ciwgYW1vdW50U3RyXSkgPT4gKHtcbiAgICAgIGRhdGU6IG1vbWVudChkYXRlU3RyLCAnREQvTU0vWVknKS50b0lTT1N0cmluZygpLFxuICAgICAgYW1vdW50OiBwYXJzZUludChhbW91bnRTdHIsIDEwKSxcbiAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgaW5jb21lQW1vdW50U3RyLCAvLyBUT0RPOiBoYW5kbGUgaW5jb21lQW1vdW50U3RyIG9uY2Ugd2Uga25vdyB0aGUgc2lnbiBvZiBpdFxuICAgIH0pKVxuICAgIC5maWx0ZXIodHhuID0+IHR4bi5kYXRlKVxuICAgIC5tYXAoKHsgZGF0ZSwgZGVzY3JpcHRpb24sIGFtb3VudCB9KSA9PiAoe1xuICAgICAgdHlwZTogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWwsXG4gICAgICBkYXRlLFxuICAgICAgcHJvY2Vzc2VkRGF0ZTogZGF0ZSxcbiAgICAgIG9yaWdpbmFsQW1vdW50OiBhbW91bnQsXG4gICAgICBvcmlnaW5hbEN1cnJlbmN5OiBTSEVLRUxfQ1VSUkVOQ1ksXG4gICAgICBjaGFyZ2VkQW1vdW50OiBhbW91bnQsXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIHN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcy5QZW5kaW5nLFxuICAgIH0pKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcG9zdExvZ2luKHBhZ2U6IFBhZ2UpIHtcbiAgYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgYWZ0ZXJMb2dpblNlbGVjdG9yKSxcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgaW52YWxpZFBhc3N3b3JkU2VsZWN0b3IpLFxuICAgIHdhaXRGb3JVcmwocGFnZSwgQ0hBTkdFX1BBU1NXT1JEX1VSTCksXG4gIF0pO1xufVxuXG50eXBlIFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzID0geyB1c2VybmFtZTogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH07XG5cbmNsYXNzIE1penJhaGlTY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXJXaXRoQnJvd3NlcjxTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscz4ge1xuICBnZXRMb2dpbk9wdGlvbnMoY3JlZGVudGlhbHM6IFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvZ2luVXJsOiBMT0dJTl9VUkwsXG4gICAgICBmaWVsZHM6IGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzKSxcbiAgICAgIHN1Ym1pdEJ1dHRvblNlbGVjdG9yLFxuICAgICAgY2hlY2tSZWFkaW5lc3M6IGFzeW5jICgpID0+IHdhaXRVbnRpbEVsZW1lbnREaXNhcHBlYXIodGhpcy5wYWdlLCBsb2dpblNwaW5uZXJTZWxlY3RvciksXG4gICAgICBwb3N0QWN0aW9uOiBhc3luYyAoKSA9PiBwb3N0TG9naW4odGhpcy5wYWdlKSxcbiAgICAgIHBvc3NpYmxlUmVzdWx0czogZ2V0UG9zc2libGVMb2dpblJlc3VsdHModGhpcy5wYWdlKSxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hEYXRhKCkge1xuICAgIGF3YWl0IHRoaXMucGFnZS4kZXZhbCgnI2Ryb3Bkb3duQmFzaWMsIC5pdGVtJywgZWwgPT4gKGVsIGFzIEhUTUxFbGVtZW50KS5jbGljaygpKTtcblxuICAgIGNvbnN0IG51bU9mQWNjb3VudHMgPSAoYXdhaXQgdGhpcy5wYWdlLiQkKGFjY291bnREcm9wRG93bkl0ZW1TZWxlY3RvcikpLmxlbmd0aDtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHRzOiBUcmFuc2FjdGlvbnNBY2NvdW50W10gPSBbXTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1PZkFjY291bnRzOyBpICs9IDEpIHtcbiAgICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5wYWdlLiRldmFsKCcjZHJvcGRvd25CYXNpYywgLml0ZW0nLCBlbCA9PiAoZWwgYXMgSFRNTEVsZW1lbnQpLmNsaWNrKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgdGhpcy5wYWdlLiRldmFsKGAke2FjY291bnREcm9wRG93bkl0ZW1TZWxlY3Rvcn06bnRoLWNoaWxkKCR7aSArIDF9KWAsIGVsID0+IChlbCBhcyBIVE1MRWxlbWVudCkuY2xpY2soKSk7XG4gICAgICAgIHJlc3VsdHMucHVzaChhd2FpdCB0aGlzLmZldGNoQWNjb3VudCgpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgYWNjb3VudHM6IHJlc3VsdHMsXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkdlbmVyaWMsXG4gICAgICAgIGVycm9yTWVzc2FnZTogKGUgYXMgRXJyb3IpLm1lc3NhZ2UsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0UGVuZGluZ1RyYW5zYWN0aW9ucygpOiBQcm9taXNlPFRyYW5zYWN0aW9uW10+IHtcbiAgICBhd2FpdCB0aGlzLnBhZ2UuJGV2YWwoYGFbaHJlZio9XCIke1BFTkRJTkdfVFJBTlNBQ1RJT05TX1BBR0V9XCJdYCwgZWwgPT4gKGVsIGFzIEhUTUxFbGVtZW50KS5jbGljaygpKTtcbiAgICBjb25zdCBmcmFtZSA9IGF3YWl0IHdhaXRVbnRpbElmcmFtZUZvdW5kKHRoaXMucGFnZSwgZiA9PiBmLnVybCgpLmluY2x1ZGVzKFBFTkRJTkdfVFJBTlNBQ1RJT05TX0lGUkFNRSkpO1xuICAgIGNvbnN0IGlzUGVuZGluZyA9IGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChmcmFtZSwgcGVuZGluZ1RyeElkZW50aWZpZXJJZClcbiAgICAgIC50aGVuKCgpID0+IHRydWUpXG4gICAgICAuY2F0Y2goKCkgPT4gZmFsc2UpO1xuICAgIGlmICghaXNQZW5kaW5nKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgcGVuZGluZ1R4biA9IGF3YWl0IGV4dHJhY3RQZW5kaW5nVHJhbnNhY3Rpb25zKGZyYW1lKTtcbiAgICByZXR1cm4gcGVuZGluZ1R4bjtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hBY2NvdW50KCkge1xuICAgIGF3YWl0IHRoaXMucGFnZS53YWl0Rm9yU2VsZWN0b3IoYGFbaHJlZio9XCIke09TSF9QQUdFfVwiXWApO1xuICAgIGF3YWl0IHRoaXMucGFnZS4kZXZhbChgYVtocmVmKj1cIiR7T1NIX1BBR0V9XCJdYCwgZWwgPT4gKGVsIGFzIEhUTUxFbGVtZW50KS5jbGljaygpKTtcbiAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCBgYVtocmVmKj1cIiR7VFJBTlNBQ1RJT05TX1BBR0V9XCJdYCk7XG4gICAgYXdhaXQgdGhpcy5wYWdlLiRldmFsKGBhW2hyZWYqPVwiJHtUUkFOU0FDVElPTlNfUEFHRX1cIl1gLCBlbCA9PiAoZWwgYXMgSFRNTEVsZW1lbnQpLmNsaWNrKCkpO1xuXG4gICAgY29uc3QgYWNjb3VudE51bWJlckVsZW1lbnQgPSBhd2FpdCB0aGlzLnBhZ2UuJCgnI2Ryb3Bkb3duQmFzaWMgYiBzcGFuJyk7XG4gICAgY29uc3QgYWNjb3VudE51bWJlckhhbmRsZSA9IGF3YWl0IGFjY291bnROdW1iZXJFbGVtZW50Py5nZXRQcm9wZXJ0eSgndGl0bGUnKTtcbiAgICBjb25zdCBhY2NvdW50TnVtYmVyID0gKGF3YWl0IGFjY291bnROdW1iZXJIYW5kbGU/Lmpzb25WYWx1ZSgpKSBhcyBzdHJpbmc7XG4gICAgaWYgKCFhY2NvdW50TnVtYmVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FjY291bnQgbnVtYmVyIG5vdCBmb3VuZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IFtyZXNwb25zZSwgYXBpSGVhZGVyc10gPSBhd2FpdCBQcm9taXNlLmFueShcbiAgICAgIFRSQU5TQUNUSU9OU19SRVFVRVNUX1VSTFMubWFwKGFzeW5jIHVybCA9PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSBhd2FpdCB0aGlzLnBhZ2Uud2FpdEZvclJlcXVlc3QodXJsKTtcbiAgICAgICAgY29uc3QgZGF0YSA9IGNyZWF0ZURhdGFGcm9tUmVxdWVzdChyZXF1ZXN0LCB0aGlzLm9wdGlvbnMuc3RhcnREYXRlKTtcbiAgICAgICAgY29uc3QgaGVhZGVycyA9IGNyZWF0ZUhlYWRlcnNGcm9tUmVxdWVzdChyZXF1ZXN0KTtcblxuICAgICAgICByZXR1cm4gW2F3YWl0IGZldGNoUG9zdFdpdGhpblBhZ2U8U2NyYXBlZFRyYW5zYWN0aW9uc1Jlc3VsdD4odGhpcy5wYWdlLCB1cmwsIGRhdGEsIGhlYWRlcnMpLCBoZWFkZXJzXSBhcyBjb25zdDtcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICBpZiAoIXJlc3BvbnNlIHx8IHJlc3BvbnNlLmhlYWRlci5zdWNjZXNzID09PSBmYWxzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgRXJyb3IgZmV0Y2hpbmcgdHJhbnNhY3Rpb24uIFJlc3BvbnNlIG1lc3NhZ2U6ICR7cmVzcG9uc2UgPyByZXNwb25zZS5oZWFkZXIubWVzc2FnZXNbMF0udGV4dCA6ICcnfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHJlbGV2YW50Um93cyA9IHJlc3BvbnNlLmJvZHkudGFibGUucm93cy5maWx0ZXIocm93ID0+IHJvdy5SZWNUeXBlU3BlY2lmaWVkKTtcbiAgICBjb25zdCBvc2hUeG4gPSBhd2FpdCBjb252ZXJ0VHJhbnNhY3Rpb25zKFxuICAgICAgcmVsZXZhbnRSb3dzLFxuICAgICAgdGhpcy5vcHRpb25zLmFkZGl0aW9uYWxUcmFuc2FjdGlvbkluZm9ybWF0aW9uXG4gICAgICAgID8gcm93ID0+IGdldEV4dHJhVHJhbnNhY3Rpb25EZXRhaWxzKHRoaXMucGFnZSwgcm93LCBhcGlIZWFkZXJzKVxuICAgICAgICA6ICgpID0+IFByb21pc2UucmVzb2x2ZSh7IGVudHJpZXM6IHt9LCBtZW1vOiB1bmRlZmluZWQgfSksXG4gICAgKTtcblxuICAgIC8vIHdvcmthcm91bmQgZm9yIGEgYnVnIHdoaWNoIHRoZSBiYW5rJ3MgQVBJIHJldHVybnMgdHJhbnNhY3Rpb25zIGJlZm9yZSB0aGUgcmVxdWVzdGVkIHN0YXJ0IGRhdGVcbiAgICBjb25zdCBzdGFydE1vbWVudCA9IGdldFN0YXJ0TW9tZW50KHRoaXMub3B0aW9ucy5zdGFydERhdGUpO1xuICAgIGNvbnN0IG9zaFR4bkFmdGVyU3RhcnREYXRlID0gb3NoVHhuLmZpbHRlcih0eG4gPT4gbW9tZW50KHR4bi5kYXRlKS5pc1NhbWVPckFmdGVyKHN0YXJ0TW9tZW50KSk7XG5cbiAgICBjb25zdCBwZW5kaW5nVHhuID0gYXdhaXQgdGhpcy5nZXRQZW5kaW5nVHJhbnNhY3Rpb25zKCk7XG4gICAgY29uc3QgYWxsVHhuID0gb3NoVHhuQWZ0ZXJTdGFydERhdGUuY29uY2F0KHBlbmRpbmdUeG4pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGFjY291bnROdW1iZXIsXG4gICAgICB0eG5zOiBhbGxUeG4sXG4gICAgICBiYWxhbmNlOiArcmVzcG9uc2UuYm9keS5maWVsZHM/LllpdHJhLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTWl6cmFoaVNjcmFwZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUVBLElBQUFDLFVBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLHFCQUFBLEdBQUFGLE9BQUE7QUFNQSxJQUFBRyxNQUFBLEdBQUFILE9BQUE7QUFDQSxJQUFBSSxXQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxhQUFBLEdBQUFMLE9BQUE7QUFDQSxJQUFBTSx1QkFBQSxHQUFBTixPQUFBO0FBQ0EsSUFBQU8sT0FBQSxHQUFBUCxPQUFBO0FBQ0EsSUFBQVEsTUFBQSxHQUFBUixPQUFBO0FBQTRDLFNBQUFELHVCQUFBVSxDQUFBLFdBQUFBLENBQUEsSUFBQUEsQ0FBQSxDQUFBQyxVQUFBLEdBQUFELENBQUEsS0FBQUUsT0FBQSxFQUFBRixDQUFBO0FBRTVDLE1BQU1HLEtBQUssR0FBRyxJQUFBQyxlQUFRLEVBQUMsU0FBUyxDQUFDO0FBeURqQyxNQUFNQyxnQkFBZ0IsR0FBRyxtQ0FBbUM7QUFDNUQsTUFBTUMsU0FBUyxHQUFHLEdBQUdELGdCQUFnQixpQ0FBaUM7QUFDdEUsTUFBTUUsWUFBWSxHQUFHLG1DQUFtQztBQUN4RCxNQUFNQyxvQkFBb0Is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
265
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbW9tZW50IiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfY29uc3RhbnRzIiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX2ZldGNoIiwiX25hdmlnYXRpb24iLCJfdHJhbnNhY3Rpb25zIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJfZXJyb3JzIiwiX2RlYnVnIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiZGVidWciLCJnZXREZWJ1ZyIsIkJBU0VfV0VCU0lURV9VUkwiLCJMT0dJTl9VUkwiLCJCQVNFX0FQUF9VUkwiLCJBRlRFUl9MT0dJTl9CQVNFX1VSTCIsIk9TSF9QQUdFIiwiVFJBTlNBQ1RJT05TX1BBR0UiLCJUUkFOU0FDVElPTlNfUkVRVUVTVF9VUkxTIiwiUEVORElOR19UUkFOU0FDVElPTlNfUEFHRSIsIlBFTkRJTkdfVFJBTlNBQ1RJT05TX0lGUkFNRSIsIk1PUkVfREVUQUlMU19VUkwiLCJDSEFOR0VfUEFTU1dPUkRfVVJMIiwiREFURV9GT1JNQVQiLCJNQVhfUk9XU19QRVJfUkVRVUVTVCIsInVzZXJuYW1lU2VsZWN0b3IiLCJwYXNzd29yZFNlbGVjdG9yIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJpbnZhbGlkUGFzc3dvcmRTZWxlY3RvciIsImFmdGVyTG9naW5TZWxlY3RvciIsImxvZ2luU3Bpbm5lclNlbGVjdG9yIiwiYWNjb3VudERyb3BEb3duSXRlbVNlbGVjdG9yIiwicGVuZGluZ1RyeElkZW50aWZpZXJJZCIsImNoZWNraW5nQWNjb3VudFRhYkhlYnJld05hbWUiLCJjaGVja2luZ0FjY291bnRUYWJFbmdsaXNoTmFtZSIsImdlbmVyaWNEZXNjcmlwdGlvbnMiLCJjcmVhdGVMb2dpbkZpZWxkcyIsImNyZWRlbnRpYWxzIiwic2VsZWN0b3IiLCJ2YWx1ZSIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJpc0xvZ2dlZEluIiwib3B0aW9ucyIsInBhZ2UiLCJvc2hYUGF0aCIsIm9zaFRhYiIsIiQkIiwibGVuZ3RoIiwiZ2V0UG9zc2libGVMb2dpblJlc3VsdHMiLCJMb2dpblJlc3VsdHMiLCJTdWNjZXNzIiwiSW52YWxpZFBhc3N3b3JkIiwiJCIsIkNoYW5nZVBhc3N3b3JkIiwiZ2V0U3RhcnRNb21lbnQiLCJvcHRpb25zU3RhcnREYXRlIiwiZGVmYXVsdFN0YXJ0TW9tZW50IiwibW9tZW50Iiwic3VidHJhY3QiLCJzdGFydERhdGUiLCJ0b0RhdGUiLCJtYXgiLCJnZXRFeHRyYVRyYW5zYWN0aW9uRGV0YWlscyIsIml0ZW0iLCJhcGlIZWFkZXJzIiwiTUMwMlNob3dEZXRhaWxzRVoiLCJ0YXJQZXVsYSIsIk1DMDJQZXVsYVRhYUVaIiwidGFyRXJlY2giLCJNQzAyRXJlaFRhYUVaIiwicGFyYW1zIiwiaW5Lb2RHb3JlbSIsIk1DMDJLb2RHb3JlbUVaIiwiaW5Bc21hY2h0YSIsIk1DMDJBc21haHRhTWVrb3JpdEVaIiwiaW5TY2h1bSIsIk1DMDJTY2h1bUVaIiwiaW5OYWt2YW5pdCIsImluU3VnVG51YSIsIk1DMDJTdWdUbnVhS2FzcGl0RVoiLCJpbkFnaWQiLCJNQzAyQWdpZEVaIiwiaW5UYXJQZXVsYUZvcm1hdHRlZCIsImZvcm1hdCIsImluVGFyRXJlY2hGb3JtYXR0ZWQiLCJ5ZWFyIiwiaW5Lb2ROb3NlIiwiTUMwMlNlaWZNYXJhbEVaIiwiaW5Lb2RUYXROb3NlIiwiTUMwMk5vc2VNYXJhbEVaIiwiaW5UcmFuc2FjdGlvbk51bWJlciIsIlRyYW5zYWN0aW9uTnVtYmVyIiwicmVzcG9uc2UiLCJmZXRjaFBvc3RXaXRoaW5QYWdlIiwiZGV0YWlscyIsImJvZHkiLCJmaWVsZHMiLCJSZWNvcmRzIiwiRmllbGRzIiwiQXJyYXkiLCJpc0FycmF5IiwiZW50cmllcyIsIm1hcCIsInJlY29yZCIsIkxhYmVsIiwidHJpbSIsIlZhbHVlIiwiT2JqZWN0IiwiZnJvbUVudHJpZXMiLCJtZW1vIiwiZmlsdGVyIiwibGFiZWwiLCJzb21lIiwia2V5Iiwic3RhcnRzV2l0aCIsImpvaW4iLCJlcnJvciIsInVuZGVmaW5lZCIsImNyZWF0ZURhdGFGcm9tUmVxdWVzdCIsInJlcXVlc3QiLCJkYXRhIiwiSlNPTiIsInBhcnNlIiwicG9zdERhdGEiLCJpbkZyb21EYXRlIiwiaW5Ub0RhdGUiLCJ0YWJsZSIsIm1heFJvdyIsImNyZWF0ZUhlYWRlcnNGcm9tUmVxdWVzdCIsIm1penJhaGl4c3JmdG9rZW4iLCJoZWFkZXJzIiwiY29udmVydFRyYW5zYWN0aW9ucyIsInR4bnMiLCJnZXRNb3JlRGV0YWlscyIsInBlbmRpbmdJZlRvZGF5VHJhbnNhY3Rpb24iLCJQcm9taXNlIiwiYWxsIiwicm93IiwibW9yZURldGFpbHMiLCJ0eG5EYXRlIiwiSFRNTDVfRk1UIiwiREFURVRJTUVfTE9DQUxfU0VDT05EUyIsInRvSVNPU3RyaW5nIiwidHlwZSIsIlRyYW5zYWN0aW9uVHlwZXMiLCJOb3JtYWwiLCJpZGVudGlmaWVyIiwicGFyc2VJbnQiLCJkYXRlIiwicHJvY2Vzc2VkRGF0ZSIsIm9yaWdpbmFsQW1vdW50Iiwib3JpZ2luYWxDdXJyZW5jeSIsIlNIRUtFTF9DVVJSRU5DWSIsImNoYXJnZWRBbW91bnQiLCJkZXNjcmlwdGlvbiIsIk1DMDJUbnVhVGV1ckVaIiwic3RhdHVzIiwiSXNUb2RheVRyYW5zYWN0aW9uIiwiVHJhbnNhY3Rpb25TdGF0dXNlcyIsIlBlbmRpbmciLCJDb21wbGV0ZWQiLCJleHRyYWN0UGVuZGluZ1RyYW5zYWN0aW9ucyIsInBlbmRpbmdUeG4iLCJwYWdlRXZhbEFsbCIsInRycyIsInRyIiwiZnJvbSIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJ0ZCIsInRleHRDb250ZW50IiwiZGF0ZVN0ciIsImluY29tZUFtb3VudFN0ciIsImFtb3VudFN0ciIsImFtb3VudCIsInBhcnNlRmxvYXQiLCJyZXBsYWNlQWxsIiwidHhuIiwicG9zdExvZ2luIiwicmFjZSIsIndhaXRVbnRpbEVsZW1lbnRGb3VuZCIsIndhaXRGb3JVcmwiLCJNaXpyYWhpU2NyYXBlciIsIkJhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJnZXRMb2dpbk9wdGlvbnMiLCJsb2dpblVybCIsImNoZWNrUmVhZGluZXNzIiwid2FpdFVudGlsRWxlbWVudERpc2FwcGVhciIsInBvc3RBY3Rpb24iLCJwb3NzaWJsZVJlc3VsdHMiLCJmZXRjaERhdGEiLCIkZXZhbCIsImVsIiwiY2xpY2siLCJudW1PZkFjY291bnRzIiwicmVzdWx0cyIsImkiLCJwdXNoIiwiZmV0Y2hBY2NvdW50Iiwic3VjY2VzcyIsImFjY291bnRzIiwiZXJyb3JUeXBlIiwiU2NyYXBlckVycm9yVHlwZXMiLCJHZW5lcmljIiwiZXJyb3JNZXNzYWdlIiwibWVzc2FnZSIsImdldFBlbmRpbmdUcmFuc2FjdGlvbnMiLCJmcmFtZSIsIndhaXRVbnRpbElmcmFtZUZvdW5kIiwiZiIsInVybCIsImluY2x1ZGVzIiwiaXNQZW5kaW5nIiwidGhlbiIsImNhdGNoIiwid2FpdEZvclNlbGVjdG9yIiwiYWNjb3VudE51bWJlckVsZW1lbnQiLCJhY2NvdW50TnVtYmVySGFuZGxlIiwiZ2V0UHJvcGVydHkiLCJhY2NvdW50TnVtYmVyIiwianNvblZhbHVlIiwiRXJyb3IiLCJhbnkiLCJ3YWl0Rm9yUmVxdWVzdCIsImhlYWRlciIsIm1lc3NhZ2VzIiwidGV4dCIsInJlbGV2YW50Um93cyIsInJvd3MiLCJSZWNUeXBlU3BlY2lmaWVkIiwib3NoVHhuIiwiYWRkaXRpb25hbFRyYW5zYWN0aW9uSW5mb3JtYXRpb24iLCJyZXNvbHZlIiwib3B0SW5GZWF0dXJlcyIsInNob3VsZE1hcmtBc1BlbmRpbmciLCJmb3JFYWNoIiwic3RhcnRNb21lbnQiLCJvc2hUeG5BZnRlclN0YXJ0RGF0ZSIsImlzU2FtZU9yQWZ0ZXIiLCJhbGxUeG4iLCJjb25jYXQiLCJiYWxhbmNlIiwiWWl0cmEiLCJfZGVmYXVsdCIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyYXBlcnMvbWl6cmFoaS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyB0eXBlIEZyYW1lLCB0eXBlIEhUVFBSZXF1ZXN0LCB0eXBlIFBhZ2UgfSBmcm9tICdwdXBwZXRlZXItY29yZSc7XG5pbXBvcnQgeyBTSEVLRUxfQ1VSUkVOQ1kgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgcGFnZUV2YWxBbGwsXG4gIHdhaXRVbnRpbEVsZW1lbnREaXNhcHBlYXIsXG4gIHdhaXRVbnRpbEVsZW1lbnRGb3VuZCxcbiAgd2FpdFVudGlsSWZyYW1lRm91bmQsXG59IGZyb20gJy4uL2hlbHBlcnMvZWxlbWVudHMtaW50ZXJhY3Rpb25zJztcbmltcG9ydCB7IGZldGNoUG9zdFdpdGhpblBhZ2UgfSBmcm9tICcuLi9oZWxwZXJzL2ZldGNoJztcbmltcG9ydCB7IHdhaXRGb3JVcmwgfSBmcm9tICcuLi9oZWxwZXJzL25hdmlnYXRpb24nO1xuaW1wb3J0IHsgdHlwZSBUcmFuc2FjdGlvbiwgVHJhbnNhY3Rpb25TdGF0dXNlcywgVHJhbnNhY3Rpb25UeXBlcywgdHlwZSBUcmFuc2FjdGlvbnNBY2NvdW50IH0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsIExvZ2luUmVzdWx0cywgdHlwZSBQb3NzaWJsZUxvZ2luUmVzdWx0cyB9IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQgeyBTY3JhcGVyRXJyb3JUeXBlcyB9IGZyb20gJy4vZXJyb3JzJztcbmltcG9ydCB7IGdldERlYnVnIH0gZnJvbSAnLi4vaGVscGVycy9kZWJ1Zyc7XG5cbmNvbnN0IGRlYnVnID0gZ2V0RGVidWcoJ21penJhaGknKTtcblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbiB7XG4gIFJlY1R5cGVTcGVjaWZpZWQ6IGJvb2xlYW47XG4gIE1DMDJQZXVsYVRhYUVaOiBzdHJpbmc7XG4gIE1DMDJTY2h1bUVaOiBudW1iZXI7XG4gIE1DMDJBc21haHRhTWVrb3JpdEVaOiBzdHJpbmc7XG4gIE1DMDJUbnVhVGV1ckVaOiBzdHJpbmc7XG4gIElzVG9kYXlUcmFuc2FjdGlvbjogYm9vbGVhbjtcbiAgTUMwMkVyZWhUYWFFWjogc3RyaW5nO1xuICBNQzAyU2hvd0RldGFpbHNFWj86IHN0cmluZztcbiAgTUMwMktvZEdvcmVtRVo6IGFueTtcbiAgTUMwMlN1Z1RudWFLYXNwaXRFWjogYW55O1xuICBNQzAyQWdpZEVaOiBhbnk7XG4gIE1DMDJTZWlmTWFyYWxFWjogYW55O1xuICBNQzAyTm9zZU1hcmFsRVo6IGFueTtcbiAgVHJhbnNhY3Rpb25OdW1iZXI6IGFueTtcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbnNSZXN1bHQge1xuICBoZWFkZXI6IHtcbiAgICBzdWNjZXNzOiBib29sZWFuO1xuICAgIG1lc3NhZ2VzOiB7IHRleHQ6IHN0cmluZyB9W107XG4gIH07XG4gIGJvZHk6IHtcbiAgICBmaWVsZHM6IHtcbiAgICAgIFlpdHJhOiBzdHJpbmc7XG4gICAgfTtcbiAgICB0YWJsZToge1xuICAgICAgcm93czogU2NyYXBlZFRyYW5zYWN0aW9uW107XG4gICAgfTtcbiAgfTtcbn1cblxudHlwZSBNb3JlRGV0YWlsc1Jlc3BvbnNlID0ge1xuICBib2R5OiB7XG4gICAgZmllbGRzOiBbXG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICBSZWNvcmRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEZpZWxkczogQXJyYXk8e1xuICAgICAgICAgICAgICAgIExhYmVsOiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgVmFsdWU6IHN0cmluZztcbiAgICAgICAgICAgICAgfT47XG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF07XG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIF07XG4gIH07XG59O1xuXG50eXBlIE1vcmVEZXRhaWxzID0ge1xuICBlbnRyaWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBtZW1vOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG59O1xuXG5jb25zdCBCQVNFX1dFQlNJVEVfVVJMID0gJ2h0dHBzOi8vd3d3Lm1penJhaGktdGVmYWhvdC5jby5pbCc7XG5jb25zdCBMT0dJTl9VUkwgPSBgJHtCQVNFX1dFQlNJVEVfVVJMfS9sb2dpbi9pbmRleC5odG1sIy9hdXRoLXBhZ2UtaGVgO1xuY29uc3QgQkFTRV9BUFBfVVJMID0gJ2h0dHBzOi8vbXRvLm1penJhaGktdGVmYWhvdC5jby5pbCc7XG5jb25zdCBBRlRFUl9MT0dJTl9CQVNFX1VSTCA9IC9odHRwczpcXC9cXC9tdG9cXC5taXpyYWhpLXRlZmFob3RcXC5jb1xcLmlsXFwvT25saW5lQXBwXFwvLiovO1xuY29uc3QgT1NIX1BBR0UgPSAnL29zaC9sZWdhY3kvbGVnYWN5LU9zaC1NYWluJztcbmNvbnN0IFRSQU5TQUNUSU9OU19QQUdFID0gJy9vc2gvbGVnYWN5L3Jvb3QtbWFpbi1vc2gtcDQyOE5ldyc7XG5jb25zdCBUUkFOU0FDVElPTlNfUkVRVUVTVF9VUkxTID0gW1xuICBgJHtCQVNFX0FQUF9VUkx9L09ubGluZVBpbG90L2FwaS9Ta3lPU0gvZ2V0NDI4SW5kZXhgLFxuICBgJHtCQVNFX0FQUF9VUkx9L09ubGluZS9hcGkvU2t5T1NIL2dldDQyOEluZGV4YCxcbl07XG5jb25zdCBQRU5ESU5HX1RSQU5TQUNUSU9OU19QQUdFID0gJy9vc2gvbGVnYWN5L2xlZ2FjeS1Pc2gtcDQyMCc7XG5jb25zdCBQRU5ESU5HX1RSQU5TQUNUSU9OU19JRlJBTUUgPSAncDQyMC5hc3B4JztcbmNvbnN0IE1PUkVfREVUQUlMU19VUkwgPSBgJHtCQVNFX0FQUF9VUkx9L09ubGluZS9hcGkvT1NIL2dldE1haGVyQmVydXJpbVNNRmA7XG5jb25zdCBDSEFOR0VfUEFTU1dPUkRfVVJMID0gL2h0dHBzOlxcL1xcL3d3d1xcLm1penJhaGktdGVmYWhvdFxcLmNvXFwuaWxcXC9sb2dpblxcL2luZGV4XFwuaHRtbCNcXC9jaGFuZ2UtcGFzcy87XG5jb25zdCBEQVRFX0ZPUk1BVCA9ICdERC9NTS9ZWVlZJztcbmNvbnN0IE1BWF9ST1dTX1BFUl9SRVFVRVNUID0gMTAwMDAwMDAwMDA7XG5cbmNvbnN0IHVzZXJuYW1lU2VsZWN0b3IgPSAnI3VzZXJOdW1iZXJEZXNrdG9wSGViJztcbmNvbnN0IHBhc3N3b3JkU2VsZWN0b3IgPSAnI3Bhc3N3b3JkRGVza3RvcEhlYic7XG5jb25zdCBzdWJtaXRCdXR0b25TZWxlY3RvciA9ICdidXR0b24uYnRuLmJ0bi1wcmltYXJ5JztcbmNvbnN0IGludmFsaWRQYXNzd29yZFNlbGVjdG9yID0gJ2FbaHJlZio9XCJodHRwczovL3NjLm1penJhaGktdGVmYWhvdC5jby5pbC9TQ1NlcnZpY2VzL1NDL1AwMTAuYXNweFwiXSc7XG5jb25zdCBhZnRlckxvZ2luU2VsZWN0b3IgPSAnI2Ryb3Bkb3duQmFzaWMnO1xuY29uc3QgbG9naW5TcGlubmVyU2VsZWN0b3IgPSAnZGl2Lm5neC1vdmVybGF5LmxvYWRpbmctZm9yZWdyb3VuZCc7XG5jb25zdCBhY2NvdW50RHJvcERvd25JdGVtU2VsZWN0b3IgPSAnI0FjY291bnRQaWNrZXIgLml0ZW0nO1xuY29uc3QgcGVuZGluZ1RyeElkZW50aWZpZXJJZCA9ICcjY3RsMDBfQ29udGVudFBsYWNlSG9sZGVyMl9wYW5lbDEnO1xuY29uc3QgY2hlY2tpbmdBY2NvdW50VGFiSGVicmV3TmFtZSA9ICfXoteV15HXqCDXldep15EnO1xuY29uc3QgY2hlY2tpbmdBY2NvdW50VGFiRW5nbGlzaE5hbWUgPSAnQ2hlY2tpbmcgQWNjb3VudCc7XG5jb25zdCBnZW5lcmljRGVzY3JpcHRpb25zID0gWyfXlNei15HXqNeqINeZ15XXntefINec15HXoNenINeW16gg157Xodeg15nXoyDXlteoJ107XG5cbmZ1bmN0aW9uIGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzOiBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscykge1xuICByZXR1cm4gW1xuICAgIHsgc2VsZWN0b3I6IHVzZXJuYW1lU2VsZWN0b3IsIHZhbHVlOiBjcmVkZW50aWFscy51c2VybmFtZSB9LFxuICAgIHsgc2VsZWN0b3I6IHBhc3N3b3JkU2VsZWN0b3IsIHZhbHVlOiBjcmVkZW50aWFscy5wYXNzd29yZCB9LFxuICBdO1xufVxuXG5hc3luYyBmdW5jdGlvbiBpc0xvZ2dlZEluKG9wdGlvbnM6IHsgcGFnZT86IFBhZ2UgfCB1bmRlZmluZWQgfSB8IHVuZGVmaW5lZCkge1xuICBpZiAoIW9wdGlvbnM/LnBhZ2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3Qgb3NoWFBhdGggPSBgLy9hLy9zcGFuW2NvbnRhaW5zKC4sIFwiJHtjaGVja2luZ0FjY291bnRUYWJIZWJyZXdOYW1lfVwiKSBvciBjb250YWlucyguLCBcIiR7Y2hlY2tpbmdBY2NvdW50VGFiRW5nbGlzaE5hbWV9XCIpXWA7XG4gIGNvbnN0IG9zaFRhYiA9IGF3YWl0IG9wdGlvbnMucGFnZS4kJChgeHBhdGgke29zaFhQYXRofWApO1xuICByZXR1cm4gb3NoVGFiLmxlbmd0aCA+IDA7XG59XG5cbmZ1bmN0aW9uIGdldFBvc3NpYmxlTG9naW5SZXN1bHRzKHBhZ2U6IFBhZ2UpOiBQb3NzaWJsZUxvZ2luUmVzdWx0cyB7XG4gIHJldHVybiB7XG4gICAgW0xvZ2luUmVzdWx0cy5TdWNjZXNzXTogW0FGVEVSX0xPR0lOX0JBU0VfVVJMLCBpc0xvZ2dlZEluXSxcbiAgICBbTG9naW5SZXN1bHRzLkludmFsaWRQYXNzd29yZF06IFthc3luYyAoKSA9PiAhIShhd2FpdCBwYWdlLiQoaW52YWxpZFBhc3N3b3JkU2VsZWN0b3IpKV0sXG4gICAgW0xvZ2luUmVzdWx0cy5DaGFuZ2VQYXNzd29yZF06IFtDSEFOR0VfUEFTU1dPUkRfVVJMXSxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0U3RhcnRNb21lbnQob3B0aW9uc1N0YXJ0RGF0ZTogRGF0ZSkge1xuICBjb25zdCBkZWZhdWx0U3RhcnRNb21lbnQgPSBtb21lbnQoKS5zdWJ0cmFjdCgxLCAneWVhcnMnKTtcbiAgY29uc3Qgc3RhcnREYXRlID0gb3B0aW9uc1N0YXJ0RGF0ZSB8fCBkZWZhdWx0U3RhcnRNb21lbnQudG9EYXRlKCk7XG4gIHJldHVybiBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBnZXRFeHRyYVRyYW5zYWN0aW9uRGV0YWlscyhcbiAgcGFnZTogUGFnZSxcbiAgaXRlbTogU2NyYXBlZFRyYW5zYWN0aW9uLFxuICBhcGlIZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+LFxuKTogUHJvbWlzZTxNb3JlRGV0YWlscz4ge1xuICB0cnkge1xuICAgIGRlYnVnKCdnZXRFeHRyYVRyYW5zYWN0aW9uRGV0YWlscyBmb3IgaXRlbTonLCBpdGVtKTtcbiAgICBpZiAoaXRlbS5NQzAyU2hvd0RldGFpbHNFWiA9PT0gJzEnKSB7XG4gICAgICBjb25zdCB0YXJQZXVsYSA9IG1vbWVudChpdGVtLk1DMDJQZXVsYVRhYUVaKTtcbiAgICAgIGNvbnN0IHRhckVyZWNoID0gbW9tZW50KGl0ZW0uTUMwMkVyZWhUYWFFWik7XG5cbiAgICAgIGNvbnN0IHBhcmFtcyA9IHtcbiAgICAgICAgaW5Lb2RHb3JlbTogaXRlbS5NQzAyS29kR29yZW1FWixcbiAgICAgICAgaW5Bc21hY2h0YTogaXRlbS5NQzAyQXNtYWh0YU1la29yaXRFWixcbiAgICAgICAgaW5TY2h1bTogaXRlbS5NQzAyU2NodW1FWixcbiAgICAgICAgaW5OYWt2YW5pdDogaXRlbS5NQzAyS29kR29yZW1FWixcbiAgICAgICAgaW5TdWdUbnVhOiBpdGVtLk1DMDJTdWdUbnVhS2FzcGl0RVosXG4gICAgICAgIGluQWdpZDogaXRlbS5NQzAyQWdpZEVaLFxuICAgICAgICBpblRhclBldWxhRm9ybWF0dGVkOiB0YXJQZXVsYS5mb3JtYXQoREFURV9GT1JNQVQpLFxuICAgICAgICBpblRhckVyZWNoRm9ybWF0dGVkOiAodGFyRXJlY2gueWVhcigpID4gMjAwMCA/IHRhckVyZWNoIDogdGFyUGV1bGEpLmZvcm1hdChEQVRFX0ZPUk1BVCksXG4gICAgICAgIGluS29kTm9zZTogaXRlbS5NQzAyU2VpZk1hcmFsRVosXG4gICAgICAgIGluS29kVGF0Tm9zZTogaXRlbS5NQzAyTm9zZU1hcmFsRVosXG4gICAgICAgIGluVHJhbnNhY3Rpb25OdW1iZXI6IGl0ZW0uVHJhbnNhY3Rpb25OdW1iZXIsXG4gICAgICB9O1xuXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoUG9zdFdpdGhpblBhZ2U8TW9yZURldGFpbHNSZXNwb25zZT4ocGFnZSwgTU9SRV9ERVRBSUxTX1VSTCwgcGFyYW1zLCBhcGlIZWFkZXJzKTtcbiAgICAgIGNvbnN0IGRldGFpbHMgPSByZXNwb25zZT8uYm9keS5maWVsZHM/LlswXT8uWzBdPy5SZWNvcmRzPy5bMF0uRmllbGRzO1xuICAgICAgZGVidWcoJ2ZldGNoIGRldGFpbHMgZm9yJywgcGFyYW1zLCAnZGV0YWlsczonLCBkZXRhaWxzKTtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGRldGFpbHMpICYmIGRldGFpbHMubGVuZ3RoID4gMCkge1xuICAgICAgICBjb25zdCBlbnRyaWVzID0gZGV0YWlscy5tYXAocmVjb3JkID0+IFtyZWNvcmQuTGFiZWwudHJpbSgpLCByZWNvcmQuVmFsdWUudHJpbSgpXSk7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZW50cmllczogT2JqZWN0LmZyb21FbnRyaWVzKGVudHJpZXMpLFxuICAgICAgICAgIG1lbW86IGVudHJpZXNcbiAgICAgICAgICAgIC5maWx0ZXIoKFtsYWJlbF0pID0+IFsn16nXnScsICfXnteU15XXqicsICfXl9ep15HXldefJ10uc29tZShrZXkgPT4gbGFiZWwuc3RhcnRzV2l0aChrZXkpKSlcbiAgICAgICAgICAgIC5tYXAoKFtsYWJlbCwgdmFsdWVdKSA9PiBgJHtsYWJlbH0gJHt2YWx1ZX1gKVxuICAgICAgICAgICAgLmpvaW4oJywgJyksXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGRlYnVnKCdFcnJvciBmZXRjaGluZyBleHRyYSB0cmFuc2FjdGlvbiBkZXRhaWxzOicsIGVycm9yKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZW50cmllczoge30sXG4gICAgbWVtbzogdW5kZWZpbmVkLFxuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVEYXRhRnJvbVJlcXVlc3QocmVxdWVzdDogSFRUUFJlcXVlc3QsIG9wdGlvbnNTdGFydERhdGU6IERhdGUpIHtcbiAgY29uc3QgZGF0YSA9IEpTT04ucGFyc2UocmVxdWVzdC5wb3N0RGF0YSgpIHx8ICd7fScpO1xuXG4gIGRhdGEuaW5Gcm9tRGF0ZSA9IGdldFN0YXJ0TW9tZW50KG9wdGlvbnNTdGFydERhdGUpLmZvcm1hdChEQVRFX0ZPUk1BVCk7XG4gIGRhdGEuaW5Ub0RhdGUgPSBtb21lbnQoKS5mb3JtYXQoREFURV9GT1JNQVQpO1xuICBkYXRhLnRhYmxlLm1heFJvdyA9IE1BWF9ST1dTX1BFUl9SRVFVRVNUO1xuXG4gIHJldHVybiBkYXRhO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVIZWFkZXJzRnJvbVJlcXVlc3QocmVxdWVzdDogSFRUUFJlcXVlc3QpIHtcbiAgcmV0dXJuIHtcbiAgICBtaXpyYWhpeHNyZnRva2VuOiByZXF1ZXN0LmhlYWRlcnMoKS5taXpyYWhpeHNyZnRva2VuLFxuICAgICdDb250ZW50LVR5cGUnOiByZXF1ZXN0LmhlYWRlcnMoKVsnY29udGVudC10eXBlJ10sXG4gIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNvbnZlcnRUcmFuc2FjdGlvbnMoXG4gIHR4bnM6IFNjcmFwZWRUcmFuc2FjdGlvbltdLFxuICBnZXRNb3JlRGV0YWlsczogKHJvdzogU2NyYXBlZFRyYW5zYWN0aW9uKSA9PiBQcm9taXNlPE1vcmVEZXRhaWxzPixcbiAgcGVuZGluZ0lmVG9kYXlUcmFuc2FjdGlvbjogYm9vbGVhbiA9IGZhbHNlLFxuKTogUHJvbWlzZTxUcmFuc2FjdGlvbltdPiB7XG4gIHJldHVybiBQcm9taXNlLmFsbChcbiAgICB0eG5zLm1hcChhc3luYyByb3cgPT4ge1xuICAgICAgY29uc3QgbW9yZURldGFpbHMgPSBhd2FpdCBnZXRNb3JlRGV0YWlscyhyb3cpO1xuXG4gICAgICBjb25zdCB0eG5EYXRlID0gbW9tZW50KHJvdy5NQzAyUGV1bGFUYWFFWiwgbW9tZW50LkhUTUw1X0ZNVC5EQVRFVElNRV9MT0NBTF9TRUNPTkRTKS50b0lTT1N0cmluZygpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBUcmFuc2FjdGlvblR5cGVzLk5vcm1hbCxcbiAgICAgICAgaWRlbnRpZmllcjogcm93Lk1DMDJBc21haHRhTWVrb3JpdEVaID8gcGFyc2VJbnQocm93Lk1DMDJBc21haHRhTWVrb3JpdEVaLCAxMCkgOiB1bmRlZmluZWQsXG4gICAgICAgIGRhdGU6IHR4bkRhdGUsXG4gICAgICAgIHByb2Nlc3NlZERhdGU6IHR4bkRhdGUsXG4gICAgICAgIG9yaWdpbmFsQW1vdW50OiByb3cuTUMwMlNjaHVtRVosXG4gICAgICAgIG9yaWdpbmFsQ3VycmVuY3k6IFNIRUtFTF9DVVJSRU5DWSxcbiAgICAgICAgY2hhcmdlZEFtb3VudDogcm93Lk1DMDJTY2h1bUVaLFxuICAgICAgICBkZXNjcmlwdGlvbjogcm93Lk1DMDJUbnVhVGV1ckVaLFxuICAgICAgICBtZW1vOiBtb3JlRGV0YWlscz8ubWVtbyxcbiAgICAgICAgc3RhdHVzOlxuICAgICAgICAgIHBlbmRpbmdJZlRvZGF5VHJhbnNhY3Rpb24gJiYgcm93LklzVG9kYXlUcmFuc2FjdGlvblxuICAgICAgICAgICAgPyBUcmFuc2FjdGlvblN0YXR1c2VzLlBlbmRpbmdcbiAgICAgICAgICAgIDogVHJhbnNhY3Rpb25TdGF0dXNlcy5Db21wbGV0ZWQsXG4gICAgICB9O1xuICAgIH0pLFxuICApO1xufVxuXG5hc3luYyBmdW5jdGlvbiBleHRyYWN0UGVuZGluZ1RyYW5zYWN0aW9ucyhwYWdlOiBGcmFtZSk6IFByb21pc2U8VHJhbnNhY3Rpb25bXT4ge1xuICBjb25zdCBwZW5kaW5nVHhuID0gYXdhaXQgcGFnZUV2YWxBbGwocGFnZSwgJ3RyLnJnUm93LCB0ci5yZ0FsdFJvdycsIFtdLCB0cnMgPT4ge1xuICAgIHJldHVybiB0cnMubWFwKHRyID0+IEFycmF5LmZyb20odHIucXVlcnlTZWxlY3RvckFsbCgndGQnKSwgdGQgPT4gdGQudGV4dENvbnRlbnQgfHwgJycpKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHBlbmRpbmdUeG5cbiAgICAubWFwKChbZGF0ZVN0ciwgZGVzY3JpcHRpb24sIGluY29tZUFtb3VudFN0ciwgYW1vdW50U3RyXSkgPT4gKHtcbiAgICAgIGRhdGU6IG1vbWVudChkYXRlU3RyLCAnREQvTU0vWVknKS50b0lTT1N0cmluZygpLFxuICAgICAgYW1vdW50OiBwYXJzZUZsb2F0KGFtb3VudFN0ci5yZXBsYWNlQWxsKCcsJywgJycpKSxcbiAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgaW5jb21lQW1vdW50U3RyLCAvLyBUT0RPOiBoYW5kbGUgaW5jb21lQW1vdW50U3RyIG9uY2Ugd2Uga25vdyB0aGUgc2lnbiBvZiBpdFxuICAgIH0pKVxuICAgIC5maWx0ZXIodHhuID0+IHR4bi5kYXRlKVxuICAgIC5tYXAoKHsgZGF0ZSwgZGVzY3JpcHRpb24sIGFtb3VudCB9KSA9PiAoe1xuICAgICAgdHlwZTogVHJhbnNhY3Rpb25UeXBlcy5Ob3JtYWwsXG4gICAgICBkYXRlLFxuICAgICAgcHJvY2Vzc2VkRGF0ZTogZGF0ZSxcbiAgICAgIG9yaWdpbmFsQW1vdW50OiBhbW91bnQsXG4gICAgICBvcmlnaW5hbEN1cnJlbmN5OiBTSEVLRUxfQ1VSUkVOQ1ksXG4gICAgICBjaGFyZ2VkQW1vdW50OiBhbW91bnQsXG4gICAgICBkZXNjcmlwdGlvbixcbiAgICAgIHN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcy5QZW5kaW5nLFxuICAgIH0pKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gcG9zdExvZ2luKHBhZ2U6IFBhZ2UpIHtcbiAgYXdhaXQgUHJvbWlzZS5yYWNlKFtcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgYWZ0ZXJMb2dpblNlbGVjdG9yKSxcbiAgICB3YWl0VW50aWxFbGVtZW50Rm91bmQocGFnZSwgaW52YWxpZFBhc3N3b3JkU2VsZWN0b3IpLFxuICAgIHdhaXRGb3JVcmwocGFnZSwgQ0hBTkdFX1BBU1NXT1JEX1VSTCksXG4gIF0pO1xufVxuXG50eXBlIFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzID0geyB1c2VybmFtZTogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH07XG5cbmNsYXNzIE1penJhaGlTY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXJXaXRoQnJvd3NlcjxTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscz4ge1xuICBnZXRMb2dpbk9wdGlvbnMoY3JlZGVudGlhbHM6IFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvZ2luVXJsOiBMT0dJTl9VUkwsXG4gICAgICBmaWVsZHM6IGNyZWF0ZUxvZ2luRmllbGRzKGNyZWRlbnRpYWxzKSxcbiAgICAgIHN1Ym1pdEJ1dHRvblNlbGVjdG9yLFxuICAgICAgY2hlY2tSZWFkaW5lc3M6IGFzeW5jICgpID0+IHdhaXRVbnRpbEVsZW1lbnREaXNhcHBlYXIodGhpcy5wYWdlLCBsb2dpblNwaW5uZXJTZWxlY3RvciksXG4gICAgICBwb3N0QWN0aW9uOiBhc3luYyAoKSA9PiBwb3N0TG9naW4odGhpcy5wYWdlKSxcbiAgICAgIHBvc3NpYmxlUmVzdWx0czogZ2V0UG9zc2libGVMb2dpblJlc3VsdHModGhpcy5wYWdlKSxcbiAgICB9O1xuICB9XG5cbiAgYXN5bmMgZmV0Y2hEYXRhKCkge1xuICAgIGF3YWl0IHRoaXMucGFnZS4kZXZhbCgnI2Ryb3Bkb3duQmFzaWMsIC5pdGVtJywgZWwgPT4gKGVsIGFzIEhUTUxFbGVtZW50KS5jbGljaygpKTtcblxuICAgIGNvbnN0IG51bU9mQWNjb3VudHMgPSAoYXdhaXQgdGhpcy5wYWdlLiQkKGFjY291bnREcm9wRG93bkl0ZW1TZWxlY3RvcikpLmxlbmd0aDtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXN1bHRzOiBUcmFuc2FjdGlvbnNBY2NvdW50W10gPSBbXTtcblxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1PZkFjY291bnRzOyBpICs9IDEpIHtcbiAgICAgICAgaWYgKGkgPiAwKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5wYWdlLiRldmFsKCcjZHJvcGRvd25CYXNpYywgLml0ZW0nLCBlbCA9PiAoZWwgYXMgSFRNTEVsZW1lbnQpLmNsaWNrKCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgYXdhaXQgdGhpcy5wYWdlLiRldmFsKGAke2FjY291bnREcm9wRG93bkl0ZW1TZWxlY3Rvcn06bnRoLWNoaWxkKCR7aSArIDF9KWAsIGVsID0+IChlbCBhcyBIVE1MRWxlbWVudCkuY2xpY2soKSk7XG4gICAgICAgIHJlc3VsdHMucHVzaChhd2FpdCB0aGlzLmZldGNoQWNjb3VudCgpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VjY2VzczogdHJ1ZSxcbiAgICAgICAgYWNjb3VudHM6IHJlc3VsdHMsXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgICBlcnJvclR5cGU6IFNjcmFwZXJFcnJvclR5cGVzLkdlbmVyaWMsXG4gICAgICAgIGVycm9yTWVzc2FnZTogKGUgYXMgRXJyb3IpLm1lc3NhZ2UsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZ2V0UGVuZGluZ1RyYW5zYWN0aW9ucygpOiBQcm9taXNlPFRyYW5zYWN0aW9uW10+IHtcbiAgICBhd2FpdCB0aGlzLnBhZ2UuJGV2YWwoYGFbaHJlZio9XCIke1BFTkRJTkdfVFJBTlNBQ1RJT05TX1BBR0V9XCJdYCwgZWwgPT4gKGVsIGFzIEhUTUxFbGVtZW50KS5jbGljaygpKTtcbiAgICBjb25zdCBmcmFtZSA9IGF3YWl0IHdhaXRVbnRpbElmcmFtZUZvdW5kKHRoaXMucGFnZSwgZiA9PiBmLnVybCgpLmluY2x1ZGVzKFBFTkRJTkdfVFJBTlNBQ1RJT05TX0lGUkFNRSkpO1xuICAgIGNvbnN0IGlzUGVuZGluZyA9IGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChmcmFtZSwgcGVuZGluZ1RyeElkZW50aWZpZXJJZClcbiAgICAgIC50aGVuKCgpID0+IHRydWUpXG4gICAgICAuY2F0Y2goKCkgPT4gZmFsc2UpO1xuICAgIGlmICghaXNQZW5kaW5nKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgY29uc3QgcGVuZGluZ1R4biA9IGF3YWl0IGV4dHJhY3RQZW5kaW5nVHJhbnNhY3Rpb25zKGZyYW1lKTtcbiAgICByZXR1cm4gcGVuZGluZ1R4bjtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgZmV0Y2hBY2NvdW50KCkge1xuICAgIGF3YWl0IHRoaXMucGFnZS53YWl0Rm9yU2VsZWN0b3IoYGFbaHJlZio9XCIke09TSF9QQUdFfVwiXWApO1xuICAgIGF3YWl0IHRoaXMucGFnZS4kZXZhbChgYVtocmVmKj1cIiR7T1NIX1BBR0V9XCJdYCwgZWwgPT4gKGVsIGFzIEhUTUxFbGVtZW50KS5jbGljaygpKTtcbiAgICBhd2FpdCB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCBgYVtocmVmKj1cIiR7VFJBTlNBQ1RJT05TX1BBR0V9XCJdYCk7XG4gICAgYXdhaXQgdGhpcy5wYWdlLiRldmFsKGBhW2hyZWYqPVwiJHtUUkFOU0FDVElPTlNfUEFHRX1cIl1gLCBlbCA9PiAoZWwgYXMgSFRNTEVsZW1lbnQpLmNsaWNrKCkpO1xuXG4gICAgY29uc3QgYWNjb3VudE51bWJlckVsZW1lbnQgPSBhd2FpdCB0aGlzLnBhZ2UuJCgnI2Ryb3Bkb3duQmFzaWMgYiBzcGFuJyk7XG4gICAgY29uc3QgYWNjb3VudE51bWJlckhhbmRsZSA9IGF3YWl0IGFjY291bnROdW1iZXJFbGVtZW50Py5nZXRQcm9wZXJ0eSgndGl0bGUnKTtcbiAgICBjb25zdCBhY2NvdW50TnVtYmVyID0gKGF3YWl0IGFjY291bnROdW1iZXJIYW5kbGU/Lmpzb25WYWx1ZSgpKSBhcyBzdHJpbmc7XG4gICAgaWYgKCFhY2NvdW50TnVtYmVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FjY291bnQgbnVtYmVyIG5vdCBmb3VuZCcpO1xuICAgIH1cblxuICAgIGNvbnN0IFtyZXNwb25zZSwgYXBpSGVhZGVyc10gPSBhd2FpdCBQcm9taXNlLmFueShcbiAgICAgIFRSQU5TQUNUSU9OU19SRVFVRVNUX1VSTFMubWFwKGFzeW5jIHVybCA9PiB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3QgPSBhd2FpdCB0aGlzLnBhZ2Uud2FpdEZvclJlcXVlc3QodXJsKTtcbiAgICAgICAgY29uc3QgZGF0YSA9IGNyZWF0ZURhdGFGcm9tUmVxdWVzdChyZXF1ZXN0LCB0aGlzLm9wdGlvbnMuc3RhcnREYXRlKTtcbiAgICAgICAgY29uc3QgaGVhZGVycyA9IGNyZWF0ZUhlYWRlcnNGcm9tUmVxdWVzdChyZXF1ZXN0KTtcblxuICAgICAgICByZXR1cm4gW2F3YWl0IGZldGNoUG9zdFdpdGhpblBhZ2U8U2NyYXBlZFRyYW5zYWN0aW9uc1Jlc3VsdD4odGhpcy5wYWdlLCB1cmwsIGRhdGEsIGhlYWRlcnMpLCBoZWFkZXJzXSBhcyBjb25zdDtcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICBpZiAoIXJlc3BvbnNlIHx8IHJlc3BvbnNlLmhlYWRlci5zdWNjZXNzID09PSBmYWxzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgRXJyb3IgZmV0Y2hpbmcgdHJhbnNhY3Rpb24uIFJlc3BvbnNlIG1lc3NhZ2U6ICR7cmVzcG9uc2UgPyByZXNwb25zZS5oZWFkZXIubWVzc2FnZXNbMF0udGV4dCA6ICcnfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IHJlbGV2YW50Um93cyA9IHJlc3BvbnNlLmJvZHkudGFibGUucm93cy5maWx0ZXIocm93ID0+IHJvdy5SZWNUeXBlU3BlY2lmaWVkKTtcbiAgICBjb25zdCBvc2hUeG4gPSBhd2FpdCBjb252ZXJ0VHJhbnNhY3Rpb25zKFxuICAgICAgcmVsZXZhbnRSb3dzLFxuICAgICAgdGhpcy5vcHRpb25zLmFkZGl0aW9uYWxUcmFuc2FjdGlvbkluZm9ybWF0aW9uXG4gICAgICAgID8gcm93ID0+IGdldEV4dHJhVHJhbnNhY3Rpb25EZXRhaWxzKHRoaXMucGFnZSwgcm93LCBhcGlIZWFkZXJzKVxuICAgICAgICA6ICgpID0+IFByb21pc2UucmVzb2x2ZSh7IGVudHJpZXM6IHt9LCBtZW1vOiB1bmRlZmluZWQgfSksXG4gICAgICB0aGlzLm9wdGlvbnMub3B0SW5GZWF0dXJlcz8uaW5jbHVkZXMoJ21penJhaGk6cGVuZGluZ0lmVG9kYXlUcmFuc2FjdGlvbicpLFxuICAgICk7XG5cbiAgICBvc2hUeG5cbiAgICAgIC5maWx0ZXIodHhuID0+IHRoaXMuc2hvdWxkTWFya0FzUGVuZGluZyh0eG4pKVxuICAgICAgLmZvckVhY2godHhuID0+IHtcbiAgICAgICAgdHhuLnN0YXR1cyA9IFRyYW5zYWN0aW9uU3RhdHVzZXMuUGVuZGluZztcbiAgICAgIH0pO1xuXG4gICAgLy8gd29ya2Fyb3VuZCBmb3IgYSBidWcgd2hpY2ggdGhlIGJhbmsncyBBUEkgcmV0dXJucyB0cmFuc2FjdGlvbnMgYmVmb3JlIHRoZSByZXF1ZXN0ZWQgc3RhcnQgZGF0ZVxuICAgIGNvbnN0IHN0YXJ0TW9tZW50ID0gZ2V0U3RhcnRNb21lbnQodGhpcy5vcHRpb25zLnN0YXJ0RGF0ZSk7XG4gICAgY29uc3Qgb3NoVHhuQWZ0ZXJTdGFydERhdGUgPSBvc2hUeG4uZmlsdGVyKHR4biA9PiBtb21lbnQodHhuLmRhdGUpLmlzU2FtZU9yQWZ0ZXIoc3RhcnRNb21lbnQpKTtcblxuICAgIGNvbnN0IHBlbmRpbmdUeG4gPSBhd2FpdCB0aGlzLmdldFBlbmRpbmdUcmFuc2FjdGlvbnMoKTtcbiAgICBjb25zdCBhbGxUeG4gPSBvc2hUeG5BZnRlclN0YXJ0RGF0ZS5jb25jYXQocGVuZGluZ1R4bik7XG5cbiAgICByZXR1cm4ge1xuICAgICAgYWNjb3VudE51bWJlcixcbiAgICAgIHR4bnM6IGFsbFR4bixcbiAgICAgIGJhbGFuY2U6ICtyZXNwb25zZS5ib2R5LmZpZWxkcz8uWWl0cmEsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc2hvdWxkTWFya0FzUGVuZGluZyh0eG46IFRyYW5zYWN0aW9uKTogYm9vbGVhbiB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5vcHRJbkZlYXR1cmVzPy5pbmNsdWRlcygnbWl6cmFoaTpwZW5kaW5nSWZOb0lkZW50aWZpZXInKSAmJiAhdHhuLmlkZW50aWZpZXIpIHtcbiAgICAgIGRlYnVnKGBNYXJraW5nIHRyYW5zYWN0aW9uICcke3R4bi5kZXNjcmlwdGlvbn0nIGFzIHBlbmRpbmcgZHVlIHRvIG5vIGlkZW50aWZpZXIuYCk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLm9wdGlvbnMub3B0SW5GZWF0dXJlcz8uaW5jbHVkZXMoJ21penJhaGk6cGVuZGluZ0lmSGFzR2VuZXJpY0Rlc2NyaXB0aW9uJykgJiZcbiAgICAgIGdlbmVyaWNEZXNjcmlwdGlvbnMuaW5jbHVkZXModHhuLmRlc2NyaXB0aW9uKVxuICAgICkge1xuICAgICAgZGVidWcoYE1hcmtpbmcgdHJhbnNhY3Rpb24gJyR7dHhuLmRlc2NyaXB0aW9ufScgYXMgcGVuZGluZyBkdWUgdG8gZ2VuZXJpYyBkZXNjcmlwdGlvbi5gKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBNaXpyYWhpU2NyYXBlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsVUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUscUJBQUEsR0FBQUYsT0FBQTtBQU1BLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFdBQUEsR0FB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
@@ -36,6 +36,7 @@ describe('Mizrahi scraper', () => {
36
36
  (0, _testsUtils.maybeTestCompanyAPI)(COMPANY_ID)('should scrape transactions', async () => {
37
37
  const options = {
38
38
  ...testsConfig.options,
39
+ optInFeatures: ['mizrahi:pendingIfHasGenericDescription', 'mizrahi:pendingIfHasGenericDescriptionWithDate', 'mizrahi:pendingIfTodayTransaction'],
39
40
  companyId: COMPANY_ID
40
41
  };
41
42
  const scraper = new _mizrahi.default(options);
@@ -52,4 +53,4 @@ describe('Mizrahi scraper', () => {
52
53
  (0, _testsUtils.exportTransactions)(COMPANY_ID, result.accounts || []);
53
54
  });
54
55
  });
55
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWl6cmFoaSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3Rlc3RzVXRpbHMiLCJfZGVmaW5pdGlvbnMiLCJfY29uc3RhbnRzIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJfZGVidWciLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJkZWJ1ZyIsImVuYWJsZSIsIkNPTVBBTllfSUQiLCJ0ZXN0c0NvbmZpZyIsImdldFRlc3RzQ29uZmlnIiwiZGVzY3JpYmUiLCJiZWZvcmVBbGwiLCJleHRlbmRBc3luY1RpbWVvdXQiLCJ0ZXN0IiwiZXhwZWN0IiwiU0NSQVBFUlMiLCJtaXpyYWhpIiwidG9CZURlZmluZWQiLCJsb2dpbkZpZWxkcyIsInRvQ29udGFpbiIsIm1heWJlVGVzdENvbXBhbnlBUEkiLCJjb25maWciLCJjb21wYW55QVBJIiwiaW52YWxpZFBhc3N3b3JkIiwib3B0aW9ucyIsImNvbXBhbnlJZCIsInNjcmFwZXIiLCJNaXpyYWhpU2NyYXBlciIsInJlc3VsdCIsInNjcmFwZSIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJzdWNjZXNzIiwidG9CZUZhbHN5IiwiZXJyb3JUeXBlIiwidG9CZSIsIkxvZ2luUmVzdWx0cyIsIkludmFsaWRQYXNzd29yZCIsImNyZWRlbnRpYWxzIiwiZXJyb3IiLCJlcnJvck1lc3NhZ2UiLCJ0cmltIiwidG9CZVRydXRoeSIsImFjY291bnRzIiwibGVuZ3RoIiwidG9CZUdyZWF0ZXJUaGFuIiwiYWNjb3VudCIsImFjY291bnROdW1iZXIiLCJub3QiLCJ0eG5zIiwiZGF0ZSIsInRvTWF0Y2giLCJJU09fREFURV9SRUdFWCIsImV4cG9ydFRyYW5zYWN0aW9ucyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JhcGVycy9taXpyYWhpLnRlc3QudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE1penJhaGlTY3JhcGVyIGZyb20gJy4vbWl6cmFoaSc7XG5pbXBvcnQgeyBtYXliZVRlc3RDb21wYW55QVBJLCBleHRlbmRBc3luY1RpbWVvdXQsIGdldFRlc3RzQ29uZmlnLCBleHBvcnRUcmFuc2FjdGlvbnMgfSBmcm9tICcuLi90ZXN0cy90ZXN0cy11dGlscyc7XG5pbXBvcnQgeyBTQ1JBUEVSUyB9IGZyb20gJy4uL2RlZmluaXRpb25zJztcbmltcG9ydCB7IElTT19EQVRFX1JFR0VYIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCB7IExvZ2luUmVzdWx0cyB9IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQgeyB0eXBlIFRyYW5zYWN0aW9uc0FjY291bnQgfSBmcm9tICcuLi90cmFuc2FjdGlvbnMnO1xuaW1wb3J0IGRlYnVnIGZyb20gJ2RlYnVnJztcblxuZGVidWcuZW5hYmxlKCdpc3JhZWxpLWJhbmstc2NyYXBlcnM6bWl6cmFoaScpO1xuXG5jb25zdCBDT01QQU5ZX0lEID0gJ21penJhaGknOyAvLyBUT0RPIHRoaXMgcHJvcGVydHkgc2hvdWxkIGJlIGhhcmQtY29kZWQgaW4gdGhlIHByb3ZpZGVyXG5jb25zdCB0ZXN0c0NvbmZpZyA9IGdldFRlc3RzQ29uZmlnKCk7XG5cbmRlc2NyaWJlKCdNaXpyYWhpIHNjcmFwZXInLCAoKSA9PiB7XG4gIGJlZm9yZUFsbCgoKSA9PiB7XG4gICAgZXh0ZW5kQXN5bmNUaW1lb3V0KCk7IC8vIFRoZSBkZWZhdWx0IHRpbWVvdXQgaXMgNSBzZWNvbmRzIHBlciBhc3luYyB0ZXN0LCB0aGlzIGZ1bmN0aW9uIGV4dGVuZHMgdGhlIHRpbWVvdXQgdmFsdWVcbiAgfSk7XG5cbiAgdGVzdCgnc2hvdWxkIGV4cG9zZSBsb2dpbiBmaWVsZHMgaW4gc2NyYXBlcnMgY29uc3RhbnQnLCAoKSA9PiB7XG4gICAgZXhwZWN0KFNDUkFQRVJTLm1penJhaGkpLnRvQmVEZWZpbmVkKCk7XG4gICAgZXhwZWN0KFNDUkFQRVJTLm1penJhaGkubG9naW5GaWVsZHMpLnRvQ29udGFpbigndXNlcm5hbWUnKTtcbiAgICBleHBlY3QoU0NSQVBFUlMubWl6cmFoaS5sb2dpbkZpZWxkcykudG9Db250YWluKCdwYXNzd29yZCcpO1xuICB9KTtcblxuICBtYXliZVRlc3RDb21wYW55QVBJKENPTVBBTllfSUQsIGNvbmZpZyA9PiBjb25maWcuY29tcGFueUFQSS5pbnZhbGlkUGFzc3dvcmQpKFxuICAgICdzaG91bGQgZmFpbCBvbiBpbnZhbGlkIHVzZXIvcGFzc3dvcmQnLFxuICAgIGFzeW5jICgpID0+IHtcbiAgICAgIGNvbnN0IG9wdGlvbnMgPSB7XG4gICAgICAgIC4uLnRlc3RzQ29uZmlnLm9wdGlvbnMsXG4gICAgICAgIGNvbXBhbnlJZDogQ09NUEFOWV9JRCxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHNjcmFwZXIgPSBuZXcgTWl6cmFoaVNjcmFwZXIob3B0aW9ucyk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNjcmFwZXIuc2NyYXBlKHsgdXNlcm5hbWU6ICdlMTBzMTInLCBwYXNzd29yZDogJzNmM3NzM2QnIH0pO1xuXG4gICAgICBleHBlY3QocmVzdWx0KS50b0JlRGVmaW5lZCgpO1xuICAgICAgZXhwZWN0KHJlc3VsdC5zdWNjZXNzKS50b0JlRmFsc3koKTtcbiAgICAgIGV4cGVjdChyZXN1bHQuZXJyb3JUeXBlKS50b0JlKExvZ2luUmVzdWx0cy5JbnZhbGlkUGFzc3dvcmQpO1xuICAgIH0sXG4gICk7XG5cbiAgbWF5YmVUZXN0Q29tcGFueUFQSShDT01QQU5ZX0lEKSgnc2hvdWxkIHNjcmFwZSB0cmFuc2FjdGlvbnMnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgIC4uLnRlc3RzQ29uZmlnLm9wdGlvbnMsXG4gICAgICBjb21wYW55SWQ6IENPTVBBTllfSUQsXG4gICAgfTtcblxuICAgIGNvbnN0IHNjcmFwZXIgPSBuZXcgTWl6cmFoaVNjcmFwZXIob3B0aW9ucyk7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2NyYXBlci5zY3JhcGUodGVzdHNDb25maWcuY3JlZGVudGlhbHMubWl6cmFoaSk7XG4gICAgZXhwZWN0KHJlc3VsdCkudG9CZURlZmluZWQoKTtcbiAgICBjb25zdCBlcnJvciA9IGAke3Jlc3VsdC5lcnJvclR5cGUgfHwgJyd9ICR7cmVzdWx0LmVycm9yTWVzc2FnZSB8fCAnJ31gLnRyaW0oKTtcbiAgICBleHBlY3QoZXJyb3IpLnRvQmUoJycpO1xuICAgIGV4cGVjdChyZXN1bHQuc3VjY2VzcykudG9CZVRydXRoeSgpO1xuICAgIGV4cGVjdChyZXN1bHQuYWNjb3VudHMpLnRvQmVEZWZpbmVkKCk7XG4gICAgZXhwZWN0KChyZXN1bHQuYWNjb3VudHMgYXMgYW55KS5sZW5ndGgpLnRvQmVHcmVhdGVyVGhhbigwKTtcbiAgICBjb25zdCBhY2NvdW50OiBUcmFuc2FjdGlvbnNBY2NvdW50ID0gKHJlc3VsdCBhcyBhbnkpLmFjY291bnRzWzBdO1xuICAgIGV4cGVjdChhY2NvdW50LmFjY291bnROdW1iZXIpLm5vdC50b0JlKCcnKTtcbiAgICBleHBlY3QoYWNjb3VudC50eG5zWzBdLmRhdGUpLnRvTWF0Y2goSVNPX0RBVEVfUkVHRVgpO1xuXG4gICAgZXhwb3J0VHJhbnNhY3Rpb25zKENPTVBBTllfSUQsIHJlc3VsdC5hY2NvdW50cyB8fCBbXSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsSUFBQUEsUUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsV0FBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsWUFBQSxHQUFBRixPQUFBO0FBQ0EsSUFBQUcsVUFBQSxHQUFBSCxPQUFBO0FBQ0EsSUFBQUksdUJBQUEsR0FBQUosT0FBQTtBQUVBLElBQUFLLE1BQUEsR0FBQU4sc0JBQUEsQ0FBQUMsT0FBQTtBQUEwQixTQUFBRCx1QkFBQU8sQ0FBQSxXQUFBQSxDQUFBLElBQUFBLENBQUEsQ0FBQUMsVUFBQSxHQUFBRCxDQUFBLEtBQUFFLE9BQUEsRUFBQUYsQ0FBQTtBQUUxQkcsY0FBSyxDQUFDQyxNQUFNLENBQUMsK0JBQStCLENBQUM7QUFFN0MsTUFBTUMsVUFBVSxHQUFHLFNBQVMsQ0FBQyxDQUFDO0FBQzlCLE1BQU1DLFdBQVcsR0FBRyxJQUFBQywwQkFBYyxFQUFDLENBQUM7QUFFcENDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxNQUFNO0VBQ2hDQyxTQUFTLENBQUMsTUFBTTtJQUNkLElBQUFDLDhCQUFrQixFQUFDLENBQUMsQ0FBQyxDQUFDO0VBQ3hCLENBQUMsQ0FBQztFQUVGQyxJQUFJLENBQUMsaURBQWlELEVBQUUsTUFBTTtJQUM1REMsTUFBTSxDQUFDQyxxQkFBUSxDQUFDQyxPQUFPLENBQUMsQ0FBQ0MsV0FBVyxDQUFDLENBQUM7SUFDdENILE1BQU0sQ0FBQ0MscUJBQVEsQ0FBQ0MsT0FBTyxDQUFDRSxXQUFXLENBQUMsQ0FBQ0MsU0FBUyxDQUFDLFVBQVUsQ0FBQztJQUMxREwsTUFBTSxDQUFDQyxxQkFBUSxDQUFDQyxPQUFPLENBQUNFLFdBQVcsQ0FBQyxDQUFDQyxTQUFTLENBQUMsVUFBVSxDQUFDO0VBQzVELENBQUMsQ0FBQztFQUVGLElBQUFDLCtCQUFtQixFQUFDYixVQUFVLEVBQUVjLE1BQU0sSUFBSUEsTUFBTSxDQUFDQyxVQUFVLENBQUNDLGVBQWUsQ0FBQyxDQUMxRSxzQ0FBc0MsRUFDdEMsWUFBWTtJQUNWLE1BQU1DLE9BQU8sR0FBRztNQUNkLEdBQUdoQixXQUFXLENBQUNnQixPQUFPO01BQ3RCQyxTQUFTLEVBQUVsQjtJQUNiLENBQUM7SUFFRCxNQUFNbUIsT0FBTyxHQUFHLElBQUlDLGdCQUFjLENBQUNILE9BQU8sQ0FBQztJQUUzQyxNQUFNSSxNQUFNLEdBQUcsTUFBTUYsT0FBTyxDQUFDRyxNQUFNLENBQUM7TUFBRUMsUUFBUSxFQUFFLFFBQVE7TUFBRUMsUUFBUSxFQUFFO0lBQVUsQ0FBQyxDQUFDO0lBRWhGakIsTUFBTSxDQUFDYyxNQUFNLENBQUMsQ0FBQ1gsV0FBVyxDQUFDLENBQUM7SUFDNUJILE1BQU0sQ0FBQ2MsTUFBTSxDQUFDSSxPQUFPLENBQUMsQ0FBQ0MsU0FBUyxDQUFDLENBQUM7SUFDbENuQixNQUFNLENBQUNjLE1BQU0sQ0FBQ00sU0FBUyxDQUFDLENBQUNDLElBQUksQ0FBQ0Msb0NBQVksQ0FBQ0MsZUFBZSxDQUFDO0VBQzdELENBQ0YsQ0FBQztFQUVELElBQUFqQiwrQkFBbUIsRUFBQ2IsVUFBVSxDQUFDLENBQUMsNEJBQTRCLEVBQUUsWUFBWTtJQUN4RSxNQUFNaUIsT0FBTyxHQUFHO01BQ2QsR0FBR2hCLFdBQVcsQ0FBQ2dCLE9BQU87TUFDdEJDLFNBQVMsRUFBRWxCO0lBQ2IsQ0FBQztJQUVELE1BQU1tQixPQUFPLEdBQUcsSUFBSUMsZ0JBQWMsQ0FBQ0gsT0FBTyxDQUFDO0lBQzNDLE1BQU1JLE1BQU0sR0FBRyxNQUFNRixPQUFPLENBQUNHLE1BQU0sQ0FBQ3JCLFdBQVcsQ0FBQzhCLFdBQVcsQ0FBQ3RCLE9BQU8sQ0FBQztJQUNwRUYsTUFBTSxDQUFDYyxNQUFNLENBQUMsQ0FBQ1gsV0FBVyxDQUFDLENBQUM7SUFDNUIsTUFBTXNCLEtBQUssR0FBRyxHQUFHWCxNQUFNLENBQUNNLFNBQVMsSUFBSSxFQUFFLElBQUlOLE1BQU0sQ0FBQ1ksWUFBWSxJQUFJLEVBQUUsRUFBRSxDQUFDQyxJQUFJLENBQUMsQ0FBQztJQUM3RTNCLE1BQU0sQ0FBQ3lCLEtBQUssQ0FBQyxDQUFDSixJQUFJLENBQUMsRUFBRSxDQUFDO0lBQ3RCckIsTUFBTSxDQUFDYyxNQUFNLENBQUNJLE9BQU8sQ0FBQyxDQUFDVSxVQUFVLENBQUMsQ0FBQztJQUNuQzVCLE1BQU0sQ0FBQ2MsTUFBTSxDQUFDZSxRQUFRLENBQUMsQ0FBQzFCLFdBQVcsQ0FBQyxDQUFDO0lBQ3JDSCxNQUFNLENBQUVjLE1BQU0sQ0FBQ2UsUUFBUSxDQUFTQyxNQUFNLENBQUMsQ0FBQ0MsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUMxRCxNQUFNQyxPQUE0QixHQUFJbEIsTUFBTSxDQUFTZSxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ2hFN0IsTUFBTSxDQUFDZ0MsT0FBTyxDQUFDQyxhQUFhLENBQUMsQ0FBQ0MsR0FBRyxDQUFDYixJQUFJLENBQUMsRUFBRSxDQUFDO0lBQzFDckIsTUFBTSxDQUFDZ0MsT0FBTyxDQUFDRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUNDLElBQUksQ0FBQyxDQUFDQyxPQUFPLENBQUNDLHlCQUFjLENBQUM7SUFFcEQsSUFBQUMsOEJBQWtCLEVBQUM5QyxVQUFVLEVBQUVxQixNQUFNLENBQUNlLFFBQVEsSUFBSSxFQUFFLENBQUM7RUFDdkQsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwiaWdub3JlTGlzdCI6W119
56
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbWl6cmFoaSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX3Rlc3RzVXRpbHMiLCJfZGVmaW5pdGlvbnMiLCJfY29uc3RhbnRzIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJfZGVidWciLCJlIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJkZWJ1ZyIsImVuYWJsZSIsIkNPTVBBTllfSUQiLCJ0ZXN0c0NvbmZpZyIsImdldFRlc3RzQ29uZmlnIiwiZGVzY3JpYmUiLCJiZWZvcmVBbGwiLCJleHRlbmRBc3luY1RpbWVvdXQiLCJ0ZXN0IiwiZXhwZWN0IiwiU0NSQVBFUlMiLCJtaXpyYWhpIiwidG9CZURlZmluZWQiLCJsb2dpbkZpZWxkcyIsInRvQ29udGFpbiIsIm1heWJlVGVzdENvbXBhbnlBUEkiLCJjb25maWciLCJjb21wYW55QVBJIiwiaW52YWxpZFBhc3N3b3JkIiwib3B0aW9ucyIsImNvbXBhbnlJZCIsInNjcmFwZXIiLCJNaXpyYWhpU2NyYXBlciIsInJlc3VsdCIsInNjcmFwZSIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJzdWNjZXNzIiwidG9CZUZhbHN5IiwiZXJyb3JUeXBlIiwidG9CZSIsIkxvZ2luUmVzdWx0cyIsIkludmFsaWRQYXNzd29yZCIsIm9wdEluRmVhdHVyZXMiLCJjcmVkZW50aWFscyIsImVycm9yIiwiZXJyb3JNZXNzYWdlIiwidHJpbSIsInRvQmVUcnV0aHkiLCJhY2NvdW50cyIsImxlbmd0aCIsInRvQmVHcmVhdGVyVGhhbiIsImFjY291bnQiLCJhY2NvdW50TnVtYmVyIiwibm90IiwidHhucyIsImRhdGUiLCJ0b01hdGNoIiwiSVNPX0RBVEVfUkVHRVgiLCJleHBvcnRUcmFuc2FjdGlvbnMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyYXBlcnMvbWl6cmFoaS50ZXN0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBNaXpyYWhpU2NyYXBlciBmcm9tICcuL21penJhaGknO1xuaW1wb3J0IHsgbWF5YmVUZXN0Q29tcGFueUFQSSwgZXh0ZW5kQXN5bmNUaW1lb3V0LCBnZXRUZXN0c0NvbmZpZywgZXhwb3J0VHJhbnNhY3Rpb25zIH0gZnJvbSAnLi4vdGVzdHMvdGVzdHMtdXRpbHMnO1xuaW1wb3J0IHsgU0NSQVBFUlMgfSBmcm9tICcuLi9kZWZpbml0aW9ucyc7XG5pbXBvcnQgeyBJU09fREFURV9SRUdFWCB9IGZyb20gJy4uL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBMb2dpblJlc3VsdHMgfSBmcm9tICcuL2Jhc2Utc2NyYXBlci13aXRoLWJyb3dzZXInO1xuaW1wb3J0IHsgdHlwZSBUcmFuc2FjdGlvbnNBY2NvdW50IH0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCBkZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyB0eXBlIFNjcmFwZXJPcHRpb25zIH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuXG5kZWJ1Zy5lbmFibGUoJ2lzcmFlbGktYmFuay1zY3JhcGVyczptaXpyYWhpJyk7XG5cbmNvbnN0IENPTVBBTllfSUQgPSAnbWl6cmFoaSc7IC8vIFRPRE8gdGhpcyBwcm9wZXJ0eSBzaG91bGQgYmUgaGFyZC1jb2RlZCBpbiB0aGUgcHJvdmlkZXJcbmNvbnN0IHRlc3RzQ29uZmlnID0gZ2V0VGVzdHNDb25maWcoKTtcblxuZGVzY3JpYmUoJ01penJhaGkgc2NyYXBlcicsICgpID0+IHtcbiAgYmVmb3JlQWxsKCgpID0+IHtcbiAgICBleHRlbmRBc3luY1RpbWVvdXQoKTsgLy8gVGhlIGRlZmF1bHQgdGltZW91dCBpcyA1IHNlY29uZHMgcGVyIGFzeW5jIHRlc3QsIHRoaXMgZnVuY3Rpb24gZXh0ZW5kcyB0aGUgdGltZW91dCB2YWx1ZVxuICB9KTtcblxuICB0ZXN0KCdzaG91bGQgZXhwb3NlIGxvZ2luIGZpZWxkcyBpbiBzY3JhcGVycyBjb25zdGFudCcsICgpID0+IHtcbiAgICBleHBlY3QoU0NSQVBFUlMubWl6cmFoaSkudG9CZURlZmluZWQoKTtcbiAgICBleHBlY3QoU0NSQVBFUlMubWl6cmFoaS5sb2dpbkZpZWxkcykudG9Db250YWluKCd1c2VybmFtZScpO1xuICAgIGV4cGVjdChTQ1JBUEVSUy5taXpyYWhpLmxvZ2luRmllbGRzKS50b0NvbnRhaW4oJ3Bhc3N3b3JkJyk7XG4gIH0pO1xuXG4gIG1heWJlVGVzdENvbXBhbnlBUEkoQ09NUEFOWV9JRCwgY29uZmlnID0+IGNvbmZpZy5jb21wYW55QVBJLmludmFsaWRQYXNzd29yZCkoXG4gICAgJ3Nob3VsZCBmYWlsIG9uIGludmFsaWQgdXNlci9wYXNzd29yZCcsXG4gICAgYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3Qgb3B0aW9ucyA9IHtcbiAgICAgICAgLi4udGVzdHNDb25maWcub3B0aW9ucyxcbiAgICAgICAgY29tcGFueUlkOiBDT01QQU5ZX0lELFxuICAgICAgfTtcblxuICAgICAgY29uc3Qgc2NyYXBlciA9IG5ldyBNaXpyYWhpU2NyYXBlcihvcHRpb25zKTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgc2NyYXBlci5zY3JhcGUoeyB1c2VybmFtZTogJ2UxMHMxMicsIHBhc3N3b3JkOiAnM2Yzc3MzZCcgfSk7XG5cbiAgICAgIGV4cGVjdChyZXN1bHQpLnRvQmVEZWZpbmVkKCk7XG4gICAgICBleHBlY3QocmVzdWx0LnN1Y2Nlc3MpLnRvQmVGYWxzeSgpO1xuICAgICAgZXhwZWN0KHJlc3VsdC5lcnJvclR5cGUpLnRvQmUoTG9naW5SZXN1bHRzLkludmFsaWRQYXNzd29yZCk7XG4gICAgfSxcbiAgKTtcblxuICBtYXliZVRlc3RDb21wYW55QVBJKENPTVBBTllfSUQpKCdzaG91bGQgc2NyYXBlIHRyYW5zYWN0aW9ucycsIGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBvcHRpb25zOiBTY3JhcGVyT3B0aW9ucyA9IHtcbiAgICAgIC4uLnRlc3RzQ29uZmlnLm9wdGlvbnMsXG4gICAgICBvcHRJbkZlYXR1cmVzOiBbXG4gICAgICAgICdtaXpyYWhpOnBlbmRpbmdJZkhhc0dlbmVyaWNEZXNjcmlwdGlvbicsXG4gICAgICAgICdtaXpyYWhpOnBlbmRpbmdJZkhhc0dlbmVyaWNEZXNjcmlwdGlvbldpdGhEYXRlJyxcbiAgICAgICAgJ21penJhaGk6cGVuZGluZ0lmVG9kYXlUcmFuc2FjdGlvbicsXG4gICAgICBdLFxuICAgICAgY29tcGFueUlkOiBDT01QQU5ZX0lELFxuICAgIH07XG5cbiAgICBjb25zdCBzY3JhcGVyID0gbmV3IE1penJhaGlTY3JhcGVyKG9wdGlvbnMpO1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHNjcmFwZXIuc2NyYXBlKHRlc3RzQ29uZmlnLmNyZWRlbnRpYWxzLm1penJhaGkpO1xuICAgIGV4cGVjdChyZXN1bHQpLnRvQmVEZWZpbmVkKCk7XG4gICAgY29uc3QgZXJyb3IgPSBgJHtyZXN1bHQuZXJyb3JUeXBlIHx8ICcnfSAke3Jlc3VsdC5lcnJvck1lc3NhZ2UgfHwgJyd9YC50cmltKCk7XG4gICAgZXhwZWN0KGVycm9yKS50b0JlKCcnKTtcbiAgICBleHBlY3QocmVzdWx0LnN1Y2Nlc3MpLnRvQmVUcnV0aHkoKTtcbiAgICBleHBlY3QocmVzdWx0LmFjY291bnRzKS50b0JlRGVmaW5lZCgpO1xuICAgIGV4cGVjdCgocmVzdWx0LmFjY291bnRzIGFzIGFueSkubGVuZ3RoKS50b0JlR3JlYXRlclRoYW4oMCk7XG4gICAgY29uc3QgYWNjb3VudDogVHJhbnNhY3Rpb25zQWNjb3VudCA9IChyZXN1bHQgYXMgYW55KS5hY2NvdW50c1swXTtcbiAgICBleHBlY3QoYWNjb3VudC5hY2NvdW50TnVtYmVyKS5ub3QudG9CZSgnJyk7XG4gICAgZXhwZWN0KGFjY291bnQudHhuc1swXS5kYXRlKS50b01hdGNoKElTT19EQVRFX1JFR0VYKTtcblxuICAgIGV4cG9ydFRyYW5zYWN0aW9ucyhDT01QQU5ZX0lELCByZXN1bHQuYWNjb3VudHMgfHwgW10pO1xuICB9KTtcbn0pO1xuIl0sIm1hcHBpbmdzIjoiOztBQUFBLElBQUFBLFFBQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "israeli-bank-scrapers-core",
3
- "version": "6.3.0",
3
+ "version": "6.3.2",
4
4
  "private": false,
5
5
  "description": "Provide scrapers for all major Israeli banks and credit card companies",
6
6
  "engines": {
@@ -75,7 +75,6 @@
75
75
  "typescript": "^4.7.4"
76
76
  },
77
77
  "dependencies": {
78
- "build-url": "^2.0.0",
79
78
  "core-js": "^3.1.4",
80
79
  "debug": "^4.3.2",
81
80
  "lodash": "^4.17.10",