"use strict"; (self["webpackChunkiride"] = self["webpackChunkiride"] || []).push([["login"],{ /***/ "./assets/js/components/login.js": /*!***************************************!*\ !*** ./assets/js/components/login.js ***! \***************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ }); /** * Created by PhpStorm * User: daniele * Date: 17/12/20 * Time: 09:28 */ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ passwordEvents: function passwordEvents() { $("#togglePasswordLink").on('click', function (event) { event.preventDefault(); if ($('#password').attr("type") === "text") { $('#password').attr('type', 'password'); $('#togglePassword').addClass("fa-eye-slash"); $('#togglePassword').removeClass("fa-eye"); } else if ($('#password').attr("type") === "password") { $('#password').attr('type', 'text'); $('#togglePassword').removeClass("fa-eye-slash"); $('#togglePassword').addClass("fa-eye"); } }); }, loginSubmit: function loginSubmit(opts) { if (opts && typeof opts.onBeforeSubmit === "function") opts.onBeforeSubmit(); var self = this; $("#login").click(function () { if ($("#codicecliente").val() === "" || $("#username").val() === "" || $("#password").val() === "") return; $.ajax({ url: "ajax.php?object=IWUser&tipoview=login&JSON", type: "post", data: $("#form").serialize(), dataType: "json", success: function success(json) { self.loginOnAjaxSuccess({ json: json, opts: opts }); } }); }); }, loginOnAjaxSuccess: function loginOnAjaxSuccess(opts) { var json = opts.json; if (opts.opts && typeof opts.opts.onSuccessCallback === "function") opts.opts.onSuccessCallback(json); if (!json.ret) { alert('Credenziali errate: ritentare

Invalid Username or password: try again'); return; } var pagedefault = json.pagedefault; if (json.url) pagedefault = json.url; if (!pagedefault) pagedefault = document.location.href;else pagedefault = "index.php?" + pagedefault; if (strpos(pagedefault, "?") > 0) pagedefault += "&__sck__=1";else pagedefault += "?__sck__=1"; window.location.href = pagedefault; }, openModalRecuperoPwd: function openModalRecuperoPwd() { var self = this; $("#lost-password-link").on("click", function () { $("#recupero-pwd-button").show(); $("#recupero_pwd_username").val(""); $("#recupero-pwd-button .spinner-border, .loading-recupero-pwd").hide(); $("#span-recupero-pwd-button").show(); var $button = $("#recupero-pwd-button"); $button.prop("disabled", false); $button.off(); $button.on("click", function () { self.getEmailRecuperoPassword(); }); $button.show(); $("#recupero-pwd-output-actions .output-actions").html(""); $("#recupero-pwd-output-actions").hide(); $("#popup-recupero-pwd").modal("show"); }); }, getEmailRecuperoPassword: function getEmailRecuperoPassword() { var $form = $("#recupero-pwd-form"); var form = $form[0]; var validation = form.checkValidity(); form.classList.add('was-validated'); if (!validation) return; $("#span-recupero-pwd-button").hide(); $("#recupero-pwd-button .spinner-border, .loading-recupero-pwd").show(); var self = this; var company = $("#recupero_pwd_company").val(); var username = $("#recupero_pwd_username").val(); $.ajax({ url: "/recupero-password", type: "post", dataType: "json", data: { tipoview: "getEmailRecuperoPwd", company: company, username: username }, success: function success(json) { $("#recupero-pwd-output-actions .output-actions").html(json.data.msg); $("#recupero-pwd-output-actions").show(); var $button = $("#recupero-pwd-button"); if (!json.data.ret) { $button.prop("disabled", true); $button.hide(); return; } $("#recupero-pwd-button .spinner-border, .loading-recupero-pwd").hide(); $("#span-recupero-pwd-button").show(); $button.show(); $button.off(); $button.on("click", function () { self.sendEmailRecuperoPassword(company, username); }); } }); }, sendEmailRecuperoPassword: function sendEmailRecuperoPassword(company, username) { $("#span-recupero-pwd-button").hide(); $("#recupero-pwd-button .spinner-border, .loading-recupero-pwd").show(); $.ajax({ url: "/recupero-password", type: "post", dataType: "json", data: { tipoview: "sendEmailRecuperoPwd", company: company, username: username }, success: function success(json) { $("#recupero-pwd-output-actions .output-actions").html(json.data.msg ? json.data.msg : json.data.out); $("#recupero-pwd-output-actions").show(); if (!json.msg) { $("#recupero-pwd-button").hide(); return; } $("#recupero-pwd-button .spinner-border, .loading-recupero-pwd").hide(); $("#span-recupero-pwd-button").show(); } }); }, checkEmailRecuperoPwd: function checkEmailRecuperoPwd() { var self = this; getHtmlFromAjax({ url: "ajax.php?JSON", divname: "dialog_recupero_password", data: { object: "IWUser", tipoview: "viewDialogSetEmailForPwdReset" }, onSuccess: function onSuccess() { dialogShow("dialog_recupero_password", function (ret) { if (!ret) return; $.ajax({ url: "view.php", dataType: "json", type: "post", data: { OP_FROM_AJAX: 1, JSON: 1, object: "IWUser", tipoview: "saveEmailRecuperoPwd", email: $("#email_for_pwd_reset").val() }, success: function success(json) { ajaxSubmitOnSuccessFunction(json, true); if (!json.ret) self.checkEmailRecuperoPwd(); } }); }); } }); } }); /***/ }), /***/ "./assets/js/index.js": /*!****************************!*\ !*** ./assets/js/index.js ***! \****************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { __webpack_require__.r(__webpack_exports__); /* harmony import */ var core_js_modules_es_function_bind_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.bind.js */ "./node_modules/core-js/modules/es.function.bind.js"); /* harmony import */ var core_js_modules_es_function_bind_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_bind_js__WEBPACK_IMPORTED_MODULE_0__); /* harmony import */ var _components_login__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./components/login */ "./assets/js/components/login.js"); /** * Created by PhpStorm * User: daniele * Date: 17/12/20 * Time: 09:25 */ $(document).ready(function () { _components_login__WEBPACK_IMPORTED_MODULE_1__["default"].passwordEvents(); _components_login__WEBPACK_IMPORTED_MODULE_1__["default"].loginSubmit(); _components_login__WEBPACK_IMPORTED_MODULE_1__["default"].openModalRecuperoPwd(); resizeContent(); $(window).bind('resize', resizeContent); }); /***/ }), /***/ "./node_modules/core-js/internals/array-slice.js": /*!*******************************************************!*\ !*** ./node_modules/core-js/internals/array-slice.js ***! \*******************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); module.exports = uncurryThis([].slice); /***/ }), /***/ "./node_modules/core-js/internals/function-bind.js": /*!*********************************************************!*\ !*** ./node_modules/core-js/internals/function-bind.js ***! \*********************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); var aCallable = __webpack_require__(/*! ../internals/a-callable */ "./node_modules/core-js/internals/a-callable.js"); var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js"); var hasOwn = __webpack_require__(/*! ../internals/has-own-property */ "./node_modules/core-js/internals/has-own-property.js"); var arraySlice = __webpack_require__(/*! ../internals/array-slice */ "./node_modules/core-js/internals/array-slice.js"); var NATIVE_BIND = __webpack_require__(/*! ../internals/function-bind-native */ "./node_modules/core-js/internals/function-bind-native.js"); var $Function = Function; var concat = uncurryThis([].concat); var join = uncurryThis([].join); var factories = {}; var construct = function (C, argsLength, args) { if (!hasOwn(factories, argsLength)) { var list = []; var i = 0; for (; i < argsLength; i++) list[i] = 'a[' + i + ']'; factories[argsLength] = $Function('C,a', 'return new C(' + join(list, ',') + ')'); } return factories[argsLength](C, args); }; // `Function.prototype.bind` method implementation // https://tc39.es/ecma262/#sec-function.prototype.bind // eslint-disable-next-line es/no-function-prototype-bind -- detection module.exports = NATIVE_BIND ? $Function.bind : function bind(that /* , ...args */) { var F = aCallable(this); var Prototype = F.prototype; var partArgs = arraySlice(arguments, 1); var boundFunction = function bound(/* args... */) { var args = concat(partArgs, arraySlice(arguments)); return this instanceof boundFunction ? construct(F, args.length, args) : F.apply(that, args); }; if (isObject(Prototype)) boundFunction.prototype = Prototype; return boundFunction; }; /***/ }), /***/ "./node_modules/core-js/modules/es.function.bind.js": /*!**********************************************************!*\ !*** ./node_modules/core-js/modules/es.function.bind.js ***! \**********************************************************/ /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { // TODO: Remove from `core-js@4` var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js"); var bind = __webpack_require__(/*! ../internals/function-bind */ "./node_modules/core-js/internals/function-bind.js"); // `Function.prototype.bind` method // https://tc39.es/ecma262/#sec-function.prototype.bind // eslint-disable-next-line es/no-function-prototype-bind -- detection $({ target: 'Function', proto: true, forced: Function.bind !== bind }, { bind: bind }); /***/ }) }, /******/ __webpack_require__ => { // webpackRuntimeModules /******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) /******/ __webpack_require__.O(0, ["vendors-node_modules_core-js_internals_export_js"], () => (__webpack_exec__("./assets/js/index.js"))); /******/ var __webpack_exports__ = __webpack_require__.O(); /******/ } ]); //# sourceMappingURL=data:application/json;charset=utf-8;base64,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QixtQkFBTyxDQUFDLCtFQUF5QjtBQUNqRCxlQUFlLG1CQUFPLENBQUMsNkVBQXdCO0FBQy9DLGFBQWEsbUJBQU8sQ0FBQywyRkFBK0I7QUFDcEQsaUJBQWlCLG1CQUFPLENBQUMsaUZBQTBCO0FBQ25ELGtCQUFrQixtQkFBTyxDQUFDLG1HQUFtQzs7QUFFN0Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGdCQUFnQjtBQUMzQjtBQUNBLElBQUk7QUFDSjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7OztBQ25DYTtBQUNiO0FBQ0EsUUFBUSxtQkFBTyxDQUFDLHVFQUFxQjtBQUNyQyxXQUFXLG1CQUFPLENBQUMscUZBQTRCOztBQUUvQztBQUNBO0FBQ0E7QUFDQSxJQUFJLGlFQUFpRTtBQUNyRTtBQUNBLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9pcmlkZS8uL2Fzc2V0cy9qcy9jb21wb25lbnRzL2xvZ2luLmpzIiwid2VicGFjazovL2lyaWRlLy4vYXNzZXRzL2pzL2luZGV4LmpzIiwid2VicGFjazovL2lyaWRlLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2FycmF5LXNsaWNlLmpzIiwid2VicGFjazovL2lyaWRlLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQuanMiLCJ3ZWJwYWNrOi8vaXJpZGUvLi9ub2RlX21vZHVsZXMvY29yZS1qcy9tb2R1bGVzL2VzLmZ1bmN0aW9uLmJpbmQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDcmVhdGVkIGJ5IFBocFN0b3JtXG4gKiBVc2VyOiBkYW5pZWxlXG4gKiBEYXRlOiAxNy8xMi8yMFxuICogVGltZTogMDk6MjhcbiAqL1xuXG5leHBvcnQgZGVmYXVsdCB7XG4gICAgcGFzc3dvcmRFdmVudHM6IGZ1bmN0aW9uICgpe1xuICAgICAgICAkKFwiI3RvZ2dsZVBhc3N3b3JkTGlua1wiKS5vbignY2xpY2snLCBmdW5jdGlvbihldmVudCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGlmKCQoJyNwYXNzd29yZCcpLmF0dHIoXCJ0eXBlXCIpID09PSBcInRleHRcIil7XG4gICAgICAgICAgICAgICAgJCgnI3Bhc3N3b3JkJykuYXR0cigndHlwZScsICdwYXNzd29yZCcpO1xuICAgICAgICAgICAgICAgICQoJyN0b2dnbGVQYXNzd29yZCcpLmFkZENsYXNzKCBcImZhLWV5ZS1zbGFzaFwiICk7XG4gICAgICAgICAgICAgICAgJCgnI3RvZ2dsZVBhc3N3b3JkJykucmVtb3ZlQ2xhc3MoIFwiZmEtZXllXCIgKTtcbiAgICAgICAgICAgIH1lbHNlIGlmKCQoJyNwYXNzd29yZCcpLmF0dHIoXCJ0eXBlXCIpID09PSBcInBhc3N3b3JkXCIpe1xuICAgICAgICAgICAgICAgICQoJyNwYXNzd29yZCcpLmF0dHIoJ3R5cGUnLCAndGV4dCcpO1xuICAgICAgICAgICAgICAgICQoJyN0b2dnbGVQYXNzd29yZCcpLnJlbW92ZUNsYXNzKCBcImZhLWV5ZS1zbGFzaFwiICk7XG4gICAgICAgICAgICAgICAgJCgnI3RvZ2dsZVBhc3N3b3JkJykuYWRkQ2xhc3MoIFwiZmEtZXllXCIgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfSxcblxuICAgIGxvZ2luU3VibWl0OiBmdW5jdGlvbiAob3B0cyl7XG4gICAgICAgIGlmKG9wdHMgJiYgdHlwZW9mIG9wdHMub25CZWZvcmVTdWJtaXQgPT09IFwiZnVuY3Rpb25cIikgb3B0cy5vbkJlZm9yZVN1Ym1pdCgpO1xuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgJChcIiNsb2dpblwiKS5jbGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoJChcIiNjb2RpY2VjbGllbnRlXCIpLnZhbCgpID09PSBcIlwiIHx8ICQoXCIjdXNlcm5hbWVcIikudmFsKCkgPT09IFwiXCIgfHwgJChcIiNwYXNzd29yZFwiKS52YWwoKSA9PT0gXCJcIilcbiAgICAgICAgICAgICAgICByZXR1cm47XG5cbiAgICAgICAgICAgICQuYWpheCh7XG4gICAgICAgICAgICAgICAgdXJsOiBcImFqYXgucGhwP29iamVjdD1JV1VzZXImdGlwb3ZpZXc9bG9naW4mSlNPTlwiLFxuICAgICAgICAgICAgICAgIHR5cGU6IFwicG9zdFwiLFxuICAgICAgICAgICAgICAgIGRhdGE6ICQoXCIjZm9ybVwiKS5zZXJpYWxpemUoKSxcbiAgICAgICAgICAgICAgICBkYXRhVHlwZTogXCJqc29uXCIsXG4gICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKGpzb24pIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dpbk9uQWpheFN1Y2Nlc3Moe1xuICAgICAgICAgICAgICAgICAgICAgICAganNvbjoganNvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdHM6IG9wdHNcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgIH0sXG5cbiAgICBsb2dpbk9uQWpheFN1Y2Nlc3M6IGZ1bmN0aW9uIChvcHRzKXtcbiAgICAgICAgbGV0IGpzb24gPSBvcHRzLmpzb247XG4gICAgICAgIGlmKG9wdHMub3B0cyAmJiB0eXBlb2Ygb3B0cy5vcHRzLm9uU3VjY2Vzc0NhbGxiYWNrID09PSBcImZ1bmN0aW9uXCIpIG9wdHMub3B0cy5vblN1Y2Nlc3NDYWxsYmFjayhqc29uKTtcblxuICAgICAgICBpZiAoIWpzb24ucmV0KSB7XG4gICAgICAgICAgICBhbGVydCgnQ3JlZGVuemlhbGkgZXJyYXRlOiByaXRlbnRhcmU8YnI+PGJyPkludmFsaWQgVXNlcm5hbWUgb3IgcGFzc3dvcmQ6IHRyeSBhZ2FpbicpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBwYWdlZGVmYXVsdCA9IGpzb24ucGFnZWRlZmF1bHQ7XG4gICAgICAgIGlmKGpzb24udXJsKSBwYWdlZGVmYXVsdCA9IGpzb24udXJsO1xuICAgICAgICBpZighcGFnZWRlZmF1bHQpIHBhZ2VkZWZhdWx0ID0gZG9jdW1lbnQubG9jYXRpb24uaHJlZjtcbiAgICAgICAgZWxzZSBwYWdlZGVmYXVsdCA9IFwiaW5kZXgucGhwP1wiICsgcGFnZWRlZmF1bHQ7XG4gICAgICAgIGlmKHN0cnBvcyhwYWdlZGVmYXVsdCwgXCI/XCIpID4gMCkgcGFnZWRlZmF1bHQgKz0gXCImX19zY2tfXz0xXCI7XG4gICAgICAgIGVsc2UgcGFnZWRlZmF1bHQgKz0gXCI/X19zY2tfXz0xXCI7XG4gICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gcGFnZWRlZmF1bHQ7XG4gICAgfSxcblxuICAgIG9wZW5Nb2RhbFJlY3VwZXJvUHdkOiBmdW5jdGlvbiAoKXtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgICQoXCIjbG9zdC1wYXNzd29yZC1saW5rXCIpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKCl7XG4gICAgICAgICAgICAkKFwiI3JlY3VwZXJvLXB3ZC1idXR0b25cIikuc2hvdygpO1xuICAgICAgICAgICAgJChcIiNyZWN1cGVyb19wd2RfdXNlcm5hbWVcIikudmFsKFwiXCIpO1xuICAgICAgICAgICAgJChcIiNyZWN1cGVyby1wd2QtYnV0dG9uIC5zcGlubmVyLWJvcmRlciwgLmxvYWRpbmctcmVjdXBlcm8tcHdkXCIpLmhpZGUoKTtcbiAgICAgICAgICAgICQoXCIjc3Bhbi1yZWN1cGVyby1wd2QtYnV0dG9uXCIpLnNob3coKTtcbiAgICAgICAgICAgIGNvbnN0ICRidXR0b24gPSAkKFwiI3JlY3VwZXJvLXB3ZC1idXR0b25cIik7XG4gICAgICAgICAgICAkYnV0dG9uLnByb3AoXCJkaXNhYmxlZFwiLCBmYWxzZSk7XG4gICAgICAgICAgICAkYnV0dG9uLm9mZigpO1xuICAgICAgICAgICAgJGJ1dHRvbi5vbihcImNsaWNrXCIsIGZ1bmN0aW9uICgpe1xuICAgICAgICAgICAgICAgIHNlbGYuZ2V0RW1haWxSZWN1cGVyb1Bhc3N3b3JkKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICRidXR0b24uc2hvdygpO1xuICAgICAgICAgICAgJChcIiNyZWN1cGVyby1wd2Qtb3V0cHV0LWFjdGlvbnMgLm91dHB1dC1hY3Rpb25zXCIpLmh0bWwoXCJcIik7XG4gICAgICAgICAgICAkKFwiI3JlY3VwZXJvLXB3ZC1vdXRwdXQtYWN0aW9uc1wiKS5oaWRlKCk7XG5cbiAgICAgICAgICAgICQoXCIjcG9wdXAtcmVjdXBlcm8tcHdkXCIpLm1vZGFsKFwic2hvd1wiKTtcbiAgICAgICAgfSlcbiAgICB9LFxuXG4gICAgZ2V0RW1haWxSZWN1cGVyb1Bhc3N3b3JkOiBmdW5jdGlvbiAoKXtcbiAgICAgICAgY29uc3QgJGZvcm0gPSAkKFwiI3JlY3VwZXJvLXB3ZC1mb3JtXCIpO1xuICAgICAgICBjb25zdCBmb3JtID0gJGZvcm1bMF07XG4gICAgICAgIGNvbnN0IHZhbGlkYXRpb24gPSBmb3JtLmNoZWNrVmFsaWRpdHkoKTtcbiAgICAgICAgZm9ybS5jbGFzc0xpc3QuYWRkKCd3YXMtdmFsaWRhdGVkJyk7XG5cbiAgICAgICAgaWYoIXZhbGlkYXRpb24pIHJldHVybjtcblxuICAgICAgICAkKFwiI3NwYW4tcmVjdXBlcm8tcHdkLWJ1dHRvblwiKS5oaWRlKCk7XG4gICAgICAgICQoXCIjcmVjdXBlcm8tcHdkLWJ1dHRvbiAuc3Bpbm5lci1ib3JkZXIsIC5sb2FkaW5nLXJlY3VwZXJvLXB3ZFwiKS5zaG93KCk7XG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBjb25zdCBjb21wYW55ID0gJChcIiNyZWN1cGVyb19wd2RfY29tcGFueVwiKS52YWwoKTtcbiAgICAgICAgY29uc3QgdXNlcm5hbWUgPSAkKFwiI3JlY3VwZXJvX3B3ZF91c2VybmFtZVwiKS52YWwoKTtcblxuICAgICAgICAkLmFqYXgoe1xuICAgICAgICAgICAgdXJsOiBcIi9yZWN1cGVyby1wYXNzd29yZFwiLFxuICAgICAgICAgICAgdHlwZTogXCJwb3N0XCIsXG4gICAgICAgICAgICBkYXRhVHlwZTogXCJqc29uXCIsXG4gICAgICAgICAgICBkYXRhOiB7dGlwb3ZpZXc6IFwiZ2V0RW1haWxSZWN1cGVyb1B3ZFwiLCBjb21wYW55OiBjb21wYW55LCB1c2VybmFtZTogdXNlcm5hbWV9LFxuICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKGpzb24pe1xuICAgICAgICAgICAgICAgICQoXCIjcmVjdXBlcm8tcHdkLW91dHB1dC1hY3Rpb25zIC5vdXRwdXQtYWN0aW9uc1wiKS5odG1sKGpzb24uZGF0YS5tc2cpO1xuICAgICAgICAgICAgICAgICQoXCIjcmVjdXBlcm8tcHdkLW91dHB1dC1hY3Rpb25zXCIpLnNob3coKTtcbiAgICAgICAgICAgICAgICBjb25zdCAkYnV0dG9uID0gJChcIiNyZWN1cGVyby1wd2QtYnV0dG9uXCIpO1xuICAgICAgICAgICAgICAgIGlmKCFqc29uLmRhdGEucmV0KXtcbiAgICAgICAgICAgICAgICAgICAgJGJ1dHRvbi5wcm9wKFwiZGlzYWJsZWRcIiwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgICRidXR0b24uaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgJChcIiNyZWN1cGVyby1wd2QtYnV0dG9uIC5zcGlubmVyLWJvcmRlciwgLmxvYWRpbmctcmVjdXBlcm8tcHdkXCIpLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAkKFwiI3NwYW4tcmVjdXBlcm8tcHdkLWJ1dHRvblwiKS5zaG93KCk7XG4gICAgICAgICAgICAgICAgJGJ1dHRvbi5zaG93KCk7XG4gICAgICAgICAgICAgICAgJGJ1dHRvbi5vZmYoKTtcbiAgICAgICAgICAgICAgICAkYnV0dG9uLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKCl7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuc2VuZEVtYWlsUmVjdXBlcm9QYXNzd29yZChjb21wYW55LCB1c2VybmFtZSk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9LFxuXG4gICAgc2VuZEVtYWlsUmVjdXBlcm9QYXNzd29yZDogZnVuY3Rpb24oY29tcGFueSwgdXNlcm5hbWUpe1xuICAgICAgICAkKFwiI3NwYW4tcmVjdXBlcm8tcHdkLWJ1dHRvblwiKS5oaWRlKCk7XG4gICAgICAgICQoXCIjcmVjdXBlcm8tcHdkLWJ1dHRvbiAuc3Bpbm5lci1ib3JkZXIsIC5sb2FkaW5nLXJlY3VwZXJvLXB3ZFwiKS5zaG93KCk7XG5cbiAgICAgICAgJC5hamF4KHtcbiAgICAgICAgICAgIHVybDogXCIvcmVjdXBlcm8tcGFzc3dvcmRcIixcbiAgICAgICAgICAgIHR5cGU6IFwicG9zdFwiLFxuICAgICAgICAgICAgZGF0YVR5cGU6IFwianNvblwiLFxuICAgICAgICAgICAgZGF0YToge3RpcG92aWV3OiBcInNlbmRFbWFpbFJlY3VwZXJvUHdkXCIsIGNvbXBhbnk6IGNvbXBhbnksIHVzZXJuYW1lOiB1c2VybmFtZX0sXG4gICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoanNvbil7XG4gICAgICAgICAgICAgICAgJChcIiNyZWN1cGVyby1wd2Qtb3V0cHV0LWFjdGlvbnMgLm91dHB1dC1hY3Rpb25zXCIpLmh0bWwoanNvbi5kYXRhLm1zZyA/IGpzb24uZGF0YS5tc2cgOiBqc29uLmRhdGEub3V0KTtcbiAgICAgICAgICAgICAgICAkKFwiI3JlY3VwZXJvLXB3ZC1vdXRwdXQtYWN0aW9uc1wiKS5zaG93KCk7XG4gICAgICAgICAgICAgICAgaWYoIWpzb24ubXNnKSB7XG4gICAgICAgICAgICAgICAgICAgICQoXCIjcmVjdXBlcm8tcHdkLWJ1dHRvblwiKS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAkKFwiI3JlY3VwZXJvLXB3ZC1idXR0b24gLnNwaW5uZXItYm9yZGVyLCAubG9hZGluZy1yZWN1cGVyby1wd2RcIikuaGlkZSgpO1xuICAgICAgICAgICAgICAgICQoXCIjc3Bhbi1yZWN1cGVyby1wd2QtYnV0dG9uXCIpLnNob3coKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9LFxuXG4gICAgY2hlY2tFbWFpbFJlY3VwZXJvUHdkOiBmdW5jdGlvbiAoKXtcbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGdldEh0bWxGcm9tQWpheCh7XG4gICAgICAgICAgICB1cmw6IFwiYWpheC5waHA/SlNPTlwiLFxuICAgICAgICAgICAgZGl2bmFtZTogXCJkaWFsb2dfcmVjdXBlcm9fcGFzc3dvcmRcIixcbiAgICAgICAgICAgIGRhdGE6IHtvYmplY3Q6IFwiSVdVc2VyXCIsIHRpcG92aWV3OiBcInZpZXdEaWFsb2dTZXRFbWFpbEZvclB3ZFJlc2V0XCJ9LFxuICAgICAgICAgICAgb25TdWNjZXNzOiBmdW5jdGlvbiAoKXtcbiAgICAgICAgICAgICAgICBkaWFsb2dTaG93KFwiZGlhbG9nX3JlY3VwZXJvX3Bhc3N3b3JkXCIsIGZ1bmN0aW9uIChyZXQpe1xuICAgICAgICAgICAgICAgICAgICBpZighcmV0KSByZXR1cm47XG5cbiAgICAgICAgICAgICAgICAgICAgJC5hamF4KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogXCJ2aWV3LnBocFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6IFwianNvblwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogXCJwb3N0XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7T1BfRlJPTV9BSkFYOjEsIEpTT046IDEsIG9iamVjdDogXCJJV1VzZXJcIiwgdGlwb3ZpZXc6IFwic2F2ZUVtYWlsUmVjdXBlcm9Qd2RcIiwgZW1haWw6ICQoXCIjZW1haWxfZm9yX3B3ZF9yZXNldFwiKS52YWwoKX0sXG4gICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoanNvbil7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWpheFN1Ym1pdE9uU3VjY2Vzc0Z1bmN0aW9uKGpzb24sIHRydWUpO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYoIWpzb24ucmV0KSBzZWxmLmNoZWNrRW1haWxSZWN1cGVyb1B3ZCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfVxufSIsIi8qKlxuICogQ3JlYXRlZCBieSBQaHBTdG9ybVxuICogVXNlcjogZGFuaWVsZVxuICogRGF0ZTogMTcvMTIvMjBcbiAqIFRpbWU6IDA5OjI1XG4gKi9cbmltcG9ydCBMb2dpbiBmcm9tIFwiLi9jb21wb25lbnRzL2xvZ2luXCI7XG5cbiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpe1xuICAgIExvZ2luLnBhc3N3b3JkRXZlbnRzKCk7XG5cbiAgICBMb2dpbi5sb2dpblN1Ym1pdCgpO1xuICAgIExvZ2luLm9wZW5Nb2RhbFJlY3VwZXJvUHdkKCk7XG5cbiAgICByZXNpemVDb250ZW50KCk7XG4gICAgJCh3aW5kb3cpLmJpbmQoJ3Jlc2l6ZScsIHJlc2l6ZUNvbnRlbnQpO1xufSkiLCIndXNlIHN0cmljdCc7XG52YXIgdW5jdXJyeVRoaXMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tdW5jdXJyeS10aGlzJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gdW5jdXJyeVRoaXMoW10uc2xpY2UpO1xuIiwiJ3VzZSBzdHJpY3QnO1xudmFyIHVuY3VycnlUaGlzID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLXVuY3VycnktdGhpcycpO1xudmFyIGFDYWxsYWJsZSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9hLWNhbGxhYmxlJyk7XG52YXIgaXNPYmplY3QgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvaXMtb2JqZWN0Jyk7XG52YXIgaGFzT3duID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2hhcy1vd24tcHJvcGVydHknKTtcbnZhciBhcnJheVNsaWNlID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2FycmF5LXNsaWNlJyk7XG52YXIgTkFUSVZFX0JJTkQgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tYmluZC1uYXRpdmUnKTtcblxudmFyICRGdW5jdGlvbiA9IEZ1bmN0aW9uO1xudmFyIGNvbmNhdCA9IHVuY3VycnlUaGlzKFtdLmNvbmNhdCk7XG52YXIgam9pbiA9IHVuY3VycnlUaGlzKFtdLmpvaW4pO1xudmFyIGZhY3RvcmllcyA9IHt9O1xuXG52YXIgY29uc3RydWN0ID0gZnVuY3Rpb24gKEMsIGFyZ3NMZW5ndGgsIGFyZ3MpIHtcbiAgaWYgKCFoYXNPd24oZmFjdG9yaWVzLCBhcmdzTGVuZ3RoKSkge1xuICAgIHZhciBsaXN0ID0gW107XG4gICAgdmFyIGkgPSAwO1xuICAgIGZvciAoOyBpIDwgYXJnc0xlbmd0aDsgaSsrKSBsaXN0W2ldID0gJ2FbJyArIGkgKyAnXSc7XG4gICAgZmFjdG9yaWVzW2FyZ3NMZW5ndGhdID0gJEZ1bmN0aW9uKCdDLGEnLCAncmV0dXJuIG5ldyBDKCcgKyBqb2luKGxpc3QsICcsJykgKyAnKScpO1xuICB9IHJldHVybiBmYWN0b3JpZXNbYXJnc0xlbmd0aF0oQywgYXJncyk7XG59O1xuXG4vLyBgRnVuY3Rpb24ucHJvdG90eXBlLmJpbmRgIG1ldGhvZCBpbXBsZW1lbnRhdGlvblxuLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWEyNjIvI3NlYy1mdW5jdGlvbi5wcm90b3R5cGUuYmluZFxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGVzL25vLWZ1bmN0aW9uLXByb3RvdHlwZS1iaW5kIC0tIGRldGVjdGlvblxubW9kdWxlLmV4cG9ydHMgPSBOQVRJVkVfQklORCA/ICRGdW5jdGlvbi5iaW5kIDogZnVuY3Rpb24gYmluZCh0aGF0IC8qICwgLi4uYXJncyAqLykge1xuICB2YXIgRiA9IGFDYWxsYWJsZSh0aGlzKTtcbiAgdmFyIFByb3RvdHlwZSA9IEYucHJvdG90eXBlO1xuICB2YXIgcGFydEFyZ3MgPSBhcnJheVNsaWNlKGFyZ3VtZW50cywgMSk7XG4gIHZhciBib3VuZEZ1bmN0aW9uID0gZnVuY3Rpb24gYm91bmQoLyogYXJncy4uLiAqLykge1xuICAgIHZhciBhcmdzID0gY29uY2F0KHBhcnRBcmdzLCBhcnJheVNsaWNlKGFyZ3VtZW50cykpO1xuICAgIHJldHVybiB0aGlzIGluc3RhbmNlb2YgYm91bmRGdW5jdGlvbiA/IGNvbnN0cnVjdChGLCBhcmdzLmxlbmd0aCwgYXJncykgOiBGLmFwcGx5KHRoYXQsIGFyZ3MpO1xuICB9O1xuICBpZiAoaXNPYmplY3QoUHJvdG90eXBlKSkgYm91bmRGdW5jdGlvbi5wcm90b3R5cGUgPSBQcm90b3R5cGU7XG4gIHJldHVybiBib3VuZEZ1bmN0aW9uO1xufTtcbiIsIid1c2Ugc3RyaWN0Jztcbi8vIFRPRE86IFJlbW92ZSBmcm9tIGBjb3JlLWpzQDRgXG52YXIgJCA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9leHBvcnQnKTtcbnZhciBiaW5kID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Z1bmN0aW9uLWJpbmQnKTtcblxuLy8gYEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kYCBtZXRob2Rcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZnVuY3Rpb24ucHJvdG90eXBlLmJpbmRcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBlcy9uby1mdW5jdGlvbi1wcm90b3R5cGUtYmluZCAtLSBkZXRlY3Rpb25cbiQoeyB0YXJnZXQ6ICdGdW5jdGlvbicsIHByb3RvOiB0cnVlLCBmb3JjZWQ6IEZ1bmN0aW9uLmJpbmQgIT09IGJpbmQgfSwge1xuICBiaW5kOiBiaW5kXG59KTtcbiJdLCJuYW1lcyI6WyJwYXNzd29yZEV2ZW50cyIsIiQiLCJvbiIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJhdHRyIiwiYWRkQ2xhc3MiLCJyZW1vdmVDbGFzcyIsImxvZ2luU3VibWl0Iiwib3B0cyIsIm9uQmVmb3JlU3VibWl0Iiwic2VsZiIsImNsaWNrIiwidmFsIiwiYWpheCIsInVybCIsInR5cGUiLCJkYXRhIiwic2VyaWFsaXplIiwiZGF0YVR5cGUiLCJzdWNjZXNzIiwianNvbiIsImxvZ2luT25BamF4U3VjY2VzcyIsIm9uU3VjY2Vzc0NhbGxiYWNrIiwicmV0IiwiYWxlcnQiLCJwYWdlZGVmYXVsdCIsImRvY3VtZW50IiwibG9jYXRpb24iLCJocmVmIiwic3RycG9zIiwid2luZG93Iiwib3Blbk1vZGFsUmVjdXBlcm9Qd2QiLCJzaG93IiwiaGlkZSIsIiRidXR0b24iLCJwcm9wIiwib2ZmIiwiZ2V0RW1haWxSZWN1cGVyb1Bhc3N3b3JkIiwiaHRtbCIsIm1vZGFsIiwiJGZvcm0iLCJmb3JtIiwidmFsaWRhdGlvbiIsImNoZWNrVmFsaWRpdHkiLCJjbGFzc0xpc3QiLCJhZGQiLCJjb21wYW55IiwidXNlcm5hbWUiLCJ0aXBvdmlldyIsIm1zZyIsInNlbmRFbWFpbFJlY3VwZXJvUGFzc3dvcmQiLCJvdXQiLCJjaGVja0VtYWlsUmVjdXBlcm9Qd2QiLCJnZXRIdG1sRnJvbUFqYXgiLCJkaXZuYW1lIiwib2JqZWN0Iiwib25TdWNjZXNzIiwiZGlhbG9nU2hvdyIsIk9QX0ZST01fQUpBWCIsIkpTT04iLCJlbWFpbCIsImFqYXhTdWJtaXRPblN1Y2Nlc3NGdW5jdGlvbiIsIkxvZ2luIiwicmVhZHkiLCJyZXNpemVDb250ZW50IiwiYmluZCJdLCJzb3VyY2VSb290IjoiIn0=