UNPKG

israeli-bank-scrapers

Version:

Provide scrapers for all major Israeli banks and credit card companies

116 lines (115 loc) 19.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _lodash = _interopRequireDefault(require("lodash")); var _moment = _interopRequireDefault(require("moment")); var _elementsInteractions = require("../helpers/elements-interactions"); var _fetch = require("../helpers/fetch"); var _navigation = require("../helpers/navigation"); var _transactions = require("../transactions"); var _baseScraperWithBrowser = require("./base-scraper-with-browser"); var _errors = require("./errors"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } const BASE_URL = 'https://start.telebank.co.il'; const DATE_FORMAT = 'YYYYMMDD'; function convertTransactions(txns, txnStatus) { if (!txns) { return []; } return txns.map(txn => { return { type: _transactions.TransactionTypes.Normal, identifier: txn.OperationNumber, date: (0, _moment.default)(txn.OperationDate, DATE_FORMAT).toISOString(), processedDate: (0, _moment.default)(txn.ValueDate, DATE_FORMAT).toISOString(), originalAmount: txn.OperationAmount, originalCurrency: 'ILS', chargedAmount: txn.OperationAmount, description: txn.OperationDescriptionToDisplay, status: txnStatus }; }); } async function fetchAccountData(page, options) { const apiSiteUrl = `${BASE_URL}/Titan/gatewayAPI`; const accountDataUrl = `${apiSiteUrl}/userAccountsData`; const accountInfo = await (0, _fetch.fetchGetWithinPage)(page, accountDataUrl); if (!accountInfo) { return { success: false, errorType: _errors.ScraperErrorTypes.Generic, errorMessage: 'failed to get account data' }; } const accountNumber = accountInfo.UserAccountsData.DefaultAccountNumber; const defaultStartMoment = (0, _moment.default)().subtract(1, 'years').add(2, 'day'); const startDate = options.startDate || defaultStartMoment.toDate(); const startMoment = _moment.default.max(defaultStartMoment, (0, _moment.default)(startDate)); const startDateStr = startMoment.format(DATE_FORMAT); const txnsUrl = `${apiSiteUrl}/lastTransactions/${accountNumber}/Date?IsCategoryDescCode=True&IsTransactionDetails=True&IsEventNames=True&IsFutureTransactionFlag=True&FromDate=${startDateStr}`; const txnsResult = await (0, _fetch.fetchGetWithinPage)(page, txnsUrl); if (!txnsResult || txnsResult.Error || !txnsResult.CurrentAccountLastTransactions) { return { success: false, errorType: _errors.ScraperErrorTypes.Generic, errorMessage: txnsResult && txnsResult.Error ? txnsResult.Error.MsgText : 'unknown error' }; } const completedTxns = convertTransactions(txnsResult.CurrentAccountLastTransactions.OperationEntry, _transactions.TransactionStatuses.Completed); const rawFutureTxns = _lodash.default.get(txnsResult, 'CurrentAccountLastTransactions.FutureTransactionsBlock.FutureTransactionEntry'); const pendingTxns = convertTransactions(rawFutureTxns, _transactions.TransactionStatuses.Pending); const accountData = { success: true, accounts: [{ accountNumber, balance: txnsResult.CurrentAccountLastTransactions.CurrentAccountInfo.AccountBalance, txns: [...completedTxns, ...pendingTxns] }] }; return accountData; } async function navigateOrErrorLabel(page) { try { await (0, _navigation.waitForNavigation)(page); } catch (e) { await (0, _elementsInteractions.waitUntilElementFound)(page, '#general-error', false, 100); } } function getPossibleLoginResults() { const urls = {}; urls[_baseScraperWithBrowser.LoginResults.Success] = [`${BASE_URL}/apollo/retail/#/MY_ACCOUNT_HOMEPAGE`]; urls[_baseScraperWithBrowser.LoginResults.InvalidPassword] = [`${BASE_URL}/apollo/core/templates/lobby/masterPage.html#/LOGIN_PAGE`]; urls[_baseScraperWithBrowser.LoginResults.ChangePassword] = [`${BASE_URL}/apollo/core/templates/lobby/masterPage.html#/PWD_RENEW`]; return urls; } function createLoginFields(credentials) { return [{ selector: '#tzId', value: credentials.id }, { selector: '#tzPassword', value: credentials.password }, { selector: '#aidnum', value: credentials.num }]; } class DiscountScraper extends _baseScraperWithBrowser.BaseScraperWithBrowser { getLoginOptions(credentials) { return { loginUrl: `${BASE_URL}/login/#/LOGIN_PAGE`, checkReadiness: async () => (0, _elementsInteractions.waitUntilElementFound)(this.page, '#tzId'), fields: createLoginFields(credentials), submitButtonSelector: '.sendBtn', postAction: async () => navigateOrErrorLabel(this.page), possibleResults: getPossibleLoginResults() }; } async fetchData() { return fetchAccountData(this.page, this.options); } } var _default = exports.default = DiscountScraper; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfbW9tZW50IiwiX2VsZW1lbnRzSW50ZXJhY3Rpb25zIiwiX2ZldGNoIiwiX25hdmlnYXRpb24iLCJfdHJhbnNhY3Rpb25zIiwiX2Jhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJfZXJyb3JzIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiQkFTRV9VUkwiLCJEQVRFX0ZPUk1BVCIsImNvbnZlcnRUcmFuc2FjdGlvbnMiLCJ0eG5zIiwidHhuU3RhdHVzIiwibWFwIiwidHhuIiwidHlwZSIsIlRyYW5zYWN0aW9uVHlwZXMiLCJOb3JtYWwiLCJpZGVudGlmaWVyIiwiT3BlcmF0aW9uTnVtYmVyIiwiZGF0ZSIsIm1vbWVudCIsIk9wZXJhdGlvbkRhdGUiLCJ0b0lTT1N0cmluZyIsInByb2Nlc3NlZERhdGUiLCJWYWx1ZURhdGUiLCJvcmlnaW5hbEFtb3VudCIsIk9wZXJhdGlvbkFtb3VudCIsIm9yaWdpbmFsQ3VycmVuY3kiLCJjaGFyZ2VkQW1vdW50IiwiZGVzY3JpcHRpb24iLCJPcGVyYXRpb25EZXNjcmlwdGlvblRvRGlzcGxheSIsInN0YXR1cyIsImZldGNoQWNjb3VudERhdGEiLCJwYWdlIiwib3B0aW9ucyIsImFwaVNpdGVVcmwiLCJhY2NvdW50RGF0YVVybCIsImFjY291bnRJbmZvIiwiZmV0Y2hHZXRXaXRoaW5QYWdlIiwic3VjY2VzcyIsImVycm9yVHlwZSIsIlNjcmFwZXJFcnJvclR5cGVzIiwiR2VuZXJpYyIsImVycm9yTWVzc2FnZSIsImFjY291bnROdW1iZXIiLCJVc2VyQWNjb3VudHNEYXRhIiwiRGVmYXVsdEFjY291bnROdW1iZXIiLCJkZWZhdWx0U3RhcnRNb21lbnQiLCJzdWJ0cmFjdCIsImFkZCIsInN0YXJ0RGF0ZSIsInRvRGF0ZSIsInN0YXJ0TW9tZW50IiwibWF4Iiwic3RhcnREYXRlU3RyIiwiZm9ybWF0IiwidHhuc1VybCIsInR4bnNSZXN1bHQiLCJFcnJvciIsIkN1cnJlbnRBY2NvdW50TGFzdFRyYW5zYWN0aW9ucyIsIk1zZ1RleHQiLCJjb21wbGV0ZWRUeG5zIiwiT3BlcmF0aW9uRW50cnkiLCJUcmFuc2FjdGlvblN0YXR1c2VzIiwiQ29tcGxldGVkIiwicmF3RnV0dXJlVHhucyIsIl8iLCJnZXQiLCJwZW5kaW5nVHhucyIsIlBlbmRpbmciLCJhY2NvdW50RGF0YSIsImFjY291bnRzIiwiYmFsYW5jZSIsIkN1cnJlbnRBY2NvdW50SW5mbyIsIkFjY291bnRCYWxhbmNlIiwibmF2aWdhdGVPckVycm9yTGFiZWwiLCJ3YWl0Rm9yTmF2aWdhdGlvbiIsIndhaXRVbnRpbEVsZW1lbnRGb3VuZCIsImdldFBvc3NpYmxlTG9naW5SZXN1bHRzIiwidXJscyIsIkxvZ2luUmVzdWx0cyIsIlN1Y2Nlc3MiLCJJbnZhbGlkUGFzc3dvcmQiLCJDaGFuZ2VQYXNzd29yZCIsImNyZWF0ZUxvZ2luRmllbGRzIiwiY3JlZGVudGlhbHMiLCJzZWxlY3RvciIsInZhbHVlIiwiaWQiLCJwYXNzd29yZCIsIm51bSIsIkRpc2NvdW50U2NyYXBlciIsIkJhc2VTY3JhcGVyV2l0aEJyb3dzZXIiLCJnZXRMb2dpbk9wdGlvbnMiLCJsb2dpblVybCIsImNoZWNrUmVhZGluZXNzIiwiZmllbGRzIiwic3VibWl0QnV0dG9uU2VsZWN0b3IiLCJwb3N0QWN0aW9uIiwicG9zc2libGVSZXN1bHRzIiwiZmV0Y2hEYXRhIiwiX2RlZmF1bHQiLCJleHBvcnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmFwZXJzL2Rpc2NvdW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyB0eXBlIFBhZ2UgfSBmcm9tICdwdXBwZXRlZXInO1xuaW1wb3J0IHsgd2FpdFVudGlsRWxlbWVudEZvdW5kIH0gZnJvbSAnLi4vaGVscGVycy9lbGVtZW50cy1pbnRlcmFjdGlvbnMnO1xuaW1wb3J0IHsgZmV0Y2hHZXRXaXRoaW5QYWdlIH0gZnJvbSAnLi4vaGVscGVycy9mZXRjaCc7XG5pbXBvcnQgeyB3YWl0Rm9yTmF2aWdhdGlvbiB9IGZyb20gJy4uL2hlbHBlcnMvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyB0eXBlIFRyYW5zYWN0aW9uLCBUcmFuc2FjdGlvblN0YXR1c2VzLCBUcmFuc2FjdGlvblR5cGVzIH0gZnJvbSAnLi4vdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7IEJhc2VTY3JhcGVyV2l0aEJyb3dzZXIsIExvZ2luUmVzdWx0cywgdHlwZSBQb3NzaWJsZUxvZ2luUmVzdWx0cyB9IGZyb20gJy4vYmFzZS1zY3JhcGVyLXdpdGgtYnJvd3Nlcic7XG5pbXBvcnQgeyBTY3JhcGVyRXJyb3JUeXBlcyB9IGZyb20gJy4vZXJyb3JzJztcbmltcG9ydCB7IHR5cGUgU2NyYXBlck9wdGlvbnMsIHR5cGUgU2NyYXBlclNjcmFwaW5nUmVzdWx0IH0gZnJvbSAnLi9pbnRlcmZhY2UnO1xuXG5jb25zdCBCQVNFX1VSTCA9ICdodHRwczovL3N0YXJ0LnRlbGViYW5rLmNvLmlsJztcbmNvbnN0IERBVEVfRk9STUFUID0gJ1lZWVlNTUREJztcblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbiB7XG4gIE9wZXJhdGlvbk51bWJlcjogbnVtYmVyO1xuICBPcGVyYXRpb25EYXRlOiBzdHJpbmc7XG4gIFZhbHVlRGF0ZTogc3RyaW5nO1xuICBPcGVyYXRpb25BbW91bnQ6IG51bWJlcjtcbiAgT3BlcmF0aW9uRGVzY3JpcHRpb25Ub0Rpc3BsYXk6IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIEN1cnJlbnRBY2NvdW50SW5mbyB7XG4gIEFjY291bnRCYWxhbmNlOiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBTY3JhcGVkQWNjb3VudERhdGEge1xuICBVc2VyQWNjb3VudHNEYXRhOiB7XG4gICAgRGVmYXVsdEFjY291bnROdW1iZXI6IHN0cmluZztcbiAgfTtcbn1cblxuaW50ZXJmYWNlIFNjcmFwZWRUcmFuc2FjdGlvbkRhdGEge1xuICBFcnJvcj86IHsgTXNnVGV4dDogc3RyaW5nIH07XG4gIEN1cnJlbnRBY2NvdW50TGFzdFRyYW5zYWN0aW9ucz86IHtcbiAgICBPcGVyYXRpb25FbnRyeTogU2NyYXBlZFRyYW5zYWN0aW9uW107XG4gICAgQ3VycmVudEFjY291bnRJbmZvOiBDdXJyZW50QWNjb3VudEluZm87XG4gICAgRnV0dXJlVHJhbnNhY3Rpb25zQmxvY2s6IHtcbiAgICAgIEZ1dHVyZVRyYW5zYWN0aW9uRW50cnk6IFNjcmFwZWRUcmFuc2FjdGlvbltdO1xuICAgIH07XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbnZlcnRUcmFuc2FjdGlvbnModHhuczogU2NyYXBlZFRyYW5zYWN0aW9uW10sIHR4blN0YXR1czogVHJhbnNhY3Rpb25TdGF0dXNlcyk6IFRyYW5zYWN0aW9uW10ge1xuICBpZiAoIXR4bnMpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgcmV0dXJuIHR4bnMubWFwKHR4biA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHR5cGU6IFRyYW5zYWN0aW9uVHlwZXMuTm9ybWFsLFxuICAgICAgaWRlbnRpZmllcjogdHhuLk9wZXJhdGlvbk51bWJlcixcbiAgICAgIGRhdGU6IG1vbWVudCh0eG4uT3BlcmF0aW9uRGF0ZSwgREFURV9GT1JNQVQpLnRvSVNPU3RyaW5nKCksXG4gICAgICBwcm9jZXNzZWREYXRlOiBtb21lbnQodHhuLlZhbHVlRGF0ZSwgREFURV9GT1JNQVQpLnRvSVNPU3RyaW5nKCksXG4gICAgICBvcmlnaW5hbEFtb3VudDogdHhuLk9wZXJhdGlvbkFtb3VudCxcbiAgICAgIG9yaWdpbmFsQ3VycmVuY3k6ICdJTFMnLFxuICAgICAgY2hhcmdlZEFtb3VudDogdHhuLk9wZXJhdGlvbkFtb3VudCxcbiAgICAgIGRlc2NyaXB0aW9uOiB0eG4uT3BlcmF0aW9uRGVzY3JpcHRpb25Ub0Rpc3BsYXksXG4gICAgICBzdGF0dXM6IHR4blN0YXR1cyxcbiAgICB9O1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gZmV0Y2hBY2NvdW50RGF0YShwYWdlOiBQYWdlLCBvcHRpb25zOiBTY3JhcGVyT3B0aW9ucyk6IFByb21pc2U8U2NyYXBlclNjcmFwaW5nUmVzdWx0PiB7XG4gIGNvbnN0IGFwaVNpdGVVcmwgPSBgJHtCQVNFX1VSTH0vVGl0YW4vZ2F0ZXdheUFQSWA7XG5cbiAgY29uc3QgYWNjb3VudERhdGFVcmwgPSBgJHthcGlTaXRlVXJsfS91c2VyQWNjb3VudHNEYXRhYDtcbiAgY29uc3QgYWNjb3VudEluZm8gPSBhd2FpdCBmZXRjaEdldFdpdGhpblBhZ2U8U2NyYXBlZEFjY291bnREYXRhPihwYWdlLCBhY2NvdW50RGF0YVVybCk7XG5cbiAgaWYgKCFhY2NvdW50SW5mbykge1xuICAgIHJldHVybiB7XG4gICAgICBzdWNjZXNzOiBmYWxzZSxcbiAgICAgIGVycm9yVHlwZTogU2NyYXBlckVycm9yVHlwZXMuR2VuZXJpYyxcbiAgICAgIGVycm9yTWVzc2FnZTogJ2ZhaWxlZCB0byBnZXQgYWNjb3VudCBkYXRhJyxcbiAgICB9O1xuICB9XG4gIGNvbnN0IGFjY291bnROdW1iZXIgPSBhY2NvdW50SW5mby5Vc2VyQWNjb3VudHNEYXRhLkRlZmF1bHRBY2NvdW50TnVtYmVyO1xuXG4gIGNvbnN0IGRlZmF1bHRTdGFydE1vbWVudCA9IG1vbWVudCgpLnN1YnRyYWN0KDEsICd5ZWFycycpLmFkZCgyLCAnZGF5Jyk7XG4gIGNvbnN0IHN0YXJ0RGF0ZSA9IG9wdGlvbnMuc3RhcnREYXRlIHx8IGRlZmF1bHRTdGFydE1vbWVudC50b0RhdGUoKTtcbiAgY29uc3Qgc3RhcnRNb21lbnQgPSBtb21lbnQubWF4KGRlZmF1bHRTdGFydE1vbWVudCwgbW9tZW50KHN0YXJ0RGF0ZSkpO1xuXG4gIGNvbnN0IHN0YXJ0RGF0ZVN0ciA9IHN0YXJ0TW9tZW50LmZvcm1hdChEQVRFX0ZPUk1BVCk7XG4gIGNvbnN0IHR4bnNVcmwgPSBgJHthcGlTaXRlVXJsfS9sYXN0VHJhbnNhY3Rpb25zLyR7YWNjb3VudE51bWJlcn0vRGF0ZT9Jc0NhdGVnb3J5RGVzY0NvZGU9VHJ1ZSZJc1RyYW5zYWN0aW9uRGV0YWlscz1UcnVlJklzRXZlbnROYW1lcz1UcnVlJklzRnV0dXJlVHJhbnNhY3Rpb25GbGFnPVRydWUmRnJvbURhdGU9JHtzdGFydERhdGVTdHJ9YDtcbiAgY29uc3QgdHhuc1Jlc3VsdCA9IGF3YWl0IGZldGNoR2V0V2l0aGluUGFnZTxTY3JhcGVkVHJhbnNhY3Rpb25EYXRhPihwYWdlLCB0eG5zVXJsKTtcbiAgaWYgKCF0eG5zUmVzdWx0IHx8IHR4bnNSZXN1bHQuRXJyb3IgfHwgIXR4bnNSZXN1bHQuQ3VycmVudEFjY291bnRMYXN0VHJhbnNhY3Rpb25zKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHN1Y2Nlc3M6IGZhbHNlLFxuICAgICAgZXJyb3JUeXBlOiBTY3JhcGVyRXJyb3JUeXBlcy5HZW5lcmljLFxuICAgICAgZXJyb3JNZXNzYWdlOiB0eG5zUmVzdWx0ICYmIHR4bnNSZXN1bHQuRXJyb3IgPyB0eG5zUmVzdWx0LkVycm9yLk1zZ1RleHQgOiAndW5rbm93biBlcnJvcicsXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IGNvbXBsZXRlZFR4bnMgPSBjb252ZXJ0VHJhbnNhY3Rpb25zKFxuICAgIHR4bnNSZXN1bHQuQ3VycmVudEFjY291bnRMYXN0VHJhbnNhY3Rpb25zLk9wZXJhdGlvbkVudHJ5LFxuICAgIFRyYW5zYWN0aW9uU3RhdHVzZXMuQ29tcGxldGVkLFxuICApO1xuICBjb25zdCByYXdGdXR1cmVUeG5zID0gXy5nZXQoXG4gICAgdHhuc1Jlc3VsdCxcbiAgICAnQ3VycmVudEFjY291bnRMYXN0VHJhbnNhY3Rpb25zLkZ1dHVyZVRyYW5zYWN0aW9uc0Jsb2NrLkZ1dHVyZVRyYW5zYWN0aW9uRW50cnknLFxuICApIGFzIFNjcmFwZWRUcmFuc2FjdGlvbltdO1xuICBjb25zdCBwZW5kaW5nVHhucyA9IGNvbnZlcnRUcmFuc2FjdGlvbnMocmF3RnV0dXJlVHhucywgVHJhbnNhY3Rpb25TdGF0dXNlcy5QZW5kaW5nKTtcblxuICBjb25zdCBhY2NvdW50RGF0YSA9IHtcbiAgICBzdWNjZXNzOiB0cnVlLFxuICAgIGFjY291bnRzOiBbXG4gICAgICB7XG4gICAgICAgIGFjY291bnROdW1iZXIsXG4gICAgICAgIGJhbGFuY2U6IHR4bnNSZXN1bHQuQ3VycmVudEFjY291bnRMYXN0VHJhbnNhY3Rpb25zLkN1cnJlbnRBY2NvdW50SW5mby5BY2NvdW50QmFsYW5jZSxcbiAgICAgICAgdHhuczogWy4uLmNvbXBsZXRlZFR4bnMsIC4uLnBlbmRpbmdUeG5zXSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfTtcblxuICByZXR1cm4gYWNjb3VudERhdGE7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIG5hdmlnYXRlT3JFcnJvckxhYmVsKHBhZ2U6IFBhZ2UpIHtcbiAgdHJ5IHtcbiAgICBhd2FpdCB3YWl0Rm9yTmF2aWdhdGlvbihwYWdlKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGF3YWl0IHdhaXRVbnRpbEVsZW1lbnRGb3VuZChwYWdlLCAnI2dlbmVyYWwtZXJyb3InLCBmYWxzZSwgMTAwKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cygpOiBQb3NzaWJsZUxvZ2luUmVzdWx0cyB7XG4gIGNvbnN0IHVybHM6IFBvc3NpYmxlTG9naW5SZXN1bHRzID0ge307XG4gIHVybHNbTG9naW5SZXN1bHRzLlN1Y2Nlc3NdID0gW2Ake0JBU0VfVVJMfS9hcG9sbG8vcmV0YWlsLyMvTVlfQUNDT1VOVF9IT01FUEFHRWBdO1xuICB1cmxzW0xvZ2luUmVzdWx0cy5JbnZhbGlkUGFzc3dvcmRdID0gW2Ake0JBU0VfVVJMfS9hcG9sbG8vY29yZS90ZW1wbGF0ZXMvbG9iYnkvbWFzdGVyUGFnZS5odG1sIy9MT0dJTl9QQUdFYF07XG4gIHVybHNbTG9naW5SZXN1bHRzLkNoYW5nZVBhc3N3b3JkXSA9IFtgJHtCQVNFX1VSTH0vYXBvbGxvL2NvcmUvdGVtcGxhdGVzL2xvYmJ5L21hc3RlclBhZ2UuaHRtbCMvUFdEX1JFTkVXYF07XG4gIHJldHVybiB1cmxzO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVMb2dpbkZpZWxkcyhjcmVkZW50aWFsczogU2NyYXBlclNwZWNpZmljQ3JlZGVudGlhbHMpIHtcbiAgcmV0dXJuIFtcbiAgICB7IHNlbGVjdG9yOiAnI3R6SWQnLCB2YWx1ZTogY3JlZGVudGlhbHMuaWQgfSxcbiAgICB7IHNlbGVjdG9yOiAnI3R6UGFzc3dvcmQnLCB2YWx1ZTogY3JlZGVudGlhbHMucGFzc3dvcmQgfSxcbiAgICB7IHNlbGVjdG9yOiAnI2FpZG51bScsIHZhbHVlOiBjcmVkZW50aWFscy5udW0gfSxcbiAgXTtcbn1cblxudHlwZSBTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscyA9IHsgaWQ6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZzsgbnVtOiBzdHJpbmcgfTtcblxuY2xhc3MgRGlzY291bnRTY3JhcGVyIGV4dGVuZHMgQmFzZVNjcmFwZXJXaXRoQnJvd3NlcjxTY3JhcGVyU3BlY2lmaWNDcmVkZW50aWFscz4ge1xuICBnZXRMb2dpbk9wdGlvbnMoY3JlZGVudGlhbHM6IFNjcmFwZXJTcGVjaWZpY0NyZWRlbnRpYWxzKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxvZ2luVXJsOiBgJHtCQVNFX1VSTH0vbG9naW4vIy9MT0dJTl9QQUdFYCxcbiAgICAgIGNoZWNrUmVhZGluZXNzOiBhc3luYyAoKSA9PiB3YWl0VW50aWxFbGVtZW50Rm91bmQodGhpcy5wYWdlLCAnI3R6SWQnKSxcbiAgICAgIGZpZWxkczogY3JlYXRlTG9naW5GaWVsZHMoY3JlZGVudGlhbHMpLFxuICAgICAgc3VibWl0QnV0dG9uU2VsZWN0b3I6ICcuc2VuZEJ0bicsXG4gICAgICBwb3N0QWN0aW9uOiBhc3luYyAoKSA9PiBuYXZpZ2F0ZU9yRXJyb3JMYWJlbCh0aGlzLnBhZ2UpLFxuICAgICAgcG9zc2libGVSZXN1bHRzOiBnZXRQb3NzaWJsZUxvZ2luUmVzdWx0cygpLFxuICAgIH07XG4gIH1cblxuICBhc3luYyBmZXRjaERhdGEoKSB7XG4gICAgcmV0dXJuIGZldGNoQWNjb3VudERhdGEodGhpcy5wYWdlLCB0aGlzLm9wdGlvbnMpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IERpc2NvdW50U2NyYXBlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUUscUJBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUNBLElBQUFJLFdBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLGFBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLHVCQUFBLEdBQUFOLE9BQUE7QUFDQSxJQUFBTyxPQUFBLEdBQUFQLE9BQUE7QUFBNkMsU0FBQUQsdUJBQUFTLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFHN0MsTUFBTUcsUUFBUSxHQUFHLDhCQUE4QjtBQUMvQyxNQUFNQyxXQUFXLEdBQUcsVUFBVTtBQStCOUIsU0FBU0MsbUJBQW1CQSxDQUFDQyxJQUEwQixFQUFFQyxTQUE4QixFQUFpQjtFQUN0RyxJQUFJLENBQUNELElBQUksRUFBRTtJQUNULE9BQU8sRUFBRTtFQUNYO0VBQ0EsT0FBT0EsSUFBSSxDQUFDRSxHQUFHLENBQUNDLEdBQUcsSUFBSTtJQUNyQixPQUFPO01BQ0xDLElBQUksRUFBRUMsOEJBQWdCLENBQUNDLE1BQU07TUFDN0JDLFVBQVUsRUFBRUosR0FBRyxDQUFDSyxlQUFlO01BQy9CQyxJQUFJLEVBQUUsSUFBQUMsZUFBTSxFQUFDUCxHQUFHLENBQUNRLGFBQWEsRUFBRWIsV0FBVyxDQUFDLENBQUNjLFdBQVcsQ0FBQyxDQUFDO01BQzFEQyxhQUFhLEVBQUUsSUFBQUgsZUFBTSxFQUFDUCxHQUFHLENBQUNXLFNBQVMsRUFBRWhCLFdBQVcsQ0FBQyxDQUFDYyxXQUFXLENB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