AzuraCast/web/static/dist/app-00181489b8.min.js

3 lines
50 KiB
JavaScript

function notify(e,a,t){var o={type:a,allow_dismiss:!0,label:"Cancel",className:"btn-xs btn-inverse align-right",placement:{from:"top",align:"right"},delay:1e4,z_index:8,animate:{enter:"animated fadeIn",exit:"animated fadeOut"},offset:{x:20,y:85}};t&&(o.placement.from="top",o.placement.align="center",o.offset.y=20),$.notify({message:e},o)}$(document).ready(function(){$("body").on("click","[data-ma-action]",function(e){e.preventDefault();var a,t=$(this);switch($(this).data("ma-action")){case"sidebar-open":var o=t.data("ma-target");$("body").addClass("sidebar-toggled"),$("#header, #header-alt, #main").append('<div data-ma-action="sidebar-close" class="ma-backdrop" />'),t.addClass("toggled"),$(o).addClass("toggled");break;case"sidebar-close":$("body").removeClass("sidebar-toggled"),$(".ma-backdrop").remove(),$(".sidebar, .ma-trigger").removeClass("toggled");break;case"submenu-toggle":t.next().slideToggle(200),t.parent().toggleClass("toggled");break;case"search-open":$("#header").addClass("search-toggled"),$("#top-search-wrap input").focus();break;case"search-close":$("#header").removeClass("search-toggled");break;case"clear-notification":var n=t.closest(".list-group"),i=n.find(".list-group-item"),s=i.size();t.parent().fadeOut(),n.find(".list-group").prepend('<i class="grid-loading hide-it"></i>'),n.find(".grid-loading").fadeIn(1500);var l=0;i.each(function(){var e=$(this);setTimeout(function(){e.addClass("animated fadeOutRightBig").delay(1e3).queue(function(){e.remove()})},l+=150)}),setTimeout(function(){$("#notifications").addClass("empty")},150*s+200);break;case"fullscreen":;(a=document.documentElement).requestFullscreen?a.requestFullscreen():a.mozRequestFullScreen?a.mozRequestFullScreen():a.webkitRequestFullscreen?a.webkitRequestFullscreen():a.msRequestFullscreen&&a.msRequestFullscreen();break;case"clear-localstorage":swal({title:"Are you sure?",text:"All your saved localStorage values will be removed",type:"warning",showCancelButton:!0,confirmButtonText:"Yes, delete it!",closeOnConfirm:!1},function(){localStorage.clear(),swal("Done!","localStorage is cleared","success")});break;case"print":window.print();break;case"login-switch":var r=t.data("ma-block");t.closest(".lc-block").removeClass("toggled"),setTimeout(function(){$(r).addClass("toggled")});break;case"profile-edit":t.closest(".pmb-block").toggleClass("toggled");break;case"profile-edit-cancel":$(this).closest(".pmb-block").removeClass("toggled");break;case"action-header-open":ahParent=t.closest(".action-header").find(".ah-search"),ahParent.fadeIn(300),ahParent.find(".ahs-input").focus();break;case"action-header-close":ahParent.fadeOut(300),setTimeout(function(){ahParent.find(".ahs-input").val("")},350);break;case"wall-comment-open":t.closest(".wic-form").hasClass("toggled")||t.closest(".wic-form").addClass("toggled");break;case"wall-comment-close":t.closest(".wic-form").find("textarea").val(""),t.closest(".wic-form").removeClass("toggled");break;case"todo-form-open":t.closest(".t-add").addClass("toggled");break;case"todo-form-close":t.closest(".t-add").removeClass("toggled"),t.closest(".t-add").find("textarea").val("")}})}),$(function(){$("a.btn-danger").on("click",function(e){e.preventDefault();var a=$(this).attr("href");return swal({title:"Are you sure?",type:"warning",showCancelButton:!0,confirmButtonColor:"#3085d6",cancelButtonColor:"#d33",confirmButtonText:"Yes",closeOnConfirm:!1,showLoaderOnConfirm:!0},function(){window.location.href=a}),!1})}),$(function(){$("form.form").each(function(){var e=$(this);e.addClass("fa-form-engine fa-form"),e.find(".form-group > label").addClass("control-label"),e.find("input:not(input[type=button],input[type=submit],input[type=reset],input[type=radio],input[type=checkbox]),textarea,select").addClass("form-control"),e.find("select").wrap('<div class="select" />'),autosize(e.find("textarea")),e.find("input[type=radio]").each(function(){$(this).closest(".form-field").addClass("radio-group"),$(this).next("label").addBack().wrapAll('<div class="radio m-b-15" />')}),e.find("input[type=checkbox]").each(function(){$(this).closest(".form-field").addClass("checkbox-group"),$(this).next("label").addBack().wrapAll('<div class="checkbox m-b-15" />')}),e.find("input[type=checkbox],input[type=radio]").after('<i class="input-helper"></i>'),e.find("input[type=checkbox].inline").removeClass("inline").closest("div.checkbox").addClass("checkbox-inline"),e.find("input[type=radio].inline").removeClass("inline").closest("div.radio").addClass("radio-inline"),e.find("div.checkbox:not(.checkbox-inline)").addClass("m-b-15"),e.find("div.radio:not(.radio-inline)").addClass("m-b-15"),e.find(".help-block.form-error").parent().addClass("has-error"),e.find(".help-block.form-success").parent().addClass("has-success"),e.find(".help-block.form-warning").parent().addClass("has-warning"),e.find("input[type=button],input[type=submit],input[type=reset]").addClass("btn m-t-10")})}),/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)&&$("html").addClass("ismobile"),$(document).ready(function(){var e,a;if($("html").hasClass("ismobile")||$(".c-overflow")[0]&&(e="minimal-dark",a="y",$(".c-overflow").mCustomScrollbar({theme:e,scrollInertia:100,axis:"mousewheelaxis",mouseWheel:{enable:!0,axis:a,preventDefault:!0}})),$(".dropdown")[0]&&($("body").on("click",".dropdown.open .dropdown-menu",function(e){e.stopPropagation()}),$(".dropdown").on("shown.bs.dropdown",function(e){$(this).attr("data-animation")&&($animArray=[],$animation=$(this).data("animation"),$animArray=$animation.split(","),$animationIn="animated "+$animArray[0],$animationOut="animated "+$animArray[1],$animationDuration="",$animArray[2]?$animationDuration=$animArray[2]:$animationDuration=500,$(this).find(".dropdown-menu").removeClass($animationOut),$(this).find(".dropdown-menu").addClass($animationIn))}),$(".dropdown").on("hide.bs.dropdown",function(e){$(this).attr("data-animation")&&(e.preventDefault(),$this=$(this),$dropdownMenu=$this.find(".dropdown-menu"),$dropdownMenu.addClass($animationOut),setTimeout(function(){$this.removeClass("open")},$animationDuration))})),$(".auto-size")[0]&&autosize($(".auto-size")),$(".fg-line")[0]&&($("body").on("focus",".fg-line .form-control",function(){$(this).closest(".fg-line").addClass("fg-toggled")}),$("body").on("blur",".form-control",function(){var e=$(this).closest(".form-group, .input-group"),a=e.find(".form-control").val();e.hasClass("fg-float")?0==a.length&&$(this).closest(".fg-line").removeClass("fg-toggled"):$(this).closest(".fg-line").removeClass("fg-toggled")})),$(".fg-float")[0]&&$(".fg-float .form-control").each(function(){0==!$(this).val().length&&$(this).closest(".fg-line").addClass("fg-toggled")}),$("#input-slider")[0]){var t=document.getElementById("input-slider");noUiSlider.create(t,{start:[20],connect:"lower",range:{min:0,max:100}})}if($("#input-slider-range")[0]){var o=document.getElementById("input-slider-range");noUiSlider.create(o,{start:[40,70],connect:!0,range:{min:0,max:100}})}if($("#input-slider-value")[0]){var n=document.getElementById("input-slider-value");noUiSlider.create(n,{start:[10,50],connect:!0,range:{min:0,max:100}}),n.noUiSlider.on("update",function(e,a){document.getElementById("input-slider-value-output").innerHTML=e[a]})}$("input-mask")[0]&&$(".input-mask").mask(),$(".html-editor")[0]&&$(".html-editor").summernote({height:150}),$(".html-editor-click")[0]&&($("body").on("click",".hec-button",function(){$(".html-editor-click").summernote({focus:!0}),$(".hec-save").show()}),$("body").on("click",".hec-save",function(){$(".html-editor-click").code(),$(".html-editor-click").destroy(),$(".hec-save").hide()})),$(".html-editor-airmod")[0]&&$(".html-editor-airmod").summernote({airMode:!0}),$(".date-time-picker")[0]&&$(".date-time-picker").datetimepicker(),$(".time-picker")[0]&&$(".time-picker").datetimepicker({format:"LT"}),$(".date-picker")[0]&&$(".date-picker").datetimepicker({format:"DD/MM/YYYY"}),$(".date-picker").on("dp.hide",function(){$(this).closest(".dtp-container").removeClass("fg-toggled"),$(this).blur()}),$(".lightbox")[0]&&$(".lightbox").lightGallery({enableTouch:!0}),$("body").on("click",".a-prevent",function(e){e.preventDefault()}),$(".collapse")[0]&&($(".collapse").on("show.bs.collapse",function(e){$(this).closest(".panel").find(".panel-heading").addClass("active")}),$(".collapse").on("hide.bs.collapse",function(e){$(this).closest(".panel").find(".panel-heading").removeClass("active")}),$(".collapse.in").each(function(){$(this).closest(".panel").find(".panel-heading").addClass("active")})),$('[data-toggle="tooltip"]')[0]&&$('[data-toggle="tooltip"]').tooltip(),$('[data-toggle="popover"]')[0]&&$('[data-toggle="popover"]').popover(),$("html").hasClass("ie9")&&$("input, textarea").placeholder({customClass:"ie9-placeholder"})}),$(document).ready(function(){"function"==typeof zxcvbn&&$("input[type=password].strength").on("keyup",function(e){var a=zxcvbn($(this).val()),t=a.score,o=$(this).closest(".form-group");o.length||(o=$(this).closest("div"));var n=o.find(".help-block.password-explanation");if(!n.length){n=$('<small class="help-block password-explanation" />');var i=o.find("label");i.length?i.after(n):$(this).after(n),n=o.find(".help-block.password-explanation")}switch(a.feedback.warning?n.text(a.feedback.warning).show():n.hide(),o.removeClass("has-success has-warning has-error"),t){case 0:case 1:o.addClass("has-error");break;case 2:case 3:o.addClass("has-warning");break;case 4:o.addClass("has-success")}})});
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vdGlmeS5qcyIsImFjdGlvbnMuanMiLCJjb25maXJtLWRhbmdlci5qcyIsImZvcm1zLmpzIiwiZnVuY3Rpb25zLmpzIiwicGFzc3dvcmQtc2VjdXJpdHkuanMiXSwibmFtZXMiOlsibm90aWZ5IiwibWVzc2FnZSIsInR5cGUiLCJtaW5pbWFsX2xheW91dCIsImdyb3dsU2V0dGluZ3MiLCJhbGxvd19kaXNtaXNzIiwibGFiZWwiLCJjbGFzc05hbWUiLCJwbGFjZW1lbnQiLCJmcm9tIiwiYWxpZ24iLCJkZWxheSIsInpfaW5kZXgiLCJhbmltYXRlIiwiZW50ZXIiLCJleGl0Iiwib2Zmc2V0IiwieCIsInkiLCIkIiwiZG9jdW1lbnQiLCJyZWFkeSIsIm9uIiwiZSIsInByZXZlbnREZWZhdWx0IiwiZWxlbWVudCIsIiR0aGlzIiwidGhpcyIsImRhdGEiLCJ0YXJnZXQiLCJhZGRDbGFzcyIsImFwcGVuZCIsInJlbW92ZUNsYXNzIiwicmVtb3ZlIiwibmV4dCIsInNsaWRlVG9nZ2xlIiwicGFyZW50IiwidG9nZ2xlQ2xhc3MiLCJmb2N1cyIsImNsb3Nlc3QiLCJmaW5kIiwieiIsInNpemUiLCJmYWRlT3V0IiwicHJlcGVuZCIsImZhZGVJbiIsInciLCJlYWNoIiwic2V0VGltZW91dCIsInF1ZXVlIiwiZG9jdW1lbnRFbGVtZW50IiwicmVxdWVzdEZ1bGxzY3JlZW4iLCJtb3pSZXF1ZXN0RnVsbFNjcmVlbiIsIndlYmtpdFJlcXVlc3RGdWxsc2NyZWVuIiwibXNSZXF1ZXN0RnVsbHNjcmVlbiIsInN3YWwiLCJ0aXRsZSIsInRleHQiLCJzaG93Q2FuY2VsQnV0dG9uIiwiY29uZmlybUJ1dHRvblRleHQiLCJjbG9zZU9uQ29uZmlybSIsImxvY2FsU3RvcmFnZSIsImNsZWFyIiwid2luZG93IiwicHJpbnQiLCJsb2dpbmJsb2NrIiwiYWhQYXJlbnQiLCJ2YWwiLCJoYXNDbGFzcyIsImxpbmtVcmwiLCJhdHRyIiwiY29uZmlybUJ1dHRvbkNvbG9yIiwiY2FuY2VsQnV0dG9uQ29sb3IiLCJzaG93TG9hZGVyT25Db25maXJtIiwibG9jYXRpb24iLCJocmVmIiwiJGZvcm0iLCJ3cmFwIiwiYXV0b3NpemUiLCJhZGRCYWNrIiwid3JhcEFsbCIsImFmdGVyIiwidGVzdCIsIm5hdmlnYXRvciIsInVzZXJBZ2VudCIsInRoZW1lIiwibW91c2V3aGVlbGF4aXMiLCJtQ3VzdG9tU2Nyb2xsYmFyIiwic2Nyb2xsSW5lcnRpYSIsImF4aXMiLCJtb3VzZVdoZWVsIiwiZW5hYmxlIiwic3RvcFByb3BhZ2F0aW9uIiwiJGFuaW1BcnJheSIsIiRhbmltYXRpb24iLCJzcGxpdCIsIiRhbmltYXRpb25JbiIsIiRhbmltYXRpb25PdXQiLCIkYW5pbWF0aW9uRHVyYXRpb24iLCIkZHJvcGRvd25NZW51IiwicCIsImkiLCJsZW5ndGgiLCJzbGlkZXIiLCJnZXRFbGVtZW50QnlJZCIsIm5vVWlTbGlkZXIiLCJjcmVhdGUiLCJzdGFydCIsImNvbm5lY3QiLCJyYW5nZSIsIm1pbiIsIm1heCIsInNsaWRlclJhbmdlIiwic2xpZGVyUmFuZ2VWYWx1ZSIsInZhbHVlcyIsImhhbmRsZSIsImlubmVySFRNTCIsIm1hc2siLCJzdW1tZXJub3RlIiwiaGVpZ2h0Iiwic2hvdyIsImNvZGUiLCJkZXN0cm95IiwiaGlkZSIsImFpck1vZGUiLCJkYXRldGltZXBpY2tlciIsImZvcm1hdCIsImJsdXIiLCJsaWdodEdhbGxlcnkiLCJlbmFibGVUb3VjaCIsInRvb2x0aXAiLCJwb3BvdmVyIiwicGxhY2Vob2xkZXIiLCJjdXN0b21DbGFzcyIsInp4Y3ZibiIsInJlc3VsdCIsInNjb3JlIiwiZ3JvdXAiLCJleHBsYW5hdGlvbiIsImZlZWRiYWNrIiwid2FybmluZyJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBQUEsT0FBQUMsRUFBQUMsRUFBQUMsR0FFQSxJQUFBQyxHQUNBRixLQUFBQSxFQUNBRyxlQUFBLEVBQ0FDLE1BQUEsU0FDQUMsVUFBQSxpQ0FDQUMsV0FDQUMsS0FBQSxNQUNBQyxNQUFBLFNBRUFDLE1BQUEsSUFD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QUNBMkcsRUFBQTNHLFNBQUEsZUFDQSxNQUVBLEtBQUEsRUFDQTJHLEVBQUEzRyxTQUFBIiwiZmlsZSI6ImFwcC5taW4uanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBub3RpZnkobWVzc2FnZSwgdHlwZSwgbWluaW1hbF9sYXlvdXQpIHtcblxuICAgIHZhciBncm93bFNldHRpbmdzID0ge1xuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBhbGxvd19kaXNtaXNzOiB0cnVlLFxuICAgICAgICBsYWJlbDogJ0NhbmNlbCcsXG4gICAgICAgIGNsYXNzTmFtZTogJ2J0bi14cyBidG4taW52ZXJzZSBhbGlnbi1yaWdodCcsXG4gICAgICAgIHBsYWNlbWVudDoge1xuICAgICAgICAgICAgZnJvbTogJ3RvcCcsXG4gICAgICAgICAgICBhbGlnbjogJ3JpZ2h0J1xuICAgICAgICB9LFxuICAgICAgICBkZWxheTogMTAwMDAsXG4gICAgICAgIHpfaW5kZXg6IDgsXG4gICAgICAgIGFuaW1hdGU6IHtcbiAgICAgICAgICAgIGVudGVyOiAnYW5pbWF0ZWQgZmFkZUluJyxcbiAgICAgICAgICAgIGV4aXQ6ICdhbmltYXRlZCBmYWRlT3V0J1xuICAgICAgICB9LFxuICAgICAgICBvZmZzZXQ6IHtcbiAgICAgICAgICAgIHg6IDIwLFxuICAgICAgICAgICAgeTogODVcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAobWluaW1hbF9sYXlvdXQpIHtcbiAgICAgICAgZ3Jvd2xTZXR0aW5ncy5wbGFjZW1lbnQuZnJvbSA9ICd0b3AnO1xuICAgICAgICBncm93bFNldHRpbmdzLnBsYWNlbWVudC5hbGlnbiA9ICdjZW50ZXInO1xuICAgICAgICBncm93bFNldHRpbmdzLm9mZnNldC55ID0gMjA7XG4gICAgfVxuXG4gICAgJC5ub3RpZnkoeyBtZXNzYWdlOiBtZXNzYWdlIH0sIGdyb3dsU2V0dGluZ3MpO1xuXG59IiwiJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24gKCkge1xuICAgICQoJ2JvZHknKS5vbignY2xpY2snLCAnW2RhdGEtbWEtYWN0aW9uXScsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICB2YXIgJHRoaXMgPSAkKHRoaXMpO1xuICAgICAgICB2YXIgYWN0aW9uID0gJCh0aGlzKS5kYXRhKCdtYS1hY3Rpb24nKTtcblxuICAgICAgICBzd2l0Y2ggKGFjdGlvbikge1xuXG4gICAgICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgICAgICBTaWRlYmFyICYgQ2hhdCBPcGVuL0Nsb3NlXG4gICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuICAgICAgICAgICAgY2FzZSAnc2lkZWJhci1vcGVuJzpcbiAgICAgICAgICAgICAgICB2YXIgdGFyZ2V0ID0gJHRoaXMuZGF0YSgnbWEtdGFyZ2V0Jyk7XG4gICAgICAgICAgICAgICAgdmFyIGJhY2tkcm9wID0gJzxkaXYgZGF0YS1tYS1hY3Rpb249XCJzaWRlYmFyLWNsb3NlXCIgY2xhc3M9XCJtYS1iYWNrZHJvcFwiIC8+JztcblxuICAgICAgICAgICAgICAgICQoJ2JvZHknKS5hZGRDbGFzcygnc2lkZWJhci10b2dnbGVkJyk7XG4gICAgICAgICAgICAgICAgJCgnI2hlYWRlciwgI2hlYWRlci1hbHQsICNtYWluJykuYXBwZW5kKGJhY2tkcm9wKTtcbiAgICAgICAgICAgICAgICAkdGhpcy5hZGRDbGFzcygndG9nZ2xlZCcpO1xuICAgICAgICAgICAgICAgICQodGFyZ2V0KS5hZGRDbGFzcygndG9nZ2xlZCcpO1xuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ3NpZGViYXItY2xvc2UnOlxuICAgICAgICAgICAgICAgICQoJ2JvZHknKS5yZW1vdmVDbGFzcygnc2lkZWJhci10b2dnbGVkJyk7XG4gICAgICAgICAgICAgICAgJCgnLm1hLWJhY2tkcm9wJykucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgJCgnLnNpZGViYXIsIC5tYS10cmlnZ2VyJykucmVtb3ZlQ2xhc3MoJ3RvZ2dsZWQnKVxuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cblxuICAgICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAgICAgTWFpbm1lbnUgU3VibWVudSBUb2dnbGVcbiAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4gICAgICAgICAgICBjYXNlICdzdWJtZW51LXRvZ2dsZSc6XG4gICAgICAgICAgICAgICAgJHRoaXMubmV4dCgpLnNsaWRlVG9nZ2xlKDIwMCk7XG4gICAgICAgICAgICAgICAgJHRoaXMucGFyZW50KCkudG9nZ2xlQ2xhc3MoJ3RvZ2dsZWQnKTtcblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG5cbiAgICAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgICAgIFRvcCBTZWFyY2ggT3Blbi9DbG9zZVxuICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbiAgICAgICAgICAgIC8vT3BlblxuICAgICAgICAgICAgY2FzZSAnc2VhcmNoLW9wZW4nOlxuICAgICAgICAgICAgICAgICQoJyNoZWFkZXInKS5hZGRDbGFzcygnc2VhcmNoLXRvZ2dsZWQnKTtcbiAgICAgICAgICAgICAgICAkKCcjdG9wLXNlYXJjaC13cmFwIGlucHV0JykuZm9jdXMoKTtcblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvL0Nsb3NlXG4gICAgICAgICAgICBjYXNlICdzZWFyY2gtY2xvc2UnOlxuICAgICAgICAgICAgICAgICQoJyNoZWFkZXInKS5yZW1vdmVDbGFzcygnc2VhcmNoLXRvZ2dsZWQnKTtcblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG5cbiAgICAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgICAgIEhlYWRlciBOb3RpZmljYXRpb24gQ2xlYXJcbiAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4gICAgICAgICAgICBjYXNlICdjbGVhci1ub3RpZmljYXRpb24nOlxuICAgICAgICAgICAgICAgIHZhciB4ID0gJHRoaXMuY2xvc2VzdCgnLmxpc3QtZ3JvdXAnKTtcbiAgICAgICAgICAgICAgICB2YXIgeSA9IHguZmluZCgnLmxpc3QtZ3JvdXAtaXRlbScpO1xuICAgICAgICAgICAgICAgIHZhciB6ID0geS5zaXplKCk7XG5cbiAgICAgICAgICAgICAgICAkdGhpcy5wYXJlbnQoKS5mYWRlT3V0KCk7XG5cbiAgICAgICAgICAgICAgICB4LmZpbmQoJy5saXN0LWdyb3VwJykucHJlcGVuZCgnPGkgY2xhc3M9XCJncmlkLWxvYWRpbmcgaGlkZS1pdFwiPjwvaT4nKTtcbiAgICAgICAgICAgICAgICB4LmZpbmQoJy5ncmlkLWxvYWRpbmcnKS5mYWRlSW4oMTUwMCk7XG5cblxuICAgICAgICAgICAgICAgIHZhciB3ID0gMDtcbiAgICAgICAgICAgICAgICB5LmVhY2goZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHogPSAkKHRoaXMpO1xuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgICAgICB6LmFkZENsYXNzKCdhbmltYXRlZCBmYWRlT3V0UmlnaHRCaWcnKS5kZWxheSgxMDAwKS5xdWV1ZShmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHoucmVtb3ZlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfSwgdys9MTUwKTtcbiAgICAgICAgICAgICAgICB9KVxuXG4gICAgICAgICAgICAgICAgLy9Qb3B1cCBlbXB0eSBtZXNzYWdlXG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpe1xuICAgICAgICAgICAgICAgICAgICAkKCcjbm90aWZpY2F0aW9ucycpLmFkZENsYXNzKCdlbXB0eScpO1xuICAgICAgICAgICAgICAgIH0sICh6KjE1MCkrMjAwKTtcblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG5cbiAgICAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgICAgIEZ1bGxzY3JlZW4gQnJvd3NpbmdcbiAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4gICAgICAgICAgICBjYXNlICdmdWxsc2NyZWVuJzpcbiAgICAgICAgICAgICAgICAvL0xhdW5jaFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGxhdW5jaEludG9GdWxsc2NyZWVuKGVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYoZWxlbWVudC5yZXF1ZXN0RnVsbHNjcmVlbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5yZXF1ZXN0RnVsbHNjcmVlbigpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYoZWxlbWVudC5tb3pSZXF1ZXN0RnVsbFNjcmVlbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC5tb3pSZXF1ZXN0RnVsbFNjcmVlbigpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYoZWxlbWVudC53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudC53ZWJraXRSZXF1ZXN0RnVsbHNjcmVlbigpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYoZWxlbWVudC5tc1JlcXVlc3RGdWxsc2NyZWVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50Lm1zUmVxdWVzdEZ1bGxzY3JlZW4oKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIC8vRXhpdFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGV4aXRGdWxsc2NyZWVuKCkge1xuXG4gICAgICAgICAgICAgICAgICAgIGlmKGRvY3VtZW50LmV4aXRGdWxsc2NyZWVuKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5leGl0RnVsbHNjcmVlbigpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYoZG9jdW1lbnQubW96Q2FuY2VsRnVsbFNjcmVlbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQubW96Q2FuY2VsRnVsbFNjcmVlbigpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYoZG9jdW1lbnQud2Via2l0RXhpdEZ1bGxzY3JlZW4pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LndlYmtpdEV4aXRGdWxsc2NyZWVuKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBsYXVuY2hJbnRvRnVsbHNjcmVlbihkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpO1xuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cblxuICAgICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAgICAgQ2xlYXIgTG9jYWwgU3RvcmFnZVxuICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbiAgICAgICAgICAgIGNhc2UgJ2NsZWFyLWxvY2Fsc3RvcmFnZSc6XG4gICAgICAgICAgICAgICAgc3dhbCh7XG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcIkFyZSB5b3Ugc3VyZT9cIixcbiAgICAgICAgICAgICAgICAgICAgdGV4dDogXCJBbGwgeW91ciBzYXZlZCBsb2NhbFN0b3JhZ2UgdmFsdWVzIHdpbGwgYmUgcmVtb3ZlZFwiLFxuICAgICAgICAgICAgICAgICAgICB0eXBlOiBcIndhcm5pbmdcIixcbiAgICAgICAgICAgICAgICAgICAgc2hvd0NhbmNlbEJ1dHRvbjogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6IFwiWWVzLCBkZWxldGUgaXQhXCIsXG4gICAgICAgICAgICAgICAgICAgIGNsb3NlT25Db25maXJtOiBmYWxzZVxuICAgICAgICAgICAgICAgIH0sIGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgIGxvY2FsU3RvcmFnZS5jbGVhcigpO1xuICAgICAgICAgICAgICAgICAgICBzd2FsKFwiRG9uZSFcIiwgXCJsb2NhbFN0b3JhZ2UgaXMgY2xlYXJlZFwiLCBcInN1Y2Nlc3NcIik7XG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBicmVhaztcblxuXG4gICAgICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgICAgICBQcmludFxuICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbiAgICAgICAgICAgIGNhc2UgJ3ByaW50JzpcblxuICAgICAgICAgICAgICAgIHdpbmRvdy5wcmludCgpO1xuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cblxuICAgICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAgICAgTG9naW4gV2luZG93IFN3aXRjaFxuICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbiAgICAgICAgICAgIGNhc2UgJ2xvZ2luLXN3aXRjaCc6XG4gICAgICAgICAgICAgICAgdmFyIGxvZ2luYmxvY2sgPSAkdGhpcy5kYXRhKCdtYS1ibG9jaycpO1xuICAgICAgICAgICAgICAgIHZhciBsb2dpblBhcmVudCA9ICR0aGlzLmNsb3Nlc3QoJy5sYy1ibG9jaycpO1xuXG4gICAgICAgICAgICAgICAgbG9naW5QYXJlbnQucmVtb3ZlQ2xhc3MoJ3RvZ2dsZWQnKTtcblxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtcbiAgICAgICAgICAgICAgICAgICAgJChsb2dpbmJsb2NrKS5hZGRDbGFzcygndG9nZ2xlZCcpO1xuICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cblxuICAgICAgICAgICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAgICAgUHJvZmlsZSBFZGl0L0VkaXQgQ2FuY2VsXG4gICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuICAgICAgICAgICAgLy9FZGl0XG4gICAgICAgICAgICBjYXNlICdwcm9maWxlLWVkaXQnOlxuICAgICAgICAgICAgICAgICR0aGlzLmNsb3Nlc3QoJy5wbWItYmxvY2snKS50b2dnbGVDbGFzcygndG9nZ2xlZCcpO1xuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIGNhc2UgJ3Byb2ZpbGUtZWRpdC1jYW5jZWwnOlxuICAgICAgICAgICAgICAgICQodGhpcykuY2xvc2VzdCgnLnBtYi1ibG9jaycpLnJlbW92ZUNsYXNzKCd0b2dnbGVkJyk7XG5cbiAgICAgICAgICAgICAgICBicmVhaztcblxuXG4gICAgICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgICAgICBBY3Rpb24gSGVhZGVyIE9wZW4vQ2xvc2VcbiAgICAgICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4gICAgICAgICAgICAvL09wZW5cbiAgICAgICAgICAgIGNhc2UgJ2FjdGlvbi1oZWFkZXItb3Blbic6XG4gICAgICAgICAgICAgICAgYWhQYXJlbnQgPSAkdGhpcy5jbG9zZXN0KCcuYWN0aW9uLWhlYWRlcicpLmZpbmQoJy5haC1zZWFyY2gnKTtcblxuICAgICAgICAgICAgICAgIGFoUGFyZW50LmZhZGVJbigzMDApO1xuICAgICAgICAgICAgICAgIGFoUGFyZW50LmZpbmQoJy5haHMtaW5wdXQnKS5mb2N1cygpO1xuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICAgIC8vQ2xvc2VcbiAgICAgICAgICAgIGNhc2UgJ2FjdGlvbi1oZWFkZXItY2xvc2UnOlxuICAgICAgICAgICAgICAgIGFoUGFyZW50LmZhZGVPdXQoMzAwKTtcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7XG4gICAgICAgICAgICAgICAgICAgIGFoUGFyZW50LmZpbmQoJy5haHMtaW5wdXQnKS52YWwoJycpO1xuICAgICAgICAgICAgICAgIH0sIDM1MCk7XG5cbiAgICAgICAgICAgICAgICBicmVhaztcblxuXG4gICAgICAgICAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgICAgICBXYWxsIENvbW1lbnQgT3Blbi9DbG9zZVxuICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbiAgICAgICAgICAgIC8vT3BlblxuICAgICAgICAgICAgY2FzZSAnd2FsbC1jb21tZW50LW9wZW4nOlxuICAgICAgICAgICAgICAgIGlmKCEoJHRoaXMpLmNsb3Nlc3QoJy53aWMtZm9ybScpLmhhc0NsYXNzKCd0b2dnbGVkJykpIHtcbiAgICAgICAgICAgICAgICAgICAgJHRoaXMuY2xvc2VzdCgnLndpYy1mb3JtJykuYWRkQ2xhc3MoJ3RvZ2dsZWQnKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgLy9DbG9zZVxuICAgICAgICAgICAgY2FzZSAnd2FsbC1jb21tZW50LWNsb3NlJzpcbiAgICAgICAgICAgICAgICAkdGhpcy5jbG9zZXN0KCcud2ljLWZvcm0nKS5maW5kKCd0ZXh0YXJlYScpLnZhbCgnJyk7XG4gICAgICAgICAgICAgICAgJHRoaXMuY2xvc2VzdCgnLndpYy1mb3JtJykucmVtb3ZlQ2xhc3MoJ3RvZ2dsZWQnKTtcblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG5cbiAgICAgICAgICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgICAgIFRvZG8gRm9ybSBPcGVuL0Nsb3NlXG4gICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuICAgICAgICAgICAgLy9PcGVuXG4gICAgICAgICAgICBjYXNlICd0b2RvLWZvcm0tb3Blbic6XG4gICAgICAgICAgICAgICAgJHRoaXMuY2xvc2VzdCgnLnQtYWRkJykuYWRkQ2xhc3MoJ3RvZ2dsZWQnKTtcblxuICAgICAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgICAvL0Nsb3NlXG4gICAgICAgICAgICBjYXNlICd0b2RvLWZvcm0tY2xvc2UnOlxuICAgICAgICAgICAgICAgICR0aGlzLmNsb3Nlc3QoJy50LWFkZCcpLnJlbW92ZUNsYXNzKCd0b2dnbGVkJyk7XG4gICAgICAgICAgICAgICAgJHRoaXMuY2xvc2VzdCgnLnQtYWRkJykuZmluZCgndGV4dGFyZWEnKS52YWwoJycpO1xuXG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9KTtcbn0pO1xuIiwiJChmdW5jdGlvbigpIHtcblxuICAgICQoJ2EuYnRuLWRhbmdlcicpLm9uKCdjbGljaycsIGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgdmFyIGxpbmtVcmwgPSAkKHRoaXMpLmF0dHIoJ2hyZWYnKTtcblxuICAgICAgICBzd2FsKHtcbiAgICAgICAgICAgIHRpdGxlOiAnQXJlIHlvdSBzdXJlPycsXG4gICAgICAgICAgICB0eXBlOiAnd2FybmluZycsXG4gICAgICAgICAgICBzaG93Q2FuY2VsQnV0dG9uOiB0cnVlLFxuICAgICAgICAgICAgY29uZmlybUJ1dHRvbkNvbG9yOiAnIzMwODVkNicsXG4gICAgICAgICAgICBjYW5jZWxCdXR0b25Db2xvcjogJyNkMzMnLFxuICAgICAgICAgICAgY29uZmlybUJ1dHRvblRleHQ6ICdZZXMnLFxuICAgICAgICAgICAgY2xvc2VPbkNvbmZpcm06IGZhbHNlLFxuICAgICAgICAgICAgc2hvd0xvYWRlck9uQ29uZmlybTogdHJ1ZVxuICAgICAgICB9LCBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gbGlua1VybDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgfSk7XG5cbn0pO1xuXG4iLCIkKGZ1bmN0aW9uKCkge1xuXG4gICAgJCgnZm9ybS5mb3JtJykuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyICRmb3JtID0gJCh0aGlzKTtcblxuICAgICAgICAkZm9ybS5hZGRDbGFzcygnZmEtZm9ybS1lbmdpbmUgZmEtZm9ybScpO1xuXG4gICAgICAgICRmb3JtLmZpbmQoJy5mb3JtLWdyb3VwID4gbGFiZWwnKS5hZGRDbGFzcygnY29udHJvbC1sYWJlbCcpO1xuXG4gICAgICAgICRmb3JtLmZpbmQoJ2lucHV0Om5vdChpbnB1dFt0eXBlPWJ1dHRvbl0saW5wdXRbdHlwZT1zdWJtaXRdLGlucHV0W3R5cGU9cmVzZXRdLGlucHV0W3R5cGU9cmFkaW9dLGlucHV0W3R5cGU9Y2hlY2tib3hdKSx0ZXh0YXJlYSxzZWxlY3QnKS5hZGRDbGFzcygnZm9ybS1jb250cm9sJyk7XG4gICAgICAgICRmb3JtLmZpbmQoJ3NlbGVjdCcpLndyYXAoJzxkaXYgY2xhc3M9XCJzZWxlY3RcIiAvPicpO1xuXG4gICAgICAgIGF1dG9zaXplKCRmb3JtLmZpbmQoJ3RleHRhcmVhJykpO1xuXG4gICAgICAgICRmb3JtLmZpbmQoJ2lucHV0W3R5cGU9cmFkaW9dJykuZWFjaChmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICQodGhpcykuY2xvc2VzdCgnLmZvcm0tZmllbGQnKS5hZGRDbGFzcygncmFkaW8tZ3JvdXAnKTtcbiAgICAgICAgICAgICQodGhpcykubmV4dCgnbGFiZWwnKS5hZGRCYWNrKCkud3JhcEFsbCgnPGRpdiBjbGFzcz1cInJhZGlvIG0tYi0xNVwiIC8+Jyk7XG4gICAgICAgIH0pO1xuICAgICAgICAkZm9ybS5maW5kKCdpbnB1dFt0eXBlPWNoZWNrYm94XScpLmVhY2goZnVuY3Rpb24oKSB7XG4gICAgICAgICAgICAkKHRoaXMpLmNsb3Nlc3QoJy5mb3JtLWZpZWxkJykuYWRkQ2xhc3MoJ2NoZWNrYm94LWdyb3VwJyk7XG4gICAgICAgICAgICAkKHRoaXMpLm5leHQoJ2xhYmVsJykuYWRkQmFjaygpLndyYXBBbGwoJzxkaXYgY2xhc3M9XCJjaGVja2JveCBtLWItMTVcIiAvPicpO1xuICAgICAgICB9KTtcblxuICAgICAgICAkZm9ybS5maW5kKCdpbnB1dFt0eXBlPWNoZWNrYm94XSxpbnB1dFt0eXBlPXJhZGlvXScpLmFmdGVyKCc8aSBjbGFzcz1cImlucHV0LWhlbHBlclwiPjwvaT4nKTtcblxuICAgICAgICAkZm9ybS5maW5kKCdpbnB1dFt0eXBlPWNoZWNrYm94XS5pbmxpbmUnKS5yZW1vdmVDbGFzcygnaW5saW5lJykuY2xvc2VzdCgnZGl2LmNoZWNrYm94JykuYWRkQ2xhc3MoJ2NoZWNrYm94LWlubGluZScpO1xuICAgICAgICAkZm9ybS5maW5kKCdpbnB1dFt0eXBlPXJhZGlvXS5pbmxpbmUnKS5yZW1vdmVDbGFzcygnaW5saW5lJykuY2xvc2VzdCgnZGl2LnJhZGlvJykuYWRkQ2xhc3MoJ3JhZGlvLWlubGluZScpO1xuXG4gICAgICAgICRmb3JtLmZpbmQoJ2Rpdi5jaGVja2JveDpub3QoLmNoZWNrYm94LWlubGluZSknKS5hZGRDbGFzcygnbS1iLTE1Jyk7XG4gICAgICAgICRmb3JtLmZpbmQoJ2Rpdi5yYWRpbzpub3QoLnJhZGlvLWlubGluZSknKS5hZGRDbGFzcygnbS1iLTE1Jyk7XG5cbiAgICAgICAgJGZvcm0uZmluZCgnLmhlbHAtYmxvY2suZm9ybS1lcnJvcicpLnBhcmVudCgpLmFkZENsYXNzKCdoYXMtZXJyb3InKTtcbiAgICAgICAgJGZvcm0uZmluZCgnLmhlbHAtYmxvY2suZm9ybS1zdWNjZXNzJykucGFyZW50KCkuYWRkQ2xhc3MoJ2hhcy1zdWNjZXNzJyk7XG4gICAgICAgICRmb3JtLmZpbmQoJy5oZWxwLWJsb2NrLmZvcm0td2FybmluZycpLnBhcmVudCgpLmFkZENsYXNzKCdoYXMtd2FybmluZycpO1xuXG4gICAgICAgICRmb3JtLmZpbmQoJ2lucHV0W3R5cGU9YnV0dG9uXSxpbnB1dFt0eXBlPXN1Ym1pdF0saW5wdXRbdHlwZT1yZXNldF0nKS5hZGRDbGFzcygnYnRuIG0tdC0xMCcpO1xuICAgIH0pO1xuXG59KTsiLCIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiBEZXRlY3QgTW9iaWxlIEJyb3dzZXJcbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG5pZiAoL0FuZHJvaWR8d2ViT1N8aVBob25lfGlQYWR8aVBvZHxCbGFja0JlcnJ5fElFTW9iaWxlfE9wZXJhIE1pbmkvaS50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpKSB7XG4gICAgJCgnaHRtbCcpLmFkZENsYXNzKCdpc21vYmlsZScpO1xufVxuXG4kKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbiAoKSB7XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgU2Nyb2xsYmFyXG4gICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbiAgICBmdW5jdGlvbiBzY3JvbGxCYXIoc2VsZWN0b3IsIHRoZW1lLCBtb3VzZXdoZWVsYXhpcykge1xuICAgICAgICAkKHNlbGVjdG9yKS5tQ3VzdG9tU2Nyb2xsYmFyKHtcbiAgICAgICAgICAgIHRoZW1lOiB0aGVtZSxcbiAgICAgICAgICAgIHNjcm9sbEluZXJ0aWE6IDEwMCxcbiAgICAgICAgICAgIGF4aXM6ICdtb3VzZXdoZWVsYXhpcycsXG4gICAgICAgICAgICBtb3VzZVdoZWVsOiB7XG4gICAgICAgICAgICAgICAgZW5hYmxlOiB0cnVlLFxuICAgICAgICAgICAgICAgIGF4aXM6IG1vdXNld2hlZWxheGlzLFxuICAgICAgICAgICAgICAgIHByZXZlbnREZWZhdWx0OiB0cnVlXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmICghJCgnaHRtbCcpLmhhc0NsYXNzKCdpc21vYmlsZScpKSB7XG4gICAgICAgIC8vT24gQ3VzdG9tIENsYXNzXG4gICAgICAgIGlmICgkKCcuYy1vdmVyZmxvdycpWzBdKSB7XG4gICAgICAgICAgICBzY3JvbGxCYXIoJy5jLW92ZXJmbG93JywgJ21pbmltYWwtZGFyaycsICd5Jyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgRHJvcGRvd24gTWVudVxuICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4gICAgaWYgKCQoJy5kcm9wZG93bicpWzBdKSB7XG4gICAgICAgIC8vUHJvcGFnYXRlXG4gICAgICAgICQoJ2JvZHknKS5vbignY2xpY2snLCAnLmRyb3Bkb3duLm9wZW4gLmRyb3Bkb3duLW1lbnUnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgJCgnLmRyb3Bkb3duJykub24oJ3Nob3duLmJzLmRyb3Bkb3duJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgICAgIGlmICgkKHRoaXMpLmF0dHIoJ2RhdGEtYW5pbWF0aW9uJykpIHtcbiAgICAgICAgICAgICAgICAkYW5pbUFycmF5ID0gW107XG4gICAgICAgICAgICAgICAgJGFuaW1hdGlvbiA9ICQodGhpcykuZGF0YSgnYW5pbWF0aW9uJyk7XG4gICAgICAgICAgICAgICAgJGFuaW1BcnJheSA9ICRhbmltYXRpb24uc3BsaXQoJywnKTtcbiAgICAgICAgICAgICAgICAkYW5pbWF0aW9uSW4gPSAnYW5pbWF0ZWQgJyArICRhbmltQXJyYXlbMF07XG4gICAgICAgICAgICAgICAgJGFuaW1hdGlvbk91dCA9ICdhbmltYXRlZCAnICsgJGFuaW1BcnJheVsxXTtcbiAgICAgICAgICAgICAgICAkYW5pbWF0aW9uRHVyYXRpb24gPSAnJ1xuICAgICAgICAgICAgICAgIGlmICghJGFuaW1BcnJheVsyXSkge1xuICAgICAgICAgICAgICAgICAgICAkYW5pbWF0aW9uRHVyYXRpb24gPSA1MDA7IC8vaWYgZHVyYXRpb24gaXMgbm90IGRlZmluZWQsIGRlZmF1bHQgaXMgc2V0IHRvIDUwMG1zXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAkYW5pbWF0aW9uRHVyYXRpb24gPSAkYW5pbUFycmF5WzJdO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICQodGhpcykuZmluZCgnLmRyb3Bkb3duLW1lbnUnKS5yZW1vdmVDbGFzcygkYW5pbWF0aW9uT3V0KVxuICAgICAgICAgICAgICAgICQodGhpcykuZmluZCgnLmRyb3Bkb3duLW1lbnUnKS5hZGRDbGFzcygkYW5pbWF0aW9uSW4pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICAkKCcuZHJvcGRvd24nKS5vbignaGlkZS5icy5kcm9wZG93bicsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgICAgICBpZiAoJCh0aGlzKS5hdHRyKCdkYXRhLWFuaW1hdGlvbicpKSB7XG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICR0aGlzID0gJCh0aGlzKTtcbiAgICAgICAgICAgICAgICAkZHJvcGRvd25NZW51ID0gJHRoaXMuZmluZCgnLmRyb3Bkb3duLW1lbnUnKTtcblxuICAgICAgICAgICAgICAgICRkcm9wZG93bk1lbnUuYWRkQ2xhc3MoJGFuaW1hdGlvbk91dCk7XG4gICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICR0aGlzLnJlbW92ZUNsYXNzKCdvcGVuJylcblxuICAgICAgICAgICAgICAgIH0sICRhbmltYXRpb25EdXJhdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICBBdXRvIFNpemUgVGV4dGFyZVxuICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4gICAgaWYgKCQoJy5hdXRvLXNpemUnKVswXSkge1xuICAgICAgICBhdXRvc2l6ZSgkKCcuYXV0by1zaXplJykpO1xuICAgIH1cblxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgIFRleHQgRmllbGRcbiAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuICAgIC8vQWRkIGJsdWUgYW5pbWF0ZWQgYm9yZGVyIGFuZCByZW1vdmUgd2l0aCBjb25kaXRpb24gd2hlbiBmb2N1cyBhbmQgYmx1clxuICAgIGlmICgkKCcuZmctbGluZScpWzBdKSB7XG4gICAgICAgICQoJ2JvZHknKS5vbignZm9jdXMnLCAnLmZnLWxpbmUgLmZvcm0tY29udHJvbCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICQodGhpcykuY2xvc2VzdCgnLmZnLWxpbmUnKS5hZGRDbGFzcygnZmctdG9nZ2xlZCcpO1xuICAgICAgICB9KVxuXG4gICAgICAgICQoJ2JvZHknKS5vbignYmx1cicsICcuZm9ybS1jb250cm9sJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHAgPSAkKHRoaXMpLmNsb3Nlc3QoJy5mb3JtLWdyb3VwLCAuaW5wdXQtZ3JvdXAnKTtcbiAgICAgICAgICAgIHZhciBpID0gcC5maW5kKCcuZm9ybS1jb250cm9sJykudmFsKCk7XG5cbiAgICAgICAgICAgIGlmIChwLmhhc0NsYXNzKCdmZy1mbG9hdCcpKSB7XG4gICAgICAgICAgICAgICAgaWYgKGkubGVuZ3RoID09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5jbG9zZXN0KCcuZmctbGluZScpLnJlbW92ZUNsYXNzKCdmZy10b2dnbGVkJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgJCh0aGlzKS5jbG9zZXN0KCcuZmctbGluZScpLnJlbW92ZUNsYXNzKCdmZy10b2dnbGVkJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vQWRkIGJsdWUgYm9yZGVyIGZvciBwcmUtdmFsdWVkIGZnLWZsb3QgdGV4dCBmZWlsZHNcbiAgICBpZiAoJCgnLmZnLWZsb2F0JylbMF0pIHtcbiAgICAgICAgJCgnLmZnLWZsb2F0IC5mb3JtLWNvbnRyb2wnKS5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBpID0gJCh0aGlzKS52YWwoKTtcblxuICAgICAgICAgICAgaWYgKCFpLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgJCh0aGlzKS5jbG9zZXN0KCcuZmctbGluZScpLmFkZENsYXNzKCdmZy10b2dnbGVkJyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgIE5vVWlTbGlkZXIgKElucHV0IFNsaWRlcilcbiAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuICAgIC8vQmFzaWNcbiAgICBpZiAoJCgnI2lucHV0LXNsaWRlcicpWzBdKSB7XG4gICAgICAgIHZhciBzbGlkZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5wdXQtc2xpZGVyJyk7XG5cbiAgICAgICAgbm9VaVNsaWRlci5jcmVhdGUoc2xpZGVyLCB7XG4gICAgICAgICAgICBzdGFydDogWzIwXSxcbiAgICAgICAgICAgIGNvbm5lY3Q6ICdsb3dlcicsXG4gICAgICAgICAgICByYW5nZToge1xuICAgICAgICAgICAgICAgICdtaW4nOiAwLFxuICAgICAgICAgICAgICAgICdtYXgnOiAxMDBcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy9SYW5nZVxuICAgIGlmICgkKCcjaW5wdXQtc2xpZGVyLXJhbmdlJylbMF0pIHtcbiAgICAgICAgdmFyIHNsaWRlclJhbmdlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lucHV0LXNsaWRlci1yYW5nZScpO1xuXG4gICAgICAgIG5vVWlTbGlkZXIuY3JlYXRlKHNsaWRlclJhbmdlLCB7XG4gICAgICAgICAgICBzdGFydDogWzQwLCA3MF0sXG4gICAgICAgICAgICBjb25uZWN0OiB0cnVlLFxuICAgICAgICAgICAgcmFuZ2U6IHtcbiAgICAgICAgICAgICAgICAnbWluJzogMCxcbiAgICAgICAgICAgICAgICAnbWF4JzogMTAwXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vUmFuZ2Ugd2l0aCB2YWx1ZVxuICAgIGlmICgkKCcjaW5wdXQtc2xpZGVyLXZhbHVlJylbMF0pIHtcbiAgICAgICAgdmFyIHNsaWRlclJhbmdlVmFsdWUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnaW5wdXQtc2xpZGVyLXZhbHVlJyk7XG5cbiAgICAgICAgbm9VaVNsaWRlci5jcmVhdGUoc2xpZGVyUmFuZ2VWYWx1ZSwge1xuICAgICAgICAgICAgc3RhcnQ6IFsxMCwgNTBdLFxuICAgICAgICAgICAgY29ubmVjdDogdHJ1ZSxcbiAgICAgICAgICAgIHJhbmdlOiB7XG4gICAgICAgICAgICAgICAgJ21pbic6IDAsXG4gICAgICAgICAgICAgICAgJ21heCc6IDEwMFxuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICBzbGlkZXJSYW5nZVZhbHVlLm5vVWlTbGlkZXIub24oJ3VwZGF0ZScsIGZ1bmN0aW9uICh2YWx1ZXMsIGhhbmRsZSkge1xuICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2lucHV0LXNsaWRlci12YWx1ZS1vdXRwdXQnKS5pbm5lckhUTUwgPSB2YWx1ZXNbaGFuZGxlXTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgIElucHV0IE1hc2tcbiAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuICAgIGlmICgkKCdpbnB1dC1tYXNrJylbMF0pIHtcbiAgICAgICAgJCgnLmlucHV0LW1hc2snKS5tYXNrKCk7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICBTdW1tZXJub3RlIEhUTUwgRWRpdG9yXG4gICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cbiAgICBpZiAoJCgnLmh0bWwtZWRpdG9yJylbMF0pIHtcbiAgICAgICAgJCgnLmh0bWwtZWRpdG9yJykuc3VtbWVybm90ZSh7XG4gICAgICAgICAgICBoZWlnaHQ6IDE1MFxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoJCgnLmh0bWwtZWRpdG9yLWNsaWNrJylbMF0pIHtcbiAgICAgICAgLy9FZGl0XG4gICAgICAgICQoJ2JvZHknKS5vbignY2xpY2snLCAnLmhlYy1idXR0b24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAkKCcuaHRtbC1lZGl0b3ItY2xpY2snKS5zdW1tZXJub3RlKHtcbiAgICAgICAgICAgICAgICBmb2N1czogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAkKCcuaGVjLXNhdmUnKS5zaG93KCk7XG4gICAgICAgIH0pXG5cbiAgICAgICAgLy9TYXZlXG4gICAgICAgICQoJ2JvZHknKS5vbignY2xpY2snLCAnLmhlYy1zYXZlJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgJCgnLmh0bWwtZWRpdG9yLWNsaWNrJykuY29kZSgpO1xuICAgICAgICAgICAgJCgnLmh0bWwtZWRpdG9yLWNsaWNrJykuZGVzdHJveSgpO1xuICAgICAgICAgICAgJCgnLmhlYy1zYXZlJykuaGlkZSgpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvL0FpciBNb2RlXG4gICAgaWYgKCQoJy5odG1sLWVkaXRvci1haXJtb2QnKVswXSkge1xuICAgICAgICAkKCcuaHRtbC1lZGl0b3ItYWlybW9kJykuc3VtbWVybm90ZSh7XG4gICAgICAgICAgICBhaXJNb2RlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgRGF0ZSBUaW1lIFBpY2tlclxuICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4gICAgLy9EYXRlIFRpbWUgUGlja2VyXG4gICAgaWYgKCQoJy5kYXRlLXRpbWUtcGlja2VyJylbMF0pIHtcbiAgICAgICAgJCgnLmRhdGUtdGltZS1waWNrZXInKS5kYXRldGltZXBpY2tlcigpO1xuICAgIH1cblxuICAgIC8vVGltZVxuICAgIGlmICgkKCcudGltZS1waWNrZXInKVswXSkge1xuICAgICAgICAkKCcudGltZS1waWNrZXInKS5kYXRldGltZXBpY2tlcih7XG4gICAgICAgICAgICBmb3JtYXQ6ICdMVCdcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy9EYXRlXG4gICAgaWYgKCQoJy5kYXRlLXBpY2tlcicpWzBdKSB7XG4gICAgICAgICQoJy5kYXRlLXBpY2tlcicpLmRhdGV0aW1lcGlja2VyKHtcbiAgICAgICAgICAgIGZvcm1hdDogJ0REL01NL1lZWVknXG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgICQoJy5kYXRlLXBpY2tlcicpLm9uKCdkcC5oaWRlJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAkKHRoaXMpLmNsb3Nlc3QoJy5kdHAtY29udGFpbmVyJykucmVtb3ZlQ2xhc3MoJ2ZnLXRvZ2dsZWQnKTtcbiAgICAgICAgJCh0aGlzKS5ibHVyKCk7XG4gICAgfSlcblxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICBXYXZlc1xuICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAoZnVuY3Rpb24oKXtcbiAgICAgV2F2ZXMuYXR0YWNoKCcuYnRuOm5vdCguYnRuLWljb24pOm5vdCguYnRuLWZsb2F0KScpO1xuICAgICBXYXZlcy5hdHRhY2goJy5idG4taWNvbiwgLmJ0bi1mbG9hdCcsIFsnd2F2ZXMtY2lyY2xlJywgJ3dhdmVzLWZsb2F0J10pO1xuICAgICBXYXZlcy5pbml0KCk7XG4gICAgIH0pKCk7XG4gICAgICovXG5cbiAgICAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgTGlnaHRib3hcbiAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuICAgIGlmICgkKCcubGlnaHRib3gnKVswXSkge1xuICAgICAgICAkKCcubGlnaHRib3gnKS5saWdodEdhbGxlcnkoe1xuICAgICAgICAgICAgZW5hYmxlVG91Y2g6IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICBMaW5rIHByZXZlbnRcbiAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qL1xuICAgICQoJ2JvZHknKS5vbignY2xpY2snLCAnLmEtcHJldmVudCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9KTtcblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICBCb290c3RyYXAgQWNjb3JkaW9uIEZpeFxuICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4gICAgaWYgKCQoJy5jb2xsYXBzZScpWzBdKSB7XG5cbiAgICAgICAgLy9BZGQgYWN0aXZlIGNsYXNzIGZvciBvcGVuZWQgaXRlbXNcbiAgICAgICAgJCgnLmNvbGxhcHNlJykub24oJ3Nob3cuYnMuY29sbGFwc2UnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgJCh0aGlzKS5jbG9zZXN0KCcucGFuZWwnKS5maW5kKCcucGFuZWwtaGVhZGluZycpLmFkZENsYXNzKCdhY3RpdmUnKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgJCgnLmNvbGxhcHNlJykub24oJ2hpZGUuYnMuY29sbGFwc2UnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAgICAgJCh0aGlzKS5jbG9zZXN0KCcucGFuZWwnKS5maW5kKCcucGFuZWwtaGVhZGluZycpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy9BZGQgYWN0aXZlIGNsYXNzIGZvciBwcmUgb3BlbmVkIGl0ZW1zXG4gICAgICAgICQoJy5jb2xsYXBzZS5pbicpLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgJCh0aGlzKS5jbG9zZXN0KCcucGFuZWwnKS5maW5kKCcucGFuZWwtaGVhZGluZycpLmFkZENsYXNzKCdhY3RpdmUnKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICBUb29sdGlwc1xuICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4gICAgaWYgKCQoJ1tkYXRhLXRvZ2dsZT1cInRvb2x0aXBcIl0nKVswXSkge1xuICAgICAgICAkKCdbZGF0YS10b2dnbGU9XCJ0b29sdGlwXCJdJykudG9vbHRpcCgpO1xuICAgIH1cblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgUG9wb3ZlclxuICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4gICAgaWYgKCQoJ1tkYXRhLXRvZ2dsZT1cInBvcG92ZXJcIl0nKVswXSkge1xuICAgICAgICAkKCdbZGF0YS10b2dnbGU9XCJwb3BvdmVyXCJdJykucG9wb3ZlcigpO1xuICAgIH1cblxuICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgSUUgOSBQbGFjZWhvbGRlclxuICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovXG4gICAgaWYgKCQoJ2h0bWwnKS5oYXNDbGFzcygnaWU5JykpIHtcbiAgICAgICAgJCgnaW5wdXQsIHRleHRhcmVhJykucGxhY2Vob2xkZXIoe1xuICAgICAgICAgICAgY3VzdG9tQ2xhc3M6ICdpZTktcGxhY2Vob2xkZXInXG4gICAgICAgIH0pO1xuICAgIH1cblxufSk7XG4iLCJcbiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHtcblxuICAgIC8vIFNob3cgcGFzc3dvcmQgc3RyZW5ndGggbWV0ZXIuXG4gICAgaWYgKHR5cGVvZiB6eGN2Ym4gPT09ICdmdW5jdGlvbicpIHtcblxuICAgICAgICAkKCdpbnB1dFt0eXBlPXBhc3N3b3JkXS5zdHJlbmd0aCcpLm9uKCdrZXl1cCcsIGZ1bmN0aW9uKGUpIHtcblxuICAgICAgICAgICAgdmFyIHJlc3VsdCAgPSB6eGN2Ym4oJCh0aGlzKS52YWwoKSksXG4gICAgICAgICAgICAgICAgc2NvcmUgICA9IHJlc3VsdC5zY29yZTtcblxuICAgICAgICAgICAgdmFyIGdyb3VwID0gJCh0aGlzKS5jbG9zZXN0KCcuZm9ybS1ncm91cCcpO1xuICAgICAgICAgICAgaWYgKCFncm91cC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBncm91cCA9ICQodGhpcykuY2xvc2VzdCgnZGl2Jyk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhciBleHBsYW5hdGlvbiA9IGdyb3VwLmZpbmQoJy5oZWxwLWJsb2NrLnBhc3N3b3JkLWV4cGxhbmF0aW9uJyk7XG5cbiAgICAgICAgICAgIGlmICghZXhwbGFuYXRpb24ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZXhwbGFuYXRpb24gPSAkKCc8c21hbGwgY2xhc3M9XCJoZWxwLWJsb2NrIHBhc3N3b3JkLWV4cGxhbmF0aW9uXCIgLz4nKTtcblxuICAgICAgICAgICAgICAgIHZhciBsYWJlbCA9IGdyb3VwLmZpbmQoJ2xhYmVsJyk7XG4gICAgICAgICAgICAgICAgaWYgKGxhYmVsLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBsYWJlbC5hZnRlcihleHBsYW5hdGlvbik7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5hZnRlcihleHBsYW5hdGlvbik7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgZXhwbGFuYXRpb24gPSBncm91cC5maW5kKCcuaGVscC1ibG9jay5wYXNzd29yZC1leHBsYW5hdGlvbicpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmVzdWx0LmZlZWRiYWNrLndhcm5pbmcpIHtcbiAgICAgICAgICAgICAgICBleHBsYW5hdGlvbi50ZXh0KHJlc3VsdC5mZWVkYmFjay53YXJuaW5nKS5zaG93KCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGV4cGxhbmF0aW9uLmhpZGUoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZ3JvdXAucmVtb3ZlQ2xhc3MoJ2hhcy1zdWNjZXNzIGhhcy13YXJuaW5nIGhhcy1lcnJvcicpO1xuXG4gICAgICAgICAgICBzd2l0Y2ggKHNjb3JlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXAuYWRkQ2xhc3MoJ2hhcy1lcnJvcicpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgICAgICAgIGdyb3VwLmFkZENsYXNzKCdoYXMtd2FybmluZycpO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgICAgICAgICAgZ3JvdXAuYWRkQ2xhc3MoJ2hhcy1zdWNjZXNzJyk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgIH1cblxufSk7Il19