晋太元中,武陵人捕鱼为业。缘溪行,忘路之远近。忽逢桃花林,夹岸数百步,中无杂树,芳草鲜美,落英缤纷。渔人甚异之,复前行,欲穷其林。   林尽水源,便得一山,山有小口,仿佛若有光。便舍船,从口入。初极狭,才通人。复行数十步,豁然开朗。土地平旷,屋舍俨然,有良田、美池、桑竹之属。阡陌交通,鸡犬相闻。其中往来种作,男女衣着,悉如外人。黄发垂髫,并怡然自乐。   见渔人,乃大惊,问所从来。具答之。便要还家,设酒杀鸡作食。村中闻有此人,咸来问讯。自云先世避秦时乱,率妻子邑人来此绝境,不复出焉,遂与外人间隔。问今是何世,乃不知有汉,无论魏晋。此人一一为具言所闻,皆叹惋。余人各复延至其家,皆出酒食。停数日,辞去。此中人语云:“不足为外人道也。”(间隔 一作:隔绝)   既出,得其船,便扶向路,处处志之。及郡下,诣太守,说如此。太守即遣人随其往,寻向所志,遂迷,不复得路。   南阳刘子骥,高尚士也,闻之,欣然规往。未果,寻病终。后遂无问津者。 .
Prv8 Shell
Server : Apache
System : Linux srv.rainic.com 4.18.0-553.47.1.el8_10.x86_64 #1 SMP Wed Apr 2 05:45:37 EDT 2025 x86_64
User : rainic ( 1014)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/stando/www/wp-content/plugins/wpseo-local/js/dist/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/stando/www/wp-content/plugins/wpseo-local/js/dist/wp-seo-local-global-1210.js
(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
"use strict";

jQuery(document).ready(function ($) {
	$("#use_multiple_locations input#use_multiple_locations-on").change(function () {
		if ($(this).is(":checked")) {
			$("#single-location-settings").slideToggle();
			$("#multiple-locations-settings").slideToggle();
			$(".open_247_wrapper").hide();
			$(".default-setting").show();
			$("#sl-settings").show();
			$("#wpseo-local-permalinks").show();
			$("#wpseo-local-admin_labels").show();
			$("#wpseo-local-enhanced").show();
			$("#opening-hours-hours").hide();
			$("#wpseo-local-multiple-locations-notification").hide();
			$("#wpseo-local-multiple-locations-notification").hide();
			$("#location-coordinates-settings").hide();
		}
	});

	$("#use_multiple_locations input#use_multiple_locations-off").change(function () {
		if ($(this).is(":checked")) {
			$("#single-location-settings").slideToggle();
			$("#multiple-locations-settings").slideToggle();
			$(".open_247_wrapper").show();
			$("#sl-settings").hide();
			$(".default-setting").hide();
			$("#wpseo-local-permalinks").hide();
			$("#wpseo-local-admin_labels").hide();
			$("#wpseo-local-enhanced").hide();
			$("#wpseo-local-multiple-locations-notification").show();
			$("#location-coordinates-settings").show();

			if ($("#hide_opening_hours input#hide_opening_hours-on").is(":checked")) {
				$("#opening-hours-hours").hide();
			} else {
				$("#opening-hours-hours").show();
			}
		}
	});

	if ($("#hide_opening_hours-on").is(":checked")) {
		$("#opening-hours-hours, #opening-hours-settings").hide();
	}

	$(".wpseo_local_help").on("click", function () {
		$(this).closest(".wpseo-local-help-wrapper").find(".wpseo-local-help-text").slideToggle();
	});

	$("#hide_opening_hours input#hide_opening_hours-on").change(function () {
		if ($(this).is(":checked")) {
			$("#opening-hours-hours, #opening-hours-settings").slideUp();
			if ($("#use_multiple_locations-off").is(":checked")) {
				$("#opening-hours-hours").show();
			}
		}
	});

	$("#hide_opening_hours input#hide_opening_hours-off").change(function () {
		if ($(this).is(":checked")) {
			$("#opening-hours-hours, #opening-hours-settings").slideDown();
			if ($("#use_multiple_locations-on").is(":checked")) {
				$("#opening-hours-hours").hide();
			}
		}
	});

	// General Settings: Enable/disable Open 24/7 on click
	$("#open_247-on, #open_247-off").change(function () {
		if (!$("#use_multiple_locations").is(":checked")) {
			$("#opening-hours-rows").slideToggle();
		}
	});

	// Change multiple opening hours on single location setup
	$("#multiple_opening_hours-on, #multiple_opening_hours-off").change(function () {
		$(".opening-hours .opening-hours-second").slideToggle();
	});

	// Change multiple opening hours on multiple locations setup
	$("#_wpseo_multiple_opening_hours").click(function () {
		if ($(this).is(":checked")) {
			$(".opening-hours .opening-hours-second").slideDown();
		} else {
			$(".opening-hours .opening-hours-second").slideUp();
		}
	});

	$("#opening_hours_24h-on, #opening_hours_24h-off").change(function () {
		$("#opening-hours-container select").each(function () {
			$(this).find("option").each(function () {
				if ($("#opening_hours_24h-on").is(":checked")) {
					// Use 24 hour
					if ($(this).val() != "closed") {
						$(this).text($(this).val());
					}
				} else {
					// Use 12 hour
					if ($(this).val() != "closed") {
						// Split the string between hours and minutes
						var time = $(this).val().split(":");

						// use parseInt to remove leading zeroes.
						var hour = parseInt(time[0]);
						var minutes = time[1];
						var suffix = "AM";
						// if the hours number is greater than 12, subtract 12.
						if (hour >= 12) {
							if (hour > 12) {
								hour = hour - 12;
							}
							suffix = "PM";
						}
						if (hour == 0) {
							hour = 12;
						}

						$(this).text(hour + ":" + minutes + " " + suffix);
					}
				}
			});
		});
	});

	// The 24h format on single location page (if multiple locations is set)
	$("#_wpseo_format_24h, #_wpseo_format_12h").click(function () {
		$("#hide-opening-hours select").each(function () {
			$(this).find("option").each(function () {
				if ($("#_wpseo_format_24h").length > 0 && $("#_wpseo_format_24h").is(":checked") || $("#_wpseo_format_12h").length > 0 && !$("#_wpseo_format_12h").is(":checked")) {
					// Use 24 hour
					if ($(this).val() != "closed") {
						$(this).text($(this).val());
					}
				} else {
					// Use 12 hour
					if ($(this).val() != "closed") {
						// Split the string between hours and minutes
						var time = $(this).val().split(":");

						// use parseInt to remove leading zeroes.
						var hour = parseInt(time[0]);
						var minutes = time[1];
						var suffix = "AM";
						// if the hours number is greater than 12, subtract 12.
						if (hour >= 12) {
							if (hour > 12) {
								hour = hour - 12;
							}
							suffix = "PM";
						}
						if (hour == 0) {
							hour = 12;
						}

						$(this).text(hour + ":" + minutes + " " + suffix);
					}
				}
			});
		});
	});

	// Multiple locatiosn metaboxes tab-menu
	var tabLinks = jQuery(".wpseo-local-metabox-content .wpseo-local-meta-section-link");
	tabLinks.on("click", function (e) {
		e.preventDefault();

		var targetTab = jQuery(this).attr("href");
		var targetTabElement = jQuery(targetTab);

		jQuery(".wpseo-local-metabox-menu li").removeClass("active").find("[role='tab']").removeClass("yoast-active-tab");

		jQuery(".wpseo-local-metabox-content .wpseo-local-meta-section.active").removeClass("active");

		targetTabElement.addClass("active");

		jQuery(this).parent("li").addClass("active").find("[role='tab']").addClass("yoast-active-tab");
	});

	// Single Location: Enable/disable Open 24/7 on click
	$("#_wpseo_open_247").on("click", function () {
		maybeCloseOpeningHours(this);
	});

	// Disable hours 24/7 on click
	$(".wpseo_open_24h input").on("click", function (e) {
		if ($(this).is(":checked")) {
			$("select", $(".openinghours-wrapper", $(this).closest(".opening-hours"))).attr("disabled", true);
		} else {
			$("select", $(".openinghours-wrapper", $(this).closest(".opening-hours"))).attr("disabled", false);
		}
	});

	function maybeCloseOpeningHours(elem) {
		if ($(elem).is(":checked")) {
			$("#opening-hours-rows, .opening-hours-wrap").slideUp();
		} else {
			$("#opening-hours-rows, .opening-hours-wrap").slideDown();
		}
	}

	$(".widget-content").on("click", "#wpseo-checkbox-multiple-locations-wrapper input[type=checkbox]", function () {
		wpseo_show_all_locations_selectbox($(this));
	});

	// Show locations metabox before WP SEO metabox
	if ($("#wpseo_locations").length > 0 && $("#wpseo_meta").length > 0) {
		$("#wpseo_locations").insertBefore($("#wpseo_meta"));
	}

	$(".openinghours_from").change(function () {
		var to_id = $(this).attr("id").replace("_from", "_to_wrapper");
		var second_id = $(this).attr("id").replace("_from", "_second");

		if ($(this).val() == "closed") {
			$("#" + to_id).css("display", "none");
			$("#" + second_id).css("display", "none");
		} else {
			$("#" + to_id).css("display", "inline");
			$("#" + second_id).css("display", "block");
		}
	}).change();
	$(".openinghours_from_second").change(function () {
		var to_id = $(this).attr("id").replace("_from", "_to_wrapper");

		if ($(this).val() == "closed") {
			$("#" + to_id).css("display", "none");
		} else {
			$("#" + to_id).css("display", "inline");
		}
	}).change();
	$(".openinghours_to").change(function () {
		var from_id = $(this).attr("id").replace("_to", "_from");
		var to_id = $(this).attr("id").replace("_to", "_to_wrapper");
		if ($(this).val() == "closed") {
			$("#" + to_id).css("display", "none");
			$("#" + from_id).val("closed");
		}
	});
	$(".openinghours_to_second").change(function () {
		var from_id = $(this).attr("id").replace("_to", "_from");
		var to_id = $(this).attr("id").replace("_to", "_to_wrapper");
		if ($(this).val() == "closed") {
			$("#" + to_id).css("display", "none");
			$("#" + from_id).val("closed");
		}
	});

	if ($(".set_custom_images").length > 0) {
		if (typeof wp !== "undefined" && wp.media && wp.media.editor) {
			$(".wrap").on("click", ".set_custom_images", function (e) {
				e.preventDefault();
				var button = $(this);
				var id = button.attr("data-id");
				wp.media.editor.send.attachment = function (props, attachment) {
					if (attachment.hasOwnProperty("sizes")) {
						var url = attachment.sizes[props.size].url;
					} else {
						var url = attachment.url;
					}

					$("#" + id + "_image_container").attr("src", url);
					$(".wpseo-local-" + id + "-wrapper .wpseo-local-hide-button").show();
					$("#hidden_" + id).attr("value", attachment.id);
				};
				wp.media.editor.open(button);
				return false;
			});
		}
	}

	$(".remove_custom_image").on("click", function (e) {
		e.preventDefault();

		var id = $(this).attr("data-id");
		$("#" + id).attr("src", "").hide();
		$("#hidden_" + id).attr("value", "");
		$(".wpseo-local-" + id + "-wrapper .wpseo-local-hide-button").hide();
	});

	// Copy location data
	$("#wpseo_copy_from_location").change(function () {
		var location_id = $(this).val();

		if (location_id == "") {
			return;
		}

		$.post(wpseo_local_data.ajaxurl, {
			location_id: location_id,
			security: wpseo_local_data.sec_nonce,
			action: "wpseo_copy_location"
		}, function (result) {
			if (result.charAt(result.length - 1) == 0) {
				result = result.slice(0, -1);
			} else if (result.substring(result.length - 2) == "-1") {
				result = result.slice(0, -2);
			}

			var data = $.parseJSON(result);
			if (data.success == "true" || data.success == true) {

				for (var i in data.location) {
					var value = data.location[i];

					if (value != null && value != "" && typeof value != "undefined") {
						if (i == "is_postal_address" || i == "multiple_opening_hours") {
							if (value == "1") {
								$("#wpseo_" + i).attr("checked", "checked");
								$(".opening-hours .opening-hour-second").slideDown();
							}
						} else if (i.indexOf("opening_hours") > -1) {
							$("#" + i).val(value);
						} else {
							$("#wpseo_" + i).val(value);
						}
					}
				}
			}
		});
	});
});

window.wpseo_show_all_locations_selectbox = function (obj) {
	$ = jQuery;

	$obj = $(obj);
	var parent = $obj.parents(".widget-inside");
	var $locationsWrapper = $("#wpseo-locations-wrapper", parent);

	if ($obj.is(":checked")) {
		$locationsWrapper.slideUp();
	} else {
		$locationsWrapper.slideDown();
	}
};

},{}]},{},[1])
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJqcy9zcmMvd3Atc2VvLWxvY2FsLWdsb2JhbC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0FDQUEsT0FBUSxRQUFSLEVBQW1CLEtBQW5CLENBQTBCLFVBQVUsQ0FBVixFQUFjO0FBQ3ZDLEdBQUcseURBQUgsRUFBK0QsTUFBL0QsQ0FBdUUsWUFBVztBQUNqRixNQUFLLEVBQUcsSUFBSCxFQUFVLEVBQVYsQ0FBYyxVQUFkLENBQUwsRUFBa0M7QUFDakMsS0FBRywyQkFBSCxFQUFpQyxXQUFqQztBQUNBLEtBQUcsOEJBQUgsRUFBb0MsV0FBcEM7QUFDQSxLQUFHLG1CQUFILEVBQXlCLElBQXpCO0FBQ0EsS0FBRyxrQkFBSCxFQUF3QixJQUF4QjtBQUNBLEtBQUcsY0FBSCxFQUFvQixJQUFwQjtBQUNBLEtBQUcseUJBQUgsRUFBK0IsSUFBL0I7QUFDQSxLQUFHLDJCQUFILEVBQWlDLElBQWpDO0FBQ0EsS0FBRyx1QkFBSCxFQUE2QixJQUE3QjtBQUNBLEtBQUcsc0JBQUgsRUFBNEIsSUFBNUI7QUFDQSxLQUFHLDhDQUFILEVBQW9ELElBQXBEO0FBQ0EsS0FBRyw4Q0FBSCxFQUFvRCxJQUFwRDtBQUNBLEtBQUcsZ0NBQUgsRUFBc0MsSUFBdEM7QUFDQTtBQUNELEVBZkQ7O0FBaUJBLEdBQUcsMERBQUgsRUFBZ0UsTUFBaEUsQ0FBd0UsWUFBVztBQUNsRixNQUFLLEVBQUcsSUFBSCxFQUFVLEVBQVYsQ0FBYyxVQUFkLENBQUwsRUFBa0M7QUFDakMsS0FBRywyQkFBSCxFQUFpQyxXQUFqQztBQUNBLEtBQUcsOEJBQUgsRUFBb0MsV0FBcEM7QUFDQSxLQUFHLG1CQUFILEVBQXlCLElBQXpCO0FBQ0EsS0FBRyxjQUFILEVBQW9CLElBQXBCO0FBQ0EsS0FBRyxrQkFBSCxFQUF3QixJQUF4QjtBQUNBLEtBQUcseUJBQUgsRUFBK0IsSUFBL0I7QUFDQSxLQUFHLDJCQUFILEVBQWlD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O0FBQ0EsVUFBRyxxQ0FBSCxFQUEyQyxTQUEzQztBQUNBO0FBQ0QsT0FMRCxNQUtPLElBQUssRUFBRSxPQUFGLENBQVcsZUFBWCxJQUErQixDQUFDLENBQXJDLEVBQXlDO0FBQy9DLFNBQUcsTUFBTSxDQUFULEVBQWEsR0FBYixDQUFrQixLQUFsQjtBQUNBLE9BRk0sTUFFQTtBQUNOLFNBQUcsWUFBWSxDQUFmLEVBQW1CLEdBQW5CLENBQXdCLEtBQXhCO0FBQ0E7QUFDRDtBQUNEO0FBQ0Q7QUFDRCxHQS9CRDtBQWdDQSxFQXZDRDtBQXdDQSxDQXhVRDs7QUEwVUEsT0FBTyxrQ0FBUCxHQUE0QyxVQUFVLEdBQVYsRUFBZ0I7QUFDM0QsS0FBSSxNQUFKOztBQUVBLFFBQU8sRUFBRyxHQUFILENBQVA7QUFDQSxLQUFJLFNBQVMsS0FBSyxPQUFMLENBQWMsZ0JBQWQsQ0FBYjtBQUNBLEtBQUksb0JBQW9CLEVBQUcsMEJBQUgsRUFBK0IsTUFBL0IsQ0FBeEI7O0FBRUEsS0FBSyxLQUFLLEVBQUwsQ0FBUyxVQUFULENBQUwsRUFBNkI7QUFDNUIsb0JBQWtCLE9BQWxCO0FBQ0EsRUFGRCxNQUVPO0FBQ04sb0JBQWtCLFNBQWxCO0FBQ0E7QUFDRCxDQVpEIiwiZmlsZSI6ImdlbmVyYXRlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzQ29udGVudCI6WyIoZnVuY3Rpb24oKXtmdW5jdGlvbiByKGUsbix0KXtmdW5jdGlvbiBvKGksZil7aWYoIW5baV0pe2lmKCFlW2ldKXt2YXIgYz1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlO2lmKCFmJiZjKXJldHVybiBjKGksITApO2lmKHUpcmV0dXJuIHUoaSwhMCk7dmFyIGE9bmV3IEVycm9yKFwiQ2Fubm90IGZpbmQgbW9kdWxlICdcIitpK1wiJ1wiKTt0aHJvdyBhLmNvZGU9XCJNT0RVTEVfTk9UX0ZPVU5EXCIsYX12YXIgcD1uW2ldPXtleHBvcnRzOnt9fTtlW2ldWzBdLmNhbGwocC5leHBvcnRzLGZ1bmN0aW9uKHIpe3ZhciBuPWVbaV1bMV1bcl07cmV0dXJuIG8obnx8cil9LHAscC5leHBvcnRzLHIsZSxuLHQpfXJldHVybiBuW2ldLmV4cG9ydHN9Zm9yKHZhciB1PVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmUsaT0wO2k8dC5sZW5ndGg7aSsrKW8odFtpXSk7cmV0dXJuIG99cmV0dXJuIHJ9KSgpIiwialF1ZXJ5KCBkb2N1bWVudCApLnJlYWR5KCBmdW5jdGlvbiggJCApIHtcblx0JCggXCIjdXNlX211bHRpcGxlX2xvY2F0aW9ucyBpbnB1dCN1c2VfbXVsdGlwbGVfbG9jYXRpb25zLW9uXCIgKS5jaGFuZ2UoIGZ1bmN0aW9uKCkge1xuXHRcdGlmICggJCggdGhpcyApLmlzKCBcIjpjaGVja2VkXCIgKSApIHtcblx0XHRcdCQoIFwiI3NpbmdsZS1sb2NhdGlvbi1zZXR0aW5nc1wiICkuc2xpZGVUb2dnbGUoKTtcblx0XHRcdCQoIFwiI211bHRpcGxlLWxvY2F0aW9ucy1zZXR0aW5nc1wiICkuc2xpZGVUb2dnbGUoKTtcblx0XHRcdCQoIFwiLm9wZW5fMjQ3X3dyYXBwZXJcIiApLmhpZGUoKTtcblx0XHRcdCQoIFwiLmRlZmF1bHQtc2V0dGluZ1wiICkuc2hvdygpO1xuXHRcdFx0JCggXCIjc2wtc2V0dGluZ3NcIiApLnNob3coKTtcblx0XHRcdCQoIFwiI3dwc2VvLWxvY2FsLXBlcm1hbGlua3NcIiApLnNob3coKTtcblx0XHRcdCQoIFwiI3dwc2VvLWxvY2FsLWFkbWluX2xhYmVsc1wiICkuc2hvdygpO1xuXHRcdFx0JCggXCIjd3BzZW8tbG9jYWwtZW5oYW5jZWRcIiApLnNob3coKTtcblx0XHRcdCQoIFwiI29wZW5pbmctaG91cnMtaG91cnNcIiApLmhpZGUoKTtcblx0XHRcdCQoIFwiI3dwc2VvLWxvY2FsLW11bHRpcGxlLWxvY2F0aW9ucy1ub3RpZmljYXRpb25cIiApLmhpZGUoKTtcblx0XHRcdCQoIFwiI3dwc2VvLWxvY2FsLW11bHRpcGxlLWxvY2F0aW9ucy1ub3RpZmljYXRpb25cIiApLmhpZGUoKTtcblx0XHRcdCQoIFwiI2xvY2F0aW9uLWNvb3JkaW5hdGVzLXNldHRpbmdzXCIgKS5oaWRlKCk7XG5cdFx0fVxuXHR9ICk7XG5cblx0JCggXCIjdXNlX211bHRpcGxlX2xvY2F0aW9ucyBpbnB1dCN1c2VfbXVsdGlwbGVfbG9jYXRpb25zLW9mZlwiICkuY2hhbmdlKCBmdW5jdGlvbigpIHtcblx0XHRpZiAoICQoIHRoaXMgKS5pcyggXCI6Y2hlY2tlZFwiICkgKSB7XG5cdFx0XHQkKCBcIiNzaW5nbGUtbG9jYXRpb24tc2V0dGluZ3NcIiApLnNsaWRlVG9nZ2xlKCk7XG5cdFx0XHQkKCBcIiNtdWx0aXBsZS1sb2NhdGlvbnMtc2V0dGluZ3NcIiApLnNsaWRlVG9nZ2xlKCk7XG5cdFx0XHQkKCBcIi5vcGVuXzI0N193cmFwcGVyXCIgKS5zaG93KCk7XG5cdFx0XHQkKCBcIiNzbC1zZXR0aW5nc1wiICkuaGlkZSgpO1xuXHRcdFx0JCggXCIuZGVmYXVsdC1zZXR0aW5nXCIgKS5oaWRlKCk7XG5cdFx0XHQkKCBcIiN3cHNlby1sb2NhbC1wZXJtYWxpbmtzXCIgKS5oaWRlKCk7XG5cdFx0XHQkKCBcIiN3cHNlby1sb2NhbC1hZG1pbl9sYWJlbHNcIiApLmhpZGUoKTtcblx0XHRcdCQoIFwiI3dwc2VvLWxvY2FsLWVuaGFuY2VkXCIgKS5oaWRlKCk7XG5cdFx0XHQkKCBcIiN3cHNlby1sb2NhbC1tdWx0aXBsZS1sb2NhdGlvbnMtbm90aWZpY2F0aW9uXCIgKS5zaG93KCk7XG5cdFx0XHQkKCBcIiNsb2NhdGlvbi1jb29yZGluYXRlcy1zZXR0aW5nc1wiICkuc2hvdygpO1xuXG5cdFx0XHRpZiAoICQoIFwiI2hpZGVfb3BlbmluZ19ob3VycyBpbnB1dCNoaWRlX29wZW5pbmdfaG91cnMtb25cIiApLmlzKCBcIjpjaGVja2VkXCIgKSApIHtcblx0XHRcdFx0JCggXCIjb3BlbmluZy1ob3Vycy1ob3Vyc1wiICkuaGlkZSgpO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0JCggXCIjb3BlbmluZy1ob3Vycy1ob3Vyc1wiICkuc2hvdygpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSApO1xuXG5cdGlmICggJCggXCIjaGlkZV9vcGVuaW5nX2hvdXJzLW9uXCIgKS5pcyggXCI6Y2hlY2tlZFwiICkgKSB7XG5cdFx0JCggXCIjb3BlbmluZy1ob3Vycy1ob3VycywgI29wZW5pbmctaG91cnMtc2V0dGluZ3NcIiApLmhpZGUoKTtcblx0fVxuXG5cdCQoIFwiLndwc2VvX2xvY2FsX2hlbHBcIiApLm9uKCBcImNsaWNrXCIsIGZ1bmN0aW9uKCkge1xuXHRcdCQoIHRoaXMgKS5jbG9zZXN0KCBcIi53cHNlby1sb2NhbC1oZWxwLXdyYXBwZXJcIiApLmZpbmQoIFwiLndwc2VvLWxvY2FsLWhlbHAtdGV4dFwiICkuc2xpZGVUb2dnbGUoKTtcblx0fSApO1xuXG5cdCQoIFwiI2hpZGVfb3BlbmluZ19ob3VycyBpbnB1dCNoaWRlX29wZW5pbmdfaG91cnMtb25cIiApLmNoYW5nZSggZnVuY3Rpb24oKSB7XG5cdFx0aWYgKCAkKCB0aGlzICkuaXMoIFwiOmNoZWNrZWRcIiApICkge1xuXHRcdFx0JCggXCIjb3BlbmluZy1ob3Vycy1ob3VycywgI29wZW5pbmctaG91cnMtc2V0dGluZ3NcIiApLnNsaWRlVXAoKTtcblx0XHRcdGlmICggJCggXCIjdXNlX211bHRpcGxlX2xvY2F0aW9ucy1vZmZcIiApLmlzKCBcIjpjaGVja2VkXCIgKSApIHtcblx0XHRcdFx0JCggXCIjb3BlbmluZy1ob3Vycy1ob3Vyc1wiICkuc2hvdygpO1xuXHRcdFx0fVxuXHRcdH1cblx0fSApO1xuXG5cdCQoIFwiI2hpZGVfb3BlbmluZ19ob3VycyBpbnB1dCNoaWRlX29wZW5pbmdfaG91cnMtb2ZmXCIgKS5jaGFuZ2UoIGZ1bmN0aW9uKCkge1xuXHRcdGlmICggJCggdGhpcyApLmlzKCBcIjpjaGVja2VkXCIgKSApIHtcblx0XHRcdCQoIFwiI29wZW5pbmctaG91cnMtaG91cnMsICNvcGVuaW5nLWhvdXJzLXNldHRpbmdzXCIgKS5zbGlkZURvd24oKTtcblx0XHRcdGlmICggJCggXCIjdXNlX211bHRpcGxlX2xvY2F0aW9ucy1vblwiICkuaXMoIFwiOmNoZWNrZWRcIiApICkge1xuXHRcdFx0XHQkKCBcIiNvcGVuaW5nLWhvdXJzLWhvdXJzXCIgKS5oaWRlKCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9ICk7XG5cblx0Ly8gR2VuZXJhbCBTZXR0aW5nczogRW5hYmxlL2Rpc2FibGUgT3BlbiAyNC83IG9uIGNsaWNrXG5cdCQoIFwiI29wZW5fMjQ3LW9uLCAjb3Blbl8yNDctb2ZmXCIgKS5jaGFuZ2UoIGZ1bmN0aW9uKCkge1xuXHRcdGlmICggISAkKCBcIiN1c2VfbXVsdGlwbGVfbG9jYXRpb25zXCIgKS5pcyggXCI6Y2hlY2tlZFwiICkgKSB7XG5cdFx0XHQkKCBcIiNvcGVuaW5nLWhvdXJzLXJvd3NcIiApLnNsaWRlVG9nZ2xlKCk7XG5cdFx0fVxuXHR9ICk7XG5cblx0Ly8gQ2hhbmdlIG11bHRpcGxlIG9wZW5pbmcgaG91cnMgb24gc2luZ2xlIGxvY2F0aW9uIHNldHVwXG5cdCQoIFwiI211bHRpcGxlX29wZW5pbmdfaG91cnMtb24sICNtdWx0aXBsZV9vcGVuaW5nX2hvdXJzLW9mZlwiICkuY2hhbmdlKCBmdW5jdGlvbigpIHtcblx0XHQkKCBcIi5vcGVuaW5nLWhvdXJzIC5vcGVuaW5nLWhvdXJzLXNlY29uZFwiICkuc2xpZGVUb2dnbGUoKTtcblx0fSApO1xuXG5cdC8vIENoYW5nZSBtdWx0aXBsZSBvcGVuaW5nIGhvdXJzIG9uIG11bHRpcGxlIGxvY2F0aW9ucyBzZXR1cFxuXHQkKCBcIiNfd3BzZW9fbXVsdGlwbGVfb3BlbmluZ19ob3Vyc1wiICkuY2xpY2soIGZ1bmN0aW9uKCkge1xuXHRcdGlmICggJCggdGhpcyApLmlzKCBcIjpjaGVja2VkXCIgKSApIHtcblx0XHRcdCQoIFwiLm9wZW5pbmctaG91cnMgLm9wZW5pbmctaG91cnMtc2Vjb25kXCIgKS5zbGlkZURvd24oKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0JCggXCIub3BlbmluZy1ob3VycyAub3BlbmluZy1ob3Vycy1zZWNvbmRcIiApLnNsaWRlVXAoKTtcblx0XHR9XG5cdH0gKTtcblxuXHQkKCBcIiNvcGVuaW5nX2hvdXJzXzI0aC1vbiwgI29wZW5pbmdfaG91cnNfMjRoLW9mZlwiICkuY2hhbmdlKCBmdW5jdGlvbigpIHtcblx0XHQkKCBcIiNvcGVuaW5nLWhvdXJzLWNvbnRhaW5lciBzZWxlY3RcIiApLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0JCggdGhpcyApLmZpbmQoIFwib3B0aW9uXCIgKS5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCAkKCBcIiNvcGVuaW5nX2hvdXJzXzI0aC1vblwiICkuaXMoIFwiOmNoZWNrZWRcIiApICkge1xuXHRcdFx0XHRcdC8vIFVzZSAyNCBob3VyXG5cdFx0XHRcdFx0aWYgKCAkKCB0aGlzICkudmFsKCkgIT0gXCJjbG9zZWRcIiApIHtcblx0XHRcdFx0XHRcdCQoIHRoaXMgKS50ZXh0KCAkKCB0aGlzICkudmFsKCkgKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly8gVXNlIDEyIGhvdXJcblx0XHRcdFx0XHRpZiAoICQoIHRoaXMgKS52YWwoKSAhPSBcImNsb3NlZFwiICkge1xuXHRcdFx0XHRcdFx0Ly8gU3BsaXQgdGhlIHN0cmluZyBiZXR3ZWVuIGhvdXJzIGFuZCBtaW51dGVzXG5cdFx0XHRcdFx0XHR2YXIgdGltZSA9ICQoIHRoaXMgKS52YWwoKS5zcGxpdCggXCI6XCIgKTtcblxuXHRcdFx0XHRcdFx0Ly8gdXNlIHBhcnNlSW50IHRvIHJlbW92ZSBsZWFkaW5nIHplcm9lcy5cblx0XHRcdFx0XHRcdHZhciBob3VyID0gcGFyc2VJbnQoIHRpbWVbIDAgXSApO1xuXHRcdFx0XHRcdFx0dmFyIG1pbnV0ZXMgPSB0aW1lWyAxIF07XG5cdFx0XHRcdFx0XHR2YXIgc3VmZml4ID0gXCJBTVwiO1xuXHRcdFx0XHRcdFx0Ly8gaWYgdGhlIGhvdXJzIG51bWJlciBpcyBncmVhdGVyIHRoYW4gMTIsIHN1YnRyYWN0IDEyLlxuXHRcdFx0XHRcdFx0aWYgKCBob3VyID49IDEyICkge1xuXHRcdFx0XHRcdFx0XHRpZiAoIGhvdXIgPiAxMiApIHtcblx0XHRcdFx0XHRcdFx0XHRob3VyID0gaG91ciAtIDEyO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHN1ZmZpeCA9IFwiUE1cIjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmICggaG91ciA9PSAwICkge1xuXHRcdFx0XHRcdFx0XHRob3VyID0gMTI7XG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdCQoIHRoaXMgKS50ZXh0KCBob3VyICsgXCI6XCIgKyBtaW51dGVzICsgXCIgXCIgKyBzdWZmaXggKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gKTtcblx0XHR9ICk7XG5cdH0gKTtcblxuXHQvLyBUaGUgMjRoIGZvcm1hdCBvbiBzaW5nbGUgbG9jYXRpb24gcGFnZSAoaWYgbXVsdGlwbGUgbG9jYXRpb25zIGlzIHNldClcblx0JCggXCIjX3dwc2VvX2Zvcm1hdF8yNGgsICNfd3BzZW9fZm9ybWF0XzEyaFwiICkuY2xpY2soIGZ1bmN0aW9uKCkge1xuXHRcdCQoIFwiI2hpZGUtb3BlbmluZy1ob3VycyBzZWxlY3RcIiApLmVhY2goIGZ1bmN0aW9uKCkge1xuXHRcdFx0JCggdGhpcyApLmZpbmQoIFwib3B0aW9uXCIgKS5lYWNoKCBmdW5jdGlvbigpIHtcblx0XHRcdFx0aWYgKCAoXG5cdFx0XHRcdFx0JCggXCIjX3dwc2VvX2Zvcm1hdF8yNGhcIiApLmxlbmd0aCA+IDAgJiYgJCggXCIjX3dwc2VvX2Zvcm1hdF8yNGhcIiApLmlzKCBcIjpjaGVja2VkXCIgKVxuXHRcdFx0XHQpIHx8IChcblx0XHRcdFx0XHQoXG5cdFx0XHRcdFx0XHQkKCBcIiNfd3BzZW9fZm9ybWF0XzEyaFwiICkubGVuZ3RoID4gMCAmJiAhICQoIFwiI193cHNlb19mb3JtYXRfMTJoXCIgKS5pcyggXCI6Y2hlY2tlZFwiIClcblx0XHRcdFx0XHQpXG5cdFx0XHRcdCkgKSB7XG5cdFx0XHRcdFx0Ly8gVXNlIDI0IGhvdXJcblx0XHRcdFx0XHRpZiAoICQoIHRoaXMgKS52YWwoKSAhPSBcImNsb3NlZFwiICkge1xuXHRcdFx0XHRcdFx0JCggdGhpcyApLnRleHQoICQoIHRoaXMgKS52YWwoKSApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvLyBVc2UgMTIgaG91clxuXHRcdFx0XHRcdGlmICggJCggdGhpcyApLnZhbCgpICE9IFwiY2xvc2VkXCIgKSB7XG5cdFx0XHRcdFx0XHQvLyBTcGxpdCB0aGUgc3RyaW5nIGJldHdlZW4gaG91cnMgYW5kIG1pbnV0ZXNcblx0XHRcdFx0XHRcdHZhciB0aW1lID0gJCggdGhpcyApLnZhbCgpLnNwbGl0KCBcIjpcIiApO1xuXG5cdFx0XHRcdFx0XHQvLyB1c2UgcGFyc2VJbnQgdG8gcmVtb3ZlIGxlYWRpbmcgemVyb2VzLlxuXHRcdFx0XHRcdFx0dmFyIGhvdXIgPSBwYXJzZUludCggdGltZVsgMCBdICk7XG5cdFx0XHRcdFx0XHR2YXIgbWludXRlcyA9IHRpbWVbIDEgXTtcblx0XHRcdFx0XHRcdHZhciBzdWZmaXggPSBcIkFNXCI7XG5cdFx0XHRcdFx0XHQvLyBpZiB0aGUgaG91cnMgbnVtYmVyIGlzIGdyZWF0ZXIgdGhhbiAxMiwgc3VidHJhY3QgMTIuXG5cdFx0XHRcdFx0XHRpZiAoIGhvdXIgPj0gMTIgKSB7XG5cdFx0XHRcdFx0XHRcdGlmICggaG91ciA+IDEyICkge1xuXHRcdFx0XHRcdFx0XHRcdGhvdXIgPSBob3VyIC0gMTI7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0c3VmZml4ID0gXCJQTVwiO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKCBob3VyID09IDAgKSB7XG5cdFx0XHRcdFx0XHRcdGhvdXIgPSAxMjtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0JCggdGhpcyApLnRleHQoIGhvdXIgKyBcIjpcIiArIG1pbnV0ZXMgKyBcIiBcIiArIHN1ZmZpeCApO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSApO1xuXHRcdH0gKTtcblx0fSApO1xuXG5cdC8vIE11bHRpcGxlIGxvY2F0aW9zbiBtZXRhYm94ZXMgdGFiLW1lbnVcblx0dmFyIHRhYkxpbmtzID0galF1ZXJ5KCBcIi53cHNlby1sb2NhbC1tZXRhYm94LWNvbnRlbnQgLndwc2VvLWxvY2FsLW1ldGEtc2VjdGlvbi1saW5rXCIgKTtcblx0dGFiTGlua3Mub24oIFwiY2xpY2tcIiwgZnVuY3Rpb24oIGUgKSB7XG5cdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG5cdFx0dmFyIHRhcmdldFRhYiA9IGpRdWVyeSggdGhpcyApLmF0dHIoIFwiaHJlZlwiICk7XG5cdFx0dmFyIHRhcmdldFRhYkVsZW1lbnQgPSBqUXVlcnkoIHRhcmdldFRhYiApO1xuXG5cdFx0alF1ZXJ5KCBcIi53cHNlby1sb2NhbC1tZXRhYm94LW1lbnUgbGlcIiApXG5cdFx0XHQucmVtb3ZlQ2xhc3MoIFwiYWN0aXZlXCIgKVxuXHRcdFx0LmZpbmQoIFwiW3JvbGU9J3RhYiddXCIgKS5yZW1vdmVDbGFzcyggXCJ5b2FzdC1hY3RpdmUtdGFiXCIgKTtcblxuXHRcdGpRdWVyeSggXCIud3BzZW8tbG9jYWwtbWV0YWJveC1jb250ZW50IC53cHNlby1sb2NhbC1tZXRhLXNlY3Rpb24uYWN0aXZlXCIgKS5yZW1vdmVDbGFzcyggXCJhY3RpdmVcIiApO1xuXG5cdFx0dGFyZ2V0VGFiRWxlbWVudC5hZGRDbGFzcyggXCJhY3RpdmVcIiApO1xuXG5cdFx0alF1ZXJ5KCB0aGlzICkucGFyZW50KCBcImxpXCIgKVxuXHRcdFx0LmFkZENsYXNzKCBcImFjdGl2ZVwiIClcblx0XHRcdC5maW5kKCBcIltyb2xlPSd0YWInXVwiICkuYWRkQ2xhc3MoIFwieW9hc3QtYWN0aXZlLXRhYlwiICk7XG5cdH0gKTtcblxuXHQvLyBTaW5nbGUgTG9jYXRpb246IEVuYWJsZS9kaXNhYmxlIE9wZW4gMjQvNyBvbiBjbGlja1xuXHQkKCBcIiNfd3BzZW9fb3Blbl8yNDdcIiApLm9uKCBcImNsaWNrXCIsIGZ1bmN0aW9uKCkge1xuXHRcdG1heWJlQ2xvc2VPcGVuaW5nSG91cnMoIHRoaXMgKTtcblx0fSApO1xuXG5cdC8vIERpc2FibGUgaG91cnMgMjQvNyBvbiBjbGlja1xuXHQkKCBcIi53cHNlb19vcGVuXzI0aCBpbnB1dFwiICkub24oIFwiY2xpY2tcIiwgZnVuY3Rpb24oIGUgKSB7XG5cdFx0aWYgKCAkKCB0aGlzICkuaXMoIFwiOmNoZWNrZWRcIiApICkge1xuXHRcdFx0JCggXCJzZWxlY3RcIiwgJCggXCIub3BlbmluZ2hvdXJzLXdyYXBwZXJcIiwgJCggdGhpcyApLmNsb3Nlc3QoIFwiLm9wZW5pbmctaG91cnNcIiApICkgKS5hdHRyKCBcImRpc2FibGVkXCIsIHRydWUgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0JCggXCJzZWxlY3RcIiwgJCggXCIub3BlbmluZ2hvdXJzLXdyYXBwZXJcIiwgJCggdGhpcyApLmNsb3Nlc3QoIFwiLm9wZW5pbmctaG91cnNcIiApICkgKS5hdHRyKCBcImRpc2FibGVkXCIsIGZhbHNlICk7XG5cdFx0fVxuXHR9ICk7XG5cblx0ZnVuY3Rpb24gbWF5YmVDbG9zZU9wZW5pbmdIb3VycyggZWxlbSApIHtcblx0XHRpZiAoICQoIGVsZW0gKS5pcyggXCI6Y2hlY2tlZFwiICkgKSB7XG5cdFx0XHQkKCBcIiNvcGVuaW5nLWhvdXJzLXJvd3MsIC5vcGVuaW5nLWhvdXJzLXdyYXBcIiApLnNsaWRlVXAoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0JCggXCIjb3BlbmluZy1ob3Vycy1yb3dzLCAub3BlbmluZy1ob3Vycy13cmFwXCIgKS5zbGlkZURvd24oKTtcblx0XHR9XG5cdH1cblxuXHQkKCBcIi53aWRnZXQtY29udGVudFwiICkub24oIFwiY2xpY2tcIiwgXCIjd3BzZW8tY2hlY2tib3gtbXVsdGlwbGUtbG9jYXRpb25zLXdyYXBwZXIgaW5wdXRbdHlwZT1jaGVja2JveF1cIiwgZnVuY3Rpb24oKSB7XG5cdFx0d3BzZW9fc2hvd19hbGxfbG9jYXRpb25zX3NlbGVjdGJveCggJCggdGhpcyApICk7XG5cdH0gKTtcblxuXHQvLyBTaG93IGxvY2F0aW9ucyBtZXRhYm94IGJlZm9yZSBXUCBTRU8gbWV0YWJveFxuXHRpZiAoICQoIFwiI3dwc2VvX2xvY2F0aW9uc1wiICkubGVuZ3RoID4gMCAmJiAkKCBcIiN3cHNlb19tZXRhXCIgKS5sZW5ndGggPiAwICkge1xuXHRcdCQoIFwiI3dwc2VvX2xvY2F0aW9uc1wiICkuaW5zZXJ0QmVmb3JlKCAkKCBcIiN3cHNlb19tZXRhXCIgKSApO1xuXHR9XG5cblx0JCggXCIub3BlbmluZ2hvdXJzX2Zyb21cIiApLmNoYW5nZSggZnVuY3Rpb24oKSB7XG5cdFx0dmFyIHRvX2lkID0gJCggdGhpcyApLmF0dHIoIFwiaWRcIiApLnJlcGxhY2UoIFwiX2Zyb21cIiwgXCJfdG9fd3JhcHBlclwiICk7XG5cdFx0dmFyIHNlY29uZF9pZCA9ICQoIHRoaXMgKS5hdHRyKCBcImlkXCIgKS5yZXBsYWNlKCBcIl9mcm9tXCIsIFwiX3NlY29uZFwiICk7XG5cblx0XHRpZiAoICQoIHRoaXMgKS52YWwoKSA9PSBcImNsb3NlZFwiICkge1xuXHRcdFx0JCggXCIjXCIgKyB0b19pZCApLmNzcyggXCJkaXNwbGF5XCIsIFwibm9uZVwiICk7XG5cdFx0XHQkKCBcIiNcIiArIHNlY29uZF9pZCApLmNzcyggXCJkaXNwbGF5XCIsIFwibm9uZVwiICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdCQoIFwiI1wiICsgdG9faWQgKS5jc3MoIFwiZGlzcGxheVwiLCBcImlubGluZVwiICk7XG5cdFx0XHQkKCBcIiNcIiArIHNlY29uZF9pZCApLmNzcyggXCJkaXNwbGF5XCIsIFwiYmxvY2tcIiApO1xuXHRcdH1cblx0fSApLmNoYW5nZSgpO1xuXHQkKCBcIi5vcGVuaW5naG91cnNfZnJvbV9zZWNvbmRcIiApLmNoYW5nZSggZnVuY3Rpb24oKSB7XG5cdFx0dmFyIHRvX2lkID0gJCggdGhpcyApLmF0dHIoIFwiaWRcIiApLnJlcGxhY2UoIFwiX2Zyb21cIiwgXCJfdG9fd3JhcHBlclwiICk7XG5cblx0XHRpZiAoICQoIHRoaXMgKS52YWwoKSA9PSBcImNsb3NlZFwiICkge1xuXHRcdFx0JCggXCIjXCIgKyB0b19pZCApLmNzcyggXCJkaXNwbGF5XCIsIFwibm9uZVwiICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdCQoIFwiI1wiICsgdG9faWQgKS5jc3MoIFwiZGlzcGxheVwiLCBcImlubGluZVwiICk7XG5cdFx0fVxuXHR9ICkuY2hhbmdlKCk7XG5cdCQoIFwiLm9wZW5pbmdob3Vyc190b1wiICkuY2hhbmdlKCBmdW5jdGlvbigpIHtcblx0XHR2YXIgZnJvbV9pZCA9ICQoIHRoaXMgKS5hdHRyKCBcImlkXCIgKS5yZXBsYWNlKCBcIl90b1wiLCBcIl9mcm9tXCIgKTtcblx0XHR2YXIgdG9faWQgPSAkKCB0aGlzICkuYXR0ciggXCJpZFwiICkucmVwbGFjZSggXCJfdG9cIiwgXCJfdG9fd3JhcHBlclwiICk7XG5cdFx0aWYgKCAkKCB0aGlzICkudmFsKCkgPT0gXCJjbG9zZWRcIiApIHtcblx0XHRcdCQoIFwiI1wiICsgdG9faWQgKS5jc3MoIFwiZGlzcGxheVwiLCBcIm5vbmVcIiApO1xuXHRcdFx0JCggXCIjXCIgKyBmcm9tX2lkICkudmFsKCBcImNsb3NlZFwiICk7XG5cdFx0fVxuXHR9ICk7XG5cdCQoIFwiLm9wZW5pbmdob3Vyc190b19zZWNvbmRcIiApLmNoYW5nZSggZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGZyb21faWQgPSAkKCB0aGlzICkuYXR0ciggXCJpZFwiICkucmVwbGFjZSggXCJfdG9cIiwgXCJfZnJvbVwiICk7XG5cdFx0dmFyIHRvX2lkID0gJCggdGhpcyApLmF0dHIoIFwiaWRcIiApLnJlcGxhY2UoIFwiX3RvXCIsIFwiX3RvX3dyYXBwZXJcIiApO1xuXHRcdGlmICggJCggdGhpcyApLnZhbCgpID09IFwiY2xvc2VkXCIgKSB7XG5cdFx0XHQkKCBcIiNcIiArIHRvX2lkICkuY3NzKCBcImRpc3BsYXlcIiwgXCJub25lXCIgKTtcblx0XHRcdCQoIFwiI1wiICsgZnJvbV9pZCApLnZhbCggXCJjbG9zZWRcIiApO1xuXHRcdH1cblx0fSApO1xuXG5cdGlmICggJCggXCIuc2V0X2N1c3RvbV9pbWFnZXNcIiApLmxlbmd0aCA+IDAgKSB7XG5cdFx0aWYgKCB0eXBlb2Ygd3AgIT09IFwidW5kZWZpbmVkXCIgJiYgd3AubWVkaWEgJiYgd3AubWVkaWEuZWRpdG9yICkge1xuXHRcdFx0JCggXCIud3JhcFwiICkub24oIFwiY2xpY2tcIiwgXCIuc2V0X2N1c3RvbV9pbWFnZXNcIiwgZnVuY3Rpb24oIGUgKSB7XG5cdFx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcblx0XHRcdFx0dmFyIGJ1dHRvbiA9ICQoIHRoaXMgKTtcblx0XHRcdFx0dmFyIGlkID0gYnV0dG9uLmF0dHIoIFwiZGF0YS1pZFwiICk7XG5cdFx0XHRcdHdwLm1lZGlhLmVkaXRvci5zZW5kLmF0dGFjaG1lbnQgPSBmdW5jdGlvbiggcHJvcHMsIGF0dGFjaG1lbnQgKSB7XG5cdFx0XHRcdFx0aWYgKCBhdHRhY2htZW50Lmhhc093blByb3BlcnR5KCBcInNpemVzXCIgKSApIHtcblx0XHRcdFx0XHRcdHZhciB1cmwgPSBhdHRhY2htZW50LnNpemVzWyBwcm9wcy5zaXplIF0udXJsO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR2YXIgdXJsID0gYXR0YWNobWVudC51cmw7XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0JCggXCIjXCIgKyBpZCArIFwiX2ltYWdlX2NvbnRhaW5lclwiICkuYXR0ciggXCJzcmNcIiwgdXJsICk7XG5cdFx0XHRcdFx0JCggXCIud3BzZW8tbG9jYWwtXCIgKyBpZCArIFwiLXdyYXBwZXIgLndwc2VvLWxvY2FsLWhpZGUtYnV0dG9uXCIgKS5zaG93KCk7XG5cdFx0XHRcdFx0JCggXCIjaGlkZGVuX1wiICsgaWQgKS5hdHRyKCBcInZhbHVlXCIsIGF0dGFjaG1lbnQuaWQgKTtcblx0XHRcdFx0fTtcblx0XHRcdFx0d3AubWVkaWEuZWRpdG9yLm9wZW4oIGJ1dHRvbiApO1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9ICk7XG5cdFx0fVxuXHR9XG5cblx0JCggXCIucmVtb3ZlX2N1c3RvbV9pbWFnZVwiICkub24oIFwiY2xpY2tcIiwgZnVuY3Rpb24oIGUgKSB7XG5cdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG5cdFx0dmFyIGlkID0gJCggdGhpcyApLmF0dHIoIFwiZGF0YS1pZFwiICk7XG5cdFx0JCggXCIjXCIgKyBpZCApLmF0dHIoIFwic3JjXCIsIFwiXCIgKS5oaWRlKCk7XG5cdFx0JCggXCIjaGlkZGVuX1wiICsgaWQgKS5hdHRyKCBcInZhbHVlXCIsIFwiXCIgKTtcblx0XHQkKCBcIi53cHNlby1sb2NhbC1cIiArIGlkICsgXCItd3JhcHBlciAud3BzZW8tbG9jYWwtaGlkZS1idXR0b25cIiApLmhpZGUoKTtcblx0fSApO1xuXG5cdC8vIENvcHkgbG9jYXRpb24gZGF0YVxuXHQkKCBcIiN3cHNlb19jb3B5X2Zyb21fbG9jYXRpb25cIiApLmNoYW5nZSggZnVuY3Rpb24oKSB7XG5cdFx0dmFyIGxvY2F0aW9uX2lkID0gJCggdGhpcyApLnZhbCgpO1xuXG5cdFx0aWYgKCBsb2NhdGlvbl9pZCA9PSBcIlwiICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdCQucG9zdCggd3BzZW9fbG9jYWxfZGF0YS5hamF4dXJsLCB7XG5cdFx0XHRsb2NhdGlvbl9pZDogbG9jYXRpb25faWQsXG5cdFx0XHRzZWN1cml0eTogd3BzZW9fbG9jYWxfZGF0YS5zZWNfbm9uY2UsXG5cdFx0XHRhY3Rpb246IFwid3BzZW9fY29weV9sb2NhdGlvblwiLFxuXHRcdH0sIGZ1bmN0aW9uKCByZXN1bHQgKSB7XG5cdFx0XHRpZiAoIHJlc3VsdC5jaGFyQXQoIHJlc3VsdC5sZW5ndGggLSAxICkgPT0gMCApIHtcblx0XHRcdFx0cmVzdWx0ID0gcmVzdWx0LnNsaWNlKCAwLCAtMSApO1xuXHRcdFx0fSBlbHNlIGlmICggcmVzdWx0LnN1YnN0cmluZyggcmVzdWx0Lmxlbmd0aCAtIDIgKSA9PSBcIi0xXCIgKSB7XG5cdFx0XHRcdHJlc3VsdCA9IHJlc3VsdC5zbGljZSggMCwgLTIgKTtcblx0XHRcdH1cblxuXHRcdFx0dmFyIGRhdGEgPSAkLnBhcnNlSlNPTiggcmVzdWx0ICk7XG5cdFx0XHRpZiAoIGRhdGEuc3VjY2VzcyA9PSBcInRydWVcIiB8fCBkYXRhLnN1Y2Nlc3MgPT0gdHJ1ZSApIHtcblxuXHRcdFx0XHRmb3IgKCB2YXIgaSBpbiBkYXRhLmxvY2F0aW9uICkge1xuXHRcdFx0XHRcdHZhciB2YWx1ZSA9IGRhdGEubG9jYXRpb25bIGkgXTtcblxuXHRcdFx0XHRcdGlmICggdmFsdWUgIT0gbnVsbCAmJiB2YWx1ZSAhPSBcIlwiICYmIHR5cGVvZiB2YWx1ZSAhPSBcInVuZGVmaW5lZFwiICkge1xuXHRcdFx0XHRcdFx0aWYgKCBpID09IFwiaXNfcG9zdGFsX2FkZHJlc3NcIiB8fCBpID09IFwibXVsdGlwbGVfb3BlbmluZ19ob3Vyc1wiICkge1xuXHRcdFx0XHRcdFx0XHRpZiAoIHZhbHVlID09IFwiMVwiICkge1xuXHRcdFx0XHRcdFx0XHRcdCQoIFwiI3dwc2VvX1wiICsgaSApLmF0dHIoIFwiY2hlY2tlZFwiLCBcImNoZWNrZWRcIiApO1xuXHRcdFx0XHRcdFx0XHRcdCQoIFwiLm9wZW5pbmctaG91cnMgLm9wZW5pbmctaG91ci1zZWNvbmRcIiApLnNsaWRlRG93bigpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYgKCBpLmluZGV4T2YoIFwib3BlbmluZ19ob3Vyc1wiICkgPiAtMSApIHtcblx0XHRcdFx0XHRcdFx0JCggXCIjXCIgKyBpICkudmFsKCB2YWx1ZSApO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0JCggXCIjd3BzZW9fXCIgKyBpICkudmFsKCB2YWx1ZSApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0gKTtcblx0fSApO1xufSApO1xuXG53aW5kb3cud3BzZW9fc2hvd19hbGxfbG9jYXRpb25zX3NlbGVjdGJveCA9IGZ1bmN0aW9uKCBvYmogKSB7XG5cdCQgPSBqUXVlcnk7XG5cblx0JG9iaiA9ICQoIG9iaiApO1xuXHR2YXIgcGFyZW50ID0gJG9iai5wYXJlbnRzKCBcIi53aWRnZXQtaW5zaWRlXCIgKTtcblx0dmFyICRsb2NhdGlvbnNXcmFwcGVyID0gJCggXCIjd3BzZW8tbG9jYXRpb25zLXdyYXBwZXJcIiwgcGFyZW50ICk7XG5cblx0aWYgKCAkb2JqLmlzKCBcIjpjaGVja2VkXCIgKSApIHtcblx0XHQkbG9jYXRpb25zV3JhcHBlci5zbGlkZVVwKCk7XG5cdH0gZWxzZSB7XG5cdFx0JGxvY2F0aW9uc1dyYXBwZXIuc2xpZGVEb3duKCk7XG5cdH1cbn1cbiJdfQ==

haha - 2025