Linux SRV-16 6.18.44-paas #1 SMP PREEMPT_DYNAMIC Thu Aug 13 10:08:12 UTC 2026 x86_64
/
srv
/
data
/
web
/
vhosts
/
www.humitest.fr
/
htdocs
/
public
/
build
/
/srv/data/web/vhosts/www.humitest.fr/htdocs/public/build/app.js
(window["webpackJsonp"] = window["webpackJsonp"] || []).push([["app"],{ /***/ "./assets/css/app.scss": /*!*****************************!*\ !*** ./assets/css/app.scss ***! \*****************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { // extracted by mini-css-extract-plugin /***/ }), /***/ "./assets/js/app.js": /*!**************************!*\ !*** ./assets/js/app.js ***! \**************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { /* WEBPACK VAR INJECTION */(function(global) {function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); } function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } /* * Welcome to your app's main JavaScript file! * * We recommend including the built version of this JavaScript file * (and its CSS file) in your base layout (base.html.twig). */ // any CSS you require will output into a single css file (app.css in this case) __webpack_require__(/*! ../css/app.scss */ "./assets/css/app.scss"); // Need jQuery? Install it with "yarn add jquery", then uncomment to require it. var $ = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js"); global.$ = global.jQuery = $; __webpack_require__(/*! popper.js */ "./node_modules/popper.js/dist/esm/popper.js"); __webpack_require__(/*! bootstrap */ "./node_modules/bootstrap/dist/js/bootstrap.js"); // require('@fortawesome/fontawesome-free/css/all.min.css'); //require('@fortawesome/fontawesome-free/js/all.js'); console.log('Hello Webpack Encore! Edit me in assets/js/app.js'); //baniere accueil animation -- var text1 = ["GAMME", "GAMME", "GAMME"]; var text2 = ["INDUSTRIES", " BIOMASSE", "AGROALIMENTAIRE"]; var count = 2; setInterval(function () { count--; document.getElementById('text-1').innerHTML = text1[count]; document.getElementById('text-2-span').innerHTML = text2[count]; if (count == 0) { count = 3; } }, 7000); // popover telephone fixed to bottom $(function () { $('[data-toggle="popover"]').popover({ html: true }); }); // barre de recherche collapse //js for inclusion - boring stuff // const myLabels = document.querySelectorAll('.lbl-toggle'); Array.from(myLabels).forEach(label => { label.addEventListener('keydown', e => { if (e.which === 32 || e.which === 13) { e.preventDefault(); label.click(); }; }); }); //jQuery to collapse the navbar on scroll $(window).scroll(function () { if ($(".navbar").offset().top > 50) { $(".menu").addClass("fixed"); } else { $(".menu").removeClass("fixed"); } }); // Zoom // Product detail gallery/////////////////// var imgs = document.querySelectorAll('.img-select a'); var imgBtns = _toConsumableArray(imgs); var imgId = 1; imgBtns.forEach(function (imgItem) { imgItem.addEventListener('click', function (event) { event.preventDefault(); imgId = imgItem.dataset.id; slideImage(); }); }); function slideImage() { var displayWidth = document.querySelector('.img-showcase img:first-child').clientWidth; document.querySelector('.img-showcase').style.transform = "translateX(".concat(-(imgId - 1) * displayWidth, "px)"); } window.addEventListener('resize', slideImage); /////// zoom image produit //tabbar //////////////// $('#myNavTabs a').click(function (evt) { evt.preventDefault(); $(this).tab('show'); }); $('a[data-toggle="tab"]').on('shown.bs.tab', function (e) { //new tab console.log(e.target); //previous tab console.log(e.relatedTarget); }); // SLIDER $('.carousel').carousel({ interval: 5000 }); //END SLIDER // accordeon caracteristique produit $(".accordian").on("click", ".accordian-title", function () { $(this).toggleClass("active").next().slideToggle(500); }); //backtotop $(function () { //Scroll event $(window).scroll(function () { var scrolled = $(window).scrollTop(); if (scrolled > 200) $('.go-top').fadeIn('slow'); if (scrolled < 200) $('.go-top').fadeOut('slow'); }); //Click event $('.go-top').click(function () { $("html, body").animate({ scrollTop: "0" }, 500); }); }); // HOVER EFFECT DIV $(document).ready(function () { $('.hover-div').hover(function () { $('.hover-div').stop().fadeTo('fast', 0.3); $(this).stop().fadeTo('fast', 1); }, function () { $('.hover-div').stop().fadeTo('fast', 1); }); }); // COpier coller function $('.click').on('click', function () { // finds data-clipboard-test for content p class "click" value = $(this).data('clipboard-text'); // Temporary input tag to store text var $temp = $("<input>"); $("body").append($temp); // Selects text value $temp.val(value).select(); // Copies text, removes temporary tag document.execCommand("copy"); $temp.remove(); }); // SLIDE PRODUIT PHARE ACCUEIL $(document).ready(function () { var getslideHeight = $('.slide.active').height(); $('.slides').css({ height: getslideHeight }); function calcslideHeight() { getslideHeight = $('.slide.active').height(); $('.slides').css({ height: getslideHeight }); } function animateContentColor() { var getslideColor = $('.slide.active').attr('slide-color'); $('body').css({ background: getslideColor }); $('.title').css({ color: getslideColor }); $('.btn').css({ color: getslideColor }); } var slideItem = $('.slide'), slideCurrentItem = slideItem.filter('.active'); $('#next').on('click', function (e) { e.preventDefault(); var nextItem = slideCurrentItem.next(); slideCurrentItem.removeClass('active'); if (nextItem.length) { slideCurrentItem = nextItem.addClass('active'); } else { slideCurrentItem = slideItem.first().addClass('active'); } calcslideHeight(); animateContentColor(); }); $('#prev').on('click', function (e) { e.preventDefault(); var prevItem = slideCurrentItem.prev(); slideCurrentItem.removeClass('active'); if (prevItem.length) { slideCurrentItem = prevItem.addClass('active'); } else { slideCurrentItem = slideItem.last().addClass('active'); } calcslideHeight(); animateContentColor(); }); // Ripple $('[ripple]').on('click', function (e) { var rippleDiv = $('<div class="ripple" />'), rippleSize = 60, rippleOffset = $(this).offset(), rippleY = e.pageY - rippleOffset.top, rippleX = e.pageX - rippleOffset.left, ripple = $('.ripple'); rippleDiv.css({ top: rippleY - rippleSize / 2, left: rippleX - rippleSize / 2, background: $(this).attr("ripple-color") }).appendTo($(this)); window.setTimeout(function () { rippleDiv.remove(); }, 1900); }); }); // STRIPE CHECKOUT $(document).ready(function () { var pk = $('#checkout-button').attr('data-pk'); var session_id = $('#checkout-button').attr('data-id'); if (pk) { var stripe = Stripe(pk); } var checkoutButton = document.getElementById('checkout-button'); if (checkoutButton) { checkoutButton.addEventListener('click', function () { // When the customer clicks on the button, redirect // them to Checkout. stripe.redirectToCheckout({ sessionId: session_id }).then(function (result) { if (result.error) { // If `redirectToCheckout` fails due to a browser or network // error, display the localized error message to your customer. var displayError = document.getElementById('error-message'); displayError.textContent = result.error.message; } }); }); } }); if (innerWidth < 768) { document.getElementById("navbar-contact").innerHTML = "<i class=\"fas fa-paper-plane text-light\"></i> Contactez-nous"; } window.addEventListener("resize", function () { if (innerWidth < 768) { document.getElementById("navbar-contact").innerHTML = "<i class=\"fas fa-paper-plane text-light\"></i> Contactez-nous"; } else { document.getElementById("navbar-contact").innerHTML = "<i class=\"fas fa-paper-plane text-light\"></i>"; } }); /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node_modules/webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) /***/ }) },[["./assets/js/app.js","runtime","vendors~app"]]]); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvY3NzL2FwcC5zY3NzIiwid2VicGFjazovLy8uL2Fzc2V0cy9qcy9hcHAuanMiXSwibmFtZXMiOlsicmVxdWlyZSIsIiQiLCJnbG9iYWwiLCJqUXVlcnkiLCJjb25zb2xlIiwibG9nIiwidGV4dDEiLCJ0ZXh0MiIsImNvdW50Iiwic2V0SW50ZXJ2YWwiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiaW5uZXJIVE1MIiwicG9wb3ZlciIsImh0bWwiLCJ3aW5kb3ciLCJzY3JvbGwiLCJvZmZzZXQiLCJ0b3AiLCJhZGRDbGFzcyIsInJlbW92ZUNsYXNzIiwiaW1ncyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJpbWdCdG5zIiwiaW1nSWQiLCJmb3JFYWNoIiwiaW1nSXRlbSIsImFkZEV2ZW50TGlzdGVuZXIiLCJldmVudCIsInByZXZlbnREZWZhdWx0IiwiZGF0YXNldCIsImlkIiwic2xpZGVJbWFnZSIsImRpc3BsYXlXaWR0aCIsInF1ZXJ5U2VsZWN0b3IiLCJjbGllbnRXaWR0aCIsInN0eWxlIiwidHJhbnNmb3JtIiwiY2xpY2siLCJldnQiLCJ0YWIiLCJvbiIsImUiLCJ0YXJnZXQiLCJyZWxhdGVkVGFyZ2V0IiwiY2Fyb3VzZWwiLCJpbnRlcnZhbCIsInRvZ2dsZUNsYXNzIiwibmV4dCIsInNsaWRlVG9nZ2xlIiwic2Nyb2xsZWQiLCJzY3JvbGxUb3AiLCJmYWRlSW4iLCJmYWRlT3V0IiwiYW5pbWF0ZSIsInJlYWR5IiwiaG92ZXIiLCJzdG9wIiwiZmFkZVRvIiwidmFsdWUiLCJkYXRhIiwiJHRlbXAiLCJhcHBlbmQiLCJ2YWwiLCJzZWxlY3QiLCJleGVjQ29tbWFuZCIsInJlbW92ZSIsImdldHNsaWRlSGVpZ2h0IiwiaGVpZ2h0IiwiY3NzIiwiY2FsY3NsaWRlSGVpZ2h0IiwiYW5pbWF0ZUNvbnRlbnRDb2xvciIsImdldHNsaWRlQ29sb3IiLCJhdHRyIiwiYmFja2dyb3VuZCIsImNvbG9yIiwic2xpZGVJdGVtIiwic2xpZGVDdXJyZW50SXRlbSIsImZpbHRlciIsIm5leHRJdGVtIiwibGVuZ3RoIiwiZmlyc3QiLCJwcmV2SXRlbSIsInByZXYiLCJsYXN0IiwicmlwcGxlRGl2IiwicmlwcGxlU2l6ZSIsInJpcHBsZU9mZnNldCIsInJpcHBsZVkiLCJwYWdlWSIsInJpcHBsZVgiLCJwYWdlWCIsImxlZnQiLCJyaXBwbGUiLCJhcHBlbmRUbyIsInNldFRpbWVvdXQiLCJwayIsInNlc3Npb25faWQiLCJzdHJpcGUiLCJTdHJpcGUiLCJjaGVja291dEJ1dHRvbiIsInJlZGlyZWN0VG9DaGVja291dCIsInNlc3Npb25JZCIsInRoZW4iLCJyZXN1bHQiLCJlcnJvciIsImRpc3BsYXlFcnJvciIsInRleHRDb250ZW50IiwibWVzc2FnZSIsImlubmVyV2lkdGgiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLHVDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0FBLG1CQUFPLENBQUMsOENBQUQsQ0FBUCxDLENBRUE7OztBQUNBLElBQU1DLENBQUMsR0FBR0QsbUJBQU8sQ0FBQyxvREFBRCxDQUFqQjs7QUFDQUUsTUFBTSxDQUFDRCxDQUFQLEdBQVdDLE1BQU0sQ0FBQ0MsTUFBUCxHQUFnQkYsQ0FBM0I7O0FBQ0FELG1CQUFPLENBQUMsOERBQUQsQ0FBUDs7QUFDQUEsbUJBQU8sQ0FBQyxnRUFBRCxDQUFQLEMsQ0FFQTtBQUNBOzs7QUFFQUksT0FBTyxDQUFDQyxHQUFSLENBQVksbURBQVosRSxDQUdBOztBQUNBLElBQUlDLEtBQUssR0FBRyxDQUFDLE9BQUQsRUFBVSxPQUFWLEVBQW1CLE9BQW5CLENBQVo7QUFDQSxJQUFJQyxLQUFLLEdBQUcsQ0FBQyxZQUFELEVBQWUsV0FBZixFQUE0QixpQkFBNUIsQ0FBWjtBQUNBLElBQUlDLEtBQUssR0FBRyxDQUFaO0FBQ0FDLFdBQVcsQ0FBQyxZQUFNO0FBQ2hCRCxPQUFLO0FBQ0xFLFVBQVEsQ0FBQ0MsY0FBVCxDQUF3QixR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eEIsRUFBMENDLFNBQTFDO0FBQ0QsR0FGRCxNQUVPO0FBQ0xGLFlBQVEsQ0FBQ0MsY0FBVCxDQUF3QixnQkFBeEIsRUFBMENDLFNBQTFDO0FBQ0Q7QUFDRixDQU5ELEUiLCJmaWxlIjoiYXBwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luIiwiLypcclxuICogV2VsY29tZSB0byB5b3VyIGFwcCdzIG1haW4gSmF2YVNjcmlwdCBmaWxlIVxyXG4gKlxyXG4gKiBXZSByZWNvbW1lbmQgaW5jbHVkaW5nIHRoZSBidWlsdCB2ZXJzaW9uIG9mIHRoaXMgSmF2YVNjcmlwdCBmaWxlXHJcbiAqIChhbmQgaXRzIENTUyBmaWxlKSBpbiB5b3VyIGJhc2UgbGF5b3V0IChiYXNlLmh0bWwudHdpZykuXHJcbiAqL1xyXG5cclxuLy8gYW55IENTUyB5b3UgcmVxdWlyZSB3aWxsIG91dHB1dCBpbnRvIGEgc2luZ2xlIGNzcyBmaWxlIChhcHAuY3NzIGluIHRoaXMgY2FzZSlcclxucmVxdWlyZSgnLi4vY3NzL2FwcC5zY3NzJyk7XHJcblxyXG4vLyBOZWVkIGpRdWVyeT8gSW5zdGFsbCBpdCB3aXRoIFwieWFybiBhZGQganF1ZXJ5XCIsIHRoZW4gdW5jb21tZW50IHRvIHJlcXVpcmUgaXQuXHJcbmNvbnN0ICQgPSByZXF1aXJlKCdqcXVlcnknKTtcclxuZ2xvYmFsLiQgPSBnbG9iYWwualF1ZXJ5ID0gJDtcclxucmVxdWlyZSgncG9wcGVyLmpzJyk7XHJcbnJlcXVpcmUoJ2Jvb3RzdHJhcCcpO1xyXG5cclxuLy8gcmVxdWlyZSgnQGZvcnRhd2Vzb21lL2ZvbnRhd2Vzb21lLWZyZWUvY3NzL2FsbC5taW4uY3NzJyk7XHJcbi8vcmVxdWlyZSgnQGZvcnRhd2Vzb21lL2ZvbnRhd2Vzb21lLWZyZWUvanMvYWxsLmpzJyk7XHJcblxyXG5jb25zb2xlLmxvZygnSGVsbG8gV2VicGFjayBFbmNvcmUhIEVkaXQgbWUgaW4gYXNzZXRzL2pzL2FwcC5qcycpO1xyXG5cclxuXHJcbi8vYmFuaWVyZSBhY2N1ZWlsIGFuaW1hdGlvbiAtLVxyXG52YXIgdGV4dDEgPSBbXCJHQU1NRVwiLCBcIkdBTU1FXCIsIFwiR0FNTUVcIl07XHJcbnZhciB0ZXh0MiA9IFtcIklORFVTVFJJRVNcIiwgXCIgQklPTUFTU0VcIiwgXCJBR1JPQUxJTUVOVEFJUkVcIl07XHJcbnZhciBjb3VudCA9IDI7XHJcbnNldEludGVydmFsKCgpID0+IHtcclxuICBjb3VudC0tO1xyXG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXh0LTEnKS5pbm5lckhUTUw9IHRleHQxW2NvdW50XTtcclxuICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGV4dC0yLXNwYW4nKS5pbm5lckhUTUw9IHRleHQyW2NvdW50XTtcclxuICBpZihjb3VudCA9PSAwKXtcclxuICAgIGNvdW50ID0gMztcclxuICB9XHJcbn0sIDcwMDApO1xyXG5cclxuLy8gcG9wb3ZlciB0ZWxlcGhvbmUgZml4ZWQgdG8gYm90dG9tXHJcbiQoZnVuY3Rpb24oKSB7XHJcblx0JCgnW2RhdGEtdG9nZ2xlPVwicG9wb3ZlclwiXScpLnBvcG92ZXIoe2h0bWw6dHJ1ZX0pXHJcbn0pXHJcblxyXG4vLyBiYXJyZSBkZSByZWNoZXJjaGUgY29sbGFwc2VcclxuLy9qcyBmb3IgaW5jbHVzaW9uIC0gYm9yaW5nIHN0dWZmXHJcbi8vIGNvbnN0IG15TGFiZWxzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmxibC10b2dnbGUnKTsgQXJyYXkuZnJvbShteUxhYmVscykuZm9yRWFjaChsYWJlbCA9PiB7IGxhYmVsLmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBlID0+IHsgaWYgKGUud2hpY2ggPT09IDMyIHx8IGUud2hpY2ggPT09IDEzKSB7IGUucHJldmVudERlZmF1bHQoKTsgbGFiZWwuY2xpY2soKTsgfTsgfSk7IH0pOyBcclxuXHJcbi8valF1ZXJ5IHRvIGNvbGxhcHNlIHRoZSBuYXZiYXIgb24gc2Nyb2xsXHJcbiQod2luZG93KS5zY3JvbGwoZnVuY3Rpb24oKSB7XHJcbiAgICBpZiAoJChcIi5uYXZiYXJcIikub2Zmc2V0KCkudG9wID4gNTApIHtcclxuICAgICAgJChcIi5tZW51XCIpLmFkZENsYXNzKFwiZml4ZWRcIik7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAkKFwiLm1lbnVcIikucmVtb3ZlQ2xhc3MoXCJmaXhlZFwiKTtcclxuICAgIH1cclxufSk7XHJcblxyXG4vLyBab29tXHJcblxyXG4vLyBQcm9kdWN0IGRldGFpbCBnYWxsZXJ5Ly8vLy8vLy8vLy8vLy8vLy8vL1xyXG4gIGNvbnN0IGltZ3MgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCcuaW1nLXNlbGVjdCBhJyk7XHJcbiAgY29uc3QgaW1nQnRucyA9IFsuLi5pbWdzXTtcclxuICBsZXQgaW1nSWQgPSAxO1xyXG5cclxuICBpbWdCdG5zLmZvckVhY2goKGltZ0l0ZW0pID0+IHtcclxuICAgICAgaW1nSXRlbS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIChldmVudCkgPT4ge1xyXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgICAgIGltZ0lkID0gaW1nSXRlbS5kYXRhc2V0LmlkO1xyXG4gICAgICAgICAgc2xpZGVJbWFnZSgpO1xyXG4gICAgICB9KTtcclxuICB9KTtcclxuXHJcbiAgZnVuY3Rpb24gc2xpZGVJbWFnZSgpe1xyXG4gICAgICBjb25zdCBkaXNwbGF5V2lkdGggPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcuaW1nLXNob3djYXNlIGltZzpmaXJzdC1jaGlsZCcpLmNsaWVudFdpZHRoO1xyXG5cclxuICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmltZy1zaG93Y2FzZScpLnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGVYKCR7LSAoaW1nSWQgLSAxKSAqIGRpc3BsYXlXaWR0aH1weClgO1xyXG4gIH1cclxuXHJcbiAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHNsaWRlSW1hZ2UpO1xyXG5cclxuICAvLy8vLy8vIHpvb20gaW1hZ2UgcHJvZHVpdCBcclxuXHJcbi8vdGFiYmFyIC8vLy8vLy8vLy8vLy8vLy9cclxuXHJcbiQoJyNteU5hdlRhYnMgYScpLmNsaWNrKGZ1bmN0aW9uIChldnQpIHtcclxuICBldnQucHJldmVudERlZmF1bHQoKTtcclxuICAkKHRoaXMpLnRhYignc2hvdycpO1xyXG59KTtcclxuXHJcbiQoJ2FbZGF0YS10b2dnbGU9XCJ0YWJcIl0nKS5vbignc2hvd24uYnMudGFiJywgZnVuY3Rpb24gKGUpIHtcclxuICAvL25ldyB0YWJcclxuICBjb25zb2xlLmxvZyhlLnRhcmdldCk7XHJcbiAgXHJcbiAgLy9wcmV2aW91cyB0YWJcclxuICBjb25zb2xlLmxvZyhlLnJlbGF0ZWRUYXJnZXQpO1xyXG59KVxyXG5cclxuLy8gU0xJREVSXHJcbiQoJy5jYXJvdXNlbCcpLmNhcm91c2VsKHtcclxuICBpbnRlcnZhbDogNTAwMFxyXG59KVxyXG4vL0VORCBTTElERVJcclxuXHJcblxyXG4vLyAgYWNjb3JkZW9uIGNhcmFjdGVyaXN0aXF1ZSBwcm9kdWl0XHJcblxyXG4kKFwiLmFjY29yZGlhblwiKS5vbihcImNsaWNrXCIsIFwiLmFjY29yZGlhbi10aXRsZVwiLCBmdW5jdGlvbiAoKSB7XHJcbiAgJCh0aGlzKS50b2dnbGVDbGFzcyhcImFjdGl2ZVwiKS5uZXh0KCkuc2xpZGVUb2dnbGUoNTAwKTtcclxufSk7XHJcblxyXG4vL2JhY2t0b3RvcFxyXG5cclxuJChmdW5jdGlvbigpe1xyXG5cclxuICAvL1Njcm9sbCBldmVudFxyXG4gICQod2luZG93KS5zY3JvbGwoZnVuY3Rpb24oKXtcclxuICAgIHZhciBzY3JvbGxlZCA9ICQod2luZG93KS5zY3JvbGxUb3AoKTtcclxuICAgIGlmIChzY3JvbGxlZCA+IDIwMCkgJCgnLmdvLXRvcCcpLmZhZGVJbignc2xvdycpO1xyXG4gICAgaWYgKHNjcm9sbGVkIDwgMjAwKSAkKCcuZ28tdG9wJykuZmFkZU91dCgnc2xvdycpO1xyXG4gIH0pO1xyXG4gIFxyXG4gIC8vQ2xpY2sgZXZlbnRcclxuICAkKCcuZ28tdG9wJykuY2xpY2soZnVuY3Rpb24gKCkge1xyXG4gICAgJChcImh0bWwsIGJvZHlcIikuYW5pbWF0ZSh7IHNjcm9sbFRvcDogXCIwXCIgfSwgIDUwMCk7XHJcbiAgfSk7XHJcblxyXG59KTtcclxuXHJcblxyXG4vLyBIT1ZFUiBFRkZFQ1QgRElWIFxyXG4kKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbiAoKSB7XHJcbiAgJCgnLmhvdmVyLWRpdicpLmhvdmVyKGZ1bmN0aW9uICgpIHtcclxuICAgICAgJCgnLmhvdmVyLWRpdicpLnN0b3AoKS5mYWRlVG8oJ2Zhc3QnLCAwLjMpO1xyXG4gICAgICAkKHRoaXMpLnN0b3AoKS5mYWRlVG8oJ2Zhc3QnLCAxKTtcclxuICB9LCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICQoJy5ob3Zlci1kaXYnKS5zdG9wKCkuZmFkZVRvKCdmYXN0JywgMSk7XHJcbiAgfSk7XHJcbn0pO1xyXG5cclxuLy8gQ09waWVyIGNvbGxlciBmdW5jdGlvblxyXG4kKCcuY2xpY2snKS5vbignY2xpY2snLCBmdW5jdGlvbigpIHtcclxuICAvLyBmaW5kcyBkYXRhLWNsaXBib2FyZC10ZXN0IGZvciBjb250ZW50IHAgY2xhc3MgXCJjbGlja1wiIFxyXG4gIHZhbHVlID0gJCh0aGlzKS5kYXRhKCdjbGlwYm9hcmQtdGV4dCcpOyBcclxuICAvLyBUZW1wb3JhcnkgaW5wdXQgdGFnIHRvIHN0b3JlIHRleHRcclxuICB2YXIgJHRlbXAgPSAkKFwiPGlucHV0PlwiKTtcclxuICAkKFwiYm9keVwiKS5hcHBlbmQoJHRlbXApO1xyXG4gIC8vIFNlbGVjdHMgdGV4dCB2YWx1ZVxyXG4gICR0ZW1wLnZhbCh2YWx1ZSkuc2VsZWN0KCk7XHJcbiAgLy8gQ29waWVzIHRleHQsIHJlbW92ZXMgdGVtcG9yYXJ5IHRhZ1xyXG4gIGRvY3VtZW50LmV4ZWNDb21tYW5kKFwiY29weVwiKTtcclxuICAkdGVtcC5yZW1vdmUoKTtcclxuICBcclxufSk7XHJcblxyXG5cclxuLy8gU0xJREUgUFJPRFVJVCBQSEFSRSBBQ0NVRUlMXHJcblxyXG4kKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHtcclxuICB2YXIgZ2V0c2xpZGVIZWlnaHQgPSAkKCcuc2xpZGUuYWN0aXZlJykuaGVpZ2h0KCk7XHJcblxyXG4gICQoJy5zbGlkZXMnKS5jc3Moe1xyXG4gICAgaGVpZ2h0OiBnZXRzbGlkZUhlaWdodFxyXG4gIH0pO1xyXG5cclxuICBmdW5jdGlvbiBjYWxjc2xpZGVIZWlnaHQoKSB7XHJcbiAgICBnZXRzbGlkZUhlaWdodCA9ICQoJy5zbGlkZS5hY3RpdmUnKS5oZWlnaHQoKTtcclxuXHJcbiAgICAkKCcuc2xpZGVzJykuY3NzKHtcclxuICAgICAgaGVpZ2h0OiBnZXRzbGlkZUhlaWdodFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBmdW5jdGlvbiBhbmltYXRlQ29udGVudENvbG9yKCkge1xyXG4gICAgdmFyIGdldHNsaWRlQ29sb3IgPSAkKCcuc2xpZGUuYWN0aXZlJykuYXR0cignc2xpZGUtY29sb3InKTtcclxuXHJcbiAgICAkKCdib2R5JykuY3NzKHtcclxuICAgICAgYmFja2dyb3VuZDogZ2V0c2xpZGVDb2xvclxyXG4gICAgfSk7XHJcblxyXG4gICAgJCgnLnRpdGxlJykuY3NzKHtcclxuICAgICAgY29sb3I6IGdldHNsaWRlQ29sb3JcclxuICAgIH0pO1xyXG5cclxuICAgICQoJy5idG4nKS5jc3Moe1xyXG4gICAgICBjb2xvcjogZ2V0c2xpZGVDb2xvclxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICB2YXIgc2xpZGVJdGVtID0gJCgnLnNsaWRlJyksXHJcbiAgICBzbGlkZUN1cnJlbnRJdGVtID0gc2xpZGVJdGVtLmZpbHRlcignLmFjdGl2ZScpO1xyXG5cclxuICAkKCcjbmV4dCcpLm9uKCdjbGljaycsIGZ1bmN0aW9uKGUpIHtcclxuICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICB2YXIgbmV4dEl0ZW0gPSBzbGlkZUN1cnJlbnRJdGVtLm5leHQoKTtcclxuXHJcbiAgICBzbGlkZUN1cnJlbnRJdGVtLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTtcclxuXHJcbiAgICBpZiAobmV4dEl0ZW0ubGVuZ3RoKSB7XHJcblxyXG4gICAgICBzbGlkZUN1cnJlbnRJdGVtID0gbmV4dEl0ZW0uYWRkQ2xhc3MoJ2FjdGl2ZScpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2xpZGVDdXJyZW50SXRlbSA9IHNsaWRlSXRlbS5maXJzdCgpLmFkZENsYXNzKCdhY3RpdmUnKTtcclxuICAgIH1cclxuXHJcbiAgICBjYWxjc2xpZGVIZWlnaHQoKTtcclxuICAgIGFuaW1hdGVDb250ZW50Q29sb3IoKTtcclxuICB9KTtcclxuXHJcbiAgJCgnI3ByZXYnKS5vbignY2xpY2snLCBmdW5jdGlvbihlKSB7XHJcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgdmFyIHByZXZJdGVtID0gc2xpZGVDdXJyZW50SXRlbS5wcmV2KCk7XHJcblxyXG4gICAgc2xpZGVDdXJyZW50SXRlbS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7XHJcblxyXG4gICAgaWYgKHByZXZJdGVtLmxlbmd0aCkge1xyXG4gICAgICBzbGlkZUN1cnJlbnRJdGVtID0gcHJldkl0ZW0uYWRkQ2xhc3MoJ2FjdGl2ZScpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2xpZGVDdXJyZW50SXRlbSA9IHNsaWRlSXRlbS5sYXN0KCkuYWRkQ2xhc3MoJ2FjdGl2ZScpO1xyXG4gICAgfVxyXG5cclxuICAgIGNhbGNzbGlkZUhlaWdodCgpO1xyXG4gICAgYW5pbWF0ZUNvbnRlbnRDb2xvcigpO1xyXG4gIH0pO1xyXG5cclxuICAvLyBSaXBwbGVcclxuICAkKCdbcmlwcGxlXScpLm9uKCdjbGljaycsIGZ1bmN0aW9uKGUpIHtcclxuICAgIHZhciByaXBwbGVEaXYgPSAkKCc8ZGl2IGNsYXNzPVwicmlwcGxlXCIgLz4nKSxcclxuICAgICAgcmlwcGxlU2l6ZSA9IDYwLFxyXG4gICAgICByaXBwbGVPZmZzZXQgPSAkKHRoaXMpLm9mZnNldCgpLFxyXG4gICAgICByaXBwbGVZID0gZS5wYWdlWSAtIHJpcHBsZU9mZnNldC50b3AsXHJcbiAgICAgIHJpcHBsZVggPSBlLnBhZ2VYIC0gcmlwcGxlT2Zmc2V0LmxlZnQsXHJcbiAgICAgIHJpcHBsZSA9ICQoJy5yaXBwbGUnKTtcclxuXHJcbiAgICByaXBwbGVEaXYuY3NzKHtcclxuICAgICAgdG9wOiByaXBwbGVZIC0gKHJpcHBsZVNpemUgLyAyKSxcclxuICAgICAgbGVmdDogcmlwcGxlWCAtIChyaXBwbGVTaXplIC8gMiksXHJcbiAgICAgIGJhY2tncm91bmQ6ICQodGhpcykuYXR0cihcInJpcHBsZS1jb2xvclwiKVxyXG4gICAgfSkuYXBwZW5kVG8oJCh0aGlzKSk7XHJcblxyXG4gICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XHJcbiAgICAgIHJpcHBsZURpdi5yZW1vdmUoKTtcclxuICAgIH0sIDE5MDApO1xyXG4gIH0pO1xyXG59KTtcclxuLy8gU1RSSVBFIENIRUNLT1VUXHJcbiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCl7XHJcbiAgICB2YXIgcGsgPSAkKCcjY2hlY2tvdXQtYnV0dG9uJykuYXR0cignZGF0YS1waycpO1xyXG4gICAgdmFyIHNlc3Npb25faWQgPSAkKCcjY2hlY2tvdXQtYnV0dG9uJykuYXR0cignZGF0YS1pZCcpO1xyXG4gICAgaWYocGspe1xyXG4gICAgICAgIHZhciBzdHJpcGUgPSBTdHJpcGUocGspO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBjaGVja291dEJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjaGVja291dC1idXR0b24nKTtcclxuICAgIGlmKGNoZWNrb3V0QnV0dG9uKXtcclxuICAgIGNoZWNrb3V0QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIC8vIFdoZW4gdGhlIGN1c3RvbWVyIGNsaWNrcyBvbiB0aGUgYnV0dG9uLCByZWRpcmVjdFxyXG4gICAgICAgIC8vIHRoZW0gdG8gQ2hlY2tvdXQuXHJcbiAgICAgICAgc3RyaXBlLnJlZGlyZWN0VG9DaGVja291dCh7XHJcbiAgICAgICAgICAgIHNlc3Npb25JZDogc2Vzc2lvbl9pZFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkge1xyXG4gICAgICAgICAgICBpZiAocmVzdWx0LmVycm9yKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBJZiBgcmVkaXJlY3RUb0NoZWNrb3V0YCBmYWlscyBkdWUgdG8gYSBicm93c2VyIG9yIG5ldHdvcmtcclxuICAgICAgICAgICAgICAgIC8vIGVycm9yLCBkaXNwbGF5IHRoZSBsb2NhbGl6ZWQgZXJyb3IgbWVzc2FnZSB0byB5b3VyIGN1c3RvbWVyLlxyXG4gICAgICAgICAgICAgICAgdmFyIGRpc3BsYXlFcnJvciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdlcnJvci1tZXNzYWdlJyk7XHJcbiAgICAgICAgICAgICAgICBkaXNwbGF5RXJyb3IudGV4dENvbnRlbnQgPSByZXN1bHQuZXJyb3IubWVzc2FnZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgICBcclxuICB9XHJcbn0pO1xyXG5cclxuXHJcbmlmKGlubmVyV2lkdGggPCA3Njgpe1xyXG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibmF2YmFyLWNvbnRhY3RcIikuaW5uZXJIVE1MID0gYDxpIGNsYXNzPVwiZmFzIGZhLXBhcGVyLXBsYW5lICB0ZXh0LWxpZ2h0XCI+PC9pPiBDb250YWN0ZXotbm91c2A7XHJcbn1cclxuXHJcbndpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsICgpID0+IHtcclxuICBpZihpbm5lcldpZHRoIDwgNzY4KXtcclxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibmF2YmFyLWNvbnRhY3RcIikuaW5uZXJIVE1MID0gYDxpIGNsYXNzPVwiZmFzIGZhLXBhcGVyLXBsYW5lICB0ZXh0LWxpZ2h0XCI+PC9pPiBDb250YWN0ZXotbm91c2A7XHJcbiAgfSBlbHNlIHtcclxuICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibmF2YmFyLWNvbnRhY3RcIikuaW5uZXJIVE1MID0gYDxpIGNsYXNzPVwiZmFzIGZhLXBhcGVyLXBsYW5lICB0ZXh0LWxpZ2h0XCI+PC9pPmA7XHJcbiAgfVxyXG59KSJdLCJzb3VyY2VSb290IjoiIn0=