PluginProbe
Booking Calendar / 11.9
Booking Calendar v11.9
11.9 11.8.4 11.8.3 11.8.2 11.8.1 11.8 11.7 11.6.1 11.6 11.5 11.4.3 11.4.2 11.4.1 11.4 11.3 11.2.1 11.2 11.1 11.0 10.15.7 10.15.6 10.1.3 10.10 10.10.1 10.10.2 All 205 releases
← All changes | includes/page-availability-general/_out/availability_general_page.js +244 -26 11.8.1 → 11.9 View file →
@@ -322,22 +322,205 @@
322 322 hours = Math.floor(seconds / 3600);
323 323 mins = Math.floor(seconds % 3600 / 60);
324 324 return (hours < 10 ? '0' : '') + hours + ':' + (mins < 10 ? '0' : '') + mins;
325 325 }
326 +
327 + /**
328 + * Return the bounded interval limit for one Working Time editor.
329 + *
330 + * @param {jQuery} $weekdays Working Time weekday wrapper.
331 + * @return {number} Maximum intervals per weekday.
332 + */
333 + function get_max_working_time_intervals($weekdays) {
334 + var configured_limit = parseInt($weekdays.attr('data-max-intervals'), 10);
335 + var localized_limit = parseInt(cfg.max_working_time_intervals, 10);
336 + return Math.max(1, Math.min(48, configured_limit || localized_limit || 8));
337 + }
338 +
339 + /**
340 + * Read all visible interval controls for one weekday.
341 + *
342 + * @param {jQuery} $day_row Weekday row.
343 + * @return {Object[]} Canonical interval records.
344 + */
345 + function collect_working_time_day_intervals($day_row) {
346 + var intervals = [];
347 + $day_row.find('[data-wpbc-working-time-interval="1"]').each(function () {
348 + var $interval = $(this);
349 + intervals.push({
350 + start_second: time_to_seconds($interval.find('.wpbc_ag_working_time_start').val()),
351 + end_second: time_to_seconds($interval.find('.wpbc_ag_working_time_end').val())
352 + });
353 + });
354 + return intervals;
355 + }
356 +
357 + /**
358 + * Rebuild dynamic names, IDs, and label associations after a row mutation.
359 + *
360 + * @param {jQuery} $day_row Weekday row.
361 + * @return {void}
362 + */
363 + function reindex_working_time_day($day_row) {
364 + var $weekdays = $day_row.closest('[data-wpbc-working-time-weekdays]');
365 + var prefix = String($weekdays.attr('data-wpbc-working-time-weekdays') || '');
366 + var day = parseInt($day_row.attr('data-wpbc-working-time-day'), 10);
367 + $day_row.find('[data-wpbc-working-time-interval="1"]').each(function (interval_index) {
368 + var $interval = $(this);
369 + var start_id = prefix + '_start_' + day + '_' + interval_index;
370 + var end_id = prefix + '_end_' + day + '_' + interval_index;
371 + var $labels = $interval.find('label');
372 + $interval.attr('data-interval-index', interval_index);
373 + $interval.find('.wpbc_ag_working_time_start').attr('id', start_id).attr('name', prefix + '_start[' + day + '][]');
374 + $interval.find('.wpbc_ag_working_time_end').attr('id', end_id).attr('name', prefix + '_end[' + day + '][]');
375 + $labels.eq(0).attr('for', start_id);
376 + $labels.eq(1).attr('for', end_id);
377 + });
378 + }
379 +
380 + /**
381 + * Refresh one weekday's enabled controls and interval-limit state.
382 + *
383 + * @param {jQuery} $day_row Weekday row.
384 + * @return {void}
385 + */
386 + function refresh_working_time_day($day_row) {
387 + var $weekdays = $day_row.closest('[data-wpbc-working-time-weekdays]');
388 + var $toggle = $day_row.find('[data-wpbc-working-time-day-toggle="1"]').first();
389 + var $resource_custom = $day_row.closest('[data-wpbc-working-time-resource-custom="1"]');
390 + var is_block_disabled = $day_row.closest('.wpbc_ag_working_time_block').hasClass('is-disabled') || $resource_custom.length && !$resource_custom.hasClass('is-visible');
391 + var is_day_enabled = !is_block_disabled && $toggle.prop('checked');
392 + var interval_count = $day_row.find('[data-wpbc-working-time-interval="1"]').length;
393 + var max_intervals = get_max_working_time_intervals($weekdays);
394 + $day_row.toggleClass('is-enabled', $toggle.prop('checked'));
395 + $toggle.prop('disabled', is_block_disabled);
396 + $day_row.find('.wpbc_ag_working_time_start, .wpbc_ag_working_time_end, [data-wpbc-remove-working-time-interval]').prop('disabled', !is_day_enabled);
397 + $day_row.find('[data-wpbc-add-working-time-interval]').prop('disabled', !is_day_enabled || interval_count >= max_intervals);
398 + }
399 +
400 + /**
401 + * Find a non-overlapping one-hour interval proposal.
402 + *
403 + * @param {Object[]} intervals Current weekday intervals.
404 + * @return {Object|null} Proposed interval, or null when the day has no gap.
405 + */
406 + function find_working_time_interval_proposal(intervals) {
407 + var sorted_intervals = intervals.slice().sort(function (first_interval, second_interval) {
408 + return first_interval.start_second - second_interval.start_second;
409 + });
410 + var preferred_start = sorted_intervals.length ? sorted_intervals[sorted_intervals.length - 1].end_second : 9 * 3600;
411 + var candidates = [];
412 + var candidate_start;
413 + for (candidate_start = 0; candidate_start <= 23 * 3600; candidate_start += 1800) {
414 + if (candidate_start >= preferred_start) {
415 + candidates.push(candidate_start);
416 + }
417 + }
418 + for (candidate_start = 0; candidate_start < preferred_start && candidate_start <= 23 * 3600; candidate_start += 1800) {
419 + candidates.push(candidate_start);
420 + }
421 + candidate_start = null;
422 + candidates.some(function (proposed_start) {
423 + var proposed_end = proposed_start + 3600;
424 + var overlaps = sorted_intervals.some(function (interval) {
425 + return proposed_start < interval.end_second && proposed_end > interval.start_second;
426 + });
427 + if (proposed_end <= 86400 && !overlaps) {
428 + candidate_start = proposed_start;
429 + return true;
430 + }
431 + return false;
432 + });
433 + return null === candidate_start ? null : {
434 + start_second: candidate_start,
435 + end_second: candidate_start + 3600
436 + };
437 + }
438 +
439 + /**
440 + * Append an interval by cloning the server-rendered allow-listed controls.
441 + *
442 + * @param {jQuery} $day_row Weekday row.
443 + * @param {Object} interval Canonical interval record.
444 + * @return {jQuery} Appended interval node.
445 + */
446 + function append_working_time_interval($day_row, interval) {
447 + var $container = $day_row.find('[data-wpbc-working-time-intervals="1"]').first();
448 + var $prototype = $container.find('[data-wpbc-working-time-interval="1"]').first();
449 + var $interval = $prototype.clone(false, false);
450 + $interval.find('.wpbc_ag_working_time_start').val(seconds_to_time(interval.start_second));
451 + $interval.find('.wpbc_ag_working_time_end').val(seconds_to_time(interval.end_second));
452 + $container.append($interval);
453 + reindex_working_time_day($day_row);
454 + return $interval;
455 + }
456 +
457 + /**
458 + * Add the next available one-hour interval to a weekday.
459 + *
460 + * @param {HTMLElement} button Add-interval button.
461 + * @return {void}
462 + */
463 + function add_working_time_interval(button) {
464 + var $day_row = $(button).closest('[data-wpbc-working-time-day]');
465 + var $weekdays = $day_row.closest('[data-wpbc-working-time-weekdays]');
466 + var intervals = collect_working_time_day_intervals($day_row);
467 + var max_intervals = get_max_working_time_intervals($weekdays);
468 + var proposal;
469 + var $interval;
470 + if (intervals.length >= max_intervals) {
471 + show_message(cfg.i18n && cfg.i18n.interval_limit || 'No additional one-hour interval is available for this weekday.', 'error', 6000);
472 + return;
473 + }
474 + proposal = find_working_time_interval_proposal(intervals);
475 + if (!proposal) {
476 + show_message(cfg.i18n && cfg.i18n.interval_limit || 'No additional one-hour interval is available for this weekday.', 'error', 6000);
477 + return;
478 + }
479 + $interval = append_working_time_interval($day_row, proposal);
480 + $day_row.find('[data-wpbc-working-time-day-toggle="1"]').prop('checked', true);
481 + refresh_working_time_day($day_row);
482 + $interval.find('.wpbc_ag_working_time_start').trigger('focus');
483 + schedule_preview_refresh();
484 + }
485 +
486 + /**
487 + * Remove one weekday interval, closing the weekday when it is the last one.
488 + *
489 + * Keeping one disabled interval in the DOM preserves an allow-listed control
490 + * prototype for reopening the day or adding a later interval.
491 + *
492 + * @param {HTMLElement} button Remove-interval button.
493 + * @return {void}
494 + */
495 + function remove_working_time_interval(button) {
496 + var $button = $(button);
497 + var $day_row = $button.closest('[data-wpbc-working-time-day]');
498 + var $intervals = $day_row.find('[data-wpbc-working-time-interval="1"]');
499 + var $focus_target;
500 + if ($intervals.length > 1) {
501 + $button.closest('[data-wpbc-working-time-interval="1"]').remove();
502 + $focus_target = $day_row.find('[data-wpbc-add-working-time-interval="1"]').first();
503 + } else {
504 + $day_row.find('[data-wpbc-working-time-day-toggle="1"]').prop('checked', false);
505 + $focus_target = $day_row.find('[data-wpbc-working-time-day-toggle="1"]').first();
506 + }
507 + reindex_working_time_day($day_row);
508 + refresh_working_time_day($day_row);
509 + $focus_target.trigger('focus');
510 + schedule_preview_refresh();
511 + }
326 512 function collect_working_time_weekdays(prefix) {
327 513 var $form = get_form();
328 514 var weekdays = {};
329 515 $form.find('[data-wpbc-working-time-weekdays="' + prefix + '"] .wpbc_ag_working_time_row').each(function () {
330 516 var $row = $(this);
331 - var day = parseInt($row.find('input[type="checkbox"]').val(), 10);
517 + var day = parseInt($row.attr('data-wpbc-working-time-day'), 10);
332 518 weekdays[day] = [];
333 - if (!$row.find('input[type="checkbox"]').prop('checked')) {
519 + if (!$row.find('[data-wpbc-working-time-day-toggle="1"]').prop('checked')) {
334 520 return;
335 521 }
336 - weekdays[day].push({
337 - start_second: time_to_seconds($row.find('.wpbc_ag_working_time_start').val()),
338 - end_second: time_to_seconds($row.find('.wpbc_ag_working_time_end').val())
339 - });
522 + weekdays[day] = collect_working_time_day_intervals($row);
340 523 });
341 524 return weekdays;
342 525 }
343 526 function set_working_time_weekdays(prefix, weekdays) {
@@ -343,24 +526,38 @@
343 526 function set_working_time_weekdays(prefix, weekdays) {
344 527 var $wrap = get_form().find('[data-wpbc-working-time-weekdays="' + prefix + '"]');
345 528 $wrap.find('.wpbc_ag_working_time_row').each(function () {
346 529 var $row = $(this);
347 - var day = parseInt($row.find('input[type="checkbox"]').val(), 10);
348 - var intervals = weekdays && weekdays[day] ? weekdays[day] : [];
349 - var interval = intervals.length ? intervals[0] : {
530 + var day = parseInt($row.attr('data-wpbc-working-time-day'), 10);
531 + var intervals = weekdays && $.isArray(weekdays[day]) ? weekdays[day] : [];
532 + var display_intervals = intervals.length ? intervals : [{
350 533 start_second: 32400,
351 534 end_second: 64800
352 - };
353 - $row.find('input[type="checkbox"]').prop('checked', intervals.length > 0);
354 - $row.find('.wpbc_ag_working_time_start').val(seconds_to_time(interval.start_second));
355 - $row.find('.wpbc_ag_working_time_end').val(seconds_to_time(interval.end_second));
535 + }];
536 + var $container = $row.find('[data-wpbc-working-time-intervals="1"]').first();
537 + var $prototype = $container.find('[data-wpbc-working-time-interval="1"]').first().clone(false, false);
538 + $container.empty().append($prototype);
539 + $prototype.find('.wpbc_ag_working_time_start').val(seconds_to_time(display_intervals[0].start_second));
540 + $prototype.find('.wpbc_ag_working_time_end').val(seconds_to_time(display_intervals[0].end_second));
541 + display_intervals.slice(1).forEach(function (interval) {
542 + append_working_time_interval($row, interval);
543 + });
544 + $row.find('[data-wpbc-working-time-day-toggle="1"]').prop('checked', intervals.length > 0);
545 + reindex_working_time_day($row);
356 546 });
357 547 }
358 548 function refresh_working_time_panels() {
359 549 var is_enabled = get_form().find('input[name="booking_working_time_enabled"]').prop('checked');
360 550 var mode = get_form().find('input[name="booking_working_time_resource_mode"]:checked').val() || 'inherit';
361 - get_form().find('.wpbc_ag_working_time_block').toggleClass('is-disabled', !is_enabled).find('input, select, button').prop('disabled', !is_enabled);
362 - get_form().find('[data-wpbc-working-time-resource-custom]').toggleClass('is-visible', mode === 'custom');
551 + var $resource_custom = get_form().find('[data-wpbc-working-time-resource-custom]');
552 + $resource_custom.toggleClass('is-visible', mode === 'custom');
553 + get_form().find('.wpbc_ag_working_time_block').toggleClass('is-disabled', !is_enabled);
554 + get_form().find('.wpbc_ag_working_time_block').each(function () {
555 + $(this).find('input, select, button').prop('disabled', !is_enabled);
556 + });
557 + get_form().find('[data-wpbc-working-time-day]').each(function () {
558 + refresh_working_time_day($(this));
559 + });
363 560 }
364 561 function get_working_time_settings_from_form() {
365 562 var $form = get_form();
366 563 var resourceId = parseInt($form.find('[data-wpbc-working-time-resource-id]').val(), 10) || parseInt($('#wpbc_ag_resource_id').val(), 10) || 0;
@@ -405,21 +602,29 @@
405 602 var resourceStart = {};
406 603 var resourceEnd = {};
407 604 $form.find('[data-wpbc-working-time-weekdays="booking_working_time_default"] .wpbc_ag_working_time_row').each(function () {
408 605 var $row = $(this);
409 - var day = parseInt($row.find('input[type="checkbox"]').val(), 10);
410 - defaultStart[day] = $row.find('.wpbc_ag_working_time_start').val() || '09:00';
411 - defaultEnd[day] = $row.find('.wpbc_ag_working_time_end').val() || '18:00';
412 - if ($row.find('input[type="checkbox"]').prop('checked')) {
606 + var day = parseInt($row.attr('data-wpbc-working-time-day'), 10);
607 + defaultStart[day] = [];
608 + defaultEnd[day] = [];
609 + $row.find('[data-wpbc-working-time-interval="1"]').each(function () {
610 + defaultStart[day].push($(this).find('.wpbc_ag_working_time_start').val() || '09:00');
611 + defaultEnd[day].push($(this).find('.wpbc_ag_working_time_end').val() || '18:00');
612 + });
613 + if ($row.find('[data-wpbc-working-time-day-toggle="1"]').prop('checked')) {
413 614 defaultDays.push(day);
414 615 }
415 616 });
416 617 $form.find('[data-wpbc-working-time-weekdays="booking_working_time_resource"] .wpbc_ag_working_time_row').each(function () {
417 618 var $row = $(this);
418 - var day = parseInt($row.find('input[type="checkbox"]').val(), 10);
419 - resourceStart[day] = $row.find('.wpbc_ag_working_time_start').val() || '09:00';
420 - resourceEnd[day] = $row.find('.wpbc_ag_working_time_end').val() || '18:00';
421 - if ($row.find('input[type="checkbox"]').prop('checked')) {
619 + var day = parseInt($row.attr('data-wpbc-working-time-day'), 10);
620 + resourceStart[day] = [];
621 + resourceEnd[day] = [];
622 + $row.find('[data-wpbc-working-time-interval="1"]').each(function () {
623 + resourceStart[day].push($(this).find('.wpbc_ag_working_time_start').val() || '09:00');
624 + resourceEnd[day].push($(this).find('.wpbc_ag_working_time_end').val() || '18:00');
625 + });
626 + if ($row.find('[data-wpbc-working-time-day-toggle="1"]').prop('checked')) {
422 627 resourceDays.push(day);
423 628 }
424 629 });
425 630 payload.booking_working_time_enabled = $form.find('input[name="booking_working_time_enabled"]').prop('checked') ? 'On' : '';
@@ -776,8 +981,11 @@
776 981 update_hints(response.data.settings.hints);
777 982 }
778 983 if (response.data && response.data.settings) {
779 984 cfg.settings = response.data.settings;
985 + if (response.data.settings.working_time) {
986 + apply_working_time_settings_to_form(response.data.settings.working_time, $('#wpbc_ag_resource_id').val());
987 + }
780 988 }
781 989 load_calendar_preview();
782 990 document.dispatchEvent(new CustomEvent('wpbc:availability-general:settings-saved', {
783 991 detail: {
@@ -784,10 +992,11 @@
784 992 settings: response.data && response.data.settings ? response.data.settings : {}
785 993 }
786 994 }));
787 995 show_message(response.data && response.data.message || cfg.i18n && cfg.i18n.saved || 'General availability settings updated.', 'success', 2000);
788 - }).fail(function () {
789 - show_message(cfg.i18n && cfg.i18n.save_failed || 'Unable to save general availability settings.', 'error', 10000);
996 + }).fail(function (jq_xhr) {
997 + var response_message = jq_xhr && jq_xhr.responseJSON && jq_xhr.responseJSON.data && jq_xhr.responseJSON.data.message ? jq_xhr.responseJSON.data.message : '';
998 + show_message(response_message || cfg.i18n && cfg.i18n.save_failed || 'Unable to save general availability settings.', 'error', 10000);
790 999 }).always(function () {
791 1000 set_busy($button, false);
792 1001 });
793 1002 }
@@ -856,8 +1065,17 @@
856 1065 schedule_preview_refresh();
857 1066 });
858 1067 $(document).on('change', 'input[name="booking_working_time_enabled"]', refresh_working_time_panels);
859 1068 $(document).on('change', 'input[name="booking_working_time_resource_mode"]', refresh_working_time_panels);
1069 + $(document).on('change', '[data-wpbc-working-time-day-toggle="1"]', function () {
1070 + refresh_working_time_day($(this).closest('[data-wpbc-working-time-day]'));
1071 + });
1072 + $(document).on('click', '[data-wpbc-add-working-time-interval="1"]', function () {
1073 + add_working_time_interval(this);
1074 + });
1075 + $(document).on('click', '[data-wpbc-remove-working-time-interval="1"]', function () {
1076 + remove_working_time_interval(this);
1077 + });
860 1078 $(document).on('change', '[data-wpbc-ag-settings-form="1"] input, [data-wpbc-ag-settings-form="1"] select', schedule_preview_refresh);
861 1079 $(document).on('submit', '[data-wpbc-ag-settings-form="1"]', function (event) {
862 1080 event.preventDefault();
863 1081 save_settings($('[data-wpbc-ag-save="1"]').first());
@@ -877,5 +1095,5 @@
877 1095 schedule_preview_refresh();
878 1096 setTimeout(schedule_preview_refresh, 600);
879 1097 });
880 1098 })(jQuery, window);
881 -//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5jbHVkZXMvcGFnZS1hdmFpbGFiaWxpdHktZ2VuZXJhbC9fb3V0L2F2YWlsYWJpbGl0eV9nZW5lcmFsX3BhZ2UuanMiLCJuYW1lcyI6WyIkIiwidyIsImNmZyIsIndwYmNfYXZhaWxhYmlsaXR5X2dlbmVyYWxfcGFnZSIsInByZXZpZXdfdGltZXIiLCJwcmV2aWV3X2ZyYW1lIiwicHJldmlld19hamF4Iiwib2JzZXJ2ZXIiLCJwcmV2aWV3X3VuYXZhaWxhYmxlX2NsYXNzZXMiLCJ0cmltX3RleHQiLCJ2YWx1ZSIsIlN0cmluZyIsInRyaW0iLCJzd2l0Y2hfcGFuZWwiLCIkdGFiIiwicGFuZWxfaWQiLCJhdHRyIiwiJHRhYnMiLCJjbG9zZXN0IiwiZmluZCIsIiRwYW5lbHMiLCJyZW1vdmVBdHRyIiwidG9nZ2xlX2dyb3VwIiwiJGJ1dHRvbiIsIiRncm91cCIsIiRmaWVsZHMiLCJpc19vcGVuIiwiaGFzQ2xhc3MiLCJ0b2dnbGVDbGFzcyIsInByb3AiLCJjbG9zZV9ncm91cCIsInJlbW92ZUNsYXNzIiwib3Blbl9ncm91cCIsImdyb3VwX25hbWUiLCJpc19leGNsdXNpdmUiLCJsZW5ndGgiLCJzaWJsaW5ncyIsImVhY2giLCJhZGRDbGFzcyIsInNjcm9sbF90b19ncm91cCIsIiRzY3JvbGxfcGFyZW50Iiwic2Nyb2xsX3BhcmVudF9lbCIsImdyb3VwX2VsIiwic2Nyb2xsX3RvcCIsInBhcmVudF9yZWN0IiwiZ3JvdXBfcmVjdCIsInBhcmVudHMiLCIkY2FuZGlkYXRlIiwib3ZlcmZsb3dfeSIsImNzcyIsInRlc3QiLCJzY3JvbGxIZWlnaHQiLCJjbGllbnRIZWlnaHQiLCJmaXJzdCIsImdldCIsInNjcm9sbEludG9WaWV3IiwiYmxvY2siLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJzY3JvbGxUb3AiLCJ0b3AiLCJzdG9wIiwiYW5pbWF0ZSIsIk1hdGgiLCJtYXgiLCJhcHBseV9vcGVuX3NlY3Rpb25fZnJvbV91cmwiLCJzZWN0aW9uX2dyb3VwcyIsIndlZWtkYXlzIiwiZnJvbV90b2RheSIsImJ1ZmZlciIsIndvcmtpbmdfdGltZSIsIm9wZW5fc2VjdGlvbiIsImluZGV4IiwiZGVsYXkiLCJzZXRUaW1lb3V0IiwicmVmcmVzaF9idWZmZXJfZmllbGRzIiwidmFsIiwiJHBhbmVsIiwiZGF0YSIsImlzX2J1ZmZlcl9hdmFpbGFibGUiLCJpc19hdmFpbGFibGVfbGltaXRfYXZhaWxhYmxlIiwic3luY19yYW5nZV9mcm9tX3NlbGVjdCIsInNlbGVjdCIsIiRzZWxlY3QiLCJuYW1lIiwic2VsZWN0ZWRfaW5kZXgiLCJzZWxlY3RlZF90ZXh0IiwidGV4dCIsIiRyYW5nZSIsIiR2YWx1ZSIsInN5bmNfc2VsZWN0X2Zyb21fcmFuZ2UiLCJyYW5nZSIsInBhcnNlSW50Iiwic3luY19hbGxfcmFuZ2VzIiwic3RlcF9zZWxlY3RfdmFsdWUiLCJidXR0b24iLCJzdGVwIiwiY3VycmVudF9pbmRleCIsIm5leHRfaW5kZXgiLCJtaW4iLCJ0cmlnZ2VyIiwiZ2V0X2Zvcm0iLCJjb2xsZWN0X3NldHRpbmdzIiwiJGZvcm0iLCJwdXNoIiwiYm9va2luZ191bmF2YWlsYWJsZV9kYXlzX251bV9mcm9tX3RvZGF5IiwiYm9va2luZ19hdmFpbGFibGVfZGF5c19udW1fZnJvbV90b2RheSIsImJvb2tpbmdfdW5hdmFpbGFibGVfZXh0cmFfaW5fb3V0IiwiYm9va2luZ191bmF2YWlsYWJsZV9leHRyYV9taW51dGVzX2luIiwiYm9va2luZ191bmF2YWlsYWJsZV9leHRyYV9taW51dGVzX291dCIsImJvb2tpbmdfdW5hdmFpbGFibGVfZXh0cmFfZGF5c19pbiIsImJvb2tpbmdfdW5hdmFpbGFibGVfZXh0cmFfZGF5c19vdXQiLCJnZXRfd29ya2luZ190aW1lX3NldHRpbmdzX2Zyb21fZm9ybSIsInNldF9zZWxlY3RfdmFsdWUiLCIkZmllbGQiLCJhcHBseV9zZXR0aW5nc190b19mb3JtIiwic2V0dGluZ3MiLCJkYXlfbnVtIiwiYXBwbHlfd29ya2luZ190aW1lX3NldHRpbmdzX3RvX2Zvcm0iLCJzY2hlZHVsZV9wcmV2aWV3X3JlZnJlc2giLCJkYXRlX2Zyb21fc3FsIiwic3FsX2RhdGUiLCJwYXJ0cyIsInNwbGl0IiwiRGF0ZSIsImdldF90b2RheV9kYXRlIiwiYXJyIiwiX3dwYmMiLCJnZXRfb3RoZXJfcGFyYW0iLCJub3ciLCJnZXRGdWxsWWVhciIsImdldE1vbnRoIiwiZ2V0RGF0ZSIsImdldF9yZWFsX3RvZGF5X2RhdGUiLCJkYXlzX2JldHdlZW4iLCJkYXRlX2EiLCJkYXRlX2IiLCJmbG9vciIsImdldFRpbWUiLCJhZGRfZGF5cyIsImRhdGUiLCJkYXlzIiwic2hpZnRlZF9kYXRlIiwic2V0RGF0ZSIsImRhdGVfdG9fc3FsIiwibW9udGgiLCJkYXkiLCJnZXRfc3FsX2RhdGVfZnJvbV9jZWxsIiwiY2VsbCIsImNsYXNzZXMiLCJjbGFzc05hbWUiLCJpIiwiaW5kZXhPZiIsInJlcGxhY2UiLCJ1bmF2YWlsYWJsZV9mcm9tX3RvZGF5X2FwcGxpZXMiLCJjZWxsX2RhdGUiLCJ0b2RheV9kYXRlIiwibWludXRlcyIsInVuYXZhaWxhYmxlX3VudGlsIiwiZ2V0X29wdGlvbl90ZXh0Iiwic2VsZWN0b3IiLCJnZXRfZGF5c192YWx1ZSIsInRpbWVfdG9fc2Vjb25kcyIsInRpbWUiLCJob3VycyIsIm1pbnMiLCJzZWNvbmRzX3RvX3RpbWUiLCJzZWNvbmRzIiwiY29sbGVjdF93b3JraW5nX3RpbWVfd2Vla2RheXMiLCJwcmVmaXgiLCIkcm93Iiwic3RhcnRfc2Vjb25kIiwiZW5kX3NlY29uZCIsInNldF93b3JraW5nX3RpbWVfd2Vla2RheXMiLCIkd3JhcCIsImludGVydmFscyIsImludGVydmFsIiwicmVmcmVzaF93b3JraW5nX3RpbWVfcGFuZWxzIiwiaXNfZW5hYmxlZCIsIm1vZGUiLCJyZXNvdXJjZUlkIiwid29ya2luZ1RpbWUiLCJleHRlbmQiLCJkZWZhdWx0X3NldHRpbmdzIiwiZGVmYXVsdCIsInJlc291cmNlcyIsImVuYWJsZWQiLCJyZXNvdXJjZVNldHRpbmdzIiwiYXBwZW5kX3dvcmtpbmdfdGltZV9wYXlsb2FkIiwicGF5bG9hZCIsImRlZmF1bHREYXlzIiwicmVzb3VyY2VEYXlzIiwiZGVmYXVsdFN0YXJ0IiwiZGVmYXVsdEVuZCIsInJlc291cmNlU3RhcnQiLCJyZXNvdXJjZUVuZCIsImJvb2tpbmdfd29ya2luZ190aW1lX2VuYWJsZWQiLCJib29raW5nX3dvcmtpbmdfdGltZV9yZXNvdXJjZV9pZCIsImJvb2tpbmdfd29ya2luZ190aW1lX3Jlc291cmNlX21vZGUiLCJib29raW5nX3dvcmtpbmdfdGltZV9kZWZhdWx0X2RheXMiLCJib29raW5nX3dvcmtpbmdfdGltZV9kZWZhdWx0X3N0YXJ0IiwiYm9va2luZ193b3JraW5nX3RpbWVfZGVmYXVsdF9lbmQiLCJib29raW5nX3dvcmtpbmdfdGltZV9yZXNvdXJjZV9kYXlzIiwiYm9va2luZ193b3JraW5nX3RpbWVfcmVzb3VyY2Vfc3RhcnQiLCJib29raW5nX3dvcmtpbmdfdGltZV9yZXNvdXJjZV9lbmQiLCJ1cGRhdGVfd3BiY19wcmV2aWV3X3BhcmFtcyIsInNldF9vdGhlcl9wYXJhbSIsImNvbmNhdCIsInVwZGF0ZV9idWZmZXJfcHJldmlld19ub3RlIiwiJG5vdGVzIiwiJGNhbGVuZGFyIiwiJG5vdGUiLCJ0eXBlIiwiYmVmb3JlX3RleHQiLCJhZnRlcl90ZXh0IiwibWVzc2FnZSIsImFwcGVuZCIsImkxOG4iLCJidWZmZXJfcHJldmlldyIsImJlZm9yZV9ib29raW5nIiwiYWZ0ZXJfYm9va2luZyIsImh0bWwiLCJub19idWZmZXIiLCJhcHBseV9idWZmZXJfZGF5c19wcmV2aWV3IiwiYmVmb3JlX2RheXMiLCJhZnRlcl9kYXlzIiwiZGF0ZV9jZWxscyIsImJvb2tlZF9kYXRlcyIsIiRjZWxsIiwiYm9va2VkX2RhdGUiLCJvZmZzZXQiLCJ0YXJnZXRfc3FsX2RhdGUiLCIkdGFyZ2V0X2NlbGwiLCJyZW1lbWJlcl9wcmV2aWV3X29yaWdpbiIsImNsZWFyX3ByZXZpZXdfY2VsbCIsImhhZF9kYXRlX3VzZXJfdW5hdmFpbGFibGUiLCJhcHBseV9jYWxlbmRhcl9wcmV2aWV3IiwiYXZhaWxhYmxlX2xpbWl0IiwibWFrZV91bmF2YWlsYWJsZSIsInJlYXNvbl9jbGFzcyIsInByZXZpb3VzX3JlYXNvbiIsImhhZF9nZW5lcmFsX3ByZXZpZXciLCJnZXREYXkiLCJxdWV1ZV9wcmV2aWV3X3JlZnJlc2giLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJjbGVhclRpbWVvdXQiLCJ1cGRhdGVfaGludHMiLCJoaW50cyIsImJvb2tpbmdfdW5hdmFpbGFibGVfZGF5c19udW1fZnJvbV90b2RheV9faGludCIsImJvb2tpbmdfYXZhaWxhYmxlX2RheXNfbnVtX2Zyb21fdG9kYXlfX2hpbnQiLCJzaG93X21lc3NhZ2UiLCJkdXJhdGlvbiIsIndwYmNfYWRtaW5fc2hvd19tZXNzYWdlIiwiYWxlcnQiLCJzZXRfYnVzeSIsImJ1c3kiLCJidXN5X3RleHQiLCJzYXZpbmciLCJyZXBsYWNlX2NhbGVuZGFyX3BhbmVsIiwiJGhvbGRlciIsInBhcnNlSFRNTCIsImRvY3VtZW50IiwiJG5ld19wYW5lbCIsIiRvbGRfcGFuZWwiLCIkc2NyaXB0cyIsInJlbW92ZSIsInJlcGxhY2VXaXRoIiwiY29kZSIsInRleHRDb250ZW50IiwiaW5uZXJIVE1MIiwic3JjIiwiYWpheCIsInVybCIsImRhdGFUeXBlIiwiY2FjaGUiLCJnbG9iYWxFdmFsIiwic2V0X2NhbGVuZGFyX2xvYWRpbmciLCJpc19sb2FkaW5nIiwibG9hZGluZ190ZXh0IiwibG9hZGluZyIsIiRsb2FkaW5nIiwibGFzdCIsImdldF9wcmV2aWV3X3BheWxvYWQiLCJhY3Rpb24iLCJwcmV2aWV3X2FjdGlvbiIsIm5vbmNlIiwicmVzb3VyY2VfaWQiLCJtb250aHNfY291bnQiLCJsb2FkX2NhbGVuZGFyX3ByZXZpZXciLCJjdXJyZW50X3ByZXZpZXdfYWpheCIsImFqYXhfdXJsIiwicHJldmlld19mYWlsZWQiLCJyZWFkeVN0YXRlIiwiYWJvcnQiLCJtZXRob2QiLCJkb25lIiwicmVzcG9uc2UiLCJzdWNjZXNzIiwib2JzZXJ2ZV9jYWxlbmRhcl9jaGFuZ2VzIiwiZmFpbCIsImpxX3hociIsInRleHRfc3RhdHVzIiwiYWx3YXlzIiwic2F2ZV9zZXR0aW5ncyIsImJvb2tpbmdfdW5hdmFpbGFibGVfZGF5cyIsInNhdmVfZmFpbGVkIiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50IiwiZGV0YWlsIiwic2F2ZWQiLCJyZXNldF9zZXR0aW5ncyIsImNvbmZpcm1fbWVzc2FnZSIsInJlc2V0X2NvbmZpcm0iLCJjb25maXJtIiwicmVzZXRfYXBwbGllZCIsInRhcmdldCIsInF1ZXJ5U2VsZWN0b3IiLCJNdXRhdGlvbk9ic2VydmVyIiwiZGlzY29ubmVjdCIsIm9ic2VydmUiLCJjaGlsZExpc3QiLCJzdWJ0cmVlIiwib24iLCJldmVudCIsInByZXZlbnREZWZhdWx0IiwicmVhZHkiLCJqUXVlcnkiLCJ3aW5kb3ciXSwic291cmNlcyI6WyJpbmNsdWRlcy9wYWdlLWF2YWlsYWJpbGl0eS1nZW5lcmFsL19zcmMvYXZhaWxhYmlsaXR5X2dlbmVyYWxfcGFnZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogR2VuZXJhbCBBdmFpbGFiaWxpdHkgVUkuXHJcbiAqL1xyXG4oIGZ1bmN0aW9uICggJCwgdyApIHtcclxuXHQndXNlIHN0cmljdCc7XHJcblxyXG5cdHZhciBjZmcgPSB3LndwYmNfYXZhaWxhYmlsaXR5X2dlbmVyYWxfcGFnZSB8fCB7fTtcclxuXHR2YXIgcHJldmlld190aW1lciA9IDA7XHJcblx0dmFyIHByZXZpZXdfZnJhbWUgPSAwO1xyXG5cdHZhciBwcmV2aWV3X2FqYXggPSBudWxsO1xyXG5cdHZhciBvYnNlcnZlciA9IG51bGw7XHJcblx0dmFyIHByZXZpZXdfdW5hdmFpbGFibGVfY2xhc3NlcyA9ICd3cGJjX2FnX3ByZXZpZXdfdW5hdmFpbGFibGUgd3BiY19hZ19wcmV2aWV3X3dlZWtkYXlfdW5hdmFpbGFibGUgd3BiY19hZ19wcmV2aWV3X2Zyb21fdG9kYXlfdW5hdmFpbGFibGUgd3BiY19hZ19wcmV2aWV3X2xpbWl0X2F2YWlsYWJsZV9mcm9tX3RvZGF5IHdwYmNfYWdfcHJldmlld19idWZmZXJfdW5hdmFpbGFibGUgd2Vla2RheV91bmF2YWlsYWJsZSBmcm9tX3RvZGF5X3VuYXZhaWxhYmxlIGxpbWl0X2F2YWlsYWJsZV9mcm9tX3RvZGF5IGJ1ZmZlcl91bmF2YWlsYWJsZSc7XHJcblxyXG5cdGZ1bmN0aW9uIHRyaW1fdGV4dCggdmFsdWUgKSB7XHJcblx0XHRyZXR1cm4gU3RyaW5nKCB2YWx1ZSB8fCAnJyApLnRyaW0oKTtcclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIHN3aXRjaF9wYW5lbCggJHRhYiApIHtcclxuXHRcdHZhciBwYW5lbF9pZCA9ICR0YWIuYXR0ciggJ2FyaWEtY29udHJvbHMnICk7XHJcblx0XHR2YXIgJHRhYnMgPSAkdGFiLmNsb3Nlc3QoICcud3BiY19hZ19yaWdodGJhcl90YWJzJyApLmZpbmQoICdbcm9sZT1cInRhYlwiXScgKTtcclxuXHRcdHZhciAkcGFuZWxzID0gJCggJy53cGJjX2FnX3JpZ2h0YmFyX3BhbmVscyBbcm9sZT1cInRhYnBhbmVsXCJdJyApO1xyXG5cclxuXHRcdCR0YWJzLmF0dHIoICdhcmlhLXNlbGVjdGVkJywgJ2ZhbHNlJyApO1xyXG5cdFx0JHRhYi5hdHRyKCAnYXJpYS1zZWxlY3RlZCcsICd0cnVlJyApO1xyXG5cclxuXHRcdCRwYW5lbHMuYXR0ciggJ2hpZGRlbicsICdoaWRkZW4nICkuYXR0ciggJ2FyaWEtaGlkZGVuJywgJ3RydWUnICk7XHJcblx0XHQkKCAnIycgKyBwYW5lbF9pZCApLnJlbW92ZUF0dHIoICdoaWRkZW4nICkuYXR0ciggJ2FyaWEtaGlkZGVuJywgJ2ZhbHNlJyApO1xyXG5cdH1cclxuXHJcblx0ZnVuY3Rpb24gdG9nZ2xlX2dyb3VwKCAkYnV0dG9uICkge1xyXG5cdFx0dmFyICRncm91cCA9ICRidXR0b24uY2xvc2VzdCggJy53cGJjX3VpX19jb2xsYXBzaWJsZV9ncm91cCcgKTtcclxuXHRcdHZhciAkZmllbGRzID0gJGdyb3VwLmZpbmQoICc+IC5ncm91cF9fZmllbGRzJyApO1xyXG5cdFx0dmFyIGlzX29wZW4gPSAkZ3JvdXAuaGFzQ2xhc3MoICdpcy1vcGVuJyApO1xyXG5cclxuXHRcdCRncm91cC50b2dnbGVDbGFzcyggJ2lzLW9wZW4nLCAhIGlzX29wZW4gKTtcclxuXHRcdCRidXR0b24uYXR0ciggJ2FyaWEtZXhwYW5kZWQnLCBpc19vcGVuID8gJ2ZhbHNlJyA6ICd0cnVlJyApO1xyXG5cdFx0JGZpZWxkcy5wcm9wKCAnaGlkZGVuJywgaXNfb3BlbiApLmF0dHIoICdhcmlhLWhpZGRlbicsIGlzX29wZW4gPyAndHJ1ZScgOiAnZmFsc2UnICk7XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiBjbG9zZV9ncm91cCggJGdyb3VwICkge1xyXG5cdFx0dmFyICRidXR0b24gPSAkZ3JvdXAuZmluZCggJz4gLmdyb3VwX19oZWFkZXInICk7XHJcblx0XHR2YXIgJGZpZWxkcyA9ICRncm91cC5maW5kKCAnPiAuZ3JvdXBfX2ZpZWxkcycgKTtcclxuXHJcblx0XHQkZ3JvdXAucmVtb3ZlQ2xhc3MoICdpcy1vcGVuJyApO1xyXG5cdFx0JGJ1dHRvbi5hdHRyKCAnYXJpYS1leHBhbmRlZCcsICdmYWxzZScgKTtcclxuXHRcdCRmaWVsZHMucHJvcCggJ2hpZGRlbicsIHRydWUgKS5hdHRyKCAnYXJpYS1oaWRkZW4nLCAndHJ1ZScgKTtcclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIG9wZW5fZ3JvdXAoIGdyb3VwX25hbWUsIGlzX2V4Y2x1c2l2ZSApIHtcclxuXHRcdHZhciAkZ3JvdXAgPSAkKCAnLndwYmNfdWlfX2NvbGxhcHNpYmxlX2dyb3VwW2RhdGEtZ3JvdXA9XCInICsgZ3JvdXBfbmFtZSArICdcIl0nICk7XHJcblx0XHR2YXIgJGJ1dHRvbiA9ICRncm91cC5maW5kKCAnPiAuZ3JvdXBfX2hlYWRlcicgKTtcclxuXHRcdHZhciAkZmllbGRzID0gJGdyb3VwLmZpbmQoICc+IC5ncm91cF9fZmllbGRzJyApO1xyXG5cclxuXHRcdGlmICggISAkZ3JvdXAubGVuZ3RoICkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKCBpc19leGNsdXNpdmUgKSB7XHJcblx0XHRcdCRncm91cC5zaWJsaW5ncyggJy53cGJjX3VpX19jb2xsYXBzaWJsZV9ncm91cCcgKS5lYWNoKCBmdW5jdGlvbiAoKSB7XHJcblx0XHRcdFx0Y2xvc2VfZ3JvdXAoICQoIHRoaXMgKSApO1xyXG5cdFx0XHR9ICk7XHJcblx0XHR9XHJcblxyXG5cdFx0JGdyb3VwLmFkZENsYXNzKCAnaXMtb3BlbicgKTtcclxuXHRcdCRidXR0b24uYXR0ciggJ2FyaWEtZXhwYW5kZWQnLCAndHJ1ZScgKTtcclxuXHRcdCRmaWVsZHMucHJvcCggJ2hpZGRlbicsIGZhbHNlICkuYXR0ciggJ2FyaWEtaGlkZGVuJywgJ2ZhbHNlJyApO1xyXG5cdH1cclxuXHJcblx0ZnVuY3Rpb24gc2Nyb2xsX3RvX2dyb3VwKCBncm91cF9uYW1lICkge1xyXG5cdFx0dmFyICRncm91cCA9ICQoICcud3BiY191aV9fY29sbGFwc2libGVfZ3JvdXBbZGF0YS1ncm91cD1cIicgKyBncm91cF9uYW1lICsgJ1wiXScgKTtcclxuXHRcdHZhciAkc2Nyb2xsX3BhcmVudCA9ICQoKTtcclxuXHRcdHZhciBzY3JvbGxfcGFyZW50X2VsO1xyXG5cdFx0dmFyIGdyb3VwX2VsO1xyXG5cdFx0dmFyIHNjcm9sbF90b3A7XHJcblx0XHR2YXIgcGFyZW50X3JlY3Q7XHJcblx0XHR2YXIgZ3JvdXBfcmVjdDtcclxuXHJcblx0XHRpZiAoICEgJGdyb3VwLmxlbmd0aCApIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdCRncm91cC5wYXJlbnRzKCkuZWFjaCggZnVuY3Rpb24gKCkge1xyXG5cdFx0XHR2YXIgJGNhbmRpZGF0ZSA9ICQoIHRoaXMgKTtcclxuXHRcdFx0dmFyIG92ZXJmbG93X3kgPSAkY2FuZGlkYXRlLmNzcyggJ292ZXJmbG93LXknICk7XHJcblxyXG5cdFx0XHRpZiAoXHJcblx0XHRcdFx0JGNhbmRpZGF0ZS5oYXNDbGFzcyggJ3NpbXBsZWJhci1jb250ZW50LXdyYXBwZXInIClcclxuXHRcdFx0XHR8fCAoXHJcblx0XHRcdFx0XHQvKGF1dG98c2Nyb2xsKS8udGVzdCggb3ZlcmZsb3dfeSApXHJcblx0XHRcdFx0XHQmJiB0aGlzLnNjcm9sbEhlaWdodCA+IHRoaXMuY2xpZW50SGVpZ2h0XHJcblx0XHRcdFx0KVxyXG5cdFx0XHQpIHtcclxuXHRcdFx0XHQkc2Nyb2xsX3BhcmVudCA9ICRjYW5kaWRhdGU7XHJcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0XHR9XHJcblx0XHR9ICk7XHJcblxyXG5cdFx0aWYgKCAhICRzY3JvbGxfcGFyZW50Lmxlbmd0aCApIHtcclxuXHRcdFx0JHNjcm9sbF9wYXJlbnQgPSAkZ3JvdXAuY2xvc2VzdCggJy53cGJjX3VpX2VsX192ZXJ0X3JpZ2h0X2Jhcl9fY29udGVudCcgKS5maW5kKCAnLnNpbXBsZWJhci1jb250ZW50LXdyYXBwZXInICkuZmlyc3QoKTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoICEgJHNjcm9sbF9wYXJlbnQubGVuZ3RoICkge1xyXG5cdFx0XHQkZ3JvdXAuZ2V0KCAwICkuc2Nyb2xsSW50b1ZpZXcoIHsgYmxvY2s6ICduZWFyZXN0JyB9ICk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRzY3JvbGxfcGFyZW50X2VsID0gJHNjcm9sbF9wYXJlbnQuZ2V0KCAwICk7XHJcblx0XHRncm91cF9lbCAgICAgICAgID0gJGdyb3VwLmdldCggMCApO1xyXG5cdFx0cGFyZW50X3JlY3QgICAgICA9IHNjcm9sbF9wYXJlbnRfZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblx0XHRncm91cF9yZWN0ICAgICAgID0gZ3JvdXBfZWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblx0XHRzY3JvbGxfdG9wICAgICAgID0gJHNjcm9sbF9wYXJlbnQuc2Nyb2xsVG9wKCkgKyBncm91cF9yZWN0LnRvcCAtIHBhcmVudF9yZWN0LnRvcCAtIDEwO1xyXG5cclxuXHRcdCRzY3JvbGxfcGFyZW50LnN0b3AoKS5hbmltYXRlKCB7IHNjcm9sbFRvcDogTWF0aC5tYXgoIDAsIHNjcm9sbF90b3AgKSB9LCAxODAgKTtcclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIGFwcGx5X29wZW5fc2VjdGlvbl9mcm9tX3VybCgpIHtcclxuXHRcdHZhciBzZWN0aW9uX2dyb3VwcyA9IHtcclxuXHRcdFx0d2Vla2RheXM6ICdnZW5lcmFsLWF2YWlsYWJpbGl0eS13ZWVrZGF5cycsXHJcblx0XHRcdGZyb21fdG9kYXk6ICdnZW5lcmFsLWF2YWlsYWJpbGl0eS1mcm9tLXRvZGF5JyxcclxuXHRcdFx0YnVmZmVyOiAnZ2VuZXJhbC1hdmFpbGFiaWxpdHktYnVmZmVyJyxcclxuXHRcdFx0d29ya2luZ190aW1lOiAnZ2VuZXJhbC1hdmFpbGFiaWxpdHktd29ya2luZy10aW1lJ1xyXG5cdFx0fTtcclxuXHRcdHZhciBncm91cF9uYW1lID0gc2VjdGlvbl9ncm91cHNbIGNmZy5vcGVuX3NlY3Rpb24gXSB8fCAnJztcclxuXHJcblx0XHRpZiAoICcnID09PSBncm91cF9uYW1lICkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0b3Blbl9ncm91cCggZ3JvdXBfbmFtZSwgdHJ1ZSApO1xyXG5cdFx0JC5lYWNoKCBbIDEyMCwgNjUwIF0sIGZ1bmN0aW9uICggaW5kZXgsIGRlbGF5ICkge1xyXG5cdFx0XHRzZXRUaW1lb3V0KCBmdW5jdGlvbiAoKSB7XHJcblx0XHRcdFx0c2Nyb2xsX3RvX2dyb3VwKCBncm91cF9uYW1lICk7XHJcblx0XHRcdH0sIGRlbGF5ICk7XHJcblx0XHR9ICk7XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiByZWZyZXNoX2J1ZmZlcl9maWVsZHMoKSB7XHJcblx0XHR2YXIgdmFsdWUgPSAkKCAnaW5wdXRbbmFtZT1cImJvb2tpbmdfdW5hdmFpbGFibGVfZXh0cmFfaW5fb3V0XCJdOmNoZWNrZWQnICkudmFsKCkgfHwgJyc7XHJcblxyXG5cdFx0JCggJy53cGJjX2FnX2J1ZmZlcl9maWVsZHMnICkuZWFjaCggZnVuY3Rpb24gKCkge1xyXG5cdFx0XHR2YXIgJHBhbmVsID0gJCggdGhpcyApO1xyXG5cdFx0XHQkcGFuZWwudG9nZ2xlQ2xhc3MoICdpcy12aXNpYmxlJywgJHBhbmVsLmRhdGEoICdidWZmZXItcGFuZWwnICkgPT09IHZhbHVlICk7XHJcblx0XHR9ICk7XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiBpc19idWZmZXJfYXZhaWxhYmxlKCkge1xyXG5cdFx0cmV0dXJuICEgKCBjZmcuaXNfYnVmZmVyX2F2YWlsYWJsZSA9PT0gZmFsc2UgfHwgY2ZnLmlzX2J1ZmZlcl9hdmFpbGFibGUgPT09ICdmYWxzZScgfHwgY2ZnLmlzX2J1ZmZlcl9hdmFpbGFibGUgPT09IDAgfHwgY2ZnLmlzX2J1ZmZlcl9hdmFpbGFibGUgPT09ICcwJyApO1xyXG5cdH1cclxuXHJcblx0ZnVuY3Rpb24gaXNfYXZhaWxhYmxlX2xpbWl0X2F2YWlsYWJsZSgpIHtcclxuXHRcdHJldHVybiAhICggY2ZnLmlzX2F2YWlsYWJsZV9saW1pdF9hdmFpbGFibGUgPT09IGZhbHNlIHx8IGNmZy5pc19hdmFpbGFibGVfbGltaXRfYXZhaWxhYmxlID09PSAnZmFsc2UnIHx8IGNmZy5pc19hdmFpbGFibGVfbGltaXRfYXZhaWxhYmxlID09PSAwIHx8IGNmZy5pc19hdmFpbGFibGVfbGltaXRfYXZhaWxhYmxlID09PSAnMCcgKTtcclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIHN5bmNfcmFuZ2VfZnJvbV9zZWxlY3QoIHNlbGVjdCApIHtcclxuXHRcdHZhciAkc2VsZWN0ID0gJCggc2VsZWN0ICk7XHJcblx0XHR2YXIgbmFtZSA9ICRzZWxlY3QuYXR0ciggJ25hbWUnICk7XHJcblx0XHR2YXIgc2VsZWN0ZWRfaW5kZXggPSAkc2VsZWN0LnByb3AoICdzZWxlY3RlZEluZGV4JyApO1xyXG5cdFx0dmFyIHNlbGVjdGVkX3RleHQgPSB0cmltX3RleHQoICRzZWxlY3QuZmluZCggJ29wdGlvbjpzZWxlY3RlZCcgKS50ZXh0KCkgKTtcclxuXHRcdHZhciAkcmFuZ2UgPSAkKCAnW2RhdGEtd3BiYy1hZy1yYW5nZS1mb3I9XCInICsgbmFtZSArICdcIl0nICk7XHJcblx0XHR2YXIgJHZhbHVlID0gJCggJ1tkYXRhLXdwYmMtYWctcmFuZ2UtdmFsdWUtZm9yPVwiJyArIG5hbWUgKyAnXCJdJyApO1xyXG5cclxuXHRcdGlmICggISAkcmFuZ2UubGVuZ3RoICkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0JHJhbmdlLnZhbCggc2VsZWN0ZWRfaW5kZXggPCAwID8gMCA6IHNlbGVjdGVkX2luZGV4ICk7XHJcblx0XHQkdmFsdWUudGV4dCggc2VsZWN0ZWRfdGV4dCApO1xyXG5cdH1cclxuXHJcblx0ZnVuY3Rpb24gc3luY19zZWxlY3RfZnJvbV9yYW5nZSggcmFuZ2UgKSB7XHJcblx0XHR2YXIgJHJhbmdlID0gJCggcmFuZ2UgKTtcclxuXHRcdHZhciBuYW1lID0gJHJhbmdlLmF0dHIoICdkYXRhLXdwYmMtYWctcmFuZ2UtZm9yJyApO1xyXG5cdFx0dmFyICRzZWxlY3QgPSAkKCAnW25hbWU9XCInICsgbmFtZSArICdcIl0nICk7XHJcblx0XHR2YXIgaW5kZXggPSBwYXJzZUludCggJHJhbmdlLnZhbCgpLCAxMCApIHx8IDA7XHJcblxyXG5cdFx0aWYgKCAhICRzZWxlY3QubGVuZ3RoICkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0JHNlbGVjdC5wcm9wKCAnc2VsZWN0ZWRJbmRleCcsIGluZGV4ICk7XHJcblx0XHRzeW5jX3JhbmdlX2Zyb21fc2VsZWN0KCAkc2VsZWN0ICk7XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiBzeW5jX2FsbF9yYW5nZXMoKSB7XHJcblx0XHQkKCAnW2RhdGEtd3BiYy1hZy1yYW5nZS1mb3JdJyApLmVhY2goIGZ1bmN0aW9uICgpIHtcclxuXHRcdFx0dmFyIG5hbWUgPSAkKCB0aGlzICkuYXR0ciggJ2RhdGEtd3BiYy1hZy1yYW5nZS1mb3InICk7XHJcblx0XHRcdHN5bmNfcmFuZ2VfZnJvbV9zZWxlY3QoICQoICdbbmFtZT1cIicgKyBuYW1lICsgJ1wiXScgKS5maXJzdCgpICk7XHJcblx0XHR9ICk7XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiBzdGVwX3NlbGVjdF92YWx1ZSggYnV0dG9uICkge1xyXG5cdFx0dmFyICRidXR0b24gPSAkKCBidXR0b24gKTtcclxuXHRcdHZhciBuYW1lID0gJGJ1dHRvbi5hdHRyKCAnZGF0YS13cGJjLWFnLXN0ZXBwZXInICk7XHJcblx0XHR2YXIgc3RlcCA9IHBhcnNlSW50KCAkYnV0dG9uLmF0dHIoICdkYXRhLXN0ZXAnICksIDEwICkgfHwgMDtcclxuXHRcdHZhciAkc2VsZWN0ID0gJCggJ1tuYW1lPVwiJyArIG5hbWUgKyAnXCJdJyApLmZpcnN0KCk7XHJcblx0XHR2YXIgY3VycmVudF9pbmRleDtcclxuXHRcdHZhciBuZXh0X2luZGV4O1xyXG5cclxuXHRcdGlmICggISAkc2VsZWN0Lmxlbmd0aCB8fCAkc2VsZWN0LnByb3AoICdkaXNhYmxlZCcgKSApIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdGN1cnJlbnRfaW5kZXggPSAkc2VsZWN0LnByb3AoICdzZWxlY3RlZEluZGV4JyApO1xyXG5cdFx0bmV4dF9pbmRleCA9IE1hdGgubWF4KCAwLCBNYXRoLm1pbiggJHNlbGVjdC5maW5kKCAnb3B0aW9uJyApLmxlbmd0aCAtIDEsIGN1cnJlbnRfaW5kZXggKyBzdGVwICkgKTtcclxuXHJcblx0XHRpZiAoIG5leHRfaW5kZXggPT09IGN1cnJlbnRfaW5kZXggKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHQkc2VsZWN0LnByb3AoICdzZWxlY3RlZEluZGV4JywgbmV4dF9pbmRleCApLnRyaWdnZXIoICdjaGFuZ2UnICk7XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiBnZXRfZm9ybSgpIHtcclxuXHRcdHJldHVybiAkKCAnW2RhdGEtd3BiYy1hZy1zZXR0aW5ncy1mb3JtPVwiMVwiXScgKS5maXJzdCgpO1xyXG5cdH1cclxuXHJcblx0ZnVuY3Rpb24gY29sbGVjdF9zZXR0aW5ncygpIHtcclxuXHRcdHZhciAkZm9ybSA9IGdldF9mb3JtKCk7XHJcblx0XHR2YXIgd2Vla2RheXMgPSBbXTtcclxuXHJcblx0XHQkZm9ybS5maW5kKCAnaW5wdXRbbmFtZT1cImJvb2tpbmdfdW5hdmFpbGFibGVfZGF5c1tdXCJdOmNoZWNrZWQnICkuZWFjaCggZnVuY3Rpb24gKCkge1xyXG5cdFx0XHR3ZWVrZGF5cy5wdXNoKCBwYXJzZUludCggdGhpcy52YWx1ZSwgMTAgKSApO1xyXG5cdFx0fSApO1xyXG5cclxuXHRcdHJldHVybiB7XHJcblx0XHRcdHdlZWtkYXlzOiB3ZWVrZGF5cyxcclxuXHRcdFx0Ym9va2luZ191bmF2YWlsYWJsZV9kYXlzX251bV9mcm9tX3RvZGF5OiAkZm9ybS5maW5kKCAnW25hbWU9XCJib29raW5nX3VuYXZhaWxhYmxlX2RheXNfbnVtX2Zyb21fdG9kYXlcIl0nICkudmFsKCkgfHwgJzAnLFxyXG5cdFx0XHRib29raW5nX2F2YWlsYWJsZV9kYXlzX251bV9mcm9tX3RvZGF5OiAkZm9ybS5maW5kKCAnW25hbWU9XCJib29raW5nX2F2YWlsYWJsZV9kYXlzX251bV9mcm9tX3RvZGF5XCJdJyApLnZhbCgpIHx8ICcnLFxyXG5cdFx0XHRib29raW5nX3VuYXZhaWxhYmxlX2V4dHJhX2luX291dDogJGZvcm0uZmluZCggJ1tuYW1lPVwiYm9va2luZ191bmF2YWlsYWJsZV9leHRyYV9pbl9vdXRcIl06Y2hlY2tlZCcgKS52YWwoKSB8fCAnJyxcclxuXHRcdFx0Ym9va2luZ191bmF2YWlsYWJsZV9leHRyYV9taW51dGVzX2luOiAkZm9ybS5maW5kKCAnW25hbWU9XCJib29raW5nX3VuYXZhaWxhYmxlX2V4dHJhX21pbnV0ZXNfaW5cIl0nICkudmFsKCkgfHwgJycsXHJcblx0XHRcdGJvb2tpbmdfdW5hdmFpbGFibGVfZXh0cmFfbWludXRlc19vdXQ6ICRmb3JtLmZpbmQoICdbbmFtZT1cImJvb2tpbmdfdW5hdmFpbGFibGVfZXh0cmFfbWludXRlc19vdXRcIl0nICkudmFsKCkgfHwgJycsXHJcblx0XHRcdGJvb2tpbmdfdW5hdmFpbGFibGVfZXh0cmFfZGF5c19pbjogJGZvcm0uZmluZCggJ1tuYW1lPVwiYm9va2luZ191bmF2YWlsYWJsZV9leHRyYV9kYXlzX2luXCJdJyApLnZhbCgpIHx8ICcnLFxyXG5cdFx0XHRib29raW5nX3VuYXZhaWxhYmxlX2V4dHJhX2RheXNfb3V0OiAkZm9ybS5maW5kKCAnW25hbWU9XCJib29raW5nX3VuYXZhaWxhYmxlX2V4dHJhX2RheXNfb3V0XCJdJyApLnZhbCgpIHx8ICcnLFxyXG5cdFx0XHR3b3JraW5nX3RpbWU6IGdldF93b3JraW5nX3RpbWVfc2V0dGluZ3NfZnJvbV9mb3JtKClcclxuXHRcdH07XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiBzZXRfc2VsZWN0X3ZhbHVlKCBuYW1lLCB2YWx1ZSApIHtcclxuXHRcdHZhciAkZmllbGQgPSBnZXRfZm9ybSgpLmZpbmQoICdbbmFtZT1cIicgKyBuYW1lICsgJ1wiXScgKS5maXJzdCgpO1xyXG5cclxuXHRcdGlmICggISAkZmllbGQubGVuZ3RoICkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0JGZpZWxkLnZhbCggdmFsdWUgKTtcclxuXHRcdGlmICggU3RyaW5nKCAkZmllbGQudmFsKCkgKSAhPT0gU3RyaW5nKCB2YWx1ZSApICkge1xyXG5cdFx0XHQkZmllbGQucHJvcCggJ3NlbGVjdGVkSW5kZXgnLCAwICk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiBhcHBseV9zZXR0aW5nc190b19mb3JtKCBzZXR0aW5ncyApIHtcclxuXHRcdHZhciAkZm9ybSA9IGdldF9mb3JtKCk7XHJcblx0XHR2YXIgd2Vla2RheXMgPSBzZXR0aW5ncyAmJiBzZXR0aW5ncy53ZWVrZGF5cyA/IHNldHRpbmdzLndlZWtkYXlzIDogW107XHJcblxyXG5cdFx0aWYgKCAhICRmb3JtLmxlbmd0aCB8fCAhIHNldHRpbmdzICkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0JGZvcm0uZmluZCggJ2lucHV0W25hbWU9XCJib29raW5nX3VuYXZhaWxhYmxlX2RheXNbXVwiXScgKS5wcm9wKCAnY2hlY2tlZCcsIGZhbHNlICk7XHJcblx0XHQkLmVhY2goIHdlZWtkYXlzLCBmdW5jdGlvbiAoIGluZGV4LCBkYXlfbnVtICkge1xyXG5cdFx0XHQkZm9ybS5maW5kKCAnaW5wdXRbbmFtZT1cImJvb2tpbmdfdW5hdmFpbGFibGVfZGF5c1tdXCJdW3ZhbHVlPVwiJyArIHBhcnNlSW50KCBkYXlfbnVtLCAxMCApICsgJ1wiXScgKS5wcm9wKCAnY2hlY2tlZCcsIHRydWUgKTtcclxuXHRcdH0gKTtcclxuXHJcblx0XHRzZXRfc2VsZWN0X3ZhbHVlKCAnYm9va2luZ191bmF2YWlsYWJsZV9kYXlzX251bV9mcm9tX3RvZGF5Jywgc2V0dGluZ3MuYm9va2luZ191bmF2YWlsYWJsZV9kYXlzX251bV9mcm9tX3RvZGF5IHx8ICcwJyApO1xyXG5cdFx0c2V0X3NlbGVjdF92YWx1ZSggJ2Jvb2tpbmdfYXZhaWxhYmxlX2RheXNfbnVtX2Zyb21fdG9kYXknLCBzZXR0aW5ncy5ib29raW5nX2F2YWlsYWJsZV9kYXlzX251bV9mcm9tX3RvZGF5IHx8ICcnICk7XHJcblx0XHRzZXRfc2VsZWN0X3ZhbHVlKCAnYm9va2luZ191bmF2YWlsYWJsZV9leHRyYV9taW51dGVzX2luJywgc2V0dGluZ3MuYm9va2luZ191bmF2YWlsYWJsZV9leHRyYV9taW51dGVzX2luIHx8ICcnICk7XHJcblx0XHRzZXRfc2VsZWN0X3ZhbHVlKCAnYm9va2luZ191bmF2YWlsYWJsZV9leHRyYV9taW51dGVzX291dCcsIHNldHRpbmdzLmJvb2tpbmdfdW5hdmFpbGFibGVfZXh0cmFfbWludXRlc19vdXQgfHwgJycgKTtcclxuXHRcdHNldF9zZWxlY3RfdmFsdWUoICdib29raW5nX3VuYXZhaWxhYmxlX2V4dHJhX2RheXNfaW4nLCBzZXR0aW5ncy5ib29raW5nX3VuYXZhaWxhYmxlX2V4dHJhX2RheXNfaW4gfHwgJycgKTtcclxuXHRcdHNldF9zZWxlY3RfdmFsdWUoICdib29raW5nX3VuYXZhaWxhYmxlX2V4dHJhX2RheXNfb3V0Jywgc2V0dGluZ3MuYm9va2luZ191bmF2YWlsYWJsZV9leHRyYV9kYXlzX291dCB8fCAnJyApO1xyXG5cclxuXHRcdCRmb3JtLmZpbmQoICdpbnB1dFtuYW1lPVwiYm9va2luZ191bmF2YWlsYWJsZV9leHRyYV9pbl9vdXRcIl0nICkucHJvcCggJ2NoZWNrZWQnLCBmYWxzZSApO1xyXG5cdFx0JGZvcm0uZmluZCggJ2lucHV0W25hbWU9XCJib29raW5nX3VuYXZhaWxhYmxlX2V4dHJhX2luX291dFwiXVt2YWx1ZT1cIicgKyAoIHNldHRpbmdzLmJvb2tpbmdfdW5hdmFpbGFibGVfZXh0cmFfaW5fb3V0IHx8ICcnICkgKyAnXCJdJyApLnByb3AoICdjaGVja2VkJywgdHJ1ZSApO1xyXG5cdFx0YXBwbHlfd29ya2luZ190aW1lX3NldHRpbmdzX3RvX2Zvcm0oIHNldHRpbmdzLndvcmtpbmdfdGltZSB8fCB7fSwgJCggJyN3cGJjX2FnX3Jlc291cmNlX2lkJyApLnZhbCgpICk7XHJcblxyXG5cdFx0cmVmcmVzaF9idWZmZXJfZmllbGRzKCk7XHJcblx0XHRzeW5jX2FsbF9yYW5nZXMoKTtcclxuXHRcdHNjaGVkdWxlX3ByZXZpZXdfcmVmcmVzaCgpO1xyXG5cdH1cclxuXHJcblx0ZnVuY3Rpb24gZGF0ZV9mcm9tX3NxbCggc3FsX2RhdGUgKSB7XHJcblx0XHR2YXIgcGFydHMgPSBTdHJpbmcoIHNxbF9kYXRlIHx8ICcnICkuc3BsaXQoICctJyApO1xyXG5cdFx0aWYgKCBwYXJ0cy5sZW5ndGggIT09IDMgKSB7XHJcblx0XHRcdHJldHVybiBudWxsO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIG5ldyBEYXRlKCBwYXJzZUludCggcGFydHNbMF0sIDEwICksIHBhcnNlSW50KCBwYXJ0c1sxXSwgMTAgKSAtIDEsIHBhcnNlSW50KCBwYXJ0c1syXSwgMTAgKSwgMCwgMCwgMCApO1xyXG5cdH1cclxuXHJcblx0ZnVuY3Rpb24gZ2V0X3RvZGF5X2RhdGUoKSB7XHJcblx0XHR2YXIgYXJyID0gdy5fd3BiYyAmJiB0eXBlb2Ygdy5fd3BiYy5nZXRfb3RoZXJfcGFyYW0gPT09ICdmdW5jdGlvbicgPyB3Ll93cGJjLmdldF9vdGhlcl9wYXJhbSggJ3RvZGF5X2FycicgKSA6IG51bGw7XHJcblx0XHRpZiAoIGFyciAmJiBhcnIubGVuZ3RoID49IDMgKSB7XHJcblx0XHRcdHJldHVybiBuZXcgRGF0ZSggcGFyc2VJbnQoIGFyclswXSwgMTAgKSwgcGFyc2VJbnQoIGFyclsxXSwgMTAgKSAtIDEsIHBhcnNlSW50KCBhcnJbMl0sIDEwICksIDAsIDAsIDAgKTtcclxuXHRcdH1cclxuXHRcdHZhciBub3cgPSBuZXcgRGF0ZSgpO1xyXG5cdFx0cmV0dXJuIG5ldyBEYXRlKCBub3cuZ2V0RnVsbFllYXIoKSwgbm93LmdldE1vbnRoKCksIG5vdy5nZXREYXRlKCksIDAsIDAsIDAgKTtcclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIGdldF9yZWFsX3RvZGF5X2RhdGUoKSB7XHJcblx0XHR2YXIgYXJyID0gdy5fd3BiYyAmJiB0eXBlb2Ygdy5fd3BiYy5nZXRfb3RoZXJfcGFyYW0gPT09ICdmdW5jdGlvbicgPyB3Ll93cGJjLmdldF9vdGhlcl9wYXJhbSggJ3RpbWVfbG9jYWxfYXJyJyApIDogbnVsbDtcclxuXHRcdGlmICggYXJyICYmIGFyci5sZW5ndGggPj0gMyApIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBEYXRlKCBwYXJzZUludCggYXJyWzBdLCAxMCApLCBwYXJzZUludCggYXJyWzFdLCAxMCApIC0gMSwgcGFyc2VJbnQoIGFyclsyXSwgMTAgKSwgMCwgMCwgMCApO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGdldF90b2RheV9kYXRlKCk7XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiBkYXlzX2JldHdlZW4oIGRhdGVfYSwgZGF0ZV9iICkge1xyXG5cdFx0cmV0dXJuIE1hdGguZmxvb3IoICggZGF0ZV9hLmdldFRpbWUoKSAtIGRhdGVfYi5nZXRUaW1lKCkgKSAvIDg2NDAwMDAwICk7XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiBhZGRfZGF5cyggZGF0ZSwgZGF5cyApIHtcclxuXHRcdHZhciBzaGlmdGVkX2RhdGUgPSBuZXcgRGF0ZSggZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpLCAwLCAwLCAwICk7XHJcblx0XHRzaGlmdGVkX2RhdGUuc2V0RGF0ZSggc2hpZnRlZF9kYXRlLmdldERhdGUoKSArIGRheXMgKTtcclxuXHRcdHJldHVybiBzaGlmdGVkX2RhdGU7XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiBkYXRlX3RvX3NxbCggZGF0ZSApIHtcclxuXHRcdHZhciBtb250aCA9IFN0cmluZyggZGF0ZS5nZXRNb250aCgpICsgMSApO1xyXG5cdFx0dmFyIGRheSA9IFN0cmluZyggZGF0ZS5nZXREYXRlKCkgKTtcclxuXHJcblx0XHRpZiAoIG1vbnRoLmxlbmd0aCA8IDIgKSB7XHJcblx0XHRcdG1vbnRoID0gJzAnICsgbW9udGg7XHJcblx0XHR9XHJcblx0XHRpZiAoIGRheS5sZW5ndGggPCAyICkge1xyXG5cdFx0XHRkYXkgPSAnMCcgKyBkYXk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIGRhdGUuZ2V0RnVsbFllYXIoKSArICctJyArIG1vbnRoICsgJy0nICsgZGF5O1xyXG5cdH1cclxuXHJcblx0ZnVuY3Rpb24gZ2V0X3NxbF9kYXRlX2Zyb21fY2VsbCggY2VsbCApIHtcclxuXHRcdHZhciBjbGFzc2VzID0gU3RyaW5nKCBjZWxsLmNsYXNzTmFtZSB8fCAnJyApLnNwbGl0KCAvXFxzKy8gKTtcclxuXHRcdHZhciBpO1xyXG5cdFx0Zm9yICggaSA9IDA7IGkgPCBjbGFzc2VzLmxlbmd0aDsgaSsrICkge1xyXG5cdFx0XHRpZiAoIGNsYXNzZXNbaV0uaW5kZXhPZiggJ3NxbF9kYXRlXycgKSA9PT0gMCApIHtcclxuXHRcdFx0XHRyZXR1cm4gY2xhc3Nlc1tpXS5yZXBsYWNlKCAnc3FsX2RhdGVfJywgJycgKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0cmV0dXJuICcnO1xyXG5cdH1cclxuXHJcblx0ZnVuY3Rpb24gdW5hdmFpbGFibGVfZnJvbV90b2RheV9hcHBsaWVzKCBjZWxsX2RhdGUsIHRvZGF5X2RhdGUsIHZhbHVlICkge1xyXG5cdFx0dmFyIG1pbnV0ZXM7XHJcblx0XHR2YXIgbm93O1xyXG5cdFx0dmFyIHVuYXZhaWxhYmxlX3VudGlsO1xyXG5cclxuXHRcdGlmICggISB2YWx1ZSB8fCB2YWx1ZSA9PT0gJzAnICkge1xyXG5cdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKCAvbSQvLnRlc3QoIHZhbHVlICkgKSB7XHJcblx0XHRcdG1pbnV0ZXMgPSBwYXJzZUludCggdmFsdWUsIDEwICk7XHJcblx0XHRcdGlmICggISBtaW51dGVzICkge1xyXG5cdFx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdFx0fVxyXG5cdFx0XHRub3cgPSBuZXcgRGF0ZSgpO1xyXG5cdFx0XHR1bmF2YWlsYWJsZV91bnRpbCA9IG5ldyBEYXRlKCBub3cuZ2V0VGltZSgpICsgKCAoIG1pbnV0ZXMgLSAxICkgKiA2MDAwMCApICk7XHJcblx0XHRcdHVuYXZhaWxhYmxlX3VudGlsID0gbmV3IERhdGUoIHVuYXZhaWxhYmxlX3VudGlsLmdldEZ1bGxZZWFyKCksIHVuYXZhaWxhYmxlX3VudGlsLmdldE1vbnRoKCksIHVuYXZhaWxhYmxlX3VudGlsLmdldERhdGUoKSwgMCwgMCwgMCApO1xyXG5cdFx0XHRyZXR1cm4gY2VsbF9kYXRlLmdldFRpbWUoKSA8PSB1bmF2YWlsYWJsZV91bnRpbC5nZXRUaW1lKCk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIGRheXNfYmV0d2VlbiggY2VsbF9kYXRlLCB0b2RheV9kYXRlICkgPCBwYXJzZUludCggdmFsdWUsIDEwICk7XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiBnZXRfb3B0aW9uX3RleHQoIHNlbGVjdG9yICkge1xyXG5cdFx0dmFyIHRleHQgPSAkKCBzZWxlY3RvciApLmZpbmQoICdvcHRpb246c2VsZWN0ZWQnICkudGV4dCgpO1xyXG5cdFx0cmV0dXJuIHRyaW1fdGV4dCggdGV4dCApO1xyXG5cdH1cclxuXHJcblx0ZnVuY3Rpb24gZ2V0X2RheXNfdmFsdWUoIHZhbHVlICkge1xyXG5cdFx0aWYgKCAhIHZhbHVlIHx8ICEgL2QkLy50ZXN0KCB2YWx1ZSApICkge1xyXG5cdFx0XHRyZXR1cm4gMDtcclxuXHRcdH1cclxuXHRcdHJldHVybiBwYXJzZUludCggdmFsdWUsIDEwICkgfHwgMDtcclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIHRpbWVfdG9fc2Vjb25kcyggdGltZSApIHtcclxuXHRcdHZhciBwYXJ0cyA9IFN0cmluZyggdGltZSB8fCAnJyApLnNwbGl0KCAnOicgKTtcclxuXHRcdHZhciBob3VycztcclxuXHRcdHZhciBtaW5zO1xyXG5cclxuXHRcdGlmICggcGFydHMubGVuZ3RoIDwgMiApIHtcclxuXHRcdFx0cmV0dXJuIDA7XHJcblx0XHR9XHJcblxyXG5cdFx0aG91cnMgPSBNYXRoLm1heCggMCwgTWF0aC5taW4oIDI0LCBwYXJzZUludCggcGFydHNbMF0sIDEwICkgfHwgMCApICk7XHJcblx0XHRtaW5zID0gaG91cnMgPT09IDI0ID8gMCA6IE1hdGgubWF4KCAwLCBNYXRoLm1pbiggNTksIHBhcnNlSW50KCBwYXJ0c1sxXSwgMTAgKSB8fCAwICkgKTtcclxuXHJcblx0XHRyZXR1cm4gTWF0aC5taW4oIDg2NDAwLCAoIGhvdXJzICogMzYwMCApICsgKCBtaW5zICogNjAgKSApO1xyXG5cdH1cclxuXHJcblx0ZnVuY3Rpb24gc2Vjb25kc190b190aW1lKCBzZWNvbmRzICkge1xyXG5cdFx0dmFyIGhvdXJzO1xyXG5cdFx0dmFyIG1pbnM7XHJcblxyXG5cdFx0c2Vjb25kcyA9IE1hdGgubWF4KCAwLCBNYXRoLm1pbiggODY0MDAsIHBhcnNlSW50KCBzZWNvbmRzLCAxMCApIHx8IDAgKSApO1xyXG5cdFx0aG91cnMgPSBNYXRoLmZsb29yKCBzZWNvbmRzIC8gMzYwMCApO1xyXG5cdFx0bWlucyA9IE1hdGguZmxvb3IoICggc2Vjb25kcyAlIDM2MDAgKSAvIDYwICk7XHJcblxyXG5cdFx0cmV0dXJuICggaG91cnMgPCAxMCA/ICcwJyA6ICcnICkgKyBob3VycyArICc6JyArICggbWlucyA8IDEwID8gJzAnIDogJycgKSArIG1pbnM7XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiBjb2xsZWN0X3dvcmtpbmdfdGltZV93ZWVrZGF5cyggcHJlZml4ICkge1xyXG5cdFx0dmFyICRmb3JtID0gZ2V0X2Zvcm0oKTtcclxuXHRcdHZhciB3ZWVrZGF5cyA9IHt9O1xyXG5cclxuXHRcdCRmb3JtLmZpbmQoICdbZGF0YS13cGJjLXdvcmtpbmctdGltZS13ZWVrZGF5cz1cIicgKyBwcmVmaXggKyAnXCJdIC53cGJjX2FnX3dvcmtpbmdfdGltZV9yb3cnICkuZWFjaCggZnVuY3Rpb24gKCkge1xyXG5cdFx0XHR2YXIgJHJvdyA9ICQoIHRoaXMgKTtcclxuXHRcdFx0dmFyIGRheSA9IHBhcnNlSW50KCAkcm93LmZpbmQoICdpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0nICkudmFsKCksIDEwICk7XHJcblxyXG5cdFx0XHR3ZWVrZGF5c1sgZGF5IF0gPSBbXTtcclxuXHRcdFx0aWYgKCAhICRyb3cuZmluZCggJ2lucHV0W3R5cGU9XCJjaGVja2JveFwiXScgKS5wcm9wKCAnY2hlY2tlZCcgKSApIHtcclxuXHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHdlZWtkYXlzWyBkYXkgXS5wdXNoKCB7XHJcblx0XHRcdFx0c3RhcnRfc2Vjb25kOiB0aW1lX3RvX3NlY29uZHMoICRyb3cuZmluZCggJy53cGJjX2FnX3dvcmtpbmdfdGltZV9zdGFydCcgKS52YWwoKSApLFxyXG5cdFx0XHRcdGVuZF9zZWNvbmQ6IHRpbWVfdG9fc2Vjb25kcyggJHJvdy5maW5kKCAnLndwYmNfYWdfd29ya2luZ190aW1lX2VuZCcgKS52YWwoKSApXHJcblx0XHRcdH0gKTtcclxuXHRcdH0gKTtcclxuXHJcblx0XHRyZXR1cm4gd2Vla2RheXM7XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiBzZXRfd29ya2luZ190aW1lX3dlZWtkYXlzKCBwcmVmaXgsIHdlZWtkYXlzICkge1xyXG5cdFx0dmFyICR3cmFwID0gZ2V0X2Zvcm0oKS5maW5kKCAnW2RhdGEtd3BiYy13b3JraW5nLXRpbWUtd2Vla2RheXM9XCInICsgcHJlZml4ICsgJ1wiXScgKTtcclxuXHJcblx0XHQkd3JhcC5maW5kKCAnLndwYmNfYWdfd29ya2luZ190aW1lX3JvdycgKS5lYWNoKCBmdW5jdGlvbiAoKSB7XHJcblx0XHRcdHZhciAkcm93ID0gJCggdGhpcyApO1xyXG5cdFx0XHR2YXIgZGF5ID0gcGFyc2VJbnQoICRyb3cuZmluZCggJ2lucHV0W3R5cGU9XCJjaGVja2JveFwiXScgKS52YWwoKSwgMTAgKTtcclxuXHRcdFx0dmFyIGludGVydmFscyA9IHdlZWtkYXlzICYmIHdlZWtkYXlzWyBkYXkgXSA/IHdlZWtkYXlzWyBkYXkgXSA6IFtdO1xyXG5cdFx0XHR2YXIgaW50ZXJ2YWwgPSBpbnRlcnZhbHMubGVuZ3RoID8gaW50ZXJ2YWxzWzBdIDogeyBzdGFydF9zZWNvbmQ6IDMyNDAwLCBlbmRfc2Vjb25kOiA2NDgwMCB9O1xyXG5cclxuXHRcdFx0JHJvdy5maW5kKCAnaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdJyApLnByb3AoICdjaGVja2VkJywgaW50ZXJ2YWxzLmxlbmd0aCA+IDAgKTtcclxuXHRcdFx0JHJvdy5maW5kKCAnLndwYmNfYWdfd29ya2luZ190aW1lX3N0YXJ0JyApLnZhbCggc2Vjb25kc190b190aW1lKCBpbnRlcnZhbC5zdGFydF9zZWNvbmQgKSApO1xyXG5cdFx0XHQkcm93LmZpbmQoICcud3BiY19hZ193b3JraW5nX3RpbWVfZW5kJyApLnZhbCggc2Vjb25kc190b190aW1lKCBpbnRlcnZhbC5lbmRfc2Vjb25kICkgKTtcclxuXHRcdH0gKTtcclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIHJlZnJlc2hfd29ya2luZ190aW1lX3BhbmVscygpIHtcclxuXHRcdHZhciBpc19lbmFibGVkID0gZ2V0X2Zvcm0oKS5maW5kKCAnaW5wdXRbbmFtZT1cImJvb2tpbmdfd29ya2luZ190aW1lX2VuYWJsZWRcIl0nICkucHJvcCggJ2NoZWNrZWQnICk7XHJcblx0XHR2YXIgbW9kZSA9IGdldF9mb3JtKCkuZmluZCggJ2lucHV0W25hbWU9XCJib29raW5nX3dvcmtpbmdfdGltZV9yZXNvdXJjZV9tb2RlXCJdOmNoZWNrZWQnICkudmFsKCkgfHwgJ2luaGVyaXQnO1xyXG5cclxuXHRcdGdldF9mb3JtKClcclxuXHRcdFx0LmZpbmQoICcud3BiY19hZ193b3JraW5nX3RpbWVfYmxvY2snIClcclxuXHRcdFx0LnRvZ2dsZUNsYXNzKCAnaXMtZGlzYWJsZWQnLCAhIGlzX2VuYWJsZWQgKVxyXG5cdFx0XHQuZmluZCggJ2lucHV0LCBzZWxlY3QsIGJ1dHRvbicgKVxyXG5cdFx0XHQucHJvcCggJ2Rpc2FibGVkJywgISBpc19lbmFibGVkICk7XHJcblxyXG5cdFx0Z2V0X2Zvcm0oKS5maW5kKCAnW2RhdGEtd3BiYy13b3JraW5nLXRpbWUtcmVzb3VyY2UtY3VzdG9tXScgKS50b2dnbGVDbGFzcyggJ2lzLXZpc2libGUnLCBtb2RlID09PSAnY3VzdG9tJyApO1xyXG5cdH1cclxuXHJcblx0ZnVuY3Rpb24gZ2V0X3dvcmtpbmdfdGltZV9zZXR0aW5nc19mcm9tX2Zvcm0oKSB7XHJcblx0XHR2YXIgJGZvcm0gPSBnZXRfZm9ybSgpO1xyXG5cdFx0dmFyIHJlc291cmNlSWQgPSBwYXJzZUludCggJGZvcm0uZmluZCggJ1tkYXRhLXdwYmMtd29ya2luZy10aW1lLXJlc291cmNlLWlkXScgKS52YWwoKSwgMTAgKSB8fCBwYXJzZUludCggJCggJyN3cGJjX2FnX3Jlc291cmNlX2lkJyApLnZhbCgpLCAxMCApIHx8IDA7XHJcblx0XHR2YXIgd29ya2luZ1RpbWUgPSAkLmV4dGVuZCggdHJ1ZSwge30sIGNmZy5zZXR0aW5ncyAmJiBjZmcuc2V0dGluZ3Mud29ya2luZ190aW1lID8gY2ZnLnNldHRpbmdzLndvcmtpbmdfdGltZSA6ICggY2ZnLmRlZmF1bHRfc2V0dGluZ3MgJiYgY2ZnLmRlZmF1bHRfc2V0dGluZ3Mud29ya2luZ190aW1lID8gY2ZnLmRlZmF1bHRfc2V0dGluZ3Mud29ya2luZ190aW1lIDoge30gKSApO1xyXG5cclxuXHRcdGlmICggISB3b3JraW5nVGltZS5kZWZhdWx0ICkge1xyXG5cdFx0XHR3b3JraW5nVGltZS5kZWZhdWx0ID0ge307XHJcblx0XHR9XHJcblx0XHRpZiAoICEgd29ya2luZ1RpbWUucmVzb3VyY2VzICkge1xyXG5cdFx0XHR3b3JraW5nVGltZS5yZXNvdXJjZXMgPSB7fTtcclxuXHRcdH1cclxuXHJcblx0XHR3b3JraW5nVGltZS5lbmFibGVkID0gJGZvcm0uZmluZCggJ2lucHV0W25hbWU9XCJib29raW5nX3dvcmtpbmdfdGltZV9lbmFibGVkXCJdJyApLnByb3AoICdjaGVja2VkJyApID8gJ09uJyA6ICdPZmYnO1xyXG5cdFx0d29ya2luZ1RpbWUuZGVmYXVsdC53ZWVrZGF5cyA9IGNvbGxlY3Rfd29ya2luZ190aW1lX3dlZWtkYXlzKCAnYm9va2luZ193b3JraW5nX3RpbWVfZGVmYXVsdCcgKTtcclxuXHJcblx0XHRpZiAoIHJlc291cmNlSWQgPiAwICkge1xyXG5cdFx0XHR3b3JraW5nVGltZS5yZXNvdXJjZXNbIHJlc291cmNlSWQgXSA9IHtcclxuXHRcdFx0XHRtb2RlOiAkZm9ybS5maW5kKCAnaW5wdXRbbmFtZT1cImJvb2tpbmdfd29ya2luZ190aW1lX3Jlc291cmNlX21vZGVcIl06Y2hlY2tlZCcgKS52YWwoKSB8fCAnaW5oZXJpdCcsXHJcblx0XHRcdFx0d2Vla2RheXM6IGNvbGxlY3Rfd29ya2luZ190aW1lX3dlZWtkYXlzKCAnYm9va2luZ193b3JraW5nX3RpbWVfcmVzb3VyY2UnIClcclxuXHRcdFx0fTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gd29ya2luZ1RpbWU7XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiBhcHBseV93b3JraW5nX3RpbWVfc2V0dGluZ3NfdG9fZm9ybSggd29ya2luZ1RpbWUsIHJlc291cmNlSWQgKSB7XHJcblx0XHR2YXIgcmVzb3VyY2VTZXR0aW5ncztcclxuXHJcblx0XHR3b3JraW5nVGltZSA9IHdvcmtpbmdUaW1lIHx8IHt9O1xyXG5cdFx0cmVzb3VyY2VJZCA9IHBhcnNlSW50KCByZXNvdXJjZUlkLCAxMCApIHx8IHBhcnNlSW50KCAkKCAnI3dwYmNfYWdfcmVzb3VyY2VfaWQnICkudmFsKCksIDEwICkgfHwgMDtcclxuXHRcdHJlc291cmNlU2V0dGluZ3MgPSB3b3JraW5nVGltZS5yZXNvdXJjZXMgJiYgd29ya2luZ1RpbWUucmVzb3VyY2VzWyByZXNvdXJjZUlkIF0gPyB3b3JraW5nVGltZS5yZXNvdXJjZXNbIHJlc291cmNlSWQgXSA6IHtcclxuXHRcdFx0bW9kZTogJ2luaGVyaXQnLFxyXG5cdFx0XHR3ZWVrZGF5czogd29ya2luZ1RpbWUuZGVmYXVsdCAmJiB3b3JraW5nVGltZS5kZWZhdWx0LndlZWtkYXlzID8gd29ya2luZ1RpbWUuZGVmYXVsdC53ZWVrZGF5cyA6IHt9XHJcblx0XHR9O1xyXG5cclxuXHRcdGdldF9mb3JtKCkuZmluZCggJ2lucHV0W25hbWU9XCJib29raW5nX3dvcmtpbmdfdGltZV9lbmFibGVkXCJdJyApLnByb3AoICdjaGVja2VkJywgd29ya2luZ1RpbWUuZW5hYmxlZCA9PT0gJ09uJyApO1xyXG5cdFx0Z2V0X2Zvcm0oKS5maW5kKCAnW2RhdGEtd3BiYy13b3JraW5nLXRpbWUtcmVzb3VyY2UtaWRdJyApLnZhbCggcmVzb3VyY2VJZCApO1xyXG5cdFx0c2V0X3dvcmtpbmdfdGltZV93ZWVrZGF5cyggJ2Jvb2tpbmdfd29ya2luZ190aW1lX2RlZmF1bHQnLCB3b3JraW5nVGltZS5kZWZhdWx0ICYmIHdvcmtpbmdUaW1lLmRlZmF1bHQud2Vla2RheXMgPyB3b3JraW5nVGltZS5kZWZhdWx0LndlZWtkYXlzIDoge30gKTtcclxuXHRcdGdldF9mb3JtKCkuZmluZCggJ2lucHV0W25hbWU9XCJib29raW5nX3dvcmtpbmdfdGltZV9yZXNvdXJjZV9tb2RlXCJdW3ZhbHVlPVwiJyArICggcmVzb3VyY2VTZXR0aW5ncy5tb2RlIHx8ICdpbmhlcml0JyApICsgJ1wiXScgKS5wcm9wKCAnY2hlY2tlZCcsIHRydWUgKTtcclxuXHRcdHNldF93b3JraW5nX3RpbWVfd2Vla2RheXMoICdib29raW5nX3dvcmtpbmdfdGltZV9yZXNvdXJjZScsIHJlc291cmNlU2V0dGluZ3Mud2Vla2RheXMgfHwgKCB3b3JraW5nVGltZS5kZWZhdWx0ID8gd29ya2luZ1RpbWUuZGVmYXVsdC53ZWVrZGF5cyA6IHt9ICkgKTtcclxuXHRcdHJlZnJlc2hfd29ya2luZ190aW1lX3BhbmVscygpO1xyXG5cdH1cclxuXHJcblx0ZnVuY3Rpb24gYXBwZW5kX3dvcmtpbmdfdGltZV9wYXlsb2FkKCBwYXlsb2FkICkge1xyXG5cdFx0dmFyICRmb3JtID0gZ2V0X2Zvcm0oKTtcclxuXHRcdHZhciBkZWZhdWx0RGF5cyA9IFtdO1xyXG5cdFx0dmFyIHJlc291cmNlRGF5cyA9IFtdO1xyXG5cdFx0dmFyIGRlZmF1bHRTdGFydCA9IHt9O1xyXG5cdFx0dmFyIGRlZmF1bHRFbmQgPSB7fTtcclxuXHRcdHZhciByZXNvdXJjZVN0YXJ0ID0ge307XHJcblx0XHR2YXIgcmVzb3VyY2VFbmQgPSB7fTtcclxuXHJcblx0XHQkZm9ybS5maW5kKCAnW2RhdGEtd3BiYy13b3JraW5nLXRpbWUtd2Vla2RheXM9XCJib29raW5nX3dvcmtpbmdfdGltZV9kZWZhdWx0XCJdIC53cGJjX2FnX3dvcmtpbmdfdGltZV9yb3cnICkuZWFjaCggZnVuY3Rpb24gKCkge1xyXG5cdFx0XHR2YXIgJHJvdyA9ICQoIHRoaXMgKTtcclxuXHRcdFx0dmFyIGRheSA9IHBhcnNlSW50KCAkcm93LmZpbmQoICdpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0nICkudmFsKCksIDEwICk7XHJcblxyXG5cdFx0XHRkZWZhdWx0U3RhcnRbIGRheSBdID0gJHJvdy5maW5kKCAnLndwYmNfYWdfd29ya2luZ190aW1lX3N0YXJ0JyApLnZhbCgpIHx8ICcwOTowMCc7XHJcblx0XHRcdGRlZmF1bHRFbmRbIGRheSBdID0gJHJvdy5maW5kKCAnLndwYmNfYWdfd29ya2luZ190aW1lX2VuZCcgKS52YWwoKSB8fCAnMTg6MDAnO1xyXG5cdFx0XHRpZiAoICRyb3cuZmluZCggJ2lucHV0W3R5cGU9XCJjaGVja2JveFwiXScgKS5wcm9wKCAnY2hlY2tlZCcgKSApIHtcclxuXHRcdFx0XHRkZWZhdWx0RGF5cy5wdXNoKCBkYXkgKTtcclxuXHRcdFx0fVxyXG5cdFx0fSApO1xyXG5cclxuXHRcdCRmb3JtLmZpbmQoICdbZGF0YS13cGJjLXdvcmtpbmctdGltZS13ZWVrZGF5cz1cImJvb2tpbmdfd29ya2luZ190aW1lX3Jlc291cmNlXCJdIC53cGJjX2FnX3dvcmtpbmdfdGltZV9yb3cnICkuZWFjaCggZnVuY3Rpb24gKCkge1xyXG5cdFx0XHR2YXIgJHJvdyA9ICQoIHRoaXMgKTtcclxuXHRcdFx0dmFyIGRheSA9IHBhcnNlSW50KCAkcm93LmZpbmQoICdpbnB1dFt0eXBlPVwiY2hlY2tib3hcIl0nICkudmFsKCksIDEwICk7XHJcblxyXG5cdFx0XHRyZXNvdXJjZVN0YXJ0WyBkYXkgXSA9ICRyb3cuZmluZCggJy53cGJjX2FnX3dvcmtpbmdfdGltZV9zdGFydCcgKS52YWwoKSB8fCAnMDk6MDAnO1xyXG5cdFx0XHRyZXNvdXJjZUVuZFsgZGF5IF0gPSAkcm93LmZpbmQoICcud3BiY19hZ193b3JraW5nX3RpbWVfZW5kJyApLnZhbCgpIHx8ICcxODowMCc7XHJcblx0XHRcdGlmICggJHJvdy5maW5kKCAnaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdJyApLnByb3AoICdjaGVja2VkJyApICkge1xyXG5cdFx0XHRcdHJlc291cmNlRGF5cy5wdXNoKCBkYXkgKTtcclxuXHRcdFx0fVxyXG5cdFx0fSApO1xyXG5cclxuXHRcdHBheWxvYWQuYm9va2luZ193b3JraW5nX3RpbWVfZW5hYmxlZCA9ICRmb3JtLmZpbmQoICdpbnB1dFtuYW1lPVwiYm9va2luZ193b3JraW5nX3RpbWVfZW5hYmxlZFwiXScgKS5wcm9wKCAnY2hlY2tlZCcgKSA/ICdPbicgOiAnJztcclxuXHRcdHBheWxvYWQuYm9va2luZ193b3JraW5nX3RpbWVfcmVzb3VyY2VfaWQgPSAkZm9ybS5maW5kKCAnW2RhdGEtd3BiYy13b3JraW5nLXRpbWUtcmVzb3VyY2UtaWRdJyApLnZhbCgpIHx8ICQoICcjd3BiY19hZ19yZXNvdXJjZV9pZCcgKS52YWwoKSB8fCAnJztcclxuXHRcdHBheWxvYWQuYm9va2luZ193b3JraW5nX3RpbWVfcmVzb3VyY2VfbW9kZSA9ICRmb3JtLmZpbmQoICdpbnB1dFtuYW1lPVwiYm9va2luZ193b3JraW5nX3RpbWVfcmVzb3VyY2VfbW9kZVwiXTpjaGVja2VkJyApLnZhbCgpIHx8ICdpbmhlcml0JztcclxuXHRcdHBheWxvYWQuYm9va2luZ193b3JraW5nX3RpbWVfZGVmYXVsdF9kYXlzID0gZGVmYXVsdERheXM7XHJcblx0XHRwYXlsb2FkLmJvb2tpbmdfd29ya2luZ190aW1lX2RlZmF1bHRfc3RhcnQgPSBkZWZhdWx0U3RhcnQ7XHJcblx0XHRwYXlsb2FkLmJvb2tpbmdfd29ya2luZ190aW1lX2RlZmF1bHRfZW5kID0gZGVmYXVsdEVuZDtcclxuXHRcdHBheWxvYWQuYm9va2luZ193b3JraW5nX3RpbWVfcmVzb3VyY2VfZGF5cyA9IHJlc291cmNlRGF5cztcclxuXHRcdHBheWxvYWQuYm9va2luZ193b3JraW5nX3RpbWVfcmVzb3VyY2Vfc3RhcnQgPSByZXNvdXJjZVN0YXJ0O1xyXG5cdFx0cGF5bG9hZC5ib29raW5nX3dvcmtpbmdfdGltZV9yZXNvdXJjZV9lbmQgPSByZXNvdXJjZUVuZDtcclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIHVwZGF0ZV93cGJjX3ByZXZpZXdfcGFyYW1zKCBzZXR0aW5ncyApIHtcclxuXHRcdGlmICggISB3Ll93cGJjIHx8IHR5cGVvZiB3Ll93cGJjLnNldF9vdGhlcl9wYXJhbSAhPT0gJ2Z1bmN0aW9uJyApIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdHcuX3dwYmMuc2V0X290aGVyX3BhcmFtKCAnYXZhaWxhYmlsaXR5X193ZWVrX2RheXNfdW5hdmFpbGFibGUnLCBzZXR0aW5ncy53ZWVrZGF5cy5jb25jYXQoIFsgOTk5IF0gKSApO1xyXG5cdFx0dy5fd3BiYy5zZXRfb3RoZXJfcGFyYW0oICdhdmFpbGFiaWxpdHlfX2F2YWlsYWJsZV9mcm9tX3RvZGF5JywgaXNfYXZhaWxhYmxlX2xpbWl0X2F2YWlsYWJsZSgpID8gKCBzZXR0aW5ncy5ib29raW5nX2F2YWlsYWJsZV9kYXlzX251bV9mcm9tX3RvZGF5IHx8ICcnICkgOiAnJyApO1xyXG5cdFx0dy5fd3BiYy5zZXRfb3RoZXJfcGFyYW0oICdhdmFpbGFiaWxpdHlfX3VuYXZhaWxhYmxlX2Zyb21fdG9kYXknLCBzZXR0aW5ncy5ib29raW5nX3VuYXZhaWxhYmxlX2RheXNfbnVtX2Zyb21fdG9kYXkgfHwgJzAnICk7XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiB1cGRhdGVfYnVmZmVyX3ByZXZpZXdfbm90ZSggc2V0dGluZ3MgKSB7XHJcblx0XHR2YXIgJG5vdGVzID0gJCggJ1tkYXRhLXdwYmMtYWctY2FsZW5kYXItbm90ZXM9XCIxXCJdJyApLmZpcnN0KCk7XHJcblx0XHR2YXIgJGNhbGVuZGFyID0gJCggJ1tkYXRhLXdwYmMtYWctY2FsZW5kYXItcGFuZWw9XCIxXCJdJyApLmZpcnN0KCk7XHJcblx0XHR2YXIgJG5vdGUgPSAkbm90ZXMuZmluZCggJy53cGJjX2FnX2J1ZmZlcl9wcmV2aWV3X25vdGUnICk7XHJcblx0XHR2YXIgdHlwZSA9IHNldHRpbmdzLmJvb2tpbmdfdW5hdmFpbGFibGVfZXh0cmFfaW5fb3V0IHx8ICcnO1xyXG5cdFx0dmFyIGJlZm9yZV90ZXh0ID0gJyc7XHJcblx0XHR2YXIgYWZ0ZXJfdGV4dCA9ICcnO1xyXG5cdFx0dmFyIG1lc3NhZ2UgPSAnJztcclxuXHJcblx0XHRpZiAoICEgJG5vdGVzLmxlbmd0aCB8fCAhICRjYWxlbmRhci5sZW5ndGggKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoICEgJG5vdGUubGVuZ3RoICkge1xyXG5cdFx0XHQkbm90ZSA9ICQoICc8ZGl2IGNsYXNzPVwid3BiY19hZ19idWZmZXJfcHJldmlld19ub3RlXCIgYXJpYS1saXZlPVwicG9saXRlXCI+PC9kaXY+JyApO1xyXG5cdFx0XHQkbm90ZXMuYXBwZW5kKCAkbm90ZSApO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICggISBpc19idWZmZXJfYXZhaWxhYmxlKCkgKSB7XHJcblx0XHRcdCRjYWxlbmRhci5yZW1vdmVDbGFzcyggJ3dwYmNfYWdfcHJldmlld19idWZmZXJfYWN0aXZlJyApO1xyXG5cdFx0XHQkbm90ZS5hdHRyKCAnaGlkZGVuJywgJ2hpZGRlbicgKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdCRjYWxlbmRhci50b2dnbGVDbGFzcyggJ3dwYmNfYWdfcHJldmlld19idWZmZXJfYWN0aXZlJywgISEgdHlwZSApO1xyXG5cclxuXHRcdGlmICggdHlwZSA9PT0gJ20nICkge1xyXG5cdFx0XHRiZWZvcmVfdGV4dCA9IGdldF9vcHRpb25fdGV4dCggJ1tuYW1lPVwiYm9va2luZ191bmF2YWlsYWJsZV9leHRyYV9taW51dGVzX2luXCJdJyApIHx8ICctJztcclxuXHRcdFx0YWZ0ZXJfdGV4dCA9IGdldF9vcHRpb25fdGV4dCggJ1tuYW1lPVwiYm9va2luZ191bmF2YWlsYWJsZV9leHRyYV9taW51dGVzX291dFwiXScgKSB8fCAnLSc7XHJcblx0XHR9IGVsc2UgaWYgKCB0eXBlID09PSAnZCcgKSB7XHJcblx0XHRcdGJlZm9yZV90ZXh0ID0gZ2V0X29wdGlvbl90ZXh0KCAnW25hbWU9XCJib29raW5nX3VuYXZhaWxhYmxlX2V4dHJhX2RheXNfaW5cIl0nICkgfHwgJy0nO1xyXG5cdFx0XHRhZnRlcl90ZXh0ID0gZ2V0X29wdGlvbl90ZXh0KCAnW25hbWU9XCJib29raW5nX3VuYXZhaWxhYmxlX2V4dHJhX2RheXNfb3V0XCJdJyApIHx8ICctJztcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoIHR5cGUgKSB7XHJcblx0XHRcdG1lc3NhZ2UgPSAnPHN0cm9uZz4nICsgKCBjZmcuaTE4biAmJiBjZmcuaTE4bi5idWZmZXJfcHJldmlldyA/IGNmZy5pMThuLmJ1ZmZlcl9wcmV2aWV3IDogJ0J1ZmZlciBwcmV2aWV3JyApICsgJzo8L3N0cm9uZz4gJyArXHJcblx0XHRcdFx0KCBjZmcuaTE4biAmJiBjZmcuaTE4bi5iZWZvcmVfYm9va2luZyA/IGNmZy5pMThuLmJlZm9yZV9ib29raW5nIDogJ0JlZm9yZSBib29raW5nJyApICsgJyAnICsgYmVmb3JlX3RleHQgK1xyXG5cdFx0XHRcdCcgLyAnICsgKCBjZmcuaTE4biAmJiBjZmcuaTE4bi5hZnRlcl9ib29raW5nID8gY2ZnLmkxOG4uYWZ0ZXJfYm9va2luZyA6ICdBZnRlciBib29raW5nJyApICsgJyAnICsgYWZ0ZXJfdGV4dDtcclxuXHRcdFx0aWYgKCAkbm90ZS5odG1sKCkgIT09IG1lc3NhZ2UgKSB7XHJcblx0XHRcdFx0JG5vdGUuaHRtbCggbWVzc2FnZSApO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmICggJG5vdGUuYXR0ciggJ2hpZGRlbicgKSApIHtcclxuXHRcdFx0XHQkbm90ZS5yZW1vdmVBdHRyKCAnaGlkZGVuJyApO1xyXG5cdFx0XHR9XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRtZXNzYWdlID0gY2ZnLmkxOG4gJiYgY2ZnLmkxOG4ubm9fYnVmZmVyID8gY2ZnLmkxOG4ubm9fYnVmZmVyIDogJ05vIGJvb2tpbmcgYnVmZmVyIGlzIHNlbGVjdGVkLic7XHJcblx0XHRcdGlmICggJG5vdGUudGV4dCgpICE9PSBtZXNzYWdlICkge1xyXG5cdFx0XHRcdCRub3RlLnRleHQoIG1lc3NhZ2UgKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoICEgJG5vdGUuYXR0ciggJ2hpZGRlbicgKSApIHtcclxuXHRcdFx0XHQkbm90ZS5hdHRyKCAnaGlkZGVuJywgJ2hpZGRlbicgKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0ZnVuY3Rpb24gYXBwbHlfYnVmZmVyX2RheXNfcHJldmlldyggc2V0dGluZ3MgKSB7XHJcblx0XHR2YXIgJGNhbGVuZGFyID0gJCggJ1tkYXRhLXdwYmMtYWctY2FsZW5kYXItcGFuZWw9XCIxXCJdJyApO1xyXG5cdFx0dmFyIGJlZm9yZV9kYXlzID0gZ2V0X2RheXNfdmFsdWUoIHNldHRpbmdzLmJvb2tpbmdfdW5hdmFpbGFibGVfZXh0cmFfZGF5c19pbiApO1xyXG5cdFx0dmFyIGFmdGVyX2RheXMgPSBnZXRfZGF5c192YWx1ZSggc2V0dGluZ3MuYm9va2luZ191bmF2YWlsYWJsZV9leHRyYV9kYXlzX291dCApO1xyXG5cdFx0dmFyIGRhdGVfY2VsbHMgPSB7fTtcclxuXHRcdHZhciBib29rZWRfZGF0ZXMgPSBbXTtcclxuXHJcblx0XHRpZiAoICEgaXNfYnVmZmVyX2F2YWlsYWJsZSgpICkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKCBzZXR0aW5ncy5ib29raW5nX3VuYXZhaWxhYmxlX2V4dHJhX2luX291dCAhPT0gJ2QnIHx8ICggISBiZWZvcmVfZGF5cyAmJiAhIGFmdGVyX2RheXMgKSApIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdCRjYWxlbmRhci5maW5kKCAnLmRhdGVwaWNrLWRheXMtY2VsbCcgKS5lYWNoKCBmdW5jdGlvbiAoKSB7XHJcblx0XHRcdHZhciAkY2VsbCA9ICQoIHRoaXMgKTtcclxuXHRcdFx0dmFyIHNxbF9kYXRlID0gZ2V0X3NxbF9kYXRlX2Zyb21fY2VsbCggdGhpcyApO1xyXG5cdFx0XHR2YXIgY2VsbF9kYXRlO1xyXG5cclxuXHRcdFx0aWYgKCAhIHNxbF9kYXRlICkge1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0ZGF0ZV9jZWxsc1sgc3FsX2RhdGUgXSA9ICRjZWxsO1xyXG5cclxuXHRcdFx0aWYgKCAkY2VsbC5oYXNDbGFzcyggJ2RhdGVfYXBwcm92ZWQnICkgfHwgJGNlbGwuaGFzQ2xhc3MoICdkYXRlMmFwcHJvdmUnICkgKSB7XHJcblx0XHRcdFx0Y2VsbF9kYXRlID0gZGF0ZV9mcm9tX3NxbCggc3FsX2RhdGUgKTtcclxuXHRcdFx0XHRpZiAoIGNlbGxfZGF0ZSApIHtcclxuXHRcdFx0XHRcdGJvb2tlZF9kYXRlcy5wdXNoKCBjZWxsX2RhdGUgKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH0gKTtcclxuXHJcblx0XHQkLmVhY2goIGJvb2tlZF9kYXRlcywgZnVuY3Rpb24gKCBpbmRleCwgYm9va2VkX2RhdGUgKSB7XHJcblx0XHRcdHZhciBvZmZzZXQ7XHJcblx0XHRcdHZhciB0YXJnZXRfc3FsX2RhdGU7XHJcblx0XHRcdHZhciAkdGFyZ2V0X2NlbGw7XHJcblxyXG5cdFx0XHRmb3IgKCBvZmZzZXQgPSBiZWZvcmVfZGF5cyAqIC0xOyBvZmZzZXQgPCAwOyBvZmZzZXQrKyApIHtcclxuXHRcdFx0XHR0YXJnZXRfc3FsX2RhdGUgPSBkYXRlX3RvX3NxbCggYWRkX2RheXMoIGJvb2tlZF9kYXRlLCBvZmZzZXQgKSApO1xyXG5cdFx0XHRcdCR0YXJnZXRfY2VsbCA9IGRhdGVfY2VsbHNbIHRhcmdldF9zcWxfZGF0ZSBdO1xyXG5cdFx0XHRcdGlmICggJHRhcmdldF9jZWxsICYmICEgJHRhcmdldF9jZWxsLmhhc0NsYXNzKCAnZGF0ZV9hcHByb3ZlZCcgKSAmJiAhICR0YXJnZXRfY2VsbC5oYXNDbGFzcyggJ2RhdGUyYXBwcm92ZScgKSApIHtcclxuXHRcdFx0XHRcdHJlbWVtYmVyX3ByZXZpZXdfb3JpZ2luKCAkdGFyZ2V0X2NlbGwgKTtcclxuXHRcdFx0XHRcdCR0YXJnZXRfY2VsbC5hZGRDbGFzcyggJ2RhdGVfdXNlcl91bmF2YWlsYWJsZSB3cGJjX2FnX3ByZXZpZXdfdW5hdmFpbGFibGUgd3BiY19hZ19wcmV2aWV3X2J1ZmZlcl91bmF2YWlsYWJsZSBidWZmZXJfdW5hdmFpbGFibGUnICk7XHJcblx0XHRcdFx0XHQkdGFyZ2V0X2NlbGwuYXR0ciggJ2RhdGEtd3BiYy1hZy1wcmV2aWV3LXJlYXNvbicsICd3cGJjX2FnX3ByZXZpZXdfYnVmZmVyX3VuYXZhaWxhYmxlJyApO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Zm9yICggb2Zmc2V0ID0gMTsgb2Zmc2V0IDw9IGFmdGVyX2RheXM7IG9mZnNldCsrICkge1xyXG5cdFx0XHRcdHRhcmdldF9zcWxfZGF0ZSA9IGRhdGVfdG9fc3FsKCBhZGRfZGF5cyggYm9va2VkX2RhdGUsIG9mZnNldCApICk7XHJcblx0XHRcdFx0JHRhcmdldF9jZWxsID0gZGF0ZV9jZWxsc1sgdGFyZ2V0X3NxbF9kYXRlIF07XHJcblx0XHRcdFx0aWYgKCAkdGFyZ2V0X2NlbGwgJiYgISAkdGFyZ2V0X2NlbGwuaGFzQ2xhc3MoICdkYXRlX2FwcHJvdmVkJyApICYmICEgJHRhcmdldF9jZWxsLmhhc0NsYXNzKCAnZGF0ZTJhcHByb3ZlJyApICkge1xyXG5cdFx0XHRcdFx0cmVtZW1iZXJfcHJldmlld19vcmlnaW4oICR0YXJnZXRfY2VsbCApO1xyXG5cdFx0XHRcdFx0JHRhcmdldF9jZWxsLmFkZENsYXNzKCAnZGF0ZV91c2VyX3VuYXZhaWxhYmxlIHdwYmNfYWdfcHJldmlld191bmF2YWlsYWJsZSB3cGJjX2FnX3ByZXZpZXdfYnVmZmVyX3VuYXZhaWxhYmxlIGJ1ZmZlcl91bmF2YWlsYWJsZScgKTtcclxuXHRcdFx0XHRcdCR0YXJnZXRfY2VsbC5hdHRyKCAnZGF0YS13cGJjLWFnLXByZXZpZXctcmVhc29uJywgJ3dwYmNfYWdfcHJldmlld19idWZmZXJfdW5hdmFpbGFibGUnICk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9ICk7XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiByZW1lbWJlcl9wcmV2aWV3X29yaWdpbiggJGNlbGwgKSB7XHJcblx0XHRpZiAoIHR5cGVvZiAkY2VsbC5hdHRyKCAnZGF0YS13cGJjLWFnLW9yaWdpbmFsLWRhdGUtdXNlci11bmF2YWlsYWJsZScgKSA9PT0gJ3VuZGVmaW5lZCcgKSB7XHJcblx0XHRcdCRjZWxsLmF0dHIoICdkYXRhLXdwYmMtYWctb3JpZ2luYWwtZGF0ZS11c2VyLXVuYXZhaWxhYmxlJywgJGNlbGwuaGFzQ2xhc3MoICdkYXRlX3VzZXJfdW5hdmFpbGFibGUnICkgPyAnMScgOiAnMCcgKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIGNsZWFyX3ByZXZpZXdfY2VsbCggJGNlbGwgKSB7XHJcblx0XHR2YXIgaGFkX2RhdGVfdXNlcl91bmF2YWlsYWJsZSA9ICRjZWxsLmF0dHIoICdkYXRhLXdwYmMtYWctb3JpZ2luYWwtZGF0ZS11c2VyLXVuYXZhaWxhYmxlJyApID09PSAnMSc7XHJcblxyXG5cdFx0JGNlbGwucmVtb3ZlQ2xhc3MoIHByZXZpZXdfdW5hdmFpbGFibGVfY2xhc3NlcyApO1xyXG5cdFx0JGNlbGwucmVtb3ZlQXR0ciggJ2RhdGEtd3BiYy1hZy1wcmV2aWV3LXJlYXNvbicgKTtcclxuXHRcdCRjZWxsLnJlbW92ZUF0dHIoICdkYXRhLXdwYmMtYWctb3JpZ2luYWwtZGF0ZS11c2VyLXVuYXZhaWxhYmxlJyApO1xyXG5cclxuXHRcdGlmICggISBoYWRfZGF0ZV91c2VyX3VuYXZhaWxhYmxlICkge1xyXG5cdFx0XHQkY2VsbC5yZW1vdmVDbGFzcyggJ2RhdGVfdXNlcl91bmF2YWlsYWJsZScgKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIGFwcGx5X2NhbGVuZGFyX3ByZXZpZXcoKSB7XHJcblx0XHR2YXIgc2V0dGluZ3MgPSBjb2xsZWN0X3NldHRpbmdzKCk7XHJcblx0XHR2YXIgdG9kYXlfZGF0ZSA9IGdldF9yZWFsX3RvZGF5X2RhdGUoKTtcclxuXHRcdHZhciBhdmFpbGFibGVfbGltaXQgPSBpc19hdmFpbGFibGVfbGltaXRfYXZhaWxhYmxlKCkgPyBwYXJzZUludCggc2V0dGluZ3MuYm9va2luZ19hdmFpbGFibGVfZGF5c19udW1fZnJvbV90b2RheSB8fCAnMCcsIDEwICkgOiAwO1xyXG5cdFx0dmFyICRjYWxlbmRhciA9ICQoICdbZGF0YS13cGJjLWFnLWNhbGVuZGFyLXBhbmVsPVwiMVwiXScgKTtcclxuXHJcblx0XHR1cGRhdGVfd3BiY19wcmV2aWV3X3BhcmFtcyggc2V0dGluZ3MgKTtcclxuXHRcdHVwZGF0ZV9idWZmZXJfcHJldmlld19ub3RlKCBzZXR0aW5ncyApO1xyXG5cclxuXHRcdCRjYWxlbmRhci5maW5kKCAnLmRhdGVwaWNrLWRheXMtY2VsbCcgKS5lYWNoKCBmdW5jdGlvbiAoKSB7XHJcblx0XHRcdHZhciBjZWxsID0gdGhpcztcclxuXHRcdFx0dmFyICRjZWxsID0gJCggY2VsbCApO1xyXG5cdFx0XHR2YXIgc3FsX2RhdGUgPSBnZXRfc3FsX2RhdGVfZnJvbV9jZWxsKCBjZWxsICk7XHJcblx0XHRcdHZhciBjZWxsX2RhdGUgPSBkYXRlX2Zyb21fc3FsKCBzcWxfZGF0ZSApO1xyXG5cdFx0XHR2YXIgbWFrZV91bmF2YWlsYWJsZSA9IGZhbHNlO1xyXG5cdFx0XHR2YXIgcmVhc29uX2NsYXNzID0gJyc7XHJcblx0XHRcdHZhciBwcmV2aW91c19yZWFzb24gPSAkY2VsbC5hdHRyKCAnZGF0YS13cGJjLWFnLXByZXZpZXctcmVhc29uJyApIHx8ICcnO1xyXG5cdFx0XHR2YXIgaGFkX2dlbmVyYWxfcHJldmlldyA9ICEhIHByZXZpb3VzX3JlYXNvbiB8fCAkY2VsbC5oYXNDbGFzcyggJ3dwYmNfYWdfcHJldmlld191bmF2YWlsYWJsZScgKSB8fCAkY2VsbC5oYXNDbGFzcyggJ3dlZWtkYXlfdW5hdmFpbGFibGUnICkgfHwgJGNlbGwuaGFzQ2xhc3MoICdmcm9tX3RvZGF5X3VuYXZhaWxhYmxlJyApIHx8ICRjZWxsLmhhc0NsYXNzKCAnbGltaXRfYXZhaWxhYmxlX2Zyb21fdG9kYXknICkgfHwgJGNlbGwuaGFzQ2xhc3MoICdidWZmZXJfdW5hdmFpbGFibGUnICk7XHJcblxyXG5cdFx0XHRpZiAoICEgY2VsbF9kYXRlICkge1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYgKCBzZXR0aW5ncy53ZWVrZGF5cy5pbmRleE9mKCBjZWxsX2RhdGUuZ2V0RGF5KCkgKSA+IC0xICkge1xyXG5cdFx0XHRcdG1ha2VfdW5hdmFpbGFibGUgPSB0cnVlO1xyXG5cdFx0XHRcdHJlYXNvbl9jbGFzcyA9ICd3cGJjX2FnX3ByZXZpZXdfd2Vla2RheV91bmF2YWlsYWJsZSc7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmICggdW5hdmFpbGFibGVfZnJvbV90b2RheV9hcHBsaWVzKCBjZWxsX2RhdGUsIHRvZGF5X2RhdGUsIHNldHRpbmdzLmJvb2tpbmdfdW5hdmFpbGFibGVfZGF5c19udW1fZnJvbV90b2RheSApICkge1xyXG5cdFx0XHRcdG1ha2VfdW5hdmFpbGFibGUgPSB0cnVlO1xyXG5cdFx0XHRcdHJlYXNvbl9jbGFzcyA9ICd3cGJjX2FnX3ByZXZpZXdfZnJvbV90b2RheV91bmF2YWlsYWJsZSc7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdGlmICggYXZhaWxhYmxlX2xpbWl0ID4gMCAmJiBkYXlzX2JldHdlZW4oIGNlbGxfZGF0ZSwgdG9kYXlfZGF0ZSApID49IGF2YWlsYWJsZV9saW1pdCApIHtcclxuXHRcdFx0XHRtYWtlX3VuYXZhaWxhYmxlID0gdHJ1ZTtcclxuXHRcdFx0XHRyZWFzb25fY2xhc3MgPSAnd3BiY19hZ19wcmV2aWV3X2xpbWl0X2F2YWlsYWJsZV9mcm9tX3RvZGF5JztcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYgKCBtYWtlX3VuYXZhaWxhYmxlICkge1xyXG5cdFx0XHRcdGlmICggcHJldmlvdXNfcmVhc29uICE9PSByZWFzb25fY2xhc3MgKSB7XHJcblx0XHRcdFx0XHRpZiAoIGhhZF9nZW5lcmFsX3ByZXZpZXcgKSB7XHJcblx0XHRcdFx0XHRcdGNsZWFyX3ByZXZpZXdfY2VsbCggJGNlbGwgKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdHJlbWVtYmVyX3ByZXZpZXdfb3JpZ2luKCAkY2VsbCApO1xyXG5cdFx0XHRcdFx0JGNlbGwuYWRkQ2xhc3MoICdkYXRlX3VzZXJfdW5hdmFpbGFibGUgd3BiY19hZ19wcmV2aWV3X3VuYXZhaWxhYmxlICcgKyByZWFzb25fY2xhc3MgKTtcclxuXHRcdFx0XHRcdCRjZWxsLmF0dHIoICdkYXRhLXdwYmMtYWctcHJldmlldy1yZWFzb24nLCByZWFzb25fY2xhc3MgKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0gZWxzZSBpZiAoIGhhZF9nZW5lcmFsX3ByZXZpZXcgKSB7XHJcblx0XHRcdFx0Y2xlYXJfcHJldmlld19jZWxsKCAkY2VsbCApO1xyXG5cdFx0XHR9XHJcblx0XHR9ICk7XHJcblxyXG5cdFx0YXBwbHlfYnVmZmVyX2RheXNfcHJldmlldyggc2V0dGluZ3MgKTtcclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIHF1ZXVlX3ByZXZpZXdfcmVmcmVzaCgpIHtcclxuXHRcdGlmICggcHJldmlld19mcmFtZSApIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICggdy5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgKSB7XHJcblx0XHRcdHByZXZpZXdfZnJhbWUgPSB3LnJlcXVlc3RBbmltYXRpb25GcmFtZSggZnVuY3Rpb24gKCkge1xyXG5cdFx0XHRcdHByZXZpZXdfZnJhbWUgPSAwO1xyXG5cdFx0XHRcdGFwcGx5X2NhbGVuZGFyX3ByZXZpZXcoKTtcclxuXHRcdFx0fSApO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0cHJldmlld19mcmFtZSA9IHcuc2V0VGltZW91dCggZnVuY3Rpb24gKCkge1xyXG5cdFx0XHRcdHByZXZpZXdfZnJhbWUgPSAwO1xyXG5cdFx0XHRcdGFwcGx5X2NhbGVuZGFyX3ByZXZpZXcoKTtcclxuXHRcdFx0fSwgMCApO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0ZnVuY3Rpb24gc2NoZWR1bGVfcHJldmlld19yZWZyZXNoKCBkZWxheSApIHtcclxuXHRcdGNsZWFyVGltZW91dCggcHJldmlld190aW1lciApO1xyXG5cdFx0ZGVsYXkgPSBwYXJzZUludCggZGVsYXksIDEwICkgfHwgMDtcclxuXHJcblx0XHRpZiAoIGRlbGF5ID4gMCApIHtcclxuXHRcdFx0cHJldmlld190aW1lciA9IHNldFRpbWVvdXQoIHF1ZXVlX3ByZXZpZXdfcmVmcmVzaCwgZGVsYXkgKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdHF1ZXVlX3ByZXZpZXdfcmVmcmVzaCgpO1xyXG5cdH1cclxuXHJcblx0ZnVuY3Rpb24gdXBkYXRlX2hpbnRzKCBoaW50cyApIHtcclxuXHRcdGlmICggISBoaW50cyApIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICggdHlwZW9mIGhpbnRzLmJvb2tpbmdfdW5hdmFpbGFibGVfZGF5c19udW1fZnJvbV90b2RheV9faGludCAhPT0gJ3VuZGVmaW5lZCcgKSB7XHJcblx0XHRcdCQoICdbZGF0YS13cGJjLWFnLWhpbnQ9XCJib29raW5nX3VuYXZhaWxhYmxlX2RheXNfbnVtX2Zyb21fdG9kYXlcIl0nICkuaHRtbChcclxuXHRcdFx0XHQnPHNwYW4gY2xhc3M9XCJ3cGJjX2FnX2hpbnRfdW5hdmFpbGFibGVcIj4nICsgJCggJ1tkYXRhLXdwYmMtYWctaGludD1cImJvb2tpbmdfdW5hdmFpbGFibGVfZGF5c19udW1fZnJvbV90b2RheVwiXSAud3BiY19hZ19oaW50X3VuYXZhaWxhYmxlJyApLmZpcnN0KCkudGV4dCgpICsgJzwvc3Bhbj4nICtcclxuXHRcdFx0XHRoaW50cy5ib29raW5nX3VuYXZhaWxhYmxlX2RheXNfbnVtX2Zyb21fdG9kYXlfX2hpbnRcclxuXHRcdFx0KTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoIHR5cGVvZiBoaW50cy5ib29raW5nX2F2YWlsYWJsZV9kYXlzX251bV9mcm9tX3RvZGF5X19oaW50ICE9PSAndW5kZWZpbmVkJyApIHtcclxuXHRcdFx0JCggJ1tkYXRhLXdwYmMtYWctaGludD1cImJvb2tpbmdfYXZhaWxhYmxlX2RheXNfbnVtX2Zyb21fdG9kYXlcIl0nICkuaHRtbChcclxuXHRcdFx0XHQnPHNwYW4gY2xhc3M9XCJ3cGJjX2FnX2hpbnRfYXZhaWxhYmxlXCI+JyArICQoICdbZGF0YS13cGJjLWFnLWhpbnQ9XCJib29raW5nX2F2YWlsYWJsZV9kYXlzX251bV9mcm9tX3RvZGF5XCJdIC53cGJjX2FnX2hpbnRfYXZhaWxhYmxlJyApLmZpcnN0KCkudGV4dCgpICsgJzwvc3Bhbj4nICtcclxuXHRcdFx0XHRoaW50cy5ib29raW5nX2F2YWlsYWJsZV9kYXlzX251bV9mcm9tX3RvZGF5X19oaW50XHJcblx0XHRcdCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiBzaG93X21lc3NhZ2UoIG1lc3NhZ2UsIHR5cGUsIGR1cmF0aW9uICkge1xyXG5cdFx0aWYgKCB0eXBlb2Ygdy53cGJjX2FkbWluX3Nob3dfbWVzc2FnZSA9PT0gJ2Z1bmN0aW9uJyApIHtcclxuXHRcdFx0dy53cGJjX2FkbWluX3Nob3dfbWVzc2FnZSggbWVzc2FnZSwgdHlwZSB8fCAnaW5mbycsIGR1cmF0aW9uIHx8IDIwMDAsIGZhbHNlICk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHR3LmFsZXJ0KCBtZXNzYWdlICk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiBzZXRfYnVzeSggJGJ1dHRvbiwgYnVzeSApIHtcclxuXHRcdHZhciBidXN5X3RleHQ7XHJcblxyXG5cdFx0aWYgKCAhICRidXR0b24gfHwgISAkYnV0dG9uLmxlbmd0aCApIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICggYnVzeSApIHtcclxuXHRcdFx0aWYgKCAhICRidXR0b24uZGF0YSggJ3dwYmMtYWctb3JpZ2luYWwtaHRtbCcgKSApIHtcclxuXHRcdFx0XHQkYnV0dG9uLmRhdGEoICd3cGJjLWFnLW9yaWdpbmFsLWh0bWwnLCAkYnV0dG9uLmh0bWwoKSApO1xyXG5cdFx0XHR9XHJcblx0XHRcdGJ1c3lfdGV4dCA9ICRidXR0b24uZGF0YSggJ3dwYmMtdS1idXN5LXRleHQnICkgfHwgKCBjZmcuaTE4biAmJiBjZmcuaTE4bi5zYXZpbmcgKSB8fCAnU2F2aW5nLi4uJztcclxuXHRcdFx0JGJ1dHRvbi5hZGRDbGFzcyggJ3dwYmNfYWdfaXNfc2F2aW5nJyApLmF0dHIoICdhcmlhLWJ1c3knLCAndHJ1ZScgKS5odG1sKCAnPGkgY2xhc3M9XCJtZW51X2ljb24gaWNvbi0xeCB3cGJjX2ljbl9yb3RhdGVfcmlnaHQgd3BiY19zcGluXCI+PC9pPjxzcGFuIGNsYXNzPVwiaW4tYnV0dG9uLXRleHRcIj4mbmJzcDsmbmJzcDsnICsgYnVzeV90ZXh0ICsgJzwvc3Bhbj4nICk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHQkYnV0dG9uLnJlbW92ZUNsYXNzKCAnd3BiY19hZ19pc19zYXZpbmcnICkucmVtb3ZlQXR0ciggJ2FyaWEtYnVzeScgKTtcclxuXHRcdFx0aWYgKCAkYnV0dG9uLmRhdGEoICd3cGJjLWFnLW9yaWdpbmFsLWh0bWwnICkgKSB7XHJcblx0XHRcdFx0JGJ1dHRvbi5odG1sKCAkYnV0dG9uLmRhdGEoICd3cGJjLWFnLW9yaWdpbmFsLWh0bWwnICkgKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0ZnVuY3Rpb24gcmVwbGFjZV9jYWxlbmRhcl9wYW5lbCggaHRtbCApIHtcclxuXHRcdHZhciAkaG9sZGVyID0gJCggJzxkaXYgLz4nICkuYXBwZW5kKCAkLnBhcnNlSFRNTCggaHRtbCwgZG9jdW1lbnQsIHRydWUgKSApO1xyXG5cdFx0dmFyICRuZXdfcGFuZWwgPSAkaG9sZGVyLmZpbmQoICdbZGF0YS13cGJjLWFnLWNhbGVuZGFyLXBhbmVsPVwiMVwiXScgKS5maXJzdCgpO1xyXG5cdFx0dmFyICRvbGRfcGFuZWwgPSAkKCAnW2RhdGEtd3BiYy1hZy1jYWxlbmRhci1wYW5lbD1cIjFcIl0nICkuZmlyc3QoKTtcclxuXHRcdHZhciAkc2NyaXB0cztcclxuXHJcblx0XHRpZiAoICEgJG5ld19wYW5lbC5sZW5ndGggfHwgISAkb2xkX3BhbmVsLmxlbmd0aCApIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdCRzY3JpcHRzID0gJG5ld19wYW5lbC5maW5kKCAnc2NyaXB0JyApLnJlbW92ZSgpO1xyXG5cdFx0JG9sZF9wYW5lbC5yZXBsYWNlV2l0aCggJG5ld19wYW5lbCApO1xyXG5cclxuXHRcdCRzY3JpcHRzLmVhY2goIGZ1bmN0aW9uICgpIHtcclxuXHRcdFx0dmFyIGNvZGUgPSB0aGlzLnRleHQgfHwgdGhpcy50ZXh0Q29udGVudCB8fCB0aGlzLmlubmVySFRNTCB8fCAnJztcclxuXHRcdFx0dmFyIHNyYyA9IHRoaXMuc3JjIHx8ICcnO1xyXG5cclxuXHRcdFx0aWYgKCBzcmMgKSB7XHJcblx0XHRcdFx0JC5hamF4KCB7XHJcblx0XHRcdFx0XHR1cmw6IHNyYyxcclxuXHRcdFx0XHRcdGRhdGFUeXBlOiAnc2NyaXB0JyxcclxuXHRcdFx0XHRcdGNhY2hlOiB0cnVlXHJcblx0XHRcdFx0fSApO1xyXG5cdFx0XHR9IGVsc2UgaWYgKCBjb2RlICkge1xyXG5cdFx0XHRcdCQuZ2xvYmFsRXZhbCggY29kZSApO1xyXG5cdFx0XHR9XHJcblx0XHR9ICk7XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiBzZXRfY2FsZW5kYXJfbG9hZGluZyggaXNfbG9hZGluZyApIHtcclxuXHRcdHZhciAkY2FsZW5kYXIgPSAkKCAnW2RhdGEtd3BiYy1hZy1jYWxlbmRhci1wYW5lbD1cIjFcIl0nICkuZmlyc3QoKTtcclxuXHRcdHZhciBsb2FkaW5nX3RleHQgPSBjZmcuaTE4biAmJiBjZmcuaTE4bi5sb2FkaW5nID8gY2ZnLmkxOG4ubG9hZGluZyA6ICdMb2FkaW5nJztcclxuXHRcdHZhciAkbG9hZGluZztcclxuXHJcblx0XHRpZiAoICEgJGNhbGVuZGFyLmxlbmd0aCApIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICggaXNfbG9hZGluZyApIHtcclxuXHRcdFx0JGxvYWRpbmcgPSAkY2FsZW5kYXIuZmluZCggJy53cGJjX2NhbGVuZGFyX2xvYWRpbmcnICkuZmlyc3QoKTtcclxuXHRcdFx0aWYgKCAhICRsb2FkaW5nLmxlbmd0aCApIHtcclxuXHRcdFx0XHQkbG9hZGluZyA9ICQoXHJcblx0XHRcdFx0XHQnPGRpdiBjbGFzcz1cIndwYmNfY2FsZW5kYXJfbG9hZGluZyB3cGJjX2FnX2NhbGVuZGFyX2xvYWRpbmdcIj4nICtcclxuXHRcdFx0XHRcdFx0JzxzcGFuIGNsYXNzPVwid3BiY19pY25fYXV0b3JlbmV3IHdwYmNfc3BpblwiPjwvc3Bhbj4mbmJzcDsmbmJzcDsnICtcclxuXHRcdFx0XHRcdFx0JzxzcGFuPjwvc3Bhbj4nICtcclxuXHRcdFx0XHRcdCc8L2Rpdj4nXHJcblx0XHRcdFx0KTtcclxuXHRcdFx0XHQkbG9hZGluZy5maW5kKCAnc3BhbicgKS5sYXN0KCkudGV4dCggbG9hZGluZ190ZXh0ICsgJy4uLicgKTtcclxuXHRcdFx0XHQkY2FsZW5kYXIuYXBwZW5kKCAkbG9hZGluZyApO1xyXG5cdFx0XHR9XHJcblx0XHRcdCRjYWxlbmRhci5hZGRDbGFzcyggJ2lzLWxvYWRpbmcnICkuYXR0ciggJ2FyaWEtYnVzeScsICd0cnVlJyApO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0JGNhbGVuZGFyLnJlbW92ZUNsYXNzKCAnaXMtbG9hZGluZycgKS5yZW1vdmVBdHRyKCAnYXJpYS1idXN5JyApO1xyXG5cdFx0XHQkY2FsZW5kYXIuZmluZCggJy53cGJjX2NhbGVuZGFyX2xvYWRpbmcnICkucmVtb3ZlKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiBnZXRfcHJldmlld19wYXlsb2FkKCkge1xyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0YWN0aW9uOiBjZmcucHJldmlld19hY3Rpb24gfHwgJ1dQQkNfQUpYX0FWQUlMQUJJTElUWV9HRU5FUkFMX1BSRVZJRVcnLFxyXG5cdFx0XHRub25jZTogY2ZnLm5vbmNlIHx8ICcnLFxyXG5cdFx0XHRyZXNvdXJjZV9pZDogJCggJyN3cGJjX2FnX3Jlc291cmNlX2lkJyApLnZhbCgpIHx8ICcnLFxyXG5cdFx0XHRtb250aHNfY291bnQ6ICQoICcjd3BiY19hZ19tb250aHNfY291bnQnICkudmFsKCkgfHwgJydcclxuXHRcdH07XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiBsb2FkX2NhbGVuZGFyX3ByZXZpZXcoKSB7XHJcblx0XHR2YXIgJGNhbGVuZGFyID0gJCggJ1tkYXRhLXdwYmMtYWctY2FsZW5kYXItcGFuZWw9XCIxXCJdJyApLmZpcnN0KCk7XHJcblx0XHR2YXIgY3VycmVudF9wcmV2aWV3X2FqYXg7XHJcblxyXG5cdFx0aWYgKCAhIGNmZy5hamF4X3VybCApIHtcclxuXHRcdFx0c2hvd19tZXNzYWdlKCAoIGNmZy5pMThuICYmIGNmZy5pMThuLnByZXZpZXdfZmFpbGVkICkgfHwgJ1VuYWJsZSB0byByZWZyZXNoIGNhbGVuZGFyIHByZXZpZXcuJywgJ2Vycm9yJywgMTAwMDAgKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICggcHJldmlld19hamF4ICYmIHByZXZpZXdfYWpheC5yZWFkeVN0YXRlICE9PSA0ICkge1xyXG5cdFx0XHRwcmV2aWV3X2FqYXguYWJvcnQoKTtcclxuXHRcdH1cclxuXHJcblx0XHRzZXRfY2FsZW5kYXJfbG9hZGluZyggdHJ1ZSApO1xyXG5cclxuXHRcdGN1cnJlbnRfcHJldmlld19hamF4ID0gJC5hamF4KCB7XHJcblx0XHRcdHVybDogY2ZnLmFqYXhfdXJsLFxyXG5cdFx0XHRtZXRob2Q6ICdQT1NUJyxcclxuXHRcdFx0ZGF0YVR5cGU6ICdqc29uJyxcclxuXHRcdFx0ZGF0YTogZ2V0X3ByZXZpZXdfcGF5bG9hZCgpXHJcblx0XHR9ICk7XHJcblx0XHRwcmV2aWV3X2FqYXggPSBjdXJyZW50X3ByZXZpZXdfYWpheDtcclxuXHJcblx0XHRjdXJyZW50X3ByZXZpZXdfYWpheC5kb25lKCBmdW5jdGlvbiAoIHJlc3BvbnNlICkge1xyXG5cdFx0XHRpZiAoICEgcmVzcG9uc2UgfHwgISByZXNwb25zZS5zdWNjZXNzIHx8ICEgcmVzcG9uc2UuZGF0YSB8fCAhIHJlc3BvbnNlLmRhdGEuaHRtbCApIHtcclxuXHRcdFx0XHRzaG93X21lc3NhZ2UoICggcmVzcG9uc2UgJiYgcmVzcG9uc2UuZGF0YSAmJiByZXNwb25zZS5kYXRhLm1lc3NhZ2UgKSB8fCAoIGNmZy5pMThuICYmIGNmZy5pMThuLnByZXZpZXdfZmFpbGVkICkgfHwgJ1VuYWJsZSB0byByZWZyZXNoIGNhbGVuZGFyIHByZXZpZXcuJywgJ2Vycm9yJywgMTAwMDAgKTtcclxuXHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdHJlcGxhY2VfY2FsZW5kYXJfcGFuZWwoIHJlc3BvbnNlLmRhdGEuaHRtbCApO1xyXG5cdFx0XHQkKCAnW2RhdGEtd3BiYy1hZy1wYWdlPVwiMVwiXScgKS5hdHRyKCAnZGF0YS13cGJjLWFnLXJlc291cmNlLWlkJywgcmVzcG9uc2UuZGF0YS5yZXNvdXJjZV9pZCB8fCAnJyApO1xyXG5cdFx0XHRvYnNlcnZlX2NhbGVuZGFyX2NoYW5nZXMoKTtcclxuXHRcdFx0c2NoZWR1bGVfcHJldmlld19yZWZyZXNoKCk7XHJcblx0XHRcdHNldFRpbWVvdXQoIHNjaGVkdWxlX3ByZXZpZXdfcmVmcmVzaCwgNjAwICk7XHJcblx0XHR9ICkuZmFpbCggZnVuY3Rpb24gKCBqcV94aHIsIHRleHRfc3RhdHVzICkge1xyXG5cdFx0XHRpZiAoIHRleHRfc3RhdHVzICE9PSAnYWJvcnQnICkge1xyXG5cdFx0XHRcdHNob3dfbWVzc2FnZSggKCBjZmcuaTE4biAmJiBjZmcuaTE4bi5wcmV2aWV3X2ZhaWxlZCApIHx8ICdVbmFibGUgdG8gcmVmcmVzaCBjYWxlbmRhciBwcmV2aWV3LicsICdlcnJvcicsIDEwMDAwICk7XHJcblx0XHRcdH1cclxuXHRcdH0gKS5hbHdheXMoIGZ1bmN0aW9uICgpIHtcclxuXHRcdFx0aWYgKCBwcmV2aWV3X2FqYXggPT09IGN1cnJlbnRfcHJldmlld19hamF4ICkge1xyXG5cdFx0XHRcdHNldF9jYWxlbmRhcl9sb2FkaW5nKCBmYWxzZSApO1xyXG5cdFx0XHR9XHJcblx0XHR9ICk7XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiBzYXZlX3NldHRpbmdzKCBidXR0b24gKSB7XHJcblx0XHR2YXIgJGJ1dHRvbiA9ICQoIGJ1dHRvbiApO1xyXG5cdFx0dmFyIHNldHRpbmdzID0gY29sbGVjdF9zZXR0aW5ncygpO1xyXG5cdFx0dmFyIHBheWxvYWQgPSAkLmV4dGVuZCgge30sIHNldHRpbmdzLCB7XHJcblx0XHRcdGFjdGlvbjogY2ZnLmFjdGlvbiB8fCAnV1BCQ19BSlhfQVZBSUxBQklMSVRZX0dFTkVSQUxfU0FWRScsXHJcblx0XHRcdG5vbmNlOiBjZmcubm9uY2UgfHwgJycsXHJcblx0XHRcdGJvb2tpbmdfdW5hdmFpbGFibGVfZGF5czogc2V0dGluZ3Mud2Vla2RheXNcclxuXHRcdH0gKTtcclxuXHJcblx0XHRhcHBlbmRfd29ya2luZ190aW1lX3BheWxvYWQoIHBheWxvYWQgKTtcclxuXHJcblx0XHRpZiAoICEgY2ZnLmFqYXhfdXJsICkge1xyXG5cdFx0XHRzaG93X21lc3NhZ2UoICggY2ZnLmkxOG4gJiYgY2ZnLmkxOG4uc2F2ZV9mYWlsZWQgKSB8fCAnVW5hYmxlIHRvIHNhdmUgZ2VuZXJhbCBhdmFpbGFiaWxpdHkgc2V0dGluZ3MuJywgJ2Vycm9yJywgMTAwMDAgKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdHNldF9idXN5KCAkYnV0dG9uLCB0cnVlICk7XHJcblxyXG5cdFx0JC5hamF4KCB7XHJcblx0XHRcdHVybDogY2ZnLmFqYXhfdXJsLFxyXG5cdFx0XHRtZXRob2Q6ICdQT1NUJyxcclxuXHRcdFx0ZGF0YVR5cGU6ICdqc29uJyxcclxuXHRcdFx0ZGF0YTogcGF5bG9hZFxyXG5cdFx0fSApLmRvbmUoIGZ1bmN0aW9uICggcmVzcG9uc2UgKSB7XHJcblx0XHRcdGlmICggISByZXNwb25zZSB8fCAhIHJlc3BvbnNlLnN1Y2Nlc3MgKSB7XHJcblx0XHRcdFx0c2hvd19tZXNzYWdlKCAoIHJlc3BvbnNlICYmIHJlc3BvbnNlLmRhdGEgJiYgcmVzcG9uc2UuZGF0YS5tZXNzYWdlICkgfHwgKCBjZmcuaTE4biAmJiBjZmcuaTE4bi5zYXZlX2ZhaWxlZCApIHx8ICdVbmFibGUgdG8gc2F2ZSBnZW5lcmFsIGF2YWlsYWJpbGl0eSBzZXR0aW5ncy4nLCAnZXJyb3InLCAxMDAwMCApO1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYgKCByZXNwb25zZS5kYXRhICYmIHJlc3BvbnNlLmRhdGEuc2V0dGluZ3MgJiYgcmVzcG9uc2UuZGF0YS5zZXR0aW5ncy5oaW50cyApIHtcclxuXHRcdFx0XHR1cGRhdGVfaGludHMoIHJlc3BvbnNlLmRhdGEuc2V0dGluZ3MuaGludHMgKTtcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoIHJlc3BvbnNlLmRhdGEgJiYgcmVzcG9uc2UuZGF0YS5zZXR0aW5ncyApIHtcclxuXHRcdFx0XHRjZmcuc2V0dGluZ3MgPSByZXNwb25zZS5kYXRhLnNldHRpbmdzO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRsb2FkX2NhbGVuZGFyX3ByZXZpZXcoKTtcclxuXHRcdFx0ZG9jdW1lbnQuZGlzcGF0Y2hFdmVudCggbmV3IEN1c3RvbUV2ZW50KCAnd3BiYzphdmFpbGFiaWxpdHktZ2VuZXJhbDpzZXR0aW5ncy1zYXZlZCcsIHtcclxuXHRcdFx0XHRkZXRhaWw6IHtcclxuXHRcdFx0XHRcdHNldHRpbmdzOiByZXNwb25zZS5kYXRhICYmIHJlc3BvbnNlLmRhdGEuc2V0dGluZ3MgPyByZXNwb25zZS5kYXRhLnNldHRpbmdzIDoge31cclxuXHRcdFx0XHR9XHJcblx0XHRcdH0gKSApO1xyXG5cdFx0XHRzaG93X21lc3NhZ2UoICggcmVzcG9uc2UuZGF0YSAmJiByZXNwb25zZS5kYXRhLm1lc3NhZ2UgKSB8fCAoIGNmZy5pMThuICYmIGNmZy5pMThuLnNhdmVkICkgfHwgJ0dlbmVyYWwgYXZhaWxhYmlsaXR5IHNldHRpbmdzIHVwZGF0ZWQuJywgJ3N1Y2Nlc3MnLCAyMDAwICk7XHJcblx0XHR9ICkuZmFpbCggZnVuY3Rpb24gKCkge1xyXG5cdFx0XHRzaG93X21lc3NhZ2UoICggY2ZnLmkxOG4gJiYgY2ZnLmkxOG4uc2F2ZV9mYWlsZWQgKSB8fCAnVW5hYmxlIHRvIHNhdmUgZ2VuZXJhbCBhdmFpbGFiaWxpdHkgc2V0dGluZ3MuJywgJ2Vycm9yJywgMTAwMDAgKTtcclxuXHRcdH0gKS5hbHdheXMoIGZ1bmN0aW9uICgpIHtcclxuXHRcdFx0c2V0X2J1c3koICRidXR0b24sIGZhbHNlICk7XHJcblx0XHR9ICk7XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiByZXNldF9zZXR0aW5ncyggYnV0dG9uICkge1xyXG5cdFx0dmFyIGNvbmZpcm1fbWVzc2FnZSA9ICggY2ZnLmkxOG4gJiYgY2ZnLmkxOG4ucmVzZXRfY29uZmlybSApIHx8ICdSZXNldCBnZW5lcmFsIGF2YWlsYWJpbGl0eSBzZXR0aW5ncyB0byBkZWZhdWx0IHZhbHVlcz8nO1xyXG5cdFx0dmFyIGRlZmF1bHRfc2V0dGluZ3MgPSBjZmcuZGVmYXVsdF9zZXR0aW5ncyB8fCB7XHJcblx0XHRcdHdlZWtkYXlzOiBbXSxcclxuXHRcdFx0Ym9va2luZ191bmF2YWlsYWJsZV9kYXlzX251bV9mcm9tX3RvZGF5OiAnMCcsXHJcblx0XHRcdGJvb2tpbmdfYXZhaWxhYmxlX2RheXNfbnVtX2Zyb21fdG9kYXk6ICcnLFxyXG5cdFx0XHRib29raW5nX3VuYXZhaWxhYmxlX2V4dHJhX2luX291dDogJycsXHJcblx0XHRcdGJvb2tpbmdfdW5hdmFpbGFibGVfZXh0cmFfbWludXRlc19pbjogJycsXHJcblx0XHRcdGJvb2tpbmdfdW5hdmFpbGFibGVfZXh0cmFfbWludXRlc19vdXQ6ICcnLFxyXG5cdFx0XHRib29raW5nX3VuYXZhaWxhYmxlX2V4dHJhX2RheXNfaW46ICcnLFxyXG5cdFx0XHRib29raW5nX3VuYXZhaWxhYmxlX2V4dHJhX2RheXNfb3V0OiAnJyxcclxuXHRcdFx0d29ya2luZ190aW1lOiB7fVxyXG5cdFx0fTtcclxuXHJcblx0XHRpZiAoICEgdy5jb25maXJtKCBjb25maXJtX21lc3NhZ2UgKSApIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdGFwcGx5X3NldHRpbmdzX3RvX2Zvcm0oIGRlZmF1bHRfc2V0dGluZ3MgKTtcclxuXHRcdGxvYWRfY2FsZW5kYXJfcHJldmlldygpO1xyXG5cdFx0c2hvd19tZXNzYWdlKCAoIGNmZy5pMThuICYmIGNmZy5pMThuLnJlc2V0X2FwcGxpZWQgKSB8fCAnRGVmYXVsdCBhdmFpbGFiaWxpdHkgc2V0dGluZ3MgYXJlIHJlYWR5IGZvciBwcmV2aWV3LiBDbGljayBTYXZlIENoYW5nZXMgdG8gYXBwbHkgdGhlbS4nLCAnc3VjY2VzcycsIDQwMDAgKTtcclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIG9ic2VydmVfY2FsZW5kYXJfY2hhbmdlcygpIHtcclxuXHRcdHZhciB0YXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCAnW2RhdGEtd3BiYy1hZy1jYWxlbmRhci1wYW5lbD1cIjFcIl0nICk7XHJcblxyXG5cdFx0aWYgKCAhIHRhcmdldCB8fCAhIHcuTXV0YXRpb25PYnNlcnZlciApIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICggb2JzZXJ2ZXIgKSB7XHJcblx0XHRcdG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcclxuXHRcdH1cclxuXHJcblx0XHRvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCBzY2hlZHVsZV9wcmV2aWV3X3JlZnJlc2ggKTtcclxuXHRcdG9ic2VydmVyLm9ic2VydmUoIHRhcmdldCwge1xyXG5cdFx0XHRjaGlsZExpc3Q6IHRydWUsXHJcblx0XHRcdHN1YnRyZWU6IHRydWVcclxuXHRcdH0gKTtcclxuXHR9XHJcblxyXG5cdCQoIGRvY3VtZW50ICkub24oICdjbGljaycsICcud3BiY19hZ19yaWdodGJhcl90YWJzIFtyb2xlPVwidGFiXCJdJywgZnVuY3Rpb24gKCkge1xyXG5cdFx0c3dpdGNoX3BhbmVsKCAkKCB0aGlzICkgKTtcclxuXHR9ICk7XHJcblxyXG5cdCQoIGRvY3VtZW50ICkub24oICdjbGljaycsICcud3BiY19hZ19yaWdodGJhcl9wYW5lbHMgLmdyb3VwX19oZWFkZXInLCBmdW5jdGlvbiAoKSB7XHJcblx0XHR0b2dnbGVfZ3JvdXAoICQoIHRoaXMgKSApO1xyXG5cdH0gKTtcclxuXHJcblx0JCggZG9jdW1lbnQgKS5vbiggJ3N1Ym1pdCcsICdbZGF0YS13cGJjLWFnLXByZXZpZXctdG9vbGJhcj1cIjFcIl0nLCBmdW5jdGlvbiAoIGV2ZW50ICkge1xyXG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHRcdGxvYWRfY2FsZW5kYXJfcHJldmlldygpO1xyXG5cdH0gKTtcclxuXHJcblx0JCggZG9jdW1lbnQgKS5vbiggJ2NoYW5nZScsICcjd3BiY19hZ19yZXNvdXJjZV9pZCwgI3dwYmNfYWdfbW9udGhzX2NvdW50JywgbG9hZF9jYWxlbmRhcl9wcmV2aWV3ICk7XHJcblxyXG5cdCQoIGRvY3VtZW50ICkub24oICdjaGFuZ2UnLCAnI3dwYmNfYWdfcmVzb3VyY2VfaWQnLCBmdW5jdGlvbiAoKSB7XHJcblx0XHRjZmcuc2V0dGluZ3MgPSBjZmcuc2V0dGluZ3MgfHwge307XHJcblx0XHRjZmcuc2V0dGluZ3Mud29ya2luZ190aW1lID0gZ2V0X3dvcmtpbmdfdGltZV9zZXR0aW5nc19mcm9tX2Zvcm0oKTtcclxuXHRcdGFwcGx5X3dvcmtpbmdfdGltZV9zZXR0aW5nc190b19mb3JtKCBjZmcuc2V0dGluZ3Mud29ya2luZ190aW1lLCAkKCB0aGlzICkudmFsKCkgKTtcclxuXHR9ICk7XHJcblxyXG5cdCQoIGRvY3VtZW50ICkub24oICdpbnB1dCBjaGFuZ2UnLCAnW2RhdGEtd3BiYy1hZy1yYW5nZS1mb3JdJywgZnVuY3Rpb24gKCkge1xyXG5cdFx0c3luY19zZWxlY3RfZnJvbV9yYW5nZSggdGhpcyApO1xyXG5cdFx0c2NoZWR1bGVfcHJldmlld19yZWZyZXNoKCk7XHJcblx0fSApO1xyXG5cclxuXHQkKCBkb2N1bWVudCApLm9uKCAnY2hhbmdlJywgJ1tkYXRhLXdwYmMtYWctc2V0dGluZ3MtZm9ybT1cIjFcIl0gc2VsZWN0JywgZnVuY3Rpb24gKCkge1xyXG5cdFx0c3luY19yYW5nZV9mcm9tX3NlbGVjdCggdGhpcyApO1xyXG5cdH0gKTtcclxuXHJcblx0JCggZG9jdW1lbnQgKS5vbiggJ2NsaWNrJywgJ1tkYXRhLXdwYmMtYWctc3RlcHBlcl0nLCBmdW5jdGlvbiAoKSB7XHJcblx0XHRzdGVwX3NlbGVjdF92YWx1ZSggdGhpcyApO1xyXG5cdH0gKTtcclxuXHJcblx0JCggZG9jdW1lbnQgKS5vbiggJ2NoYW5nZScsICdpbnB1dFtuYW1lPVwiYm9va2luZ191bmF2YWlsYWJsZV9leHRyYV9pbl9vdXRcIl0nLCBmdW5jdGlvbiAoKSB7XHJcblx0XHRyZWZyZXNoX2J1ZmZlcl9maWVsZHMoKTtcclxuXHRcdHNjaGVkdWxlX3ByZXZpZXdfcmVmcmVzaCgpO1xyXG5cdH0gKTtcclxuXHJcblx0JCggZG9jdW1lbnQgKS5vbiggJ2NoYW5nZScsICdpbnB1dFtuYW1lPVwiYm9va2luZ193b3JraW5nX3RpbWVfZW5hYmxlZFwiXScsIHJlZnJlc2hfd29ya2luZ190aW1lX3BhbmVscyApO1xyXG5cclxuXHQkKCBkb2N1bWVudCApLm9uKCAnY2hhbmdlJywgJ2lucHV0W25hbWU9XCJib29raW5nX3dvcmtpbmdfdGltZV9yZXNvdXJjZV9tb2RlXCJdJywgcmVmcmVzaF93b3JraW5nX3RpbWVfcGFuZWxzICk7XHJcblxyXG5cdCQoIGRvY3VtZW50ICkub24oICdjaGFuZ2UnLCAnW2RhdGEtd3BiYy1hZy1zZXR0aW5ncy1mb3JtPVwiMVwiXSBpbnB1dCwgW2RhdGEtd3BiYy1hZy1zZXR0aW5ncy1mb3JtPVwiMVwiXSBzZWxlY3QnLCBzY2hlZHVsZV9wcmV2aWV3X3JlZnJlc2ggKTtcclxuXHJcblx0JCggZG9jdW1lbnQgKS5vbiggJ3N1Ym1pdCcsICdbZGF0YS13cGJjLWFnLXNldHRpbmdzLWZvcm09XCIxXCJdJywgZnVuY3Rpb24gKCBldmVudCApIHtcclxuXHRcdGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblx0XHRzYXZlX3NldHRpbmdzKCAkKCAnW2RhdGEtd3BiYy1hZy1zYXZlPVwiMVwiXScgKS5maXJzdCgpICk7XHJcblx0fSApO1xyXG5cclxuXHQkKCBkb2N1bWVudCApLm9uKCAnY2xpY2snLCAnW2RhdGEtd3BiYy1hZy1zYXZlPVwiMVwiXScsIGZ1bmN0aW9uICgpIHtcclxuXHRcdHNhdmVfc2V0dGluZ3MoIHRoaXMgKTtcclxuXHR9ICk7XHJcblxyXG5cdCQoIGRvY3VtZW50ICkub24oICdjbGljaycsICdbZGF0YS13cGJjLWFnLXJlc2V0PVwiMVwiXScsIGZ1bmN0aW9uICgpIHtcclxuXHRcdHJlc2V0X3NldHRpbmdzKCB0aGlzICk7XHJcblx0fSApO1xyXG5cclxuXHQkKCBkb2N1bWVudCApLnJlYWR5KCBmdW5jdGlvbiAoKSB7XHJcblx0XHRhcHBseV93b3JraW5nX3RpbWVfc2V0dGluZ3NfdG9fZm9ybSggKCBjZmcuc2V0dGluZ3MgJiYgY2ZnLnNldHRpbmdzLndvcmtpbmdfdGltZSApIHx8ICggY2ZnLmRlZmF1bHRfc2V0dGluZ3MgJiYgY2ZnLmRlZmF1bHRfc2V0dGluZ3Mud29ya2luZ190aW1lICkgfHwge30sICQoICcjd3BiY19hZ19yZXNvdXJjZV9pZCcgKS52YWwoKSApO1xyXG5cdFx0YXBwbHlfb3Blbl9zZWN0aW9uX2Zyb21fdXJsKCk7XHJcblx0XHRyZWZyZXNoX2J1ZmZlcl9maWVsZHMoKTtcclxuXHRcdHN5bmNfYWxsX3JhbmdlcygpO1xyXG5cdFx0b2JzZXJ2ZV9jYWxlbmRhcl9jaGFuZ2VzKCk7XHJcblx0XHRzY2hlZHVsZV9wcmV2aWV3X3JlZnJlc2goKTtcclxuXHRcdHNldFRpbWVvdXQoIHNjaGVkdWxlX3ByZXZpZXdfcmVmcmVzaCwgNjAwICk7XHJcblx0fSApO1xyXG59KCBqUXVlcnksIHdpbmRvdyApICk7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBO0FBQ0E7QUFDRSxXQUFXQSxDQUFDLEVBQUVDLENBQUMsRUFBRztFQUNuQixZQUFZOztFQUVaLElBQUlDLEdBQUcsR0FBR0QsQ0FBQyxDQUFDRSw4QkFBOEIsSUFBSSxDQUFDLENBQUM7RUFDaEQsSUFBSUMsYUFBYSxHQUFHLENBQUM7RUFDckIsSUFBSUMsYUFBYSxHQUFHLENBQUM7RUFDckIsSUFBSUMsWUFBWSxHQUFHLElBQUk7RUFDdkIsSUFBSUMsUUFBUSxHQUFHLElBQUk7RUFDbkIsSUFBSUMsMkJBQTJCLEdBQUcsK1FBQStRO0VBRWpULFNBQVNDLFNBQVNBLENBQUVDLEtBQUssRUFBRztJQUMzQixPQUFPQyxNQUFNLENBQUVELEtBQUssSUFBSSxFQUFHLENBQUMsQ0FBQ0UsSUFBSSxDQUFDLENBQUM7RUFDcEM7RUFFQSxTQUFTQyxZQUFZQSxDQUFFQyxJQUFJLEVBQUc7SUFDN0IsSUFBSUMsUUFBUSxHQUFHRCxJQUFJLENBQUNFLElBQUksQ0FBRSxlQUFnQixDQUFDO0lBQzNDLElBQUlDLEtBQUssR0FBR0gsSUFBSSxDQUFDSSxPQUFPLENBQUUsd0JBQXlCLENBQUMsQ0FBQ0MsSUFBSSxDQUFFLGNBQWUsQ0FBQztJ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
1099 +//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5jbHVkZXMvcGFnZS1hdmFpbGFiaWxpdHktZ2VuZXJhbC9fb3V0L2F2YWlsYWJpbGl0eV9nZW5lcmFsX3BhZ2UuanMiLCJuYW1lcyI6WyIkIiwidyIsImNmZyIsIndwYmNfYXZhaWxhYmlsaXR5X2dlbmVyYWxfcGFnZSIsInByZXZpZXdfdGltZXIiLCJwcmV2aWV3X2ZyYW1lIiwicHJldmlld19hamF4Iiwib2JzZXJ2ZXIiLCJwcmV2aWV3X3VuYXZhaWxhYmxlX2NsYXNzZXMiLCJ0cmltX3RleHQiLCJ2YWx1ZSIsIlN0cmluZyIsInRyaW0iLCJzd2l0Y2hfcGFuZWwiLCIkdGFiIiwicGFuZWxfaWQiLCJhdHRyIiwiJHRhYnMiLCJjbG9zZXN0IiwiZmluZCIsIiRwYW5lbHMiLCJyZW1vdmVBdHRyIiwidG9nZ2xlX2dyb3VwIiwiJGJ1dHRvbiIsIiRncm91cCIsIiRmaWVsZHMiLCJpc19vcGVuIiwiaGFzQ2xhc3MiLCJ0b2dnbGVDbGFzcyIsInByb3AiLCJjbG9zZV9ncm91cCIsInJlbW92ZUNsYXNzIiwib3Blbl9ncm91cCIsImdyb3VwX25hbWUiLCJpc19leGNsdXNpdmUiLCJsZW5ndGgiLCJzaWJsaW5ncyIsImVhY2giLCJhZGRDbGFzcyIsInNjcm9sbF90b19ncm91cCIsIiRzY3JvbGxfcGFyZW50Iiwic2Nyb2xsX3BhcmVudF9lbCIsImdyb3VwX2VsIiwic2Nyb2xsX3RvcCIsInBhcmVudF9yZWN0IiwiZ3JvdXBfcmVjdCIsInBhcmVudHMiLCIkY2FuZGlkYXRlIiwib3ZlcmZsb3dfeSIsImNzcyIsInRlc3QiLCJzY3JvbGxIZWlnaHQiLCJjbGllbnRIZWlnaHQiLCJmaXJzdCIsImdldCIsInNjcm9sbEludG9WaWV3IiwiYmxvY2siLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJzY3JvbGxUb3AiLCJ0b3AiLCJzdG9wIiwiYW5pbWF0ZSIsIk1hdGgiLCJtYXgiLCJhcHBseV9vcGVuX3NlY3Rpb25fZnJvbV91cmwiLCJzZWN0aW9uX2dyb3VwcyIsIndlZWtkYXlzIiwiZnJvbV90b2RheSIsImJ1ZmZlciIsIndvcmtpbmdfdGltZSIsIm9wZW5fc2VjdGlvbiIsImluZGV4IiwiZGVsYXkiLCJzZXRUaW1lb3V0IiwicmVmcmVzaF9idWZmZXJfZmllbGRzIiwidmFsIiwiJHBhbmVsIiwiZGF0YSIsImlzX2J1ZmZlcl9hdmFpbGFibGUiLCJpc19hdmFpbGFibGVfbGltaXRfYXZhaWxhYmxlIiwic3luY19yYW5nZV9mcm9tX3NlbGVjdCIsInNlbGVjdCIsIiRzZWxlY3QiLCJuYW1lIiwic2VsZWN0ZWRfaW5kZXgiLCJzZWxlY3RlZF90ZXh0IiwidGV4dCIsIiRyYW5nZSIsIiR2YWx1ZSIsInN5bmNfc2VsZWN0X2Zyb21fcmFuZ2UiLCJyYW5nZSIsInBhcnNlSW50Iiwic3luY19hbGxfcmFuZ2VzIiwic3RlcF9zZWxlY3RfdmFsdWUiLCJidXR0b24iLCJzdGVwIiwiY3VycmVudF9pbmRleCIsIm5leHRfaW5kZXgiLCJtaW4iLCJ0cmlnZ2VyIiwiZ2V0X2Zvcm0iLCJjb2xsZWN0X3NldHRpbmdzIiwiJGZvcm0iLCJwdXNoIiwiYm9va2luZ191bmF2YWlsYWJsZV9kYXlzX251bV9mcm9tX3RvZGF5IiwiYm9va2luZ19hdmFpbGFibGVfZGF5c19udW1fZnJvbV90b2RheSIsImJvb2tpbmdfdW5hdmFpbGFibGVfZXh0cmFfaW5fb3V0IiwiYm9va2luZ191bmF2YWlsYWJsZV9leHRyYV9taW51dGVzX2luIiwiYm9va2luZ191bmF2YWlsYWJsZV9leHRyYV9taW51dGVzX291dCIsImJvb2tpbmdfdW5hdmFpbGFibGVfZXh0cmFfZGF5c19pbiIsImJvb2tpbmdfdW5hdmFpbGFibGVfZXh0cmFfZGF5c19vdXQiLCJnZXRfd29ya2luZ190aW1lX3NldHRpbmdzX2Zyb21fZm9ybSIsInNldF9zZWxlY3RfdmFsdWUiLCIkZmllbGQiLCJhcHBseV9zZXR0aW5nc190b19mb3JtIiwic2V0dGluZ3MiLCJkYXlfbnVtIiwiYXBwbHlfd29ya2luZ190aW1lX3NldHRpbmdzX3RvX2Zvcm0iLCJzY2hlZHVsZV9wcmV2aWV3X3JlZnJlc2giLCJkYXRlX2Zyb21fc3FsIiwic3FsX2RhdGUiLCJwYXJ0cyIsInNwbGl0IiwiRGF0ZSIsImdldF90b2RheV9kYXRlIiwiYXJyIiwiX3dwYmMiLCJnZXRfb3RoZXJfcGFyYW0iLCJub3ciLCJnZXRGdWxsWWVhciIsImdldE1vbnRoIiwiZ2V0RGF0ZSIsImdldF9yZWFsX3RvZGF5X2RhdGUiLCJkYXlzX2JldHdlZW4iLCJkYXRlX2EiLCJkYXRlX2IiLCJmbG9vciIsImdldFRpbWUiLCJhZGRfZGF5cyIsImRhdGUiLCJkYXlzIiwic2hpZnRlZF9kYXRlIiwic2V0RGF0ZSIsImRhdGVfdG9fc3FsIiwibW9udGgiLCJkYXkiLCJnZXRfc3FsX2RhdGVfZnJvbV9jZWxsIiwiY2VsbCIsImNsYXNzZXMiLCJjbGFzc05hbWUiLCJpIiwiaW5kZXhPZiIsInJlcGxhY2UiLCJ1bmF2YWlsYWJsZV9mcm9tX3RvZGF5X2FwcGxpZXMiLCJjZWxsX2RhdGUiLCJ0b2RheV9kYXRlIiwibWludXRlcyIsInVuYXZhaWxhYmxlX3VudGlsIiwiZ2V0X29wdGlvbl90ZXh0Iiwic2VsZWN0b3IiLCJnZXRfZGF5c192YWx1ZSIsInRpbWVfdG9fc2Vjb25kcyIsInRpbWUiLCJob3VycyIsIm1pbnMiLCJzZWNvbmRzX3RvX3RpbWUiLCJzZWNvbmRzIiwiZ2V0X21heF93b3JraW5nX3RpbWVfaW50ZXJ2YWxzIiwiJHdlZWtkYXlzIiwiY29uZmlndXJlZF9saW1pdCIsImxvY2FsaXplZF9saW1pdCIsIm1heF93b3JraW5nX3RpbWVfaW50ZXJ2YWxzIiwiY29sbGVjdF93b3JraW5nX3RpbWVfZGF5X2ludGVydmFscyIsIiRkYXlfcm93IiwiaW50ZXJ2YWxzIiwiJGludGVydmFsIiwic3RhcnRfc2Vjb25kIiwiZW5kX3NlY29uZCIsInJlaW5kZXhfd29ya2luZ190aW1lX2RheSIsInByZWZpeCIsImludGVydmFsX2luZGV4Iiwic3RhcnRfaWQiLCJlbmRfaWQiLCIkbGFiZWxzIiwiZXEiLCJyZWZyZXNoX3dvcmtpbmdfdGltZV9kYXkiLCIkdG9nZ2xlIiwiJHJlc291cmNlX2N1c3RvbSIsImlzX2Jsb2NrX2Rpc2FibGVkIiwiaXNfZGF5X2VuYWJsZWQiLCJpbnRlcnZhbF9jb3VudCIsIm1heF9pbnRlcnZhbHMiLCJmaW5kX3dvcmtpbmdfdGltZV9pbnRlcnZhbF9wcm9wb3NhbCIsInNvcnRlZF9pbnRlcnZhbHMiLCJzbGljZSIsInNvcnQiLCJmaXJzdF9pbnRlcnZhbCIsInNlY29uZF9pbnRlcnZhbCIsInByZWZlcnJlZF9zdGFydCIsImNhbmRpZGF0ZXMiLCJjYW5kaWRhdGVfc3RhcnQiLCJzb21lIiwicHJvcG9zZWRfc3RhcnQiLCJwcm9wb3NlZF9lbmQiLCJvdmVybGFwcyIsImludGVydmFsIiwiYXBwZW5kX3dvcmtpbmdfdGltZV9pbnRlcnZhbCIsIiRjb250YWluZXIiLCIkcHJvdG90eXBlIiwiY2xvbmUiLCJhcHBlbmQiLCJhZGRfd29ya2luZ190aW1lX2ludGVydmFsIiwicHJvcG9zYWwiLCJzaG93X21lc3NhZ2UiLCJpMThuIiwiaW50ZXJ2YWxfbGltaXQiLCJyZW1vdmVfd29ya2luZ190aW1lX2ludGVydmFsIiwiJGludGVydmFscyIsIiRmb2N1c190YXJnZXQiLCJyZW1vdmUiLCJjb2xsZWN0X3dvcmtpbmdfdGltZV93ZWVrZGF5cyIsIiRyb3ciLCJzZXRfd29ya2luZ190aW1lX3dlZWtkYXlzIiwiJHdyYXAiLCJpc0FycmF5IiwiZGlzcGxheV9pbnRlcnZhbHMiLCJlbXB0eSIsImZvckVhY2giLCJyZWZyZXNoX3dvcmtpbmdfdGltZV9wYW5lbHMiLCJpc19lbmFibGVkIiwibW9kZSIsInJlc291cmNlSWQiLCJ3b3JraW5nVGltZSIsImV4dGVuZCIsImRlZmF1bHRfc2V0dGluZ3MiLCJkZWZhdWx0IiwicmVzb3VyY2VzIiwiZW5hYmxlZCIsInJlc291cmNlU2V0dGluZ3MiLCJhcHBlbmRfd29ya2luZ190aW1lX3BheWxvYWQiLCJwYXlsb2FkIiwiZGVmYXVsdERheXMiLCJyZXNvdXJjZURheXMiLCJkZWZhdWx0U3RhcnQiLCJkZWZhdWx0RW5kIiwicmVzb3VyY2VTdGFydCIsInJlc291cmNlRW5kIiwiYm9va2luZ193b3JraW5nX3RpbWVfZW5hYmxlZCIsImJvb2tpbmdfd29ya2luZ190aW1lX3Jlc291cmNlX2lkIiwiYm9va2luZ193b3JraW5nX3RpbWVfcmVzb3VyY2VfbW9kZSIsImJvb2tpbmdfd29ya2luZ190aW1lX2RlZmF1bHRfZGF5cyIsImJvb2tpbmdfd29ya2luZ190aW1lX2RlZmF1bHRfc3RhcnQiLCJib29raW5nX3dvcmtpbmdfdGltZV9kZWZhdWx0X2VuZCIsImJvb2tpbmdfd29ya2luZ190aW1lX3Jlc291cmNlX2RheXMiLCJib29raW5nX3dvcmtpbmdfdGltZV9yZXNvdXJjZV9zdGFydCIsImJvb2tpbmdfd29ya2luZ190aW1lX3Jlc291cmNlX2VuZCIsInVwZGF0ZV93cGJjX3ByZXZpZXdfcGFyYW1zIiwic2V0X290aGVyX3BhcmFtIiwiY29uY2F0IiwidXBkYXRlX2J1ZmZlcl9wcmV2aWV3X25vdGUiLCIkbm90ZXMiLCIkY2FsZW5kYXIiLCIkbm90ZSIsInR5cGUiLCJiZWZvcmVfdGV4dCIsImFmdGVyX3RleHQiLCJtZXNzYWdlIiwiYnVmZmVyX3ByZXZpZXciLCJiZWZvcmVfYm9va2luZyIsImFmdGVyX2Jvb2tpbmciLCJodG1sIiwibm9fYnVmZmVyIiwiYXBwbHlfYnVmZmVyX2RheXNfcHJldmlldyIsImJlZm9yZV9kYXlzIiwiYWZ0ZXJfZGF5cyIsImRhdGVfY2VsbHMiLCJib29rZWRfZGF0ZXMiLCIkY2VsbCIsImJvb2tlZF9kYXRlIiwib2Zmc2V0IiwidGFyZ2V0X3NxbF9kYXRlIiwiJHRhcmdldF9jZWxsIiwicmVtZW1iZXJfcHJldmlld19vcmlnaW4iLCJjbGVhcl9wcmV2aWV3X2NlbGwiLCJoYWRfZGF0ZV91c2VyX3VuYXZhaWxhYmxlIiwiYXBwbHlfY2FsZW5kYXJfcHJldmlldyIsImF2YWlsYWJsZV9saW1pdCIsIm1ha2VfdW5hdmFpbGFibGUiLCJyZWFzb25fY2xhc3MiLCJwcmV2aW91c19yZWFzb24iLCJoYWRfZ2VuZXJhbF9wcmV2aWV3IiwiZ2V0RGF5IiwicXVldWVfcHJldmlld19yZWZyZXNoIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiY2xlYXJUaW1lb3V0IiwidXBkYXRlX2hpbnRzIiwiaGludHMiLCJib29raW5nX3VuYXZhaWxhYmxlX2RheXNfbnVtX2Zyb21fdG9kYXlfX2hpbnQiLCJib29raW5nX2F2YWlsYWJsZV9kYXlzX251bV9mcm9tX3RvZGF5X19oaW50IiwiZHVyYXRpb24iLCJ3cGJjX2FkbWluX3Nob3dfbWVzc2FnZSIsImFsZXJ0Iiwic2V0X2J1c3kiLCJidXN5IiwiYnVzeV90ZXh0Iiwic2F2aW5nIiwicmVwbGFjZV9jYWxlbmRhcl9wYW5lbCIsIiRob2xkZXIiLCJwYXJzZUhUTUwiLCJkb2N1bWVudCIsIiRuZXdfcGFuZWwiLCIkb2xkX3BhbmVsIiwiJHNjcmlwdHMiLCJyZXBsYWNlV2l0aCIsImNvZGUiLCJ0ZXh0Q29udGVudCIsImlubmVySFRNTCIsInNyYyIsImFqYXgiLCJ1cmwiLCJkYXRhVHlwZSIsImNhY2hlIiwiZ2xvYmFsRXZhbCIsInNldF9jYWxlbmRhcl9sb2FkaW5nIiwiaXNfbG9hZGluZyIsImxvYWRpbmdfdGV4dCIsImxvYWRpbmciLCIkbG9hZGluZyIsImxhc3QiLCJnZXRfcHJldmlld19wYXlsb2FkIiwiYWN0aW9uIiwicHJldmlld19hY3Rpb24iLCJub25jZSIsInJlc291cmNlX2lkIiwibW9udGhzX2NvdW50IiwibG9hZF9jYWxlbmRhcl9wcmV2aWV3IiwiY3VycmVudF9wcmV2aWV3X2FqYXgiLCJhamF4X3VybCIsInByZXZpZXdfZmFpbGVkIiwicmVhZHlTdGF0ZSIsImFib3J0IiwibWV0aG9kIiwiZG9uZSIsInJlc3BvbnNlIiwic3VjY2VzcyIsIm9ic2VydmVfY2FsZW5kYXJfY2hhbmdlcyIsImZhaWwiLCJqcV94aHIiLCJ0ZXh0X3N0YXR1cyIsImFsd2F5cyIsInNhdmVfc2V0dGluZ3MiLCJib29raW5nX3VuYXZhaWxhYmxlX2RheXMiLCJzYXZlX2ZhaWxlZCIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsImRldGFpbCIsInNhdmVkIiwicmVzcG9uc2VfbWVzc2FnZSIsInJlc3BvbnNlSlNPTiIsInJlc2V0X3NldHRpbmdzIiwiY29uZmlybV9tZXNzYWdlIiwicmVzZXRfY29uZmlybSIsImNvbmZpcm0iLCJyZXNldF9hcHBsaWVkIiwidGFyZ2V0IiwicXVlcnlTZWxlY3RvciIsIk11dGF0aW9uT2JzZXJ2ZXIiLCJkaXNjb25uZWN0Iiwib2JzZXJ2ZSIsImNoaWxkTGlzdCIsInN1YnRyZWUiLCJvbiIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJyZWFkeSIsImpRdWVyeSIsIndpbmRvdyJdLCJzb3VyY2VzIjpbImluY2x1ZGVzL3BhZ2UtYXZhaWxhYmlsaXR5LWdlbmVyYWwvX3NyYy9hdmFpbGFiaWxpdHlfZ2VuZXJhbF9wYWdlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBHZW5lcmFsIEF2YWlsYWJpbGl0eSBVSS5cclxuICovXHJcbiggZnVuY3Rpb24gKCAkLCB3ICkge1xyXG5cdCd1c2Ugc3RyaWN0JztcclxuXHJcblx0dmFyIGNmZyA9IHcud3BiY19hdmFpbGFiaWxpdHlfZ2VuZXJhbF9wYWdlIHx8IHt9O1xyXG5cdHZhciBwcmV2aWV3X3RpbWVyID0gMDtcclxuXHR2YXIgcHJldmlld19mcmFtZSA9IDA7XHJcblx0dmFyIHByZXZpZXdfYWpheCA9IG51bGw7XHJcblx0dmFyIG9ic2VydmVyID0gbnVsbDtcclxuXHR2YXIgcHJldmlld191bmF2YWlsYWJsZV9jbGFzc2VzID0gJ3dwYmNfYWdfcHJldmlld191bmF2YWlsYWJsZSB3cGJjX2FnX3ByZXZpZXdfd2Vla2RheV91bmF2YWlsYWJsZSB3cGJjX2FnX3ByZXZpZXdfZnJvbV90b2RheV91bmF2YWlsYWJsZSB3cGJjX2FnX3ByZXZpZXdfbGltaXRfYXZhaWxhYmxlX2Zyb21fdG9kYXkgd3BiY19hZ19wcmV2aWV3X2J1ZmZlcl91bmF2YWlsYWJsZSB3ZWVrZGF5X3VuYXZhaWxhYmxlIGZyb21fdG9kYXlfdW5hdmFpbGFibGUgbGltaXRfYXZhaWxhYmxlX2Zyb21fdG9kYXkgYnVmZmVyX3VuYXZhaWxhYmxlJztcclxuXHJcblx0ZnVuY3Rpb24gdHJpbV90ZXh0KCB2YWx1ZSApIHtcclxuXHRcdHJldHVybiBTdHJpbmcoIHZhbHVlIHx8ICcnICkudHJpbSgpO1xyXG5cdH1cclxuXHJcblx0ZnVuY3Rpb24gc3dpdGNoX3BhbmVsKCAkdGFiICkge1xyXG5cdFx0dmFyIHBhbmVsX2lkID0gJHRhYi5hdHRyKCAnYXJpYS1jb250cm9scycgKTtcclxuXHRcdHZhciAkdGFicyA9ICR0YWIuY2xvc2VzdCggJy53cGJjX2FnX3JpZ2h0YmFyX3RhYnMnICkuZmluZCggJ1tyb2xlPVwidGFiXCJdJyApO1xyXG5cdFx0dmFyICRwYW5lbHMgPSAkKCAnLndwYmNfYWdfcmlnaHRiYXJfcGFuZWxzIFtyb2xlPVwidGFicGFuZWxcIl0nICk7XHJcblxyXG5cdFx0JHRhYnMuYXR0ciggJ2FyaWEtc2VsZWN0ZWQnLCAnZmFsc2UnICk7XHJcblx0XHQkdGFiLmF0dHIoICdhcmlhLXNlbGVjdGVkJywgJ3RydWUnICk7XHJcblxyXG5cdFx0JHBhbmVscy5hdHRyKCAnaGlkZGVuJywgJ2hpZGRlbicgKS5hdHRyKCAnYXJpYS1oaWRkZW4nLCAndHJ1ZScgKTtcclxuXHRcdCQoICcjJyArIHBhbmVsX2lkICkucmVtb3ZlQXR0ciggJ2hpZGRlbicgKS5hdHRyKCAnYXJpYS1oaWRkZW4nLCAnZmFsc2UnICk7XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiB0b2dnbGVfZ3JvdXAoICRidXR0b24gKSB7XHJcblx0XHR2YXIgJGdyb3VwID0gJGJ1dHRvbi5jbG9zZXN0KCAnLndwYmNfdWlfX2NvbGxhcHNpYmxlX2dyb3VwJyApO1xyXG5cdFx0dmFyICRmaWVsZHMgPSAkZ3JvdXAuZmluZCggJz4gLmdyb3VwX19maWVsZHMnICk7XHJcblx0XHR2YXIgaXNfb3BlbiA9ICRncm91cC5oYXNDbGFzcyggJ2lzLW9wZW4nICk7XHJcblxyXG5cdFx0JGdyb3VwLnRvZ2dsZUNsYXNzKCAnaXMtb3BlbicsICEgaXNfb3BlbiApO1xyXG5cdFx0JGJ1dHRvbi5hdHRyKCAnYXJpYS1leHBhbmRlZCcsIGlzX29wZW4gPyAnZmFsc2UnIDogJ3RydWUnICk7XHJcblx0XHQkZmllbGRzLnByb3AoICdoaWRkZW4nLCBpc19vcGVuICkuYXR0ciggJ2FyaWEtaGlkZGVuJywgaXNfb3BlbiA/ICd0cnVlJyA6ICdmYWxzZScgKTtcclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIGNsb3NlX2dyb3VwKCAkZ3JvdXAgKSB7XHJcblx0XHR2YXIgJGJ1dHRvbiA9ICRncm91cC5maW5kKCAnPiAuZ3JvdXBfX2hlYWRlcicgKTtcclxuXHRcdHZhciAkZmllbGRzID0gJGdyb3VwLmZpbmQoICc+IC5ncm91cF9fZmllbGRzJyApO1xyXG5cclxuXHRcdCRncm91cC5yZW1vdmVDbGFzcyggJ2lzLW9wZW4nICk7XHJcblx0XHQkYnV0dG9uLmF0dHIoICdhcmlhLWV4cGFuZGVkJywgJ2ZhbHNlJyApO1xyXG5cdFx0JGZpZWxkcy5wcm9wKCAnaGlkZGVuJywgdHJ1ZSApLmF0dHIoICdhcmlhLWhpZGRlbicsICd0cnVlJyApO1xyXG5cdH1cclxuXHJcblx0ZnVuY3Rpb24gb3Blbl9ncm91cCggZ3JvdXBfbmFtZSwgaXNfZXhjbHVzaXZlICkge1xyXG5cdFx0dmFyICRncm91cCA9ICQoICcud3BiY191aV9fY29sbGFwc2libGVfZ3JvdXBbZGF0YS1ncm91cD1cIicgKyBncm91cF9uYW1lICsgJ1wiXScgKTtcclxuXHRcdHZhciAkYnV0dG9uID0gJGdyb3VwLmZpbmQoICc+IC5ncm91cF9faGVhZGVyJyApO1xyXG5cdFx0dmFyICRmaWVsZHMgPSAkZ3JvdXAuZmluZCggJz4gLmdyb3VwX19maWVsZHMnICk7XHJcblxyXG5cdFx0aWYgKCAhICRncm91cC5sZW5ndGggKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoIGlzX2V4Y2x1c2l2ZSApIHtcclxuXHRcdFx0JGdyb3VwLnNpYmxpbmdzKCAnLndwYmNfdWlfX2NvbGxhcHNpYmxlX2dyb3VwJyApLmVhY2goIGZ1bmN0aW9uICgpIHtcclxuXHRcdFx0XHRjbG9zZV9ncm91cCggJCggdGhpcyApICk7XHJcblx0XHRcdH0gKTtcclxuXHRcdH1cclxuXHJcblx0XHQkZ3JvdXAuYWRkQ2xhc3MoICdpcy1vcGVuJyApO1xyXG5cdFx0JGJ1dHRvbi5hdHRyKCAnYXJpYS1leHBhbmRlZCcsICd0cnVlJyApO1xyXG5cdFx0JGZpZWxkcy5wcm9wKCAnaGlkZGVuJywgZmFsc2UgKS5hdHRyKCAnYXJpYS1oaWRkZW4nLCAnZmFsc2UnICk7XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiBzY3JvbGxfdG9fZ3JvdXAoIGdyb3VwX25hbWUgKSB7XHJcblx0XHR2YXIgJGdyb3VwID0gJCggJy53cGJjX3VpX19jb2xsYXBzaWJsZV9ncm91cFtkYXRhLWdyb3VwPVwiJyArIGdyb3VwX25hbWUgKyAnXCJdJyApO1xyXG5cdFx0dmFyICRzY3JvbGxfcGFyZW50ID0gJCgpO1xyXG5cdFx0dmFyIHNjcm9sbF9wYXJlbnRfZWw7XHJcblx0XHR2YXIgZ3JvdXBfZWw7XHJcblx0XHR2YXIgc2Nyb2xsX3RvcDtcclxuXHRcdHZhciBwYXJlbnRfcmVjdDtcclxuXHRcdHZhciBncm91cF9yZWN0O1xyXG5cclxuXHRcdGlmICggISAkZ3JvdXAubGVuZ3RoICkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0JGdyb3VwLnBhcmVudHMoKS5lYWNoKCBmdW5jdGlvbiAoKSB7XHJcblx0XHRcdHZhciAkY2FuZGlkYXRlID0gJCggdGhpcyApO1xyXG5cdFx0XHR2YXIgb3ZlcmZsb3dfeSA9ICRjYW5kaWRhdGUuY3NzKCAnb3ZlcmZsb3cteScgKTtcclxuXHJcblx0XHRcdGlmIChcclxuXHRcdFx0XHQkY2FuZGlkYXRlLmhhc0NsYXNzKCAnc2ltcGxlYmFyLWNvbnRlbnQtd3JhcHBlcicgKVxyXG5cdFx0XHRcdHx8IChcclxuXHRcdFx0XHRcdC8oYXV0b3xzY3JvbGwpLy50ZXN0KCBvdmVyZmxvd195IClcclxuXHRcdFx0XHRcdCYmIHRoaXMuc2Nyb2xsSGVpZ2h0ID4gdGhpcy5jbGllbnRIZWlnaHRcclxuXHRcdFx0XHQpXHJcblx0XHRcdCkge1xyXG5cdFx0XHRcdCRzY3JvbGxfcGFyZW50ID0gJGNhbmRpZGF0ZTtcclxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHRcdH1cclxuXHRcdH0gKTtcclxuXHJcblx0XHRpZiAoICEgJHNjcm9sbF9wYXJlbnQubGVuZ3RoICkge1xyXG5cdFx0XHQkc2Nyb2xsX3BhcmVudCA9ICRncm91cC5jbG9zZXN0KCAnLndwYmNfdWlfZWxfX3ZlcnRfcmlnaHRfYmFyX19jb250ZW50JyApLmZpbmQoICcuc2ltcGxlYmFyLWNvbnRlbnQtd3JhcHBlcicgKS5maXJzdCgpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICggISAkc2Nyb2xsX3BhcmVudC5sZW5ndGggKSB7XHJcblx0XHRcdCRncm91cC5nZXQoIDAgKS5zY3JvbGxJbnRvVmlldyggeyBibG9jazogJ25lYXJlc3QnIH0gKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdHNjcm9sbF9wYXJlbnRfZWwgPSAkc2Nyb2xsX3BhcmVudC5nZXQoIDAgKTtcclxuXHRcdGdyb3VwX2VsICAgICAgICAgPSAkZ3JvdXAuZ2V0KCAwICk7XHJcblx0XHRwYXJlbnRfcmVjdCAgICAgID0gc2Nyb2xsX3BhcmVudF9lbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHRcdGdyb3VwX3JlY3QgICAgICAgPSBncm91cF9lbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuXHRcdHNjcm9sbF90b3AgICAgICAgPSAkc2Nyb2xsX3BhcmVudC5zY3JvbGxUb3AoKSArIGdyb3VwX3JlY3QudG9wIC0gcGFyZW50X3JlY3QudG9wIC0gMTA7XHJcblxyXG5cdFx0JHNjcm9sbF9wYXJlbnQuc3RvcCgpLmFuaW1hdGUoIHsgc2Nyb2xsVG9wOiBNYXRoLm1heCggMCwgc2Nyb2xsX3RvcCApIH0sIDE4MCApO1xyXG5cdH1cclxuXHJcblx0ZnVuY3Rpb24gYXBwbHlfb3Blbl9zZWN0aW9uX2Zyb21fdXJsKCkge1xyXG5cdFx0dmFyIHNlY3Rpb25fZ3JvdXBzID0ge1xyXG5cdFx0XHR3ZWVrZGF5czogJ2dlbmVyYWwtYXZhaWxhYmlsaXR5LXdlZWtkYXlzJyxcclxuXHRcdFx0ZnJvbV90b2RheTogJ2dlbmVyYWwtYXZhaWxhYmlsaXR5LWZyb20tdG9kYXknLFxyXG5cdFx0XHRidWZmZXI6ICdnZW5lcmFsLWF2YWlsYWJpbGl0eS1idWZmZXInLFxyXG5cdFx0XHR3b3JraW5nX3RpbWU6ICdnZW5lcmFsLWF2YWlsYWJpbGl0eS13b3JraW5nLXRpbWUnXHJcblx0XHR9O1xyXG5cdFx0dmFyIGdyb3VwX25hbWUgPSBzZWN0aW9uX2dyb3Vwc1sgY2ZnLm9wZW5fc2VjdGlvbiBdIHx8ICcnO1xyXG5cclxuXHRcdGlmICggJycgPT09IGdyb3VwX25hbWUgKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRvcGVuX2dyb3VwKCBncm91cF9uYW1lLCB0cnVlICk7XHJcblx0XHQkLmVhY2goIFsgMTIwLCA2NTAgXSwgZnVuY3Rpb24gKCBpbmRleCwgZGVsYXkgKSB7XHJcblx0XHRcdHNldFRpbWVvdXQoIGZ1bmN0aW9uICgpIHtcclxuXHRcdFx0XHRzY3JvbGxfdG9fZ3JvdXAoIGdyb3VwX25hbWUgKTtcclxuXHRcdFx0fSwgZGVsYXkgKTtcclxuXHRcdH0gKTtcclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIHJlZnJlc2hfYnVmZmVyX2ZpZWxkcygpIHtcclxuXHRcdHZhciB2YWx1ZSA9ICQoICdpbnB1dFtuYW1lPVwiYm9va2luZ191bmF2YWlsYWJsZV9leHRyYV9pbl9vdXRcIl06Y2hlY2tlZCcgKS52YWwoKSB8fCAnJztcclxuXHJcblx0XHQkKCAnLndwYmNfYWdfYnVmZmVyX2ZpZWxkcycgKS5lYWNoKCBmdW5jdGlvbiAoKSB7XHJcblx0XHRcdHZhciAkcGFuZWwgPSAkKCB0aGlzICk7XHJcblx0XHRcdCRwYW5lbC50b2dnbGVDbGFzcyggJ2lzLXZpc2libGUnLCAkcGFuZWwuZGF0YSggJ2J1ZmZlci1wYW5lbCcgKSA9PT0gdmFsdWUgKTtcclxuXHRcdH0gKTtcclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIGlzX2J1ZmZlcl9hdmFpbGFibGUoKSB7XHJcblx0XHRyZXR1cm4gISAoIGNmZy5pc19idWZmZXJfYXZhaWxhYmxlID09PSBmYWxzZSB8fCBjZmcuaXNfYnVmZmVyX2F2YWlsYWJsZSA9PT0gJ2ZhbHNlJyB8fCBjZmcuaXNfYnVmZmVyX2F2YWlsYWJsZSA9PT0gMCB8fCBjZmcuaXNfYnVmZmVyX2F2YWlsYWJsZSA9PT0gJzAnICk7XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiBpc19hdmFpbGFibGVfbGltaXRfYXZhaWxhYmxlKCkge1xyXG5cdFx0cmV0dXJuICEgKCBjZmcuaXNfYXZhaWxhYmxlX2xpbWl0X2F2YWlsYWJsZSA9PT0gZmFsc2UgfHwgY2ZnLmlzX2F2YWlsYWJsZV9saW1pdF9hdmFpbGFibGUgPT09ICdmYWxzZScgfHwgY2ZnLmlzX2F2YWlsYWJsZV9saW1pdF9hdmFpbGFibGUgPT09IDAgfHwgY2ZnLmlzX2F2YWlsYWJsZV9saW1pdF9hdmFpbGFibGUgPT09ICcwJyApO1xyXG5cdH1cclxuXHJcblx0ZnVuY3Rpb24gc3luY19yYW5nZV9mcm9tX3NlbGVjdCggc2VsZWN0ICkge1xyXG5cdFx0dmFyICRzZWxlY3QgPSAkKCBzZWxlY3QgKTtcclxuXHRcdHZhciBuYW1lID0gJHNlbGVjdC5hdHRyKCAnbmFtZScgKTtcclxuXHRcdHZhciBzZWxlY3RlZF9pbmRleCA9ICRzZWxlY3QucHJvcCggJ3NlbGVjdGVkSW5kZXgnICk7XHJcblx0XHR2YXIgc2VsZWN0ZWRfdGV4dCA9IHRyaW1fdGV4dCggJHNlbGVjdC5maW5kKCAnb3B0aW9uOnNlbGVjdGVkJyApLnRleHQoKSApO1xyXG5cdFx0dmFyICRyYW5nZSA9ICQoICdbZGF0YS13cGJjLWFnLXJhbmdlLWZvcj1cIicgKyBuYW1lICsgJ1wiXScgKTtcclxuXHRcdHZhciAkdmFsdWUgPSAkKCAnW2RhdGEtd3BiYy1hZy1yYW5nZS12YWx1ZS1mb3I9XCInICsgbmFtZSArICdcIl0nICk7XHJcblxyXG5cdFx0aWYgKCAhICRyYW5nZS5sZW5ndGggKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHQkcmFuZ2UudmFsKCBzZWxlY3RlZF9pbmRleCA8IDAgPyAwIDogc2VsZWN0ZWRfaW5kZXggKTtcclxuXHRcdCR2YWx1ZS50ZXh0KCBzZWxlY3RlZF90ZXh0ICk7XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiBzeW5jX3NlbGVjdF9mcm9tX3JhbmdlKCByYW5nZSApIHtcclxuXHRcdHZhciAkcmFuZ2UgPSAkKCByYW5nZSApO1xyXG5cdFx0dmFyIG5hbWUgPSAkcmFuZ2UuYXR0ciggJ2RhdGEtd3BiYy1hZy1yYW5nZS1mb3InICk7XHJcblx0XHR2YXIgJHNlbGVjdCA9ICQoICdbbmFtZT1cIicgKyBuYW1lICsgJ1wiXScgKTtcclxuXHRcdHZhciBpbmRleCA9IHBhcnNlSW50KCAkcmFuZ2UudmFsKCksIDEwICkgfHwgMDtcclxuXHJcblx0XHRpZiAoICEgJHNlbGVjdC5sZW5ndGggKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHQkc2VsZWN0LnByb3AoICdzZWxlY3RlZEluZGV4JywgaW5kZXggKTtcclxuXHRcdHN5bmNfcmFuZ2VfZnJvbV9zZWxlY3QoICRzZWxlY3QgKTtcclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIHN5bmNfYWxsX3JhbmdlcygpIHtcclxuXHRcdCQoICdbZGF0YS13cGJjLWFnLXJhbmdlLWZvcl0nICkuZWFjaCggZnVuY3Rpb24gKCkge1xyXG5cdFx0XHR2YXIgbmFtZSA9ICQoIHRoaXMgKS5hdHRyKCAnZGF0YS13cGJjLWFnLXJhbmdlLWZvcicgKTtcclxuXHRcdFx0c3luY19yYW5nZV9mcm9tX3NlbGVjdCggJCggJ1tuYW1lPVwiJyArIG5hbWUgKyAnXCJdJyApLmZpcnN0KCkgKTtcclxuXHRcdH0gKTtcclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIHN0ZXBfc2VsZWN0X3ZhbHVlKCBidXR0b24gKSB7XHJcblx0XHR2YXIgJGJ1dHRvbiA9ICQoIGJ1dHRvbiApO1xyXG5cdFx0dmFyIG5hbWUgPSAkYnV0dG9uLmF0dHIoICdkYXRhLXdwYmMtYWctc3RlcHBlcicgKTtcclxuXHRcdHZhciBzdGVwID0gcGFyc2VJbnQoICRidXR0b24uYXR0ciggJ2RhdGEtc3RlcCcgKSwgMTAgKSB8fCAwO1xyXG5cdFx0dmFyICRzZWxlY3QgPSAkKCAnW25hbWU9XCInICsgbmFtZSArICdcIl0nICkuZmlyc3QoKTtcclxuXHRcdHZhciBjdXJyZW50X2luZGV4O1xyXG5cdFx0dmFyIG5leHRfaW5kZXg7XHJcblxyXG5cdFx0aWYgKCAhICRzZWxlY3QubGVuZ3RoIHx8ICRzZWxlY3QucHJvcCggJ2Rpc2FibGVkJyApICkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0Y3VycmVudF9pbmRleCA9ICRzZWxlY3QucHJvcCggJ3NlbGVjdGVkSW5kZXgnICk7XHJcblx0XHRuZXh0X2luZGV4ID0gTWF0aC5tYXgoIDAsIE1hdGgubWluKCAkc2VsZWN0LmZpbmQoICdvcHRpb24nICkubGVuZ3RoIC0gMSwgY3VycmVudF9pbmRleCArIHN0ZXAgKSApO1xyXG5cclxuXHRcdGlmICggbmV4dF9pbmRleCA9PT0gY3VycmVudF9pbmRleCApIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdCRzZWxlY3QucHJvcCggJ3NlbGVjdGVkSW5kZXgnLCBuZXh0X2luZGV4ICkudHJpZ2dlciggJ2NoYW5nZScgKTtcclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIGdldF9mb3JtKCkge1xyXG5cdFx0cmV0dXJuICQoICdbZGF0YS13cGJjLWFnLXNldHRpbmdzLWZvcm09XCIxXCJdJyApLmZpcnN0KCk7XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiBjb2xsZWN0X3NldHRpbmdzKCkge1xyXG5cdFx0dmFyICRmb3JtID0gZ2V0X2Zvcm0oKTtcclxuXHRcdHZhciB3ZWVrZGF5cyA9IFtdO1xyXG5cclxuXHRcdCRmb3JtLmZpbmQoICdpbnB1dFtuYW1lPVwiYm9va2luZ191bmF2YWlsYWJsZV9kYXlzW11cIl06Y2hlY2tlZCcgKS5lYWNoKCBmdW5jdGlvbiAoKSB7XHJcblx0XHRcdHdlZWtkYXlzLnB1c2goIHBhcnNlSW50KCB0aGlzLnZhbHVlLCAxMCApICk7XHJcblx0XHR9ICk7XHJcblxyXG5cdFx0cmV0dXJuIHtcclxuXHRcdFx0d2Vla2RheXM6IHdlZWtkYXlzLFxyXG5cdFx0XHRib29raW5nX3VuYXZhaWxhYmxlX2RheXNfbnVtX2Zyb21fdG9kYXk6ICRmb3JtLmZpbmQoICdbbmFtZT1cImJvb2tpbmdfdW5hdmFpbGFibGVfZGF5c19udW1fZnJvbV90b2RheVwiXScgKS52YWwoKSB8fCAnMCcsXHJcblx0XHRcdGJvb2tpbmdfYXZhaWxhYmxlX2RheXNfbnVtX2Zyb21fdG9kYXk6ICRmb3JtLmZpbmQoICdbbmFtZT1cImJvb2tpbmdfYXZhaWxhYmxlX2RheXNfbnVtX2Zyb21fdG9kYXlcIl0nICkudmFsKCkgfHwgJycsXHJcblx0XHRcdGJvb2tpbmdfdW5hdmFpbGFibGVfZXh0cmFfaW5fb3V0OiAkZm9ybS5maW5kKCAnW25hbWU9XCJib29raW5nX3VuYXZhaWxhYmxlX2V4dHJhX2luX291dFwiXTpjaGVja2VkJyApLnZhbCgpIHx8ICcnLFxyXG5cdFx0XHRib29raW5nX3VuYXZhaWxhYmxlX2V4dHJhX21pbnV0ZXNfaW46ICRmb3JtLmZpbmQoICdbbmFtZT1cImJvb2tpbmdfdW5hdmFpbGFibGVfZXh0cmFfbWludXRlc19pblwiXScgKS52YWwoKSB8fCAnJyxcclxuXHRcdFx0Ym9va2luZ191bmF2YWlsYWJsZV9leHRyYV9taW51dGVzX291dDogJGZvcm0uZmluZCggJ1tuYW1lPVwiYm9va2luZ191bmF2YWlsYWJsZV9leHRyYV9taW51dGVzX291dFwiXScgKS52YWwoKSB8fCAnJyxcclxuXHRcdFx0Ym9va2luZ191bmF2YWlsYWJsZV9leHRyYV9kYXlzX2luOiAkZm9ybS5maW5kKCAnW25hbWU9XCJib29raW5nX3VuYXZhaWxhYmxlX2V4dHJhX2RheXNfaW5cIl0nICkudmFsKCkgfHwgJycsXHJcblx0XHRcdGJvb2tpbmdfdW5hdmFpbGFibGVfZXh0cmFfZGF5c19vdXQ6ICRmb3JtLmZpbmQoICdbbmFtZT1cImJvb2tpbmdfdW5hdmFpbGFibGVfZXh0cmFfZGF5c19vdXRcIl0nICkudmFsKCkgfHwgJycsXHJcblx0XHRcdHdvcmtpbmdfdGltZTogZ2V0X3dvcmtpbmdfdGltZV9zZXR0aW5nc19mcm9tX2Zvcm0oKVxyXG5cdFx0fTtcclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIHNldF9zZWxlY3RfdmFsdWUoIG5hbWUsIHZhbHVlICkge1xyXG5cdFx0dmFyICRmaWVsZCA9IGdldF9mb3JtKCkuZmluZCggJ1tuYW1lPVwiJyArIG5hbWUgKyAnXCJdJyApLmZpcnN0KCk7XHJcblxyXG5cdFx0aWYgKCAhICRmaWVsZC5sZW5ndGggKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHQkZmllbGQudmFsKCB2YWx1ZSApO1xyXG5cdFx0aWYgKCBTdHJpbmcoICRmaWVsZC52YWwoKSApICE9PSBTdHJpbmcoIHZhbHVlICkgKSB7XHJcblx0XHRcdCRmaWVsZC5wcm9wKCAnc2VsZWN0ZWRJbmRleCcsIDAgKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIGFwcGx5X3NldHRpbmdzX3RvX2Zvcm0oIHNldHRpbmdzICkge1xyXG5cdFx0dmFyICRmb3JtID0gZ2V0X2Zvcm0oKTtcclxuXHRcdHZhciB3ZWVrZGF5cyA9IHNldHRpbmdzICYmIHNldHRpbmdzLndlZWtkYXlzID8gc2V0dGluZ3Mud2Vla2RheXMgOiBbXTtcclxuXHJcblx0XHRpZiAoICEgJGZvcm0ubGVuZ3RoIHx8ICEgc2V0dGluZ3MgKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHQkZm9ybS5maW5kKCAnaW5wdXRbbmFtZT1cImJvb2tpbmdfdW5hdmFpbGFibGVfZGF5c1tdXCJdJyApLnByb3AoICdjaGVja2VkJywgZmFsc2UgKTtcclxuXHRcdCQuZWFjaCggd2Vla2RheXMsIGZ1bmN0aW9uICggaW5kZXgsIGRheV9udW0gKSB7XHJcblx0XHRcdCRmb3JtLmZpbmQoICdpbnB1dFtuYW1lPVwiYm9va2luZ191bmF2YWlsYWJsZV9kYXlzW11cIl1bdmFsdWU9XCInICsgcGFyc2VJbnQoIGRheV9udW0sIDEwICkgKyAnXCJdJyApLnByb3AoICdjaGVja2VkJywgdHJ1ZSApO1xyXG5cdFx0fSApO1xyXG5cclxuXHRcdHNldF9zZWxlY3RfdmFsdWUoICdib29raW5nX3VuYXZhaWxhYmxlX2RheXNfbnVtX2Zyb21fdG9kYXknLCBzZXR0aW5ncy5ib29raW5nX3VuYXZhaWxhYmxlX2RheXNfbnVtX2Zyb21fdG9kYXkgfHwgJzAnICk7XHJcblx0XHRzZXRfc2VsZWN0X3ZhbHVlKCAnYm9va2luZ19hdmFpbGFibGVfZGF5c19udW1fZnJvbV90b2RheScsIHNldHRpbmdzLmJvb2tpbmdfYXZhaWxhYmxlX2RheXNfbnVtX2Zyb21fdG9kYXkgfHwgJycgKTtcclxuXHRcdHNldF9zZWxlY3RfdmFsdWUoICdib29raW5nX3VuYXZhaWxhYmxlX2V4dHJhX21pbnV0ZXNfaW4nLCBzZXR0aW5ncy5ib29raW5nX3VuYXZhaWxhYmxlX2V4dHJhX21pbnV0ZXNfaW4gfHwgJycgKTtcclxuXHRcdHNldF9zZWxlY3RfdmFsdWUoICdib29raW5nX3VuYXZhaWxhYmxlX2V4dHJhX21pbnV0ZXNfb3V0Jywgc2V0dGluZ3MuYm9va2luZ191bmF2YWlsYWJsZV9leHRyYV9taW51dGVzX291dCB8fCAnJyApO1xyXG5cdFx0c2V0X3NlbGVjdF92YWx1ZSggJ2Jvb2tpbmdfdW5hdmFpbGFibGVfZXh0cmFfZGF5c19pbicsIHNldHRpbmdzLmJvb2tpbmdfdW5hdmFpbGFibGVfZXh0cmFfZGF5c19pbiB8fCAnJyApO1xyXG5cdFx0c2V0X3NlbGVjdF92YWx1ZSggJ2Jvb2tpbmdfdW5hdmFpbGFibGVfZXh0cmFfZGF5c19vdXQnLCBzZXR0aW5ncy5ib29raW5nX3VuYXZhaWxhYmxlX2V4dHJhX2RheXNfb3V0IHx8ICcnICk7XHJcblxyXG5cdFx0JGZvcm0uZmluZCggJ2lucHV0W25hbWU9XCJib29raW5nX3VuYXZhaWxhYmxlX2V4dHJhX2luX291dFwiXScgKS5wcm9wKCAnY2hlY2tlZCcsIGZhbHNlICk7XHJcblx0XHQkZm9ybS5maW5kKCAnaW5wdXRbbmFtZT1cImJvb2tpbmdfdW5hdmFpbGFibGVfZXh0cmFfaW5fb3V0XCJdW3ZhbHVlPVwiJyArICggc2V0dGluZ3MuYm9va2luZ191bmF2YWlsYWJsZV9leHRyYV9pbl9vdXQgfHwgJycgKSArICdcIl0nICkucHJvcCggJ2NoZWNrZWQnLCB0cnVlICk7XHJcblx0XHRhcHBseV93b3JraW5nX3RpbWVfc2V0dGluZ3NfdG9fZm9ybSggc2V0dGluZ3Mud29ya2luZ190aW1lIHx8IHt9LCAkKCAnI3dwYmNfYWdfcmVzb3VyY2VfaWQnICkudmFsKCkgKTtcclxuXHJcblx0XHRyZWZyZXNoX2J1ZmZlcl9maWVsZHMoKTtcclxuXHRcdHN5bmNfYWxsX3JhbmdlcygpO1xyXG5cdFx0c2NoZWR1bGVfcHJldmlld19yZWZyZXNoKCk7XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiBkYXRlX2Zyb21fc3FsKCBzcWxfZGF0ZSApIHtcclxuXHRcdHZhciBwYXJ0cyA9IFN0cmluZyggc3FsX2RhdGUgfHwgJycgKS5zcGxpdCggJy0nICk7XHJcblx0XHRpZiAoIHBhcnRzLmxlbmd0aCAhPT0gMyApIHtcclxuXHRcdFx0cmV0dXJuIG51bGw7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gbmV3IERhdGUoIHBhcnNlSW50KCBwYXJ0c1swXSwgMTAgKSwgcGFyc2VJbnQoIHBhcnRzWzFdLCAxMCApIC0gMSwgcGFyc2VJbnQoIHBhcnRzWzJdLCAxMCApLCAwLCAwLCAwICk7XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiBnZXRfdG9kYXlfZGF0ZSgpIHtcclxuXHRcdHZhciBhcnIgPSB3Ll93cGJjICYmIHR5cGVvZiB3Ll93cGJjLmdldF9vdGhlcl9wYXJhbSA9PT0gJ2Z1bmN0aW9uJyA/IHcuX3dwYmMuZ2V0X290aGVyX3BhcmFtKCAndG9kYXlfYXJyJyApIDogbnVsbDtcclxuXHRcdGlmICggYXJyICYmIGFyci5sZW5ndGggPj0gMyApIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBEYXRlKCBwYXJzZUludCggYXJyWzBdLCAxMCApLCBwYXJzZUludCggYXJyWzFdLCAxMCApIC0gMSwgcGFyc2VJbnQoIGFyclsyXSwgMTAgKSwgMCwgMCwgMCApO1xyXG5cdFx0fVxyXG5cdFx0dmFyIG5vdyA9IG5ldyBEYXRlKCk7XHJcblx0XHRyZXR1cm4gbmV3IERhdGUoIG5vdy5nZXRGdWxsWWVhcigpLCBub3cuZ2V0TW9udGgoKSwgbm93LmdldERhdGUoKSwgMCwgMCwgMCApO1xyXG5cdH1cclxuXHJcblx0ZnVuY3Rpb24gZ2V0X3JlYWxfdG9kYXlfZGF0ZSgpIHtcclxuXHRcdHZhciBhcnIgPSB3Ll93cGJjICYmIHR5cGVvZiB3Ll93cGJjLmdldF9vdGhlcl9wYXJhbSA9PT0gJ2Z1bmN0aW9uJyA/IHcuX3dwYmMuZ2V0X290aGVyX3BhcmFtKCAndGltZV9sb2NhbF9hcnInICkgOiBudWxsO1xyXG5cdFx0aWYgKCBhcnIgJiYgYXJyLmxlbmd0aCA+PSAzICkge1xyXG5cdFx0XHRyZXR1cm4gbmV3IERhdGUoIHBhcnNlSW50KCBhcnJbMF0sIDEwICksIHBhcnNlSW50KCBhcnJbMV0sIDEwICkgLSAxLCBwYXJzZUludCggYXJyWzJdLCAxMCApLCAwLCAwLCAwICk7XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gZ2V0X3RvZGF5X2RhdGUoKTtcclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIGRheXNfYmV0d2VlbiggZGF0ZV9hLCBkYXRlX2IgKSB7XHJcblx0XHRyZXR1cm4gTWF0aC5mbG9vciggKCBkYXRlX2EuZ2V0VGltZSgpIC0gZGF0ZV9iLmdldFRpbWUoKSApIC8gODY0MDAwMDAgKTtcclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIGFkZF9kYXlzKCBkYXRlLCBkYXlzICkge1xyXG5cdFx0dmFyIHNoaWZ0ZWRfZGF0ZSA9IG5ldyBEYXRlKCBkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCksIDAsIDAsIDAgKTtcclxuXHRcdHNoaWZ0ZWRfZGF0ZS5zZXREYXRlKCBzaGlmdGVkX2RhdGUuZ2V0RGF0ZSgpICsgZGF5cyApO1xyXG5cdFx0cmV0dXJuIHNoaWZ0ZWRfZGF0ZTtcclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIGRhdGVfdG9fc3FsKCBkYXRlICkge1xyXG5cdFx0dmFyIG1vbnRoID0gU3RyaW5nKCBkYXRlLmdldE1vbnRoKCkgKyAxICk7XHJcblx0XHR2YXIgZGF5ID0gU3RyaW5nKCBkYXRlLmdldERhdGUoKSApO1xyXG5cclxuXHRcdGlmICggbW9udGgubGVuZ3RoIDwgMiApIHtcclxuXHRcdFx0bW9udGggPSAnMCcgKyBtb250aDtcclxuXHRcdH1cclxuXHRcdGlmICggZGF5Lmxlbmd0aCA8IDIgKSB7XHJcblx0XHRcdGRheSA9ICcwJyArIGRheTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gZGF0ZS5nZXRGdWxsWWVhcigpICsgJy0nICsgbW9udGggKyAnLScgKyBkYXk7XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiBnZXRfc3FsX2RhdGVfZnJvbV9jZWxsKCBjZWxsICkge1xyXG5cdFx0dmFyIGNsYXNzZXMgPSBTdHJpbmcoIGNlbGwuY2xhc3NOYW1lIHx8ICcnICkuc3BsaXQoIC9cXHMrLyApO1xyXG5cdFx0dmFyIGk7XHJcblx0XHRmb3IgKCBpID0gMDsgaSA8IGNsYXNzZXMubGVuZ3RoOyBpKysgKSB7XHJcblx0XHRcdGlmICggY2xhc3Nlc1tpXS5pbmRleE9mKCAnc3FsX2RhdGVfJyApID09PSAwICkge1xyXG5cdFx0XHRcdHJldHVybiBjbGFzc2VzW2ldLnJlcGxhY2UoICdzcWxfZGF0ZV8nLCAnJyApO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRyZXR1cm4gJyc7XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiB1bmF2YWlsYWJsZV9mcm9tX3RvZGF5X2FwcGxpZXMoIGNlbGxfZGF0ZSwgdG9kYXlfZGF0ZSwgdmFsdWUgKSB7XHJcblx0XHR2YXIgbWludXRlcztcclxuXHRcdHZhciBub3c7XHJcblx0XHR2YXIgdW5hdmFpbGFibGVfdW50aWw7XHJcblxyXG5cdFx0aWYgKCAhIHZhbHVlIHx8IHZhbHVlID09PSAnMCcgKSB7XHJcblx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoIC9tJC8udGVzdCggdmFsdWUgKSApIHtcclxuXHRcdFx0bWludXRlcyA9IHBhcnNlSW50KCB2YWx1ZSwgMTAgKTtcclxuXHRcdFx0aWYgKCAhIG1pbnV0ZXMgKSB7XHJcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0XHR9XHJcblx0XHRcdG5vdyA9IG5ldyBEYXRlKCk7XHJcblx0XHRcdHVuYXZhaWxhYmxlX3VudGlsID0gbmV3IERhdGUoIG5vdy5nZXRUaW1lKCkgKyAoICggbWludXRlcyAtIDEgKSAqIDYwMDAwICkgKTtcclxuXHRcdFx0dW5hdmFpbGFibGVfdW50aWwgPSBuZXcgRGF0ZSggdW5hdmFpbGFibGVfdW50aWwuZ2V0RnVsbFllYXIoKSwgdW5hdmFpbGFibGVfdW50aWwuZ2V0TW9udGgoKSwgdW5hdmFpbGFibGVfdW50aWwuZ2V0RGF0ZSgpLCAwLCAwLCAwICk7XHJcblx0XHRcdHJldHVybiBjZWxsX2RhdGUuZ2V0VGltZSgpIDw9IHVuYXZhaWxhYmxlX3VudGlsLmdldFRpbWUoKTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gZGF5c19iZXR3ZWVuKCBjZWxsX2RhdGUsIHRvZGF5X2RhdGUgKSA8IHBhcnNlSW50KCB2YWx1ZSwgMTAgKTtcclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIGdldF9vcHRpb25fdGV4dCggc2VsZWN0b3IgKSB7XHJcblx0XHR2YXIgdGV4dCA9ICQoIHNlbGVjdG9yICkuZmluZCggJ29wdGlvbjpzZWxlY3RlZCcgKS50ZXh0KCk7XHJcblx0XHRyZXR1cm4gdHJpbV90ZXh0KCB0ZXh0ICk7XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiBnZXRfZGF5c192YWx1ZSggdmFsdWUgKSB7XHJcblx0XHRpZiAoICEgdmFsdWUgfHwgISAvZCQvLnRlc3QoIHZhbHVlICkgKSB7XHJcblx0XHRcdHJldHVybiAwO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIHBhcnNlSW50KCB2YWx1ZSwgMTAgKSB8fCAwO1xyXG5cdH1cclxuXHJcblx0ZnVuY3Rpb24gdGltZV90b19zZWNvbmRzKCB0aW1lICkge1xyXG5cdFx0dmFyIHBhcnRzID0gU3RyaW5nKCB0aW1lIHx8ICcnICkuc3BsaXQoICc6JyApO1xyXG5cdFx0dmFyIGhvdXJzO1xyXG5cdFx0dmFyIG1pbnM7XHJcblxyXG5cdFx0aWYgKCBwYXJ0cy5sZW5ndGggPCAyICkge1xyXG5cdFx0XHRyZXR1cm4gMDtcclxuXHRcdH1cclxuXHJcblx0XHRob3VycyA9IE1hdGgubWF4KCAwLCBNYXRoLm1pbiggMjQsIHBhcnNlSW50KCBwYXJ0c1swXSwgMTAgKSB8fCAwICkgKTtcclxuXHRcdG1pbnMgPSBob3VycyA9PT0gMjQgPyAwIDogTWF0aC5tYXgoIDAsIE1hdGgubWluKCA1OSwgcGFyc2VJbnQoIHBhcnRzWzFdLCAxMCApIHx8IDAgKSApO1xyXG5cclxuXHRcdHJldHVybiBNYXRoLm1pbiggODY0MDAsICggaG91cnMgKiAzNjAwICkgKyAoIG1pbnMgKiA2MCApICk7XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiBzZWNvbmRzX3RvX3RpbWUoIHNlY29uZHMgKSB7XG5cdFx0dmFyIGhvdXJzO1xyXG5cdFx0dmFyIG1pbnM7XHJcblxyXG5cdFx0c2Vjb25kcyA9IE1hdGgubWF4KCAwLCBNYXRoLm1pbiggODY0MDAsIHBhcnNlSW50KCBzZWNvbmRzLCAxMCApIHx8IDAgKSApO1xyXG5cdFx0aG91cnMgPSBNYXRoLmZsb29yKCBzZWNvbmRzIC8gMzYwMCApO1xyXG5cdFx0bWlucyA9IE1hdGguZmxvb3IoICggc2Vjb25kcyAlIDM2MDAgKSAvIDYwICk7XHJcblxyXG5cdFx0cmV0dXJuICggaG91cnMgPCAxMCA/ICcwJyA6ICcnICkgKyBob3VycyArICc6JyArICggbWlucyA8IDEwID8gJzAnIDogJycgKSArIG1pbnM7XG5cdH1cblxuXHQvKipcblx0ICogUmV0dXJuIHRoZSBib3VuZGVkIGludGVydmFsIGxpbWl0IGZvciBvbmUgV29ya2luZyBUaW1lIGVkaXRvci5cblx0ICpcblx0ICogQHBhcmFtIHtqUXVlcnl9ICR3ZWVrZGF5cyBXb3JraW5nIFRpbWUgd2Vla2RheSB3cmFwcGVyLlxuXHQgKiBAcmV0dXJuIHtudW1iZXJ9IE1heGltdW0gaW50ZXJ2YWxzIHBlciB3ZWVrZGF5LlxuXHQgKi9cblx0ZnVuY3Rpb24gZ2V0X21heF93b3JraW5nX3RpbWVfaW50ZXJ2YWxzKCAkd2Vla2RheXMgKSB7XG5cdFx0dmFyIGNvbmZpZ3VyZWRfbGltaXQgPSBwYXJzZUludCggJHdlZWtkYXlzLmF0dHIoICdkYXRhLW1heC1pbnRlcnZhbHMnICksIDEwICk7XG5cdFx0dmFyIGxvY2FsaXplZF9saW1pdCA9IHBhcnNlSW50KCBjZmcubWF4X3dvcmtpbmdfdGltZV9pbnRlcnZhbHMsIDEwICk7XG5cblx0XHRyZXR1cm4gTWF0aC5tYXgoIDEsIE1hdGgubWluKCA0OCwgY29uZmlndXJlZF9saW1pdCB8fCBsb2NhbGl6ZWRfbGltaXQgfHwgOCApICk7XG5cdH1cblxuXHQvKipcblx0ICogUmVhZCBhbGwgdmlzaWJsZSBpbnRlcnZhbCBjb250cm9scyBmb3Igb25lIHdlZWtkYXkuXG5cdCAqXG5cdCAqIEBwYXJhbSB7alF1ZXJ5fSAkZGF5X3JvdyBXZWVrZGF5IHJvdy5cblx0ICogQHJldHVybiB7T2JqZWN0W119IENhbm9uaWNhbCBpbnRlcnZhbCByZWNvcmRzLlxuXHQgKi9cblx0ZnVuY3Rpb24gY29sbGVjdF93b3JraW5nX3RpbWVfZGF5X2ludGVydmFscyggJGRheV9yb3cgKSB7XG5cdFx0dmFyIGludGVydmFscyA9IFtdO1xuXG5cdFx0JGRheV9yb3cuZmluZCggJ1tkYXRhLXdwYmMtd29ya2luZy10aW1lLWludGVydmFsPVwiMVwiXScgKS5lYWNoKCBmdW5jdGlvbiAoKSB7XG5cdFx0XHR2YXIgJGludGVydmFsID0gJCggdGhpcyApO1xuXG5cdFx0XHRpbnRlcnZhbHMucHVzaCgge1xuXHRcdFx0XHRzdGFydF9zZWNvbmQ6IHRpbWVfdG9fc2Vjb25kcyggJGludGVydmFsLmZpbmQoICcud3BiY19hZ193b3JraW5nX3RpbWVfc3RhcnQnICkudmFsKCkgKSxcblx0XHRcdFx0ZW5kX3NlY29uZDogdGltZV90b19zZWNvbmRzKCAkaW50ZXJ2YWwuZmluZCggJy53cGJjX2FnX3dvcmtpbmdfdGltZV9lbmQnICkudmFsKCkgKVxuXHRcdFx0fSApO1xuXHRcdH0gKTtcblxuXHRcdHJldHVybiBpbnRlcnZhbHM7XG5cdH1cblxuXHQvKipcblx0ICogUmVidWlsZCBkeW5hbWljIG5hbWVzLCBJRHMsIGFuZCBsYWJlbCBhc3NvY2lhdGlvbnMgYWZ0ZXIgYSByb3cgbXV0YXRpb24uXG5cdCAqXG5cdCAqIEBwYXJhbSB7alF1ZXJ5fSAkZGF5X3JvdyBXZWVrZGF5IHJvdy5cblx0ICogQHJldHVybiB7dm9pZH1cblx0ICovXG5cdGZ1bmN0aW9uIHJlaW5kZXhfd29ya2luZ190aW1lX2RheSggJGRheV9yb3cgKSB7XG5cdFx0dmFyICR3ZWVrZGF5cyA9ICRkYXlfcm93LmNsb3Nlc3QoICdbZGF0YS13cGJjLXdvcmtpbmctdGltZS13ZWVrZGF5c10nICk7XG5cdFx0dmFyIHByZWZpeCA9IFN0cmluZyggJHdlZWtkYXlzLmF0dHIoICdkYXRhLXdwYmMtd29ya2luZy10aW1lLXdlZWtkYXlzJyApIHx8ICcnICk7XG5cdFx0dmFyIGRheSA9IHBhcnNlSW50KCAkZGF5X3Jvdy5hdHRyKCAnZGF0YS13cGJjLXdvcmtpbmctdGltZS1kYXknICksIDEwICk7XG5cblx0XHQkZGF5X3Jvdy5maW5kKCAnW2RhdGEtd3BiYy13b3JraW5nLXRpbWUtaW50ZXJ2YWw9XCIxXCJdJyApLmVhY2goIGZ1bmN0aW9uICggaW50ZXJ2YWxfaW5kZXggKSB7XG5cdFx0XHR2YXIgJGludGVydmFsID0gJCggdGhpcyApO1xuXHRcdFx0dmFyIHN0YXJ0X2lkID0gcHJlZml4ICsgJ19zdGFydF8nICsgZGF5ICsgJ18nICsgaW50ZXJ2YWxfaW5kZXg7XG5cdFx0XHR2YXIgZW5kX2lkID0gcHJlZml4ICsgJ19lbmRfJyArIGRheSArICdfJyArIGludGVydmFsX2luZGV4O1xuXHRcdFx0dmFyICRsYWJlbHMgPSAkaW50ZXJ2YWwuZmluZCggJ2xhYmVsJyApO1xuXG5cdFx0XHQkaW50ZXJ2YWwuYXR0ciggJ2RhdGEtaW50ZXJ2YWwtaW5kZXgnLCBpbnRlcnZhbF9pbmRleCApO1xuXHRcdFx0JGludGVydmFsLmZpbmQoICcud3BiY19hZ193b3JraW5nX3RpbWVfc3RhcnQnIClcblx0XHRcdFx0LmF0dHIoICdpZCcsIHN0YXJ0X2lkIClcblx0XHRcdFx0LmF0dHIoICduYW1lJywgcHJlZml4ICsgJ19zdGFydFsnICsgZGF5ICsgJ11bXScgKTtcblx0XHRcdCRpbnRlcnZhbC5maW5kKCAnLndwYmNfYWdfd29ya2luZ190aW1lX2VuZCcgKVxuXHRcdFx0XHQuYXR0ciggJ2lkJywgZW5kX2lkIClcblx0XHRcdFx0LmF0dHIoICduYW1lJywgcHJlZml4ICsgJ19lbmRbJyArIGRheSArICddW10nICk7XG5cdFx0XHQkbGFiZWxzLmVxKCAwICkuYXR0ciggJ2ZvcicsIHN0YXJ0X2lkICk7XG5cdFx0XHQkbGFiZWxzLmVxKCAxICkuYXR0ciggJ2ZvcicsIGVuZF9pZCApO1xuXHRcdH0gKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBSZWZyZXNoIG9uZSB3ZWVrZGF5J3MgZW5hYmxlZCBjb250cm9scyBhbmQgaW50ZXJ2YWwtbGltaXQgc3RhdGUuXG5cdCAqXG5cdCAqIEBwYXJhbSB7alF1ZXJ5fSAkZGF5X3JvdyBXZWVrZGF5IHJvdy5cblx0ICogQHJldHVybiB7dm9pZH1cblx0ICovXG5cdGZ1bmN0aW9uIHJlZnJlc2hfd29ya2luZ190aW1lX2RheSggJGRheV9yb3cgKSB7XG5cdFx0dmFyICR3ZWVrZGF5cyA9ICRkYXlfcm93LmNsb3Nlc3QoICdbZGF0YS13cGJjLXdvcmtpbmctdGltZS13ZWVrZGF5c10nICk7XG5cdFx0dmFyICR0b2dnbGUgPSAkZGF5X3Jvdy5maW5kKCAnW2RhdGEtd3BiYy13b3JraW5nLXRpbWUtZGF5LXRvZ2dsZT1cIjFcIl0nICkuZmlyc3QoKTtcblx0XHR2YXIgJHJlc291cmNlX2N1c3RvbSA9ICRkYXlfcm93LmNsb3Nlc3QoICdbZGF0YS13cGJjLXdvcmtpbmctdGltZS1yZXNvdXJjZS1jdXN0b209XCIxXCJdJyApO1xuXHRcdHZhciBpc19ibG9ja19kaXNhYmxlZCA9ICRkYXlfcm93LmNsb3Nlc3QoICcud3BiY19hZ193b3JraW5nX3RpbWVfYmxvY2snICkuaGFzQ2xhc3MoICdpcy1kaXNhYmxlZCcgKVxuXHRcdFx0fHwgKCAkcmVzb3VyY2VfY3VzdG9tLmxlbmd0aCAmJiAhICRyZXNvdXJjZV9jdXN0b20uaGFzQ2xhc3MoICdpcy12aXNpYmxlJyApICk7XG5cdFx0dmFyIGlzX2RheV9lbmFibGVkID0gISBpc19ibG9ja19kaXNhYmxlZCAmJiAkdG9nZ2xlLnByb3AoICdjaGVja2VkJyApO1xuXHRcdHZhciBpbnRlcnZhbF9jb3VudCA9ICRkYXlfcm93LmZpbmQoICdbZGF0YS13cGJjLXdvcmtpbmctdGltZS1pbnRlcnZhbD1cIjFcIl0nICkubGVuZ3RoO1xuXHRcdHZhciBtYXhfaW50ZXJ2YWxzID0gZ2V0X21heF93b3JraW5nX3RpbWVfaW50ZXJ2YWxzKCAkd2Vla2RheXMgKTtcblxuXHRcdCRkYXlfcm93LnRvZ2dsZUNsYXNzKCAnaXMtZW5hYmxlZCcsICR0b2dnbGUucHJvcCggJ2NoZWNrZWQnICkgKTtcblx0XHQkdG9nZ2xlLnByb3AoICdkaXNhYmxlZCcsIGlzX2Jsb2NrX2Rpc2FibGVkICk7XG5cdFx0JGRheV9yb3cuZmluZCggJy53cGJjX2FnX3dvcmtpbmdfdGltZV9zdGFydCwgLndwYmNfYWdfd29ya2luZ190aW1lX2VuZCwgW2RhdGEtd3BiYy1yZW1vdmUtd29ya2luZy10aW1lLWludGVydmFsXScgKS5wcm9wKCAnZGlzYWJsZWQnLCAhIGlzX2RheV9lbmFibGVkICk7XG5cdFx0JGRheV9yb3cuZmluZCggJ1tkYXRhLXdwYmMtYWRkLXdvcmtpbmctdGltZS1pbnRlcnZhbF0nICkucHJvcCggJ2Rpc2FibGVkJywgISBpc19kYXlfZW5hYmxlZCB8fCBpbnRlcnZhbF9jb3VudCA+PSBtYXhfaW50ZXJ2YWxzICk7XG5cdH1cblxuXHQvKipcblx0ICogRmluZCBhIG5vbi1vdmVybGFwcGluZyBvbmUtaG91ciBpbnRlcnZhbCBwcm9wb3NhbC5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3RbXX0gaW50ZXJ2YWxzIEN1cnJlbnQgd2Vla2RheSBpbnRlcnZhbHMuXG5cdCAqIEByZXR1cm4ge09iamVjdHxudWxsfSBQcm9wb3NlZCBpbnRlcnZhbCwgb3IgbnVsbCB3aGVuIHRoZSBkYXkgaGFzIG5vIGdhcC5cblx0ICovXG5cdGZ1bmN0aW9uIGZpbmRfd29ya2luZ190aW1lX2ludGVydmFsX3Byb3Bvc2FsKCBpbnRlcnZhbHMgKSB7XG5cdFx0dmFyIHNvcnRlZF9pbnRlcnZhbHMgPSBpbnRlcnZhbHMuc2xpY2UoKS5zb3J0KCBmdW5jdGlvbiAoIGZpcnN0X2ludGVydmFsLCBzZWNvbmRfaW50ZXJ2YWwgKSB7XG5cdFx0XHRyZXR1cm4gZmlyc3RfaW50ZXJ2YWwuc3RhcnRfc2Vjb25kIC0gc2Vjb25kX2ludGVydmFsLnN0YXJ0X3NlY29uZDtcblx0XHR9ICk7XG5cdFx0dmFyIHByZWZlcnJlZF9zdGFydCA9IHNvcnRlZF9pbnRlcnZhbHMubGVuZ3RoID8gc29ydGVkX2ludGVydmFsc1sgc29ydGVkX2ludGVydmFscy5sZW5ndGggLSAxIF0uZW5kX3NlY29uZCA6IDkgKiAzNjAwO1xuXHRcdHZhciBjYW5kaWRhdGVzID0gW107XG5cdFx0dmFyIGNhbmRpZGF0ZV9zdGFydDtcblxuXHRcdGZvciAoIGNhbmRpZGF0ZV9zdGFydCA9IDA7IGNhbmRpZGF0ZV9zdGFydCA8PSAyMyAqIDM2MDA7IGNhbmRpZGF0ZV9zdGFydCArPSAxODAwICkge1xuXHRcdFx0aWYgKCBjYW5kaWRhdGVfc3RhcnQgPj0gcHJlZmVycmVkX3N0YXJ0ICkge1xuXHRcdFx0XHRjYW5kaWRhdGVzLnB1c2goIGNhbmRpZGF0ZV9zdGFydCApO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRmb3IgKCBjYW5kaWRhdGVfc3RhcnQgPSAwOyBjYW5kaWRhdGVfc3RhcnQgPCBwcmVmZXJyZWRfc3RhcnQgJiYgY2FuZGlkYXRlX3N0YXJ0IDw9IDIzICogMzYwMDsgY2FuZGlkYXRlX3N0YXJ0ICs9IDE4MDAgKSB7XG5cdFx0XHRjYW5kaWRhdGVzLnB1c2goIGNhbmRpZGF0ZV9zdGFydCApO1xuXHRcdH1cblxuXHRcdGNhbmRpZGF0ZV9zdGFydCA9IG51bGw7XG5cdFx0Y2FuZGlkYXRlcy5zb21lKCBmdW5jdGlvbiAoIHByb3Bvc2VkX3N0YXJ0ICkge1xuXHRcdFx0dmFyIHByb3Bvc2VkX2VuZCA9IHByb3Bvc2VkX3N0YXJ0ICsgMzYwMDtcblx0XHRcdHZhciBvdmVybGFwcyA9IHNvcnRlZF9pbnRlcnZhbHMuc29tZSggZnVuY3Rpb24gKCBpbnRlcnZhbCApIHtcblx0XHRcdFx0cmV0dXJuIHByb3Bvc2VkX3N0YXJ0IDwgaW50ZXJ2YWwuZW5kX3NlY29uZCAmJiBwcm9wb3NlZF9lbmQgPiBpbnRlcnZhbC5zdGFydF9zZWNvbmQ7XG5cdFx0XHR9ICk7XG5cblx0XHRcdGlmICggcHJvcG9zZWRfZW5kIDw9IDg2NDAwICYmICEgb3ZlcmxhcHMgKSB7XG5cdFx0XHRcdGNhbmRpZGF0ZV9zdGFydCA9IHByb3Bvc2VkX3N0YXJ0O1xuXHRcdFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9ICk7XG5cblx0XHRyZXR1cm4gbnVsbCA9PT0gY2FuZGlkYXRlX3N0YXJ0ID8gbnVsbCA6IHtcblx0XHRcdHN0YXJ0X3NlY29uZDogY2FuZGlkYXRlX3N0YXJ0LFxuXHRcdFx0ZW5kX3NlY29uZDogY2FuZGlkYXRlX3N0YXJ0ICsgMzYwMFxuXHRcdH07XG5cdH1cblxuXHQvKipcblx0ICogQXBwZW5kIGFuIGludGVydmFsIGJ5IGNsb25pbmcgdGhlIHNlcnZlci1yZW5kZXJlZCBhbGxvdy1saXN0ZWQgY29udHJvbHMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7alF1ZXJ5fSAkZGF5X3JvdyBXZWVrZGF5IHJvdy5cblx0ICogQHBhcmFtIHtPYmplY3R9IGludGVydmFsIENhbm9uaWNhbCBpbnRlcnZhbCByZWNvcmQuXG5cdCAqIEByZXR1cm4ge2pRdWVyeX0gQXBwZW5kZWQgaW50ZXJ2YWwgbm9kZS5cblx0ICovXG5cdGZ1bmN0aW9uIGFwcGVuZF93b3JraW5nX3RpbWVfaW50ZXJ2YWwoICRkYXlfcm93LCBpbnRlcnZhbCApIHtcblx0XHR2YXIgJGNvbnRhaW5lciA9ICRkYXlfcm93LmZpbmQoICdbZGF0YS13cGJjLXdvcmtpbmctdGltZS1pbnRlcnZhbHM9XCIxXCJdJyApLmZpcnN0KCk7XG5cdFx0dmFyICRwcm90b3R5cGUgPSAkY29udGFpbmVyLmZpbmQoICdbZGF0YS13cGJjLXdvcmtpbmctdGltZS1pbnRlcnZhbD1cIjFcIl0nICkuZmlyc3QoKTtcblx0XHR2YXIgJGludGVydmFsID0gJHByb3RvdHlwZS5jbG9uZSggZmFsc2UsIGZhbHNlICk7XG5cblx0XHQkaW50ZXJ2YWwuZmluZCggJy53cGJjX2FnX3dvcmtpbmdfdGltZV9zdGFydCcgKS52YWwoIHNlY29uZHNfdG9fdGltZSggaW50ZXJ2YWwuc3RhcnRfc2Vjb25kICkgKTtcblx0XHQkaW50ZXJ2YWwuZmluZCggJy53cGJjX2FnX3dvcmtpbmdfdGltZV9lbmQnICkudmFsKCBzZWNvbmRzX3RvX3RpbWUoIGludGVydmFsLmVuZF9zZWNvbmQgKSApO1xuXHRcdCRjb250YWluZXIuYXBwZW5kKCAkaW50ZXJ2YWwgKTtcblx0XHRyZWluZGV4X3dvcmtpbmdfdGltZV9kYXkoICRkYXlfcm93ICk7XG5cblx0XHRyZXR1cm4gJGludGVydmFsO1xuXHR9XG5cblx0LyoqXG5cdCAqIEFkZCB0aGUgbmV4dCBhdmFpbGFibGUgb25lLWhvdXIgaW50ZXJ2YWwgdG8gYSB3ZWVrZGF5LlxuXHQgKlxuXHQgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBidXR0b24gQWRkLWludGVydmFsIGJ1dHRvbi5cblx0ICogQHJldHVybiB7dm9pZH1cblx0ICovXG5cdGZ1bmN0aW9uIGFkZF93b3JraW5nX3RpbWVfaW50ZXJ2YWwoIGJ1dHRvbiApIHtcblx0XHR2YXIgJGRheV9yb3cgPSAkKCBidXR0b24gKS5jbG9zZXN0KCAnW2RhdGEtd3BiYy13b3JraW5nLXRpbWUtZGF5XScgKTtcblx0XHR2YXIgJHdlZWtkYXlzID0gJGRheV9yb3cuY2xvc2VzdCggJ1tkYXRhLXdwYmMtd29ya2luZy10aW1lLXdlZWtkYXlzXScgKTtcblx0XHR2YXIgaW50ZXJ2YWxzID0gY29sbGVjdF93b3JraW5nX3RpbWVfZGF5X2ludGVydmFscyggJGRheV9yb3cgKTtcblx0XHR2YXIgbWF4X2ludGVydmFscyA9IGdldF9tYXhfd29ya2luZ190aW1lX2ludGVydmFscyggJHdlZWtkYXlzICk7XG5cdFx0dmFyIHByb3Bvc2FsO1xuXHRcdHZhciAkaW50ZXJ2YWw7XG5cblx0XHRpZiAoIGludGVydmFscy5sZW5ndGggPj0gbWF4X2ludGVydmFscyApIHtcblx0XHRcdHNob3dfbWVzc2FnZSggKCBjZmcuaTE4biAmJiBjZmcuaTE4bi5pbnRlcnZhbF9saW1pdCApIHx8ICdObyBhZGRpdGlvbmFsIG9uZS1ob3VyIGludGVydmFsIGlzIGF2YWlsYWJsZSBmb3IgdGhpcyB3ZWVrZGF5LicsICdlcnJvcicsIDYwMDAgKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRwcm9wb3NhbCA9IGZpbmRfd29ya2luZ190aW1lX2ludGVydmFsX3Byb3Bvc2FsKCBpbnRlcnZhbHMgKTtcblx0XHRpZiAoICEgcHJvcG9zYWwgKSB7XG5cdFx0XHRzaG93X21lc3NhZ2UoICggY2ZnLmkxOG4gJiYgY2ZnLmkxOG4uaW50ZXJ2YWxfbGltaXQgKSB8fCAnTm8gYWRkaXRpb25hbCBvbmUtaG91ciBpbnRlcnZhbCBpcyBhdmFpbGFibGUgZm9yIHRoaXMgd2Vla2RheS4nLCAnZXJyb3InLCA2MDAwICk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0JGludGVydmFsID0gYXBwZW5kX3dvcmtpbmdfdGltZV9pbnRlcnZhbCggJGRheV9yb3csIHByb3Bvc2FsICk7XG5cdFx0JGRheV9yb3cuZmluZCggJ1tkYXRhLXdwYmMtd29ya2luZy10aW1lLWRheS10b2dnbGU9XCIxXCJdJyApLnByb3AoICdjaGVja2VkJywgdHJ1ZSApO1xuXHRcdHJlZnJlc2hfd29ya2luZ190aW1lX2RheSggJGRheV9yb3cgKTtcblx0XHQkaW50ZXJ2YWwuZmluZCggJy53cGJjX2FnX3dvcmtpbmdfdGltZV9zdGFydCcgKS50cmlnZ2VyKCAnZm9jdXMnICk7XG5cdFx0c2NoZWR1bGVfcHJldmlld19yZWZyZXNoKCk7XG5cdH1cblxuXHQvKipcblx0ICogUmVtb3ZlIG9uZSB3ZWVrZGF5IGludGVydmFsLCBjbG9zaW5nIHRoZSB3ZWVrZGF5IHdoZW4gaXQgaXMgdGhlIGxhc3Qgb25lLlxuXHQgKlxuXHQgKiBLZWVwaW5nIG9uZSBkaXNhYmxlZCBpbnRlcnZhbCBpbiB0aGUgRE9NIHByZXNlcnZlcyBhbiBhbGxvdy1saXN0ZWQgY29udHJvbFxuXHQgKiBwcm90b3R5cGUgZm9yIHJlb3BlbmluZyB0aGUgZGF5IG9yIGFkZGluZyBhIGxhdGVyIGludGVydmFsLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBidXR0b24gUmVtb3ZlLWludGVydmFsIGJ1dHRvbi5cblx0ICogQHJldHVybiB7dm9pZH1cblx0ICovXG5cdGZ1bmN0aW9uIHJlbW92ZV93b3JraW5nX3RpbWVfaW50ZXJ2YWwoIGJ1dHRvbiApIHtcblx0XHR2YXIgJGJ1dHRvbiA9ICQoIGJ1dHRvbiApO1xuXHRcdHZhciAkZGF5X3JvdyA9ICRidXR0b24uY2xvc2VzdCggJ1tkYXRhLXdwYmMtd29ya2luZy10aW1lLWRheV0nICk7XG5cdFx0dmFyICRpbnRlcnZhbHMgPSAkZGF5X3Jvdy5maW5kKCAnW2RhdGEtd3BiYy13b3JraW5nLXRpbWUtaW50ZXJ2YWw9XCIxXCJdJyApO1xuXHRcdHZhciAkZm9jdXNfdGFyZ2V0O1xuXG5cdFx0aWYgKCAkaW50ZXJ2YWxzLmxlbmd0aCA+IDEgKSB7XG5cdFx0XHQkYnV0dG9uLmNsb3Nlc3QoICdbZGF0YS13cGJjLXdvcmtpbmctdGltZS1pbnRlcnZhbD1cIjFcIl0nICkucmVtb3ZlKCk7XG5cdFx0XHQkZm9jdXNfdGFyZ2V0ID0gJGRheV9yb3cuZmluZCggJ1tkYXRhLXdwYmMtYWRkLXdvcmtpbmctdGltZS1pbnRlcnZhbD1cIjFcIl0nICkuZmlyc3QoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0JGRheV9yb3cuZmluZCggJ1tkYXRhLXdwYmMtd29ya2luZy10aW1lLWRheS10b2dnbGU9XCIxXCJdJyApLnByb3AoICdjaGVja2VkJywgZmFsc2UgKTtcblx0XHRcdCRmb2N1c190YXJnZXQgPSAkZGF5X3Jvdy5maW5kKCAnW2RhdGEtd3BiYy13b3JraW5nLXRpbWUtZGF5LXRvZ2dsZT1cIjFcIl0nICkuZmlyc3QoKTtcblx0XHR9XG5cblx0XHRyZWluZGV4X3dvcmtpbmdfdGltZV9kYXkoICRkYXlfcm93ICk7XG5cdFx0cmVmcmVzaF93b3JraW5nX3RpbWVfZGF5KCAkZGF5X3JvdyApO1xuXHRcdCRmb2N1c190YXJnZXQudHJpZ2dlciggJ2ZvY3VzJyApO1xuXHRcdHNjaGVkdWxlX3ByZXZpZXdfcmVmcmVzaCgpO1xuXHR9XG5cclxuXHRmdW5jdGlvbiBjb2xsZWN0X3dvcmtpbmdfdGltZV93ZWVrZGF5cyggcHJlZml4ICkge1xuXHRcdHZhciAkZm9ybSA9IGdldF9mb3JtKCk7XG5cdFx0dmFyIHdlZWtkYXlzID0ge307XG5cblx0XHQkZm9ybS5maW5kKCAnW2RhdGEtd3BiYy13b3JraW5nLXRpbWUtd2Vla2RheXM9XCInICsgcHJlZml4ICsgJ1wiXSAud3BiY19hZ193b3JraW5nX3RpbWVfcm93JyApLmVhY2goIGZ1bmN0aW9uICgpIHtcblx0XHRcdHZhciAkcm93ID0gJCggdGhpcyApO1xuXHRcdFx0dmFyIGRheSA9IHBhcnNlSW50KCAkcm93LmF0dHIoICdkYXRhLXdwYmMtd29ya2luZy10aW1lLWRheScgKSwgMTAgKTtcblxuXHRcdFx0d2Vla2RheXNbIGRheSBdID0gW107XG5cdFx0XHRpZiAoICEgJHJvdy5maW5kKCAnW2RhdGEtd3BiYy13b3JraW5nLXRpbWUtZGF5LXRvZ2dsZT1cIjFcIl0nICkucHJvcCggJ2NoZWNrZWQnICkgKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0d2Vla2RheXNbIGRheSBdID0gY29sbGVjdF93b3JraW5nX3RpbWVfZGF5X2ludGVydmFscyggJHJvdyApO1xuXHRcdH0gKTtcblxyXG5cdFx0cmV0dXJuIHdlZWtkYXlzO1xyXG5cdH1cclxuXHJcblx0ZnVuY3Rpb24gc2V0X3dvcmtpbmdfdGltZV93ZWVrZGF5cyggcHJlZml4LCB3ZWVrZGF5cyApIHtcblx0XHR2YXIgJHdyYXAgPSBnZXRfZm9ybSgpLmZpbmQoICdbZGF0YS13cGJjLXdvcmtpbmctdGltZS13ZWVrZGF5cz1cIicgKyBwcmVmaXggKyAnXCJdJyApO1xuXG5cdFx0JHdyYXAuZmluZCggJy53cGJjX2FnX3dvcmtpbmdfdGltZV9yb3cnICkuZWFjaCggZnVuY3Rpb24gKCkge1xuXHRcdFx0dmFyICRyb3cgPSAkKCB0aGlzICk7XG5cdFx0XHR2YXIgZGF5ID0gcGFyc2VJbnQoICRyb3cuYXR0ciggJ2RhdGEtd3BiYy13b3JraW5nLXRpbWUtZGF5JyApLCAxMCApO1xuXHRcdFx0dmFyIGludGVydmFscyA9IHdlZWtkYXlzICYmICQuaXNBcnJheSggd2Vla2RheXNbIGRheSBdICkgPyB3ZWVrZGF5c1sgZGF5IF0gOiBbXTtcblx0XHRcdHZhciBkaXNwbGF5X2ludGVydmFscyA9IGludGVydmFscy5sZW5ndGggPyBpbnRlcnZhbHMgOiBbIHsgc3RhcnRfc2Vjb25kOiAzMjQwMCwgZW5kX3NlY29uZDogNjQ4MDAgfSBdO1xuXHRcdFx0dmFyICRjb250YWluZXIgPSAkcm93LmZpbmQoICdbZGF0YS13cGJjLXdvcmtpbmctdGltZS1pbnRlcnZhbHM9XCIxXCJdJyApLmZpcnN0KCk7XG5cdFx0XHR2YXIgJHByb3RvdHlwZSA9ICRjb250YWluZXIuZmluZCggJ1tkYXRhLXdwYmMtd29ya2luZy10aW1lLWludGVydmFsPVwiMVwiXScgKS5maXJzdCgpLmNsb25lKCBmYWxzZSwgZmFsc2UgKTtcblxuXHRcdFx0JGNvbnRhaW5lci5lbXB0eSgpLmFwcGVuZCggJHByb3RvdHlwZSApO1xuXHRcdFx0JHByb3RvdHlwZS5maW5kKCAnLndwYmNfYWdfd29ya2luZ190aW1lX3N0YXJ0JyApLnZhbCggc2Vjb25kc190b190aW1lKCBkaXNwbGF5X2ludGVydmFsc1swXS5zdGFydF9zZWNvbmQgKSApO1xuXHRcdFx0JHByb3RvdHlwZS5maW5kKCAnLndwYmNfYWdfd29ya2luZ190aW1lX2VuZCcgKS52YWwoIHNlY29uZHNfdG9fdGltZSggZGlzcGxheV9pbnRlcnZhbHNbMF0uZW5kX3NlY29uZCApICk7XG5cdFx0XHRkaXNwbGF5X2ludGVydmFscy5zbGljZSggMSApLmZvckVhY2goIGZ1bmN0aW9uICggaW50ZXJ2YWwgKSB7XG5cdFx0XHRcdGFwcGVuZF93b3JraW5nX3RpbWVfaW50ZXJ2YWwoICRyb3csIGludGVydmFsICk7XG5cdFx0XHR9ICk7XG5cdFx0XHQkcm93LmZpbmQoICdbZGF0YS13cGJjLXdvcmtpbmctdGltZS1kYXktdG9nZ2xlPVwiMVwiXScgKS5wcm9wKCAnY2hlY2tlZCcsIGludGVydmFscy5sZW5ndGggPiAwICk7XG5cdFx0XHRyZWluZGV4X3dvcmtpbmdfdGltZV9kYXkoICRyb3cgKTtcblx0XHR9ICk7XG5cdH1cblxyXG5cdGZ1bmN0aW9uIHJlZnJlc2hfd29ya2luZ190aW1lX3BhbmVscygpIHtcblx0XHR2YXIgaXNfZW5hYmxlZCA9IGdldF9mb3JtKCkuZmluZCggJ2lucHV0W25hbWU9XCJib29raW5nX3dvcmtpbmdfdGltZV9lbmFibGVkXCJdJyApLnByb3AoICdjaGVja2VkJyApO1xuXHRcdHZhciBtb2RlID0gZ2V0X2Zvcm0oKS5maW5kKCAnaW5wdXRbbmFtZT1cImJvb2tpbmdfd29ya2luZ190aW1lX3Jlc291cmNlX21vZGVcIl06Y2hlY2tlZCcgKS52YWwoKSB8fCAnaW5oZXJpdCc7XG5cdFx0dmFyICRyZXNvdXJjZV9jdXN0b20gPSBnZXRfZm9ybSgpLmZpbmQoICdbZGF0YS13cGJjLXdvcmtpbmctdGltZS1yZXNvdXJjZS1jdXN0b21dJyApO1xuXG5cdFx0JHJlc291cmNlX2N1c3RvbS50b2dnbGVDbGFzcyggJ2lzLXZpc2libGUnLCBtb2RlID09PSAnY3VzdG9tJyApO1xuXG5cdFx0Z2V0X2Zvcm0oKVxuXHRcdFx0LmZpbmQoICcud3BiY19hZ193b3JraW5nX3RpbWVfYmxvY2snIClcblx0XHRcdC50b2dnbGVDbGFzcyggJ2lzLWRpc2FibGVkJywgISBpc19lbmFibGVkICk7XG5cblx0XHRnZXRfZm9ybSgpLmZpbmQoICcud3BiY19hZ193b3JraW5nX3RpbWVfYmxvY2snICkuZWFjaCggZnVuY3Rpb24gKCkge1xuXHRcdFx0JCggdGhpcyApLmZpbmQoICdpbnB1dCwgc2VsZWN0LCBidXR0b24nICkucHJvcCggJ2Rpc2FibGVkJywgISBpc19lbmFibGVkICk7XG5cdFx0fSApO1xuXHRcdGdldF9mb3JtKCkuZmluZCggJ1tkYXRhLXdwYmMtd29ya2luZy10aW1lLWRheV0nICkuZWFjaCggZnVuY3Rpb24gKCkge1xuXHRcdFx0cmVmcmVzaF93b3JraW5nX3RpbWVfZGF5KCAkKCB0aGlzICkgKTtcblx0XHR9ICk7XG5cdH1cblxyXG5cdGZ1bmN0aW9uIGdldF93b3JraW5nX3RpbWVfc2V0dGluZ3NfZnJvbV9mb3JtKCkge1xyXG5cdFx0dmFyICRmb3JtID0gZ2V0X2Zvcm0oKTtcclxuXHRcdHZhciByZXNvdXJjZUlkID0gcGFyc2VJbnQoICRmb3JtLmZpbmQoICdbZGF0YS13cGJjLXdvcmtpbmctdGltZS1yZXNvdXJjZS1pZF0nICkudmFsKCksIDEwICkgfHwgcGFyc2VJbnQoICQoICcjd3BiY19hZ19yZXNvdXJjZV9pZCcgKS52YWwoKSwgMTAgKSB8fCAwO1xyXG5cdFx0dmFyIHdvcmtpbmdUaW1lID0gJC5leHRlbmQoIHRydWUsIHt9LCBjZmcuc2V0dGluZ3MgJiYgY2ZnLnNldHRpbmdzLndvcmtpbmdfdGltZSA/IGNmZy5zZXR0aW5ncy53b3JraW5nX3RpbWUgOiAoIGNmZy5kZWZhdWx0X3NldHRpbmdzICYmIGNmZy5kZWZhdWx0X3NldHRpbmdzLndvcmtpbmdfdGltZSA/IGNmZy5kZWZhdWx0X3NldHRpbmdzLndvcmtpbmdfdGltZSA6IHt9ICkgKTtcclxuXHJcblx0XHRpZiAoICEgd29ya2luZ1RpbWUuZGVmYXVsdCApIHtcclxuXHRcdFx0d29ya2luZ1RpbWUuZGVmYXVsdCA9IHt9O1xyXG5cdFx0fVxyXG5cdFx0aWYgKCAhIHdvcmtpbmdUaW1lLnJlc291cmNlcyApIHtcclxuXHRcdFx0d29ya2luZ1RpbWUucmVzb3VyY2VzID0ge307XHJcblx0XHR9XHJcblxyXG5cdFx0d29ya2luZ1RpbWUuZW5hYmxlZCA9ICRmb3JtLmZpbmQoICdpbnB1dFtuYW1lPVwiYm9va2luZ193b3JraW5nX3RpbWVfZW5hYmxlZFwiXScgKS5wcm9wKCAnY2hlY2tlZCcgKSA/ICdPbicgOiAnT2ZmJztcclxuXHRcdHdvcmtpbmdUaW1lLmRlZmF1bHQud2Vla2RheXMgPSBjb2xsZWN0X3dvcmtpbmdfdGltZV93ZWVrZGF5cyggJ2Jvb2tpbmdfd29ya2luZ190aW1lX2RlZmF1bHQnICk7XHJcblxyXG5cdFx0aWYgKCByZXNvdXJjZUlkID4gMCApIHtcclxuXHRcdFx0d29ya2luZ1RpbWUucmVzb3VyY2VzWyByZXNvdXJjZUlkIF0gPSB7XHJcblx0XHRcdFx0bW9kZTogJGZvcm0uZmluZCggJ2lucHV0W25hbWU9XCJib29raW5nX3dvcmtpbmdfdGltZV9yZXNvdXJjZV9tb2RlXCJdOmNoZWNrZWQnICkudmFsKCkgfHwgJ2luaGVyaXQnLFxyXG5cdFx0XHRcdHdlZWtkYXlzOiBjb2xsZWN0X3dvcmtpbmdfdGltZV93ZWVrZGF5cyggJ2Jvb2tpbmdfd29ya2luZ190aW1lX3Jlc291cmNlJyApXHJcblx0XHRcdH07XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHdvcmtpbmdUaW1lO1xyXG5cdH1cclxuXHJcblx0ZnVuY3Rpb24gYXBwbHlfd29ya2luZ190aW1lX3NldHRpbmdzX3RvX2Zvcm0oIHdvcmtpbmdUaW1lLCByZXNvdXJjZUlkICkge1xyXG5cdFx0dmFyIHJlc291cmNlU2V0dGluZ3M7XHJcblxyXG5cdFx0d29ya2luZ1RpbWUgPSB3b3JraW5nVGltZSB8fCB7fTtcclxuXHRcdHJlc291cmNlSWQgPSBwYXJzZUludCggcmVzb3VyY2VJZCwgMTAgKSB8fCBwYXJzZUludCggJCggJyN3cGJjX2FnX3Jlc291cmNlX2lkJyApLnZhbCgpLCAxMCApIHx8IDA7XHJcblx0XHRyZXNvdXJjZVNldHRpbmdzID0gd29ya2luZ1RpbWUucmVzb3VyY2VzICYmIHdvcmtpbmdUaW1lLnJlc291cmNlc1sgcmVzb3VyY2VJZCBdID8gd29ya2luZ1RpbWUucmVzb3VyY2VzWyByZXNvdXJjZUlkIF0gOiB7XHJcblx0XHRcdG1vZGU6ICdpbmhlcml0JyxcclxuXHRcdFx0d2Vla2RheXM6IHdvcmtpbmdUaW1lLmRlZmF1bHQgJiYgd29ya2luZ1RpbWUuZGVmYXVsdC53ZWVrZGF5cyA/IHdvcmtpbmdUaW1lLmRlZmF1bHQud2Vla2RheXMgOiB7fVxyXG5cdFx0fTtcclxuXHJcblx0XHRnZXRfZm9ybSgpLmZpbmQoICdpbnB1dFtuYW1lPVwiYm9va2luZ193b3JraW5nX3RpbWVfZW5hYmxlZFwiXScgKS5wcm9wKCAnY2hlY2tlZCcsIHdvcmtpbmdUaW1lLmVuYWJsZWQgPT09ICdPbicgKTtcclxuXHRcdGdldF9mb3JtKCkuZmluZCggJ1tkYXRhLXdwYmMtd29ya2luZy10aW1lLXJlc291cmNlLWlkXScgKS52YWwoIHJlc291cmNlSWQgKTtcclxuXHRcdHNldF93b3JraW5nX3RpbWVfd2Vla2RheXMoICdib29raW5nX3dvcmtpbmdfdGltZV9kZWZhdWx0Jywgd29ya2luZ1RpbWUuZGVmYXVsdCAmJiB3b3JraW5nVGltZS5kZWZhdWx0LndlZWtkYXlzID8gd29ya2luZ1RpbWUuZGVmYXVsdC53ZWVrZGF5cyA6IHt9ICk7XHJcblx0XHRnZXRfZm9ybSgpLmZpbmQoICdpbnB1dFtuYW1lPVwiYm9va2luZ193b3JraW5nX3RpbWVfcmVzb3VyY2VfbW9kZVwiXVt2YWx1ZT1cIicgKyAoIHJlc291cmNlU2V0dGluZ3MubW9kZSB8fCAnaW5oZXJpdCcgKSArICdcIl0nICkucHJvcCggJ2NoZWNrZWQnLCB0cnVlICk7XHJcblx0XHRzZXRfd29ya2luZ190aW1lX3dlZWtkYXlzKCAnYm9va2luZ193b3JraW5nX3RpbWVfcmVzb3VyY2UnLCByZXNvdXJjZVNldHRpbmdzLndlZWtkYXlzIHx8ICggd29ya2luZ1RpbWUuZGVmYXVsdCA/IHdvcmtpbmdUaW1lLmRlZmF1bHQud2Vla2RheXMgOiB7fSApICk7XHJcblx0XHRyZWZyZXNoX3dvcmtpbmdfdGltZV9wYW5lbHMoKTtcclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIGFwcGVuZF93b3JraW5nX3RpbWVfcGF5bG9hZCggcGF5bG9hZCApIHtcblx0XHR2YXIgJGZvcm0gPSBnZXRfZm9ybSgpO1xyXG5cdFx0dmFyIGRlZmF1bHREYXlzID0gW107XHJcblx0XHR2YXIgcmVzb3VyY2VEYXlzID0gW107XHJcblx0XHR2YXIgZGVmYXVsdFN0YXJ0ID0ge307XHJcblx0XHR2YXIgZGVmYXVsdEVuZCA9IHt9O1xyXG5cdFx0dmFyIHJlc291cmNlU3RhcnQgPSB7fTtcclxuXHRcdHZhciByZXNvdXJjZUVuZCA9IHt9O1xyXG5cclxuXHRcdCRmb3JtLmZpbmQoICdbZGF0YS13cGJjLXdvcmtpbmctdGltZS13ZWVrZGF5cz1cImJvb2tpbmdfd29ya2luZ190aW1lX2RlZmF1bHRcIl0gLndwYmNfYWdfd29ya2luZ190aW1lX3JvdycgKS5lYWNoKCBmdW5jdGlvbiAoKSB7XG5cdFx0XHR2YXIgJHJvdyA9ICQoIHRoaXMgKTtcblx0XHRcdHZhciBkYXkgPSBwYXJzZUludCggJHJvdy5hdHRyKCAnZGF0YS13cGJjLXdvcmtpbmctdGltZS1kYXknICksIDEwICk7XG5cblx0XHRcdGRlZmF1bHRTdGFydFsgZGF5IF0gPSBbXTtcblx0XHRcdGRlZmF1bHRFbmRbIGRheSBdID0gW107XG5cdFx0XHQkcm93LmZpbmQoICdbZGF0YS13cGJjLXdvcmtpbmctdGltZS1pbnRlcnZhbD1cIjFcIl0nICkuZWFjaCggZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRkZWZhdWx0U3RhcnRbIGRheSBdLnB1c2goICQoIHRoaXMgKS5maW5kKCAnLndwYmNfYWdfd29ya2luZ190aW1lX3N0YXJ0JyApLnZhbCgpIHx8ICcwOTowMCcgKTtcblx0XHRcdFx0ZGVmYXVsdEVuZFsgZGF5IF0ucHVzaCggJCggdGhpcyApLmZpbmQoICcud3BiY19hZ193b3JraW5nX3RpbWVfZW5kJyApLnZhbCgpIHx8ICcxODowMCcgKTtcblx0XHRcdH0gKTtcblx0XHRcdGlmICggJHJvdy5maW5kKCAnW2RhdGEtd3BiYy13b3JraW5nLXRpbWUtZGF5LXRvZ2dsZT1cIjFcIl0nICkucHJvcCggJ2NoZWNrZWQnICkgKSB7XG5cdFx0XHRcdGRlZmF1bHREYXlzLnB1c2goIGRheSApO1xuXHRcdFx0fVxuXHRcdH0gKTtcblxyXG5cdFx0JGZvcm0uZmluZCggJ1tkYXRhLXdwYmMtd29ya2luZy10aW1lLXdlZWtkYXlzPVwiYm9va2luZ193b3JraW5nX3RpbWVfcmVzb3VyY2VcIl0gLndwYmNfYWdfd29ya2luZ190aW1lX3JvdycgKS5lYWNoKCBmdW5jdGlvbiAoKSB7XG5cdFx0XHR2YXIgJHJvdyA9ICQoIHRoaXMgKTtcblx0XHRcdHZhciBkYXkgPSBwYXJzZUludCggJHJvdy5hdHRyKCAnZGF0YS13cGJjLXdvcmtpbmctdGltZS1kYXknICksIDEwICk7XG5cblx0XHRcdHJlc291cmNlU3RhcnRbIGRheSBdID0gW107XG5cdFx0XHRyZXNvdXJjZUVuZFsgZGF5IF0gPSBbXTtcblx0XHRcdCRyb3cuZmluZCggJ1tkYXRhLXdwYmMtd29ya2luZy10aW1lLWludGVydmFsPVwiMVwiXScgKS5lYWNoKCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdHJlc291cmNlU3RhcnRbIGRheSBdLnB1c2goICQoIHRoaXMgKS5maW5kKCAnLndwYmNfYWdfd29ya2luZ190aW1lX3N0YXJ0JyApLnZhbCgpIHx8ICcwOTowMCcgKTtcblx0XHRcdFx0cmVzb3VyY2VFbmRbIGRheSBdLnB1c2goICQoIHRoaXMgKS5maW5kKCAnLndwYmNfYWdfd29ya2luZ190aW1lX2VuZCcgKS52YWwoKSB8fCAnMTg6MDAnICk7XG5cdFx0XHR9ICk7XG5cdFx0XHRpZiAoICRyb3cuZmluZCggJ1tkYXRhLXdwYmMtd29ya2luZy10aW1lLWRheS10b2dnbGU9XCIxXCJdJyApLnByb3AoICdjaGVja2VkJyApICkge1xuXHRcdFx0XHRyZXNvdXJjZURheXMucHVzaCggZGF5ICk7XG5cdFx0XHR9XHJcblx0XHR9ICk7XHJcblxyXG5cdFx0cGF5bG9hZC5ib29raW5nX3dvcmtpbmdfdGltZV9lbmFibGVkID0gJGZvcm0uZmluZCggJ2lucHV0W25hbWU9XCJib29raW5nX3dvcmtpbmdfdGltZV9lbmFibGVkXCJdJyApLnByb3AoICdjaGVja2VkJyApID8gJ09uJyA6ICcnO1xyXG5cdFx0cGF5bG9hZC5ib29raW5nX3dvcmtpbmdfdGltZV9yZXNvdXJjZV9pZCA9ICRmb3JtLmZpbmQoICdbZGF0YS13cGJjLXdvcmtpbmctdGltZS1yZXNvdXJjZS1pZF0nICkudmFsKCkgfHwgJCggJyN3cGJjX2FnX3Jlc291cmNlX2lkJyApLnZhbCgpIHx8ICcnO1xyXG5cdFx0cGF5bG9hZC5ib29raW5nX3dvcmtpbmdfdGltZV9yZXNvdXJjZV9tb2RlID0gJGZvcm0uZmluZCggJ2lucHV0W25hbWU9XCJib29raW5nX3dvcmtpbmdfdGltZV9yZXNvdXJjZV9tb2RlXCJdOmNoZWNrZWQnICkudmFsKCkgfHwgJ2luaGVyaXQnO1xyXG5cdFx0cGF5bG9hZC5ib29raW5nX3dvcmtpbmdfdGltZV9kZWZhdWx0X2RheXMgPSBkZWZhdWx0RGF5cztcclxuXHRcdHBheWxvYWQuYm9va2luZ193b3JraW5nX3RpbWVfZGVmYXVsdF9zdGFydCA9IGRlZmF1bHRTdGFydDtcclxuXHRcdHBheWxvYWQuYm9va2luZ193b3JraW5nX3RpbWVfZGVmYXVsdF9lbmQgPSBkZWZhdWx0RW5kO1xyXG5cdFx0cGF5bG9hZC5ib29raW5nX3dvcmtpbmdfdGltZV9yZXNvdXJjZV9kYXlzID0gcmVzb3VyY2VEYXlzO1xyXG5cdFx0cGF5bG9hZC5ib29raW5nX3dvcmtpbmdfdGltZV9yZXNvdXJjZV9zdGFydCA9IHJlc291cmNlU3RhcnQ7XHJcblx0XHRwYXlsb2FkLmJvb2tpbmdfd29ya2luZ190aW1lX3Jlc291cmNlX2VuZCA9IHJlc291cmNlRW5kO1xyXG5cdH1cclxuXHJcblx0ZnVuY3Rpb24gdXBkYXRlX3dwYmNfcHJldmlld19wYXJhbXMoIHNldHRpbmdzICkge1xyXG5cdFx0aWYgKCAhIHcuX3dwYmMgfHwgdHlwZW9mIHcuX3dwYmMuc2V0X290aGVyX3BhcmFtICE9PSAnZnVuY3Rpb24nICkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0dy5fd3BiYy5zZXRfb3RoZXJfcGFyYW0oICdhdmFpbGFiaWxpdHlfX3dlZWtfZGF5c191bmF2YWlsYWJsZScsIHNldHRpbmdzLndlZWtkYXlzLmNvbmNhdCggWyA5OTkgXSApICk7XHJcblx0XHR3Ll93cGJjLnNldF9vdGhlcl9wYXJhbSggJ2F2YWlsYWJpbGl0eV9fYXZhaWxhYmxlX2Zyb21fdG9kYXknLCBpc19hdmFpbGFibGVfbGltaXRfYXZhaWxhYmxlKCkgPyAoIHNldHRpbmdzLmJvb2tpbmdfYXZhaWxhYmxlX2RheXNfbnVtX2Zyb21fdG9kYXkgfHwgJycgKSA6ICcnICk7XHJcblx0XHR3Ll93cGJjLnNldF9vdGhlcl9wYXJhbSggJ2F2YWlsYWJpbGl0eV9fdW5hdmFpbGFibGVfZnJvbV90b2RheScsIHNldHRpbmdzLmJvb2tpbmdfdW5hdmFpbGFibGVfZGF5c19udW1fZnJvbV90b2RheSB8fCAnMCcgKTtcclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIHVwZGF0ZV9idWZmZXJfcHJldmlld19ub3RlKCBzZXR0aW5ncyApIHtcclxuXHRcdHZhciAkbm90ZXMgPSAkKCAnW2RhdGEtd3BiYy1hZy1jYWxlbmRhci1ub3Rlcz1cIjFcIl0nICkuZmlyc3QoKTtcclxuXHRcdHZhciAkY2FsZW5kYXIgPSAkKCAnW2RhdGEtd3BiYy1hZy1jYWxlbmRhci1wYW5lbD1cIjFcIl0nICkuZmlyc3QoKTtcclxuXHRcdHZhciAkbm90ZSA9ICRub3Rlcy5maW5kKCAnLndwYmNfYWdfYnVmZmVyX3ByZXZpZXdfbm90ZScgKTtcclxuXHRcdHZhciB0eXBlID0gc2V0dGluZ3MuYm9va2luZ191bmF2YWlsYWJsZV9leHRyYV9pbl9vdXQgfHwgJyc7XHJcblx0XHR2YXIgYmVmb3JlX3RleHQgPSAnJztcclxuXHRcdHZhciBhZnRlcl90ZXh0ID0gJyc7XHJcblx0XHR2YXIgbWVzc2FnZSA9ICcnO1xyXG5cclxuXHRcdGlmICggISAkbm90ZXMubGVuZ3RoIHx8ICEgJGNhbGVuZGFyLmxlbmd0aCApIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICggISAkbm90ZS5sZW5ndGggKSB7XHJcblx0XHRcdCRub3RlID0gJCggJzxkaXYgY2xhc3M9XCJ3cGJjX2FnX2J1ZmZlcl9wcmV2aWV3X25vdGVcIiBhcmlhLWxpdmU9XCJwb2xpdGVcIj48L2Rpdj4nICk7XHJcblx0XHRcdCRub3Rlcy5hcHBlbmQoICRub3RlICk7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKCAhIGlzX2J1ZmZlcl9hdmFpbGFibGUoKSApIHtcclxuXHRcdFx0JGNhbGVuZGFyLnJlbW92ZUNsYXNzKCAnd3BiY19hZ19wcmV2aWV3X2J1ZmZlcl9hY3RpdmUnICk7XHJcblx0XHRcdCRub3RlLmF0dHIoICdoaWRkZW4nLCAnaGlkZGVuJyApO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0JGNhbGVuZGFyLnRvZ2dsZUNsYXNzKCAnd3BiY19hZ19wcmV2aWV3X2J1ZmZlcl9hY3RpdmUnLCAhISB0eXBlICk7XHJcblxyXG5cdFx0aWYgKCB0eXBlID09PSAnbScgKSB7XHJcblx0XHRcdGJlZm9yZV90ZXh0ID0gZ2V0X29wdGlvbl90ZXh0KCAnW25hbWU9XCJib29raW5nX3VuYXZhaWxhYmxlX2V4dHJhX21pbnV0ZXNfaW5cIl0nICkgfHwgJy0nO1xyXG5cdFx0XHRhZnRlcl90ZXh0ID0gZ2V0X29wdGlvbl90ZXh0KCAnW25hbWU9XCJib29raW5nX3VuYXZhaWxhYmxlX2V4dHJhX21pbnV0ZXNfb3V0XCJdJyApIHx8ICctJztcclxuXHRcdH0gZWxzZSBpZiAoIHR5cGUgPT09ICdkJyApIHtcclxuXHRcdFx0YmVmb3JlX3RleHQgPSBnZXRfb3B0aW9uX3RleHQoICdbbmFtZT1cImJvb2tpbmdfdW5hdmFpbGFibGVfZXh0cmFfZGF5c19pblwiXScgKSB8fCAnLSc7XHJcblx0XHRcdGFmdGVyX3RleHQgPSBnZXRfb3B0aW9uX3RleHQoICdbbmFtZT1cImJvb2tpbmdfdW5hdmFpbGFibGVfZXh0cmFfZGF5c19vdXRcIl0nICkgfHwgJy0nO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICggdHlwZSApIHtcclxuXHRcdFx0bWVzc2FnZSA9ICc8c3Ryb25nPicgKyAoIGNmZy5pMThuICYmIGNmZy5pMThuLmJ1ZmZlcl9wcmV2aWV3ID8gY2ZnLmkxOG4uYnVmZmVyX3ByZXZpZXcgOiAnQnVmZmVyIHByZXZpZXcnICkgKyAnOjwvc3Ryb25nPiAnICtcclxuXHRcdFx0XHQoIGNmZy5pMThuICYmIGNmZy5pMThuLmJlZm9yZV9ib29raW5nID8gY2ZnLmkxOG4uYmVmb3JlX2Jvb2tpbmcgOiAnQmVmb3JlIGJvb2tpbmcnICkgKyAnICcgKyBiZWZvcmVfdGV4dCArXHJcblx0XHRcdFx0JyAvICcgKyAoIGNmZy5pMThuICYmIGNmZy5pMThuLmFmdGVyX2Jvb2tpbmcgPyBjZmcuaTE4bi5hZnRlcl9ib29raW5nIDogJ0FmdGVyIGJvb2tpbmcnICkgKyAnICcgKyBhZnRlcl90ZXh0O1xyXG5cdFx0XHRpZiAoICRub3RlLmh0bWwoKSAhPT0gbWVzc2FnZSApIHtcclxuXHRcdFx0XHQkbm90ZS5odG1sKCBtZXNzYWdlICk7XHJcblx0XHRcdH1cclxuXHRcdFx0aWYgKCAkbm90ZS5hdHRyKCAnaGlkZGVuJyApICkge1xyXG5cdFx0XHRcdCRub3RlLnJlbW92ZUF0dHIoICdoaWRkZW4nICk7XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdG1lc3NhZ2UgPSBjZmcuaTE4biAmJiBjZmcuaTE4bi5ub19idWZmZXIgPyBjZmcuaTE4bi5ub19idWZmZXIgOiAnTm8gYm9va2luZyBidWZmZXIgaXMgc2VsZWN0ZWQuJztcclxuXHRcdFx0aWYgKCAkbm90ZS50ZXh0KCkgIT09IG1lc3NhZ2UgKSB7XHJcblx0XHRcdFx0JG5vdGUudGV4dCggbWVzc2FnZSApO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmICggISAkbm90ZS5hdHRyKCAnaGlkZGVuJyApICkge1xyXG5cdFx0XHRcdCRub3RlLmF0dHIoICdoaWRkZW4nLCAnaGlkZGVuJyApO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiBhcHBseV9idWZmZXJfZGF5c19wcmV2aWV3KCBzZXR0aW5ncyApIHtcclxuXHRcdHZhciAkY2FsZW5kYXIgPSAkKCAnW2RhdGEtd3BiYy1hZy1jYWxlbmRhci1wYW5lbD1cIjFcIl0nICk7XHJcblx0XHR2YXIgYmVmb3JlX2RheXMgPSBnZXRfZGF5c192YWx1ZSggc2V0dGluZ3MuYm9va2luZ191bmF2YWlsYWJsZV9leHRyYV9kYXlzX2luICk7XHJcblx0XHR2YXIgYWZ0ZXJfZGF5cyA9IGdldF9kYXlzX3ZhbHVlKCBzZXR0aW5ncy5ib29raW5nX3VuYXZhaWxhYmxlX2V4dHJhX2RheXNfb3V0ICk7XHJcblx0XHR2YXIgZGF0ZV9jZWxscyA9IHt9O1xyXG5cdFx0dmFyIGJvb2tlZF9kYXRlcyA9IFtdO1xyXG5cclxuXHRcdGlmICggISBpc19idWZmZXJfYXZhaWxhYmxlKCkgKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoIHNldHRpbmdzLmJvb2tpbmdfdW5hdmFpbGFibGVfZXh0cmFfaW5fb3V0ICE9PSAnZCcgfHwgKCAhIGJlZm9yZV9kYXlzICYmICEgYWZ0ZXJfZGF5cyApICkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0JGNhbGVuZGFyLmZpbmQoICcuZGF0ZXBpY2stZGF5cy1jZWxsJyApLmVhY2goIGZ1bmN0aW9uICgpIHtcclxuXHRcdFx0dmFyICRjZWxsID0gJCggdGhpcyApO1xyXG5cdFx0XHR2YXIgc3FsX2RhdGUgPSBnZXRfc3FsX2RhdGVfZnJvbV9jZWxsKCB0aGlzICk7XHJcblx0XHRcdHZhciBjZWxsX2RhdGU7XHJcblxyXG5cdFx0XHRpZiAoICEgc3FsX2RhdGUgKSB7XHJcblx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRkYXRlX2NlbGxzWyBzcWxfZGF0ZSBdID0gJGNlbGw7XHJcblxyXG5cdFx0XHRpZiAoICRjZWxsLmhhc0NsYXNzKCAnZGF0ZV9hcHByb3ZlZCcgKSB8fCAkY2VsbC5oYXNDbGFzcyggJ2RhdGUyYXBwcm92ZScgKSApIHtcclxuXHRcdFx0XHRjZWxsX2RhdGUgPSBkYXRlX2Zyb21fc3FsKCBzcWxfZGF0ZSApO1xyXG5cdFx0XHRcdGlmICggY2VsbF9kYXRlICkge1xyXG5cdFx0XHRcdFx0Ym9va2VkX2RhdGVzLnB1c2goIGNlbGxfZGF0ZSApO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSApO1xyXG5cclxuXHRcdCQuZWFjaCggYm9va2VkX2RhdGVzLCBmdW5jdGlvbiAoIGluZGV4LCBib29rZWRfZGF0ZSApIHtcclxuXHRcdFx0dmFyIG9mZnNldDtcclxuXHRcdFx0dmFyIHRhcmdldF9zcWxfZGF0ZTtcclxuXHRcdFx0dmFyICR0YXJnZXRfY2VsbDtcclxuXHJcblx0XHRcdGZvciAoIG9mZnNldCA9IGJlZm9yZV9kYXlzICogLTE7IG9mZnNldCA8IDA7IG9mZnNldCsrICkge1xyXG5cdFx0XHRcdHRhcmdldF9zcWxfZGF0ZSA9IGRhdGVfdG9fc3FsKCBhZGRfZGF5cyggYm9va2VkX2RhdGUsIG9mZnNldCApICk7XHJcblx0XHRcdFx0JHRhcmdldF9jZWxsID0gZGF0ZV9jZWxsc1sgdGFyZ2V0X3NxbF9kYXRlIF07XHJcblx0XHRcdFx0aWYgKCAkdGFyZ2V0X2NlbGwgJiYgISAkdGFyZ2V0X2NlbGwuaGFzQ2xhc3MoICdkYXRlX2FwcHJvdmVkJyApICYmICEgJHRhcmdldF9jZWxsLmhhc0NsYXNzKCAnZGF0ZTJhcHByb3ZlJyApICkge1xyXG5cdFx0XHRcdFx0cmVtZW1iZXJfcHJldmlld19vcmlnaW4oICR0YXJnZXRfY2VsbCApO1xyXG5cdFx0XHRcdFx0JHRhcmdldF9jZWxsLmFkZENsYXNzKCAnZGF0ZV91c2VyX3VuYXZhaWxhYmxlIHdwYmNfYWdfcHJldmlld191bmF2YWlsYWJsZSB3cGJjX2FnX3ByZXZpZXdfYnVmZmVyX3VuYXZhaWxhYmxlIGJ1ZmZlcl91bmF2YWlsYWJsZScgKTtcclxuXHRcdFx0XHRcdCR0YXJnZXRfY2VsbC5hdHRyKCAnZGF0YS13cGJjLWFnLXByZXZpZXctcmVhc29uJywgJ3dwYmNfYWdfcHJldmlld19idWZmZXJfdW5hdmFpbGFibGUnICk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRmb3IgKCBvZmZzZXQgPSAxOyBvZmZzZXQgPD0gYWZ0ZXJfZGF5czsgb2Zmc2V0KysgKSB7XHJcblx0XHRcdFx0dGFyZ2V0X3NxbF9kYXRlID0gZGF0ZV90b19zcWwoIGFkZF9kYXlzKCBib29rZWRfZGF0ZSwgb2Zmc2V0ICkgKTtcclxuXHRcdFx0XHQkdGFyZ2V0X2NlbGwgPSBkYXRlX2NlbGxzWyB0YXJnZXRfc3FsX2RhdGUgXTtcclxuXHRcdFx0XHRpZiAoICR0YXJnZXRfY2VsbCAmJiAhICR0YXJnZXRfY2VsbC5oYXNDbGFzcyggJ2RhdGVfYXBwcm92ZWQnICkgJiYgISAkdGFyZ2V0X2NlbGwuaGFzQ2xhc3MoICdkYXRlMmFwcHJvdmUnICkgKSB7XHJcblx0XHRcdFx0XHRyZW1lbWJlcl9wcmV2aWV3X29yaWdpbiggJHRhcmdldF9jZWxsICk7XHJcblx0XHRcdFx0XHQkdGFyZ2V0X2NlbGwuYWRkQ2xhc3MoICdkYXRlX3VzZXJfdW5hdmFpbGFibGUgd3BiY19hZ19wcmV2aWV3X3VuYXZhaWxhYmxlIHdwYmNfYWdfcHJldmlld19idWZmZXJfdW5hdmFpbGFibGUgYnVmZmVyX3VuYXZhaWxhYmxlJyApO1xyXG5cdFx0XHRcdFx0JHRhcmdldF9jZWxsLmF0dHIoICdkYXRhLXdwYmMtYWctcHJldmlldy1yZWFzb24nLCAnd3BiY19hZ19wcmV2aWV3X2J1ZmZlcl91bmF2YWlsYWJsZScgKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH0gKTtcclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIHJlbWVtYmVyX3ByZXZpZXdfb3JpZ2luKCAkY2VsbCApIHtcclxuXHRcdGlmICggdHlwZW9mICRjZWxsLmF0dHIoICdkYXRhLXdwYmMtYWctb3JpZ2luYWwtZGF0ZS11c2VyLXVuYXZhaWxhYmxlJyApID09PSAndW5kZWZpbmVkJyApIHtcclxuXHRcdFx0JGNlbGwuYXR0ciggJ2RhdGEtd3BiYy1hZy1vcmlnaW5hbC1kYXRlLXVzZXItdW5hdmFpbGFibGUnLCAkY2VsbC5oYXNDbGFzcyggJ2RhdGVfdXNlcl91bmF2YWlsYWJsZScgKSA/ICcxJyA6ICcwJyApO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0ZnVuY3Rpb24gY2xlYXJfcHJldmlld19jZWxsKCAkY2VsbCApIHtcclxuXHRcdHZhciBoYWRfZGF0ZV91c2VyX3VuYXZhaWxhYmxlID0gJGNlbGwuYXR0ciggJ2RhdGEtd3BiYy1hZy1vcmlnaW5hbC1kYXRlLXVzZXItdW5hdmFpbGFibGUnICkgPT09ICcxJztcclxuXHJcblx0XHQkY2VsbC5yZW1vdmVDbGFzcyggcHJldmlld191bmF2YWlsYWJsZV9jbGFzc2VzICk7XHJcblx0XHQkY2VsbC5yZW1vdmVBdHRyKCAnZGF0YS13cGJjLWFnLXByZXZpZXctcmVhc29uJyApO1xyXG5cdFx0JGNlbGwucmVtb3ZlQXR0ciggJ2RhdGEtd3BiYy1hZy1vcmlnaW5hbC1kYXRlLXVzZXItdW5hdmFpbGFibGUnICk7XHJcblxyXG5cdFx0aWYgKCAhIGhhZF9kYXRlX3VzZXJfdW5hdmFpbGFibGUgKSB7XHJcblx0XHRcdCRjZWxsLnJlbW92ZUNsYXNzKCAnZGF0ZV91c2VyX3VuYXZhaWxhYmxlJyApO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0ZnVuY3Rpb24gYXBwbHlfY2FsZW5kYXJfcHJldmlldygpIHtcclxuXHRcdHZhciBzZXR0aW5ncyA9IGNvbGxlY3Rfc2V0dGluZ3MoKTtcclxuXHRcdHZhciB0b2RheV9kYXRlID0gZ2V0X3JlYWxfdG9kYXlfZGF0ZSgpO1xyXG5cdFx0dmFyIGF2YWlsYWJsZV9saW1pdCA9IGlzX2F2YWlsYWJsZV9saW1pdF9hdmFpbGFibGUoKSA/IHBhcnNlSW50KCBzZXR0aW5ncy5ib29raW5nX2F2YWlsYWJsZV9kYXlzX251bV9mcm9tX3RvZGF5IHx8ICcwJywgMTAgKSA6IDA7XHJcblx0XHR2YXIgJGNhbGVuZGFyID0gJCggJ1tkYXRhLXdwYmMtYWctY2FsZW5kYXItcGFuZWw9XCIxXCJdJyApO1xyXG5cclxuXHRcdHVwZGF0ZV93cGJjX3ByZXZpZXdfcGFyYW1zKCBzZXR0aW5ncyApO1xyXG5cdFx0dXBkYXRlX2J1ZmZlcl9wcmV2aWV3X25vdGUoIHNldHRpbmdzICk7XHJcblxyXG5cdFx0JGNhbGVuZGFyLmZpbmQoICcuZGF0ZXBpY2stZGF5cy1jZWxsJyApLmVhY2goIGZ1bmN0aW9uICgpIHtcclxuXHRcdFx0dmFyIGNlbGwgPSB0aGlzO1xyXG5cdFx0XHR2YXIgJGNlbGwgPSAkKCBjZWxsICk7XHJcblx0XHRcdHZhciBzcWxfZGF0ZSA9IGdldF9zcWxfZGF0ZV9mcm9tX2NlbGwoIGNlbGwgKTtcclxuXHRcdFx0dmFyIGNlbGxfZGF0ZSA9IGRhdGVfZnJvbV9zcWwoIHNxbF9kYXRlICk7XHJcblx0XHRcdHZhciBtYWtlX3VuYXZhaWxhYmxlID0gZmFsc2U7XHJcblx0XHRcdHZhciByZWFzb25fY2xhc3MgPSAnJztcclxuXHRcdFx0dmFyIHByZXZpb3VzX3JlYXNvbiA9ICRjZWxsLmF0dHIoICdkYXRhLXdwYmMtYWctcHJldmlldy1yZWFzb24nICkgfHwgJyc7XHJcblx0XHRcdHZhciBoYWRfZ2VuZXJhbF9wcmV2aWV3ID0gISEgcHJldmlvdXNfcmVhc29uIHx8ICRjZWxsLmhhc0NsYXNzKCAnd3BiY19hZ19wcmV2aWV3X3VuYXZhaWxhYmxlJyApIHx8ICRjZWxsLmhhc0NsYXNzKCAnd2Vla2RheV91bmF2YWlsYWJsZScgKSB8fCAkY2VsbC5oYXNDbGFzcyggJ2Zyb21fdG9kYXlfdW5hdmFpbGFibGUnICkgfHwgJGNlbGwuaGFzQ2xhc3MoICdsaW1pdF9hdmFpbGFibGVfZnJvbV90b2RheScgKSB8fCAkY2VsbC5oYXNDbGFzcyggJ2J1ZmZlcl91bmF2YWlsYWJsZScgKTtcclxuXHJcblx0XHRcdGlmICggISBjZWxsX2RhdGUgKSB7XHJcblx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAoIHNldHRpbmdzLndlZWtkYXlzLmluZGV4T2YoIGNlbGxfZGF0ZS5nZXREYXkoKSApID4gLTEgKSB7XHJcblx0XHRcdFx0bWFrZV91bmF2YWlsYWJsZSA9IHRydWU7XHJcblx0XHRcdFx0cmVhc29uX2NsYXNzID0gJ3dwYmNfYWdfcHJldmlld193ZWVrZGF5X3VuYXZhaWxhYmxlJztcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYgKCB1bmF2YWlsYWJsZV9mcm9tX3RvZGF5X2FwcGxpZXMoIGNlbGxfZGF0ZSwgdG9kYXlfZGF0ZSwgc2V0dGluZ3MuYm9va2luZ191bmF2YWlsYWJsZV9kYXlzX251bV9mcm9tX3RvZGF5ICkgKSB7XHJcblx0XHRcdFx0bWFrZV91bmF2YWlsYWJsZSA9IHRydWU7XHJcblx0XHRcdFx0cmVhc29uX2NsYXNzID0gJ3dwYmNfYWdfcHJldmlld19mcm9tX3RvZGF5X3VuYXZhaWxhYmxlJztcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0aWYgKCBhdmFpbGFibGVfbGltaXQgPiAwICYmIGRheXNfYmV0d2VlbiggY2VsbF9kYXRlLCB0b2RheV9kYXRlICkgPj0gYXZhaWxhYmxlX2xpbWl0ICkge1xyXG5cdFx0XHRcdG1ha2VfdW5hdmFpbGFibGUgPSB0cnVlO1xyXG5cdFx0XHRcdHJlYXNvbl9jbGFzcyA9ICd3cGJjX2FnX3ByZXZpZXdfbGltaXRfYXZhaWxhYmxlX2Zyb21fdG9kYXknO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAoIG1ha2VfdW5hdmFpbGFibGUgKSB7XHJcblx0XHRcdFx0aWYgKCBwcmV2aW91c19yZWFzb24gIT09IHJlYXNvbl9jbGFzcyApIHtcclxuXHRcdFx0XHRcdGlmICggaGFkX2dlbmVyYWxfcHJldmlldyApIHtcclxuXHRcdFx0XHRcdFx0Y2xlYXJfcHJldmlld19jZWxsKCAkY2VsbCApO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0cmVtZW1iZXJfcHJldmlld19vcmlnaW4oICRjZWxsICk7XHJcblx0XHRcdFx0XHQkY2VsbC5hZGRDbGFzcyggJ2RhdGVfdXNlcl91bmF2YWlsYWJsZSB3cGJjX2FnX3ByZXZpZXdfdW5hdmFpbGFibGUgJyArIHJlYXNvbl9jbGFzcyApO1xyXG5cdFx0XHRcdFx0JGNlbGwuYXR0ciggJ2RhdGEtd3BiYy1hZy1wcmV2aWV3LXJlYXNvbicsIHJlYXNvbl9jbGFzcyApO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSBlbHNlIGlmICggaGFkX2dlbmVyYWxfcHJldmlldyApIHtcclxuXHRcdFx0XHRjbGVhcl9wcmV2aWV3X2NlbGwoICRjZWxsICk7XHJcblx0XHRcdH1cclxuXHRcdH0gKTtcclxuXHJcblx0XHRhcHBseV9idWZmZXJfZGF5c19wcmV2aWV3KCBzZXR0aW5ncyApO1xyXG5cdH1cclxuXHJcblx0ZnVuY3Rpb24gcXVldWVfcHJldmlld19yZWZyZXNoKCkge1xyXG5cdFx0aWYgKCBwcmV2aWV3X2ZyYW1lICkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKCB3LnJlcXVlc3RBbmltYXRpb25GcmFtZSApIHtcclxuXHRcdFx0cHJldmlld19mcmFtZSA9IHcucmVxdWVzdEFuaW1hdGlvbkZyYW1lKCBmdW5jdGlvbiAoKSB7XHJcblx0XHRcdFx0cHJldmlld19mcmFtZSA9IDA7XHJcblx0XHRcdFx0YXBwbHlfY2FsZW5kYXJfcHJldmlldygpO1xyXG5cdFx0XHR9ICk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRwcmV2aWV3X2ZyYW1lID0gdy5zZXRUaW1lb3V0KCBmdW5jdGlvbiAoKSB7XHJcblx0XHRcdFx0cHJldmlld19mcmFtZSA9IDA7XHJcblx0XHRcdFx0YXBwbHlfY2FsZW5kYXJfcHJldmlldygpO1xyXG5cdFx0XHR9LCAwICk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiBzY2hlZHVsZV9wcmV2aWV3X3JlZnJlc2goIGRlbGF5ICkge1xyXG5cdFx0Y2xlYXJUaW1lb3V0KCBwcmV2aWV3X3RpbWVyICk7XHJcblx0XHRkZWxheSA9IHBhcnNlSW50KCBkZWxheSwgMTAgKSB8fCAwO1xyXG5cclxuXHRcdGlmICggZGVsYXkgPiAwICkge1xyXG5cdFx0XHRwcmV2aWV3X3RpbWVyID0gc2V0VGltZW91dCggcXVldWVfcHJldmlld19yZWZyZXNoLCBkZWxheSApO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0cXVldWVfcHJldmlld19yZWZyZXNoKCk7XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiB1cGRhdGVfaGludHMoIGhpbnRzICkge1xyXG5cdFx0aWYgKCAhIGhpbnRzICkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKCB0eXBlb2YgaGludHMuYm9va2luZ191bmF2YWlsYWJsZV9kYXlzX251bV9mcm9tX3RvZGF5X19oaW50ICE9PSAndW5kZWZpbmVkJyApIHtcclxuXHRcdFx0JCggJ1tkYXRhLXdwYmMtYWctaGludD1cImJvb2tpbmdfdW5hdmFpbGFibGVfZGF5c19udW1fZnJvbV90b2RheVwiXScgKS5odG1sKFxyXG5cdFx0XHRcdCc8c3BhbiBjbGFzcz1cIndwYmNfYWdfaGludF91bmF2YWlsYWJsZVwiPicgKyAkKCAnW2RhdGEtd3BiYy1hZy1oaW50PVwiYm9va2luZ191bmF2YWlsYWJsZV9kYXlzX251bV9mcm9tX3RvZGF5XCJdIC53cGJjX2FnX2hpbnRfdW5hdmFpbGFibGUnICkuZmlyc3QoKS50ZXh0KCkgKyAnPC9zcGFuPicgK1xyXG5cdFx0XHRcdGhpbnRzLmJvb2tpbmdfdW5hdmFpbGFibGVfZGF5c19udW1fZnJvbV90b2RheV9faGludFxyXG5cdFx0XHQpO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICggdHlwZW9mIGhpbnRzLmJvb2tpbmdfYXZhaWxhYmxlX2RheXNfbnVtX2Zyb21fdG9kYXlfX2hpbnQgIT09ICd1bmRlZmluZWQnICkge1xyXG5cdFx0XHQkKCAnW2RhdGEtd3BiYy1hZy1oaW50PVwiYm9va2luZ19hdmFpbGFibGVfZGF5c19udW1fZnJvbV90b2RheVwiXScgKS5odG1sKFxyXG5cdFx0XHRcdCc8c3BhbiBjbGFzcz1cIndwYmNfYWdfaGludF9hdmFpbGFibGVcIj4nICsgJCggJ1tkYXRhLXdwYmMtYWctaGludD1cImJvb2tpbmdfYXZhaWxhYmxlX2RheXNfbnVtX2Zyb21fdG9kYXlcIl0gLndwYmNfYWdfaGludF9hdmFpbGFibGUnICkuZmlyc3QoKS50ZXh0KCkgKyAnPC9zcGFuPicgK1xyXG5cdFx0XHRcdGhpbnRzLmJvb2tpbmdfYXZhaWxhYmxlX2RheXNfbnVtX2Zyb21fdG9kYXlfX2hpbnRcclxuXHRcdFx0KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIHNob3dfbWVzc2FnZSggbWVzc2FnZSwgdHlwZSwgZHVyYXRpb24gKSB7XHJcblx0XHRpZiAoIHR5cGVvZiB3LndwYmNfYWRtaW5fc2hvd19tZXNzYWdlID09PSAnZnVuY3Rpb24nICkge1xyXG5cdFx0XHR3LndwYmNfYWRtaW5fc2hvd19tZXNzYWdlKCBtZXNzYWdlLCB0eXBlIHx8ICdpbmZvJywgZHVyYXRpb24gfHwgMjAwMCwgZmFsc2UgKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHcuYWxlcnQoIG1lc3NhZ2UgKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIHNldF9idXN5KCAkYnV0dG9uLCBidXN5ICkge1xyXG5cdFx0dmFyIGJ1c3lfdGV4dDtcclxuXHJcblx0XHRpZiAoICEgJGJ1dHRvbiB8fCAhICRidXR0b24ubGVuZ3RoICkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKCBidXN5ICkge1xyXG5cdFx0XHRpZiAoICEgJGJ1dHRvbi5kYXRhKCAnd3BiYy1hZy1vcmlnaW5hbC1odG1sJyApICkge1xyXG5cdFx0XHRcdCRidXR0b24uZGF0YSggJ3dwYmMtYWctb3JpZ2luYWwtaHRtbCcsICRidXR0b24uaHRtbCgpICk7XHJcblx0XHRcdH1cclxuXHRcdFx0YnVzeV90ZXh0ID0gJGJ1dHRvbi5kYXRhKCAnd3BiYy11LWJ1c3ktdGV4dCcgKSB8fCAoIGNmZy5pMThuICYmIGNmZy5pMThuLnNhdmluZyApIHx8ICdTYXZpbmcuLi4nO1xyXG5cdFx0XHQkYnV0dG9uLmFkZENsYXNzKCAnd3BiY19hZ19pc19zYXZpbmcnICkuYXR0ciggJ2FyaWEtYnVzeScsICd0cnVlJyApLmh0bWwoICc8aSBjbGFzcz1cIm1lbnVfaWNvbiBpY29uLTF4IHdwYmNfaWNuX3JvdGF0ZV9yaWdodCB3cGJjX3NwaW5cIj48L2k+PHNwYW4gY2xhc3M9XCJpbi1idXR0b24tdGV4dFwiPiZuYnNwOyZuYnNwOycgKyBidXN5X3RleHQgKyAnPC9zcGFuPicgKTtcclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdCRidXR0b24ucmVtb3ZlQ2xhc3MoICd3cGJjX2FnX2lzX3NhdmluZycgKS5yZW1vdmVBdHRyKCAnYXJpYS1idXN5JyApO1xyXG5cdFx0XHRpZiAoICRidXR0b24uZGF0YSggJ3dwYmMtYWctb3JpZ2luYWwtaHRtbCcgKSApIHtcclxuXHRcdFx0XHQkYnV0dG9uLmh0bWwoICRidXR0b24uZGF0YSggJ3dwYmMtYWctb3JpZ2luYWwtaHRtbCcgKSApO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiByZXBsYWNlX2NhbGVuZGFyX3BhbmVsKCBodG1sICkge1xyXG5cdFx0dmFyICRob2xkZXIgPSAkKCAnPGRpdiAvPicgKS5hcHBlbmQoICQucGFyc2VIVE1MKCBodG1sLCBkb2N1bWVudCwgdHJ1ZSApICk7XHJcblx0XHR2YXIgJG5ld19wYW5lbCA9ICRob2xkZXIuZmluZCggJ1tkYXRhLXdwYmMtYWctY2FsZW5kYXItcGFuZWw9XCIxXCJdJyApLmZpcnN0KCk7XHJcblx0XHR2YXIgJG9sZF9wYW5lbCA9ICQoICdbZGF0YS13cGJjLWFnLWNhbGVuZGFyLXBhbmVsPVwiMVwiXScgKS5maXJzdCgpO1xyXG5cdFx0dmFyICRzY3JpcHRzO1xyXG5cclxuXHRcdGlmICggISAkbmV3X3BhbmVsLmxlbmd0aCB8fCAhICRvbGRfcGFuZWwubGVuZ3RoICkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0JHNjcmlwdHMgPSAkbmV3X3BhbmVsLmZpbmQoICdzY3JpcHQnICkucmVtb3ZlKCk7XHJcblx0XHQkb2xkX3BhbmVsLnJlcGxhY2VXaXRoKCAkbmV3X3BhbmVsICk7XHJcblxyXG5cdFx0JHNjcmlwdHMuZWFjaCggZnVuY3Rpb24gKCkge1xyXG5cdFx0XHR2YXIgY29kZSA9IHRoaXMudGV4dCB8fCB0aGlzLnRleHRDb250ZW50IHx8IHRoaXMuaW5uZXJIVE1MIHx8ICcnO1xyXG5cdFx0XHR2YXIgc3JjID0gdGhpcy5zcmMgfHwgJyc7XHJcblxyXG5cdFx0XHRpZiAoIHNyYyApIHtcclxuXHRcdFx0XHQkLmFqYXgoIHtcclxuXHRcdFx0XHRcdHVybDogc3JjLFxyXG5cdFx0XHRcdFx0ZGF0YVR5cGU6ICdzY3JpcHQnLFxyXG5cdFx0XHRcdFx0Y2FjaGU6IHRydWVcclxuXHRcdFx0XHR9ICk7XHJcblx0XHRcdH0gZWxzZSBpZiAoIGNvZGUgKSB7XHJcblx0XHRcdFx0JC5nbG9iYWxFdmFsKCBjb2RlICk7XHJcblx0XHRcdH1cclxuXHRcdH0gKTtcclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIHNldF9jYWxlbmRhcl9sb2FkaW5nKCBpc19sb2FkaW5nICkge1xyXG5cdFx0dmFyICRjYWxlbmRhciA9ICQoICdbZGF0YS13cGJjLWFnLWNhbGVuZGFyLXBhbmVsPVwiMVwiXScgKS5maXJzdCgpO1xyXG5cdFx0dmFyIGxvYWRpbmdfdGV4dCA9IGNmZy5pMThuICYmIGNmZy5pMThuLmxvYWRpbmcgPyBjZmcuaTE4bi5sb2FkaW5nIDogJ0xvYWRpbmcnO1xyXG5cdFx0dmFyICRsb2FkaW5nO1xyXG5cclxuXHRcdGlmICggISAkY2FsZW5kYXIubGVuZ3RoICkge1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKCBpc19sb2FkaW5nICkge1xyXG5cdFx0XHQkbG9hZGluZyA9ICRjYWxlbmRhci5maW5kKCAnLndwYmNfY2FsZW5kYXJfbG9hZGluZycgKS5maXJzdCgpO1xyXG5cdFx0XHRpZiAoICEgJGxvYWRpbmcubGVuZ3RoICkge1xyXG5cdFx0XHRcdCRsb2FkaW5nID0gJChcclxuXHRcdFx0XHRcdCc8ZGl2IGNsYXNzPVwid3BiY19jYWxlbmRhcl9sb2FkaW5nIHdwYmNfYWdfY2FsZW5kYXJfbG9hZGluZ1wiPicgK1xyXG5cdFx0XHRcdFx0XHQnPHNwYW4gY2xhc3M9XCJ3cGJjX2ljbl9hdXRvcmVuZXcgd3BiY19zcGluXCI+PC9zcGFuPiZuYnNwOyZuYnNwOycgK1xyXG5cdFx0XHRcdFx0XHQnPHNwYW4+PC9zcGFuPicgK1xyXG5cdFx0XHRcdFx0JzwvZGl2PidcclxuXHRcdFx0XHQpO1xyXG5cdFx0XHRcdCRsb2FkaW5nLmZpbmQoICdzcGFuJyApLmxhc3QoKS50ZXh0KCBsb2FkaW5nX3RleHQgKyAnLi4uJyApO1xyXG5cdFx0XHRcdCRjYWxlbmRhci5hcHBlbmQoICRsb2FkaW5nICk7XHJcblx0XHRcdH1cclxuXHRcdFx0JGNhbGVuZGFyLmFkZENsYXNzKCAnaXMtbG9hZGluZycgKS5hdHRyKCAnYXJpYS1idXN5JywgJ3RydWUnICk7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHQkY2FsZW5kYXIucmVtb3ZlQ2xhc3MoICdpcy1sb2FkaW5nJyApLnJlbW92ZUF0dHIoICdhcmlhLWJ1c3knICk7XHJcblx0XHRcdCRjYWxlbmRhci5maW5kKCAnLndwYmNfY2FsZW5kYXJfbG9hZGluZycgKS5yZW1vdmUoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIGdldF9wcmV2aWV3X3BheWxvYWQoKSB7XHJcblx0XHRyZXR1cm4ge1xyXG5cdFx0XHRhY3Rpb246IGNmZy5wcmV2aWV3X2FjdGlvbiB8fCAnV1BCQ19BSlhfQVZBSUxBQklMSVRZX0dFTkVSQUxfUFJFVklFVycsXHJcblx0XHRcdG5vbmNlOiBjZmcubm9uY2UgfHwgJycsXHJcblx0XHRcdHJlc291cmNlX2lkOiAkKCAnI3dwYmNfYWdfcmVzb3VyY2VfaWQnICkudmFsKCkgfHwgJycsXHJcblx0XHRcdG1vbnRoc19jb3VudDogJCggJyN3cGJjX2FnX21vbnRoc19jb3VudCcgKS52YWwoKSB8fCAnJ1xyXG5cdFx0fTtcclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIGxvYWRfY2FsZW5kYXJfcHJldmlldygpIHtcclxuXHRcdHZhciAkY2FsZW5kYXIgPSAkKCAnW2RhdGEtd3BiYy1hZy1jYWxlbmRhci1wYW5lbD1cIjFcIl0nICkuZmlyc3QoKTtcclxuXHRcdHZhciBjdXJyZW50X3ByZXZpZXdfYWpheDtcclxuXHJcblx0XHRpZiAoICEgY2ZnLmFqYXhfdXJsICkge1xyXG5cdFx0XHRzaG93X21lc3NhZ2UoICggY2ZnLmkxOG4gJiYgY2ZnLmkxOG4ucHJldmlld19mYWlsZWQgKSB8fCAnVW5hYmxlIHRvIHJlZnJlc2ggY2FsZW5kYXIgcHJldmlldy4nLCAnZXJyb3InLCAxMDAwMCApO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKCBwcmV2aWV3X2FqYXggJiYgcHJldmlld19hamF4LnJlYWR5U3RhdGUgIT09IDQgKSB7XHJcblx0XHRcdHByZXZpZXdfYWpheC5hYm9ydCgpO1xyXG5cdFx0fVxyXG5cclxuXHRcdHNldF9jYWxlbmRhcl9sb2FkaW5nKCB0cnVlICk7XHJcblxyXG5cdFx0Y3VycmVudF9wcmV2aWV3X2FqYXggPSAkLmFqYXgoIHtcclxuXHRcdFx0dXJsOiBjZmcuYWpheF91cmwsXHJcblx0XHRcdG1ldGhvZDogJ1BPU1QnLFxyXG5cdFx0XHRkYXRhVHlwZTogJ2pzb24nLFxyXG5cdFx0XHRkYXRhOiBnZXRfcHJldmlld19wYXlsb2FkKClcclxuXHRcdH0gKTtcclxuXHRcdHByZXZpZXdfYWpheCA9IGN1cnJlbnRfcHJldmlld19hamF4O1xyXG5cclxuXHRcdGN1cnJlbnRfcHJldmlld19hamF4LmRvbmUoIGZ1bmN0aW9uICggcmVzcG9uc2UgKSB7XHJcblx0XHRcdGlmICggISByZXNwb25zZSB8fCAhIHJlc3BvbnNlLnN1Y2Nlc3MgfHwgISByZXNwb25zZS5kYXRhIHx8ICEgcmVzcG9uc2UuZGF0YS5odG1sICkge1xyXG5cdFx0XHRcdHNob3dfbWVzc2FnZSggKCByZXNwb25zZSAmJiByZXNwb25zZS5kYXRhICYmIHJlc3BvbnNlLmRhdGEubWVzc2FnZSApIHx8ICggY2ZnLmkxOG4gJiYgY2ZnLmkxOG4ucHJldmlld19mYWlsZWQgKSB8fCAnVW5hYmxlIHRvIHJlZnJlc2ggY2FsZW5kYXIgcHJldmlldy4nLCAnZXJyb3InLCAxMDAwMCApO1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0cmVwbGFjZV9jYWxlbmRhcl9wYW5lbCggcmVzcG9uc2UuZGF0YS5odG1sICk7XHJcblx0XHRcdCQoICdbZGF0YS13cGJjLWFnLXBhZ2U9XCIxXCJdJyApLmF0dHIoICdkYXRhLXdwYmMtYWctcmVzb3VyY2UtaWQnLCByZXNwb25zZS5kYXRhLnJlc291cmNlX2lkIHx8ICcnICk7XHJcblx0XHRcdG9ic2VydmVfY2FsZW5kYXJfY2hhbmdlcygpO1xyXG5cdFx0XHRzY2hlZHVsZV9wcmV2aWV3X3JlZnJlc2goKTtcclxuXHRcdFx0c2V0VGltZW91dCggc2NoZWR1bGVfcHJldmlld19yZWZyZXNoLCA2MDAgKTtcclxuXHRcdH0gKS5mYWlsKCBmdW5jdGlvbiAoIGpxX3hociwgdGV4dF9zdGF0dXMgKSB7XHJcblx0XHRcdGlmICggdGV4dF9zdGF0dXMgIT09ICdhYm9ydCcgKSB7XHJcblx0XHRcdFx0c2hvd19tZXNzYWdlKCAoIGNmZy5pMThuICYmIGNmZy5pMThuLnByZXZpZXdfZmFpbGVkICkgfHwgJ1VuYWJsZSB0byByZWZyZXNoIGNhbGVuZGFyIHByZXZpZXcuJywgJ2Vycm9yJywgMTAwMDAgKTtcclxuXHRcdFx0fVxyXG5cdFx0fSApLmFsd2F5cyggZnVuY3Rpb24gKCkge1xyXG5cdFx0XHRpZiAoIHByZXZpZXdfYWpheCA9PT0gY3VycmVudF9wcmV2aWV3X2FqYXggKSB7XHJcblx0XHRcdFx0c2V0X2NhbGVuZGFyX2xvYWRpbmcoIGZhbHNlICk7XHJcblx0XHRcdH1cclxuXHRcdH0gKTtcclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIHNhdmVfc2V0dGluZ3MoIGJ1dHRvbiApIHtcclxuXHRcdHZhciAkYnV0dG9uID0gJCggYnV0dG9uICk7XHJcblx0XHR2YXIgc2V0dGluZ3MgPSBjb2xsZWN0X3NldHRpbmdzKCk7XHJcblx0XHR2YXIgcGF5bG9hZCA9ICQuZXh0ZW5kKCB7fSwgc2V0dGluZ3MsIHtcclxuXHRcdFx0YWN0aW9uOiBjZmcuYWN0aW9uIHx8ICdXUEJDX0FKWF9BVkFJTEFCSUxJVFlfR0VORVJBTF9TQVZFJyxcclxuXHRcdFx0bm9uY2U6IGNmZy5ub25jZSB8fCAnJyxcclxuXHRcdFx0Ym9va2luZ191bmF2YWlsYWJsZV9kYXlzOiBzZXR0aW5ncy53ZWVrZGF5c1xyXG5cdFx0fSApO1xyXG5cclxuXHRcdGFwcGVuZF93b3JraW5nX3RpbWVfcGF5bG9hZCggcGF5bG9hZCApO1xyXG5cclxuXHRcdGlmICggISBjZmcuYWpheF91cmwgKSB7XHJcblx0XHRcdHNob3dfbWVzc2FnZSggKCBjZmcuaTE4biAmJiBjZmcuaTE4bi5zYXZlX2ZhaWxlZCApIHx8ICdVbmFibGUgdG8gc2F2ZSBnZW5lcmFsIGF2YWlsYWJpbGl0eSBzZXR0aW5ncy4nLCAnZXJyb3InLCAxMDAwMCApO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0c2V0X2J1c3koICRidXR0b24sIHRydWUgKTtcclxuXHJcblx0XHQkLmFqYXgoIHtcclxuXHRcdFx0dXJsOiBjZmcuYWpheF91cmwsXHJcblx0XHRcdG1ldGhvZDogJ1BPU1QnLFxyXG5cdFx0XHRkYXRhVHlwZTogJ2pzb24nLFxyXG5cdFx0XHRkYXRhOiBwYXlsb2FkXHJcblx0XHR9ICkuZG9uZSggZnVuY3Rpb24gKCByZXNwb25zZSApIHtcclxuXHRcdFx0aWYgKCAhIHJlc3BvbnNlIHx8ICEgcmVzcG9uc2Uuc3VjY2VzcyApIHtcclxuXHRcdFx0XHRzaG93X21lc3NhZ2UoICggcmVzcG9uc2UgJiYgcmVzcG9uc2UuZGF0YSAmJiByZXNwb25zZS5kYXRhLm1lc3NhZ2UgKSB8fCAoIGNmZy5pMThuICYmIGNmZy5pMThuLnNhdmVfZmFpbGVkICkgfHwgJ1VuYWJsZSB0byBzYXZlIGdlbmVyYWwgYXZhaWxhYmlsaXR5IHNldHRpbmdzLicsICdlcnJvcicsIDEwMDAwICk7XHJcblx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRpZiAoIHJlc3BvbnNlLmRhdGEgJiYgcmVzcG9uc2UuZGF0YS5zZXR0aW5ncyAmJiByZXNwb25zZS5kYXRhLnNldHRpbmdzLmhpbnRzICkge1xyXG5cdFx0XHRcdHVwZGF0ZV9oaW50cyggcmVzcG9uc2UuZGF0YS5zZXR0aW5ncy5oaW50cyApO1xyXG5cdFx0XHR9XHJcblx0XHRcdGlmICggcmVzcG9uc2UuZGF0YSAmJiByZXNwb25zZS5kYXRhLnNldHRpbmdzICkge1xuXHRcdFx0XHRjZmcuc2V0dGluZ3MgPSByZXNwb25zZS5kYXRhLnNldHRpbmdzO1xuXHRcdFx0XHRpZiAoIHJlc3BvbnNlLmRhdGEuc2V0dGluZ3Mud29ya2luZ190aW1lICkge1xuXHRcdFx0XHRcdGFwcGx5X3dvcmtpbmdfdGltZV9zZXR0aW5nc190b19mb3JtKCByZXNwb25zZS5kYXRhLnNldHRpbmdzLndvcmtpbmdfdGltZSwgJCggJyN3cGJjX2FnX3Jlc291cmNlX2lkJyApLnZhbCgpICk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxyXG5cdFx0XHRsb2FkX2NhbGVuZGFyX3ByZXZpZXcoKTtcclxuXHRcdFx0ZG9jdW1lbnQuZGlzcGF0Y2hFdmVudCggbmV3IEN1c3RvbUV2ZW50KCAnd3BiYzphdmFpbGFiaWxpdHktZ2VuZXJhbDpzZXR0aW5ncy1zYXZlZCcsIHtcclxuXHRcdFx0XHRkZXRhaWw6IHtcclxuXHRcdFx0XHRcdHNldHRpbmdzOiByZXNwb25zZS5kYXRhICYmIHJlc3BvbnNlLmRhdGEuc2V0dGluZ3MgPyByZXNwb25zZS5kYXRhLnNldHRpbmdzIDoge31cclxuXHRcdFx0XHR9XHJcblx0XHRcdH0gKSApO1xyXG5cdFx0XHRzaG93X21lc3NhZ2UoICggcmVzcG9uc2UuZGF0YSAmJiByZXNwb25zZS5kYXRhLm1lc3NhZ2UgKSB8fCAoIGNmZy5pMThuICYmIGNmZy5pMThuLnNhdmVkICkgfHwgJ0dlbmVyYWwgYXZhaWxhYmlsaXR5IHNldHRpbmdzIHVwZGF0ZWQuJywgJ3N1Y2Nlc3MnLCAyMDAwICk7XHJcblx0XHR9ICkuZmFpbCggZnVuY3Rpb24gKCBqcV94aHIgKSB7XG5cdFx0XHR2YXIgcmVzcG9uc2VfbWVzc2FnZSA9IGpxX3hociAmJiBqcV94aHIucmVzcG9uc2VKU09OICYmIGpxX3hoci5yZXNwb25zZUpTT04uZGF0YSAmJiBqcV94aHIucmVzcG9uc2VKU09OLmRhdGEubWVzc2FnZVxuXHRcdFx0XHQ/IGpxX3hoci5yZXNwb25zZUpTT04uZGF0YS5tZXNzYWdlXG5cdFx0XHRcdDogJyc7XG5cblx0XHRcdHNob3dfbWVzc2FnZSggcmVzcG9uc2VfbWVzc2FnZSB8fCAoIGNmZy5pMThuICYmIGNmZy5pMThuLnNhdmVfZmFpbGVkICkgfHwgJ1VuYWJsZSB0byBzYXZlIGdlbmVyYWwgYXZhaWxhYmlsaXR5IHNldHRpbmdzLicsICdlcnJvcicsIDEwMDAwICk7XG5cdFx0fSApLmFsd2F5cyggZnVuY3Rpb24gKCkge1xuXHRcdFx0c2V0X2J1c3koICRidXR0b24sIGZhbHNlICk7XHJcblx0XHR9ICk7XHJcblx0fVxyXG5cclxuXHRmdW5jdGlvbiByZXNldF9zZXR0aW5ncyggYnV0dG9uICkge1xyXG5cdFx0dmFyIGNvbmZpcm1fbWVzc2FnZSA9ICggY2ZnLmkxOG4gJiYgY2ZnLmkxOG4ucmVzZXRfY29uZmlybSApIHx8ICdSZXNldCBnZW5lcmFsIGF2YWlsYWJpbGl0eSBzZXR0aW5ncyB0byBkZWZhdWx0IHZhbHVlcz8nO1xyXG5cdFx0dmFyIGRlZmF1bHRfc2V0dGluZ3MgPSBjZmcuZGVmYXVsdF9zZXR0aW5ncyB8fCB7XHJcblx0XHRcdHdlZWtkYXlzOiBbXSxcclxuXHRcdFx0Ym9va2luZ191bmF2YWlsYWJsZV9kYXlzX251bV9mcm9tX3RvZGF5OiAnMCcsXHJcblx0XHRcdGJvb2tpbmdfYXZhaWxhYmxlX2RheXNfbnVtX2Zyb21fdG9kYXk6ICcnLFxyXG5cdFx0XHRib29raW5nX3VuYXZhaWxhYmxlX2V4dHJhX2luX291dDogJycsXHJcblx0XHRcdGJvb2tpbmdfdW5hdmFpbGFibGVfZXh0cmFfbWludXRlc19pbjogJycsXHJcblx0XHRcdGJvb2tpbmdfdW5hdmFpbGFibGVfZXh0cmFfbWludXRlc19vdXQ6ICcnLFxyXG5cdFx0XHRib29raW5nX3VuYXZhaWxhYmxlX2V4dHJhX2RheXNfaW46ICcnLFxyXG5cdFx0XHRib29raW5nX3VuYXZhaWxhYmxlX2V4dHJhX2RheXNfb3V0OiAnJyxcclxuXHRcdFx0d29ya2luZ190aW1lOiB7fVxyXG5cdFx0fTtcclxuXHJcblx0XHRpZiAoICEgdy5jb25maXJtKCBjb25maXJtX21lc3NhZ2UgKSApIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdGFwcGx5X3NldHRpbmdzX3RvX2Zvcm0oIGRlZmF1bHRfc2V0dGluZ3MgKTtcclxuXHRcdGxvYWRfY2FsZW5kYXJfcHJldmlldygpO1xyXG5cdFx0c2hvd19tZXNzYWdlKCAoIGNmZy5pMThuICYmIGNmZy5pMThuLnJlc2V0X2FwcGxpZWQgKSB8fCAnRGVmYXVsdCBhdmFpbGFiaWxpdHkgc2V0dGluZ3MgYXJlIHJlYWR5IGZvciBwcmV2aWV3LiBDbGljayBTYXZlIENoYW5nZXMgdG8gYXBwbHkgdGhlbS4nLCAnc3VjY2VzcycsIDQwMDAgKTtcclxuXHR9XHJcblxyXG5cdGZ1bmN0aW9uIG9ic2VydmVfY2FsZW5kYXJfY2hhbmdlcygpIHtcclxuXHRcdHZhciB0YXJnZXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCAnW2RhdGEtd3BiYy1hZy1jYWxlbmRhci1wYW5lbD1cIjFcIl0nICk7XHJcblxyXG5cdFx0aWYgKCAhIHRhcmdldCB8fCAhIHcuTXV0YXRpb25PYnNlcnZlciApIHtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cclxuXHRcdGlmICggb2JzZXJ2ZXIgKSB7XHJcblx0XHRcdG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcclxuXHRcdH1cclxuXHJcblx0XHRvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCBzY2hlZHVsZV9wcmV2aWV3X3JlZnJlc2ggKTtcclxuXHRcdG9ic2VydmVyLm9ic2VydmUoIHRhcmdldCwge1xyXG5cdFx0XHRjaGlsZExpc3Q6IHRydWUsXHJcblx0XHRcdHN1YnRyZWU6IHRydWVcclxuXHRcdH0gKTtcclxuXHR9XHJcblxyXG5cdCQoIGRvY3VtZW50ICkub24oICdjbGljaycsICcud3BiY19hZ19yaWdodGJhcl90YWJzIFtyb2xlPVwidGFiXCJdJywgZnVuY3Rpb24gKCkge1xyXG5cdFx0c3dpdGNoX3BhbmVsKCAkKCB0aGlzICkgKTtcclxuXHR9ICk7XHJcblxyXG5cdCQoIGRvY3VtZW50ICkub24oICdjbGljaycsICcud3BiY19hZ19yaWdodGJhcl9wYW5lbHMgLmdyb3VwX19oZWFkZXInLCBmdW5jdGlvbiAoKSB7XHJcblx0XHR0b2dnbGVfZ3JvdXAoICQoIHRoaXMgKSApO1xyXG5cdH0gKTtcclxuXHJcblx0JCggZG9jdW1lbnQgKS5vbiggJ3N1Ym1pdCcsICdbZGF0YS13cGJjLWFnLXByZXZpZXctdG9vbGJhcj1cIjFcIl0nLCBmdW5jdGlvbiAoIGV2ZW50ICkge1xyXG5cdFx0ZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHRcdGxvYWRfY2FsZW5kYXJfcHJldmlldygpO1xyXG5cdH0gKTtcclxuXHJcblx0JCggZG9jdW1lbnQgKS5vbiggJ2NoYW5nZScsICcjd3BiY19hZ19yZXNvdXJjZV9pZCwgI3dwYmNfYWdfbW9udGhzX2NvdW50JywgbG9hZF9jYWxlbmRhcl9wcmV2aWV3ICk7XHJcblxyXG5cdCQoIGRvY3VtZW50ICkub24oICdjaGFuZ2UnLCAnI3dwYmNfYWdfcmVzb3VyY2VfaWQnLCBmdW5jdGlvbiAoKSB7XHJcblx0XHRjZmcuc2V0dGluZ3MgPSBjZmcuc2V0dGluZ3MgfHwge307XHJcblx0XHRjZmcuc2V0dGluZ3Mud29ya2luZ190aW1lID0gZ2V0X3dvcmtpbmdfdGltZV9zZXR0aW5nc19mcm9tX2Zvcm0oKTtcclxuXHRcdGFwcGx5X3dvcmtpbmdfdGltZV9zZXR0aW5nc190b19mb3JtKCBjZmcuc2V0dGluZ3Mud29ya2luZ190aW1lLCAkKCB0aGlzICkudmFsKCkgKTtcclxuXHR9ICk7XHJcblxyXG5cdCQoIGRvY3VtZW50ICkub24oICdpbnB1dCBjaGFuZ2UnLCAnW2RhdGEtd3BiYy1hZy1yYW5nZS1mb3JdJywgZnVuY3Rpb24gKCkge1xyXG5cdFx0c3luY19zZWxlY3RfZnJvbV9yYW5nZSggdGhpcyApO1xyXG5cdFx0c2NoZWR1bGVfcHJldmlld19yZWZyZXNoKCk7XHJcblx0fSApO1xyXG5cclxuXHQkKCBkb2N1bWVudCApLm9uKCAnY2hhbmdlJywgJ1tkYXRhLXdwYmMtYWctc2V0dGluZ3MtZm9ybT1cIjFcIl0gc2VsZWN0JywgZnVuY3Rpb24gKCkge1xyXG5cdFx0c3luY19yYW5nZV9mcm9tX3NlbGVjdCggdGhpcyApO1xyXG5cdH0gKTtcclxuXHJcblx0JCggZG9jdW1lbnQgKS5vbiggJ2NsaWNrJywgJ1tkYXRhLXdwYmMtYWctc3RlcHBlcl0nLCBmdW5jdGlvbiAoKSB7XHJcblx0XHRzdGVwX3NlbGVjdF92YWx1ZSggdGhpcyApO1xyXG5cdH0gKTtcclxuXHJcblx0JCggZG9jdW1lbnQgKS5vbiggJ2NoYW5nZScsICdpbnB1dFtuYW1lPVwiYm9va2luZ191bmF2YWlsYWJsZV9leHRyYV9pbl9vdXRcIl0nLCBmdW5jdGlvbiAoKSB7XHJcblx0XHRyZWZyZXNoX2J1ZmZlcl9maWVsZHMoKTtcclxuXHRcdHNjaGVkdWxlX3ByZXZpZXdfcmVmcmVzaCgpO1xyXG5cdH0gKTtcclxuXHJcblx0JCggZG9jdW1lbnQgKS5vbiggJ2NoYW5nZScsICdpbnB1dFtuYW1lPVwiYm9va2luZ193b3JraW5nX3RpbWVfZW5hYmxlZFwiXScsIHJlZnJlc2hfd29ya2luZ190aW1lX3BhbmVscyApO1xyXG5cclxuXHQkKCBkb2N1bWVudCApLm9uKCAnY2hhbmdlJywgJ2lucHV0W25hbWU9XCJib29raW5nX3dvcmtpbmdfdGltZV9yZXNvdXJjZV9tb2RlXCJdJywgcmVmcmVzaF93b3JraW5nX3RpbWVfcGFuZWxzICk7XG5cblx0JCggZG9jdW1lbnQgKS5vbiggJ2NoYW5nZScsICdbZGF0YS13cGJjLXdvcmtpbmctdGltZS1kYXktdG9nZ2xlPVwiMVwiXScsIGZ1bmN0aW9uICgpIHtcblx0XHRyZWZyZXNoX3dvcmtpbmdfdGltZV9kYXkoICQoIHRoaXMgKS5jbG9zZXN0KCAnW2RhdGEtd3BiYy13b3JraW5nLXRpbWUtZGF5XScgKSApO1xuXHR9ICk7XG5cblx0JCggZG9jdW1lbnQgKS5vbiggJ2NsaWNrJywgJ1tkYXRhLXdwYmMtYWRkLXdvcmtpbmctdGltZS1pbnRlcnZhbD1cIjFcIl0nLCBmdW5jdGlvbiAoKSB7XG5cdFx0YWRkX3dvcmtpbmdfdGltZV9pbnRlcnZhbCggdGhpcyApO1xuXHR9ICk7XG5cblx0JCggZG9jdW1lbnQgKS5vbiggJ2NsaWNrJywgJ1tkYXRhLXdwYmMtcmVtb3ZlLXdvcmtpbmctdGltZS1pbnRlcnZhbD1cIjFcIl0nLCBmdW5jdGlvbiAoKSB7XG5cdFx0cmVtb3ZlX3dvcmtpbmdfdGltZV9pbnRlcnZhbCggdGhpcyApO1xuXHR9ICk7XG5cclxuXHQkKCBkb2N1bWVudCApLm9uKCAnY2hhbmdlJywgJ1tkYXRhLXdwYmMtYWctc2V0dGluZ3MtZm9ybT1cIjFcIl0gaW5wdXQsIFtkYXRhLXdwYmMtYWctc2V0dGluZ3MtZm9ybT1cIjFcIl0gc2VsZWN0Jywgc2NoZWR1bGVfcHJldmlld19yZWZyZXNoICk7XHJcblxyXG5cdCQoIGRvY3VtZW50ICkub24oICdzdWJtaXQnLCAnW2RhdGEtd3BiYy1hZy1zZXR0aW5ncy1mb3JtPVwiMVwiXScsIGZ1bmN0aW9uICggZXZlbnQgKSB7XHJcblx0XHRldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0c2F2ZV9zZXR0aW5ncyggJCggJ1tkYXRhLXdwYmMtYWctc2F2ZT1cIjFcIl0nICkuZmlyc3QoKSApO1xyXG5cdH0gKTtcclxuXHJcblx0JCggZG9jdW1lbnQgKS5vbiggJ2NsaWNrJywgJ1tkYXRhLXdwYmMtYWctc2F2ZT1cIjFcIl0nLCBmdW5jdGlvbiAoKSB7XHJcblx0XHRzYXZlX3NldHRpbmdzKCB0aGlzICk7XHJcblx0fSApO1xyXG5cclxuXHQkKCBkb2N1bWVudCApLm9uKCAnY2xpY2snLCAnW2RhdGEtd3BiYy1hZy1yZXNldD1cIjFcIl0nLCBmdW5jdGlvbiAoKSB7XHJcblx0XHRyZXNldF9zZXR0aW5ncyggdGhpcyApO1xyXG5cdH0gKTtcclxuXHJcblx0JCggZG9jdW1lbnQgKS5yZWFkeSggZnVuY3Rpb24gKCkge1xyXG5cdFx0YXBwbHlfd29ya2luZ190aW1lX3NldHRpbmdzX3RvX2Zvcm0oICggY2ZnLnNldHRpbmdzICYmIGNmZy5zZXR0aW5ncy53b3JraW5nX3RpbWUgKSB8fCAoIGNmZy5kZWZhdWx0X3NldHRpbmdzICYmIGNmZy5kZWZhdWx0X3NldHRpbmdzLndvcmtpbmdfdGltZSApIHx8IHt9LCAkKCAnI3dwYmNfYWdfcmVzb3VyY2VfaWQnICkudmFsKCkgKTtcclxuXHRcdGFwcGx5X29wZW5fc2VjdGlvbl9mcm9tX3VybCgpO1xyXG5cdFx0cmVmcmVzaF9idWZmZXJfZmllbGRzKCk7XHJcblx0XHRzeW5jX2FsbF9yYW5nZXMoKTtcclxuXHRcdG9ic2VydmVfY2FsZW5kYXJfY2hhbmdlcygpO1xyXG5cdFx0c2NoZWR1bGVfcHJldmlld19yZWZyZXNoKCk7XHJcblx0XHRzZXRUaW1lb3V0KCBzY2hlZHVsZV9wcmV2aWV3X3JlZnJlc2gsIDYwMCApO1xyXG5cdH0gKTtcclxufSggalF1ZXJ5LCB3aW5kb3cg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