{"version":3,"sources":["modules/track/themes/basic/assets/js/basic.build.js"],"names":["e","t","n","r","s","o","u","a","require","i","Error","f","exports","call","length","1","module","app","loadScript","url","callback","script","document","createElement","type","src","onload","head","appendChild","on","self","top","includes","window","location","pathname","href","$","ajaxComplete","event","xhr","settings","status","search","animate","scrollTop","offset","scrollTopIcon","scrollTopAction","stop","fadeIn","fadeOut","preventDefault","$form","attr","this","formOptions","data","params","name","$input","value","append","appendTo","submit","ajaxStart","progress","start","ajaxStop","tooltip","html","trigger","onscroll","body","documentElement","querySelector","style","display","addEventListener","toggle","hide","width","stopPropagation","click","removeClass","addClass","setTimeout","last","remove","ajax","dataType","id","input","parent","find","val","newVal","hasClass","target","test","replace","querySelectorAll","forEach","block","offsetHeight","classList","add","closest","skipScroll","showBlock","hiddenEl","children","not","slideDown","toggleClass","show","slideUp","link","open","ga","linkClick","initAjaxForm","form","content","replaceWith","urgencyVal","urgencySelect","urgencyMessage","orderMulti","orderSummary","orderForm","promoCode","next","alias","checkbox","concat","checked","is","prop","matchMedia","matches","preview","containerRect","getBoundingClientRect","previewRect","Math","sign","bottom","height","position","abs","singleSpaceGroup","singleSpaceCheckbox","item","bonusesBlock","servicesInfo","as_info","services","loyalty_bonus","bonuses","innerHTML","servicesList","map","join","Number","discount_size","free_add_services_title","tabs","checkShowArrow","$tabsWrap","scrollLeft","$arrowLeft","$arrowRight","tabsWrapWidth","scrollWidth","$activeTab","activeTabWidth","offsetWidth","isMobile","navigator","userAgent","positionActive","left","urgencyOptionHours","typeOfWork","checkPPT","field","change","element","place","insertAfter","fullOrderBlock","show_all","hide_details","middleware","show_details","downloadBlock","countBlock","count","newCount","text","card","showCardBlock","messages","showMessagesBtn","resize","msgContainer","showMsgBlock","isHiddenMsgContainer","extendDeadline","callChangeDeadline","method","hours","selectHours","success","res","reload","alert","newDedlineDate","newsDedlineDate","Modal","closeModal","serviceWrapper","ctrlKey","delete_this_order","change_order_details","confirm","popup","partnerPopupEl","showModal","checkButtonsVisibility","buttons","confirmation","delete_phone_number","question","changeState","changeSelector","setListener","label","triggerLabel","slider","index","outerWidth","slick","infinite","arrows","dots","slidesToShow","prevArrow","nextArrow","responsive","breakpoint","slidesToScroll","codeIcon","codePromo","code","$temp","trim","select","execCommand","newsId","categoryMobile","category","questionItem","questionTitle","questionAnswer","categoryItem","categoryBlock","hideTabs","showTab","showCategory","itemId","first","hash","innerWidth","args","split","categoryId","tabId","activeCategoryText","slideToggle","css","instractionHeight","thisIndex","parents","focus","blur","removeAttr","keypress","String","fromCharCode","which","toUpperCase","toLowerCase","shiftKey","maxLength","clientWidth","textContent","truncatedText","clientHeight","slice","indexOf","substring","getElementById","linkElement","originalText","tempInput","copyButton","copyStatus","transition","opacity","removeChild","codeElement","starsElement","rating","parseFloat","adjustedWidth","floor","min","variableWidth","ready","lightSlider","slideMargin","loop","pager","controls","updateThumbnails","activeIndex","eq","mainSlider","gallery","enableDrag","thumbItem","onSliderLoad","el","lightGallery","selector","onAfterSlide","getCurrentSlideCount","goToSlide","ratingValue","getAttribute","ratingInput"],"mappings":"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","file":"basic.build.js","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error(\"Cannot find module '\"+o+\"'\")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o scrollTrigger) {\n scrollTopIcon.stop(true, true).fadeIn(fadeSpeed);\n } else {\n scrollTopIcon.stop(true, true).fadeOut(fadeSpeed);\n }\n };\n scrollTopAction();\n $(window).on(\"scroll\", function () {\n scrollTopAction();\n });\n scrollTopIcon.on('click', function () {\n $('html, body').animate({\n scrollTop: 0\n }, scrollSpeed);\n scrollTopIcon.fadeOut('slow');\n return false;\n });\n $(\"body\").on(\"click\", \".post-link\", function (e) {\n e.preventDefault();\n var $form = $(\"
\");\n $form.attr(\"action\", $(this).attr(\"href\"));\n $form.attr(\"method\", \"POST\");\n var formOptions = $(this).data(\"form-options\");\n if (formOptions) {\n $form.attr(formOptions);\n }\n var params = $(this).data(\"form-params\");\n for (var name in params) {\n var $input = $(\"\").attr({\n type: \"hidden\",\n name: name,\n value: params[name]\n });\n $form.append($input);\n }\n $form.appendTo(\"body\").submit();\n });\n $(document).ajaxStart(function () {\n app.progress.start();\n });\n $(document).ajaxStop(function () {\n app.progress.stop();\n });\n $(function () {\n $('[data-toggle=\"tooltip\"]').tooltip({\n html: true,\n trigger: 'hover'\n });\n });\n (function () {\n // if scroll arrow exists in DOM tree (start scrollTopFunction )\n if ($(\".scroll-to-top\").length) {\n var scrollFunction = function scrollFunction() {\n if (document.body.scrollTop > 200 || document.documentElement.scrollTop > 200) {\n document.querySelector(\".scroll-to-top\").style.display = \"flex\";\n } else {\n document.querySelector(\".scroll-to-top\").style.display = \"none\";\n }\n }; // When the user clicks on the button, scroll to the top of the document\n var topFunction = function topFunction() {\n document.body.scrollTop = 0; // For Safari\n document.documentElement.scrollTop = 0; // For Chrome, Firefox, IE and Opera\n };\n // When the user scrolls down 20px from the top of the document, show the button\n window.onscroll = function () {\n scrollFunction();\n };\n document.querySelector(\".scroll-to-top\").addEventListener(\"click\", topFunction);\n }\n })();\n\n /**\n * Scroll to the top of cart\n */\n $(document.body).on('click', '.go-to-cart', function () {\n $('html, body').animate({\n scrollTop: $(\"#cart-container\").offset().top\n }, 500);\n });\n $('.navbar-toggle').on('vclick click', function () {\n $('.evolve-left-container').toggle();\n });\n checkWidth(function () {\n $('body').on('vclick click', function () {\n $('.toll-free').hide();\n });\n });\n $('.toll-free').on('vclick click', function (e) {\n e.stopPropagation();\n });\n function checkWidth(callback) {\n if ($(window).width <= 768) {\n callback();\n }\n }\n\n /**\n * Show mobile menu\n */\n $('.material-icons.menu').on('vclick click', function () {\n $(this).hide();\n $('.navbar-collapse').fadeIn();\n $('.material-icons.menu-close').fadeIn();\n });\n\n /**\n * Close bonus popap with animation\n */\n\n $(\".btn-close, .got-it\").click(function () {\n if ($(\".bonus__popap > .bonus__popap-item\").length === 1) {\n $(\".bonus__popap\").removeClass('popap-open');\n $(\".balance-icon\").addClass(\"green\");\n setTimeout(function () {\n $(\".balance-icon\").removeClass(\"green\");\n }, 5000);\n } else {\n $(\".bonus__popap-item\").last().remove();\n }\n $.ajax({\n url: '/customers/bonus/delete-bonus-notitfications',\n type: 'POST',\n dataType: 'json',\n data: {\n id: $(this).data('id')\n }\n });\n });\n\n /**\n * Hide mobile menu\n */\n $('.material-icons.menu-close').on('vclick click', function () {\n $('.navbar-collapse').hide();\n $('.material-icons.menu').fadeIn();\n $(this).hide();\n });\n $('body').on('vclick click', '.t-number__plus, .t-number__minus', function () {\n var input = $(this).parent().find('input');\n var val = +input.val();\n var newVal = $(this).hasClass('t-number__plus') ? val + 1 : val - 1;\n input.val(newVal >= 0 ? newVal : 0);\n });\n $('body').on('input', '.t-number__input', function (e) {\n var value = e.target.value;\n if (!/^[0-9]+$/.test(value)) {\n $(this).val(value.replace(/[^\\d]/g, ''));\n }\n ;\n });\n\n /**\n * SHOW ALL / HIDE ALL BTN\n */\n (function () {\n var showBlocks = document.querySelectorAll('.js-show-block');\n var showBlockHidden = 'js-show-block_hidden';\n showBlocks.forEach(function (block) {\n if (block.offsetHeight > 100) {\n block.classList.add(showBlockHidden);\n block.closest('.js-show-all__container').querySelector('.js-show-all').style.display = 'flex';\n }\n });\n $('body').on('click', '.js-show-all', function (e, skipScroll) {\n var showBlock = $(this).closest('.js-show-all__container').find('.js-show-block');\n var hiddenEl = $('.js-show-all__el_hidden');\n if (showBlock.hasClass(showBlockHidden)) {\n showBlock.children().not(':first').slideDown(300);\n $(this).find('.js-show-text').toggleClass('js-show-text_active');\n showBlock.removeClass(showBlockHidden);\n hiddenEl.show();\n if (!skipScroll) {\n $('html, body').animate({\n scrollTop: showBlock.offset().top - 100\n }, 500);\n }\n } else {\n $(this).find('.js-show-text').toggleClass('js-show-text_active');\n showBlock.children().not(':first').slideUp(300);\n showBlock.addClass(showBlockHidden);\n hiddenEl.hide();\n }\n });\n })();\n $('.js-banner-link').on('click', function (e) {\n e.preventDefault();\n var link = $(this).attr('href');\n if (/(http(s?)):\\/\\//i.test(link)) {\n window.open(link, '_blank');\n } else {\n window.location.replace(link);\n }\n });\n app.ga.click('Onbording', 'View news', '.how-it-works');\n app.ga.click('News', 'Click on news', '#openUpdatesLink');\n app.ga.click('Pop-up personal bonuses', 'Send bonuses', '#bonusesGiftForm button');\n app.ga.linkClick('Referral program', 'Earn 50', '.js-earn-50');\n app.ga.linkClick('Personal manager', 'Contact personal manager', '.visit-link');\n app.ga.linkClick('New order', 'Order now btn', '#track-new-order');\n app.ga.linkClick('Bonuses', 'Label offer using', '#personal-offer-btn');\n app.ga.linkClick('Banners', 'Click on banner', 'a', '#t-banner_desktop', 'data-item-id');\n app.ga.linkClick('Banners', 'Click on slider', '.banner-buttons', '#t-banner_desktop', 'data-item-id');\n });\n\n /**\n * View order action\n */\n app.on('track/account/login', function () {\n app.initAjaxForm('#resetPasswordForm', function (form, content) {\n $(form).replaceWith(content);\n });\n if (!document.querySelector('.auth-clients li')) {\n $('.t-login__or').hide();\n }\n });\n\n /**\n * Recovery password action\n */\n app.on('track/account/recovery-password', function () {\n app.initAjaxForm('#recoveryPasswordForm', function (form, content) {\n $(form).replaceWith(content);\n });\n });\n\n /**\n * Order form action\n */\n app.on('track/form/index', function (e, params) {\n var orderMulti = $('.t-order-multi');\n if (orderMulti && orderMulti.length) {\n var orderSummary = $('.t-form-summary');\n var orderForm = $('.t-form');\n var promoCode = $('.t-form__promocode');\n var promoCodeInput = $('#essayform-code');\n if (promoCodeInput.val()) {\n promoCode.hide();\n promoCode.next().slideDown(400);\n }\n orderSummary.on('click', '.js-remove-service', function () {\n var alias = $(this).data('alias');\n var checkbox = orderForm.find(\"[data-field='as[\".concat(alias, \"]']\"));\n var checked = !checkbox.is(':checked');\n checkbox.prop('checked', checked);\n checkbox.trigger('change', ['remove']);\n var serviceAsDropdownArray = ['editing_flexible', 'excel_flexible', 'power_point_flexible'];\n if (serviceAsDropdownArray.includes(alias)) {\n checkbox.val(0);\n }\n });\n promoCode.on('click', function () {\n $(this).hide();\n $(this).next().slideDown(400);\n });\n if (!window.matchMedia('(max-width: 1280px)').matches && document.querySelector('.t-form-summary')) {\n var preview = document.querySelector('.t-form-summary');\n window.addEventListener('scroll', function () {\n var containerRect = document.querySelector('.t-page-container__new-order').getBoundingClientRect();\n var previewRect = preview.getBoundingClientRect();\n if (Math.sign(containerRect.top) === -1 && containerRect.bottom - previewRect.height > 0) {\n preview.style.position = 'absolute';\n preview.style.top = \"\".concat(Math.abs(containerRect.top), \"px\");\n } else if (Math.sign(containerRect.top) === 1) {\n preview.style.top = '0px';\n }\n });\n }\n\n // single-spaced radio replacement on click\n var singleSpaceGroup = $('.js-t-single-space__item');\n var singleSpaceCheckbox = $('.t-single-space__checkbox');\n singleSpaceGroup.click(function () {\n if (!$(this).find(singleSpaceCheckbox).hasClass('t-single-space__checkbox_active')) {\n $('.js-t-single-space__connect').trigger('click');\n }\n });\n $('#essayform-as-single_spaced').on('change', function () {\n var item = $(this).is(':checked') ? '.t-single-space__item_first' : '.t-single-space__item_second';\n singleSpaceCheckbox.removeClass('t-single-space__checkbox_active');\n $(item).find(singleSpaceCheckbox).addClass('t-single-space__checkbox_active');\n });\n var form = $('#of');\n form.on('calcSuccess', function (e, data) {\n var bonusesBlock = document.querySelector('.t-order-bonuses');\n var servicesInfo = data.as_info;\n var services = data.services;\n if (!/[^0-9]0.00/.test(data.loyalty_bonus)) {\n var bonuses = document.querySelector('.js-order-bonuses');\n bonusesBlock && (bonusesBlock.style.display = 'flex');\n bonuses && (bonuses.innerHTML = data.loyalty_bonus);\n } else {\n bonusesBlock && (bonusesBlock.style.display = 'none');\n }\n if (!servicesInfo && !services) {\n form.trigger('updateSummary', ['upgrade_services', '']);\n return false;\n }\n var servicesList = servicesInfo.map(function (item, value) {\n return \"
\".concat(item, \"
\");\n }).join('');\n if (Number(data.discount_size) && data.free_add_services_title) {\n servicesList += data.free_add_services_title.map(function (item, value) {\n return \"
\".concat(item, \"
\");\n }).join('');\n }\n form.trigger('updateSummary', ['upgrade_services', servicesList]);\n });\n }\n (function () {\n var tabs = document.querySelector('.t-form-tabs');\n if (tabs) {\n var checkShowArrow = function checkShowArrow() {\n if ($tabsWrap.scrollLeft() > 10) {\n $arrowLeft.show();\n } else {\n $arrowRight.show();\n }\n if ($tabsWrap.scrollLeft() + tabsWrapWidth < tabs.scrollWidth - 10) {\n $arrowRight.show();\n } else {\n $arrowLeft.show();\n }\n };\n var $activeTab = $('.t-form-tabs__item_active');\n var $tabsWrap = $('.t-form-tabs_wrap');\n var $arrowRight = $('.t-form-tabs__arrow_right');\n var $arrowLeft = $('.t-form-tabs__arrow_left');\n var tabsWrapWidth = $tabsWrap.width();\n var activeTabWidth = $activeTab.width();\n var $form = $('#of');\n if (tabs.scrollWidth > tabs.offsetWidth && $activeTab) {\n var isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|BB|PlayBook|IEMobile|Windows Phone|Kindle|Silk|Opera Mini/i.test(navigator.userAgent);\n var positionActive = $activeTab.position().left - (tabsWrapWidth - activeTabWidth) / 2;\n $tabsWrap.animate({\n scrollLeft: positionActive\n });\n if (!isMobile) {\n if ($activeTab.position().left > (tabsWrapWidth - activeTabWidth) / 2) {\n $arrowLeft.show();\n } else {\n $arrowRight.show();\n }\n if ($activeTab.position().left + activeTabWidth < tabs.scrollWidth - 35) {\n $arrowRight.show();\n } else {\n $arrowLeft.show();\n }\n $arrowLeft.on('click', function () {\n $arrowLeft.hide();\n $tabsWrap.animate({\n scrollLeft: $tabsWrap.scrollLeft() - tabs.offsetWidth\n }, 200, function () {\n checkShowArrow();\n });\n });\n $arrowRight.on('click', function () {\n $arrowRight.hide();\n $tabsWrap.animate({\n scrollLeft: $tabsWrap.scrollLeft() + tabs.offsetWidth\n }, 600, function () {\n checkShowArrow();\n });\n });\n }\n }\n $form.on('submitting', function () {\n tabs.classList.add('t-form-tabs_disabled');\n });\n $form.on('submitted', function () {\n tabs.classList.remove('t-form-tabs_disabled');\n });\n }\n app.ga.click('click', 'of_tab_switch', '.t-form-tabs__item', null, 'track_of_tab');\n })();\n (function () {\n var urgencyVal = ['1', '2', '3', '6', '12'];\n var urgencySelect = $(\"[data-field='urgency']\");\n var urgencyMessage = $('.t-form__urgency-message');\n setTimeout(function () {\n if (urgencyVal.includes($(\"[data-field='urgency'] option:selected\").attr('hours'))) {\n urgencyMessage.addClass('t-form__urgency-message_show');\n }\n }, 100);\n urgencySelect.on(\"change\", function () {\n var urgencyOptionHours = $(\"[data-field='urgency'] option:selected\").attr('hours');\n urgencyVal.includes(urgencyOptionHours);\n if (urgencyVal.includes(urgencyOptionHours)) {\n urgencyMessage.addClass('t-form__urgency-message_show');\n } else {\n urgencyMessage.removeClass('t-form__urgency-message_show');\n }\n });\n })();\n (function () {\n var form = $('#of');\n var typeOfWork = form.find('#essayform-type_of_work');\n checkPPT();\n typeOfWork.on('change', checkPPT);\n function checkPPT() {\n var alias = typeOfWork.find('option:selected').attr('data-alias');\n if (alias === 'ppt') {\n var field = form.find('.field-essayform-as-power_point_flexible');\n field.find('.form-control').val(0).change();\n field.hide();\n } else {\n form.find('.field-essayform-as-power_point_flexible').show();\n }\n }\n })();\n if ($('.field-essayform-as-ai_report').length) {\n var element = $('.field-essayform-as-ai_report').closest('.add-service_checkbox');\n var place = $('.add-service_checkbox:nth-child(2)');\n if (place.find('.field-essayform-as-ai_report').length) {\n place = $('.add-service_checkbox:nth-child(3)');\n }\n if (place !== null) {\n element.insertAfter(place);\n }\n }\n });\n\n /**\n * Order item action\n */\n app.on('track/order/item', function (e, params) {\n var body = $('body');\n\n /**\n * Show|hide order description\n */\n (function () {\n $(\".show-full-order\").click(function () {\n var fullOrderBlock = $(this).closest('.order-block').find('.full-order-item');\n if (fullOrderBlock.is(\":hidden\")) {\n $(\".order-block\").find(\".topic-descr\").addClass('full-topic-descr');\n $(\".order-block\").find(\".full-order-item\").fadeOut(300);\n $(\".order-block\").find(\".show-full-order\").removeClass('rotate');\n $(\".order-block\").find(\".show-full-order\").html(app.t.show_all + ' ');\n fullOrderBlock.fadeIn(300);\n $(this).html(app.t.hide_details + ' ');\n middleware.ga.event('Order', 'Opening order details');\n } else {\n $(\".order-block\").find(\".topic-descr\").removeClass('full-topic-descr');\n fullOrderBlock.fadeOut(300);\n $(this).html(app.t.show_details + ' ');\n }\n });\n })();\n\n /**\n * Change download button text\n */\n $('.js-download').on('click', function () {\n var downloadBlock = $(this).closest('.t-paper-download');\n var countBlock = $('.js-count-new__block');\n if (downloadBlock.hasClass('t-paper-download_downloaded')) {\n var count = $('.js-count-new');\n var numberCount = Number(count.text());\n var newCount = numberCount - 1;\n downloadBlock.removeClass('t-paper-download_downloaded');\n if (newCount) {\n count.text(newCount);\n } else {\n countBlock.remove();\n }\n }\n });\n\n /**\n * Add instruction action\n */\n\n (function () {\n $('body').on('click', '#instruction-add', function () {\n $('.t-instructions-btns').hide();\n $('#instr-form').show();\n $('#instruction-form').show();\n $('.t-instructions_confirm').find('.t-instructions__message').hide();\n $('.t-instructions_noconfirm').find('.t-instructions__position').hide();\n });\n $('body').on('click', '#instruction-add-cancel', function () {\n $('#instruction-add').show();\n $('.t-instructions-btns').show();\n $('#instruction-form').hide();\n $('.t-instructions_noconfirm').find('.t-instructions__position').show();\n $('.t-revisions').show();\n $('#add-revision-form').show();\n $('#instr-form').hide();\n });\n $('body').on('click', '#add-revision-form', function () {\n $('#add-revision-form').hide();\n $('#instruction-form').find('.t-instructions__message').hide();\n $('#instruction-form').show();\n $('.t-revisions').hide();\n });\n })();\n\n /**\n * Show/hide messages\n */\n $('.show-messages-block').on('vclick click', function () {\n var card = $('.js-card-mobile');\n var showCardBlock = $('.show-cart-block');\n $('#messages-container').toggleClass('messages-visible');\n $(this).toggleClass('open');\n if (card.is(':visible')) {\n card.hide();\n }\n if (showCardBlock.hasClass('open')) {\n showCardBlock.removeClass('open');\n }\n });\n\n /**\n * Show/hide cart\n */\n body.on('vclick click', '.show-cart-block', function (e) {\n var messages = $('#messages-container');\n var showMessagesBtn = $('.show-messages-block');\n e.stopPropagation();\n $('.js-card-mobile').toggle();\n $(this).toggleClass('open');\n if (messages.is(':visible')) {\n messages.removeClass('messages-visible');\n }\n if (showMessagesBtn.hasClass('open')) {\n showMessagesBtn.removeClass('open');\n }\n });\n $(window).resize(function () {\n var msgContainer = $('#messages-container');\n var showMsgBlock = $('.show-messages-block');\n if ($(window).width() >= 1280) {\n var isHiddenMsgContainer = $('#messages-container').is(':hidden');\n var isVisibleShowMsgBlock = $('.show-messages-block').is(':visible');\n isVisibleShowMsgBlock ? showMsgBlock.hide() : '';\n isHiddenMsgContainer ? msgContainer.show() : '';\n }\n if ($(window).width() <= 1280) {\n //msgContainer.hide();\n showMsgBlock.show();\n }\n });\n if ($(window).width() <= 1280) {\n $(document).on('vclick click', function (e) {\n var cartContainer = e.target.closest('.js-card-mobile');\n if (!cartContainer) {\n $('.js-card-mobile').hide();\n $('.show-cart-block').toggleClass('open');\n }\n });\n }\n var extendDeadline = document.querySelector('#extendDeadline');\n extendDeadline && extendDeadline.addEventListener('closeModal', function () {\n $('.add-deadline-button').removeClass(\"add-deadline-button-selected\");\n $('.new-deadline-container').removeClass(\"t-extend-modal__new-deadline_visible\");\n $('#select-deadline').removeClass(\"active\");\n $(\"#select-deadline\").val('0');\n });\n $('.add-deadline-button').click(function () {\n if (!$(this).is(':disabled')) {\n var newDedlineDate = $(this).data('deadlinedate');\n $('.add-deadline-button').removeClass(\"add-deadline-button-selected\");\n $('#select-deadline').removeClass(\"active\");\n $(\"#select-deadline\").val('0');\n $(this).addClass(\"add-deadline-button-selected\");\n $('.btn-accept-deadline').removeClass('disabled');\n $('.new-deadline-container').addClass(\"t-extend-modal__new-deadline_visible\").find('.new-deadline-block').text(newDedlineDate);\n }\n });\n $(\"#select-deadline\").change(function () {\n var newsDedlineDate = $(this).children(\"option:selected\").val();\n $('.t-extend-modal-buttons').find('.add-deadline-button').removeClass(\"add-deadline-button-selected\");\n $(this).addClass(\"active\");\n $('.btn-accept-deadline').removeClass('disabled');\n $('.new-deadline-container').addClass(\"t-extend-modal__new-deadline_visible\").find('.new-deadline-block').text(newsDedlineDate);\n if ($(\"option:selected\").val() === '0') {\n $('.new-deadline-container').removeClass(\"t-extend-modal__new-deadline_visible\");\n $('.btn-accept-deadline').addClass('disabled');\n $(this).removeClass(\"active\");\n }\n });\n $('.btn-accept-deadline').click(function () {\n if (!$(this).is(':disabled')) {\n var hours = $('.add-deadline-button-selected').val();\n var selectHours = $(\"#select-deadline option:selected\").data('id');\n if (hours && hours > 0) {\n $('.add-deadline-button').removeClass(\"add-deadline-button-selected\");\n callChangeDeadline('addDeadline', hours);\n }\n if (selectHours && selectHours > 0) {\n $('#select-deadline').removeClass(\"active\");\n callChangeDeadline('addDeadline', selectHours);\n }\n Modal(extendDeadline).closeModal();\n }\n });\n function callChangeDeadline(method, hours, selectHours) {\n $.ajax({\n url: window.location.href,\n type: 'POST',\n dataType: 'json',\n data: {\n method: method,\n hours: hours,\n selectHours: selectHours\n },\n success: function success(res) {\n if (res && res.status == 'ok') {\n location.reload();\n $('#extendDeadline').find('.close').trigger('click');\n } else {\n alert('error');\n }\n }\n });\n }\n $('#scroll_to_downloads').click(function () {\n $('html, body').animate({\n scrollTop: $(\"#downloads-list-block\").offset().top\n }, 1000);\n });\n body.on(\"submit\", \"form.cart-add-service-form\", function () {\n var serviceWrapper = $(this).closest('.t-add-services-is-waiting');\n serviceWrapper.addClass(\"t-add-services-is-loading\");\n serviceWrapper.removeClass(\".t-add-services-is-waiting\");\n app.ga.event('Add service / Paid order', $(this).data('alias') + ' ON');\n });\n body.on(\"submit\", \"form.cart-remove-service-form\", function () {\n var serviceWrapper = $(this).closest('.t-add-services-is-waiting');\n serviceWrapper.addClass(\"t-add-services-is-loading\");\n serviceWrapper.removeClass(\".t-add-services-is-waiting\");\n app.ga.event('Add service / Paid order', $(this).data('alias') + ' OFF');\n });\n\n /**\n * Scroll to feedbacks\n */\n (function () {\n $('.t-feedback__rate-now').on('click', function () {\n $('html, body').animate({\n scrollTop: $($(\"#feedback-form\")[0]).offset().top - 50\n }, 800);\n });\n })();\n app.ga.linkClick('Post Payment', 'Download preview', '.t-post-payment__download');\n });\n\n /**\n * Order list action\n */\n app.on('track/order/list', function () {\n $('body').on('click', '.order-preview-info', function (e) {\n if (!e.ctrlKey) {\n window.location = $(this).find('a.item-link').attr('href');\n }\n }).on('click', '.order-preview-close', function (e) {\n e.stopPropagation();\n var self = this;\n if (app.t.delete_this_order && app.t.change_order_details) {\n app.confirm(app.t.delete_this_order, app.t.change_order_details, function () {\n window.location.href = $(self).attr('action');\n });\n }\n });\n\n /**\n * Questionnaire send ajax form\n */\n app.initAjaxForm('#questionnaire', function (form, content) {\n $('.t-questionnaire_questions').hide();\n if (content.popup == true) {\n var partnerPopupEl = document.querySelector('#partnerPopup');\n Modal(partnerPopupEl).showModal();\n } else {\n $('.t-questionnaire_thankyou').show();\n setTimeout(function () {\n $('.t-questionnaire_thankyou').hide();\n }, 3000);\n }\n });\n app.ga.linkClick('Banners', 'Click on banner', 'a', '#t-banner_mobile', 'data-item-id');\n app.ga.linkClick('copy_order', '', '.t-order-duplicate', '.deadline-order', 'data-item-id');\n app.ga.click('Banners', 'Click on slider', '.banner-buttons', '#t-banner_mobile', 'data-item-id');\n });\n\n /**\n * Profile index action\n */\n app.on('track/profile/index', function () {\n app.ga.click('Profile', 'Change of personal information', '#profileForm button');\n app.ga.click('Profile', 'Change password', '.t-change-password__form input[type=\"submit\"]');\n app.ga.click('Profile', 'Deleted profile', '[data-target=\"#deleteModal\"]');\n app.initAjaxForm('#profileForm', function (form, content) {\n $(form).replaceWith(content);\n });\n app.initAjaxForm('#privacySafetyForm', function (form, content) {\n $(form).replaceWith(content);\n });\n app.initAjaxForm('#profileDelete', function (form, content) {\n $(form).replaceWith(content);\n });\n app.initAjaxForm('#profileRequestData', function (form, content) {\n $(form).replaceWith(content);\n });\n\n /**\n * Delete phone\n */\n (function () {\n $('body').on('click', 'a.delete-phone', deletePhone);\n function deletePhone(e) {\n e.preventDefault();\n var self = this;\n app.confirm(app.t.confirmation, app.t.delete_phone_number, function () {\n $.ajax({\n url: $(self).attr('href'),\n type: 'POST',\n dataType: 'json',\n success: function success(res) {\n if (res && res.status == 'ok') {\n $(self).parent().remove();\n checkButtonsVisibility();\n }\n }\n });\n });\n }\n function checkButtonsVisibility() {\n var buttons = $('a.delete-phone');\n if (buttons.length < 2) {\n buttons.remove();\n }\n }\n $(document).ajaxComplete(checkButtonsVisibility);\n checkButtonsVisibility();\n })();\n });\n /**\n * Referral index action\n */\n app.on('track/referral/index', function () {\n var question = $('.js-faq__question');\n question.click(function () {\n $('.js-faq__answer').slideUp();\n if ($(this).hasClass('active')) {\n question.removeClass('active');\n return;\n }\n question.removeClass('active');\n $(this).next('.js-faq__answer').slideDown();\n $(this).addClass('active');\n });\n app.ga.click('Referral program', 'Bonus Balance', '.js-referral-bonus-confirm');\n app.ga.click('Referral program', 'Send bonuses to PayPal', '.js-referral-paypal-confirm');\n app.ga.click('Referral program', 'Copy referral link', '.js-referral-copy-link');\n app.ga.click('Referral program', 'Send referral link on email', '.js-btn-email-share');\n app.ga.click('Referral program', 'Save personal card', '.js-referral-save');\n app.ga.click('Referral program', 'Print card', '.js-referral-print');\n });\n\n /**\n * View writers action\n */\n app.on('track/writer/index', function () {\n app.ga.linkClick('New order', 'Hire writer btn / My writers', '[data-role=hire-my-writer]');\n app.ga.linkClick('Testimonials', 'The choice of writer in the widget', '.t-writer-testimonials__hire-btn');\n app.ga.linkClick('Testimonials', 'View testimonials', '.t-writer-testimonials__more');\n });\n\n /**\n * View writers testimonials action\n */\n app.on('track/writer/testimonials', function () {\n app.ga.linkClick('New order', 'Hire writer btn / Testimonials', '[data-role=testimonials-hire-writer]', '#block-testimonials-list');\n });\n\n /**\n * View game action\n */\n app.on('track/game/index', function () {\n app.ga.linkClick('New order', 'Use for new order / Game', '[data-role=use-game-gift]');\n });\n\n /**\n * View form action\n */\n app.on('track/form/index', function () {\n app.ga.changeState('Add service / New order', 'input[type=checkbox]', '[data-role=track-of-service-list]');\n app.ga.changeSelector('New order', '[data-field=\"type_of_work\"]');\n app.ga.changeSelector('New order', '[data-field=\"paper_subject\"]');\n app.ga.setListener('[data-role=\"toggle-details\"]', null, 'click', function () {\n var triggerLabel = $('#form-details').is(':visible') ? 'OFF' : 'ON';\n var label = 'More details ' + triggerLabel;\n app.ga.event('Add service / New order', label);\n });\n app.ga.setListener('.t-add-service-item__input', null, 'change', function () {\n var triggerLabel = $(this).val() == 0 ? ' OFF' : ' ON';\n var label = $(this).data('alias') + triggerLabel;\n app.ga.event('Add service / New order', label);\n });\n $('#essayform-preferred_writer_id').on('input', function () {\n app.ga.event('New order', 'Choosing preferred writer');\n });\n app.ga.click('click', 'of_tab_switch', '.t-form-tabs__item', null, 'track_of_tab');\n });\n\n /**\n * View form action\n */\n app.on('track/evolve/index', function () {\n app.ga.linkClick('Bonuses', 'Add Loyalty program page', 'a', '[data-label=\"collect-gifts\"]');\n app.ga.click('Personal manager', 'Send message to personal manager', '.personal-manager__send-btn');\n });\n\n /**\n * View form action\n */\n app.on('track/payment-result/success', function () {\n app.ga.linkClick('Bonuses', 'Thankyou page offer using', '#thankyou-gift');\n });\n\n /**\n * View offer action\n */\n app.on('track/offer/index', function () {\n var slider = $('.js-offer-steps');\n var index = window.outerWidth < 500 ? 2 : 5;\n slider.slick({\n infinite: false,\n arrows: true,\n dots: false,\n slidesToShow: 5,\n prevArrow: 'arrow_left',\n nextArrow: 'arrow_right',\n responsive: [{\n breakpoint: 700,\n settings: {\n slidesToShow: 4,\n slidesToScroll: 1,\n arrows: false\n }\n }, {\n breakpoint: 480,\n settings: {\n slidesToShow: 3,\n slidesToScroll: 1,\n arrows: false\n }\n }]\n }).slick('slickGoTo', $('.t-offer__step_active').data('slick-index') - index);\n var copyTextToClipboard = function copyTextToClipboard(text) {\n var $temp = $('');\n $('body').append($temp);\n $temp.val(text).select();\n document.execCommand('copy');\n $temp.remove();\n };\n var codeIcon = $('.t-offer__code-icon');\n var codePromo = $('.t-offer__code-promo');\n var code = $('.t-offer__code');\n codeIcon.on('click', function () {\n code.addClass('t-offer__code_copied');\n copyTextToClipboard(codePromo.text().trim());\n setTimeout(function () {\n code.removeClass('t-offer__code_copied');\n }, 3000);\n });\n });\n\n /**\n * View news action\n */\n app.on('track/news/index', function () {\n $('.js-news-item').on('click', function () {\n var newsId = $(this).data('id');\n app.ga.event('News', \"News pop-up \".concat(newsId));\n });\n });\n\n /**\n * View faq action\n */\n app.on('track/faq', function () {\n var categoryMobile = $('.t-page-faq__category-item_mobile');\n var category = $('.t-page-faq__category');\n var questionItem = $('.t-page-faq__questions-item');\n var questionTitle = $('.t-page-faq__questions-title');\n var questionAnswer = $('.t-page-faq__questions-answer');\n var categoryItem = $('.t-page-faq__category-item');\n var categoryBlock = $('.t-page-faq__category-block');\n var hideTabs = function hideTabs() {\n questionItem.removeClass('active');\n questionTitle.removeClass('active');\n questionAnswer.slideUp();\n };\n var showTab = function showTab(item) {\n $(item).addClass('active');\n $(item).find('.t-page-faq__questions-title').addClass('active');\n $(item).find('.t-page-faq__questions-answer').slideDown();\n };\n var hideCategory = function hideCategory() {\n hideTabs();\n categoryItem.removeClass('active');\n categoryBlock.hide();\n };\n var showCategory = function showCategory(item) {\n if ($(item).length) {\n var itemId = $(item).attr('href');\n $(item).addClass('active');\n $(\"\".concat(itemId, \"Block\")).show();\n } else {\n categoryItem.first().addClass('active');\n categoryBlock.first().show();\n }\n };\n questionItem.on('click', function () {\n if (!$(this).hasClass('active')) {\n hideTabs();\n showTab(this);\n } else {\n hideTabs();\n }\n });\n categoryItem.on('click', function (e) {\n e.preventDefault();\n window.location.hash = this.hash;\n $(window).scrollTop(0);\n if (!$(this).hasClass('active')) {\n hideCategory();\n showCategory(this);\n if (window.innerWidth < 768) {\n categoryMobile.html($(this).html());\n category.slideUp();\n $(this).removeClass('active');\n }\n }\n });\n var hash = window.location.hash;\n if (hash) {\n var args = hash.split('&');\n var categoryId = args[0];\n var tabId = \"#\".concat(args[1]);\n showTab(tabId);\n showCategory(categoryId);\n } else {\n showCategory();\n }\n if (window.innerWidth < 768) {\n var activeCategoryText = $('.t-page-faq__category-item.active').html();\n categoryMobile.html(activeCategoryText);\n categoryMobile.on('click', function () {\n $(this).toggleClass('active');\n category.slideToggle();\n });\n }\n });\n\n //clear value for input bonus\n app.on('track', function () {\n $('#essayform-bonus').on('click focusin', function () {\n this.value = '';\n $(this).css(\"color\", \"#636A76\");\n $(this).css(\"font-size\", \"14px\");\n });\n $('#essayform-bonus').on('focusout', function () {\n this.value = value;\n $(this).css(\"color\", \"#979797\");\n $(this).css(\"font-size\", \"12px\");\n });\n });\n\n /**\n * for instraction\n */\n\n app.on('track', function () {\n var instractionHeight = $('.t-instructions__list').height();\n $('.more-text').on('click', function () {\n $('.more-text').addClass('hide');\n $('.less-text').removeClass('hide');\n $('.t-instructions_noconfirm').find('.t-instructions__list').css('height', '100%');\n $('.bg-linear').addClass('hide');\n $('.t-instructions__list').removeClass('shadow-line');\n });\n $('.less-text').on('click', function () {\n $('.less-text').addClass('hide');\n $('.more-text').removeClass('hide');\n $('.t-instructions_noconfirm').find('.t-instructions__list').css('height', '120px');\n $('.bg-linear').removeClass('hide');\n $('.t-instructions__list').addClass('shadow-line');\n });\n if (instractionHeight >= 120) {\n $('.t-instructions_noconfirm').find('.t-instructions__list').css('height', '120px');\n $('.t-instructions_noconfirm').find('.t-instructions__list').css('overflow-y', 'hidden');\n $('.t-instructions_noconfirm').find('.bg-linear').removeClass('hide');\n $('.t-instructions__list').addClass('shadow-line');\n $('.t-instructions_noconfirm').find('.show-all').removeClass('hide');\n }\n if ($(window).width() <= 768) {\n if (instractionHeight >= 163) {\n $('.t-instructions_noconfirm').find('.t-instructions__list').css('height', '163px');\n $('.t-instructions_noconfirm').find('.t-instructions__list').css('overflow-y', 'hidden');\n $('.t-instructions_noconfirm').find('.bg-linear').removeClass('hide');\n $('.t-instructions_noconfirm').find('.show-all').removeClass('hide');\n $('.less-text').on('click', function () {\n $('.t-instructions_noconfirm').find('.t-instructions__list').css('height', '163px');\n });\n }\n }\n });\n\n //feedback rating\n app.on('track', function () {\n function ratingStar(star) {\n star.click(function () {\n $('.field-feedbackform-rating .help-block').hide();\n var stars = $('.feedback-rating_flex').find('li a');\n stars.removeClass('on');\n var thisIndex = $(this).parents('li').index();\n for (var i = 0; i <= thisIndex; i++) {\n $(this).addClass('on');\n if (i <= 6) {\n $('#feedback-form').find('.t-feedback__reasons').removeClass('hide');\n } else {\n $('#feedback-form').find('.t-feedback__reasons').addClass('hide');\n }\n }\n });\n }\n $('.feedback-rating_item').on('click', function () {\n var count = $(this).attr(\"data-id\");\n $(\"#feedbackform-rating\").attr(\"value\", count);\n });\n $(function () {\n if ($('.feedback-rating_flex').length > 0) {\n ratingStar($('.feedback-rating_flex li a'));\n }\n });\n $('#feedbackform-message').on('click focus', function () {\n $('.field-feedbackform-message .help-block').hide();\n });\n $('#feedbackform-message').on('focusout blur', function () {\n $('.field-feedbackform-message .help-block').show();\n });\n });\n\n /**\n * for search\n */\n\n app.on('track', function () {\n $('#ordersfilter-order_id').focus(function () {\n $(this).data('placeholder', $(this).attr('placeholder'));\n $(this).attr('placeholder', '');\n });\n $('#ordersfilter-order_id').blur(function () {\n $(this).attr('placeholder', $(this).data('placeholder'));\n });\n var isFind = $('#ordersfilter-order_id').attr(\"data-id\");\n if (isFind === '1') {\n $('.orders__id').find('.search-btn').css('display', 'none');\n $('.orders__id').find('#remove__btn').css('display', 'block');\n } else {\n $('.orders__id').find('.search-btn').css('display', 'block');\n $('.orders__id').find('#remove__btn').css('display', 'none');\n }\n $('#remove__btn').on('click', function () {\n $('#ordersfilter-order_id').val('');\n $('#ordersfilter-order_id').attr('placeholder', $('#ordersfilter-order_id').data('placeholder'));\n $('.orders__id').find('#search__btn').show();\n $('.orders__id').find('#remove__btn').hide();\n });\n });\n\n /**\n * Order generate invoice\n */\n\n app.on('track', function () {\n $('#js-generate-invoice').on('click', function () {\n $('#js-generate-invoice').css('display', 'none');\n $('.t-order__generating').css('display', 'flex');\n setTimeout(function () {\n $('.t-order__generating').css('display', 'none');\n }, 8000);\n setTimeout(function () {\n $('#js-generate-invoice').css('display', 'flex');\n }, 38000);\n });\n });\n\n /**\n * Toggle password eye\n */\n\n app.on('track', function () {\n if ($('.passwordInput input').val() !== '') {\n $('.passwordInput input').addClass('openEye');\n } else {\n $('.passwordInput input').removeClass('openEye');\n }\n $('.passwordInput input').on('change keyup', function () {\n if ($(this).val()) {\n $(this).addClass('openEye');\n } else {\n $(this).removeClass('openEye');\n }\n });\n $('.passwordInput input').on('change keyup', function () {\n if ($('.passwordInput input').val()) {\n $('.updatePassBtns').removeAttr('disable');\n } else {\n $('.updatePassBtns').attr('disable', 'disable');\n }\n });\n $('.passwordInput input').keypress(function (e) {\n var s = String.fromCharCode(e.which);\n if (s.toUpperCase() === s && s.toLowerCase() !== s && !e.shiftKey) {\n $('.capsLock-off').addClass('cl-on');\n } else {\n $('.capsLock-off').removeClass('cl-on');\n }\n });\n $('.at-password__eye').on('click', function () {\n var input = $(this).parent('.at-password').find('input');\n $(this).toggleClass('inactive');\n if (input.attr('type') === 'password') {\n input.attr('type', 'text');\n } else {\n input.attr('type', 'password');\n }\n });\n });\n document.addEventListener('DOMContentLoaded', function () {\n var truncateTextElements = document.querySelectorAll('.topic-order-wrap-txt');\n truncateTextElements.forEach(function (element) {\n var maxLength = element.clientWidth <= 200 ? 85 : 120;\n var text = element.textContent.trim();\n var truncatedText = '';\n if (element.clientHeight > 60) {\n element.classList.add('max-height');\n if (text.length > maxLength) {\n truncatedText = text.slice(0, maxLength);\n element.innerHTML = \"\".concat(truncatedText, \"...\");\n element.classList.add('truncated');\n }\n }\n });\n });\n document.addEventListener('DOMContentLoaded', function () {\n var truncateTextElements = document.querySelectorAll('.cut-text');\n truncateTextElements.forEach(function (element) {\n var maxLength = element.clientHeight <= 57 ? 85 : 120;\n var text = element.textContent.trim();\n var truncatedText = '';\n if (element.clientHeight > 57) {\n element.classList.add('cut-someText');\n var links = element.querySelectorAll('a');\n links.forEach(function (link) {\n // Визначаємо індекс, де зустрічається слово 'pages' у тексті посилання\n var index = link.textContent.indexOf('pages');\n if (index !== -1) {\n // Обрізаємо текст до місця, де з'являється слово 'pages', включно\n link.textContent = link.textContent.substring(0, index + 'pages'.length) + '/...';\n }\n if (element.clientHeight > 57) {\n link.textContent = link.textContent.substring(0, 30) + '...';\n }\n });\n }\n });\n document.getElementById('copyButton').addEventListener('click', function () {\n var linkElement = document.getElementById('myLink');\n var url = document.getElementById('myLink').href; // Отримуємо URL посилання\n var originalText = linkElement.innerHTML; // Отримуємо URL посилання\n // Створення невидимого текстового поля\n var tempInput = document.createElement('input');\n tempInput.value = url;\n document.body.appendChild(tempInput);\n tempInput.select(); // Вибір тексту в полі\n\n var successful = document.execCommand('copy'); // Спроба копіювання\n\n if (window.innerWidth < 768) {\n linkElement.innerHTML = 'Copied';\n linkElement.classList.add(\"copyStatus\");\n setTimeout(function () {\n linkElement.innerHTML = originalText;\n linkElement.classList.remove(\"copyStatus\");\n }, 2000);\n } else {\n var copyButton = document.getElementById('copyButton');\n var copyStatus = document.getElementById('copyStatus');\n copyButton.style.transition = 'opacity 0.5s ease';\n copyStatus.style.transition = 'opacity 0.5s ease';\n copyButton.style.opacity = 0;\n copyButton.style.display = 'none';\n copyStatus.style.opacity = 1;\n copyStatus.style.display = 'block';\n\n // Возвращаем кнопку \"Копировать\" через 2 секунды\n setTimeout(function () {\n copyStatus.style.opacity = 0;\n setTimeout(function () {\n copyStatus.style.display = 'none';\n copyButton.style.display = 'block';\n setTimeout(function () {\n copyButton.style.opacity = 1;\n }, 10);\n }, 300);\n }, 2000);\n }\n document.body.removeChild(tempInput); // Видалення тимчасового поля\n });\n\n document.getElementById('myLink').addEventListener('click', function (event) {\n event.preventDefault();\n var linkElement = document.getElementById('myLink');\n var url = document.getElementById('myLink').href; // Отримуємо URL посилання\n var originalText = linkElement.innerHTML;\n var tempInput = document.createElement('input');\n tempInput.value = url;\n document.body.appendChild(tempInput);\n tempInput.select(); // Вибір тексту в полі\n\n var successful = document.execCommand('copy'); // Спроба копіювання\n\n var copyButton = document.getElementById('copyButton');\n var copyStatus = document.getElementById('copyStatus');\n if (window.innerWidth < 768) {\n linkElement.innerHTML = 'Copied';\n linkElement.classList.add(\"copyStatus\");\n setTimeout(function () {\n linkElement.innerHTML = originalText;\n linkElement.classList.remove(\"copyStatus\");\n }, 2000);\n } else {\n copyButton.style.transition = 'opacity 0.5s ease';\n copyStatus.style.transition = 'opacity 0.5s ease';\n copyButton.style.opacity = 0;\n copyButton.style.display = 'none';\n copyStatus.style.opacity = 1;\n copyStatus.style.display = 'block';\n setTimeout(function () {\n copyStatus.style.opacity = 0;\n setTimeout(function () {\n copyStatus.style.display = 'none';\n copyButton.style.display = 'block';\n setTimeout(function () {\n copyButton.style.opacity = 1;\n }, 10);\n }, 300);\n }, 2000);\n }\n document.body.removeChild(tempInput);\n });\n document.getElementById('copyCode').addEventListener('click', function () {\n var url = document.getElementById('refCode').textContent;\n var codeElement = document.getElementById('refCode');\n var originalText = codeElement.innerHTML;\n var tempInput = document.createElement('input');\n tempInput.value = url;\n document.body.appendChild(tempInput);\n tempInput.select(); // Вибір тексту в полі\n\n var successful = document.execCommand('copy'); // Спроба копіювання\n\n // Відображення статусу копіювання\n var copyButton = document.getElementById('copyCode');\n var copyStatus = document.getElementById('copyStatusCode');\n if (window.innerWidth < 768) {\n codeElement.innerHTML = 'Copied';\n codeElement.classList.add(\"copyStatus\");\n setTimeout(function () {\n codeElement.innerHTML = originalText;\n codeElement.classList.remove(\"copyStatus\");\n }, 2000);\n } else {\n copyButton.style.transition = 'opacity 0.5s ease';\n copyStatus.style.transition = 'opacity 0.5s ease';\n copyButton.style.opacity = 0;\n copyButton.style.display = 'none';\n copyStatus.style.opacity = 1;\n copyStatus.style.display = 'block';\n\n // Возвращаем кнопку \"Копировать\" через 2 секунды\n setTimeout(function () {\n copyStatus.style.opacity = 0;\n setTimeout(function () {\n copyStatus.style.display = 'none';\n copyButton.style.display = 'block';\n setTimeout(function () {\n copyButton.style.opacity = 1;\n }, 10);\n }, 300);\n }, 2000);\n }\n document.body.removeChild(tempInput); // Видалення тимчасового поля\n });\n });\n\n function updateStarRatings() {\n var starsElements = document.querySelectorAll('.stars'); // Отримуємо всі елементи з класом .stars\n\n starsElements.forEach(function (starsElement) {\n var rating = parseFloat(starsElement.textContent);\n\n // Параметри для зірок і проміжків\n var starWidth = 14; // ширина однієї зірки\n var gapWidth = 4; // ширина відступу між зірками\n var totalWidth = 86; // загальна ширина блоку (включаючи крайні відступи)\n\n // Розрахунок ширини для конкретного рейтингу\n var adjustedWidth = starWidth * rating + gapWidth * Math.floor(rating);\n if (rating === 4.5) {\n adjustedWidth = 79.9;\n } else if (rating >= 4.1 && rating < 4.2) {\n adjustedWidth = 75.4;\n } else if (rating >= 4.2 && rating < 4.3) {\n adjustedWidth = 76.0;\n } else if (rating >= 4.3 && rating < 4.4) {\n adjustedWidth = 77.6;\n } else if (rating >= 4.4 && rating < 4.5) {\n adjustedWidth = 78.6;\n } else if (rating >= 4.6 && rating < 4.7) {\n adjustedWidth = 81.2;\n } else if (rating >= 4.7 && rating < 4.8) {\n adjustedWidth = 82.0;\n } else if (rating >= 4.8 && rating < 4.9) {\n adjustedWidth = 83.0;\n } else if (rating >= 4.9 && rating < 5.0) {\n adjustedWidth = 84.2;\n } else if (rating === 4 || rating === 4.00) {\n adjustedWidth = 72.9;\n }\n if (rating >= 3.1 && rating < 3.2) {\n adjustedWidth = 57.2;\n } else if (rating >= 3.2 && rating < 3.3) {\n adjustedWidth = 58.0;\n } else if (rating >= 3.3 && rating < 3.4) {\n adjustedWidth = 60;\n } else if (rating >= 3.4 && rating < 3.5) {\n adjustedWidth = 61;\n } else if (rating >= 3.6 && rating < 3.7) {\n adjustedWidth = 63;\n } else if (rating >= 3.7 && rating < 3.8) {\n adjustedWidth = 64;\n } else if (rating >= 3.8 && rating < 3.9) {\n adjustedWidth = 65;\n } else if (rating >= 3.9 && rating < 4.0) {\n adjustedWidth = 66;\n } else if (rating === 3.5 || rating === 3.50) {\n adjustedWidth = 61.9;\n } else if (rating === 3 || rating === 3.00) {\n adjustedWidth = 53.9;\n } else if (rating >= 2.1 && rating < 2.2) {\n adjustedWidth = 39;\n } else if (rating >= 2.2 && rating < 2.3) {\n adjustedWidth = 40;\n } else if (rating >= 2.3 && rating < 2.4) {\n adjustedWidth = 42;\n } else if (rating >= 2.4 && rating < 2.5) {\n adjustedWidth = 43;\n } else if (rating >= 2.6 && rating < 2.7) {\n adjustedWidth = 45;\n } else if (rating >= 2.7 && rating < 2.8) {\n adjustedWidth = 46;\n } else if (rating >= 2.8 && rating < 2.9) {\n adjustedWidth = 47;\n } else if (rating >= 2.9 && rating < 2.0) {\n adjustedWidth = 48;\n } else if (rating === 2.5 || rating === 2.50) {\n adjustedWidth = 43;\n } else if (rating === 2 || rating === 2.00) {\n adjustedWidth = 35.9;\n } else if (rating === 1.5 || rating === 1.50) {\n adjustedWidth = 25.9;\n } else if (rating >= 1.1 && rating < 1.2) {\n adjustedWidth = 21;\n } else if (rating >= 1.2 && rating < 1.3) {\n adjustedWidth = 22;\n } else if (rating >= 1.3 && rating < 1.4) {\n adjustedWidth = 24;\n } else if (rating >= 1.4 && rating < 1.5) {\n adjustedWidth = 25;\n } else if (rating >= 1.6 && rating < 1.7) {\n adjustedWidth = 27;\n } else if (rating >= 1.7 && rating < 1.8) {\n adjustedWidth = 28;\n } else if (rating >= 1.8 && rating < 1.9) {\n adjustedWidth = 30;\n } else if (rating >= 2.9 && rating < 2.0) {\n adjustedWidth = 31;\n } else if (rating === 1 || rating === 1.00) {\n adjustedWidth = 18.9;\n } else if (rating === 0 || rating === 0.00) {\n adjustedWidth = 0;\n } else if (rating >= 0.5 && rating < 0.6) {\n adjustedWidth = 8;\n } else if (rating >= 0.1 && rating < 0.2) {\n adjustedWidth = 3;\n } else if (rating >= 0.2 && rating < 0.3) {\n adjustedWidth = 4.5;\n } else if (rating >= 0.3 && rating < 0.4) {\n adjustedWidth = 6;\n } else if (rating >= 0.4 && rating < 0.5) {\n adjustedWidth = 7.5;\n } else if (rating >= 0.6 && rating < 0.7) {\n adjustedWidth = 9;\n } else if (rating >= 0.7 && rating < 0.8) {\n adjustedWidth = 10;\n } else if (rating >= 0.8 && rating < 0.9) {\n adjustedWidth = 12;\n } else if (rating >= 0.9 && rating < 1) {\n adjustedWidth = 13;\n }\n\n // Перевірка, щоб не перевищувати максимальну ширину\n adjustedWidth = Math.min(adjustedWidth, totalWidth);\n\n // Застосування обчисленої ширини до елемента\n starsElement.style.width = \"\".concat(adjustedWidth, \"px\");\n });\n }\n\n // Викликаємо функцію для початкового налаштування\n updateStarRatings();\n function loadScript(url, callback) {\n var script = document.createElement(\"script\");\n script.type = \"text/javascript\";\n script.src = url;\n script.onload = callback;\n document.head.appendChild(script);\n }\n loadScript(\"https://cdnjs.cloudflare.com/ajax/libs/slick-carousel/1.8.1/slick.min.js\", function () {\n var slideCount = $('.filter-list').children().length;\n var sliderWidth = $('.filter-list').width();\n var slidesToShow = 6;\n if (sliderWidth < 650) {\n $('.left-arrow, .right-arrow').hide(); // ховаємо стрілки\n\n // Ініціалізуємо слайдер без нескінченної прокрутки\n // $('.filter-list').slick({\n // slidesToShow: slideCount, // Показуємо тільки наявну кількість слайдів\n // slidesToScroll: 1,\n // infinite: false, // вимикаємо нескінченність\n // arrows: false, // вимикаємо стрілки\n // variableWidth: true,\n // });\n } else {\n // Ініціалізуємо слайдер з нескінченною прокруткою\n $('.filter-list').slick({\n slidesToShow: slidesToShow,\n slidesToScroll: 1,\n infinite: true,\n prevArrow: $('.left-arrow'),\n nextArrow: $('.right-arrow'),\n variableWidth: true\n });\n }\n });\n loadScript(\"https://cdnjs.cloudflare.com/ajax/libs/lightslider/1.1.6/js/lightslider.min.js\", function () {\n $(document).ready(function () {\n if (window.innerWidth < 768) {\n $(\"#main-slider\").lightSlider({\n item: 1,\n // Кількість елементів для показу (1 для маленьких екранів)\n slideMargin: 0,\n loop: true,\n pager: true,\n // Вмикаємо круглі індикатори (пагінація)\n controls: false,\n // Вимикаємо стандартні стрілки\n responsive: [{\n breakpoint: 768,\n settings: {\n item: 1,\n // Показуємо по 1 слайду на середніх екранах\n pager: true\n }\n }, {\n breakpoint: 480,\n settings: {\n item: 1,\n // Показуємо по 1 слайду на маленьких екранах\n pager: true\n }\n }]\n });\n } else {\n // Навігаційний слайдер\n // Функція для оновлення активних мініатюр\n var updateThumbnails = function updateThumbnails(activeIndex) {\n $(\"#thumbnail-slider li\").removeClass(\"active\").eq(activeIndex).addClass(\"active\");\n $(\"#thumbnail-slider li\").css(\"display\", \"block\");\n $(\"#thumbnail-slider li\").eq(activeIndex).css(\"display\", \"none\");\n }; // Ініціалізація активного елементу при завантаженні\n // Основний слайдер\n var mainSlider = $(\"#main-slider\").lightSlider({\n gallery: false,\n item: 1,\n loop: true,\n slideMargin: 0,\n enableDrag: false,\n thumbItem: 3,\n onSliderLoad: function onSliderLoad(el) {\n el.lightGallery({\n selector: '#main-slider .lslide'\n });\n },\n onAfterSlide: function onAfterSlide(el) {\n // Оновлюємо видимість мініатюр\n updateThumbnails(el.getCurrentSlideCount() - 1);\n }\n });\n updateThumbnails(0);\n\n // При кліку на мініатюру перемикаємо основний слайд\n $(\"#thumbnail-slider li\").on(\"click\", function () {\n var index = $(this).index();\n mainSlider.goToSlide(index + 1);\n });\n var element = document.querySelector('.lSPager');\n if (element) {\n element.remove();\n }\n }\n });\n });\n var ratingDiv = document.getElementById(\"rating-value\");\n\n // Отримуємо значення з атрибута data-rating\n var ratingValue = ratingDiv.getAttribute(\"data-rating\");\n document.addEventListener(\"DOMContentLoaded\", function () {\n var ratingInput = document.querySelector(\"input[name=\\\"rating\\\"][value=\\\"\".concat(ratingValue, \"\\\"]\"));\n if (ratingInput) {\n ratingInput.checked = true;\n }\n });\n})(middleware);\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcHAiLCJvbiIsImFsbG93ZWRQYXRoIiwic2VsZiIsInRvcCIsImluY2x1ZGVzIiwid2luZG93IiwibG9jYXRpb24iLCJwYXRobmFtZSIsImhyZWYiLCIkIiwiZG9jdW1lbnQiLCJhamF4Q29tcGxldGUiLCJldmVudCIsInhociIsInNldHRpbmdzIiwic3RhdHVzIiwidXJsIiwibGVuZ3RoIiwic2VhcmNoIiwiYW5pbWF0ZSIsInNjcm9sbFRvcCIsIm9mZnNldCIsInNjcm9sbFRyaWdnZXIiLCJmYWRlU3BlZWQiLCJzY3JvbGxTcGVlZCIsInNjcm9sbFRvcEljb24iLCJzY3JvbGxUb3BBY3Rpb24iLCJzdG9wIiwiZmFkZUluIiwiZmFkZU91dCIsImUiLCJwcmV2ZW50RGVmYXVsdCIsIiRmb3JtIiwiYXR0ciIsImZvcm1PcHRpb25zIiwiZGF0YSIsInBhcmFtcyIsIm5hbWUiLCIkaW5wdXQiLCJ0eXBlIiwidmFsdWUiLCJhcHBlbmQiLCJhcHBlbmRUbyIsInN1Ym1pdCIsImFqYXhTdGFydCIsInByb2dyZXNzIiwic3RhcnQiLCJhamF4U3RvcCIsInRvb2x0aXAiLCJodG1sIiwidHJpZ2dlciIsInNjcm9sbEZ1bmN0aW9uIiwiYm9keSIsImRvY3VtZW50RWxlbWVudCIsInF1ZXJ5U2VsZWN0b3IiLCJzdHlsZSIsImRpc3BsYXkiLCJ0b3BGdW5jdGlvbiIsIm9uc2Nyb2xsIiwiYWRkRXZlbnRMaXN0ZW5lciIsInRvZ2dsZSIsImNoZWNrV2lkdGgiLCJoaWRlIiwic3RvcFByb3BhZ2F0aW9uIiwiY2FsbGJhY2siLCJ3aWR0aCIsImNsaWNrIiwicmVtb3ZlQ2xhc3MiLCJhZGRDbGFzcyIsInNldFRpbWVvdXQiLCJsYXN0IiwicmVtb3ZlIiwiYWpheCIsImRhdGFUeXBlIiwiaWQiLCJpbnB1dCIsInBhcmVudCIsImZpbmQiLCJ2YWwiLCJuZXdWYWwiLCJoYXNDbGFzcyIsInRhcmdldCIsInRlc3QiLCJyZXBsYWNlIiwic2hvd0Jsb2NrcyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJzaG93QmxvY2tIaWRkZW4iLCJmb3JFYWNoIiwiYmxvY2siLCJvZmZzZXRIZWlnaHQiLCJjbGFzc0xpc3QiLCJhZGQiLCJjbG9zZXN0Iiwic2tpcFNjcm9sbCIsInNob3dCbG9jayIsImhpZGRlbkVsIiwiY2hpbGRyZW4iLCJub3QiLCJzbGlkZURvd24iLCJ0b2dnbGVDbGFzcyIsInNob3ciLCJzbGlkZVVwIiwibGluayIsIm9wZW4iLCJnYSIsImxpbmtDbGljayIsImluaXRBamF4Rm9ybSIsImZvcm0iLCJjb250ZW50IiwicmVwbGFjZVdpdGgiLCJvcmRlck11bHRpIiwib3JkZXJTdW1tYXJ5Iiwib3JkZXJGb3JtIiwicHJvbW9Db2RlIiwicHJvbW9Db2RlSW5wdXQiLCJuZXh0IiwiYWxpYXMiLCJjaGVja2JveCIsImNvbmNhdCIsImNoZWNrZWQiLCJpcyIsInByb3AiLCJzZXJ2aWNlQXNEcm9wZG93bkFycmF5IiwibWF0Y2hNZWRpYSIsIm1hdGNoZXMiLCJwcmV2aWV3IiwiY29udGFpbmVyUmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInByZXZpZXdSZWN0IiwiTWF0aCIsInNpZ24iLCJib3R0b20iLCJoZWlnaHQiLCJwb3NpdGlvbiIsImFicyIsInNpbmdsZVNwYWNlR3JvdXAiLCJzaW5nbGVTcGFjZUNoZWNrYm94IiwiaXRlbSIsImJvbnVzZXNCbG9jayIsInNlcnZpY2VzSW5mbyIsImFzX2luZm8iLCJzZXJ2aWNlcyIsImxveWFsdHlfYm9udXMiLCJib251c2VzIiwiaW5uZXJIVE1MIiwic2VydmljZXNMaXN0IiwibWFwIiwiam9pbiIsIk51bWJlciIsImRpc2NvdW50X3NpemUiLCJmcmVlX2FkZF9zZXJ2aWNlc190aXRsZSIsInRhYnMiLCJjaGVja1Nob3dBcnJvdyIsIiR0YWJzV3JhcCIsInNjcm9sbExlZnQiLCIkYXJyb3dMZWZ0IiwiJGFycm93UmlnaHQiLCJ0YWJzV3JhcFdpZHRoIiwic2Nyb2xsV2lkdGgiLCIkYWN0aXZlVGFiIiwiYWN0aXZlVGFiV2lkdGgiLCJvZmZzZXRXaWR0aCIsImlzTW9iaWxlIiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwicG9zaXRpb25BY3RpdmUiLCJsZWZ0IiwidXJnZW5jeVZhbCIsInVyZ2VuY3lTZWxlY3QiLCJ1cmdlbmN5TWVzc2FnZSIsInVyZ2VuY3lPcHRpb25Ib3VycyIsInR5cGVPZldvcmsiLCJjaGVja1BQVCIsImZpZWxkIiwiY2hhbmdlIiwiZWxlbWVudCIsInBsYWNlIiwiaW5zZXJ0QWZ0ZXIiLCJmdWxsT3JkZXJCbG9jayIsInQiLCJzaG93X2FsbCIsImhpZGVfZGV0YWlscyIsIm1pZGRsZXdhcmUiLCJzaG93X2RldGFpbHMiLCJkb3dubG9hZEJsb2NrIiwiY291bnRCbG9jayIsImNvdW50IiwibnVtYmVyQ291bnQiLCJ0ZXh0IiwibmV3Q291bnQiLCJjYXJkIiwic2hvd0NhcmRCbG9jayIsIm1lc3NhZ2VzIiwic2hvd01lc3NhZ2VzQnRuIiwicmVzaXplIiwibXNnQ29udGFpbmVyIiwic2hvd01zZ0Jsb2NrIiwiaXNIaWRkZW5Nc2dDb250YWluZXIiLCJpc1Zpc2libGVTaG93TXNnQmxvY2siLCJjYXJ0Q29udGFpbmVyIiwiZXh0ZW5kRGVhZGxpbmUiLCJuZXdEZWRsaW5lRGF0ZSIsIm5ld3NEZWRsaW5lRGF0ZSIsImhvdXJzIiwic2VsZWN0SG91cnMiLCJjYWxsQ2hhbmdlRGVhZGxpbmUiLCJNb2RhbCIsImNsb3NlTW9kYWwiLCJtZXRob2QiLCJzdWNjZXNzIiwicmVzIiwicmVsb2FkIiwiYWxlcnQiLCJzZXJ2aWNlV3JhcHBlciIsImN0cmxLZXkiLCJkZWxldGVfdGhpc19vcmRlciIsImNoYW5nZV9vcmRlcl9kZXRhaWxzIiwiY29uZmlybSIsInBvcHVwIiwicGFydG5lclBvcHVwRWwiLCJzaG93TW9kYWwiLCJkZWxldGVQaG9uZSIsImNvbmZpcm1hdGlvbiIsImRlbGV0ZV9waG9uZV9udW1iZXIiLCJjaGVja0J1dHRvbnNWaXNpYmlsaXR5IiwiYnV0dG9ucyIsInF1ZXN0aW9uIiwiY2hhbmdlU3RhdGUiLCJjaGFuZ2VTZWxlY3RvciIsInNldExpc3RlbmVyIiwidHJpZ2dlckxhYmVsIiwibGFiZWwiLCJzbGlkZXIiLCJpbmRleCIsIm91dGVyV2lkdGgiLCJzbGljayIsImluZmluaXRlIiwiYXJyb3dzIiwiZG90cyIsInNsaWRlc1RvU2hvdyIsInByZXZBcnJvdyIsIm5leHRBcnJvdyIsInJlc3BvbnNpdmUiLCJicmVha3BvaW50Iiwic2xpZGVzVG9TY3JvbGwiLCJjb3B5VGV4dFRvQ2xpcGJvYXJkIiwiJHRlbXAiLCJzZWxlY3QiLCJleGVjQ29tbWFuZCIsImNvZGVJY29uIiwiY29kZVByb21vIiwiY29kZSIsInRyaW0iLCJuZXdzSWQiLCJjYXRlZ29yeU1vYmlsZSIsImNhdGVnb3J5IiwicXVlc3Rpb25JdGVtIiwicXVlc3Rpb25UaXRsZSIsInF1ZXN0aW9uQW5zd2VyIiwiY2F0ZWdvcnlJdGVtIiwiY2F0ZWdvcnlCbG9jayIsImhpZGVUYWJzIiwic2hvd1RhYiIsImhpZGVDYXRlZ29yeSIsInNob3dDYXRlZ29yeSIsIml0ZW1JZCIsImZpcnN0IiwiaGFzaCIsImlubmVyV2lkdGgiLCJhcmdzIiwic3BsaXQiLCJjYXRlZ29yeUlkIiwidGFiSWQiLCJhY3RpdmVDYXRlZ29yeVRleHQiLCJzbGlkZVRvZ2dsZSIsImNzcyIsImluc3RyYWN0aW9uSGVpZ2h0IiwicmF0aW5nU3RhciIsInN0YXIiLCJzdGFycyIsInRoaXNJbmRleCIsInBhcmVudHMiLCJpIiwiZm9jdXMiLCJibHVyIiwiaXNGaW5kIiwicmVtb3ZlQXR0ciIsImtleXByZXNzIiwicyIsIlN0cmluZyIsImZyb21DaGFyQ29kZSIsIndoaWNoIiwidG9VcHBlckNhc2UiLCJ0b0xvd2VyQ2FzZSIsInNoaWZ0S2V5IiwidHJ1bmNhdGVUZXh0RWxlbWVudHMiLCJtYXhMZW5ndGgiLCJjbGllbnRXaWR0aCIsInRleHRDb250ZW50IiwidHJ1bmNhdGVkVGV4dCIsImNsaWVudEhlaWdodCIsInNsaWNlIiwibGlua3MiLCJpbmRleE9mIiwic3Vic3RyaW5nIiwiZ2V0RWxlbWVudEJ5SWQiLCJsaW5rRWxlbWVudCIsIm9yaWdpbmFsVGV4dCIsInRlbXBJbnB1dCIsImNyZWF0ZUVsZW1lbnQiLCJhcHBlbmRDaGlsZCIsInN1Y2Nlc3NmdWwiLCJjb3B5QnV0dG9uIiwiY29weVN0YXR1cyIsInRyYW5zaXRpb24iLCJvcGFjaXR5IiwicmVtb3ZlQ2hpbGQiLCJjb2RlRWxlbWVudCIsInVwZGF0ZVN0YXJSYXRpbmdzIiwic3RhcnNFbGVtZW50cyIsInN0YXJzRWxlbWVudCIsInJhdGluZyIsInBhcnNlRmxvYXQiLCJzdGFyV2lkdGgiLCJnYXBXaWR0aCIsInRvdGFsV2lkdGgiLCJhZGp1c3RlZFdpZHRoIiwiZmxvb3IiLCJtaW4iLCJsb2FkU2NyaXB0Iiwic2NyaXB0Iiwic3JjIiwib25sb2FkIiwiaGVhZCIsInNsaWRlQ291bnQiLCJzbGlkZXJXaWR0aCIsInZhcmlhYmxlV2lkdGgiLCJyZWFkeSIsImxpZ2h0U2xpZGVyIiwic2xpZGVNYXJnaW4iLCJsb29wIiwicGFnZXIiLCJjb250cm9scyIsInVwZGF0ZVRodW1ibmFpbHMiLCJhY3RpdmVJbmRleCIsImVxIiwibWFpblNsaWRlciIsImdhbGxlcnkiLCJlbmFibGVEcmFnIiwidGh1bWJJdGVtIiwib25TbGlkZXJMb2FkIiwiZWwiLCJsaWdodEdhbGxlcnkiLCJzZWxlY3RvciIsIm9uQWZ0ZXJTbGlkZSIsImdldEN1cnJlbnRTbGlkZUNvdW50IiwiZ29Ub1NsaWRlIiwicmF0aW5nRGl2IiwicmF0aW5nVmFsdWUiLCJnZXRBdHRyaWJ1dGUiLCJyYXRpbmdJbnB1dCJdLCJzb3VyY2VzIjpbImZha2VfZjE4YzNlMmIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uKGFwcCkge1xuICAgIC8qKlxuICAgICAqIENvbW1vbiBzY3JpcHQgZm9yIG1vZHVsZVxuICAgICAqL1xuICAgIGFwcC5vbigndHJhY2snLCBmdW5jdGlvbigpIHtcblxuICAgICAgICB2YXIgYWxsb3dlZFBhdGggPSBbXG4gICAgICAgICAgICAnL2N1c3RvbWVycy9zdWNjZXNzLWlmcmFtZScsXG4gICAgICAgICAgICAnL2N1c3RvbWVycy93YXJuaW5nLWlmcmFtZSdcbiAgICAgICAgXTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogbm90IGFsbG93IG9wZW4gaW4gaWZyYW1lXG4gICAgICAgICAqL1xuICAgICAgICBpZiAoc2VsZiAhPT0gdG9wICYmICFhbGxvd2VkUGF0aC5pbmNsdWRlcyh3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpKSB7XG4gICAgICAgICAgICB3aW5kb3cudG9wLmxvY2F0aW9uLmhyZWYgPSB3aW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBIYW5kbGUgYWpheCBlcnJvclxuICAgICAgICAgKi9cbiAgICAgICAgJChkb2N1bWVudCkuYWpheENvbXBsZXRlKGZ1bmN0aW9uIChldmVudCwgeGhyLCBzZXR0aW5ncykge1xuICAgICAgICAgICAgaWYgKHhoci5zdGF0dXMgPT09IDUwMCkge1xuICAgICAgICAgICAgICAgIC8vIGFsZXJ0KGFwcC50LnNlcnZpY2VfdGVtcG9yYXJpbHlfdW5hdmFpbGFibGUpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBBZnRlciBhamF4IHNjcm9sbCBib2R5IHRvIGEgZmlyc3QgZXJyb3JcbiAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHNldHRpbmdzLnVybCAmJlxuICAgICAgICAgICAgICAgICQoXCJkaXYuZm9ybS1ncm91cC5oYXMtZXJyb3JcIikubGVuZ3RoICYmXG4gICAgICAgICAgICAgICAgc2V0dGluZ3MudXJsLnNlYXJjaCgnY2FsY3VsYXRlJykgPT09IC0xICYmXG4gICAgICAgICAgICAgICAgc2V0dGluZ3MudXJsLnNlYXJjaCgncGFydG5lci1xdWVzdGlvbm5haXJlJykgPT09IC0xXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAkKCdodG1sLCBib2R5JykuYW5pbWF0ZSh7XG4gICAgICAgICAgICAgICAgICAgIHNjcm9sbFRvcDogJCgkKFwiZGl2LmZvcm0tZ3JvdXAuaGFzLWVycm9yXCIpWzBdKS5vZmZzZXQoKS50b3AgLSA1MFxuICAgICAgICAgICAgICAgIH0sIDMwMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vU2Nyb2xsIHRvIHRvcFxuXG4gICAgICAgIHZhciBzY3JvbGxUcmlnZ2VyID0gNDAwLFxuICAgICAgICAgICAgZmFkZVNwZWVkID0gMzAwLFxuICAgICAgICAgICAgc2Nyb2xsU3BlZWQgPSAxNDAwLFxuICAgICAgICAgICAgc2Nyb2xsVG9wSWNvbiA9ICAkKCcjc2Nyb2xsLXRvLXRvcCcpO1xuICAgICAgICB2YXIgc2Nyb2xsVG9wQWN0aW9uID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHNjcm9sbFRvcCA9ICQod2luZG93KS5zY3JvbGxUb3AoKTtcbiAgICAgICAgICAgIGlmIChzY3JvbGxUb3AgPiBzY3JvbGxUcmlnZ2VyKSB7XG4gICAgICAgICAgICAgICAgc2Nyb2xsVG9wSWNvbi5zdG9wKHRydWUsIHRydWUpLmZhZGVJbihmYWRlU3BlZWQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBzY3JvbGxUb3BJY29uLnN0b3AodHJ1ZSwgdHJ1ZSkuZmFkZU91dChmYWRlU3BlZWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBzY3JvbGxUb3BBY3Rpb24oKTtcbiAgICAgICAgJCh3aW5kb3cpLm9uKFwic2Nyb2xsXCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNjcm9sbFRvcEFjdGlvbigpO1xuICAgICAgICB9KTtcblxuICAgICAgICBzY3JvbGxUb3BJY29uLm9uKCdjbGljaycsIGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAkKCdodG1sLCBib2R5JykuYW5pbWF0ZSh7XG4gICAgICAgICAgICAgICAgc2Nyb2xsVG9wIDogMFxuICAgICAgICAgICAgfSwgc2Nyb2xsU3BlZWQpO1xuICAgICAgICAgICAgc2Nyb2xsVG9wSWNvbi5mYWRlT3V0KCdzbG93Jyk7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH0pO1xuXG4gICAgICAgICQoXCJib2R5XCIpLm9uKFwiY2xpY2tcIiwgXCIucG9zdC1saW5rXCIsIGZ1bmN0aW9uKGUpIHtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgdmFyICRmb3JtID0gJChcIjxmb3JtPlwiKTtcbiAgICAgICAgICAgICRmb3JtLmF0dHIoXCJhY3Rpb25cIiwgJCh0aGlzKS5hdHRyKFwiaHJlZlwiKSk7XG4gICAgICAgICAgICAkZm9ybS5hdHRyKFwibWV0aG9kXCIsIFwiUE9TVFwiKTtcblxuICAgICAgICAgICAgdmFyIGZvcm1PcHRpb25zID0gJCh0aGlzKS5kYXRhKFwiZm9ybS1vcHRpb25zXCIpO1xuICAgICAgICAgICAgaWYgKGZvcm1PcHRpb25zKSB7XG4gICAgICAgICAgICAgICAgJGZvcm0uYXR0cihmb3JtT3B0aW9ucyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBwYXJhbXMgPSAkKHRoaXMpLmRhdGEoXCJmb3JtLXBhcmFtc1wiKTtcbiAgICAgICAgICAgIGZvciAodmFyIG5hbWUgaW4gcGFyYW1zKSB7XG4gICAgICAgICAgICAgICAgdmFyICRpbnB1dCA9ICQoXCI8aW5wdXQ+XCIpLmF0dHIoe1xuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcImhpZGRlblwiLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcGFyYW1zW25hbWVdXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgJGZvcm0uYXBwZW5kKCRpbnB1dCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICRmb3JtLmFwcGVuZFRvKFwiYm9keVwiKS5zdWJtaXQoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgJChkb2N1bWVudCkuYWpheFN0YXJ0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgYXBwLnByb2dyZXNzLnN0YXJ0KCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgICQoZG9jdW1lbnQpLmFqYXhTdG9wKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgYXBwLnByb2dyZXNzLnN0b3AoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgJChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAkKCdbZGF0YS10b2dnbGU9XCJ0b29sdGlwXCJdJykudG9vbHRpcCh7aHRtbDp0cnVlLCB0cmlnZ2VyOidob3Zlcid9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgLy8gaWYgc2Nyb2xsIGFycm93IGV4aXN0cyBpbiBET00gdHJlZSAoc3RhcnQgc2Nyb2xsVG9wRnVuY3Rpb24gKVxuICAgICAgICAgICAgaWYoJChcIi5zY3JvbGwtdG8tdG9wXCIpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhlIHVzZXIgc2Nyb2xscyBkb3duIDIwcHggZnJvbSB0aGUgdG9wIG9mIHRoZSBkb2N1bWVudCwgc2hvdyB0aGUgYnV0dG9uXG4gICAgICAgICAgICAgICAgd2luZG93Lm9uc2Nyb2xsID0gZnVuY3Rpb24oKSB7c2Nyb2xsRnVuY3Rpb24oKX07XG5cbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBzY3JvbGxGdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wID4gMjAwIHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgPiAyMDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuc2Nyb2xsLXRvLXRvcFwiKS5zdHlsZS5kaXNwbGF5ID0gXCJmbGV4XCI7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKFwiLnNjcm9sbC10by10b3BcIikuc3R5bGUuZGlzcGxheSA9IFwibm9uZVwiO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgLy8gV2hlbiB0aGUgdXNlciBjbGlja3Mgb24gdGhlIGJ1dHRvbiwgc2Nyb2xsIHRvIHRoZSB0b3Agb2YgdGhlIGRvY3VtZW50XG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gdG9wRnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuc2Nyb2xsVG9wID0gMDsgLy8gRm9yIFNhZmFyaVxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wID0gMDsgLy8gRm9yIENocm9tZSwgRmlyZWZveCwgSUUgYW5kIE9wZXJhXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXCIuc2Nyb2xsLXRvLXRvcFwiKS5hZGRFdmVudExpc3RlbmVyKFwiY2xpY2tcIiwgdG9wRnVuY3Rpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KCkpO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTY3JvbGwgdG8gdGhlIHRvcCBvZiBjYXJ0XG4gICAgICAgICAqL1xuICAgICAgICAkKGRvY3VtZW50LmJvZHkpLm9uKCdjbGljaycsICcuZ28tdG8tY2FydCcsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgJCgnaHRtbCwgYm9keScpLmFuaW1hdGUoe1xuICAgICAgICAgICAgICAgIHNjcm9sbFRvcDogJChcIiNjYXJ0LWNvbnRhaW5lclwiKS5vZmZzZXQoKS50b3BcbiAgICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgICQoJy5uYXZiYXItdG9nZ2xlJykub24oJ3ZjbGljayBjbGljaycsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgJCgnLmV2b2x2ZS1sZWZ0LWNvbnRhaW5lcicpLnRvZ2dsZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgY2hlY2tXaWR0aChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICQoJ2JvZHknKS5vbigndmNsaWNrIGNsaWNrJywgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgJCgnLnRvbGwtZnJlZScpLmhpZGUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgJCgnLnRvbGwtZnJlZScpLm9uKCd2Y2xpY2sgY2xpY2snLCBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9KTtcblxuICAgICAgICBmdW5jdGlvbiBjaGVja1dpZHRoKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICBpZiAoJCh3aW5kb3cpLndpZHRoIDw9IDc2OCkge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvKipcbiAgICAgICAgICogU2hvdyBtb2JpbGUgbWVudVxuICAgICAgICAgKi9cbiAgICAgICAgJCgnLm1hdGVyaWFsLWljb25zLm1lbnUnKS5vbigndmNsaWNrIGNsaWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgJCh0aGlzKS5oaWRlKCk7XG4gICAgICAgICAgICAkKCcubmF2YmFyLWNvbGxhcHNlJykuZmFkZUluKCk7XG4gICAgICAgICAgICAkKCcubWF0ZXJpYWwtaWNvbnMubWVudS1jbG9zZScpLmZhZGVJbigpO1xuICAgICAgICB9KTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogQ2xvc2UgYm9udXMgcG9wYXAgd2l0aCBhbmltYXRpb25cbiAgICAgICAgICovXG5cbiAgICAgICAgJChcIi5idG4tY2xvc2UsIC5nb3QtaXRcIikuY2xpY2soZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKCQoXCIuYm9udXNfX3BvcGFwID4gLmJvbnVzX19wb3BhcC1pdGVtXCIpLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgICQoXCIuYm9udXNfX3BvcGFwXCIpLnJlbW92ZUNsYXNzKCdwb3BhcC1vcGVuJyk7XG4gICAgICAgICAgICAgICAgJChcIi5iYWxhbmNlLWljb25cIikuYWRkQ2xhc3MoXCJncmVlblwiKTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgJChcIi5iYWxhbmNlLWljb25cIikucmVtb3ZlQ2xhc3MoXCJncmVlblwiKTtcbiAgICAgICAgICAgICAgICB9LCA1MDAwKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgJChcIi5ib251c19fcG9wYXAtaXRlbVwiKS5sYXN0KCkucmVtb3ZlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAkLmFqYXgoe1xuICAgICAgICAgICAgICAgIHVybDogJy9jdXN0b21lcnMvYm9udXMvZGVsZXRlLWJvbnVzLW5vdGl0ZmljYXRpb25zJyxcbiAgICAgICAgICAgICAgICB0eXBlOiAnUE9TVCcsXG4gICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdqc29uJyxcbiAgICAgICAgICAgICAgICBkYXRhOiB7aWQ6ICQodGhpcykuZGF0YSgnaWQnKX1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogSGlkZSBtb2JpbGUgbWVudVxuICAgICAgICAgKi9cbiAgICAgICAgJCgnLm1hdGVyaWFsLWljb25zLm1lbnUtY2xvc2UnKS5vbigndmNsaWNrIGNsaWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgJCgnLm5hdmJhci1jb2xsYXBzZScpLmhpZGUoKTtcbiAgICAgICAgICAgICQoJy5tYXRlcmlhbC1pY29ucy5tZW51JykuZmFkZUluKCk7XG4gICAgICAgICAgICAkKHRoaXMpLmhpZGUoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgJCgnYm9keScpLm9uKCd2Y2xpY2sgY2xpY2snLCAnLnQtbnVtYmVyX19wbHVzLCAudC1udW1iZXJfX21pbnVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY29uc3QgaW5wdXQgPSAkKHRoaXMpLnBhcmVudCgpLmZpbmQoJ2lucHV0Jyk7XG4gICAgICAgICAgICBjb25zdCB2YWwgPSAraW5wdXQudmFsKCk7XG4gICAgICAgICAgICBjb25zdCBuZXdWYWwgPSAkKHRoaXMpLmhhc0NsYXNzKCd0LW51bWJlcl9fcGx1cycpID8gdmFsICsgMSA6IHZhbCAtIDE7XG4gICAgICAgICAgICBpbnB1dC52YWwobmV3VmFsID49IDAgPyBuZXdWYWwgOiAwKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgJCgnYm9keScpLm9uKCdpbnB1dCcsICcudC1udW1iZXJfX2lucHV0JywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgdmFsdWUgfSA9IGUudGFyZ2V0O1xuICAgICAgICAgICAgaWYgKCEoL15bMC05XSskLy50ZXN0KHZhbHVlKSkpIHtcbiAgICAgICAgICAgICAgICAkKHRoaXMpLnZhbCh2YWx1ZS5yZXBsYWNlKC9bXlxcZF0vZywgJycpKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTSE9XIEFMTCAvIEhJREUgQUxMIEJUTlxuICAgICAgICAgKi9cbiAgICAgICAgKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgY29uc3Qgc2hvd0Jsb2NrcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5qcy1zaG93LWJsb2NrJyk7XG4gICAgICAgICAgICBjb25zdCBzaG93QmxvY2tIaWRkZW4gPSAnanMtc2hvdy1ibG9ja19oaWRkZW4nO1xuXG4gICAgICAgICAgICBzaG93QmxvY2tzLmZvckVhY2goKGJsb2NrKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGJsb2NrLm9mZnNldEhlaWdodCA+IDEwMCkge1xuICAgICAgICAgICAgICAgICAgICBibG9jay5jbGFzc0xpc3QuYWRkKHNob3dCbG9ja0hpZGRlbik7XG4gICAgICAgICAgICAgICAgICAgIGJsb2NrLmNsb3Nlc3QoJy5qcy1zaG93LWFsbF9fY29udGFpbmVyJylcbiAgICAgICAgICAgICAgICAgICAgICAgIC5xdWVyeVNlbGVjdG9yKCcuanMtc2hvdy1hbGwnKVxuICAgICAgICAgICAgICAgICAgICAgICAgLnN0eWxlLmRpc3BsYXkgPSAnZmxleCc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICQoJ2JvZHknKS5vbignY2xpY2snLCAnLmpzLXNob3ctYWxsJywgZnVuY3Rpb24oZSwgc2tpcFNjcm9sbCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNob3dCbG9jayA9ICQodGhpcykuY2xvc2VzdCgnLmpzLXNob3ctYWxsX19jb250YWluZXInKS5maW5kKCcuanMtc2hvdy1ibG9jaycpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGhpZGRlbkVsID0gJCgnLmpzLXNob3ctYWxsX19lbF9oaWRkZW4nKTtcblxuICAgICAgICAgICAgICAgIGlmIChzaG93QmxvY2suaGFzQ2xhc3Moc2hvd0Jsb2NrSGlkZGVuKSkge1xuICAgICAgICAgICAgICAgICAgICBzaG93QmxvY2suY2hpbGRyZW4oKS5ub3QoJzpmaXJzdCcpLnNsaWRlRG93bigzMDApO1xuICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJy5qcy1zaG93LXRleHQnKS50b2dnbGVDbGFzcygnanMtc2hvdy10ZXh0X2FjdGl2ZScpO1xuICAgICAgICAgICAgICAgICAgICBzaG93QmxvY2sucmVtb3ZlQ2xhc3Moc2hvd0Jsb2NrSGlkZGVuKTtcbiAgICAgICAgICAgICAgICAgICAgaGlkZGVuRWwuc2hvdygpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXNraXBTY3JvbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICQoJ2h0bWwsIGJvZHknKS5hbmltYXRlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb3A6IHNob3dCbG9jay5vZmZzZXQoKS50b3AgLSAxMDBcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIDUwMCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJy5qcy1zaG93LXRleHQnKS50b2dnbGVDbGFzcygnanMtc2hvdy10ZXh0X2FjdGl2ZScpO1xuICAgICAgICAgICAgICAgICAgICBzaG93QmxvY2suY2hpbGRyZW4oKS5ub3QoJzpmaXJzdCcpLnNsaWRlVXAoMzAwKTtcbiAgICAgICAgICAgICAgICAgICAgc2hvd0Jsb2NrLmFkZENsYXNzKHNob3dCbG9ja0hpZGRlbik7XG4gICAgICAgICAgICAgICAgICAgIGhpZGRlbkVsLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSkoKTtcblxuICAgICAgICAkKCcuanMtYmFubmVyLWxpbmsnKS5vbignY2xpY2snLCBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBjb25zdCBsaW5rID0gJCh0aGlzKS5hdHRyKCdocmVmJyk7XG4gICAgICAgICAgICBpZiAoLyhodHRwKHM/KSk6XFwvXFwvL2kudGVzdChsaW5rKSkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKGxpbmssICdfYmxhbmsnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlcGxhY2UobGluayk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGFwcC5nYS5jbGljaygnT25ib3JkaW5nJywgJ1ZpZXcgbmV3cycsICcuaG93LWl0LXdvcmtzJyk7XG4gICAgICAgIGFwcC5nYS5jbGljaygnTmV3cycsICdDbGljayBvbiBuZXdzJywgJyNvcGVuVXBkYXRlc0xpbmsnKTtcbiAgICAgICAgYXBwLmdhLmNsaWNrKCdQb3AtdXAgcGVyc29uYWwgYm9udXNlcycsICdTZW5kIGJvbnVzZXMnLCAnI2JvbnVzZXNHaWZ0Rm9ybSBidXR0b24nKTtcbiAgICAgICAgYXBwLmdhLmxpbmtDbGljaygnUmVmZXJyYWwgcHJvZ3JhbScsICdFYXJuIDUwJywgJy5qcy1lYXJuLTUwJyk7XG4gICAgICAgIGFwcC5nYS5saW5rQ2xpY2soJ1BlcnNvbmFsIG1hbmFnZXInLCAnQ29udGFjdCBwZXJzb25hbCBtYW5hZ2VyJywgJy52aXNpdC1saW5rJyk7XG4gICAgICAgIGFwcC5nYS5saW5rQ2xpY2soJ05ldyBvcmRlcicsICdPcmRlciBub3cgYnRuJywgJyN0cmFjay1uZXctb3JkZXInKTtcbiAgICAgICAgYXBwLmdhLmxpbmtDbGljaygnQm9udXNlcycsICdMYWJlbCBvZmZlciB1c2luZycsICcjcGVyc29uYWwtb2ZmZXItYnRuJyk7XG4gICAgICAgIGFwcC5nYS5saW5rQ2xpY2soJ0Jhbm5lcnMnLCAnQ2xpY2sgb24gYmFubmVyJywgJ2EnLCAnI3QtYmFubmVyX2Rlc2t0b3AnLCAnZGF0YS1pdGVtLWlkJyk7XG4gICAgICAgIGFwcC5nYS5saW5rQ2xpY2soJ0Jhbm5lcnMnLCAnQ2xpY2sgb24gc2xpZGVyJywgJy5iYW5uZXItYnV0dG9ucycsICcjdC1iYW5uZXJfZGVza3RvcCcsICdkYXRhLWl0ZW0taWQnKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFZpZXcgb3JkZXIgYWN0aW9uXG4gICAgICovXG4gICAgYXBwLm9uKCd0cmFjay9hY2NvdW50L2xvZ2luJywgZnVuY3Rpb24oKSB7XG4gICAgICAgIGFwcC5pbml0QWpheEZvcm0oJyNyZXNldFBhc3N3b3JkRm9ybScsIGZ1bmN0aW9uKGZvcm0sIGNvbnRlbnQpIHtcbiAgICAgICAgICAgICQoZm9ybSkucmVwbGFjZVdpdGgoY29udGVudCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5hdXRoLWNsaWVudHMgbGknKSkge1xuICAgICAgICAgICAgJCgnLnQtbG9naW5fX29yJykuaGlkZSgpXG4gICAgICAgIH1cbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFJlY292ZXJ5IHBhc3N3b3JkIGFjdGlvblxuICAgICAqL1xuICAgIGFwcC5vbigndHJhY2svYWNjb3VudC9yZWNvdmVyeS1wYXNzd29yZCcsIGZ1bmN0aW9uKCkge1xuICAgICAgICBhcHAuaW5pdEFqYXhGb3JtKCcjcmVjb3ZlcnlQYXNzd29yZEZvcm0nLCBmdW5jdGlvbihmb3JtLCBjb250ZW50KSB7XG4gICAgICAgICAgICAkKGZvcm0pLnJlcGxhY2VXaXRoKGNvbnRlbnQpO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIE9yZGVyIGZvcm0gYWN0aW9uXG4gICAgICovXG4gICAgYXBwLm9uKCd0cmFjay9mb3JtL2luZGV4JywgZnVuY3Rpb24oZSwgcGFyYW1zKSB7XG4gICAgICAgIGNvbnN0IG9yZGVyTXVsdGkgPSAkKCcudC1vcmRlci1tdWx0aScpO1xuICAgICAgICBpZiAob3JkZXJNdWx0aSAmJiBvcmRlck11bHRpLmxlbmd0aCkge1xuICAgICAgICAgICAgY29uc3Qgb3JkZXJTdW1tYXJ5ID0gJCgnLnQtZm9ybS1zdW1tYXJ5Jyk7XG4gICAgICAgICAgICBjb25zdCBvcmRlckZvcm0gPSAkKCcudC1mb3JtJyk7XG4gICAgICAgICAgICBjb25zdCBwcm9tb0NvZGUgPSAkKCcudC1mb3JtX19wcm9tb2NvZGUnKTtcbiAgICAgICAgICAgIGNvbnN0IHByb21vQ29kZUlucHV0ID0gJCgnI2Vzc2F5Zm9ybS1jb2RlJyk7XG5cbiAgICAgICAgICAgIGlmIChwcm9tb0NvZGVJbnB1dC52YWwoKSkge1xuICAgICAgICAgICAgICAgIHByb21vQ29kZS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgcHJvbW9Db2RlLm5leHQoKS5zbGlkZURvd24oNDAwKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgb3JkZXJTdW1tYXJ5Lm9uKCdjbGljaycsICcuanMtcmVtb3ZlLXNlcnZpY2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgYWxpYXMgPSAkKHRoaXMpLmRhdGEoJ2FsaWFzJyk7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hlY2tib3ggPSBvcmRlckZvcm0uZmluZChgW2RhdGEtZmllbGQ9J2FzWyR7YWxpYXN9XSddYCk7XG4gICAgICAgICAgICAgICAgY29uc3QgY2hlY2tlZCA9ICFjaGVja2JveC5pcygnOmNoZWNrZWQnKTtcbiAgICAgICAgICAgICAgICBjaGVja2JveC5wcm9wKCdjaGVja2VkJywgY2hlY2tlZCk7XG4gICAgICAgICAgICAgICAgY2hlY2tib3gudHJpZ2dlcignY2hhbmdlJywgWydyZW1vdmUnXSk7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VydmljZUFzRHJvcGRvd25BcnJheSA9IFsnZWRpdGluZ19mbGV4aWJsZScsICdleGNlbF9mbGV4aWJsZScsICdwb3dlcl9wb2ludF9mbGV4aWJsZSddO1xuICAgICAgICAgICAgICAgIGlmIChzZXJ2aWNlQXNEcm9wZG93bkFycmF5LmluY2x1ZGVzKGFsaWFzKSkge1xuICAgICAgICAgICAgICAgICAgICBjaGVja2JveC52YWwoMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHByb21vQ29kZS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgJCh0aGlzKS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgJCh0aGlzKS5uZXh0KCkuc2xpZGVEb3duKDQwMCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICghKHdpbmRvdy5tYXRjaE1lZGlhKCcobWF4LXdpZHRoOiAxMjgwcHgpJykubWF0Y2hlcykgJiYgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnQtZm9ybS1zdW1tYXJ5JykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBwcmV2aWV3ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnQtZm9ybS1zdW1tYXJ5Jyk7XG5cbiAgICAgICAgICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjb250YWluZXJSZWN0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnQtcGFnZS1jb250YWluZXJfX25ldy1vcmRlcicpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwcmV2aWV3UmVjdCA9IHByZXZpZXcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKE1hdGguc2lnbihjb250YWluZXJSZWN0LnRvcCkgPT09IC0xICYmIGNvbnRhaW5lclJlY3QuYm90dG9tIC0gcHJldmlld1JlY3QuaGVpZ2h0ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlldy5zdHlsZS5wb3NpdGlvbiA9ICdhYnNvbHV0ZSc7XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmV2aWV3LnN0eWxlLnRvcCA9IGAke01hdGguYWJzKGNvbnRhaW5lclJlY3QudG9wKX1weGA7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoTWF0aC5zaWduKGNvbnRhaW5lclJlY3QudG9wKSA9PT0gMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlldy5zdHlsZS50b3AgPSAnMHB4JztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBzaW5nbGUtc3BhY2VkIHJhZGlvIHJlcGxhY2VtZW50IG9uIGNsaWNrXG4gICAgICAgICAgICBjb25zdCBzaW5nbGVTcGFjZUdyb3VwID0gJCgnLmpzLXQtc2luZ2xlLXNwYWNlX19pdGVtJyk7XG4gICAgICAgICAgICBjb25zdCBzaW5nbGVTcGFjZUNoZWNrYm94ID0gJCgnLnQtc2luZ2xlLXNwYWNlX19jaGVja2JveCcpO1xuICAgICAgICAgICAgc2luZ2xlU3BhY2VHcm91cC5jbGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgaWYgKCEkKHRoaXMpLmZpbmQoc2luZ2xlU3BhY2VDaGVja2JveCkuaGFzQ2xhc3MoJ3Qtc2luZ2xlLXNwYWNlX19jaGVja2JveF9hY3RpdmUnKSkge1xuICAgICAgICAgICAgICAgICAgICAkKCcuanMtdC1zaW5nbGUtc3BhY2VfX2Nvbm5lY3QnKS50cmlnZ2VyKCdjbGljaycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAkKCcjZXNzYXlmb3JtLWFzLXNpbmdsZV9zcGFjZWQnKS5vbignY2hhbmdlJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSAkKHRoaXMpLmlzKCc6Y2hlY2tlZCcpID8gJy50LXNpbmdsZS1zcGFjZV9faXRlbV9maXJzdCcgOiAnLnQtc2luZ2xlLXNwYWNlX19pdGVtX3NlY29uZCc7XG4gICAgICAgICAgICAgICAgc2luZ2xlU3BhY2VDaGVja2JveC5yZW1vdmVDbGFzcygndC1zaW5nbGUtc3BhY2VfX2NoZWNrYm94X2FjdGl2ZScpO1xuICAgICAgICAgICAgICAgICQoaXRlbSkuZmluZChzaW5nbGVTcGFjZUNoZWNrYm94KS5hZGRDbGFzcygndC1zaW5nbGUtc3BhY2VfX2NoZWNrYm94X2FjdGl2ZScpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGZvcm0gPSAkKCcjb2YnKTtcblxuICAgICAgICAgICAgZm9ybS5vbignY2FsY1N1Y2Nlc3MnLCAoZSwgZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGJvbnVzZXNCbG9jayA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy50LW9yZGVyLWJvbnVzZXMnKTtcbiAgICAgICAgICAgICAgICBjb25zdCBzZXJ2aWNlc0luZm8gPSBkYXRhLmFzX2luZm87XG4gICAgICAgICAgICAgICAgY29uc3QgeyBzZXJ2aWNlcyB9ID0gZGF0YTtcblxuICAgICAgICAgICAgICAgIGlmICghL1teMC05XTAuMDAvLnRlc3QoZGF0YS5sb3lhbHR5X2JvbnVzKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBib251c2VzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmpzLW9yZGVyLWJvbnVzZXMnKTtcbiAgICAgICAgICAgICAgICAgICAgYm9udXNlc0Jsb2NrICYmIChib251c2VzQmxvY2suc3R5bGUuZGlzcGxheSA9ICdmbGV4Jyk7XG4gICAgICAgICAgICAgICAgICAgIGJvbnVzZXMgJiYgKGJvbnVzZXMuaW5uZXJIVE1MID0gZGF0YS5sb3lhbHR5X2JvbnVzKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBib251c2VzQmxvY2sgJiYgKGJvbnVzZXNCbG9jay5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAoIXNlcnZpY2VzSW5mbyAmJiAhc2VydmljZXMpIHtcbiAgICAgICAgICAgICAgICAgICAgZm9ybS50cmlnZ2VyKCd1cGRhdGVTdW1tYXJ5JywgWyd1cGdyYWRlX3NlcnZpY2VzJywgJyddKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGxldCBzZXJ2aWNlc0xpc3QgPSBzZXJ2aWNlc0luZm8ubWFwKChpdGVtLCB2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYDxkaXYgY2xhc3M9XCJ0LXN1bW1hcnktc2VydmljZVwiPiR7aXRlbX08c3BhbiBjbGFzcz1cImpzLXJlbW92ZS1zZXJ2aWNlXCIgZGF0YS1hbGlhcz1cIiR7c2VydmljZXNbdmFsdWVdLmFsaWFzfVwiPjwvc3Bhbj48L2Rpdj5gO1xuICAgICAgICAgICAgICAgIH0pLmpvaW4oJycpO1xuXG4gICAgICAgICAgICAgICAgaWYgKE51bWJlcihkYXRhLmRpc2NvdW50X3NpemUpICYmIGRhdGEuZnJlZV9hZGRfc2VydmljZXNfdGl0bGUpIHtcbiAgICAgICAgICAgICAgICAgICAgc2VydmljZXNMaXN0ICs9IGRhdGEuZnJlZV9hZGRfc2VydmljZXNfdGl0bGUubWFwKChpdGVtLCB2YWx1ZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGA8ZGl2IGNsYXNzPVwidC1zdW1tYXJ5LXNlcnZpY2UgdC1zdW1tYXJ5LXNlcnZpY2VfZGlzY291bnRcIj4ke2l0ZW19PC9kaXY+YDtcbiAgICAgICAgICAgICAgICAgICAgfSkuam9pbignJyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZm9ybS50cmlnZ2VyKCd1cGRhdGVTdW1tYXJ5JywgWyd1cGdyYWRlX3NlcnZpY2VzJywgc2VydmljZXNMaXN0XSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICAoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICBjb25zdCB0YWJzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnQtZm9ybS10YWJzJyk7XG5cbiAgICAgICAgICAgIGlmICh0YWJzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgJGFjdGl2ZVRhYiA9ICQoJy50LWZvcm0tdGFic19faXRlbV9hY3RpdmUnKTtcbiAgICAgICAgICAgICAgICBjb25zdCAkdGFic1dyYXAgPSAkKCcudC1mb3JtLXRhYnNfd3JhcCcpO1xuICAgICAgICAgICAgICAgIGNvbnN0ICRhcnJvd1JpZ2h0ID0gJCgnLnQtZm9ybS10YWJzX19hcnJvd19yaWdodCcpO1xuICAgICAgICAgICAgICAgIGNvbnN0ICRhcnJvd0xlZnQgPSAkKCcudC1mb3JtLXRhYnNfX2Fycm93X2xlZnQnKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0YWJzV3JhcFdpZHRoID0gJHRhYnNXcmFwLndpZHRoKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlVGFiV2lkdGggPSAkYWN0aXZlVGFiLndpZHRoKCk7XG4gICAgICAgICAgICAgICAgY29uc3QgJGZvcm0gPSAkKCcjb2YnKTtcblxuICAgICAgICAgICAgICAgIGlmICh0YWJzLnNjcm9sbFdpZHRoID4gdGFicy5vZmZzZXRXaWR0aCAmJiAkYWN0aXZlVGFiKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGlzTW9iaWxlID0gL0FuZHJvaWR8d2ViT1N8aVBob25lfGlQYWR8aVBvZHxCbGFja0JlcnJ5fEJCfFBsYXlCb29rfElFTW9iaWxlfFdpbmRvd3MgUGhvbmV8S2luZGxlfFNpbGt8T3BlcmEgTWluaS9pLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvc2l0aW9uQWN0aXZlID0gJGFjdGl2ZVRhYi5wb3NpdGlvbigpLmxlZnQgLSAodGFic1dyYXBXaWR0aCAtIGFjdGl2ZVRhYldpZHRoKSAvIDI7XG4gICAgICAgICAgICAgICAgICAgICR0YWJzV3JhcC5hbmltYXRlKHsgc2Nyb2xsTGVmdDogcG9zaXRpb25BY3RpdmUgfSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFpc01vYmlsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRhY3RpdmVUYWIucG9zaXRpb24oKS5sZWZ0ID4gKHRhYnNXcmFwV2lkdGggLSBhY3RpdmVUYWJXaWR0aCkgLyAyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFycm93TGVmdC5zaG93KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhcnJvd1JpZ2h0LnNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkYWN0aXZlVGFiLnBvc2l0aW9uKCkubGVmdCArIGFjdGl2ZVRhYldpZHRoIDwgdGFicy5zY3JvbGxXaWR0aCAtIDM1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFycm93UmlnaHQuc2hvdygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYXJyb3dMZWZ0LnNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICRhcnJvd0xlZnQub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhcnJvd0xlZnQuaGlkZSgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICR0YWJzV3JhcC5hbmltYXRlKHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsTGVmdDogJHRhYnNXcmFwLnNjcm9sbExlZnQoKSAtIHRhYnMub2Zmc2V0V2lkdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAyMDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tTaG93QXJyb3coKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgJGFycm93UmlnaHQub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICRhcnJvd1JpZ2h0LmhpZGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGFic1dyYXAuYW5pbWF0ZSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbExlZnQ6ICR0YWJzV3JhcC5zY3JvbGxMZWZ0KCkgKyB0YWJzLm9mZnNldFdpZHRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgNjAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrU2hvd0Fycm93KCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBjaGVja1Nob3dBcnJvdygpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCR0YWJzV3JhcC5zY3JvbGxMZWZ0KCkgPiAxMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgJGFycm93TGVmdC5zaG93KCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkYXJyb3dSaWdodC5zaG93KCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKCR0YWJzV3JhcC5zY3JvbGxMZWZ0KCkgKyB0YWJzV3JhcFdpZHRoIDwgdGFicy5zY3JvbGxXaWR0aCAtIDEwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkYXJyb3dSaWdodC5zaG93KCk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAkYXJyb3dMZWZ0LnNob3coKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAkZm9ybS5vbignc3VibWl0dGluZycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgdGFicy5jbGFzc0xpc3QuYWRkKCd0LWZvcm0tdGFic19kaXNhYmxlZCcpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICRmb3JtLm9uKCdzdWJtaXR0ZWQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRhYnMuY2xhc3NMaXN0LnJlbW92ZSgndC1mb3JtLXRhYnNfZGlzYWJsZWQnKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgYXBwLmdhLmNsaWNrKCdjbGljaycsICdvZl90YWJfc3dpdGNoJywgJy50LWZvcm0tdGFic19faXRlbScsIG51bGwsICd0cmFja19vZl90YWInKTtcbiAgICAgICAgfSkoKTtcbiAgICAgICAgKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGNvbnN0IHVyZ2VuY3lWYWwgPSBbJzEnLCAnMicsICczJywgJzYnLCAnMTInXTtcbiAgICAgICAgICAgIGNvbnN0IHVyZ2VuY3lTZWxlY3QgPSAkKFwiW2RhdGEtZmllbGQ9J3VyZ2VuY3knXVwiKTtcbiAgICAgICAgICAgIGNvbnN0IHVyZ2VuY3lNZXNzYWdlID0gJCgnLnQtZm9ybV9fdXJnZW5jeS1tZXNzYWdlJyk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodXJnZW5jeVZhbC5pbmNsdWRlcygkKFwiW2RhdGEtZmllbGQ9J3VyZ2VuY3knXSBvcHRpb246c2VsZWN0ZWRcIikuYXR0cignaG91cnMnKSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdXJnZW5jeU1lc3NhZ2UuYWRkQ2xhc3MoJ3QtZm9ybV9fdXJnZW5jeS1tZXNzYWdlX3Nob3cnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LCAxMDApO1xuICAgICAgICAgICAgdXJnZW5jeVNlbGVjdC5vbihcImNoYW5nZVwiLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB1cmdlbmN5T3B0aW9uSG91cnMgPSAkKFwiW2RhdGEtZmllbGQ9J3VyZ2VuY3knXSBvcHRpb246c2VsZWN0ZWRcIikuYXR0cignaG91cnMnKTtcbiAgICAgICAgICAgICAgICB1cmdlbmN5VmFsLmluY2x1ZGVzKHVyZ2VuY3lPcHRpb25Ib3Vycyk7XG4gICAgICAgICAgICAgICAgaWYgKHVyZ2VuY3lWYWwuaW5jbHVkZXModXJnZW5jeU9wdGlvbkhvdXJzKSkge1xuICAgICAgICAgICAgICAgICAgICB1cmdlbmN5TWVzc2FnZS5hZGRDbGFzcygndC1mb3JtX191cmdlbmN5LW1lc3NhZ2Vfc2hvdycpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHVyZ2VuY3lNZXNzYWdlLnJlbW92ZUNsYXNzKCd0LWZvcm1fX3VyZ2VuY3ktbWVzc2FnZV9zaG93Jyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pKCk7XG5cbiAgICAgICAgKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgY29uc3QgZm9ybSA9ICQoJyNvZicpO1xuICAgICAgICAgICAgY29uc3QgdHlwZU9mV29yayA9IGZvcm0uZmluZCgnI2Vzc2F5Zm9ybS10eXBlX29mX3dvcmsnKTtcblxuICAgICAgICAgICAgY2hlY2tQUFQoKTtcblxuICAgICAgICAgICAgdHlwZU9mV29yay5vbignY2hhbmdlJywgY2hlY2tQUFQpO1xuXG4gICAgICAgICAgICBmdW5jdGlvbiBjaGVja1BQVCgpIHtcbiAgICAgICAgICAgICAgICBsZXQgYWxpYXMgPSB0eXBlT2ZXb3JrLmZpbmQoJ29wdGlvbjpzZWxlY3RlZCcpLmF0dHIoJ2RhdGEtYWxpYXMnKTtcblxuICAgICAgICAgICAgICAgIGlmIChhbGlhcyA9PT0gJ3BwdCcpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkID0gZm9ybS5maW5kKCcuZmllbGQtZXNzYXlmb3JtLWFzLXBvd2VyX3BvaW50X2ZsZXhpYmxlJyk7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLmZpbmQoJy5mb3JtLWNvbnRyb2wnKS52YWwoMCkuY2hhbmdlKCk7XG4gICAgICAgICAgICAgICAgICAgIGZpZWxkLmhpZGUoKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBmb3JtLmZpbmQoJy5maWVsZC1lc3NheWZvcm0tYXMtcG93ZXJfcG9pbnRfZmxleGlibGUnKS5zaG93KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KSgpO1xuXG4gICAgICAgIGlmICgkKCcuZmllbGQtZXNzYXlmb3JtLWFzLWFpX3JlcG9ydCcpLmxlbmd0aCkge1xuICAgICAgICAgICAgbGV0IGVsZW1lbnQgPSAkKCcuZmllbGQtZXNzYXlmb3JtLWFzLWFpX3JlcG9ydCcpLmNsb3Nlc3QoJy5hZGQtc2VydmljZV9jaGVja2JveCcpO1xuICAgICAgICAgICAgbGV0IHBsYWNlID0gJCgnLmFkZC1zZXJ2aWNlX2NoZWNrYm94Om50aC1jaGlsZCgyKScpO1xuXG4gICAgICAgICAgICBpZiAocGxhY2UuZmluZCgnLmZpZWxkLWVzc2F5Zm9ybS1hcy1haV9yZXBvcnQnKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBwbGFjZSA9ICQoJy5hZGQtc2VydmljZV9jaGVja2JveDpudGgtY2hpbGQoMyknKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHBsYWNlICE9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgZWxlbWVudC5pbnNlcnRBZnRlcihwbGFjZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogT3JkZXIgaXRlbSBhY3Rpb25cbiAgICAgKi9cbiAgICBhcHAub24oJ3RyYWNrL29yZGVyL2l0ZW0nLCBmdW5jdGlvbihlLCBwYXJhbXMpIHtcbiAgICAgICAgdmFyIGJvZHkgPSAkKCdib2R5Jyk7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFNob3d8aGlkZSBvcmRlciBkZXNjcmlwdGlvblxuICAgICAgICAgKi9cbiAgICAgICAgKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgJChcIi5zaG93LWZ1bGwtb3JkZXJcIikuY2xpY2soZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAgICAgdmFyIGZ1bGxPcmRlckJsb2NrID0gJCh0aGlzKS5jbG9zZXN0KCcub3JkZXItYmxvY2snKS5maW5kKCcuZnVsbC1vcmRlci1pdGVtJyk7XG4gICAgICAgICAgICAgICAgaWYgKGZ1bGxPcmRlckJsb2NrLmlzKFwiOmhpZGRlblwiKSkge1xuICAgICAgICAgICAgICAgICAgICAkKFwiLm9yZGVyLWJsb2NrXCIpLmZpbmQoXCIudG9waWMtZGVzY3JcIikuYWRkQ2xhc3MoJ2Z1bGwtdG9waWMtZGVzY3InKTtcbiAgICAgICAgICAgICAgICAgICAgJChcIi5vcmRlci1ibG9ja1wiKS5maW5kKFwiLmZ1bGwtb3JkZXItaXRlbVwiKS5mYWRlT3V0KDMwMCk7XG4gICAgICAgICAgICAgICAgICAgICQoXCIub3JkZXItYmxvY2tcIikuZmluZChcIi5zaG93LWZ1bGwtb3JkZXJcIikucmVtb3ZlQ2xhc3MoJ3JvdGF0ZScpO1xuICAgICAgICAgICAgICAgICAgICAkKFwiLm9yZGVyLWJsb2NrXCIpLmZpbmQoXCIuc2hvdy1mdWxsLW9yZGVyXCIpLmh0bWwoYXBwLnQuc2hvd19hbGwgKyAnIDxzcGFuIGNsYXNzPVwiaWNvbiBpY29uLWFycm93LWRvd25cIj48L3NwYW4+Jyk7XG5cbiAgICAgICAgICAgICAgICAgICAgZnVsbE9yZGVyQmxvY2suZmFkZUluKDMwMCk7XG4gICAgICAgICAgICAgICAgICAgICQodGhpcykuaHRtbChhcHAudC5oaWRlX2RldGFpbHMgKycgPHNwYW4gY2xhc3M9XCJpY29uIGljb24tYXJyb3ctdXBcIj48L3NwYW4+Jyk7XG4gICAgICAgICAgICAgICAgICAgIG1pZGRsZXdhcmUuZ2EuZXZlbnQoJ09yZGVyJywgJ09wZW5pbmcgb3JkZXIgZGV0YWlscycpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgJChcIi5vcmRlci1ibG9ja1wiKS5maW5kKFwiLnRvcGljLWRlc2NyXCIpLnJlbW92ZUNsYXNzKCdmdWxsLXRvcGljLWRlc2NyJyk7XG4gICAgICAgICAgICAgICAgICAgIGZ1bGxPcmRlckJsb2NrLmZhZGVPdXQoMzAwKTtcbiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5odG1sKGFwcC50LnNob3dfZGV0YWlscyArICcgPHNwYW4gY2xhc3M9XCJpY29uIGljb24tYXJyb3ctZG93blwiPjwvc3Bhbj4nKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KSgpO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBDaGFuZ2UgZG93bmxvYWQgYnV0dG9uIHRleHRcbiAgICAgICAgICovXG4gICAgICAgICQoJy5qcy1kb3dubG9hZCcpLm9uKCdjbGljaycsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgY29uc3QgZG93bmxvYWRCbG9jayA9ICQodGhpcykuY2xvc2VzdCgnLnQtcGFwZXItZG93bmxvYWQnKTtcbiAgICAgICAgICAgIGNvbnN0IGNvdW50QmxvY2sgPSAkKCcuanMtY291bnQtbmV3X19ibG9jaycpO1xuXG4gICAgICAgICAgICBpZiAoZG93bmxvYWRCbG9jay5oYXNDbGFzcygndC1wYXBlci1kb3dubG9hZF9kb3dubG9hZGVkJykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb3VudCA9ICQoJy5qcy1jb3VudC1uZXcnKTtcbiAgICAgICAgICAgICAgICBjb25zdCBudW1iZXJDb3VudCA9IE51bWJlcihjb3VudC50ZXh0KCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0NvdW50ID0gbnVtYmVyQ291bnQgLSAxO1xuICAgICAgICAgICAgICAgIGRvd25sb2FkQmxvY2sucmVtb3ZlQ2xhc3MoJ3QtcGFwZXItZG93bmxvYWRfZG93bmxvYWRlZCcpO1xuICAgICAgICAgICAgICAgIGlmIChuZXdDb3VudCkge1xuICAgICAgICAgICAgICAgICAgICBjb3VudC50ZXh0KG5ld0NvdW50KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb3VudEJsb2NrLnJlbW92ZSgpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogQWRkIGluc3RydWN0aW9uIGFjdGlvblxuICAgICAgICAgKi9cblxuICAgICAgICAoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAkKCdib2R5Jykub24oJ2NsaWNrJywgJyNpbnN0cnVjdGlvbi1hZGQnLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAkKCcudC1pbnN0cnVjdGlvbnMtYnRucycpLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAkKCcjaW5zdHItZm9ybScpLnNob3coKTtcbiAgICAgICAgICAgICAgICAkKCcjaW5zdHJ1Y3Rpb24tZm9ybScpLnNob3coKTtcbiAgICAgICAgICAgICAgICAkKCcudC1pbnN0cnVjdGlvbnNfY29uZmlybScpLmZpbmQoJy50LWluc3RydWN0aW9uc19fbWVzc2FnZScpLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAkKCcudC1pbnN0cnVjdGlvbnNfbm9jb25maXJtJykuZmluZCgnLnQtaW5zdHJ1Y3Rpb25zX19wb3NpdGlvbicpLmhpZGUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgJCgnYm9keScpLm9uKCdjbGljaycsICcjaW5zdHJ1Y3Rpb24tYWRkLWNhbmNlbCcsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICQoJyNpbnN0cnVjdGlvbi1hZGQnKS5zaG93KCk7XG4gICAgICAgICAgICAgICAgJCgnLnQtaW5zdHJ1Y3Rpb25zLWJ0bnMnKS5zaG93KCk7XG4gICAgICAgICAgICAgICAgJCgnI2luc3RydWN0aW9uLWZvcm0nKS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgJCgnLnQtaW5zdHJ1Y3Rpb25zX25vY29uZmlybScpLmZpbmQoJy50LWluc3RydWN0aW9uc19fcG9zaXRpb24nKS5zaG93KCk7XG4gICAgICAgICAgICAgICAgJCgnLnQtcmV2aXNpb25zJykuc2hvdygpO1xuICAgICAgICAgICAgICAgICQoJyNhZGQtcmV2aXNpb24tZm9ybScpLnNob3coKTtcbiAgICAgICAgICAgICAgICAkKCcjaW5zdHItZm9ybScpLmhpZGUoKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAkKCdib2R5Jykub24oJ2NsaWNrJywgJyNhZGQtcmV2aXNpb24tZm9ybScsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgICAgICQoJyNhZGQtcmV2aXNpb24tZm9ybScpLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAkKCcjaW5zdHJ1Y3Rpb24tZm9ybScpLmZpbmQoJy50LWluc3RydWN0aW9uc19fbWVzc2FnZScpLmhpZGUoKTtcbiAgICAgICAgICAgICAgICAkKCcjaW5zdHJ1Y3Rpb24tZm9ybScpLnNob3coKTtcbiAgICAgICAgICAgICAgICAkKCcudC1yZXZpc2lvbnMnKS5oaWRlKCk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICB9KSgpO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTaG93L2hpZGUgbWVzc2FnZXNcbiAgICAgICAgICovXG4gICAgICAgICQoJy5zaG93LW1lc3NhZ2VzLWJsb2NrJykub24oJ3ZjbGljayBjbGljaycsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgY29uc3QgY2FyZCA9ICQoJy5qcy1jYXJkLW1vYmlsZScpO1xuICAgICAgICAgICAgY29uc3Qgc2hvd0NhcmRCbG9jayA9ICQoJy5zaG93LWNhcnQtYmxvY2snKTtcbiAgICAgICAgICAgICQoJyNtZXNzYWdlcy1jb250YWluZXInKS50b2dnbGVDbGFzcygnbWVzc2FnZXMtdmlzaWJsZScpO1xuICAgICAgICAgICAgJCh0aGlzKS50b2dnbGVDbGFzcygnb3BlbicpO1xuXG4gICAgICAgICAgICBpZihjYXJkLmlzKCc6dmlzaWJsZScpKSB7XG4gICAgICAgICAgICAgICAgY2FyZC5oaWRlKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZihzaG93Q2FyZEJsb2NrLmhhc0NsYXNzKCdvcGVuJykpIHtcbiAgICAgICAgICAgICAgICBzaG93Q2FyZEJsb2NrLnJlbW92ZUNsYXNzKCdvcGVuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTaG93L2hpZGUgY2FydFxuICAgICAgICAgKi9cbiAgICAgICAgYm9keS5vbigndmNsaWNrIGNsaWNrJywgJy5zaG93LWNhcnQtYmxvY2snLCBmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICBjb25zdCBtZXNzYWdlcyA9ICQoJyNtZXNzYWdlcy1jb250YWluZXInKTtcbiAgICAgICAgICAgIGNvbnN0IHNob3dNZXNzYWdlc0J0biA9ICQoJy5zaG93LW1lc3NhZ2VzLWJsb2NrJyk7XG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgJCgnLmpzLWNhcmQtbW9iaWxlJykudG9nZ2xlKCk7XG4gICAgICAgICAgICAkKHRoaXMpLnRvZ2dsZUNsYXNzKCdvcGVuJyk7XG5cbiAgICAgICAgICAgIGlmKG1lc3NhZ2VzLmlzKCc6dmlzaWJsZScpKSB7XG4gICAgICAgICAgICAgICAgbWVzc2FnZXMucmVtb3ZlQ2xhc3MoJ21lc3NhZ2VzLXZpc2libGUnKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYoc2hvd01lc3NhZ2VzQnRuLmhhc0NsYXNzKCdvcGVuJykpIHtcbiAgICAgICAgICAgICAgICBzaG93TWVzc2FnZXNCdG4ucmVtb3ZlQ2xhc3MoJ29wZW4nKVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAkKHdpbmRvdykucmVzaXplKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBtc2dDb250YWluZXIgPSAkKCcjbWVzc2FnZXMtY29udGFpbmVyJyk7XG4gICAgICAgICAgICB2YXIgc2hvd01zZ0Jsb2NrID0gJCgnLnNob3ctbWVzc2FnZXMtYmxvY2snKTtcblxuICAgICAgICAgICAgaWYgKCQod2luZG93KS53aWR0aCgpID49IDEyODApIHtcbiAgICAgICAgICAgICAgICB2YXIgaXNIaWRkZW5Nc2dDb250YWluZXIgPSAkKCcjbWVzc2FnZXMtY29udGFpbmVyJykuaXMoJzpoaWRkZW4nKTtcbiAgICAgICAgICAgICAgICB2YXIgaXNWaXNpYmxlU2hvd01zZ0Jsb2NrID0gJCgnLnNob3ctbWVzc2FnZXMtYmxvY2snKS5pcygnOnZpc2libGUnKTtcbiAgICAgICAgICAgICAgICBpc1Zpc2libGVTaG93TXNnQmxvY2sgPyBzaG93TXNnQmxvY2suaGlkZSgpIDogJyc7XG4gICAgICAgICAgICAgICAgaXNIaWRkZW5Nc2dDb250YWluZXIgPyBtc2dDb250YWluZXIuc2hvdygpIDogJyc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoJCh3aW5kb3cpLndpZHRoKCkgPD0gMTI4MCkge1xuICAgICAgICAgICAgICAgIC8vbXNnQ29udGFpbmVyLmhpZGUoKTtcbiAgICAgICAgICAgICAgICBzaG93TXNnQmxvY2suc2hvdygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoJCh3aW5kb3cpLndpZHRoKCkgPD0gMTI4MCkge1xuICAgICAgICAgICAgJChkb2N1bWVudCkub24oJ3ZjbGljayBjbGljaycsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNhcnRDb250YWluZXIgPSBlLnRhcmdldC5jbG9zZXN0KCcuanMtY2FyZC1tb2JpbGUnKTtcbiAgICAgICAgICAgICAgICBpZiAoICFjYXJ0Q29udGFpbmVyICkge1xuICAgICAgICAgICAgICAgICAgICAkKCcuanMtY2FyZC1tb2JpbGUnKS5oaWRlKCk7XG4gICAgICAgICAgICAgICAgICAgICQoJy5zaG93LWNhcnQtYmxvY2snKS50b2dnbGVDbGFzcygnb3BlbicpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIHZhciBleHRlbmREZWFkbGluZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNleHRlbmREZWFkbGluZScpO1xuICAgICAgICBleHRlbmREZWFkbGluZSAmJiBleHRlbmREZWFkbGluZS5hZGRFdmVudExpc3RlbmVyKCdjbG9zZU1vZGFsJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgJCgnLmFkZC1kZWFkbGluZS1idXR0b24nKS5yZW1vdmVDbGFzcyhcImFkZC1kZWFkbGluZS1idXR0b24tc2VsZWN0ZWRcIik7XG4gICAgICAgICAgICAkKCcubmV3LWRlYWRsaW5lLWNvbnRhaW5lcicpLnJlbW92ZUNsYXNzKFwidC1leHRlbmQtbW9kYWxfX25ldy1kZWFkbGluZV92aXNpYmxlXCIpO1xuICAgICAgICAgICAgJCgnI3NlbGVjdC1kZWFkbGluZScpLnJlbW92ZUNsYXNzKFwiYWN0aXZlXCIpO1xuICAgICAgICAgICAgJChcIiNzZWxlY3QtZGVhZGxpbmVcIikudmFsKCcwJyk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgICQoJy5hZGQtZGVhZGxpbmUtYnV0dG9uJykuY2xpY2soZnVuY3Rpb24oKXtcbiAgICAgICAgICAgIGlmKCEkKHRoaXMpLmlzKCc6ZGlzYWJsZWQnKSkge1xuICAgICAgICAgICAgICAgIHZhciBuZXdEZWRsaW5lRGF0ZSA9ICQodGhpcykuZGF0YSgnZGVhZGxpbmVkYXRlJyk7XG4gICAgICAgICAgICAgICAgJCgnLmFkZC1kZWFkbGluZS1idXR0b24nKS5yZW1vdmVDbGFzcyhcImFkZC1kZWFkbGluZS1idXR0b24tc2VsZWN0ZWRcIik7XG4gICAgICAgICAgICAgICAgJCgnI3NlbGVjdC1kZWFkbGluZScpLnJlbW92ZUNsYXNzKFwiYWN0aXZlXCIpO1xuICAgICAgICAgICAgICAgICQoXCIjc2VsZWN0LWRlYWRsaW5lXCIpLnZhbCgnMCcpO1xuICAgICAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoXCJhZGQtZGVhZGxpbmUtYnV0dG9uLXNlbGVjdGVkXCIpO1xuICAgICAgICAgICAgICAgICQoJy5idG4tYWNjZXB0LWRlYWRsaW5lJykucmVtb3ZlQ2xhc3MoJ2Rpc2FibGVkJyk7XG4gICAgICAgICAgICAgICAgJCgnLm5ldy1kZWFkbGluZS1jb250YWluZXInKS5hZGRDbGFzcyhcInQtZXh0ZW5kLW1vZGFsX19uZXctZGVhZGxpbmVfdmlzaWJsZVwiKS5maW5kKCcubmV3LWRlYWRsaW5lLWJsb2NrJykudGV4dChuZXdEZWRsaW5lRGF0ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgICQoXCIjc2VsZWN0LWRlYWRsaW5lXCIpLmNoYW5nZShmdW5jdGlvbigpe1xuICAgICAgICAgICAgdmFyIG5ld3NEZWRsaW5lRGF0ZSA9ICQodGhpcykuY2hpbGRyZW4oXCJvcHRpb246c2VsZWN0ZWRcIikudmFsKCk7XG4gICAgICAgICAgICAkKCcudC1leHRlbmQtbW9kYWwtYnV0dG9ucycpLmZpbmQoJy5hZGQtZGVhZGxpbmUtYnV0dG9uJykucmVtb3ZlQ2xhc3MoXCJhZGQtZGVhZGxpbmUtYnV0dG9uLXNlbGVjdGVkXCIpO1xuICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcyhcImFjdGl2ZVwiKTtcbiAgICAgICAgICAgICQoJy5idG4tYWNjZXB0LWRlYWRsaW5lJykucmVtb3ZlQ2xhc3MoJ2Rpc2FibGVkJyk7XG4gICAgICAgICAgICAkKCcubmV3LWRlYWRsaW5lLWNvbnRhaW5lcicpLmFkZENsYXNzKFwidC1leHRlbmQtbW9kYWxfX25ldy1kZWFkbGluZV92aXNpYmxlXCIpLmZpbmQoJy5uZXctZGVhZGxpbmUtYmxvY2snKS50ZXh0KG5ld3NEZWRsaW5lRGF0ZSk7XG4gICAgICAgICAgICBpZigkKFwib3B0aW9uOnNlbGVjdGVkXCIpLnZhbCgpID09PSAnMCcpIHtcbiAgICAgICAgICAgICAgICAkKCcubmV3LWRlYWRsaW5lLWNvbnRhaW5lcicpLnJlbW92ZUNsYXNzKFwidC1leHRlbmQtbW9kYWxfX25ldy1kZWFkbGluZV92aXNpYmxlXCIpO1xuICAgICAgICAgICAgICAgICQoJy5idG4tYWNjZXB0LWRlYWRsaW5lJykuYWRkQ2xhc3MoJ2Rpc2FibGVkJyk7XG4gICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcyhcImFjdGl2ZVwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgJCgnLmJ0bi1hY2NlcHQtZGVhZGxpbmUnKS5jbGljayhmdW5jdGlvbigpe1xuICAgICAgICAgICAgaWYoISQodGhpcykuaXMoJzpkaXNhYmxlZCcpKSB7XG4gICAgICAgICAgICAgICAgdmFyIGhvdXJzID0gJCgnLmFkZC1kZWFkbGluZS1idXR0b24tc2VsZWN0ZWQnKS52YWwoKTtcbiAgICAgICAgICAgICAgICB2YXIgc2VsZWN0SG91cnMgPSAkKFwiI3NlbGVjdC1kZWFkbGluZSBvcHRpb246c2VsZWN0ZWRcIikuZGF0YSgnaWQnKTtcblxuICAgICAgICAgICAgICAgIGlmKGhvdXJzICYmIGhvdXJzID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAkKCcuYWRkLWRlYWRsaW5lLWJ1dHRvbicpLnJlbW92ZUNsYXNzKFwiYWRkLWRlYWRsaW5lLWJ1dHRvbi1zZWxlY3RlZFwiKTtcbiAgICAgICAgICAgICAgICAgICAgY2FsbENoYW5nZURlYWRsaW5lKCdhZGREZWFkbGluZScsIGhvdXJzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYoc2VsZWN0SG91cnMgJiYgc2VsZWN0SG91cnMgPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgICQoJyNzZWxlY3QtZGVhZGxpbmUnKS5yZW1vdmVDbGFzcyhcImFjdGl2ZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgY2FsbENoYW5nZURlYWRsaW5lKCdhZGREZWFkbGluZScsIHNlbGVjdEhvdXJzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgTW9kYWwoZXh0ZW5kRGVhZGxpbmUpLmNsb3NlTW9kYWwoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgZnVuY3Rpb24gY2FsbENoYW5nZURlYWRsaW5lKG1ldGhvZCwgaG91cnMsIHNlbGVjdEhvdXJzKSB7XG4gICAgICAgICAgICAkLmFqYXgoe1xuICAgICAgICAgICAgICAgIHVybDogd2luZG93LmxvY2F0aW9uLmhyZWYsXG4gICAgICAgICAgICAgICAgdHlwZTogJ1BPU1QnLFxuICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAnanNvbicsXG4gICAgICAgICAgICAgICAgZGF0YToge21ldGhvZDogbWV0aG9kLCBob3VyczogaG91cnMsIHNlbGVjdEhvdXJzOiBzZWxlY3RIb3Vyc30sXG4gICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgICAgICBpZiAocmVzICYmIHJlcy5zdGF0dXMgPT0gJ29rJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAkKCcjZXh0ZW5kRGVhZGxpbmUnKS5maW5kKCcuY2xvc2UnKS50cmlnZ2VyKCdjbGljaycpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgYWxlcnQoJ2Vycm9yJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgICQoJyNzY3JvbGxfdG9fZG93bmxvYWRzJykuY2xpY2soZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICQoJ2h0bWwsIGJvZHknKS5hbmltYXRlKHtcbiAgICAgICAgICAgICAgICBzY3JvbGxUb3A6ICQoXCIjZG93bmxvYWRzLWxpc3QtYmxvY2tcIikub2Zmc2V0KCkudG9wXG4gICAgICAgICAgICB9LCAxMDAwKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgYm9keS5vbihcInN1Ym1pdFwiLCBcImZvcm0uY2FydC1hZGQtc2VydmljZS1mb3JtXCIsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHNlcnZpY2VXcmFwcGVyID0gJCh0aGlzKS5jbG9zZXN0KCcudC1hZGQtc2VydmljZXMtaXMtd2FpdGluZycpO1xuICAgICAgICAgICAgc2VydmljZVdyYXBwZXIuYWRkQ2xhc3MoXCJ0LWFkZC1zZXJ2aWNlcy1pcy1sb2FkaW5nXCIpO1xuICAgICAgICAgICAgc2VydmljZVdyYXBwZXIucmVtb3ZlQ2xhc3MoXCIudC1hZGQtc2VydmljZXMtaXMtd2FpdGluZ1wiKTtcbiAgICAgICAgICAgIGFwcC5nYS5ldmVudChcbiAgICAgICAgICAgICAgICAnQWRkIHNlcnZpY2UgLyBQYWlkIG9yZGVyJyxcbiAgICAgICAgICAgICAgICAkKHRoaXMpLmRhdGEoJ2FsaWFzJykgKyAnIE9OJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgYm9keS5vbihcInN1Ym1pdFwiLCBcImZvcm0uY2FydC1yZW1vdmUtc2VydmljZS1mb3JtXCIsIGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgdmFyIHNlcnZpY2VXcmFwcGVyID0gJCh0aGlzKS5jbG9zZXN0KCcudC1hZGQtc2VydmljZXMtaXMtd2FpdGluZycpO1xuICAgICAgICAgICAgc2VydmljZVdyYXBwZXIuYWRkQ2xhc3MoXCJ0LWFkZC1zZXJ2aWNlcy1pcy1sb2FkaW5nXCIpO1xuICAgICAgICAgICAgc2VydmljZVdyYXBwZXIucmVtb3ZlQ2xhc3MoXCIudC1hZGQtc2VydmljZXMtaXMtd2FpdGluZ1wiKTtcbiAgICAgICAgICAgIGFwcC5nYS5ldmVudChcbiAgICAgICAgICAgICAgICAnQWRkIHNlcnZpY2UgLyBQYWlkIG9yZGVyJyxcbiAgICAgICAgICAgICAgICAkKHRoaXMpLmRhdGEoJ2FsaWFzJykgKyAnIE9GRidcbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBTY3JvbGwgdG8gZmVlZGJhY2tzXG4gICAgICAgICAqL1xuICAgICAgICAoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAkKCcudC1mZWVkYmFja19fcmF0ZS1ub3cnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgJCgnaHRtbCwgYm9keScpLmFuaW1hdGUoe1xuICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb3A6ICQoJChcIiNmZWVkYmFjay1mb3JtXCIpWzBdKS5vZmZzZXQoKS50b3AgLSA1MFxuICAgICAgICAgICAgICAgIH0sIDgwMCk7XG4gICAgICAgICAgICB9KVxuICAgICAgICB9KSgpO1xuXG4gICAgICAgIGFwcC5nYS5saW5rQ2xpY2soJ1Bvc3QgUGF5bWVudCcsICdEb3dubG9hZCBwcmV2aWV3JywgJy50LXBvc3QtcGF5bWVudF9fZG93bmxvYWQnKVxuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogT3JkZXIgbGlzdCBhY3Rpb25cbiAgICAgKi9cbiAgICBhcHAub24oJ3RyYWNrL29yZGVyL2xpc3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICQoJ2JvZHknKS5vbignY2xpY2snLCAnLm9yZGVyLXByZXZpZXctaW5mbycsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICBpZiAoIWUuY3RybEtleSkge1xuICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbiA9ICQodGhpcykuZmluZCgnYS5pdGVtLWxpbmsnKS5hdHRyKCdocmVmJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLm9uKCdjbGljaycsICcub3JkZXItcHJldmlldy1jbG9zZScsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgICAgICAgICAgaWYgKGFwcC50LmRlbGV0ZV90aGlzX29yZGVyICYmIGFwcC50LmNoYW5nZV9vcmRlcl9kZXRhaWxzKSB7XG4gICAgICAgICAgICAgICAgYXBwLmNvbmZpcm0oYXBwLnQuZGVsZXRlX3RoaXNfb3JkZXIsIGFwcC50LmNoYW5nZV9vcmRlcl9kZXRhaWxzLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gJChzZWxmKS5hdHRyKCdhY3Rpb24nKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIFF1ZXN0aW9ubmFpcmUgc2VuZCBhamF4IGZvcm1cbiAgICAgICAgICovXG4gICAgICAgIGFwcC5pbml0QWpheEZvcm0oJyNxdWVzdGlvbm5haXJlJywgZnVuY3Rpb24oZm9ybSwgY29udGVudCkge1xuICAgICAgICAgICAgJCgnLnQtcXVlc3Rpb25uYWlyZV9xdWVzdGlvbnMnKS5oaWRlKCk7XG4gICAgICAgICAgICBpZihjb250ZW50LnBvcHVwID09IHRydWUpIHtcbiAgICAgICAgICAgICAgICB2YXIgcGFydG5lclBvcHVwRWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjcGFydG5lclBvcHVwJyk7XG4gICAgICAgICAgICAgICAgTW9kYWwocGFydG5lclBvcHVwRWwpLnNob3dNb2RhbCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAkKCcudC1xdWVzdGlvbm5haXJlX3RoYW5reW91Jykuc2hvdygpO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAkKCcudC1xdWVzdGlvbm5haXJlX3RoYW5reW91JykuaGlkZSgpO1xuICAgICAgICAgICAgICAgIH0sIDMwMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBhcHAuZ2EubGlua0NsaWNrKCdCYW5uZXJzJywgJ0NsaWNrIG9uIGJhbm5lcicsICdhJywgJyN0LWJhbm5lcl9tb2JpbGUnLCAnZGF0YS1pdGVtLWlkJyk7XG4gICAgICAgIGFwcC5nYS5saW5rQ2xpY2soJ2NvcHlfb3JkZXInLCAnJywgJy50LW9yZGVyLWR1cGxpY2F0ZScsICcuZGVhZGxpbmUtb3JkZXInLCAnZGF0YS1pdGVtLWlkJyk7XG4gICAgICAgIGFwcC5nYS5jbGljaygnQmFubmVycycsICdDbGljayBvbiBzbGlkZXInLCAnLmJhbm5lci1idXR0b25zJywgJyN0LWJhbm5lcl9tb2JpbGUnLCAnZGF0YS1pdGVtLWlkJyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBQcm9maWxlIGluZGV4IGFjdGlvblxuICAgICAqL1xuICAgIGFwcC5vbigndHJhY2svcHJvZmlsZS9pbmRleCcsIGZ1bmN0aW9uKCkge1xuXG4gICAgICAgIGFwcC5nYS5jbGljaygnUHJvZmlsZScsJ0NoYW5nZSBvZiBwZXJzb25hbCBpbmZvcm1hdGlvbicsJyNwcm9maWxlRm9ybSBidXR0b24nKTtcbiAgICAgICAgYXBwLmdhLmNsaWNrKCdQcm9maWxlJywnQ2hhbmdlIHBhc3N3b3JkJywnLnQtY2hhbmdlLXBhc3N3b3JkX19mb3JtIGlucHV0W3R5cGU9XCJzdWJtaXRcIl0nKTtcbiAgICAgICAgYXBwLmdhLmNsaWNrKCdQcm9maWxlJywnRGVsZXRlZCBwcm9maWxlJywnW2RhdGEtdGFyZ2V0PVwiI2RlbGV0ZU1vZGFsXCJdJyk7XG5cbiAgICAgICAgYXBwLmluaXRBamF4Rm9ybSgnI3Byb2ZpbGVGb3JtJywgZnVuY3Rpb24oZm9ybSwgY29udGVudCkge1xuICAgICAgICAgICAgJChmb3JtKS5yZXBsYWNlV2l0aChjb250ZW50KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgYXBwLmluaXRBamF4Rm9ybSgnI3ByaXZhY3lTYWZldHlGb3JtJywgZnVuY3Rpb24oZm9ybSwgY29udGVudCkge1xuICAgICAgICAgICAgJChmb3JtKS5yZXBsYWNlV2l0aChjb250ZW50KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgYXBwLmluaXRBamF4Rm9ybSgnI3Byb2ZpbGVEZWxldGUnLCBmdW5jdGlvbihmb3JtLCBjb250ZW50KSB7XG4gICAgICAgICAgICAkKGZvcm0pLnJlcGxhY2VXaXRoKGNvbnRlbnQpO1xuICAgICAgICB9KTtcblxuICAgICAgICBhcHAuaW5pdEFqYXhGb3JtKCcjcHJvZmlsZVJlcXVlc3REYXRhJywgZnVuY3Rpb24oZm9ybSwgY29udGVudCkge1xuICAgICAgICAgICAgJChmb3JtKS5yZXBsYWNlV2l0aChjb250ZW50KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIERlbGV0ZSBwaG9uZVxuICAgICAgICAgKi9cbiAgICAgICAgKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgJCgnYm9keScpLm9uKCdjbGljaycsICdhLmRlbGV0ZS1waG9uZScsIGRlbGV0ZVBob25lKTtcblxuICAgICAgICAgICAgZnVuY3Rpb24gZGVsZXRlUGhvbmUoZSkge1xuICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgICAgICAgICAgICAgYXBwLmNvbmZpcm0oYXBwLnQuY29uZmlybWF0aW9uLCBhcHAudC5kZWxldGVfcGhvbmVfbnVtYmVyLCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICAgICAgJC5hamF4KHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJChzZWxmKS5hdHRyKCdocmVmJyksXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAnUE9TVCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLFxuICAgICAgICAgICAgICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgJiYgcmVzLnN0YXR1cyA9PSAnb2snKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQoc2VsZikucGFyZW50KCkucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrQnV0dG9uc1Zpc2liaWxpdHkoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBmdW5jdGlvbiBjaGVja0J1dHRvbnNWaXNpYmlsaXR5KCkge1xuICAgICAgICAgICAgICAgIHZhciBidXR0b25zID0gJCgnYS5kZWxldGUtcGhvbmUnKTtcbiAgICAgICAgICAgICAgICBpZiAoYnV0dG9ucy5sZW5ndGggPCAyKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1dHRvbnMucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAkKGRvY3VtZW50KS5hamF4Q29tcGxldGUoY2hlY2tCdXR0b25zVmlzaWJpbGl0eSk7XG4gICAgICAgICAgICBjaGVja0J1dHRvbnNWaXNpYmlsaXR5KCk7XG5cbiAgICAgICAgfSkoKTtcbiAgICB9KTtcbiAgICAvKipcbiAgICAgKiBSZWZlcnJhbCBpbmRleCBhY3Rpb25cbiAgICAgKi9cbiAgICBhcHAub24oJ3RyYWNrL3JlZmVycmFsL2luZGV4JywgZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciBxdWVzdGlvbiA9ICQoJy5qcy1mYXFfX3F1ZXN0aW9uJyk7XG4gICAgICAgIHF1ZXN0aW9uLmNsaWNrKGZ1bmN0aW9uKCkge1xuICAgICAgICAgICAgJCgnLmpzLWZhcV9fYW5zd2VyJykuc2xpZGVVcCgpO1xuICAgICAgICAgICAgaWYgKCQodGhpcykuaGFzQ2xhc3MoJ2FjdGl2ZScpKXtcbiAgICAgICAgICAgICAgICBxdWVzdGlvbi5yZW1vdmVDbGFzcygnYWN0aXZlJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcXVlc3Rpb24ucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpO1xuICAgICAgICAgICAgJCh0aGlzKS5uZXh0KCcuanMtZmFxX19hbnN3ZXInKS5zbGlkZURvd24oKTtcbiAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ2FjdGl2ZScpO1xuICAgICAgICB9KTtcbiAgICAgICAgYXBwLmdhLmNsaWNrKCdSZWZlcnJhbCBwcm9ncmFtJywgJ0JvbnVzIEJhbGFuY2UnLCAnLmpzLXJlZmVycmFsLWJvbnVzLWNvbmZpcm0nKTtcbiAgICAgICAgYXBwLmdhLmNsaWNrKCdSZWZlcnJhbCBwcm9ncmFtJywgJ1NlbmQgYm9udXNlcyB0byBQYXlQYWwnLCAnLmpzLXJlZmVycmFsLXBheXBhbC1jb25maXJtJyk7XG4gICAgICAgIGFwcC5nYS5jbGljaygnUmVmZXJyYWwgcHJvZ3JhbScsICdDb3B5IHJlZmVycmFsIGxpbmsnLCAnLmpzLXJlZmVycmFsLWNvcHktbGluaycpO1xuICAgICAgICBhcHAuZ2EuY2xpY2soJ1JlZmVycmFsIHByb2dyYW0nLCAnU2VuZCByZWZlcnJhbCBsaW5rIG9uIGVtYWlsJywgJy5qcy1idG4tZW1haWwtc2hhcmUnKTtcbiAgICAgICAgYXBwLmdhLmNsaWNrKCdSZWZlcnJhbCBwcm9ncmFtJywgJ1NhdmUgcGVyc29uYWwgY2FyZCcsICcuanMtcmVmZXJyYWwtc2F2ZScpO1xuICAgICAgICBhcHAuZ2EuY2xpY2soJ1JlZmVycmFsIHByb2dyYW0nLCAnUHJpbnQgY2FyZCcsICcuanMtcmVmZXJyYWwtcHJpbnQnKTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFZpZXcgd3JpdGVycyBhY3Rpb25cbiAgICAgKi9cbiAgICBhcHAub24oJ3RyYWNrL3dyaXRlci9pbmRleCcsIGZ1bmN0aW9uKCkge1xuICAgICAgICBhcHAuZ2EubGlua0NsaWNrKCdOZXcgb3JkZXInLCAnSGlyZSB3cml0ZXIgYnRuIC8gTXkgd3JpdGVycycsICdbZGF0YS1yb2xlPWhpcmUtbXktd3JpdGVyXScpO1xuICAgICAgICBhcHAuZ2EubGlua0NsaWNrKCdUZXN0aW1vbmlhbHMnLCAnVGhlIGNob2ljZSBvZiB3cml0ZXIgaW4gdGhlIHdpZGdldCcsICcudC13cml0ZXItdGVzdGltb25pYWxzX19oaXJlLWJ0bicpO1xuICAgICAgICBhcHAuZ2EubGlua0NsaWNrKCdUZXN0aW1vbmlhbHMnLCAnVmlldyB0ZXN0aW1vbmlhbHMnLCAnLnQtd3JpdGVyLXRlc3RpbW9uaWFsc19fbW9yZScpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVmlldyB3cml0ZXJzIHRlc3RpbW9uaWFscyBhY3Rpb25cbiAgICAgKi9cbiAgICBhcHAub24oJ3RyYWNrL3dyaXRlci90ZXN0aW1vbmlhbHMnLCBmdW5jdGlvbigpIHtcbiAgICAgICAgYXBwLmdhLmxpbmtDbGljaygnTmV3IG9yZGVyJywgJ0hpcmUgd3JpdGVyIGJ0biAvIFRlc3RpbW9uaWFscycsICdbZGF0YS1yb2xlPXRlc3RpbW9uaWFscy1oaXJlLXdyaXRlcl0nLCAnI2Jsb2NrLXRlc3RpbW9uaWFscy1saXN0Jyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBWaWV3IGdhbWUgYWN0aW9uXG4gICAgICovXG4gICAgYXBwLm9uKCd0cmFjay9nYW1lL2luZGV4JywgZnVuY3Rpb24oKSB7XG4gICAgICAgIGFwcC5nYS5saW5rQ2xpY2soJ05ldyBvcmRlcicsICdVc2UgZm9yIG5ldyBvcmRlciAvIEdhbWUnLCAnW2RhdGEtcm9sZT11c2UtZ2FtZS1naWZ0XScpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVmlldyBmb3JtIGFjdGlvblxuICAgICAqL1xuICAgIGFwcC5vbigndHJhY2svZm9ybS9pbmRleCcsIGZ1bmN0aW9uKCkge1xuICAgICAgICBhcHAuZ2EuY2hhbmdlU3RhdGUoJ0FkZCBzZXJ2aWNlIC8gTmV3IG9yZGVyJywgJ2lucHV0W3R5cGU9Y2hlY2tib3hdJywgJ1tkYXRhLXJvbGU9dHJhY2stb2Ytc2VydmljZS1saXN0XScpO1xuICAgICAgICBhcHAuZ2EuY2hhbmdlU2VsZWN0b3IoJ05ldyBvcmRlcicsICdbZGF0YS1maWVsZD1cInR5cGVfb2Zfd29ya1wiXScpO1xuICAgICAgICBhcHAuZ2EuY2hhbmdlU2VsZWN0b3IoJ05ldyBvcmRlcicsICdbZGF0YS1maWVsZD1cInBhcGVyX3N1YmplY3RcIl0nKTtcbiAgICAgICAgYXBwLmdhLnNldExpc3RlbmVyKCdbZGF0YS1yb2xlPVwidG9nZ2xlLWRldGFpbHNcIl0nLCBudWxsLCAnY2xpY2snLFxuICAgICAgICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGxldCB0cmlnZ2VyTGFiZWwgPSAoJCgnI2Zvcm0tZGV0YWlscycpLmlzKCc6dmlzaWJsZScpKSA/ICdPRkYnIDogJ09OJztcbiAgICAgICAgICAgICAgICBsZXQgbGFiZWwgPSAnTW9yZSBkZXRhaWxzICcgKyAgdHJpZ2dlckxhYmVsO1xuICAgICAgICAgICAgICAgIGFwcC5nYS5ldmVudChcbiAgICAgICAgICAgICAgICAgICAgJ0FkZCBzZXJ2aWNlIC8gTmV3IG9yZGVyJyxcbiAgICAgICAgICAgICAgICAgICAgbGFiZWxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgICBhcHAuZ2Euc2V0TGlzdGVuZXIoJy50LWFkZC1zZXJ2aWNlLWl0ZW1fX2lucHV0JywgbnVsbCwgJ2NoYW5nZScsXG4gICAgICAgICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgbGV0IHRyaWdnZXJMYWJlbCA9ICQodGhpcykudmFsKCkgPT0gMCAgPyAnIE9GRicgOiAnIE9OJztcbiAgICAgICAgICAgICAgICBsZXQgbGFiZWwgPSAkKHRoaXMpLmRhdGEoJ2FsaWFzJykgKyB0cmlnZ2VyTGFiZWw7XG4gICAgICAgICAgICAgICAgYXBwLmdhLmV2ZW50KCdBZGQgc2VydmljZSAvIE5ldyBvcmRlcicsIGxhYmVsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgJCgnI2Vzc2F5Zm9ybS1wcmVmZXJyZWRfd3JpdGVyX2lkJykub24oJ2lucHV0JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgYXBwLmdhLmV2ZW50KFxuICAgICAgICAgICAgICAgICdOZXcgb3JkZXInLFxuICAgICAgICAgICAgICAgICdDaG9vc2luZyBwcmVmZXJyZWQgd3JpdGVyJ1xuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGFwcC5nYS5jbGljaygnY2xpY2snLCAnb2ZfdGFiX3N3aXRjaCcsICcudC1mb3JtLXRhYnNfX2l0ZW0nLCBudWxsLCAndHJhY2tfb2ZfdGFiJylcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIFZpZXcgZm9ybSBhY3Rpb25cbiAgICAgKi9cbiAgICBhcHAub24oJ3RyYWNrL2V2b2x2ZS9pbmRleCcsIGZ1bmN0aW9uKCkge1xuICAgICAgICBhcHAuZ2EubGlua0NsaWNrKCdCb251c2VzJywgJ0FkZCBMb3lhbHR5IHByb2dyYW0gcGFnZScsICdhJywgJ1tkYXRhLWxhYmVsPVwiY29sbGVjdC1naWZ0c1wiXScpO1xuICAgICAgICBhcHAuZ2EuY2xpY2soJ1BlcnNvbmFsIG1hbmFnZXInLCAnU2VuZCBtZXNzYWdlIHRvIHBlcnNvbmFsIG1hbmFnZXInLCAnLnBlcnNvbmFsLW1hbmFnZXJfX3NlbmQtYnRuJyk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBWaWV3IGZvcm0gYWN0aW9uXG4gICAgICovXG4gICAgYXBwLm9uKCd0cmFjay9wYXltZW50LXJlc3VsdC9zdWNjZXNzJywgZnVuY3Rpb24oKSB7XG4gICAgICAgIGFwcC5nYS5saW5rQ2xpY2soJ0JvbnVzZXMnLCAnVGhhbmt5b3UgcGFnZSBvZmZlciB1c2luZycsICcjdGhhbmt5b3UtZ2lmdCcpO1xuICAgIH0pO1xuXG4gICAgLyoqXG4gICAgICogVmlldyBvZmZlciBhY3Rpb25cbiAgICAgKi9cbiAgICBhcHAub24oJ3RyYWNrL29mZmVyL2luZGV4JywgZnVuY3Rpb24oKSB7XG4gICAgICAgIGNvbnN0IHNsaWRlciA9ICQoJy5qcy1vZmZlci1zdGVwcycpO1xuICAgICAgICBjb25zdCBpbmRleCA9IHdpbmRvdy5vdXRlcldpZHRoIDwgNTAwID8gMiA6IDU7XG5cbiAgICAgICAgc2xpZGVyLnNsaWNrKHtcbiAgICAgICAgICAgIGluZmluaXRlOiBmYWxzZSxcbiAgICAgICAgICAgIGFycm93czogdHJ1ZSxcbiAgICAgICAgICAgIGRvdHM6IGZhbHNlLFxuICAgICAgICAgICAgc2xpZGVzVG9TaG93OiA1LFxuICAgICAgICAgICAgcHJldkFycm93OiAnPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBzbGljay1hcnJvd19wcmV2XCI+YXJyb3dfbGVmdDwvc3Bhbj4nLFxuICAgICAgICAgICAgbmV4dEFycm93OiAnPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBzbGljay1hcnJvd19uZXh0XCI+YXJyb3dfcmlnaHQ8L3NwYW4+JyxcbiAgICAgICAgICAgIHJlc3BvbnNpdmU6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQ6IDcwMCxcbiAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogNCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1RvU2Nyb2xsOiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyb3dzOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQ6IDQ4MCxcbiAgICAgICAgICAgICAgICAgICAgc2V0dGluZ3M6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogMyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlc1RvU2Nyb2xsOiAxLFxuICAgICAgICAgICAgICAgICAgICAgICAgYXJyb3dzOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgXVxuICAgICAgICB9KS5zbGljaygnc2xpY2tHb1RvJywgJCgnLnQtb2ZmZXJfX3N0ZXBfYWN0aXZlJykuZGF0YSgnc2xpY2staW5kZXgnKSAtIGluZGV4KTtcblxuICAgICAgICBjb25zdCBjb3B5VGV4dFRvQ2xpcGJvYXJkID0gKHRleHQpID0+IHtcbiAgICAgICAgICAgIGNvbnN0ICR0ZW1wID0gJCgnPGlucHV0PicpO1xuICAgICAgICAgICAgJCgnYm9keScpLmFwcGVuZCgkdGVtcCk7XG4gICAgICAgICAgICAkdGVtcC52YWwodGV4dCkuc2VsZWN0KCk7XG4gICAgICAgICAgICBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpO1xuICAgICAgICAgICAgJHRlbXAucmVtb3ZlKCk7XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgY29kZUljb24gPSAkKCcudC1vZmZlcl9fY29kZS1pY29uJyk7XG4gICAgICAgIGNvbnN0IGNvZGVQcm9tbyA9ICQoJy50LW9mZmVyX19jb2RlLXByb21vJyk7XG4gICAgICAgIGNvbnN0IGNvZGUgPSAkKCcudC1vZmZlcl9fY29kZScpO1xuXG4gICAgICAgIGNvZGVJY29uLm9uKCdjbGljaycsICgpID0+IHtcbiAgICAgICAgICAgIGNvZGUuYWRkQ2xhc3MoJ3Qtb2ZmZXJfX2NvZGVfY29waWVkJyk7XG4gICAgICAgICAgICBjb3B5VGV4dFRvQ2xpcGJvYXJkKGNvZGVQcm9tby50ZXh0KCkudHJpbSgpKTtcbiAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvZGUucmVtb3ZlQ2xhc3MoJ3Qtb2ZmZXJfX2NvZGVfY29waWVkJyk7XG4gICAgICAgICAgICB9LCAzMDAwKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBWaWV3IG5ld3MgYWN0aW9uXG4gICAgICovXG4gICAgYXBwLm9uKCd0cmFjay9uZXdzL2luZGV4JywgKCkgPT4ge1xuICAgICAgICAkKCcuanMtbmV3cy1pdGVtJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY29uc3QgbmV3c0lkID0gJCh0aGlzKS5kYXRhKCdpZCcpO1xuICAgICAgICAgICAgYXBwLmdhLmV2ZW50KFxuICAgICAgICAgICAgICAgICdOZXdzJyxcbiAgICAgICAgICAgICAgICBgTmV3cyBwb3AtdXAgJHtuZXdzSWR9YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBWaWV3IGZhcSBhY3Rpb25cbiAgICAgKi9cbiAgICBhcHAub24oJ3RyYWNrL2ZhcScsIGZ1bmN0aW9uKCkge1xuICAgICAgICBjb25zdCBjYXRlZ29yeU1vYmlsZSA9ICQoJy50LXBhZ2UtZmFxX19jYXRlZ29yeS1pdGVtX21vYmlsZScpO1xuICAgICAgICBjb25zdCBjYXRlZ29yeSA9ICQoJy50LXBhZ2UtZmFxX19jYXRlZ29yeScpO1xuICAgICAgICBjb25zdCBxdWVzdGlvbkl0ZW0gPSAkKCcudC1wYWdlLWZhcV9fcXVlc3Rpb25zLWl0ZW0nKTtcbiAgICAgICAgY29uc3QgcXVlc3Rpb25UaXRsZSA9ICQoJy50LXBhZ2UtZmFxX19xdWVzdGlvbnMtdGl0bGUnKTtcbiAgICAgICAgY29uc3QgcXVlc3Rpb25BbnN3ZXIgPSAkKCcudC1wYWdlLWZhcV9fcXVlc3Rpb25zLWFuc3dlcicpO1xuICAgICAgICBjb25zdCBjYXRlZ29yeUl0ZW0gPSAkKCcudC1wYWdlLWZhcV9fY2F0ZWdvcnktaXRlbScpO1xuICAgICAgICBjb25zdCBjYXRlZ29yeUJsb2NrID0gJCgnLnQtcGFnZS1mYXFfX2NhdGVnb3J5LWJsb2NrJyk7XG5cbiAgICAgICAgY29uc3QgaGlkZVRhYnMgPSAoKSA9PiB7XG4gICAgICAgICAgICBxdWVzdGlvbkl0ZW0ucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpO1xuICAgICAgICAgICAgcXVlc3Rpb25UaXRsZS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7XG4gICAgICAgICAgICBxdWVzdGlvbkFuc3dlci5zbGlkZVVwKCk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHNob3dUYWIgPSAoaXRlbSkgPT4ge1xuICAgICAgICAgICAgJChpdGVtKS5hZGRDbGFzcygnYWN0aXZlJyk7XG4gICAgICAgICAgICAkKGl0ZW0pLmZpbmQoJy50LXBhZ2UtZmFxX19xdWVzdGlvbnMtdGl0bGUnKS5hZGRDbGFzcygnYWN0aXZlJyk7XG4gICAgICAgICAgICAkKGl0ZW0pLmZpbmQoJy50LXBhZ2UtZmFxX19xdWVzdGlvbnMtYW5zd2VyJykuc2xpZGVEb3duKCk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGhpZGVDYXRlZ29yeSA9ICgpID0+IHtcbiAgICAgICAgICAgIGhpZGVUYWJzKCk7XG4gICAgICAgICAgICBjYXRlZ29yeUl0ZW0ucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpO1xuICAgICAgICAgICAgY2F0ZWdvcnlCbG9jay5oaWRlKCk7XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHNob3dDYXRlZ29yeSA9IChpdGVtKSA9PiB7XG4gICAgICAgICAgICBpZiAoJChpdGVtKS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtSWQgPSAkKGl0ZW0pLmF0dHIoJ2hyZWYnKTtcbiAgICAgICAgICAgICAgICAkKGl0ZW0pLmFkZENsYXNzKCdhY3RpdmUnKTtcbiAgICAgICAgICAgICAgICAkKGAke2l0ZW1JZH1CbG9ja2ApLnNob3coKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2F0ZWdvcnlJdGVtLmZpcnN0KCkuYWRkQ2xhc3MoJ2FjdGl2ZScpO1xuICAgICAgICAgICAgICAgIGNhdGVnb3J5QmxvY2suZmlyc3QoKS5zaG93KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIHF1ZXN0aW9uSXRlbS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoISQodGhpcykuaGFzQ2xhc3MoJ2FjdGl2ZScpKSB7XG4gICAgICAgICAgICAgICAgaGlkZVRhYnMoKTtcbiAgICAgICAgICAgICAgICBzaG93VGFiKHRoaXMpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBoaWRlVGFicygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgY2F0ZWdvcnlJdGVtLm9uKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaGFzaCA9IHRoaXMuaGFzaDtcbiAgICAgICAgICAgICQod2luZG93KS5zY3JvbGxUb3AoMCk7XG4gICAgICAgICAgICBpZiAoISQodGhpcykuaGFzQ2xhc3MoJ2FjdGl2ZScpKSB7XG4gICAgICAgICAgICAgICAgaGlkZUNhdGVnb3J5KCk7XG4gICAgICAgICAgICAgICAgc2hvd0NhdGVnb3J5KHRoaXMpO1xuICAgICAgICAgICAgICAgIGlmICh3aW5kb3cuaW5uZXJXaWR0aCA8IDc2OCl7XG4gICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5TW9iaWxlLmh0bWwoJCh0aGlzKS5odG1sKCkpO1xuICAgICAgICAgICAgICAgICAgICBjYXRlZ29yeS5zbGlkZVVwKCk7XG4gICAgICAgICAgICAgICAgICAgICQodGhpcykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHsgaGFzaCB9ID0gd2luZG93LmxvY2F0aW9uO1xuICAgICAgICBpZiAoaGFzaCkge1xuICAgICAgICAgICAgY29uc3QgYXJncyA9IGhhc2guc3BsaXQoJyYnKTtcbiAgICAgICAgICAgIGNvbnN0IGNhdGVnb3J5SWQgPSBhcmdzWzBdO1xuICAgICAgICAgICAgY29uc3QgdGFiSWQgPSBgIyR7YXJnc1sxXX1gO1xuICAgICAgICAgICAgc2hvd1RhYih0YWJJZCk7XG4gICAgICAgICAgICBzaG93Q2F0ZWdvcnkoY2F0ZWdvcnlJZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzaG93Q2F0ZWdvcnkoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAod2luZG93LmlubmVyV2lkdGggPCA3NjgpIHtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZUNhdGVnb3J5VGV4dCA9ICQoJy50LXBhZ2UtZmFxX19jYXRlZ29yeS1pdGVtLmFjdGl2ZScpLmh0bWwoKTtcbiAgICAgICAgICAgIGNhdGVnb3J5TW9iaWxlLmh0bWwoYWN0aXZlQ2F0ZWdvcnlUZXh0KTtcblxuICAgICAgICAgICAgY2F0ZWdvcnlNb2JpbGUub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICQodGhpcykudG9nZ2xlQ2xhc3MoJ2FjdGl2ZScpO1xuICAgICAgICAgICAgICAgIGNhdGVnb3J5LnNsaWRlVG9nZ2xlKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG5cbiAgICAvL2NsZWFyIHZhbHVlIGZvciBpbnB1dCBib251c1xuICAgIGFwcC5vbigndHJhY2snLCBmdW5jdGlvbigpIHtcbiAgICAgICAgJCgnI2Vzc2F5Zm9ybS1ib251cycpLm9uKCdjbGljayBmb2N1c2luJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9ICcnO1xuICAgICAgICAgICAgJCh0aGlzKS5jc3MoIFwiY29sb3JcIiwgXCIjNjM2QTc2XCIpO1xuICAgICAgICAgICAgJCh0aGlzKS5jc3MoIFwiZm9udC1zaXplXCIsIFwiMTRweFwiKTtcbiAgICAgICAgfSk7XG4gICAgICAgICQoJyNlc3NheWZvcm0tYm9udXMnKS5vbignZm9jdXNvdXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICAkKHRoaXMpLmNzcyggXCJjb2xvclwiLCBcIiM5Nzk3OTdcIik7XG4gICAgICAgICAgICAkKHRoaXMpLmNzcyggXCJmb250LXNpemVcIiwgXCIxMnB4XCIpO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIGZvciBpbnN0cmFjdGlvblxuICAgICAqL1xuXG4gICAgYXBwLm9uKCd0cmFjaycsIGZ1bmN0aW9uICgpe1xuICAgICAgICBsZXQgaW5zdHJhY3Rpb25IZWlnaHQgPSAkKCcudC1pbnN0cnVjdGlvbnNfX2xpc3QnKS5oZWlnaHQoKTtcblxuICAgICAgICAkKCcubW9yZS10ZXh0Jykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgJCgnLm1vcmUtdGV4dCcpLmFkZENsYXNzKCdoaWRlJyk7XG4gICAgICAgICAgICAkKCcubGVzcy10ZXh0JykucmVtb3ZlQ2xhc3MoJ2hpZGUnKTtcbiAgICAgICAgICAgICQoJy50LWluc3RydWN0aW9uc19ub2NvbmZpcm0nKS5maW5kKCcudC1pbnN0cnVjdGlvbnNfX2xpc3QnKS5jc3MoJ2hlaWdodCcsICcxMDAlJyk7XG4gICAgICAgICAgICAkKCcuYmctbGluZWFyJykuYWRkQ2xhc3MoJ2hpZGUnKTtcbiAgICAgICAgICAgICQoJy50LWluc3RydWN0aW9uc19fbGlzdCcpLnJlbW92ZUNsYXNzKCdzaGFkb3ctbGluZScpO1xuICAgICAgICB9KTtcblxuICAgICAgICAkKCcubGVzcy10ZXh0Jykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgJCgnLmxlc3MtdGV4dCcpLmFkZENsYXNzKCdoaWRlJyk7XG4gICAgICAgICAgICAkKCcubW9yZS10ZXh0JykucmVtb3ZlQ2xhc3MoJ2hpZGUnKTtcbiAgICAgICAgICAgICQoJy50LWluc3RydWN0aW9uc19ub2NvbmZpcm0nKS5maW5kKCcudC1pbnN0cnVjdGlvbnNfX2xpc3QnKS5jc3MoJ2hlaWdodCcsICcxMjBweCcpO1xuICAgICAgICAgICAgJCgnLmJnLWxpbmVhcicpLnJlbW92ZUNsYXNzKCdoaWRlJyk7XG4gICAgICAgICAgICAkKCcudC1pbnN0cnVjdGlvbnNfX2xpc3QnKS5hZGRDbGFzcygnc2hhZG93LWxpbmUnKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKGluc3RyYWN0aW9uSGVpZ2h0ID49IDEyMCkge1xuICAgICAgICAgICAgJCgnLnQtaW5zdHJ1Y3Rpb25zX25vY29uZmlybScpLmZpbmQoJy50LWluc3RydWN0aW9uc19fbGlzdCcpLmNzcygnaGVpZ2h0JywgJzEyMHB4Jyk7XG4gICAgICAgICAgICAkKCcudC1pbnN0cnVjdGlvbnNfbm9jb25maXJtJykuZmluZCgnLnQtaW5zdHJ1Y3Rpb25zX19saXN0JykuY3NzKCdvdmVyZmxvdy15JywgJ2hpZGRlbicpO1xuICAgICAgICAgICAgJCgnLnQtaW5zdHJ1Y3Rpb25zX25vY29uZmlybScpLmZpbmQoJy5iZy1saW5lYXInKS5yZW1vdmVDbGFzcygnaGlkZScpO1xuICAgICAgICAgICAgJCgnLnQtaW5zdHJ1Y3Rpb25zX19saXN0JykuYWRkQ2xhc3MoJ3NoYWRvdy1saW5lJyk7XG4gICAgICAgICAgICAkKCcudC1pbnN0cnVjdGlvbnNfbm9jb25maXJtJykuZmluZCgnLnNob3ctYWxsJykucmVtb3ZlQ2xhc3MoJ2hpZGUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICgkKHdpbmRvdykud2lkdGgoKSA8PSA3NjgpIHtcbiAgICAgICAgICAgIGlmIChpbnN0cmFjdGlvbkhlaWdodCA+PSAxNjMpIHtcbiAgICAgICAgICAgICAgICAkKCcudC1pbnN0cnVjdGlvbnNfbm9jb25maXJtJykuZmluZCgnLnQtaW5zdHJ1Y3Rpb25zX19saXN0JykuY3NzKCdoZWlnaHQnLCAnMTYzcHgnKTtcbiAgICAgICAgICAgICAgICAkKCcudC1pbnN0cnVjdGlvbnNfbm9jb25maXJtJykuZmluZCgnLnQtaW5zdHJ1Y3Rpb25zX19saXN0JykuY3NzKCdvdmVyZmxvdy15JywgJ2hpZGRlbicpO1xuICAgICAgICAgICAgICAgICQoJy50LWluc3RydWN0aW9uc19ub2NvbmZpcm0nKS5maW5kKCcuYmctbGluZWFyJykucmVtb3ZlQ2xhc3MoJ2hpZGUnKTtcbiAgICAgICAgICAgICAgICAkKCcudC1pbnN0cnVjdGlvbnNfbm9jb25maXJtJykuZmluZCgnLnNob3ctYWxsJykucmVtb3ZlQ2xhc3MoJ2hpZGUnKTtcblxuICAgICAgICAgICAgICAgICQoJy5sZXNzLXRleHQnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICQoJy50LWluc3RydWN0aW9uc19ub2NvbmZpcm0nKS5maW5kKCcudC1pbnN0cnVjdGlvbnNfX2xpc3QnKS5jc3MoJ2hlaWdodCcsICcxNjNweCcpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG5cbi8vZmVlZGJhY2sgcmF0aW5nXG4gICAgYXBwLm9uKCd0cmFjaycsIGZ1bmN0aW9uICgpe1xuICAgICAgICBmdW5jdGlvbiByYXRpbmdTdGFyKHN0YXIpe1xuICAgICAgICAgICAgc3Rhci5jbGljayhmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICQoJy5maWVsZC1mZWVkYmFja2Zvcm0tcmF0aW5nIC5oZWxwLWJsb2NrJykuaGlkZSgpO1xuICAgICAgICAgICAgICAgIHZhciBzdGFycyA9ICQoJy5mZWVkYmFjay1yYXRpbmdfZmxleCcpLmZpbmQoJ2xpIGEnKTtcbiAgICAgICAgICAgICAgICBzdGFycy5yZW1vdmVDbGFzcygnb24nKTtcbiAgICAgICAgICAgICAgICB2YXIgdGhpc0luZGV4ID0gJCh0aGlzKS5wYXJlbnRzKCdsaScpLmluZGV4KCk7XG4gICAgICAgICAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8PSB0aGlzSW5kZXg7IGkrKyl7XG4gICAgICAgICAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ29uJyk7XG4gICAgICAgICAgICAgICAgICAgIGlmKGkgPD0gNil7XG4gICAgICAgICAgICAgICAgICAgICAgICAkKCcjZmVlZGJhY2stZm9ybScpLmZpbmQoJy50LWZlZWRiYWNrX19yZWFzb25zJykucmVtb3ZlQ2xhc3MoJ2hpZGUnKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICQoJyNmZWVkYmFjay1mb3JtJykuZmluZCgnLnQtZmVlZGJhY2tfX3JlYXNvbnMnKS5hZGRDbGFzcygnaGlkZScpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgJCgnLmZlZWRiYWNrLXJhdGluZ19pdGVtJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIGNvdW50ID0gJCh0aGlzKS5hdHRyKFwiZGF0YS1pZFwiKTtcbiAgICAgICAgICAgICQoXCIjZmVlZGJhY2tmb3JtLXJhdGluZ1wiKS5hdHRyKFwidmFsdWVcIiwgY291bnQpO1xuICAgICAgICB9KTtcblxuICAgICAgICAkKGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICBpZigkKCcuZmVlZGJhY2stcmF0aW5nX2ZsZXgnKS5sZW5ndGggPiAwKXtcbiAgICAgICAgICAgICAgICByYXRpbmdTdGFyKCQoJy5mZWVkYmFjay1yYXRpbmdfZmxleCBsaSBhJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAkKCcjZmVlZGJhY2tmb3JtLW1lc3NhZ2UnKS5vbignY2xpY2sgZm9jdXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAkKCcuZmllbGQtZmVlZGJhY2tmb3JtLW1lc3NhZ2UgLmhlbHAtYmxvY2snKS5oaWRlKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgICQoJyNmZWVkYmFja2Zvcm0tbWVzc2FnZScpLm9uKCdmb2N1c291dCBibHVyJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgJCgnLmZpZWxkLWZlZWRiYWNrZm9ybS1tZXNzYWdlIC5oZWxwLWJsb2NrJykuc2hvdygpO1xuICAgICAgICB9KTtcbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIGZvciBzZWFyY2hcbiAgICAgKi9cblxuICAgIGFwcC5vbigndHJhY2snLCBmdW5jdGlvbiAoKXtcbiAgICAgICAgJCgnI29yZGVyc2ZpbHRlci1vcmRlcl9pZCcpLmZvY3VzKGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAkKHRoaXMpLmRhdGEoJ3BsYWNlaG9sZGVyJywkKHRoaXMpLmF0dHIoJ3BsYWNlaG9sZGVyJykpO1xuICAgICAgICAgICAgJCh0aGlzKS5hdHRyKCdwbGFjZWhvbGRlcicsJycpO1xuICAgICAgICB9KTtcblxuICAgICAgICAkKCcjb3JkZXJzZmlsdGVyLW9yZGVyX2lkJykuYmx1cihmdW5jdGlvbigpe1xuICAgICAgICAgICAgJCh0aGlzKS5hdHRyKCdwbGFjZWhvbGRlcicsJCh0aGlzKS5kYXRhKCdwbGFjZWhvbGRlcicpKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbGV0IGlzRmluZCA9ICQoJyNvcmRlcnNmaWx0ZXItb3JkZXJfaWQnKS5hdHRyKFwiZGF0YS1pZFwiKTtcblxuICAgICAgICBpZihpc0ZpbmQgPT09ICcxJyl7XG4gICAgICAgICAgICAkKCcub3JkZXJzX19pZCcpLmZpbmQoJy5zZWFyY2gtYnRuJykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTtcbiAgICAgICAgICAgICQoJy5vcmRlcnNfX2lkJykuZmluZCgnI3JlbW92ZV9fYnRuJykuY3NzKCdkaXNwbGF5JywgJ2Jsb2NrJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAkKCcub3JkZXJzX19pZCcpLmZpbmQoJy5zZWFyY2gtYnRuJykuY3NzKCdkaXNwbGF5JywgJ2Jsb2NrJyk7XG4gICAgICAgICAgICAkKCcub3JkZXJzX19pZCcpLmZpbmQoJyNyZW1vdmVfX2J0bicpLmNzcygnZGlzcGxheScsICdub25lJyk7XG4gICAgICAgIH1cblxuXG4gICAgICAgICQoJyNyZW1vdmVfX2J0bicpLm9uKCdjbGljaycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICQoJyNvcmRlcnNmaWx0ZXItb3JkZXJfaWQnKS52YWwoJycpO1xuICAgICAgICAgICAgJCgnI29yZGVyc2ZpbHRlci1vcmRlcl9pZCcpLmF0dHIoJ3BsYWNlaG9sZGVyJywgJCgnI29yZGVyc2ZpbHRlci1vcmRlcl9pZCcpLmRhdGEoJ3BsYWNlaG9sZGVyJykpO1xuICAgICAgICAgICAgJCgnLm9yZGVyc19faWQnKS5maW5kKCcjc2VhcmNoX19idG4nKS5zaG93KCk7XG4gICAgICAgICAgICAkKCcub3JkZXJzX19pZCcpLmZpbmQoJyNyZW1vdmVfX2J0bicpLmhpZGUoKTtcbiAgICAgICAgfSk7XG5cbiAgICB9KTtcblxuICAgIC8qKlxuICAgICAqIE9yZGVyIGdlbmVyYXRlIGludm9pY2VcbiAgICAgKi9cblxuICAgIGFwcC5vbigndHJhY2snLCBmdW5jdGlvbiAoKXtcbiAgICAgICAgJCgnI2pzLWdlbmVyYXRlLWludm9pY2UnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAkKCcjanMtZ2VuZXJhdGUtaW52b2ljZScpLmNzcygnZGlzcGxheScsICdub25lJyk7XG4gICAgICAgICAgICAkKCcudC1vcmRlcl9fZ2VuZXJhdGluZycpLmNzcygnZGlzcGxheScsICdmbGV4Jyk7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpe1xuICAgICAgICAgICAgICAgICQoJy50LW9yZGVyX19nZW5lcmF0aW5nJykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTtcbiAgICAgICAgICAgIH0sIDgwMDApXG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpe1xuICAgICAgICAgICAgICAgICQoJyNqcy1nZW5lcmF0ZS1pbnZvaWNlJykuY3NzKCdkaXNwbGF5JywgJ2ZsZXgnKTtcbiAgICAgICAgICAgIH0sIDM4MDAwKTtcbiAgICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICAvKipcbiAgICAgKiBUb2dnbGUgcGFzc3dvcmQgZXllXG4gICAgICovXG5cbiAgICBhcHAub24oJ3RyYWNrJywgZnVuY3Rpb24gKCl7XG5cbiAgICAgICAgaWYgKCQoJy5wYXNzd29yZElucHV0IGlucHV0JykudmFsKCkgIT09ICcnKXtcbiAgICAgICAgICAgICQoJy5wYXNzd29yZElucHV0IGlucHV0JykuYWRkQ2xhc3MoJ29wZW5FeWUnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICQoJy5wYXNzd29yZElucHV0IGlucHV0JykucmVtb3ZlQ2xhc3MoJ29wZW5FeWUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgICQoJy5wYXNzd29yZElucHV0IGlucHV0Jykub24oJ2NoYW5nZSBrZXl1cCcsIGZ1bmN0aW9uICgpe1xuICAgICAgICAgICAgaWYoJCh0aGlzKS52YWwoKSkge1xuICAgICAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ29wZW5FeWUnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygnb3BlbkV5ZScpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgJCgnLnBhc3N3b3JkSW5wdXQgaW5wdXQnKS5vbignY2hhbmdlIGtleXVwJywgZnVuY3Rpb24gKCl7XG4gICAgICAgICAgICBpZigkKCcucGFzc3dvcmRJbnB1dCBpbnB1dCcpLnZhbCgpKSB7XG4gICAgICAgICAgICAgICAgJCgnLnVwZGF0ZVBhc3NCdG5zJykucmVtb3ZlQXR0cignZGlzYWJsZScpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAkKCcudXBkYXRlUGFzc0J0bnMnKS5hdHRyKCdkaXNhYmxlJywgJ2Rpc2FibGUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgJCgnLnBhc3N3b3JkSW5wdXQgaW5wdXQnKS5rZXlwcmVzcyhmdW5jdGlvbihlKSB7XG4gICAgICAgICAgICB2YXIgcyA9IFN0cmluZy5mcm9tQ2hhckNvZGUoIGUud2hpY2ggKTtcbiAgICAgICAgICAgIGlmICggcy50b1VwcGVyQ2FzZSgpID09PSBzICYmIHMudG9Mb3dlckNhc2UoKSAhPT0gcyAmJiAhZS5zaGlmdEtleSApIHtcbiAgICAgICAgICAgICAgICAkKCcuY2Fwc0xvY2stb2ZmJykuYWRkQ2xhc3MoJ2NsLW9uJyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICQoJy5jYXBzTG9jay1vZmYnKS5yZW1vdmVDbGFzcygnY2wtb24nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgJCgnLmF0LXBhc3N3b3JkX19leWUnKS5vbignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgIGNvbnN0IGlucHV0ID0gJCh0aGlzKS5wYXJlbnQoJy5hdC1wYXNzd29yZCcpLmZpbmQoJ2lucHV0Jyk7XG4gICAgICAgICAgICQodGhpcykudG9nZ2xlQ2xhc3MoJ2luYWN0aXZlJyk7XG5cbiAgICAgICAgICAgaWYgKGlucHV0LmF0dHIoJ3R5cGUnKSA9PT0gJ3Bhc3N3b3JkJykge1xuICAgICAgICAgICAgICAgaW5wdXQuYXR0cigndHlwZScsICd0ZXh0Jyk7XG4gICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICBpbnB1dC5hdHRyKCd0eXBlJywgJ3Bhc3N3b3JkJyk7XG4gICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICB9KTtcbiAgICBcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgKCkgPT4ge1xuICAgICAgICBjb25zdCB0cnVuY2F0ZVRleHRFbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy50b3BpYy1vcmRlci13cmFwLXR4dCcpO1xuICAgIFxuICAgICAgICB0cnVuY2F0ZVRleHRFbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtYXhMZW5ndGggPSBlbGVtZW50LmNsaWVudFdpZHRoIDw9IDIwMCA/IDg1IDogMTIwO1xuICAgICAgICAgICAgY29uc3QgdGV4dCA9IGVsZW1lbnQudGV4dENvbnRlbnQudHJpbSgpO1xuICAgICAgICAgICAgbGV0IHRydW5jYXRlZFRleHQgPSAnJztcbiAgICBcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmNsaWVudEhlaWdodCA+IDYwKSB7XG4gICAgICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKCdtYXgtaGVpZ2h0Jyk7XG4gICAgICAgICAgICAgICAgaWYgKHRleHQubGVuZ3RoID4gbWF4TGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRydW5jYXRlZFRleHQgPSB0ZXh0LnNsaWNlKDAsIG1heExlbmd0aCk7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuaW5uZXJIVE1MID0gYCR7dHJ1bmNhdGVkVGV4dH08c3BhbiBjbGFzcz1cImVsbGlwc2lzXCI+Li4uPC9zcGFuPmA7XG4gICAgICAgICAgICAgICAgICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZCgndHJ1bmNhdGVkJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICBcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgKCkgPT4ge1xuICAgICAgICBjb25zdCB0cnVuY2F0ZVRleHRFbGVtZW50cyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJy5jdXQtdGV4dCcpO1xuICAgIFxuICAgICAgICB0cnVuY2F0ZVRleHRFbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBtYXhMZW5ndGggPSBlbGVtZW50LmNsaWVudEhlaWdodCA8PSA1NyA/IDg1IDogMTIwO1xuICAgICAgICAgICAgY29uc3QgdGV4dCA9IGVsZW1lbnQudGV4dENvbnRlbnQudHJpbSgpO1xuICAgICAgICAgICAgbGV0IHRydW5jYXRlZFRleHQgPSAnJztcbiAgICBcbiAgICAgICAgICAgIGlmIChlbGVtZW50LmNsaWVudEhlaWdodCA+IDU3KSB7XG4gICAgICAgICAgICAgICAgZWxlbWVudC5jbGFzc0xpc3QuYWRkKCdjdXQtc29tZVRleHQnKTtcbiAgICAgICAgICAgICAgICBjb25zdCBsaW5rcyA9IGVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnYScpO1xuICAgICAgICAgICAgICAgIGxpbmtzLmZvckVhY2goZnVuY3Rpb24obGluaykge1xuICAgICAgICAgICAgICAgICAgICAvLyDQktC40LfQvdCw0YfQsNGU0LzQviDRltC90LTQtdC60YEsINC00LUg0LfRg9GB0YLRgNGW0YfQsNGU0YLRjNGB0Y8g0YHQu9C+0LLQviAncGFnZXMnINGDINGC0LXQutGB0YLRliDQv9C+0YHQuNC70LDQvdC90Y9cbiAgICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gbGluay50ZXh0Q29udGVudC5pbmRleE9mKCdwYWdlcycpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZXggIT09IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDQntCx0YDRltC30LDRlNC80L4g0YLQtdC60YHRgiDQtNC+INC80ZbRgdGG0Y8sINC00LUg0Lcn0Y/QstC70Y/RlNGC0YzRgdGPINGB0LvQvtCy0L4gJ3BhZ2VzJywg0LLQutC70Y7Rh9C90L5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmsudGV4dENvbnRlbnQgPSBsaW5rLnRleHRDb250ZW50LnN1YnN0cmluZygwLCBpbmRleCArICdwYWdlcycubGVuZ3RoKSsnLy4uLic7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYoZWxlbWVudC5jbGllbnRIZWlnaHQgPiA1Nyl7XG4gICAgICAgICAgICAgICAgICAgICAgICBsaW5rLnRleHRDb250ZW50ID0gbGluay50ZXh0Q29udGVudC5zdWJzdHJpbmcoMCwgMzApICsgJy4uLic7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29weUJ1dHRvbicpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7XG4gICAgICAgICAgIGNvbnN0IGxpbmtFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ215TGluaycpO1xuICAgICAgICAgICBjb25zdCB1cmwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbXlMaW5rJykuaHJlZjsgIC8vINCe0YLRgNC40LzRg9GU0LzQviBVUkwg0L/QvtGB0LjQu9Cw0L3QvdGPXG4gICAgICAgICAgIGNvbnN0IG9yaWdpbmFsVGV4dCA9IGxpbmtFbGVtZW50LmlubmVySFRNTDsgIC8vINCe0YLRgNC40LzRg9GU0LzQviBVUkwg0L/QvtGB0LjQu9Cw0L3QvdGPXG4gICAgICAgICAgIC8vINCh0YLQstC+0YDQtdC90L3RjyDQvdC10LLQuNC00LjQvNC+0LPQviDRgtC10LrRgdGC0L7QstC+0LPQviDQv9C+0LvRj1xuICAgICAgICAgICBjb25zdCB0ZW1wSW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xuICAgICAgICAgICB0ZW1wSW5wdXQudmFsdWUgPSB1cmw7XG4gICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGVtcElucHV0KTtcbiAgICAgICAgICAgdGVtcElucHV0LnNlbGVjdCgpOyAgLy8g0JLQuNCx0ZbRgCDRgtC10LrRgdGC0YMg0LIg0L/QvtC70ZZcblxuXG4gICAgICAgICAgIGNvbnN0IHN1Y2Nlc3NmdWwgPSBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpOyAgLy8g0KHQv9GA0L7QsdCwINC60L7Qv9GW0Y7QstCw0L3QvdGPXG5cbiAgICAgICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgNzY4KSB7XG4gICAgICAgICAgICAgICBsaW5rRWxlbWVudC5pbm5lckhUTUwgPSAnQ29waWVkJztcbiAgICAgICAgICAgICAgIGxpbmtFbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJjb3B5U3RhdHVzXCIpXG5cbiAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgIGxpbmtFbGVtZW50LmlubmVySFRNTCA9IG9yaWdpbmFsVGV4dFxuICAgICAgICAgICAgICAgICAgIGxpbmtFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJjb3B5U3RhdHVzXCIpXG5cbiAgICAgICAgICAgICAgIH0sIDIwMDApO1xuICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgY29weUJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb3B5QnV0dG9uJyk7XG4gICAgICAgICAgICBjb25zdCBjb3B5U3RhdHVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvcHlTdGF0dXMnKTtcbiAgICAgICAgICAgIGNvcHlCdXR0b24uc3R5bGUudHJhbnNpdGlvbiA9ICdvcGFjaXR5IDAuNXMgZWFzZSc7XG4gICAgICAgICAgICBjb3B5U3RhdHVzLnN0eWxlLnRyYW5zaXRpb24gPSAnb3BhY2l0eSAwLjVzIGVhc2UnO1xuXG4gICAgICAgICAgICBjb3B5QnV0dG9uLnN0eWxlLm9wYWNpdHkgPSAwO1xuICAgICAgICAgICAgY29weUJ1dHRvbi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgICAgICAgICAgY29weVN0YXR1cy5zdHlsZS5vcGFjaXR5ID0gMTtcbiAgICAgICAgICAgIGNvcHlTdGF0dXMuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG5cbiAgICAgICAgICAgIC8vINCS0L7Qt9Cy0YDQsNGJ0LDQtdC8INC60L3QvtC/0LrRgyBcItCa0L7Qv9C40YDQvtCy0LDRgtGMXCIg0YfQtdGA0LXQtyAyINGB0LXQutGD0L3QtNGLXG4gICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBjb3B5U3RhdHVzLnN0eWxlLm9wYWNpdHkgPSAwO1xuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb3B5U3RhdHVzLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgICAgICAgICAgICAgIGNvcHlCdXR0b24uc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG4gICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgY29weUJ1dHRvbi5zdHlsZS5vcGFjaXR5ID0gMTtcbiAgICAgICAgICAgICAgICAgICAgfSwgMTApO1xuICAgICAgICAgICAgICAgIH0sIDMwMCk7XG4gICAgICAgICAgICB9LCAyMDAwKTtcblxuXG4gICAgICAgIH1cblxuXG4gICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQodGVtcElucHV0KTsgIC8vINCS0LjQtNCw0LvQtdC90L3RjyDRgtC40LzRh9Cw0YHQvtCy0L7Qs9C+INC/0L7Qu9GPXG4gICAgICAgfSk7XG5cbiAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ215TGluaycpLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKGV2ZW50KSB7XG5cbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBjb25zdCBsaW5rRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdteUxpbmsnKTtcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdteUxpbmsnKS5ocmVmOyAgLy8g0J7RgtGA0LjQvNGD0ZTQvNC+IFVSTCDQv9C+0YHQuNC70LDQvdC90Y9cbiAgICAgICAgICAgIGNvbnN0IG9yaWdpbmFsVGV4dCA9IGxpbmtFbGVtZW50LmlubmVySFRNTDtcbiAgICAgICAgICAgIGNvbnN0IHRlbXBJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgICAgICAgICB0ZW1wSW5wdXQudmFsdWUgPSB1cmw7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRlbXBJbnB1dCk7XG4gICAgICAgICAgICB0ZW1wSW5wdXQuc2VsZWN0KCk7ICAvLyDQktC40LHRltGAINGC0LXQutGB0YLRgyDQsiDQv9C+0LvRllxuXG5cbiAgICAgICAgICAgIGNvbnN0IHN1Y2Nlc3NmdWwgPSBkb2N1bWVudC5leGVjQ29tbWFuZCgnY29weScpOyAgLy8g0KHQv9GA0L7QsdCwINC60L7Qv9GW0Y7QstCw0L3QvdGPXG5cblxuICAgICAgICAgICAgY29uc3QgY29weUJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb3B5QnV0dG9uJyk7XG4gICAgICAgICAgICBjb25zdCBjb3B5U3RhdHVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvcHlTdGF0dXMnKTtcblxuICAgICAgICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgNzY4KSB7XG4gICAgICAgICAgICAgICAgbGlua0VsZW1lbnQuaW5uZXJIVE1MID0gJ0NvcGllZCc7XG4gICAgICAgICAgICAgICAgbGlua0VsZW1lbnQuY2xhc3NMaXN0LmFkZChcImNvcHlTdGF0dXNcIilcblxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICBsaW5rRWxlbWVudC5pbm5lckhUTUwgPSBvcmlnaW5hbFRleHRcbiAgICAgICAgICAgICAgICAgICAgbGlua0VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShcImNvcHlTdGF0dXNcIilcblxuICAgICAgICAgICAgICAgIH0sIDIwMDApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb3B5QnV0dG9uLnN0eWxlLnRyYW5zaXRpb24gPSAnb3BhY2l0eSAwLjVzIGVhc2UnO1xuICAgICAgICAgICAgICAgIGNvcHlTdGF0dXMuc3R5bGUudHJhbnNpdGlvbiA9ICdvcGFjaXR5IDAuNXMgZWFzZSc7XG5cbiAgICAgICAgICAgICAgICBjb3B5QnV0dG9uLnN0eWxlLm9wYWNpdHkgPSAwO1xuICAgICAgICAgICAgICAgIGNvcHlCdXR0b24uc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgICAgICAgICBjb3B5U3RhdHVzLnN0eWxlLm9wYWNpdHkgPSAxO1xuICAgICAgICAgICAgICAgIGNvcHlTdGF0dXMuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG5cbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICAgICAgY29weVN0YXR1cy5zdHlsZS5vcGFjaXR5ID0gMDtcbiAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb3B5U3RhdHVzLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb3B5QnV0dG9uLnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29weUJ1dHRvbi5zdHlsZS5vcGFjaXR5ID0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIDEwKTtcbiAgICAgICAgICAgICAgICAgICAgfSwgMzAwKTtcbiAgICAgICAgICAgICAgICB9LCAyMDAwKTtcblxuICAgICAgICAgICAgfVxuXG5cblxuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0ZW1wSW5wdXQpOyBcbiAgICB9KTtcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29weUNvZGUnKS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkge1xuICAgICAgICBjb25zdCB1cmwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVmQ29kZScpLnRleHRDb250ZW50XG4gICAgICAgIGNvbnN0IGNvZGVFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlZkNvZGUnKTtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxUZXh0ID0gY29kZUVsZW1lbnQuaW5uZXJIVE1MO1xuICAgICAgIGNvbnN0IHRlbXBJbnB1dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0Jyk7XG4gICAgICAgdGVtcElucHV0LnZhbHVlID0gdXJsO1xuICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQodGVtcElucHV0KTtcbiAgICAgICB0ZW1wSW5wdXQuc2VsZWN0KCk7ICAvLyDQktC40LHRltGAINGC0LXQutGB0YLRgyDQsiDQv9C+0LvRllxuXG5cbiAgICAgICAgICAgY29uc3Qgc3VjY2Vzc2Z1bCA9IGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5Jyk7ICAvLyDQodC/0YDQvtCx0LAg0LrQvtC/0ZbRjtCy0LDQvdC90Y9cblxuICAgICAgICAgICAvLyDQktGW0LTQvtCx0YDQsNC20LXQvdC90Y8g0YHRgtCw0YLRg9GB0YMg0LrQvtC/0ZbRjtCy0LDQvdC90Y9cbiAgICAgICAgICAgY29uc3QgY29weUJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb3B5Q29kZScpO1xuICAgICAgICAgICBjb25zdCBjb3B5U3RhdHVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvcHlTdGF0dXNDb2RlJyk7XG5cbiAgICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgNzY4KSB7XG4gICAgICAgICAgICBjb2RlRWxlbWVudC5pbm5lckhUTUwgPSAnQ29waWVkJztcbiAgICAgICAgICAgIGNvZGVFbGVtZW50LmNsYXNzTGlzdC5hZGQoXCJjb3B5U3RhdHVzXCIpXG5cbiAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGNvZGVFbGVtZW50LmlubmVySFRNTCA9IG9yaWdpbmFsVGV4dFxuICAgICAgICAgICAgICAgIGNvZGVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoXCJjb3B5U3RhdHVzXCIpXG5cbiAgICAgICAgICAgIH0sIDIwMDApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgY29weUJ1dHRvbi5zdHlsZS50cmFuc2l0aW9uID0gJ29wYWNpdHkgMC41cyBlYXNlJztcbiAgICAgICAgICAgICAgIGNvcHlTdGF0dXMuc3R5bGUudHJhbnNpdGlvbiA9ICdvcGFjaXR5IDAuNXMgZWFzZSc7XG5cbiAgICAgICAgICAgICAgIGNvcHlCdXR0b24uc3R5bGUub3BhY2l0eSA9IDA7XG4gICAgICAgICAgICAgICBjb3B5QnV0dG9uLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgICAgICAgICBjb3B5U3RhdHVzLnN0eWxlLm9wYWNpdHkgPSAxO1xuICAgICAgICAgICAgICAgY29weVN0YXR1cy5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcblxuICAgICAgICAgICAgICAgLy8g0JLQvtC30LLRgNCw0YnQsNC10Lwg0LrQvdC+0L/QutGDIFwi0JrQvtC/0LjRgNC+0LLQsNGC0YxcIiDRh9C10YDQtdC3IDIg0YHQtdC60YPQvdC00YtcbiAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgIGNvcHlTdGF0dXMuc3R5bGUub3BhY2l0eSA9IDA7XG4gICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgIGNvcHlTdGF0dXMuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgICAgICAgICAgICAgICAgICAgICAgY29weUJ1dHRvbi5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJztcbiAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjb3B5QnV0dG9uLnN0eWxlLm9wYWNpdHkgPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICB9LCAxMCk7XG4gICAgICAgICAgICAgICAgICAgfSwgMzAwKTtcbiAgICAgICAgICAgICAgIH0sIDIwMDApO1xuXG4gICAgICAgICAgIH1cblxuXG5cbiAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHRlbXBJbnB1dCk7ICAvLyDQktC40LTQsNC70LXQvdC90Y8g0YLQuNC80YfQsNGB0L7QstC+0LPQviDQv9C+0LvRj1xuICAgfSk7XG5cblxuICAgICAgICBcbiAgICB9KTtcblxuICAgIGZ1bmN0aW9uIHVwZGF0ZVN0YXJSYXRpbmdzKCkge1xuICAgICAgICBjb25zdCBzdGFyc0VsZW1lbnRzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLnN0YXJzJyk7IC8vINCe0YLRgNC40LzRg9GU0LzQviDQstGB0ZYg0LXQu9C10LzQtdC90YLQuCDQtyDQutC70LDRgdC+0LwgLnN0YXJzXG5cbiAgICAgICAgc3RhcnNFbGVtZW50cy5mb3JFYWNoKHN0YXJzRWxlbWVudCA9PiB7XG4gICAgICAgICAgICBjb25zdCByYXRpbmcgPSBwYXJzZUZsb2F0KHN0YXJzRWxlbWVudC50ZXh0Q29udGVudCk7XG5cbiAgICAgICAgICAgIC8vINCf0LDRgNCw0LzQtdGC0YDQuCDQtNC70Y8g0LfRltGA0L7QuiDRliDQv9GA0L7QvNGW0LbQutGW0LJcbiAgICAgICAgICAgIGNvbnN0IHN0YXJXaWR0aCA9IDE0OyAvLyDRiNC40YDQuNC90LAg0L7QtNC90ZbRlNGXINC30ZbRgNC60LhcbiAgICAgICAgICAgIGNvbnN0IGdhcFdpZHRoID0gNDsgICAvLyDRiNC40YDQuNC90LAg0LLRltC00YHRgtGD0L/RgyDQvNGW0LYg0LfRltGA0LrQsNC80LhcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsV2lkdGggPSA4NjsgLy8g0LfQsNCz0LDQu9GM0L3QsCDRiNC40YDQuNC90LAg0LHQu9C+0LrRgyAo0LLQutC70Y7Rh9Cw0Y7Rh9C4INC60YDQsNC50L3RliDQstGW0LTRgdGC0YPQv9C4KVxuXG4gICAgICAgICAgICAvLyDQoNC+0LfRgNCw0YXRg9C90L7QuiDRiNC40YDQuNC90Lgg0LTQu9GPINC60L7QvdC60YDQtdGC0L3QvtCz0L4g0YDQtdC50YLQuNC90LPRg1xuICAgICAgICAgICAgbGV0IGFkanVzdGVkV2lkdGggPSAoc3RhcldpZHRoICogcmF0aW5nKSArIChnYXBXaWR0aCAqIE1hdGguZmxvb3IocmF0aW5nKSk7XG5cbiAgICAgICAgICAgIGlmIChyYXRpbmcgPT09IDQuNSkge1xuICAgICAgICAgICAgICAgIGFkanVzdGVkV2lkdGggPSA3OS45O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyYXRpbmcgPj0gNC4xICYmIHJhdGluZyA8IDQuMikge1xuICAgICAgICAgICAgICAgIGFkanVzdGVkV2lkdGggPSA3NS40O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyYXRpbmcgPj0gNC4yICYmIHJhdGluZyA8IDQuMykge1xuICAgICAgICAgICAgICAgIGFkanVzdGVkV2lkdGggPSA3Ni4wXG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJhdGluZyA+PSA0LjMgJiYgcmF0aW5nIDwgNC40KSB7XG4gICAgICAgICAgICAgICAgYWRqdXN0ZWRXaWR0aCA9IDc3LjZcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmF0aW5nID49IDQuNCAmJiByYXRpbmcgPCA0LjUpIHtcbiAgICAgICAgICAgICAgICBhZGp1c3RlZFdpZHRoID0gNzguNlxuICAgICAgICAgICAgfSBlbHNlIGlmIChyYXRpbmcgPj0gNC42ICYmIHJhdGluZyA8IDQuNykge1xuICAgICAgICAgICAgICAgIGFkanVzdGVkV2lkdGggPSA4MS4yO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyYXRpbmcgPj0gNC43ICYmIHJhdGluZyA8IDQuOCkge1xuICAgICAgICAgICAgICAgIGFkanVzdGVkV2lkdGggPSA4Mi4wO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyYXRpbmcgPj0gNC44ICYmIHJhdGluZyA8IDQuOSkge1xuICAgICAgICAgICAgICAgIGFkanVzdGVkV2lkdGggPSA4My4wO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyYXRpbmcgPj0gNC45ICYmIHJhdGluZyA8IDUuMCkge1xuICAgICAgICAgICAgICAgIGFkanVzdGVkV2lkdGggPSA4NC4yO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAocmF0aW5nID09PSA0IHx8IHJhdGluZyA9PT0gNC4wMCkge1xuICAgICAgICAgICAgICAgIGFkanVzdGVkV2lkdGggPSA3Mi45O1xuICAgICAgICAgICAgfSBpZiAocmF0aW5nID49IDMuMSAmJiByYXRpbmcgPCAzLjIpIHtcbiAgICAgICAgICAgICAgICBhZGp1c3RlZFdpZHRoID0gNTcuMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmF0aW5nID49IDMuMiAmJiByYXRpbmcgPCAzLjMpIHtcbiAgICAgICAgICAgICAgICBhZGp1c3RlZFdpZHRoID0gNTguMDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmF0aW5nID49IDMuMyAmJiByYXRpbmcgPCAzLjQpIHtcbiAgICAgICAgICAgICAgICBhZGp1c3RlZFdpZHRoID0gNjA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJhdGluZyA+PSAzLjQgJiYgcmF0aW5nIDwgMy41KSB7XG4gICAgICAgICAgICAgICAgYWRqdXN0ZWRXaWR0aCA9IDYxO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyYXRpbmcgPj0gMy42ICYmIHJhdGluZyA8IDMuNykge1xuICAgICAgICAgICAgICAgIGFkanVzdGVkV2lkdGggPSA2MztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmF0aW5nID49IDMuNyAmJiByYXRpbmcgPCAzLjgpIHtcbiAgICAgICAgICAgICAgICBhZGp1c3RlZFdpZHRoID0gNjQ7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJhdGluZyA+PSAzLjggJiYgcmF0aW5nIDwgMy45KSB7XG4gICAgICAgICAgICAgICAgYWRqdXN0ZWRXaWR0aCA9IDY1O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyYXRpbmcgPj0gMy45ICYmIHJhdGluZyA8IDQuMCkge1xuICAgICAgICAgICAgICAgIGFkanVzdGVkV2lkdGggPSA2NjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmF0aW5nID09PSAzLjUgfHwgcmF0aW5nID09PSAzLjUwKSB7XG4gICAgICAgICAgICAgICAgYWRqdXN0ZWRXaWR0aCA9IDYxLjk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJhdGluZyA9PT0gMyB8fCByYXRpbmcgPT09IDMuMDApIHtcbiAgICAgICAgICAgICAgICBhZGp1c3RlZFdpZHRoID0gNTMuOTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmF0aW5nID49IDIuMSAmJiByYXRpbmcgPCAyLjIpIHtcbiAgICAgICAgICAgICAgICBhZGp1c3RlZFdpZHRoID0gMzk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJhdGluZyA+PSAyLjIgJiYgcmF0aW5nIDwgMi4zKSB7XG4gICAgICAgICAgICAgICAgYWRqdXN0ZWRXaWR0aCA9IDQwO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyYXRpbmcgPj0gMi4zICYmIHJhdGluZyA8IDIuNCkge1xuICAgICAgICAgICAgICAgIGFkanVzdGVkV2lkdGggPSA0MjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmF0aW5nID49IDIuNCAmJiByYXRpbmcgPCAyLjUpIHtcbiAgICAgICAgICAgICAgICBhZGp1c3RlZFdpZHRoID0gNDM7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJhdGluZyA+PSAyLjYgJiYgcmF0aW5nIDwgMi43KSB7XG4gICAgICAgICAgICAgICAgYWRqdXN0ZWRXaWR0aCA9IDQ1O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyYXRpbmcgPj0gMi43ICYmIHJhdGluZyA8IDIuOCkge1xuICAgICAgICAgICAgICAgIGFkanVzdGVkV2lkdGggPSA0NjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmF0aW5nID49IDIuOCAmJiByYXRpbmcgPCAyLjkpIHtcbiAgICAgICAgICAgICAgICBhZGp1c3RlZFdpZHRoID0gNDc7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJhdGluZyA+PSAyLjkgJiYgcmF0aW5nIDwgMi4wKSB7XG4gICAgICAgICAgICAgICAgYWRqdXN0ZWRXaWR0aCA9IDQ4O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyYXRpbmcgPT09IDIuNSB8fCByYXRpbmcgPT09IDIuNTApIHtcbiAgICAgICAgICAgICAgICBhZGp1c3RlZFdpZHRoID0gNDM7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJhdGluZyA9PT0gMiB8fCByYXRpbmcgPT09IDIuMDApIHtcbiAgICAgICAgICAgICAgICBhZGp1c3RlZFdpZHRoID0gMzUuOTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmF0aW5nID09PSAxLjUgfHwgcmF0aW5nID09PSAxLjUwKSB7XG4gICAgICAgICAgICAgICAgYWRqdXN0ZWRXaWR0aCA9IDI1Ljk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJhdGluZyA+PSAxLjEgJiYgcmF0aW5nIDwgMS4yKSB7XG4gICAgICAgICAgICAgICAgYWRqdXN0ZWRXaWR0aCA9IDIxO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyYXRpbmcgPj0gMS4yICYmIHJhdGluZyA8IDEuMykge1xuICAgICAgICAgICAgICAgIGFkanVzdGVkV2lkdGggPSAyMjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmF0aW5nID49IDEuMyAmJiByYXRpbmcgPCAxLjQpIHtcbiAgICAgICAgICAgICAgICBhZGp1c3RlZFdpZHRoID0gMjQ7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJhdGluZyA+PSAxLjQgJiYgcmF0aW5nIDwgMS41KSB7XG4gICAgICAgICAgICAgICAgYWRqdXN0ZWRXaWR0aCA9IDI1O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyYXRpbmcgPj0gMS42ICYmIHJhdGluZyA8IDEuNykge1xuICAgICAgICAgICAgICAgIGFkanVzdGVkV2lkdGggPSAyNztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmF0aW5nID49IDEuNyAmJiByYXRpbmcgPCAxLjgpIHtcbiAgICAgICAgICAgICAgICBhZGp1c3RlZFdpZHRoID0gMjg7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJhdGluZyA+PSAxLjggJiYgcmF0aW5nIDwgMS45KSB7XG4gICAgICAgICAgICAgICAgYWRqdXN0ZWRXaWR0aCA9IDMwO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyYXRpbmcgPj0gMi45ICYmIHJhdGluZyA8IDIuMCkge1xuICAgICAgICAgICAgICAgIGFkanVzdGVkV2lkdGggPSAzMTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmF0aW5nID09PSAxIHx8IHJhdGluZyA9PT0gMS4wMCkge1xuICAgICAgICAgICAgICAgIGFkanVzdGVkV2lkdGggPSAxOC45O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyYXRpbmcgPT09IDAgfHwgcmF0aW5nID09PSAwLjAwKSB7XG4gICAgICAgICAgICAgICAgYWRqdXN0ZWRXaWR0aCA9IDA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJhdGluZyA+PSAwLjUgJiYgcmF0aW5nIDwgMC42KSB7XG4gICAgICAgICAgICAgICAgYWRqdXN0ZWRXaWR0aCA9IDg7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJhdGluZyA+PSAwLjEgJiYgcmF0aW5nIDwgMC4yKSB7XG4gICAgICAgICAgICAgICAgYWRqdXN0ZWRXaWR0aCA9IDM7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJhdGluZyA+PSAwLjIgJiYgcmF0aW5nIDwgMC4zKSB7XG4gICAgICAgICAgICAgICAgYWRqdXN0ZWRXaWR0aCA9IDQuNTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmF0aW5nID49IDAuMyAmJiByYXRpbmcgPCAwLjQpIHtcbiAgICAgICAgICAgICAgICBhZGp1c3RlZFdpZHRoID0gNjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmF0aW5nID49IDAuNCAmJiByYXRpbmcgPCAwLjUpIHtcbiAgICAgICAgICAgICAgICBhZGp1c3RlZFdpZHRoID0gNy41O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyYXRpbmcgPj0gMC42ICYmIHJhdGluZyA8IDAuNykge1xuICAgICAgICAgICAgICAgIGFkanVzdGVkV2lkdGggPSA5O1xuICAgICAgICAgICAgfSBlbHNlIGlmIChyYXRpbmcgPj0gMC43ICYmIHJhdGluZyA8IDAuOCkge1xuICAgICAgICAgICAgICAgIGFkanVzdGVkV2lkdGggPSAxMDtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmF0aW5nID49IDAuOCAmJiByYXRpbmcgPCAwLjkpIHtcbiAgICAgICAgICAgICAgICBhZGp1c3RlZFdpZHRoID0gMTI7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJhdGluZyA+PSAwLjkgJiYgcmF0aW5nIDwgMSkge1xuICAgICAgICAgICAgICAgIGFkanVzdGVkV2lkdGggPSAxMztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8g0J/QtdGA0LXQstGW0YDQutCwLCDRidC+0LEg0L3QtSDQv9C10YDQtdCy0LjRidGD0LLQsNGC0Lgg0LzQsNC60YHQuNC80LDQu9GM0L3RgyDRiNC40YDQuNC90YNcbiAgICAgICAgICAgIGFkanVzdGVkV2lkdGggPSBNYXRoLm1pbihhZGp1c3RlZFdpZHRoLCB0b3RhbFdpZHRoKTtcblxuICAgICAgICAgICAgLy8g0JfQsNGB0YLQvtGB0YPQstCw0L3QvdGPINC+0LHRh9C40YHQu9C10L3QvtGXINGI0LjRgNC40L3QuCDQtNC+INC10LvQtdC80LXQvdGC0LBcbiAgICAgICAgICAgIHN0YXJzRWxlbWVudC5zdHlsZS53aWR0aCA9IGAke2FkanVzdGVkV2lkdGh9cHhgO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyDQktC40LrQu9C40LrQsNGU0LzQviDRhNGD0L3QutGG0ZbRjiDQtNC70Y8g0L/QvtGH0LDRgtC60L7QstC+0LPQviDQvdCw0LvQsNGI0YLRg9Cy0LDQvdC90Y9cbiAgICB1cGRhdGVTdGFyUmF0aW5ncygpO1xuXG5cbiAgICBmdW5jdGlvbiBsb2FkU2NyaXB0KHVybCwgY2FsbGJhY2spIHtcbiAgICAgICAgY29uc3Qgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcbiAgICAgICAgc2NyaXB0LnR5cGUgPSBcInRleHQvamF2YXNjcmlwdFwiO1xuICAgICAgICBzY3JpcHQuc3JjID0gdXJsO1xuICAgICAgICBzY3JpcHQub25sb2FkID0gY2FsbGJhY2s7XG4gICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KTtcbiAgICB9XG4gICAgbG9hZFNjcmlwdChcImh0dHBzOi8vY2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL3NsaWNrLWNhcm91c2VsLzEuOC4xL3NsaWNrLm1pbi5qc1wiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IHNsaWRlQ291bnQgPSAkKCcuZmlsdGVyLWxpc3QnKS5jaGlsZHJlbigpLmxlbmd0aDtcbiAgICAgICAgY29uc3Qgc2xpZGVyV2lkdGggPSAkKCcuZmlsdGVyLWxpc3QnKS53aWR0aCgpO1xuICAgICAgICBsZXQgc2xpZGVzVG9TaG93ID0gNjtcbiAgICAgICAgaWYgKHNsaWRlcldpZHRoIDwgNjUwKSB7XG4gICAgICAgICAgICAkKCcubGVmdC1hcnJvdywgLnJpZ2h0LWFycm93JykuaGlkZSgpOyAvLyDRhdC+0LLQsNGU0LzQviDRgdGC0YDRltC70LrQuFxuXG4gICAgICAgICAgICAvLyDQhtC90ZbRhtGW0LDQu9GW0LfRg9GU0LzQviDRgdC70LDQudC00LXRgCDQsdC10Lcg0L3QtdGB0LrRltC90YfQtdC90L3QvtGXINC/0YDQvtC60YDRg9GC0LrQuFxuICAgICAgICAgICAgLy8gJCgnLmZpbHRlci1saXN0Jykuc2xpY2soe1xuICAgICAgICAgICAgLy8gICAgIHNsaWRlc1RvU2hvdzogc2xpZGVDb3VudCwgLy8g0J/QvtC60LDQt9GD0ZTQvNC+INGC0ZbQu9GM0LrQuCDQvdCw0Y/QstC90YMg0LrRltC70YzQutGW0YHRgtGMINGB0LvQsNC50LTRltCyXG4gICAgICAgICAgICAvLyAgICAgc2xpZGVzVG9TY3JvbGw6IDEsXG4gICAgICAgICAgICAvLyAgICAgaW5maW5pdGU6IGZhbHNlLCAvLyDQstC40LzQuNC60LDRlNC80L4g0L3QtdGB0LrRltC90YfQtdC90L3RltGB0YLRjFxuICAgICAgICAgICAgLy8gICAgIGFycm93czogZmFsc2UsIC8vINCy0LjQvNC40LrQsNGU0LzQviDRgdGC0YDRltC70LrQuFxuICAgICAgICAgICAgLy8gICAgIHZhcmlhYmxlV2lkdGg6IHRydWUsXG4gICAgICAgICAgICAvLyB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vINCG0L3RltGG0ZbQsNC70ZbQt9GD0ZTQvNC+INGB0LvQsNC50LTQtdGAINC3INC90LXRgdC60ZbQvdGH0LXQvdC90L7RjiDQv9GA0L7QutGA0YPRgtC60L7RjlxuICAgICAgICAgICAgJCgnLmZpbHRlci1saXN0Jykuc2xpY2soe1xuICAgICAgICAgICAgICAgIHNsaWRlc1RvU2hvdzogc2xpZGVzVG9TaG93LFxuICAgICAgICAgICAgICAgIHNsaWRlc1RvU2Nyb2xsOiAxLFxuICAgICAgICAgICAgICAgIGluZmluaXRlOiB0cnVlLFxuICAgICAgICAgICAgICAgIHByZXZBcnJvdzogJCgnLmxlZnQtYXJyb3cnKSxcbiAgICAgICAgICAgICAgICBuZXh0QXJyb3c6ICQoJy5yaWdodC1hcnJvdycpLFxuICAgICAgICAgICAgICAgIHZhcmlhYmxlV2lkdGg6IHRydWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG5cbiAgICB9KTtcblxuICAgIGxvYWRTY3JpcHQoXCJodHRwczovL2NkbmpzLmNsb3VkZmxhcmUuY29tL2FqYXgvbGlicy9saWdodHNsaWRlci8xLjEuNi9qcy9saWdodHNsaWRlci5taW4uanNcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICAkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbiAoKSB7XG5cblxuICAgICAgICAgICAgaWYgKHdpbmRvdy5pbm5lcldpZHRoIDwgNzY4KSB7XG4gICAgICAgICAgICAgICAgJChcIiNtYWluLXNsaWRlclwiKS5saWdodFNsaWRlcih7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW06IDEsICAgICAgICAgICAvLyDQmtGW0LvRjNC60ZbRgdGC0Ywg0LXQu9C10LzQtdC90YLRltCyINC00LvRjyDQv9C+0LrQsNC30YMgKDEg0LTQu9GPINC80LDQu9C10L3RjNC60LjRhSDQtdC60YDQsNC90ZbQsilcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVNYXJnaW46IDAsXG4gICAgICAgICAgICAgICAgICAgIGxvb3A6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VyOiB0cnVlLCAgICAgICAvLyDQktC80LjQutCw0ZTQvNC+INC60YDRg9Cz0LvRliDRltC90LTQuNC60LDRgtC+0YDQuCAo0L/QsNCz0ZbQvdCw0YbRltGPKVxuICAgICAgICAgICAgICAgICAgICBjb250cm9sczogZmFsc2UsICAgIC8vINCS0LjQvNC40LrQsNGU0LzQviDRgdGC0LDQvdC00LDRgNGC0L3RliDRgdGC0YDRltC70LrQuFxuICAgICAgICAgICAgICAgICAgICByZXNwb25zaXZlOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludDogNzY4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW06IDEsIC8vINCf0L7QutCw0LfRg9GU0LzQviDQv9C+IDEg0YHQu9Cw0LnQtNGDINC90LAg0YHQtdGA0LXQtNC90ZbRhSDQtdC60YDQsNC90LDRhVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlcjogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludDogNDgwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHRpbmdzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW06IDEsIC8vINCf0L7QutCw0LfRg9GU0LzQviDQv9C+IDEg0YHQu9Cw0LnQtNGDINC90LAg0LzQsNC70LXQvdGM0LrQuNGFINC10LrRgNCw0L3QsNGFXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VyOiB0cnVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vINCe0YHQvdC+0LLQvdC40Lkg0YHQu9Cw0LnQtNC10YBcbiAgICAgICAgICAgICAgICB2YXIgbWFpblNsaWRlciA9ICQoXCIjbWFpbi1zbGlkZXJcIikubGlnaHRTbGlkZXIoe1xuICAgICAgICAgICAgICAgICAgICBnYWxsZXJ5OiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgaXRlbTogMSxcbiAgICAgICAgICAgICAgICAgICAgbG9vcDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgc2xpZGVNYXJnaW46IDAsXG4gICAgICAgICAgICAgICAgICAgIGVuYWJsZURyYWc6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICB0aHVtYkl0ZW06IDMsXG4gICAgICAgICAgICAgICAgICAgIG9uU2xpZGVyTG9hZDogZnVuY3Rpb24gKGVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbC5saWdodEdhbGxlcnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yOiAnI21haW4tc2xpZGVyIC5sc2xpZGUnXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgb25BZnRlclNsaWRlOiBmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vINCe0L3QvtCy0LvRjtGU0LzQviDQstC40LTQuNC80ZbRgdGC0Ywg0LzRltC90ZbQsNGC0Y7RgFxuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlVGh1bWJuYWlscyhlbC5nZXRDdXJyZW50U2xpZGVDb3VudCgpIC0gMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgICAgIC8vINCd0LDQstGW0LPQsNGG0ZbQudC90LjQuSDRgdC70LDQudC00LXRgFxuXG5cbiAgICAgICAgICAgICAgICAvLyDQpNGD0L3QutGG0ZbRjyDQtNC70Y8g0L7QvdC+0LLQu9C10L3QvdGPINCw0LrRgtC40LLQvdC40YUg0LzRltC90ZbQsNGC0Y7RgFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHVwZGF0ZVRodW1ibmFpbHMoYWN0aXZlSW5kZXgpIHtcbiAgICAgICAgICAgICAgICAgICAgJChcIiN0aHVtYm5haWwtc2xpZGVyIGxpXCIpLnJlbW92ZUNsYXNzKFwiYWN0aXZlXCIpLmVxKGFjdGl2ZUluZGV4KS5hZGRDbGFzcyhcImFjdGl2ZVwiKTtcbiAgICAgICAgICAgICAgICAgICAgJChcIiN0aHVtYm5haWwtc2xpZGVyIGxpXCIpLmNzcyhcImRpc3BsYXlcIiwgXCJibG9ja1wiKTtcbiAgICAgICAgICAgICAgICAgICAgJChcIiN0aHVtYm5haWwtc2xpZGVyIGxpXCIpLmVxKGFjdGl2ZUluZGV4KS5jc3MoXCJkaXNwbGF5XCIsIFwibm9uZVwiKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvLyDQhtC90ZbRhtGW0LDQu9GW0LfQsNGG0ZbRjyDQsNC60YLQuNCy0L3QvtCz0L4g0LXQu9C10LzQtdC90YLRgyDQv9GA0Lgg0LfQsNCy0LDQvdGC0LDQttC10L3QvdGWXG4gICAgICAgICAgICAgICAgdXBkYXRlVGh1bWJuYWlscygwKTtcblxuICAgICAgICAgICAgICAgIC8vINCf0YDQuCDQutC70ZbQutGDINC90LAg0LzRltC90ZbQsNGC0Y7RgNGDINC/0LXRgNC10LzQuNC60LDRlNC80L4g0L7RgdC90L7QstC90LjQuSDRgdC70LDQudC0XG4gICAgICAgICAgICAgICAgJChcIiN0aHVtYm5haWwtc2xpZGVyIGxpXCIpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSAkKHRoaXMpLmluZGV4KCk7XG4gICAgICAgICAgICAgICAgICAgIG1haW5TbGlkZXIuZ29Ub1NsaWRlKGluZGV4ICsgMSk7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLmxTUGFnZXInKTtcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgICAgICAgICAgICBlbGVtZW50LnJlbW92ZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICB9KVxuICAgIGNvbnN0IHJhdGluZ0RpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwicmF0aW5nLXZhbHVlXCIpO1xuXG4gICAgLy8g0J7RgtGA0LjQvNGD0ZTQvNC+INC30L3QsNGH0LXQvdC90Y8g0Lcg0LDRgtGA0LjQsdGD0YLQsCBkYXRhLXJhdGluZ1xuICAgIGNvbnN0IHJhdGluZ1ZhbHVlID0gcmF0aW5nRGl2LmdldEF0dHJpYnV0ZShcImRhdGEtcmF0aW5nXCIpO1xuXG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiRE9NQ29udGVudExvYWRlZFwiLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHJhdGluZ0lucHV0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgaW5wdXRbbmFtZT1cInJhdGluZ1wiXVt2YWx1ZT1cIiR7cmF0aW5nVmFsdWV9XCJdYCk7XG4gICAgICAgIGlmIChyYXRpbmdJbnB1dCkge1xuICAgICAgICAgICAgcmF0aW5nSW5wdXQuY2hlY2tlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9KTtcblxuXG5cblxuXG59KShtaWRkbGV3YXJlKTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxDQUFDLFVBQVNBLEdBQUcsRUFBRTtFQUNYO0FBQ0o7QUFDQTtFQUNJQSxHQUFHLENBQUNDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsWUFBVztJQUV2QixJQUFJQyxXQUFXLEdBQUcsQ0FDZCwyQkFBMkIsRUFDM0IsMkJBQTJCLENBQzlCOztJQUVEO0FBQ1I7QUFDQTtJQUNRLElBQUlDLElBQUksS0FBS0MsR0FBRyxJQUFJLENBQUNGLFdBQVcsQ0FBQ0csUUFBUSxDQUFDQyxNQUFNLENBQUNDLFFBQVEsQ0FBQ0MsUUFBUSxDQUFDLEVBQUU7TUFDakVGLE1BQU0sQ0FBQ0YsR0FBRyxDQUFDRyxRQUFRLENBQUNFLElBQUksR0FBR0gsTUFBTSxDQUFDQyxRQUFRLENBQUNFLElBQUk7SUFDbkQ7O0lBRUE7QUFDUjtBQUNBO0lBQ1FDLENBQUMsQ0FBQ0MsUUFBUSxDQUFDLENBQUNDLFlBQVksQ0FBQyxVQUFVQyxLQUFLLEVBQUVDLEdBQUcsRUFBRUMsUUFBUSxFQUFFO01BQ3JELElBQUlELEdBQUcsQ0FBQ0UsTUFBTSxLQUFLLEdBQUcsRUFBRTtRQUNwQjtRQUNBO01BQ0o7O01BRUE7QUFDWjtBQUNBO01BQ1ksSUFDSUQsUUFBUSxDQUFDRSxHQUFHLElBQ1pQLENBQUMsQ0FBQywwQkFBMEIsQ0FBQyxDQUFDUSxNQUFNLElBQ3BD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TSxJQUFJTCxNQUFNLElBQUksR0FBRyxJQUFJQSxNQUFNLEdBQUcsR0FBRyxFQUFFO1FBQ3RDSyxhQUFhLEdBQUcsRUFBRTtNQUN0QixDQUFDLE1BQU0sSUFBSUwsTUFBTSxJQUFJLEdBQUcsSUFBSUEsTUFBTSxHQUFHLEdBQUcsRUFBRTtRQUN0Q0ssYUFBYSxHQUFHLEVBQUU7TUFDdEIsQ0FBQyxNQUFNLElBQUlMLE1BQU0sSUFBSSxHQUFHLElBQUlBLE1BQU0sR0FBRyxHQUFHLEVBQUU7UUFDdENLLGFBQWEsR0FBRyxFQUFFO01BQ3RCLENBQUMsTUFBTSxJQUFJTCxNQUFNLElBQUksR0FBRyxJQUFJQSxNQUFNLEdBQUcsR0FBRyxFQUFFO1FBQ3RDSyxhQUFhLEdBQUcsRUFBRTtNQUN0QixDQUFDLE1BQU0sSUFBSUwsTUFBTSxJQUFJLEdBQUcsSUFBSUEsTUFBTSxHQUFHLEdBQUcsRUFBRTtRQUN0Q0ssYUFBYSxHQUFHLEVBQUU7TUFDdEIsQ0FBQyxNQUFNLElBQUlMLE1BQU0sSUFBSSxHQUFHLElBQUlBLE1BQU0sR0FBRyxHQUFHLEVBQUU7UUFDdENLLGFBQWEsR0FBRyxFQUFFO01BQ3RCLENBQUMsTUFBTSxJQUFJTCxNQUFNLElBQUksR0FBRyxJQUFJQSxNQUFNLEdBQUcsR0FBRyxFQUFFO1FBQ3RDSyxhQUFhLEdBQUcsRUFBRTtNQUN0QixDQUFDLE1BQU0sSUFBSUwsTUFBTSxLQUFLLEdBQUcsSUFBSUEsTUFBTSxLQUFLLElBQUksRUFBRTtRQUMxQ0ssYUFBYSxHQUFHLEVBQUU7TUFDdEIsQ0FBQyxNQUFNLElBQUlMLE1BQU0sS0FBSyxDQUFDLElBQUlBLE1BQU0sS0FBSyxJQUFJLEVBQUU7UUFDeENLLGFBQWEsR0FBRyxJQUFJO01BQ3hCLENBQUMsTUFBTSxJQUFJTCxNQUFNLEtBQUssR0FBRyxJQUFJQSxNQUFNLEtBQUssSUFBSSxFQUFFO1FBQzFDSyxhQUFhLEdBQUcsSUFBSTtNQUN4QixDQUFDLE1BQU0sSUFBSUwsTUFBTSxJQUFJLEdBQUcsSUFBSUEsTUFBTSxHQUFHLEdBQUcsRUFBRTtRQUN0Q0ssYUFBYSxHQUFHLEVBQUU7TUFDdEIsQ0FBQyxNQUFNLElBQUlMLE1BQU0sSUFBSSxHQUFHLElBQUlBLE1BQU0sR0FBRyxHQUFHLEVBQUU7UUFDdENLLGFBQWEsR0FBRyxFQUFFO01BQ3RCLENBQUMsTUFBTSxJQUFJTCxNQUFNLElBQUksR0FBRyxJQUFJQSxNQUFNLEdBQUcsR0FBRyxFQUFFO1FBQ3RDSyxhQUFhLEdBQUcsRUFBRTtNQUN0QixDQUFDLE1BQU0sSUFBSUwsTUFBTSxJQUFJLEdBQUcsSUFBSUEsTUFBTSxHQUFHLEdBQUcsRUFBRTtRQUN0Q0ssYUFBYSxHQUFHLEVBQUU7TUFDdEIsQ0FBQyxNQUFNLElBQUlMLE1BQU0sSUFBSSxHQUFHLElBQUlBLE1BQU0sR0FBRyxHQUFHLEVBQUU7UUFDdENLLGFBQWEsR0FBRyxFQUFFO01BQ3RCLENBQUMsTUFBTSxJQUFJTCxNQUFNLElBQUksR0FBRyxJQUFJQSxNQUFNLEdBQUcsR0FBRyxFQUFFO1FBQ3RDSyxhQUFhLEdBQUcsRUFBRTtNQUN0QixDQUFDLE1BQU0sSUFBSUwsTUFBTSxJQUFJLEdBQUcsSUFBSUEsTUFBTSxHQUFHLEdBQUcsRUFBRTtRQUN0Q0ssYUFBYSxHQUFHLEVBQUU7TUFDdEIsQ0FBQyxNQUFNLElBQUlMLE1BQU0sSUFBSSxHQUFHLElBQUlBLE1BQU0sR0FBRyxHQUFHLEVBQUU7UUFDdENLLGFBQWEsR0FBRyxFQUFFO01BQ3RCLENBQUMsTUFBTSxJQUFJTCxNQUFNLEtBQUssQ0FBQyxJQUFJQSxNQUFNLEtBQUssSUFBSSxFQUFFO1FBQ3hDSyxhQUFhLEdBQUcsSUFBSTtNQUN4QixDQUFDLE1BQU0sSUFBSUwsTUFBTSxLQUFLLENBQUMsSUFBSUEsTUFBTSxLQUFLLElBQUksRUFBRTtRQUN4Q0ssYUFBYSxHQUFHLENBQUM7TUFDckIsQ0FBQyxNQUFNLElBQUlMLE1BQU0sSUFBSSxHQUFHLElBQUlBLE1BQU0sR0FBRyxHQUFHLEVBQUU7UUFDdENLLGFBQWEsR0FBRyxDQUFDO01BQ3JCLENBQUMsTUFBTSxJQUFJTCxNQUFNLElB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\n},{}]},{},[1])"]}