← All changes
|
includes/page-form-builder/form-settings/_out/settings_effects.js
+137
-12
11.4
→
11.9
View file →
| @@ -345,11 +345,33 @@ | ||
| 345 | 345 | } |
| 346 | 346 | function wpbc_bfb_form_appearance__sanitize_optional_color(value) { |
| 347 | 347 | return wpbc_bfb_form_appearance__sanitize_color(value, ''); |
| 348 | 348 | } |
| 349 | + | |
| 350 | +/** | |
| 351 | + * Resolve an opaque accent color with the PHP-localized installation default. | |
| 352 | + * | |
| 353 | + * The Form Style effects live outside the registration IIFE, so the default is | |
| 354 | + * deliberately read from the shared localized payload at the point of use. | |
| 355 | + * Invalid requested and localized values return an empty string, allowing the | |
| 356 | + * caller to skip the accent overlay without throwing or producing invalid CSS. | |
| 357 | + * | |
| 358 | + * @param {*} value Requested accent color. | |
| 359 | + * @return {string} Valid three- or six-digit hexadecimal color, or an empty string. | |
| 360 | + */ | |
| 361 | +function wpbc_bfb_global_form_style__sanitize_accent_color(value) { | |
| 362 | + const requested_color = String(value == null ? '' : value).trim(); | |
| 363 | + if (/^#(?:[0-9a-f]{3}|[0-9a-f]{6})$/i.test(requested_color)) { | |
| 364 | + return requested_color; | |
| 365 | + } | |
| 366 | + const settings_vars = window.wpbc_bfb_settings_vars && typeof window.wpbc_bfb_settings_vars === 'object' ? window.wpbc_bfb_settings_vars : {}; | |
| 367 | + const accent_defaults = settings_vars.form_accent_defaults && typeof settings_vars.form_accent_defaults === 'object' ? settings_vars.form_accent_defaults : {}; | |
| 368 | + const default_color = String(accent_defaults.booking_form_accent_color || '').trim(); | |
| 369 | + return /^#(?:[0-9a-f]{3}|[0-9a-f]{6})$/i.test(default_color) ? default_color : ''; | |
| 370 | +} | |
| 349 | 371 | function wpbc_bfb_form_appearance__sanitize_length(value, fallback) { |
| 350 | 372 | const v = String(value == null ? '' : value).trim(); |
| 351 | - if (/^-?\d+(?:\.\d+)?(?:px|rem|em|%)$/i.test(v)) { | |
| 373 | + if (/^\d+(?:\.\d+)?(?:px|rem|em|%)$/i.test(v)) { | |
| 352 | 374 | return v; |
| 353 | 375 | } |
| 354 | 376 | return fallback; |
| 355 | 377 | } |
| @@ -359,9 +381,9 @@ | ||
| 359 | 381 | if (parts.length < 1 || parts.length > 4) { |
| 360 | 382 | return fallback; |
| 361 | 383 | } |
| 362 | 384 | for (let i = 0; i < parts.length; i++) { |
| 363 | - if (!/^-?\d+(?:\.\d+)?(?:px|rem|em|%)$/i.test(parts[i])) { | |
| 385 | + if (!/^\d+(?:\.\d+)?(?:px|rem|em|%)$/i.test(parts[i])) { | |
| 364 | 386 | return fallback; |
| 365 | 387 | } |
| 366 | 388 | } |
| 367 | 389 | return parts.join(' '); |
| @@ -368,10 +390,10 @@ | ||
| 368 | 390 | } |
| 369 | 391 | function wpbc_bfb_form_appearance__normalize_spacing_numbers(vertical, horizontal) { |
| 370 | 392 | const v = String(vertical == null ? '' : vertical).trim(); |
| 371 | 393 | const h = String(horizontal == null ? '' : horizontal).trim(); |
| 372 | - const vertical_num = /^-?\d+(?:\.\d+)?$/.test(v) ? v : '0'; | |
| 373 | - const horizontal_num = /^-?\d+(?:\.\d+)?$/.test(h) ? h : vertical_num; | |
| 394 | + const vertical_num = /^\d+(?:\.\d+)?$/.test(v) ? v : '0'; | |
| 395 | + const horizontal_num = /^\d+(?:\.\d+)?$/.test(h) ? h : vertical_num; | |
| 374 | 396 | return vertical_num + 'px ' + horizontal_num + 'px'; |
| 375 | 397 | } |
| 376 | 398 | function wpbc_bfb_form_appearance__collect_options(ctx, key, value) { |
| 377 | 399 | let options = ctx && ctx.options && typeof ctx.options === 'object' ? Object.assign({}, ctx.options) : {}; |
| @@ -617,9 +639,9 @@ | ||
| 617 | 639 | const vars = wpbc_bfb_global_form_style__get_vars(); |
| 618 | 640 | return vars.form_style_presets && typeof vars.form_style_presets === 'object' ? vars.form_style_presets : {}; |
| 619 | 641 | } |
| 620 | 642 | function wpbc_bfb_global_form_style__get_custom_keys() { |
| 621 | - return ['booking_form_custom_background_color', 'booking_form_custom_border_color', 'booking_form_custom_border_width', 'booking_form_custom_border_radius', 'booking_form_custom_padding_vertical', 'booking_form_custom_padding_horizontal', 'booking_form_custom_text_color', 'booking_form_custom_field_background_color', 'booking_form_custom_field_text_color', 'booking_form_custom_field_border_color', 'booking_form_custom_button_background_color', 'booking_form_custom_button_text_color', 'booking_form_custom_button_border_color', 'booking_form_custom_button_hover_background_color', 'booking_form_custom_button_hover_text_color', 'booking_form_custom_button_hover_border_color', 'booking_form_custom_secondary_button_background_color', 'booking_form_custom_secondary_button_text_color', 'booking_form_custom_secondary_button_border_color', 'booking_form_custom_secondary_button_hover_background_color', 'booking_form_custom_secondary_button_hover_text_color', 'booking_form_custom_secondary_button_hover_border_color']; | |
| 643 | + return ['booking_form_custom_background_color', 'booking_form_custom_border_color', 'booking_form_custom_border_width', 'booking_form_custom_border_radius', 'booking_form_custom_padding_vertical', 'booking_form_custom_padding_horizontal', 'booking_form_custom_text_color', 'booking_form_custom_field_background_color', 'booking_form_custom_field_text_color', 'booking_form_custom_field_border_color', 'booking_form_custom_button_background_color', 'booking_form_custom_button_text_color', 'booking_form_custom_button_border_color', 'booking_form_custom_button_hover_background_color', 'booking_form_custom_button_hover_text_color', 'booking_form_custom_button_hover_border_color', 'booking_form_custom_secondary_button_background_color', 'booking_form_custom_secondary_button_text_color', 'booking_form_custom_secondary_button_border_color', 'booking_form_custom_secondary_button_hover_background_color', 'booking_form_custom_secondary_button_hover_text_color', 'booking_form_custom_secondary_button_hover_border_color', 'booking_form_custom_button_border_width', 'booking_form_custom_button_border_radius']; | |
| 622 | 644 | } |
| 623 | 645 | function wpbc_bfb_global_form_style__get_custom_defaults() { |
| 624 | 646 | const vars = wpbc_bfb_global_form_style__get_vars(); |
| 625 | 647 | const localized = vars.custom_form_style_defaults && typeof vars.custom_form_style_defaults === 'object' ? vars.custom_form_style_defaults : {}; |
| @@ -644,9 +666,11 @@ | ||
| 644 | 666 | booking_form_custom_secondary_button_text_color: '#444444', |
| 645 | 667 | booking_form_custom_secondary_button_border_color: '#eeeeee', |
| 646 | 668 | booking_form_custom_secondary_button_hover_background_color: '#fdfdfd', |
| 647 | 669 | booking_form_custom_secondary_button_hover_text_color: '#444444', |
| 648 | - booking_form_custom_secondary_button_hover_border_color: '#4d91cd' | |
| 670 | + booking_form_custom_secondary_button_hover_border_color: '#4d91cd', | |
| 671 | + booking_form_custom_button_border_width: '1px', | |
| 672 | + booking_form_custom_button_border_radius: '3px' | |
| 649 | 673 | }, localized); |
| 650 | 674 | } |
| 651 | 675 | function wpbc_bfb_global_form_style__get_current_options(ctx, key, value) { |
| 652 | 676 | const vars = wpbc_bfb_global_form_style__get_vars(); |
| @@ -664,8 +688,95 @@ | ||
| 664 | 688 | options.booking_form_style = 'light_bordered'; |
| 665 | 689 | } |
| 666 | 690 | return options; |
| 667 | 691 | } |
| 692 | +function wpbc_bfb_global_form_style__mix_colors(color, target, amount) { | |
| 693 | + let source = wpbc_bfb_global_form_style__sanitize_accent_color(color).replace('#', ''); | |
| 694 | + const destination = wpbc_bfb_form_appearance__sanitize_color(target, '#000000').replace('#', ''); | |
| 695 | + const channels = []; | |
| 696 | + if (!source) { | |
| 697 | + return ''; | |
| 698 | + } | |
| 699 | + if (source.length === 3) { | |
| 700 | + source = source.replace(/./g, function (value) { | |
| 701 | + return value + value; | |
| 702 | + }); | |
| 703 | + } | |
| 704 | + for (let index = 0; index < 3; index++) { | |
| 705 | + const source_channel = parseInt(source.substr(index * 2, 2), 16); | |
| 706 | + const target_channel = parseInt(destination.substr(index * 2, 2), 16); | |
| 707 | + channels.push(Math.round(source_channel + (target_channel - source_channel) * amount)); | |
| 708 | + } | |
| 709 | + return '#' + channels.map(function (channel) { | |
| 710 | + return ('0' + channel.toString(16)).slice(-2); | |
| 711 | + }).join(''); | |
| 712 | +} | |
| 713 | +function wpbc_bfb_global_form_style__get_luminance(color) { | |
| 714 | + let hex = wpbc_bfb_global_form_style__sanitize_accent_color(color).replace('#', ''); | |
| 715 | + if (!hex) { | |
| 716 | + return 0; | |
| 717 | + } | |
| 718 | + if (hex.length === 3) { | |
| 719 | + hex = hex.replace(/./g, function (value) { | |
| 720 | + return value + value; | |
| 721 | + }); | |
| 722 | + } | |
| 723 | + const channels = [0, 1, 2].map(function (index) { | |
| 724 | + const channel = parseInt(hex.substr(index * 2, 2), 16) / 255; | |
| 725 | + return channel <= 0.03928 ? channel / 12.92 : Math.pow((channel + 0.055) / 1.055, 2.4); | |
| 726 | + }); | |
| 727 | + return 0.2126 * channels[0] + 0.7152 * channels[1] + 0.0722 * channels[2]; | |
| 728 | +} | |
| 729 | + | |
| 730 | +/** | |
| 731 | + * Apply shared accent variables without masking explicit Custom button controls. | |
| 732 | + * | |
| 733 | + * @param {Object} css_vars Resolved base style variables. | |
| 734 | + * @param {Object} options Current global style options. | |
| 735 | + * @param {boolean} preserve_custom_button_colors Whether Custom button variables remain authoritative. | |
| 736 | + * @return {Object} Resolved variables with the optional accent overlay. | |
| 737 | + */ | |
| 738 | +function wpbc_bfb_global_form_style__apply_accent(css_vars, options, preserve_custom_button_colors) { | |
| 739 | + if (String(options.booking_form_accent_enabled || 'Off') !== 'On') { | |
| 740 | + return css_vars; | |
| 741 | + } | |
| 742 | + const accent = wpbc_bfb_global_form_style__sanitize_accent_color(options.booking_form_accent_color); | |
| 743 | + if (!accent) { | |
| 744 | + return css_vars; | |
| 745 | + } | |
| 746 | + const luminance = wpbc_bfb_global_form_style__get_luminance(accent); | |
| 747 | + const contrast = luminance > 0.18 ? '#000000' : '#ffffff'; | |
| 748 | + const hover_target = '#ffffff' === contrast ? '#000000' : '#ffffff'; | |
| 749 | + const hover = wpbc_bfb_global_form_style__mix_colors(accent, hover_target, 0.10); | |
| 750 | + const hover_contrast = contrast; | |
| 751 | + const accent_overlay = { | |
| 752 | + '--wpbc_form-accent-color': accent, | |
| 753 | + '--wpbc_form-accent-hover-color': hover, | |
| 754 | + '--wpbc_form-accent-contrast-color': contrast, | |
| 755 | + '--wpbc_form-field-focus-border-color': accent, | |
| 756 | + '--wpbc_form-field-focus-shadow-color': accent, | |
| 757 | + '--wpbc_form-choice-checked-border-color': accent, | |
| 758 | + '--wpbc_form-choice-checked-color': accent, | |
| 759 | + '--wpbc_form-choice-focus-color': accent, | |
| 760 | + '--wpbc_form-button-background-color': accent, | |
| 761 | + '--wpbc_form-button-background-color-alt': accent, | |
| 762 | + '--wpbc_form-button-border-color': accent, | |
| 763 | + '--wpbc_form-button-text-color': contrast, | |
| 764 | + '--wpbc_form-button-text-color-alt': contrast, | |
| 765 | + '--wpbc_form-button-hover-background-color': hover, | |
| 766 | + '--wpbc_form-button-hover-border-color': hover, | |
| 767 | + '--wpbc_form-button-hover-text-color': hover_contrast, | |
| 768 | + '--wpbc_form-button-light-hover-border-color': accent, | |
| 769 | + '--wpbc_form-button-primary-hover-border-color': hover, | |
| 770 | + '--wpbc_form-page-break-color': accent | |
| 771 | + }; | |
| 772 | + if (preserve_custom_button_colors) { | |
| 773 | + ['--wpbc_form-button-background-color', '--wpbc_form-button-background-color-alt', '--wpbc_form-button-border-color', '--wpbc_form-button-text-color', '--wpbc_form-button-text-color-alt', '--wpbc_form-button-hover-background-color', '--wpbc_form-button-hover-border-color', '--wpbc_form-button-hover-text-color', '--wpbc_form-button-light-hover-border-color', '--wpbc_form-button-primary-hover-border-color'].forEach(function (css_var_name) { | |
| 774 | + delete accent_overlay[css_var_name]; | |
| 775 | + }); | |
| 776 | + } | |
| 777 | + return Object.assign({}, css_vars, accent_overlay); | |
| 778 | +} | |
| 668 | 779 | function wpbc_bfb_global_form_style__resolve_css_vars(options) { |
| 669 | 780 | options = options && typeof options === 'object' ? options : {}; |
| 670 | 781 | const style = String(options.booking_form_style || 'light_bordered'); |
| 671 | 782 | const presets = wpbc_bfb_global_form_style__get_presets(); |
| @@ -671,11 +782,11 @@ | ||
| 671 | 782 | const presets = wpbc_bfb_global_form_style__get_presets(); |
| 672 | 783 | const preset = presets[style] || presets.light_bordered || {}; |
| 673 | 784 | const defaults = wpbc_bfb_global_form_style__get_custom_defaults(); |
| 674 | 785 | if ('custom' !== style) { |
| 675 | - return preset.css_vars && typeof preset.css_vars === 'object' ? Object.assign({}, preset.css_vars) : {}; | |
| 786 | + return wpbc_bfb_global_form_style__apply_accent(preset.css_vars && typeof preset.css_vars === 'object' ? Object.assign({}, preset.css_vars) : {}, options); | |
| 676 | 787 | } |
| 677 | - return { | |
| 788 | + const css_vars = { | |
| 678 | 789 | '--wpbc-bfb-form-background': wpbc_bfb_form_appearance__sanitize_color(options.booking_form_custom_background_color, defaults.booking_form_custom_background_color), |
| 679 | 790 | '--wpbc-bfb-form-border-color': wpbc_bfb_form_appearance__sanitize_color(options.booking_form_custom_border_color, defaults.booking_form_custom_border_color), |
| 680 | 791 | '--wpbc-bfb-form-border-width': wpbc_bfb_form_appearance__sanitize_length(options.booking_form_custom_border_width, defaults.booking_form_custom_border_width), |
| 681 | 792 | '--wpbc-bfb-form-border-radius': wpbc_bfb_form_appearance__sanitize_length(options.booking_form_custom_border_radius, defaults.booking_form_custom_border_radius), |
| @@ -691,8 +802,11 @@ | ||
| 691 | 802 | '--wpbc_form-field-border-color-spare': wpbc_bfb_form_appearance__sanitize_color(options.booking_form_custom_field_border_color, defaults.booking_form_custom_field_border_color), |
| 692 | 803 | '--wpbc_form-field-focus-border-color': '#066aab', |
| 693 | 804 | '--wpbc_form-field-focus-shadow-color': '#066aab', |
| 694 | 805 | '--wpbc_form-field-disabled-color': 'rgba(0, 0, 0, 0.2)', |
| 806 | + '--wpbc_form-button-border-radius': wpbc_bfb_form_appearance__sanitize_length(options.booking_form_custom_button_border_radius, defaults.booking_form_custom_button_border_radius), | |
| 807 | + '--wpbc_form-button-border-style': 'solid', | |
| 808 | + '--wpbc_form-button-border-size': wpbc_bfb_form_appearance__sanitize_length(options.booking_form_custom_button_border_width, defaults.booking_form_custom_button_border_width), | |
| 695 | 809 | '--wpbc_form-button-background-color': wpbc_bfb_form_appearance__sanitize_color(options.booking_form_custom_button_background_color, defaults.booking_form_custom_button_background_color), |
| 696 | 810 | '--wpbc_form-button-background-color-alt': wpbc_bfb_form_appearance__sanitize_color(options.booking_form_custom_button_background_color, defaults.booking_form_custom_button_background_color), |
| 697 | 811 | '--wpbc_form-button-border-color': wpbc_bfb_form_appearance__sanitize_color(options.booking_form_custom_button_border_color, defaults.booking_form_custom_button_border_color), |
| 698 | 812 | '--wpbc_form-button-text-color': wpbc_bfb_form_appearance__sanitize_color(options.booking_form_custom_button_text_color, defaults.booking_form_custom_button_text_color), |
| @@ -704,8 +818,9 @@ | ||
| 704 | 818 | '--wpbc_form-choice-checked-color': '#066aab', |
| 705 | 819 | '--wpbc_form-choice-focus-color': '#066aab', |
| 706 | 820 | '--wpbc_form-button-light-background-color': wpbc_bfb_form_appearance__sanitize_color(options.booking_form_custom_secondary_button_background_color, defaults.booking_form_custom_secondary_button_background_color), |
| 707 | 821 | '--wpbc_form-button-light-border-color': wpbc_bfb_form_appearance__sanitize_color(options.booking_form_custom_secondary_button_border_color, defaults.booking_form_custom_secondary_button_border_color), |
| 822 | + '--wpbc_form-button-light-border-size': wpbc_bfb_form_appearance__sanitize_length(options.booking_form_custom_button_border_width, defaults.booking_form_custom_button_border_width), | |
| 708 | 823 | '--wpbc_form-button-light-text-color': wpbc_bfb_form_appearance__sanitize_color(options.booking_form_custom_secondary_button_text_color, defaults.booking_form_custom_secondary_button_text_color), |
| 709 | 824 | '--wpbc_form-button-light-box-shadow': '0 2px 10px 2px #ffffff54', |
| 710 | 825 | '--wpbc_form-button-light-hover-background-color': wpbc_bfb_form_appearance__sanitize_color(options.booking_form_custom_secondary_button_hover_background_color, defaults.booking_form_custom_secondary_button_hover_background_color), |
| 711 | 826 | '--wpbc_form-button-light-hover-border-color': wpbc_bfb_form_appearance__sanitize_color(options.booking_form_custom_secondary_button_hover_border_color, defaults.booking_form_custom_secondary_button_hover_border_color), |
| @@ -713,8 +828,9 @@ | ||
| 713 | 828 | '--wpbc_form-button-light-hover-box-shadow': '0 2px 10px 2px #ffffff54', |
| 714 | 829 | '--wpbc_form-button-primary-hover-border-color': wpbc_bfb_form_appearance__sanitize_color(options.booking_form_custom_button_hover_border_color, defaults.booking_form_custom_button_hover_border_color), |
| 715 | 830 | '--wpbc_form-page-break-color': '#066aab' |
| 716 | 831 | }; |
| 832 | + return wpbc_bfb_global_form_style__apply_accent(css_vars, options, true); | |
| 717 | 833 | } |
| 718 | 834 | function wpbc_bfb_global_form_style__get_css_var_keys(options) { |
| 719 | 835 | const vars = wpbc_bfb_global_form_style__get_vars(); |
| 720 | 836 | const localized = Array.isArray(vars.form_style_css_var_names) ? vars.form_style_css_var_names : []; |
| @@ -742,8 +858,9 @@ | ||
| 742 | 858 | return keys; |
| 743 | 859 | } |
| 744 | 860 | function wpbc_bfb_global_form_style__sync_controls(options) { |
| 745 | 861 | const is_custom = 'custom' === String(options && options.booking_form_style ? options.booking_form_style : ''); |
| 862 | + const accent_enabled = 'On' === String(options && options.booking_form_accent_enabled ? options.booking_form_accent_enabled : 'Off'); | |
| 746 | 863 | const reset_row = document.querySelector('[data-wpbc-bfb-custom-appearance-reset-row]'); |
| 747 | 864 | wpbc_bfb_form_appearance__set_radio_control('booking_form_style', options.booking_form_style || 'light_bordered'); |
| 748 | 865 | document.querySelectorAll('.wpbc_bfb__form_setting_global_custom_style').forEach(function (row) { |
| 749 | 866 | row.hidden = !is_custom; |
| @@ -749,8 +866,13 @@ | ||
| 749 | 866 | row.hidden = !is_custom; |
| 750 | 867 | row.setAttribute('aria-hidden', is_custom ? 'false' : 'true'); |
| 751 | 868 | row.classList.toggle('is-hidden', !is_custom); |
| 752 | 869 | }); |
| 870 | + document.querySelectorAll('.wpbc_bfb__form_setting_global_accent_dependent').forEach(function (row) { | |
| 871 | + row.hidden = !accent_enabled; | |
| 872 | + row.setAttribute('aria-hidden', accent_enabled ? 'false' : 'true'); | |
| 873 | + row.classList.toggle('is-hidden', !accent_enabled); | |
| 874 | + }); | |
| 753 | 875 | if (reset_row) { |
| 754 | 876 | reset_row.hidden = !is_custom; |
| 755 | 877 | reset_row.setAttribute('aria-hidden', is_custom ? 'false' : 'true'); |
| 756 | 878 | reset_row.classList.toggle('is-hidden', !is_custom); |
| @@ -761,9 +883,12 @@ | ||
| 761 | 883 | const style = String(options.booking_form_style || 'light_bordered'); |
| 762 | 884 | const presets = wpbc_bfb_global_form_style__get_presets(); |
| 763 | 885 | const preset = presets[style] || presets.light_bordered || {}; |
| 764 | 886 | const css_vars = wpbc_bfb_global_form_style__resolve_css_vars(options); |
| 765 | - const root = ctx && ctx.canvas || document.getElementById('wpbc_bfb__theme_scope') || document; | |
| 887 | + // Form Style is global. Always start at the complete Builder theme scope so | |
| 888 | + // inline Custom tokens on an outer wrapper cannot leak into a preset when a | |
| 889 | + // field-level update provides only the inner canvas in ctx.canvas. | |
| 890 | + const root = document.getElementById('wpbc_bfb__theme_scope') || ctx && ctx.canvas || document; | |
| 766 | 891 | const theme_classes = []; |
| 767 | 892 | const css_var_keys = wpbc_bfb_global_form_style__get_css_var_keys(options); |
| 768 | 893 | wpbc_bfb_global_form_style__sync_controls(options); |
| 769 | 894 | Object.keys(presets).forEach(function (preset_key) { |
| @@ -801,9 +926,9 @@ | ||
| 801 | 926 | wrap.style.setProperty(css_key, css_vars[css_key]); |
| 802 | 927 | }); |
| 803 | 928 | }); |
| 804 | 929 | } |
| 805 | -['booking_form_style', 'booking_form_custom_background_color', 'booking_form_custom_border_color', 'booking_form_custom_border_width', 'booking_form_custom_border_radius', 'booking_form_custom_padding_vertical', 'booking_form_custom_padding_horizontal', 'booking_form_custom_text_color', 'booking_form_custom_field_background_color', 'booking_form_custom_field_text_color', 'booking_form_custom_field_border_color', 'booking_form_custom_button_background_color', 'booking_form_custom_button_text_color', 'booking_form_custom_button_border_color', 'booking_form_custom_button_hover_background_color', 'booking_form_custom_button_hover_text_color', 'booking_form_custom_button_hover_border_color', 'booking_form_custom_secondary_button_background_color', 'booking_form_custom_secondary_button_text_color', 'booking_form_custom_secondary_button_border_color', 'booking_form_custom_secondary_button_hover_background_color', 'booking_form_custom_secondary_button_hover_text_color', 'booking_form_custom_secondary_button_hover_border_color'].forEach(function (key) { | |
| 930 | +['booking_form_style', 'booking_form_accent_enabled', 'booking_form_accent_color', 'booking_form_custom_background_color', 'booking_form_custom_border_color', 'booking_form_custom_border_width', 'booking_form_custom_border_radius', 'booking_form_custom_padding_vertical', 'booking_form_custom_padding_horizontal', 'booking_form_custom_text_color', 'booking_form_custom_field_background_color', 'booking_form_custom_field_text_color', 'booking_form_custom_field_border_color', 'booking_form_custom_button_background_color', 'booking_form_custom_button_text_color', 'booking_form_custom_button_border_color', 'booking_form_custom_button_hover_background_color', 'booking_form_custom_button_hover_text_color', 'booking_form_custom_button_hover_border_color', 'booking_form_custom_secondary_button_background_color', 'booking_form_custom_secondary_button_text_color', 'booking_form_custom_secondary_button_border_color', 'booking_form_custom_secondary_button_hover_background_color', 'booking_form_custom_secondary_button_hover_text_color', 'booking_form_custom_secondary_button_hover_border_color', 'booking_form_custom_button_border_width', 'booking_form_custom_button_border_radius'].forEach(function (key) { | |
| 806 | 931 | WPBC_BFB_Settings_Effects.register(key, function (value, ctx) { |
| 807 | 932 | wpbc_bfb_global_form_style__apply(value, Object.assign({}, ctx || {}, { |
| 808 | 933 | key: key |
| 809 | 934 | })); |
| @@ -880,9 +1005,9 @@ | ||
| 880 | 1005 | } |
| 881 | 1006 | const v = String(value == null ? '' : value).trim(); |
| 882 | 1007 | |
| 883 | 1008 | // allow only "number + unit". |
| 884 | - if (v && !/^-?\d+(?:\.\d+)?(?:%|px|rem|em|vw|vh)$/.test(v)) { | |
| 1009 | + if (v && !/^\d+(?:\.\d+)?(?:%|px|rem|em|vw|vh)$/.test(v)) { | |
| 885 | 1010 | return; |
| 886 | 1011 | } |
| 887 | 1012 | wraps.forEach(function (wrap) { |
| 888 | 1013 | if (!wrap || !wrap.style) { |
| @@ -965,5 +1090,5 @@ | ||
| 965 | 1090 | source: 'settings-effects' |
| 966 | 1091 | }); |
| 967 | 1092 | }); |
| 968 | 1093 | }); |
| 969 | -//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5jbHVkZXMvcGFnZS1mb3JtLWJ1aWxkZXIvZm9ybS1zZXR0aW5ncy9fb3V0L3NldHRpbmdzX2VmZmVjdHMuanMiLCJuYW1lcyI6WyJ3IiwiZCIsIkVmZmVjdHMiLCJXUEJDX0JGQl9TZXR0aW5nc19FZmZlY3RzIiwibWFwIiwiT2JqZWN0IiwiY3JlYXRlIiwicmVnaXN0ZXIiLCJrZXkiLCJmbiIsIlN0cmluZyIsImdldF9jYW52YXNfcm9vdCIsInF1ZXJ5U2VsZWN0b3IiLCJnZXRFbGVtZW50QnlJZCIsImJvZHkiLCJkb2N1bWVudEVsZW1lbnQiLCJhcHBseV9vbmUiLCJ2YWx1ZSIsImN0eCIsImFzc2lnbiIsImNhbnZhcyIsImUiLCJjb25zb2xlIiwiZXJyb3IiLCJhcHBseV9hbGwiLCJvcHRpb25zIiwia2V5cyIsImZvckVhY2giLCJrIiwibm9ybWFsaXplX3BhY2siLCJwYWNrIiwiSlNPTiIsInBhcnNlIiwiX2UiLCJoYXNfc2hhcGUiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJjc3NfdmFycyIsImJmYl9vcHRpb25zIiwicmVhcHBseV9hZnRlcl9jYW52YXMiLCJzZXR0aW5nc19wYWNrIiwic291cmNlIiwid3BiY19iZmJfZ2xvYmFsX2Zvcm1fc3R5bGVfX2FwcGx5Iiwic2V0VGltZW91dCIsImFkZEV2ZW50TGlzdGVuZXIiLCJkZXRhaWwiLCJzZXR0aW5ncyIsImNzc19lc2NhcGUiLCJ2IiwiQ1NTIiwiZXNjYXBlIiwicmVwbGFjZSIsImZpbmRfZnNfcm9vdCIsImVsIiwiY2xvc2VzdCIsImRpcmVjdCIsImxlbl9ncm91cCIsInNwYWNpbmdfZ3JvdXAiLCJyYW5nZV9ncm91cCIsInJlYWRfdmFsdWVfZnJvbV9mc19yb290IiwiZnNfcm9vdCIsIm9yaWdpbmFsX3RhcmdldCIsImZzX3R5cGUiLCJnZXRBdHRyaWJ1dGUiLCJjb250cm9sX2lkIiwic2VsZWN0b3IiLCJjaGVja2VkIiwiZ3JvdXAiLCJ2ZXJ0aWNhbF9pbnB1dCIsImhvcml6b250YWxfaW5wdXQiLCJ3cml0ZXIiLCJ2ZXJ0aWNhbCIsImhvcml6b250YWwiLCJjb21iaW5lZCIsIndwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fbm9ybWFsaXplX3NwYWNpbmdfbnVtYmVycyIsInR5cGUiLCJjYiIsImFwcGx5X2NoYW5nZV9mcm9tX3RhcmdldCIsInRhcmdldCIsImV2ZW50X3R5cGUiLCJldmVudF9zb3VyY2UiLCJ0YWciLCJ0YWdOYW1lIiwidG9Mb3dlckNhc2UiLCJ1c2VfY2hhbmdlIiwic2NvcGUiLCJjb250cm9sIiwiaXNfY29sb3Jpc19jb250cm9sIiwibWF0Y2hlcyIsIm9uX2NoYW5nZSIsImV2IiwiaXNUcnVzdGVkIiwib25fY29sb3Jpc19waWNrIiwiY3VycmVudEVsIiwiaW5wdXQiLCJjb2xvciIsIndpbmRvdyIsImRvY3VtZW50Iiwid3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19nZXRfcHJlc2V0cyIsImJvcmRlcmVkIiwiYmFja2dyb3VuZCIsImJvcmRlckNvbG9yIiwiYm9yZGVyV2lkdGgiLCJyYWRpdXMiLCJwYWRkaW5nIiwic2hhZG93Iiwibm9uZSIsInNvZnQiLCJ3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX2lzX2RhcmtfdGhlbWUiLCJib29raW5nX2Zvcm1fdGhlbWUiLCJ3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX2dldF9wcmVzZXRfZm9yX29wdGlvbnMiLCJzdHlsZSIsInByZXNldHMiLCJ3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Nhbml0aXplX2NvbG9yIiwiZmFsbGJhY2siLCJ0cmltIiwidGVzdCIsIndwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2FuaXRpemVfb3B0aW9uYWxfY29sb3IiLCJ3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Nhbml0aXplX2xlbmd0aCIsIndwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2FuaXRpemVfc3BhY2luZyIsInBhcnRzIiwic3BsaXQiLCJsZW5ndGgiLCJpIiwiam9pbiIsImgiLCJ2ZXJ0aWNhbF9udW0iLCJob3Jpem9udGFsX251bSIsIndwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fY29sbGVjdF9vcHRpb25zIiwiV1BCQ19CRkJfRm9ybVNldHRpbmdzIiwiY29sbGVjdCIsIndwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9faXNfY3VzdG9tX2NvbnRyb2xfa2V5IiwiYm9va2luZ19mb3JtX2NvbnRhaW5lcl9zdHlsZSIsIndwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2V0X2NvbnRhaW5lcl9zdHlsZV9jb250cm9sIiwid3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19nZXRfY3VzdG9tX2NvbnRyb2xfa2V5cyIsImluZGV4T2YiLCJ3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3NldF9yYWRpb19jb250cm9sIiwicm93Iiwid3JhcCIsInJhZGlvcyIsInF1ZXJ5U2VsZWN0b3JBbGwiLCJyYWRpbyIsInNob3VsZF9jaGVjayIsImNob2ljZSIsImNsYXNzTGlzdCIsInRvZ2dsZSIsIndwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2V0X3NlbGVjdF9jb250cm9sIiwid3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19nZXRfY3VycmVudF9vcHRpb25zIiwid3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19nZXRfc3R5bGVfdmFsdWVfZnJvbV9vcHRpb25zIiwidGhlbWUiLCJwcmVmaXgiLCJ3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3N5bmNfZm9ybV9zdHlsZV9jb250cm9sIiwid3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19yZXNvbHZlX2Zvcm1fc3R5bGVfY2hvaWNlIiwiY3VycmVudF9vcHRpb25zIiwiY3VycmVudF90aGVtZSIsIndwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9faXNfdXNlcl90aGVtZV9zd2l0Y2giLCJ3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX2lzX2N1c3RvbV9zdHlsZSIsIndwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc3luY19jdXN0b21fY29udHJvbHMiLCJpc19jdXN0b20iLCJyZXNldF9yb3ciLCJiYXNlX3RoZW1lX3JvdyIsImhpZGRlbiIsInNldEF0dHJpYnV0ZSIsIndwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fcmVzb2x2ZSIsImdsb2JhbF9vcHRpb25zIiwid3BiY19iZmJfc2V0dGluZ3NfdmFycyIsImdsb2JhbF9hcHBlYXJhbmNlIiwiYm9va2luZ19mb3JtX2JhY2tncm91bmRfY29sb3IiLCJib29raW5nX2Zvcm1fYm9yZGVyX2NvbG9yIiwiYm9va2luZ19mb3JtX2JvcmRlcl93aWR0aCIsImJvb2tpbmdfZm9ybV9ib3JkZXJfcmFkaXVzIiwiYm9va2luZ19mb3JtX3BhZGRpbmciLCJ3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Jlc29sdmVfZGVzaWduX2NvbG9ycyIsInRleHRDb2xvciIsImZpZWxkQmFja2dyb3VuZCIsImZpZWxkVGV4dCIsImZpZWxkQm9yZGVyIiwiYm9va2luZ19mb3JtX3RleHRfY29sb3IiLCJib29raW5nX2Zvcm1fZmllbGRfYmFja2dyb3VuZF9jb2xvciIsImJvb2tpbmdfZm9ybV9maWVsZF90ZXh0X2NvbG9yIiwiYm9va2luZ19mb3JtX2ZpZWxkX2JvcmRlcl9jb2xvciIsIndwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fYXBwbHlfdmFycyIsInJlc29sdmVkIiwiZGVzaWduIiwicm9vdCIsIndyYXBzIiwicmVtb3ZlUHJvcGVydHkiLCJzZXRQcm9wZXJ0eSIsIndwYmNfYmZiX2dsb2JhbF9mb3JtX3N0eWxlX19nZXRfdmFycyIsIndwYmNfYmZiX2dsb2JhbF9mb3JtX3N0eWxlX19nZXRfcHJlc2V0cyIsInZhcnMiLCJmb3JtX3N0eWxlX3ByZXNldHMiLCJ3cGJjX2JmYl9nbG9iYWxfZm9ybV9zdHlsZV9fZ2V0X2N1c3RvbV9rZXlzIiwid3BiY19iZmJfZ2xvYmFsX2Zvcm1fc3R5bGVfX2dldF9jdXN0b21fZGVmYXVsdHMiLCJsb2NhbGl6ZWQiLCJjdXN0b21fZm9ybV9zdHlsZV9kZWZhdWx0cyIsImJvb2tpbmdfZm9ybV9jdXN0b21fYmFja2dyb3VuZF9jb2xvciIsImJvb2tpbmdfZm9ybV9jdXN0b21fYm9yZGVyX2NvbG9yIiwiYm9va2luZ19mb3JtX2N1c3RvbV9ib3JkZXJfd2lkdGgiLCJib29raW5nX2Zvcm1fY3VzdG9tX2JvcmRlcl9yYWRpdXMiLCJib29raW5nX2Zvcm1fY3VzdG9tX3BhZGRpbmdfdmVydGljYWwiLCJib29raW5nX2Zvcm1fY3VzdG9tX3BhZGRpbmdfaG9yaXpvbnRhbCIsImJvb2tpbmdfZm9ybV9jdXN0b21fdGV4dF9jb2xvciIsImJvb2tpbmdfZm9ybV9jdXN0b21fZmllbGRfYmFja2dyb3VuZF9jb2xvciIsImJvb2tpbmdfZm9ybV9jdXN0b21fZmllbGRfdGV4dF9jb2xvciIsImJvb2tpbmdfZm9ybV9jdXN0b21fZmllbGRfYm9yZGVyX2NvbG9yIiwiYm9va2luZ19mb3JtX2N1c3RvbV9idXR0b25fYmFja2dyb3VuZF9jb2xvciIsImJvb2tpbmdfZm9ybV9jdXN0b21fYnV0dG9uX3RleHRfY29sb3IiLCJib29raW5nX2Zvcm1fY3VzdG9tX2J1dHRvbl9ib3JkZXJfY29sb3IiLCJib29raW5nX2Zvcm1fY3VzdG9tX2J1dHRvbl9ob3Zlcl9iYWNrZ3JvdW5kX2NvbG9yIiwiYm9va2luZ19mb3JtX2N1c3RvbV9idXR0b25faG92ZXJfdGV4dF9jb2xvciIsImJvb2tpbmdfZm9ybV9jdXN0b21fYnV0dG9uX2hvdmVyX2JvcmRlcl9jb2xvciIsImJvb2tpbmdfZm9ybV9jdXN0b21fc2Vjb25kYXJ5X2J1dHRvbl9iYWNrZ3JvdW5kX2NvbG9yIiwiYm9va2luZ19mb3JtX2N1c3RvbV9zZWNvbmRhcnlfYnV0dG9uX3RleHRfY29sb3IiLCJib29raW5nX2Zvcm1fY3VzdG9tX3NlY29uZGFyeV9idXR0b25fYm9yZGVyX2NvbG9yIiwiYm9va2luZ19mb3JtX2N1c3RvbV9zZWNvbmRhcnlfYnV0dG9uX2hvdmVyX2JhY2tncm91bmRfY29sb3IiLCJib29raW5nX2Zvcm1fY3VzdG9tX3NlY29uZGFyeV9idXR0b25faG92ZXJfdGV4dF9jb2xvciIsImJvb2tpbmdfZm9ybV9jdXN0b21fc2Vjb25kYXJ5X2J1dHRvbl9ob3Zlcl9ib3JkZXJfY29sb3IiLCJ3cGJjX2JmYl9nbG9iYWxfZm9ybV9zdHlsZV9fZ2V0X2N1cnJlbnRfb3B0aW9ucyIsImdsb2JhbF9mb3JtX3N0eWxlIiwiYm9va2luZ19mb3JtX3N0eWxlIiwid3BiY19iZmJfZ2xvYmFsX2Zvcm1fc3R5bGVfX3Jlc29sdmVfY3NzX3ZhcnMiLCJwcmVzZXQiLCJsaWdodF9ib3JkZXJlZCIsImRlZmF1bHRzIiwid3BiY19iZmJfZ2xvYmFsX2Zvcm1fc3R5bGVfX2dldF9jc3NfdmFyX2tleXMiLCJBcnJheSIsImlzQXJyYXkiLCJmb3JtX3N0eWxlX2Nzc192YXJfbmFtZXMiLCJwcmVzZXRfa2V5IiwidmFyX25hbWUiLCJwdXNoIiwid3BiY19iZmJfZ2xvYmFsX2Zvcm1fc3R5bGVfX3N5bmNfY29udHJvbHMiLCJ0aGVtZV9jbGFzc2VzIiwiY3NzX3Zhcl9rZXlzIiwiY2xhc3NfbmFtZSIsInRoZW1lX2NsYXNzIiwicmVtb3ZlIiwiYWRkIiwiY3NzX2tleSIsIndwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc3luY19jdXN0b21fY29udHJvbHNfZnJvbV91aSIsInRoZW1lX3NlbGVjdG9yIiwiZnJvbSIsImNscyIsIndwYmNfYmZiX2FwaSIsIndpdGhfYnVpbGRlciIsIkJ1aWxkZXIiLCJjYXB0dXJlX3JpZ2h0X3NpZGViYXJfYWN0aXZlX3RhYl9yZXN0b3JlX2hhbmRsZSIsInRhYmxpc3RfZWwiLCJhY3RpdmVfdGFiX2VsIiwiY2xpY2siLCJyZXN0b3JlIiwidGFiX3Jlc3RvcmVfaGFuZGxlIiwicmVzdG9yZWQiLCJFVlMiLCJXUEJDX0JGQl9Db3JlIiwiV1BCQ19CRkJfRXZlbnRzIiwiRVZfRE9ORSIsIlNUUlVDVFVSRV9MT0FERUQiLCJDQU5WQVNfUkVGUkVTSEVEIiwiZG9fcmVzdG9yZSIsImJ1cyIsIm9mZiIsIl8iLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJvbiIsImVuYWJsZWQiLCJzZXRfcHJldmlld19tb2RlIiwicmVidWlsZCIsInJlaW5pdCJdLCJzb3VyY2VzIjpbImluY2x1ZGVzL3BhZ2UtZm9ybS1idWlsZGVyL2Zvcm0tc2V0dGluZ3MvX3NyYy9zZXR0aW5nc19lZmZlY3RzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQXBwbGllcyBlZmZlY3RzIGluIENhbnZhcywgYWZ0ZXIgY2hhbmdpbmcgc29tZSBzZXR0aW5ncyBpbiB0aGUgcmlnaHQgc2lkZWJhciBpbiBCRkIuXG4gKlxuICogQGZpbGUgLi4vaW5jbHVkZXMvcGFnZS1mb3JtLWJ1aWxkZXIvZm9ybS1zZXR0aW5ncy9fc3JjL3NldHRpbmdzX2VmZmVjdHMuanNcbiAqL1xuKGZ1bmN0aW9uICh3LCBkKSB7XG5cdCd1c2Ugc3RyaWN0JztcblxuXHRjb25zdCBFZmZlY3RzID0gKHcuV1BCQ19CRkJfU2V0dGluZ3NfRWZmZWN0cyA9IHcuV1BCQ19CRkJfU2V0dGluZ3NfRWZmZWN0cyB8fCB7fSk7XG5cdGNvbnN0IG1hcCAgICAgPSAoRWZmZWN0cy5tYXAgPSBFZmZlY3RzLm1hcCB8fCBPYmplY3QuY3JlYXRlKCBudWxsICkpO1xuXG5cdEVmZmVjdHMucmVnaXN0ZXIgPSBmdW5jdGlvbiAoa2V5LCBmbikge1xuXHRcdGlmICgga2V5ICYmIHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJyApIHtcblx0XHRcdG1hcFtTdHJpbmcoIGtleSApXSA9IGZuO1xuXHRcdH1cblx0fTtcblxuXHRmdW5jdGlvbiBnZXRfY2FudmFzX3Jvb3QoKSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdGQucXVlcnlTZWxlY3RvciggJyN3cGJjX2JmYl9fcGFnZXNfY29udGFpbmVyJyApIHx8XG5cdFx0XHRkLnF1ZXJ5U2VsZWN0b3IoICcud3BiY19iZmJfX3BhbmVsLS1wcmV2aWV3JyApIHx8XG5cdFx0XHRkLmdldEVsZW1lbnRCeUlkKCAnd3BiY19iZmJfX3ByZXZpZXcnICkgfHxcblx0XHRcdGQuYm9keSB8fCBkLmRvY3VtZW50RWxlbWVudFxuXHRcdCk7XG5cdH1cblxuXHRFZmZlY3RzLmFwcGx5X29uZSA9IGZ1bmN0aW9uIChrZXksIHZhbHVlLCBjdHgpIHtcblx0XHRjb25zdCBmbiA9IG1hcFtTdHJpbmcoIGtleSApXTtcblx0XHRpZiAoICEgZm4gKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHRyeSB7XG5cdFx0XHRmbiggdmFsdWUsIE9iamVjdC5hc3NpZ24oIHsga2V5LCB2YWx1ZSwgY2FudmFzOiBnZXRfY2FudmFzX3Jvb3QoKSB9LCBjdHggfHwge30gKSApO1xuXHRcdH0gY2F0Y2ggKCBlICkge1xuXHRcdFx0Ly8ga2VlcCBzaWxlbnQgaW4gcHJvZHVjdGlvbiBpZiB5b3UgcHJlZmVyXG5cdFx0XHRjb25zb2xlLmVycm9yKCAnV1BCQyBFZmZlY3RzIGVycm9yOicsIGtleSwgZSApO1xuXHRcdH1cblx0fTtcblxuXHRFZmZlY3RzLmFwcGx5X2FsbCA9IGZ1bmN0aW9uIChvcHRpb25zLCBjdHgpIHtcblx0XHRpZiAoICEgb3B0aW9ucyB8fCB0eXBlb2Ygb3B0aW9ucyAhPT0gJ29iamVjdCcgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdE9iamVjdC5rZXlzKCBvcHRpb25zICkuZm9yRWFjaCggZnVuY3Rpb24gKGspIHtcblx0XHRcdEVmZmVjdHMuYXBwbHlfb25lKCBrLCBvcHRpb25zW2tdLCBPYmplY3QuYXNzaWduKCB7IG9wdGlvbnM6IG9wdGlvbnMgfSwgY3R4IHx8IHt9ICkgKTtcblx0XHR9ICk7XG5cdH07XG5cblx0LyoqXG5cdCAqIE5vcm1hbGl6ZSBzZXR0aW5ncyBwYWNrIHRvIHRoZSBtaW5pbXVtIHJlcXVpcmVkIHNoYXBlOlxuXHQgKiB7IG9wdGlvbnM6IHt9LCBjc3NfdmFyczoge30gfVxuXHQgKlxuXHQgKiBAcGFyYW0geyp9IHBhY2tcblx0ICogQHJldHVybiB7e29wdGlvbnM6T2JqZWN0LCBjc3NfdmFyczpPYmplY3QsIGJmYl9vcHRpb25zPzpPYmplY3R9fG51bGx9XG5cdCAqL1xuXHRFZmZlY3RzLm5vcm1hbGl6ZV9wYWNrID0gZnVuY3Rpb24gKHBhY2spIHtcblxuXHRcdGlmICggcGFjayA9PT0gbnVsbCB8fCB0eXBlb2YgcGFjayA9PT0gJ3VuZGVmaW5lZCcgfHwgcGFjayA9PT0gJycgKSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cblx0XHQvLyBQYXJzZSBKU09OIHN0cmluZyBpZiBuZWVkZWQuXG5cdFx0aWYgKCB0eXBlb2YgcGFjayA9PT0gJ3N0cmluZycgKSB7XG5cdFx0XHR0cnkge1xuXHRcdFx0XHRwYWNrID0gSlNPTi5wYXJzZSggcGFjayApO1xuXHRcdFx0fSBjYXRjaCAoIF9lICkge1xuXHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdH1cblx0XHR9XG5cblx0XHRpZiAoICEgcGFjayB8fCB0eXBlb2YgcGFjayAhPT0gJ29iamVjdCcgKSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cblx0XHQvLyBJZiB1c2VyIHBhc3NlZCBqdXN0IHtrZXk6dmFsdWV9IG9wdGlvbnMgbWFwLCB3cmFwIGl0LlxuXHRcdGNvbnN0IGhhc19zaGFwZSA9XG5cdFx0XHRcdCAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKCBwYWNrLCAnb3B0aW9ucycgKSB8fFxuXHRcdFx0XHQgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCggcGFjaywgJ2Nzc192YXJzJyApIHx8XG5cdFx0XHRcdCAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKCBwYWNrLCAnYmZiX29wdGlvbnMnICk7XG5cblx0XHRpZiAoICEgaGFzX3NoYXBlICkge1xuXHRcdFx0cGFjayA9IHsgb3B0aW9uczogcGFjaywgY3NzX3ZhcnM6IHt9IH07XG5cdFx0fVxuXG5cdFx0aWYgKCAhIHBhY2sub3B0aW9ucyB8fCB0eXBlb2YgcGFjay5vcHRpb25zICE9PSAnb2JqZWN0JyApIHtcblx0XHRcdHBhY2sub3B0aW9ucyA9IHt9O1xuXHRcdH1cblx0XHRpZiAoICEgcGFjay5jc3NfdmFycyB8fCB0eXBlb2YgcGFjay5jc3NfdmFycyAhPT0gJ29iamVjdCcgKSB7XG5cdFx0XHRwYWNrLmNzc192YXJzID0ge307XG5cdFx0fVxuXG5cdFx0Ly8gYmZiX29wdGlvbnMgaXMgb3B0aW9uYWw7IGtlZXAgaWYgdmFsaWQuXG5cdFx0aWYgKCBwYWNrLmJmYl9vcHRpb25zICYmIHR5cGVvZiBwYWNrLmJmYl9vcHRpb25zICE9PSAnb2JqZWN0JyApIHtcblx0XHRcdGRlbGV0ZSBwYWNrLmJmYl9vcHRpb25zO1xuXHRcdH1cblxuXHRcdHJldHVybiBwYWNrO1xuXHR9O1xuXG5cdC8qKlxuXHQgKiBSZS1hcHBseSBzZXR0aW5ncyBlZmZlY3RzIGFmdGVyIGEgY2FudmFzIHJlYnVpbGQgLyBzdHJ1Y3R1cmUgbG9hZC5cblx0ICpcblx0ICogVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBzdHJ1Y3R1cmUgbG9hZGluZyBjYW4gcmVwbGFjZSBET00gbm9kZXMgdGhhdCBlZmZlY3RzIHRhcmdldC5cblx0ICpcblx0ICogQHBhcmFtIHsqfSBzZXR0aW5nc19wYWNrICBzdHJpbmd8b2JqZWN0IHNldHRpbmdzX2pzb24gcGFjayAob3IgcGxhaW4gb3B0aW9ucyBtYXApXG5cdCAqIEBwYXJhbSB7T2JqZWN0fSBbY3R4XVxuXHQgKi9cblx0RWZmZWN0cy5yZWFwcGx5X2FmdGVyX2NhbnZhcyA9IGZ1bmN0aW9uIChzZXR0aW5nc19wYWNrLCBjdHgpIHtcblxuXHRcdGNvbnN0IHBhY2sgPSBFZmZlY3RzLm5vcm1hbGl6ZV9wYWNrKCBzZXR0aW5nc19wYWNrICk7XG5cdFx0aWYgKCAhIHBhY2sgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Ly8gQXBwbHkgaW1tZWRpYXRlbHkgKGJlc3QgZWZmb3J0KS5cblx0XHRFZmZlY3RzLmFwcGx5X2FsbCggcGFjay5vcHRpb25zLCBPYmplY3QuYXNzaWduKCB7IHNvdXJjZTogJ3JlYXBwbHlfYWZ0ZXJfY2FudmFzJyB9LCBjdHggfHwge30gKSApO1xuXHRcdHdwYmNfYmZiX2dsb2JhbF9mb3JtX3N0eWxlX19hcHBseSggbnVsbCwgT2JqZWN0LmFzc2lnbiggeyBzb3VyY2U6ICdyZWFwcGx5X2FmdGVyX2NhbnZhcycgfSwgY3R4IHx8IHt9ICkgKTtcblxuXHRcdC8vIFNvbWUgbW9kdWxlcy9oeWRyYXRpb24gbWF5IHJ1biBzaG9ydGx5IGFmdGVyOyBkbyBvbmUgbW9yZSBwYXNzLlxuXHRcdHNldFRpbWVvdXQoIGZ1bmN0aW9uICgpIHtcblx0XHRcdEVmZmVjdHMuYXBwbHlfYWxsKCBwYWNrLm9wdGlvbnMsIE9iamVjdC5hc3NpZ24oIHsgc291cmNlOiAncmVhcHBseV9hZnRlcl9jYW52YXNfZGVsYXllZCcgfSwgY3R4IHx8IHt9ICkgKTtcblx0XHRcdHdwYmNfYmZiX2dsb2JhbF9mb3JtX3N0eWxlX19hcHBseSggbnVsbCwgT2JqZWN0LmFzc2lnbiggeyBzb3VyY2U6ICdyZWFwcGx5X2FmdGVyX2NhbnZhc19kZWxheWVkJyB9LCBjdHggfHwge30gKSApO1xuXHRcdH0sIDYwICk7XG5cdH07XG5cblx0Ly8gMSkgQXBwbHkgZnJvbSBBSkFYIGxvYWQuXG5cdGQuYWRkRXZlbnRMaXN0ZW5lciggJ3dwYmM6YmZiOmZvcm1fc2V0dGluZ3M6YXBwbHknLCBmdW5jdGlvbiAoZSkge1xuXHRcdGNvbnN0IHBhY2sgPSBlICYmIGUuZGV0YWlsID8gZS5kZXRhaWwuc2V0dGluZ3MgOiBudWxsO1xuXHRcdGlmICggcGFjayAmJiBwYWNrLm9wdGlvbnMgKSB7XG5cdFx0XHRFZmZlY3RzLmFwcGx5X2FsbCggcGFjay5vcHRpb25zLCB7IHNvdXJjZTogJ2FwcGx5JyB9ICk7XG5cdFx0fVxuXHRcdHdwYmNfYmZiX2dsb2JhbF9mb3JtX3N0eWxlX19hcHBseSggbnVsbCwgeyBzb3VyY2U6ICdhcHBseS1nbG9iYWwtc3R5bGUnIH0gKTtcblx0fSApO1xuXG5cdC8vIDIpIEFwcGx5IGxpdmUgZnJvbSBVSSBjaGFuZ2UgKGRlbGVnYXRlZCkuXG5cdGZ1bmN0aW9uIGNzc19lc2NhcGUodmFsdWUpIHtcblx0XHRjb25zdCB2ID0gU3RyaW5nKCB2YWx1ZSA9PSBudWxsID8gJycgOiB2YWx1ZSApO1xuXHRcdGlmICggdy5DU1MgJiYgdHlwZW9mIHcuQ1NTLmVzY2FwZSA9PT0gJ2Z1bmN0aW9uJyApIHtcblx0XHRcdHJldHVybiB3LkNTUy5lc2NhcGUoIHYgKTtcblx0XHR9XG5cdFx0cmV0dXJuIHYucmVwbGFjZSggL1teYS16QS1aMC05X1xcLV0vZywgJ1xcXFwkJicgKTtcblx0fVxuXG5cdGZ1bmN0aW9uIGZpbmRfZnNfcm9vdChlbCkge1xuXHRcdGlmICggISBlbCB8fCAhIGVsLmNsb3Nlc3QgKSB7XG5cdFx0XHRyZXR1cm4gbnVsbDtcblx0XHR9XG5cblx0XHQvLyAxKSBEaXJlY3Q6IGVsZW1lbnQgb3IgYW5jZXN0b3IgY2FycmllcyBGUyBrZXkgKGlucHV0L3NlbGVjdC90ZXh0YXJlYSB3cml0ZXIsIHJhZGlvIHdyYXBwZXIsIGV0Yy4pXG5cdFx0Y29uc3QgZGlyZWN0ID0gZWwuY2xvc2VzdCggJ1tkYXRhLXdwYmMtYmZiLWZzLWtleV0nICk7XG5cdFx0aWYgKCBkaXJlY3QgKSB7XG5cdFx0XHRyZXR1cm4gZGlyZWN0O1xuXHRcdH1cblxuXHRcdC8vIDIpIExlbmd0aDogZXZlbnQgY2FtZSBmcm9tIG51bWJlci91bml0L3JhbmdlIGluc2lkZSAud3BiY19zbGlkZXJfbGVuX2dyb3VwXG5cdFx0Y29uc3QgbGVuX2dyb3VwID0gZWwuY2xvc2VzdCggJy53cGJjX3NsaWRlcl9sZW5fZ3JvdXAnICk7XG5cdFx0aWYgKCBsZW5fZ3JvdXAgKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRsZW5fZ3JvdXAucXVlcnlTZWxlY3RvciggJ2lucHV0W2RhdGEtd3BiY19zbGlkZXJfbGVuX3dyaXRlcl1bZGF0YS13cGJjLWJmYi1mcy1rZXldJyApIHx8XG5cdFx0XHRcdGxlbl9ncm91cC5xdWVyeVNlbGVjdG9yKCAnaW5wdXRbZGF0YS13cGJjLWJmYi1mcy10eXBlPVwibGVuZ3RoXCJdW2RhdGEtd3BiYy1iZmItZnMta2V5XScgKSB8fFxuXHRcdFx0XHRudWxsXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdC8vIDMpIFNwYWNpbmc6IGV2ZW50IGNhbWUgZnJvbSB2ZXJ0aWNhbC9ob3Jpem9udGFsIG51bWJlciBpbnNpZGUgLndwYmNfc3BhY2luZ19ncm91cC5cblx0XHRjb25zdCBzcGFjaW5nX2dyb3VwID0gZWwuY2xvc2VzdCggJy53cGJjX3NwYWNpbmdfZ3JvdXAnICk7XG5cdFx0aWYgKCBzcGFjaW5nX2dyb3VwICkge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0c3BhY2luZ19ncm91cC5xdWVyeVNlbGVjdG9yKCAnaW5wdXRbZGF0YS13cGJjX3NwYWNpbmdfd3JpdGVyXVtkYXRhLXdwYmMtYmZiLWZzLWtleV0nICkgfHxcblx0XHRcdFx0c3BhY2luZ19ncm91cC5xdWVyeVNlbGVjdG9yKCAnaW5wdXRbZGF0YS13cGJjLWJmYi1mcy10eXBlPVwic3BhY2luZ1wiXVtkYXRhLXdwYmMtYmZiLWZzLWtleV0nICkgfHxcblx0XHRcdFx0bnVsbFxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHQvLyA0KSBSYW5nZTogZXZlbnQgY2FtZSBmcm9tIHJhbmdlIGlucHV0IGluc2lkZSAud3BiY19zbGlkZXJfcmFuZ2VfZ3JvdXBcblx0XHRjb25zdCByYW5nZV9ncm91cCA9IGVsLmNsb3Nlc3QoICcud3BiY19zbGlkZXJfcmFuZ2VfZ3JvdXAnICk7XG5cdFx0aWYgKCByYW5nZV9ncm91cCApIHtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdHJhbmdlX2dyb3VwLnF1ZXJ5U2VsZWN0b3IoICdpbnB1dFtkYXRhLXdwYmNfc2xpZGVyX3JhbmdlX3dyaXRlcl1bZGF0YS13cGJjLWJmYi1mcy1rZXldJyApIHx8XG5cdFx0XHRcdHJhbmdlX2dyb3VwLnF1ZXJ5U2VsZWN0b3IoICdpbnB1dFtkYXRhLXdwYmNfc2xpZGVyX3JhbmdlX3dyaXRlcl0nICkgfHxcblx0XHRcdFx0bnVsbFxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdGZ1bmN0aW9uIHJlYWRfdmFsdWVfZnJvbV9mc19yb290KGZzX3Jvb3QsIG9yaWdpbmFsX3RhcmdldCkge1xuXHRcdGlmICggISBmc19yb290ICkge1xuXHRcdFx0cmV0dXJuICcnO1xuXHRcdH1cblxuXHRcdGNvbnN0IGZzX3R5cGUgPSBTdHJpbmcoIGZzX3Jvb3QuZ2V0QXR0cmlidXRlKCAnZGF0YS13cGJjLWJmYi1mcy10eXBlJyApIHx8ICcnICk7XG5cblx0XHQvLyBSQURJTzogcmVhZCBjaGVja2VkIHdpdGhpbiB3cmFwcGVyLlxuXHRcdGlmICggZnNfdHlwZSA9PT0gJ3JhZGlvJyApIHtcblx0XHRcdGNvbnN0IGNvbnRyb2xfaWQgPSBmc19yb290LmdldEF0dHJpYnV0ZSggJ2RhdGEtd3BiYy1iZmItZnMtY29udHJvbGlkJyApIHx8ICcnO1xuXHRcdFx0Y29uc3Qgc2VsZWN0b3IgICA9IGNvbnRyb2xfaWRcblx0XHRcdFx0PyAnaW5wdXRbdHlwZT1cInJhZGlvXCJdW25hbWU9XCInICsgY3NzX2VzY2FwZSggY29udHJvbF9pZCApICsgJ1wiXTpjaGVja2VkJ1xuXHRcdFx0XHQ6ICdpbnB1dFt0eXBlPVwicmFkaW9cIl06Y2hlY2tlZCc7XG5cblx0XHRcdGNvbnN0IGNoZWNrZWQgPSBmc19yb290LnF1ZXJ5U2VsZWN0b3IoIHNlbGVjdG9yICk7XG5cdFx0XHRyZXR1cm4gY2hlY2tlZCA/IFN0cmluZyggY2hlY2tlZC52YWx1ZSB8fCAnJyApIDogJyc7XG5cdFx0fVxuXG5cdFx0aWYgKCBmc190eXBlID09PSAnc3BhY2luZycgKSB7XG5cdFx0XHRjb25zdCBncm91cCA9ICggb3JpZ2luYWxfdGFyZ2V0ICYmIG9yaWdpbmFsX3RhcmdldC5jbG9zZXN0ICkgPyBvcmlnaW5hbF90YXJnZXQuY2xvc2VzdCggJy53cGJjX3NwYWNpbmdfZ3JvdXAnICkgOiBmc19yb290LmNsb3Nlc3QoICcud3BiY19zcGFjaW5nX2dyb3VwJyApO1xuXHRcdFx0Y29uc3QgdmVydGljYWxfaW5wdXQgPSBncm91cCA/IGdyb3VwLnF1ZXJ5U2VsZWN0b3IoICdpbnB1dFtkYXRhLXdwYmNfc3BhY2luZ192ZXJ0aWNhbF0nICkgOiBudWxsO1xuXHRcdFx0Y29uc3QgaG9yaXpvbnRhbF9pbnB1dCA9IGdyb3VwID8gZ3JvdXAucXVlcnlTZWxlY3RvciggJ2lucHV0W2RhdGEtd3BiY19zcGFjaW5nX2hvcml6b250YWxdJyApIDogbnVsbDtcblx0XHRcdGNvbnN0IHdyaXRlciA9IGdyb3VwID8gZ3JvdXAucXVlcnlTZWxlY3RvciggJ2lucHV0W2RhdGEtd3BiY19zcGFjaW5nX3dyaXRlcl0nICkgOiBudWxsO1xuXHRcdFx0Y29uc3QgdmVydGljYWwgPSB2ZXJ0aWNhbF9pbnB1dCA/IFN0cmluZyggdmVydGljYWxfaW5wdXQudmFsdWUgfHwgJzAnICkgOiAnMCc7XG5cdFx0XHRjb25zdCBob3Jpem9udGFsID0gaG9yaXpvbnRhbF9pbnB1dCA/IFN0cmluZyggaG9yaXpvbnRhbF9pbnB1dC52YWx1ZSB8fCB2ZXJ0aWNhbCApIDogdmVydGljYWw7XG5cdFx0XHRjb25zdCBjb21iaW5lZCA9IHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fbm9ybWFsaXplX3NwYWNpbmdfbnVtYmVycyggdmVydGljYWwsIGhvcml6b250YWwgKTtcblxuXHRcdFx0aWYgKCB3cml0ZXIgKSB7XG5cdFx0XHRcdHdyaXRlci52YWx1ZSA9IGNvbWJpbmVkO1xuXHRcdFx0fVxuXG5cdFx0XHRyZXR1cm4gY29tYmluZWQ7XG5cdFx0fVxuXG5cdFx0Ly8gQ0hFQ0tCT1ggLyBUT0dHTEVcblx0XHRpZiAoIChvcmlnaW5hbF90YXJnZXQgJiYgb3JpZ2luYWxfdGFyZ2V0LnR5cGUgPT09ICdjaGVja2JveCcpIHx8IGZzX3Jvb3QudHlwZSA9PT0gJ2NoZWNrYm94JyApIHtcblx0XHRcdGNvbnN0IGNiID0gKG9yaWdpbmFsX3RhcmdldCAmJiBvcmlnaW5hbF90YXJnZXQudHlwZSA9PT0gJ2NoZWNrYm94JykgPyBvcmlnaW5hbF90YXJnZXQgOiBmc19yb290O1xuXHRcdFx0cmV0dXJuIGNiLmNoZWNrZWQgPyAnT24nIDogJ09mZic7XG5cdFx0fVxuXG5cdFx0Ly8gREVGQVVMVDogd3JpdGVyL2lucHV0L3RleHRhcmVhL3NlbGVjdFxuXHRcdGlmICggZnNfcm9vdC52YWx1ZSAhPSBudWxsICkge1xuXHRcdFx0cmV0dXJuIFN0cmluZyggZnNfcm9vdC52YWx1ZSApO1xuXHRcdH1cblx0XHRpZiAoIG9yaWdpbmFsX3RhcmdldCAmJiBvcmlnaW5hbF90YXJnZXQudmFsdWUgIT0gbnVsbCApIHtcblx0XHRcdHJldHVybiBTdHJpbmcoIG9yaWdpbmFsX3RhcmdldC52YWx1ZSApO1xuXHRcdH1cblxuXHRcdHJldHVybiAnJztcblx0fVxuXG5cdGZ1bmN0aW9uIGFwcGx5X2NoYW5nZV9mcm9tX3RhcmdldCh0YXJnZXQsIGV2ZW50X3R5cGUsIGV2ZW50X3NvdXJjZSkge1xuXHRcdGlmICggISB0YXJnZXQgKSB7IHJldHVybjsgfVxuXG5cdFx0Y29uc3QgZnNfcm9vdCA9IGZpbmRfZnNfcm9vdCggdGFyZ2V0ICk7XG5cdFx0aWYgKCAhIGZzX3Jvb3QgKSB7IHJldHVybjsgfVxuXG5cblx0XHQvLyBOb3JtYWxpemUgZXZlbnRzIHNvIGVhY2ggY29udHJvbCBwcm9kdWNlcyBleGFjdGx5IG9uZSBlZmZlY3QgY2FsbC5cblx0XHQvLyAtIHRvZ2dsZS9zZWxlY3QvcmFkaW8vY2hlY2tib3ggPT4gXCJjaGFuZ2VcIiBvbmx5LlxuXHRcdC8vIC0gZXZlcnl0aGluZyBlbHNlICAgICAgICAgICAgICA9PiBcImlucHV0XCIgb25seS5cblx0XHRjb25zdCBmc190eXBlID0gU3RyaW5nKCBmc19yb290LmdldEF0dHJpYnV0ZSggJ2RhdGEtd3BiYy1iZmItZnMtdHlwZScgKSB8fCAnJyApO1xuXHRcdGNvbnN0IHRhZyAgICAgPSBTdHJpbmcoIHRhcmdldC50YWdOYW1lIHx8ICcnICkudG9Mb3dlckNhc2UoKTtcblx0XHRjb25zdCB0eXBlICAgID0gU3RyaW5nKCB0YXJnZXQudHlwZSB8fCAnJyApLnRvTG93ZXJDYXNlKCk7XG5cblx0XHRjb25zdCB1c2VfY2hhbmdlID0gKGZzX3R5cGUgPT09ICd0b2dnbGUnKSB8fCAoZnNfdHlwZSA9PT0gJ3NlbGVjdCcpIHx8IChmc190eXBlID09PSAncmFkaW8nKSB8fCAodHlwZSA9PT0gJ2NoZWNrYm94JykgfHwgKHR5cGUgPT09ICdyYWRpbycpIHx8ICh0YWcgPT09ICdzZWxlY3QnKTtcblxuXHRcdGlmICggdXNlX2NoYW5nZSAmJiBldmVudF90eXBlICE9PSAnY2hhbmdlJyApIHsgcmV0dXJuOyB9XG5cdFx0aWYgKCAhIHVzZV9jaGFuZ2UgJiYgZXZlbnRfdHlwZSAhPT0gJ2lucHV0JyApIHsgcmV0dXJuOyB9XG5cdFx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdFx0Y29uc3Qga2V5ID0gZnNfcm9vdC5nZXRBdHRyaWJ1dGUoICdkYXRhLXdwYmMtYmZiLWZzLWtleScgKTtcblx0XHRpZiAoICEga2V5ICkgeyByZXR1cm47IH1cblxuXHRcdGNvbnN0IHNjb3BlID0gZnNfcm9vdC5nZXRBdHRyaWJ1dGUoICdkYXRhLXdwYmMtYmZiLWZzLXNjb3BlJyApIHx8ICcnO1xuXHRcdGNvbnN0IHZhbHVlID0gcmVhZF92YWx1ZV9mcm9tX2ZzX3Jvb3QoIGZzX3Jvb3QsIHRhcmdldCApO1xuXG5cdFx0RWZmZWN0cy5hcHBseV9vbmUoIGtleSwgdmFsdWUsIHsgc291cmNlOiBldmVudF9zb3VyY2UgfHwgJ3VpJywgc2NvcGU6IHNjb3BlLCBjb250cm9sOiB0YXJnZXQsIGZzX3Jvb3Q6IGZzX3Jvb3QgfSApO1xuXHR9XG5cblx0ZnVuY3Rpb24gaXNfY29sb3Jpc19jb250cm9sKHRhcmdldCkge1xuXHRcdGlmICggISB0YXJnZXQgfHwgISB0YXJnZXQubWF0Y2hlcyApIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdGFyZ2V0Lm1hdGNoZXMoICdbZGF0YS13cGJjLWJmYi1mcy10eXBlPVwiY29sb3JcIl0sIFtkYXRhLWluc3BlY3Rvci10eXBlPVwiY29sb3JcIl0sIC53cGJjX2JmYl9jb2xvcmlzJyApO1xuXHR9XG5cblx0ZnVuY3Rpb24gb25fY2hhbmdlKGV2KSB7XG5cdFx0Ly8gSWdub3JlIGdlbmVyaWMgc3ludGhldGljIGV2ZW50cyBkaXNwYXRjaGVkIGJ5IGNvZGUgKGFwcGx5L3JlYXBwbHksIHNsaWRlciBzeW5jLCBldGMuKS5cblx0XHQvLyBDb2xvcmlzIGRpc3BhdGNoZXMgc3ludGhldGljIGlucHV0IGV2ZW50cyB3aGlsZSB0aGUgdXNlciBwaWNrcyBhIGNvbG9yLCBzbyBhbGxvdyB0aG9zZSBjb2xvciBjb250cm9scyB0aHJvdWdoLlxuXHRcdGlmICggZXYgJiYgZXYuaXNUcnVzdGVkID09PSBmYWxzZSAmJiAhIGlzX2NvbG9yaXNfY29udHJvbCggZXYudGFyZ2V0ICkgKSB7IHJldHVybjsgfVxuXHRcdGFwcGx5X2NoYW5nZV9mcm9tX3RhcmdldCggZXYgJiYgZXYudGFyZ2V0LCBldiAmJiBldi50eXBlLCAoIGV2ICYmIGV2LmlzVHJ1c3RlZCA9PT0gZmFsc2UgKSA/ICdjb2xvcmlzJyA6ICd1aScgKTtcblx0fVxuXG5cdGQuYWRkRXZlbnRMaXN0ZW5lciggJ2lucHV0Jywgb25fY2hhbmdlLCBmYWxzZSApO1xuXHRkLmFkZEV2ZW50TGlzdGVuZXIoICdjaGFuZ2UnLCBvbl9jaGFuZ2UsIGZhbHNlICk7XG5cdGZ1bmN0aW9uIG9uX2NvbG9yaXNfcGljayhldikge1xuXHRcdGNvbnN0IGRldGFpbCA9IGV2ICYmIGV2LmRldGFpbCA/IGV2LmRldGFpbCA6IHt9O1xuXHRcdGNvbnN0IHRhcmdldCA9IGRldGFpbC5jdXJyZW50RWwgfHwgZGV0YWlsLmVsIHx8IGRldGFpbC5pbnB1dCB8fCBldi50YXJnZXQgfHwgbnVsbDtcblxuXHRcdGlmICggISBpc19jb2xvcmlzX2NvbnRyb2woIHRhcmdldCApICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdGlmICggZGV0YWlsLmNvbG9yICYmIHRhcmdldC52YWx1ZSAhPT0gZGV0YWlsLmNvbG9yICkge1xuXHRcdFx0dGFyZ2V0LnZhbHVlID0gZGV0YWlsLmNvbG9yO1xuXHRcdH1cblxuXHRcdGFwcGx5X2NoYW5nZV9mcm9tX3RhcmdldCggdGFyZ2V0LCAnaW5wdXQnLCAnY29sb3JpcycgKTtcblx0fVxuXHRkLmFkZEV2ZW50TGlzdGVuZXIoICdjb2xvcmlzOnBpY2snLCBvbl9jb2xvcmlzX3BpY2ssIGZhbHNlICk7XG5cdGQuYWRkRXZlbnRMaXN0ZW5lciggJ3dwYmM6YmZiOmNvbG9yaXM6Y2hhbmdlJywgb25fY29sb3Jpc19waWNrLCBmYWxzZSApO1xuXG59KSggd2luZG93LCBkb2N1bWVudCApO1xuXG5mdW5jdGlvbiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX2dldF9wcmVzZXRzKCkge1xuXHRyZXR1cm4ge1xuXHRcdGJvcmRlcmVkOiB7XG5cdFx0XHRiYWNrZ3JvdW5kIDogJyNmZmZmZmYnLFxuXHRcdFx0Ym9yZGVyQ29sb3I6ICcjY2NjY2NjJyxcblx0XHRcdGJvcmRlcldpZHRoOiAnMXB4Jyxcblx0XHRcdHJhZGl1cyAgICAgOiAnMnB4Jyxcblx0XHRcdHBhZGRpbmcgICAgOiAnMTBweCAzMHB4Jyxcblx0XHRcdHNoYWRvdyAgICAgOiAncmdiYSgwLCAwLCAwLCAwLjA1KSAwcHggMnB4IDZweCAwcHgnXG5cdFx0fSxcblx0XHRub25lICAgIDoge1xuXHRcdFx0YmFja2dyb3VuZCA6ICd0cmFuc3BhcmVudCcsXG5cdFx0XHRib3JkZXJDb2xvcjogJ3RyYW5zcGFyZW50Jyxcblx0XHRcdGJvcmRlcldpZHRoOiAnMHB4Jyxcblx0XHRcdHJhZGl1cyAgICAgOiAnMHB4Jyxcblx0XHRcdHBhZGRpbmcgICAgOiAnMHB4Jyxcblx0XHRcdHNoYWRvdyAgICAgOiAnbm9uZSdcblx0XHR9LFxuXHRcdHNvZnQgICAgOiB7XG5cdFx0XHRiYWNrZ3JvdW5kIDogJyNmOWY5ZmEnLFxuXHRcdFx0Ym9yZGVyQ29sb3I6ICcjZmZmJyxcblx0XHRcdGJvcmRlcldpZHRoOiAnM3B4Jyxcblx0XHRcdHJhZGl1cyAgICAgOiAnOHB4Jyxcblx0XHRcdHBhZGRpbmcgICAgOiAnMjBweCcsXG5cdFx0XHRzaGFkb3cgICAgIDogJ3JnYmEoMTUsIDIzLCA0MiwgMC4wNikgMHB4IDRweCAxNnB4IDBweCdcblx0XHR9XG5cdH07XG59XG5cbmZ1bmN0aW9uIHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9faXNfZGFya190aGVtZShvcHRpb25zKSB7XG5cdG9wdGlvbnMgPSBvcHRpb25zICYmIHR5cGVvZiBvcHRpb25zID09PSAnb2JqZWN0JyA/IG9wdGlvbnMgOiB7fTtcblx0cmV0dXJuICd3cGJjX3RoZW1lX2RhcmtfMScgPT09IFN0cmluZyggb3B0aW9ucy5ib29raW5nX2Zvcm1fdGhlbWUgfHwgJycgKTtcbn1cblxuZnVuY3Rpb24gd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19nZXRfcHJlc2V0X2Zvcl9vcHRpb25zKHN0eWxlLCBvcHRpb25zKSB7XG5cdGNvbnN0IHByZXNldHMgPSB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX2dldF9wcmVzZXRzKCk7XG5cblx0aWYgKCAhIHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9faXNfZGFya190aGVtZSggb3B0aW9ucyApICkge1xuXHRcdHJldHVybiBwcmVzZXRzW3N0eWxlXSB8fCBwcmVzZXRzLmJvcmRlcmVkO1xuXHR9XG5cblx0aWYgKCAnc29mdCcgPT09IHN0eWxlICkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRiYWNrZ3JvdW5kIDogJyMxZjI5MzcnLFxuXHRcdFx0Ym9yZGVyQ29sb3I6ICcjMzM0MTU1Jyxcblx0XHRcdGJvcmRlcldpZHRoOiAnM3B4Jyxcblx0XHRcdHJhZGl1cyAgICAgOiAnOHB4Jyxcblx0XHRcdHBhZGRpbmcgICAgOiAnMjBweCcsXG5cdFx0XHRzaGFkb3cgICAgIDogJ3JnYmEoMCwgMCwgMCwgMC4yNCkgMHB4IDRweCAxNnB4IDBweCdcblx0XHR9O1xuXHR9XG5cblx0cmV0dXJuIHByZXNldHNbc3R5bGVdIHx8IHByZXNldHMuYm9yZGVyZWQ7XG59XG5cbmZ1bmN0aW9uIHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2FuaXRpemVfY29sb3IodmFsdWUsIGZhbGxiYWNrKSB7XG5cdGNvbnN0IHYgPSBTdHJpbmcoIHZhbHVlID09IG51bGwgPyAnJyA6IHZhbHVlICkudHJpbSgpO1xuXHRpZiAoIC9eIyg/OlswLTlhLWZdezN9fFswLTlhLWZdezZ9KSQvaS50ZXN0KCB2ICkgKSB7XG5cdFx0cmV0dXJuIHY7XG5cdH1cblx0aWYgKCB2ID09PSAndHJhbnNwYXJlbnQnICkge1xuXHRcdHJldHVybiB2O1xuXHR9XG5cdHJldHVybiBmYWxsYmFjaztcbn1cblxuZnVuY3Rpb24gd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zYW5pdGl6ZV9vcHRpb25hbF9jb2xvcih2YWx1ZSkge1xuXHRyZXR1cm4gd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zYW5pdGl6ZV9jb2xvciggdmFsdWUsICcnICk7XG59XG5cbmZ1bmN0aW9uIHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2FuaXRpemVfbGVuZ3RoKHZhbHVlLCBmYWxsYmFjaykge1xuXHRjb25zdCB2ID0gU3RyaW5nKCB2YWx1ZSA9PSBudWxsID8gJycgOiB2YWx1ZSApLnRyaW0oKTtcblx0aWYgKCAvXi0/XFxkKyg/OlxcLlxcZCspPyg/OnB4fHJlbXxlbXwlKSQvaS50ZXN0KCB2ICkgKSB7XG5cdFx0cmV0dXJuIHY7XG5cdH1cblx0cmV0dXJuIGZhbGxiYWNrO1xufVxuXG5mdW5jdGlvbiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Nhbml0aXplX3NwYWNpbmcodmFsdWUsIGZhbGxiYWNrKSB7XG5cdGNvbnN0IHYgPSBTdHJpbmcoIHZhbHVlID09IG51bGwgPyAnJyA6IHZhbHVlICkudHJpbSgpLnJlcGxhY2UoIC9cXHMrL2csICcgJyApO1xuXHRjb25zdCBwYXJ0cyA9IHYgPyB2LnNwbGl0KCAnICcgKSA6IFtdO1xuXHRpZiAoIHBhcnRzLmxlbmd0aCA8IDEgfHwgcGFydHMubGVuZ3RoID4gNCApIHtcblx0XHRyZXR1cm4gZmFsbGJhY2s7XG5cdH1cblx0Zm9yICggbGV0IGkgPSAwOyBpIDwgcGFydHMubGVuZ3RoOyBpKysgKSB7XG5cdFx0aWYgKCAhIC9eLT9cXGQrKD86XFwuXFxkKyk/KD86cHh8cmVtfGVtfCUpJC9pLnRlc3QoIHBhcnRzW2ldICkgKSB7XG5cdFx0XHRyZXR1cm4gZmFsbGJhY2s7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBwYXJ0cy5qb2luKCAnICcgKTtcbn1cblxuZnVuY3Rpb24gd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19ub3JtYWxpemVfc3BhY2luZ19udW1iZXJzKHZlcnRpY2FsLCBob3Jpem9udGFsKSB7XG5cdGNvbnN0IHYgPSBTdHJpbmcoIHZlcnRpY2FsID09IG51bGwgPyAnJyA6IHZlcnRpY2FsICkudHJpbSgpO1xuXHRjb25zdCBoID0gU3RyaW5nKCBob3Jpem9udGFsID09IG51bGwgPyAnJyA6IGhvcml6b250YWwgKS50cmltKCk7XG5cdGNvbnN0IHZlcnRpY2FsX251bSA9IC9eLT9cXGQrKD86XFwuXFxkKyk/JC8udGVzdCggdiApID8gdiA6ICcwJztcblx0Y29uc3QgaG9yaXpvbnRhbF9udW0gPSAvXi0/XFxkKyg/OlxcLlxcZCspPyQvLnRlc3QoIGggKSA/IGggOiB2ZXJ0aWNhbF9udW07XG5cblx0cmV0dXJuIHZlcnRpY2FsX251bSArICdweCAnICsgaG9yaXpvbnRhbF9udW0gKyAncHgnO1xufVxuXG5mdW5jdGlvbiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX2NvbGxlY3Rfb3B0aW9ucyhjdHgsIGtleSwgdmFsdWUpIHtcblx0bGV0IG9wdGlvbnMgPSAoY3R4ICYmIGN0eC5vcHRpb25zICYmIHR5cGVvZiBjdHgub3B0aW9ucyA9PT0gJ29iamVjdCcpID8gT2JqZWN0LmFzc2lnbigge30sIGN0eC5vcHRpb25zICkgOiB7fTtcblxuXHRpZiAoIHdpbmRvdy5XUEJDX0JGQl9Gb3JtU2V0dGluZ3MgJiYgdHlwZW9mIHdpbmRvdy5XUEJDX0JGQl9Gb3JtU2V0dGluZ3MuY29sbGVjdCA9PT0gJ2Z1bmN0aW9uJyApIHtcblx0XHRvcHRpb25zID0gT2JqZWN0LmFzc2lnbiggd2luZG93LldQQkNfQkZCX0Zvcm1TZXR0aW5ncy5jb2xsZWN0KCAnZm9ybScgKSB8fCB7fSwgb3B0aW9ucyApO1xuXHR9XG5cblx0aWYgKCBrZXkgKSB7XG5cdFx0b3B0aW9uc1tTdHJpbmcoIGtleSApXSA9IHZhbHVlO1xuXHR9XG5cblx0aWYgKCB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX2lzX2N1c3RvbV9jb250cm9sX2tleSgga2V5ICkgKSB7XG5cdFx0b3B0aW9ucy5ib29raW5nX2Zvcm1fY29udGFpbmVyX3N0eWxlID0gJ2N1c3RvbSc7XG5cdFx0d3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zZXRfY29udGFpbmVyX3N0eWxlX2NvbnRyb2woICdjdXN0b20nICk7XG5cdH1cblxuXHRyZXR1cm4gb3B0aW9ucztcbn1cblxuZnVuY3Rpb24gd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19nZXRfY3VzdG9tX2NvbnRyb2xfa2V5cygpIHtcblx0cmV0dXJuIFtcblx0XHQnYm9va2luZ19mb3JtX2JhY2tncm91bmRfY29sb3InLFxuXHRcdCdib29raW5nX2Zvcm1fYm9yZGVyX2NvbG9yJyxcblx0XHQnYm9va2luZ19mb3JtX2JvcmRlcl93aWR0aCcsXG5cdFx0J2Jvb2tpbmdfZm9ybV9ib3JkZXJfcmFkaXVzJyxcblx0XHQnYm9va2luZ19mb3JtX3BhZGRpbmcnLFxuXHRcdCdib29raW5nX2Zvcm1fdGV4dF9jb2xvcicsXG5cdFx0J2Jvb2tpbmdfZm9ybV9maWVsZF9iYWNrZ3JvdW5kX2NvbG9yJyxcblx0XHQnYm9va2luZ19mb3JtX2ZpZWxkX3RleHRfY29sb3InLFxuXHRcdCdib29raW5nX2Zvcm1fZmllbGRfYm9yZGVyX2NvbG9yJ1xuXHRdO1xufVxuXG5mdW5jdGlvbiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX2lzX2N1c3RvbV9jb250cm9sX2tleShrZXkpIHtcblx0cmV0dXJuIHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fZ2V0X2N1c3RvbV9jb250cm9sX2tleXMoKS5pbmRleE9mKCBTdHJpbmcoIGtleSB8fCAnJyApICkgIT09IC0xO1xufVxuXG5mdW5jdGlvbiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3NldF9jb250YWluZXJfc3R5bGVfY29udHJvbCh2YWx1ZSkge1xuXHRjb25zdCBjb250cm9sID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvciggJ1tkYXRhLXdwYmMtYmZiLWZzLWtleT1cImJvb2tpbmdfZm9ybV9jb250YWluZXJfc3R5bGVcIl0nICk7XG5cdGlmICggISBjb250cm9sIHx8IGNvbnRyb2wudmFsdWUgPT09IHZhbHVlICkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGNvbnRyb2wudmFsdWUgPSB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zZXRfcmFkaW9fY29udHJvbChrZXksIHZhbHVlKSB7XG5cdGNvbnN0IHJvdyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoICcud3BiY19iZmJfX2Zvcm1fc2V0dGluZ1tkYXRhLWtleT1cIicgKyBrZXkgKyAnXCJdJyApO1xuXHRpZiAoICEgcm93ICkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGNvbnN0IHdyYXAgPSByb3cucXVlcnlTZWxlY3RvciggJy53cGJjX2JmYl9fZm9ybV9zZXR0aW5nX3JhZGlvW2RhdGEtd3BiYy1iZmItZnMtY29udHJvbGlkXScgKTtcblx0Y29uc3QgY29udHJvbF9pZCA9IHdyYXAgPyBTdHJpbmcoIHdyYXAuZ2V0QXR0cmlidXRlKCAnZGF0YS13cGJjLWJmYi1mcy1jb250cm9saWQnICkgfHwgJycgKSA6ICcnO1xuXHRjb25zdCByYWRpb3MgPSBjb250cm9sX2lkXG5cdFx0PyByb3cucXVlcnlTZWxlY3RvckFsbCggJ2lucHV0W3R5cGU9XCJyYWRpb1wiXVtuYW1lPVwiJyArIGNvbnRyb2xfaWQgKyAnXCJdJyApXG5cdFx0OiByb3cucXVlcnlTZWxlY3RvckFsbCggJ2lucHV0W3R5cGU9XCJyYWRpb1wiXScgKTtcblxuXHRyYWRpb3MuZm9yRWFjaCggZnVuY3Rpb24gKHJhZGlvKSB7XG5cdFx0Y29uc3Qgc2hvdWxkX2NoZWNrID0gKCBTdHJpbmcoIHJhZGlvLnZhbHVlICkgPT09IFN0cmluZyggdmFsdWUgPT0gbnVsbCA/ICcnIDogdmFsdWUgKSApO1xuXHRcdHJhZGlvLmNoZWNrZWQgPSBzaG91bGRfY2hlY2s7XG5cblx0XHRjb25zdCBjaG9pY2UgPSByYWRpby5jbG9zZXN0ID8gcmFkaW8uY2xvc2VzdCggJy53cGJjX3RoZW1lX2Nob2ljZScgKSA6IG51bGw7XG5cdFx0aWYgKCBjaG9pY2UgKSB7XG5cdFx0XHRjaG9pY2UuY2xhc3NMaXN0LnRvZ2dsZSggJ2lzLXNlbGVjdGVkJywgc2hvdWxkX2NoZWNrICk7XG5cdFx0fVxuXHR9ICk7XG59XG5cbmZ1bmN0aW9uIHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2V0X3NlbGVjdF9jb250cm9sKGtleSwgdmFsdWUpIHtcblx0Y29uc3QgY29udHJvbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoICdbZGF0YS13cGJjLWJmYi1mcy1rZXk9XCInICsga2V5ICsgJ1wiXScgKTtcblx0aWYgKCBjb250cm9sICkge1xuXHRcdGNvbnRyb2wudmFsdWUgPSBTdHJpbmcoIHZhbHVlID09IG51bGwgPyAnJyA6IHZhbHVlICk7XG5cdH1cbn1cblxuZnVuY3Rpb24gd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19nZXRfY3VycmVudF9vcHRpb25zKCkge1xuXHRyZXR1cm4gd2luZG93LldQQkNfQkZCX0Zvcm1TZXR0aW5ncyAmJiB0eXBlb2Ygd2luZG93LldQQkNfQkZCX0Zvcm1TZXR0aW5ncy5jb2xsZWN0ID09PSAnZnVuY3Rpb24nXG5cdFx0PyB3aW5kb3cuV1BCQ19CRkJfRm9ybVNldHRpbmdzLmNvbGxlY3QoICdmb3JtJyApIHx8IHt9XG5cdFx0OiB7fTtcbn1cblxuZnVuY3Rpb24gd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19nZXRfc3R5bGVfdmFsdWVfZnJvbV9vcHRpb25zKG9wdGlvbnMpIHtcblx0b3B0aW9ucyA9IG9wdGlvbnMgJiYgdHlwZW9mIG9wdGlvbnMgPT09ICdvYmplY3QnID8gb3B0aW9ucyA6IHt9O1xuXG5cdGNvbnN0IHRoZW1lID0gU3RyaW5nKCBvcHRpb25zLmJvb2tpbmdfZm9ybV90aGVtZSB8fCAnJyApO1xuXHRjb25zdCBzdHlsZSA9IFN0cmluZyggb3B0aW9ucy5ib29raW5nX2Zvcm1fY29udGFpbmVyX3N0eWxlIHx8ICdpbmhlcml0JyApO1xuXG5cdGlmICggJ2N1c3RvbScgPT09IHN0eWxlICkge1xuXHRcdHJldHVybiAnY3VzdG9tJztcblx0fVxuXHRpZiAoICdpbmhlcml0JyA9PT0gc3R5bGUgfHwgJycgPT09IHN0eWxlICkge1xuXHRcdHJldHVybiAnaW5oZXJpdCc7XG5cdH1cblxuXHRjb25zdCBwcmVmaXggPSAoICd3cGJjX3RoZW1lX2RhcmtfMScgPT09IHRoZW1lICkgPyAnZGFyaycgOiAnbGlnaHQnO1xuXHRpZiAoIFsgJ2JvcmRlcmVkJywgJ25vbmUnLCAnc29mdCcgXS5pbmRleE9mKCBzdHlsZSApID09PSAtMSApIHtcblx0XHRyZXR1cm4gcHJlZml4ICsgJ19ib3JkZXJlZCc7XG5cdH1cblxuXHRyZXR1cm4gcHJlZml4ICsgJ18nICsgc3R5bGU7XG59XG5cbmZ1bmN0aW9uIHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc3luY19mb3JtX3N0eWxlX2NvbnRyb2wob3B0aW9ucykge1xuXHR3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3NldF9yYWRpb19jb250cm9sKCAnYm9va2luZ19mb3JtX3N0eWxlJywgd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19nZXRfc3R5bGVfdmFsdWVfZnJvbV9vcHRpb25zKCBvcHRpb25zICkgKTtcbn1cblxuZnVuY3Rpb24gd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19yZXNvbHZlX2Zvcm1fc3R5bGVfY2hvaWNlKHZhbHVlKSB7XG5cdGNvbnN0IGN1cnJlbnRfb3B0aW9ucyA9IHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fZ2V0X2N1cnJlbnRfb3B0aW9ucygpO1xuXHRjb25zdCBjdXJyZW50X3RoZW1lID0gU3RyaW5nKCBjdXJyZW50X29wdGlvbnMuYm9va2luZ19mb3JtX3RoZW1lIHx8ICcnICk7XG5cdGNvbnN0IGNob2ljZSA9IFN0cmluZyggdmFsdWUgfHwgJ2luaGVyaXQnICk7XG5cblx0aWYgKCAnY3VzdG9tJyA9PT0gY2hvaWNlICkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRib29raW5nX2Zvcm1fdGhlbWUgICAgICAgICAgOiBjdXJyZW50X3RoZW1lLFxuXHRcdFx0Ym9va2luZ19mb3JtX2NvbnRhaW5lcl9zdHlsZTogJ2N1c3RvbSdcblx0XHR9O1xuXHR9XG5cdGlmICggJ2luaGVyaXQnID09PSBjaG9pY2UgfHwgJycgPT09IGNob2ljZSApIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0Ym9va2luZ19mb3JtX3RoZW1lICAgICAgICAgIDogJycsXG5cdFx0XHRib29raW5nX2Zvcm1fY29udGFpbmVyX3N0eWxlOiAnaW5oZXJpdCdcblx0XHR9O1xuXHR9XG5cblx0Y29uc3QgcGFydHMgPSBjaG9pY2Uuc3BsaXQoICdfJyApO1xuXHRjb25zdCB0aGVtZSA9ICggJ2RhcmsnID09PSBwYXJ0c1swXSApID8gJ3dwYmNfdGhlbWVfZGFya18xJyA6ICcnO1xuXHRjb25zdCBzdHlsZSA9IHBhcnRzWzFdIHx8ICdib3JkZXJlZCc7XG5cblx0cmV0dXJuIHtcblx0XHRib29raW5nX2Zvcm1fdGhlbWUgICAgICAgICAgOiB0aGVtZSxcblx0XHRib29raW5nX2Zvcm1fY29udGFpbmVyX3N0eWxlOiAoIFsgJ2JvcmRlcmVkJywgJ25vbmUnLCAnc29mdCcgXS5pbmRleE9mKCBzdHlsZSApID09PSAtMSApID8gJ2JvcmRlcmVkJyA6IHN0eWxlXG5cdH07XG59XG5cbmZ1bmN0aW9uIHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9faXNfdXNlcl90aGVtZV9zd2l0Y2goY3R4KSB7XG5cdGNvbnN0IHNvdXJjZSA9IFN0cmluZyggY3R4ICYmIGN0eC5zb3VyY2UgPyBjdHguc291cmNlIDogJycgKTtcblx0cmV0dXJuIFsgJ3VpJywgJ2NvbG9yaXMnIF0uaW5kZXhPZiggc291cmNlICkgIT09IC0xO1xufVxuXG5mdW5jdGlvbiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX2lzX2N1c3RvbV9zdHlsZShvcHRpb25zKSB7XG5cdHJldHVybiBTdHJpbmcoIG9wdGlvbnMgJiYgb3B0aW9ucy5ib29raW5nX2Zvcm1fY29udGFpbmVyX3N0eWxlID8gb3B0aW9ucy5ib29raW5nX2Zvcm1fY29udGFpbmVyX3N0eWxlIDogJ2luaGVyaXQnICkgPT09ICdjdXN0b20nO1xufVxuXG5mdW5jdGlvbiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3N5bmNfY3VzdG9tX2NvbnRyb2xzKG9wdGlvbnMpIHtcblx0Y29uc3QgaXNfY3VzdG9tID0gd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19pc19jdXN0b21fc3R5bGUoIG9wdGlvbnMgKTtcblx0Y29uc3QgcmVzZXRfcm93ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvciggJ1tkYXRhLXdwYmMtYmZiLWN1c3RvbS1hcHBlYXJhbmNlLXJlc2V0LXJvd10nICk7XG5cdGNvbnN0IGJhc2VfdGhlbWVfcm93ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvciggJy53cGJjX2JmYl9fZm9ybV9zZXR0aW5nW2RhdGEta2V5PVwiYm9va2luZ19mb3JtX3RoZW1lXCJdJyApO1xuXG5cdHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fZ2V0X2N1c3RvbV9jb250cm9sX2tleXMoKS5mb3JFYWNoKCBmdW5jdGlvbiAoa2V5KSB7XG5cdFx0Y29uc3Qgcm93ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvciggJy53cGJjX2JmYl9fZm9ybV9zZXR0aW5nW2RhdGEta2V5PVwiJyArIGtleSArICdcIl0nICk7XG5cdFx0aWYgKCAhIHJvdyApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0cm93LmhpZGRlbiA9ICEgaXNfY3VzdG9tO1xuXHRcdHJvdy5zZXRBdHRyaWJ1dGUoICdhcmlhLWhpZGRlbicsIGlzX2N1c3RvbSA/ICdmYWxzZScgOiAndHJ1ZScgKTtcblx0XHRyb3cuY2xhc3NMaXN0LnRvZ2dsZSggJ2lzLWhpZGRlbicsICEgaXNfY3VzdG9tICk7XG5cdH0gKTtcblxuXHRpZiAoIHJlc2V0X3JvdyApIHtcblx0XHRyZXNldF9yb3cuaGlkZGVuID0gISBpc19jdXN0b207XG5cdFx0cmVzZXRfcm93LnNldEF0dHJpYnV0ZSggJ2FyaWEtaGlkZGVuJywgaXNfY3VzdG9tID8gJ2ZhbHNlJyA6ICd0cnVlJyApO1xuXHRcdHJlc2V0X3Jvdy5jbGFzc0xpc3QudG9nZ2xlKCAnaXMtaGlkZGVuJywgISBpc19jdXN0b20gKTtcblx0fVxuXG5cdGlmICggYmFzZV90aGVtZV9yb3cgKSB7XG5cdFx0YmFzZV90aGVtZV9yb3cuaGlkZGVuID0gISBpc19jdXN0b207XG5cdFx0YmFzZV90aGVtZV9yb3cuc2V0QXR0cmlidXRlKCAnYXJpYS1oaWRkZW4nLCBpc19jdXN0b20gPyAnZmFsc2UnIDogJ3RydWUnICk7XG5cdFx0YmFzZV90aGVtZV9yb3cuY2xhc3NMaXN0LnRvZ2dsZSggJ2lzLWhpZGRlbicsICEgaXNfY3VzdG9tICk7XG5cdH1cbn1cblxuZnVuY3Rpb24gd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19yZXNvbHZlKG9wdGlvbnMpIHtcblx0bGV0IHN0eWxlICAgICA9IFN0cmluZyggb3B0aW9ucy5ib29raW5nX2Zvcm1fY29udGFpbmVyX3N0eWxlIHx8ICdpbmhlcml0JyApO1xuXG5cdGlmICggc3R5bGUgPT09ICdpbmhlcml0JyApIHtcblx0XHRjb25zdCBnbG9iYWxfb3B0aW9ucyA9IHdpbmRvdy53cGJjX2JmYl9zZXR0aW5nc192YXJzICYmIHdpbmRvdy53cGJjX2JmYl9zZXR0aW5nc192YXJzLmdsb2JhbF9hcHBlYXJhbmNlXG5cdFx0XHQ/IHdpbmRvdy53cGJjX2JmYl9zZXR0aW5nc192YXJzLmdsb2JhbF9hcHBlYXJhbmNlXG5cdFx0XHQ6IHt9O1xuXHRcdG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKCB7fSwgZ2xvYmFsX29wdGlvbnMgfHwge30gKTtcblx0XHRzdHlsZSA9IFN0cmluZyggb3B0aW9ucy5ib29raW5nX2Zvcm1fY29udGFpbmVyX3N0eWxlIHx8ICdib3JkZXJlZCcgKTtcblx0fVxuXG5cdGlmICggc3R5bGUgPT09ICdib3JkZXJlZCcgKSB7XG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHRpZiAoIHN0eWxlICE9PSAnY3VzdG9tJyApIHtcblx0XHRyZXR1cm4gd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19nZXRfcHJlc2V0X2Zvcl9vcHRpb25zKCBzdHlsZSwgb3B0aW9ucyApO1xuXHR9XG5cblx0cmV0dXJuIHtcblx0XHRiYWNrZ3JvdW5kIDogd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zYW5pdGl6ZV9jb2xvciggb3B0aW9ucy5ib29raW5nX2Zvcm1fYmFja2dyb3VuZF9jb2xvciwgJyNmZmZmZmYnICksXG5cdFx0Ym9yZGVyQ29sb3I6IHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2FuaXRpemVfY29sb3IoIG9wdGlvbnMuYm9va2luZ19mb3JtX2JvcmRlcl9jb2xvciwgJyNjY2NjY2MnICksXG5cdFx0Ym9yZGVyV2lkdGg6IHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2FuaXRpemVfbGVuZ3RoKCBvcHRpb25zLmJvb2tpbmdfZm9ybV9ib3JkZXJfd2lkdGgsICcxcHgnICksXG5cdFx0cmFkaXVzICAgICA6IHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2FuaXRpemVfbGVuZ3RoKCBvcHRpb25zLmJvb2tpbmdfZm9ybV9ib3JkZXJfcmFkaXVzLCAnMnB4JyApLFxuXHRcdHBhZGRpbmcgICAgOiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Nhbml0aXplX3NwYWNpbmcoIG9wdGlvbnMuYm9va2luZ19mb3JtX3BhZGRpbmcsICcxMHB4IDMwcHgnICksXG5cdFx0c2hhZG93ICAgICA6ICdyZ2JhKDAsIDAsIDAsIDAuMDUpIDBweCAycHggNnB4IDBweCdcblx0fTtcbn1cblxuZnVuY3Rpb24gd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19yZXNvbHZlX2Rlc2lnbl9jb2xvcnMob3B0aW9ucykge1xuXHRvcHRpb25zID0gb3B0aW9ucyAmJiB0eXBlb2Ygb3B0aW9ucyA9PT0gJ29iamVjdCcgPyBvcHRpb25zIDoge307XG5cblx0aWYgKCAhIHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9faXNfY3VzdG9tX3N0eWxlKCBvcHRpb25zICkgKSB7XG5cdFx0aWYgKFxuXHRcdFx0d3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19pc19kYXJrX3RoZW1lKCBvcHRpb25zICkgJiZcblx0XHRcdCdub25lJyA9PT0gU3RyaW5nKCBvcHRpb25zLmJvb2tpbmdfZm9ybV9jb250YWluZXJfc3R5bGUgfHwgJycgKVxuXHRcdCkge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0dGV4dENvbG9yICAgICAgOiAnIzFkMjMyNycsXG5cdFx0XHRcdGZpZWxkQmFja2dyb3VuZDogJycsXG5cdFx0XHRcdGZpZWxkVGV4dCAgICAgIDogJycsXG5cdFx0XHRcdGZpZWxkQm9yZGVyICAgIDogJydcblx0XHRcdH07XG5cdFx0fVxuXHRcdHJldHVybiB7XG5cdFx0XHR0ZXh0Q29sb3IgICAgICA6ICcnLFxuXHRcdFx0ZmllbGRCYWNrZ3JvdW5kOiAnJyxcblx0XHRcdGZpZWxkVGV4dCAgICAgIDogJycsXG5cdFx0XHRmaWVsZEJvcmRlciAgICA6ICcnXG5cdFx0fTtcblx0fVxuXG5cdHJldHVybiB7XG5cdFx0dGV4dENvbG9yICAgICAgOiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Nhbml0aXplX29wdGlvbmFsX2NvbG9yKCBvcHRpb25zLmJvb2tpbmdfZm9ybV90ZXh0X2NvbG9yICksXG5cdFx0ZmllbGRCYWNrZ3JvdW5kOiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Nhbml0aXplX29wdGlvbmFsX2NvbG9yKCBvcHRpb25zLmJvb2tpbmdfZm9ybV9maWVsZF9iYWNrZ3JvdW5kX2NvbG9yICksXG5cdFx0ZmllbGRUZXh0ICAgICAgOiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Nhbml0aXplX29wdGlvbmFsX2NvbG9yKCBvcHRpb25zLmJvb2tpbmdfZm9ybV9maWVsZF90ZXh0X2NvbG9yICksXG5cdFx0ZmllbGRCb3JkZXIgICAgOiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Nhbml0aXplX29wdGlvbmFsX2NvbG9yKCBvcHRpb25zLmJvb2tpbmdfZm9ybV9maWVsZF9ib3JkZXJfY29sb3IgKVxuXHR9O1xufVxuXG5mdW5jdGlvbiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX2FwcGx5X3ZhcnModmFsdWUsIGN0eCkge1xuXHRjb25zdCBvcHRpb25zID0gd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19jb2xsZWN0X29wdGlvbnMoIGN0eCwgY3R4ICYmIGN0eC5rZXksIHZhbHVlICk7XG5cdGNvbnN0IHJlc29sdmVkID0gd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19yZXNvbHZlKCBvcHRpb25zICk7XG5cdGNvbnN0IGRlc2lnbiA9IHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fcmVzb2x2ZV9kZXNpZ25fY29sb3JzKCBvcHRpb25zICk7XG5cdGNvbnN0IGlzX2N1c3RvbSA9IHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9faXNfY3VzdG9tX3N0eWxlKCBvcHRpb25zICk7XG5cdGNvbnN0IHJvb3QgPSBjdHggJiYgY3R4LmNhbnZhcztcblxuXHR3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3N5bmNfZm9ybV9zdHlsZV9jb250cm9sKCBvcHRpb25zICk7XG5cdHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc3luY19jdXN0b21fY29udHJvbHMoIG9wdGlvbnMgKTtcblxuXHRpZiAoICEgcm9vdCB8fCAhIHJvb3QucXVlcnlTZWxlY3RvckFsbCApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRjb25zdCB3cmFwcyA9IHJvb3QucXVlcnlTZWxlY3RvckFsbCggJy53cGJjX2JmYl9fZm9ybV9wcmV2aWV3X3NlY3Rpb25fY29udGFpbmVyLCAud3BiY19iZmJfZm9ybScgKTtcblx0aWYgKCAhIHdyYXBzLmxlbmd0aCApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHR3cmFwcy5mb3JFYWNoKCBmdW5jdGlvbiAod3JhcCkge1xuXHRcdGlmICggISB3cmFwIHx8ICEgd3JhcC5zdHlsZSApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0d3JhcC5jbGFzc0xpc3QudG9nZ2xlKCAnd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX2N1c3RvbScsIGlzX2N1c3RvbSApO1xuXHRcdGlmICggISByZXNvbHZlZCApIHtcblx0XHRcdHdyYXAuc3R5bGUucmVtb3ZlUHJvcGVydHkoICctLXdwYmMtYmZiLWZvcm0tYmFja2dyb3VuZCcgKTtcblx0XHRcdHdyYXAuc3R5bGUucmVtb3ZlUHJvcGVydHkoICctLXdwYmMtYmZiLWZvcm0tYm9yZGVyLWNvbG9yJyApO1xuXHRcdFx0d3JhcC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSggJy0td3BiYy1iZmItZm9ybS1ib3JkZXItd2lkdGgnICk7XG5cdFx0XHR3cmFwLnN0eWxlLnJlbW92ZVByb3BlcnR5KCAnLS13cGJjLWJmYi1mb3JtLWJvcmRlci1yYWRpdXMnICk7XG5cdFx0XHR3cmFwLnN0eWxlLnJlbW92ZVByb3BlcnR5KCAnLS13cGJjLWJmYi1mb3JtLXBhZGRpbmcnICk7XG5cdFx0XHR3cmFwLnN0eWxlLnJlbW92ZVByb3BlcnR5KCAnLS13cGJjLWJmYi1mb3JtLWJveC1zaGFkb3cnICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHdyYXAuc3R5bGUuc2V0UHJvcGVydHkoICctLXdwYmMtYmZiLWZvcm0tYmFja2dyb3VuZCcsIHJlc29sdmVkLmJhY2tncm91bmQgKTtcblx0XHRcdHdyYXAuc3R5bGUuc2V0UHJvcGVydHkoICctLXdwYmMtYmZiLWZvcm0tYm9yZGVyLWNvbG9yJywgcmVzb2x2ZWQuYm9yZGVyQ29sb3IgKTtcblx0XHRcdHdyYXAuc3R5bGUuc2V0UHJvcGVydHkoICctLXdwYmMtYmZiLWZvcm0tYm9yZGVyLXdpZHRoJywgcmVzb2x2ZWQuYm9yZGVyV2lkdGggKTtcblx0XHRcdHdyYXAuc3R5bGUuc2V0UHJvcGVydHkoICctLXdwYmMtYmZiLWZvcm0tYm9yZGVyLXJhZGl1cycsIHJlc29sdmVkLnJhZGl1cyApO1xuXHRcdFx0d3JhcC5zdHlsZS5zZXRQcm9wZXJ0eSggJy0td3BiYy1iZmItZm9ybS1wYWRkaW5nJywgcmVzb2x2ZWQucGFkZGluZyApO1xuXHRcdFx0d3JhcC5zdHlsZS5zZXRQcm9wZXJ0eSggJy0td3BiYy1iZmItZm9ybS1ib3gtc2hhZG93JywgcmVzb2x2ZWQuc2hhZG93ICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBkZXNpZ24udGV4dENvbG9yICkge1xuXHRcdFx0d3JhcC5zdHlsZS5zZXRQcm9wZXJ0eSggJy0td3BiY19mb3JtLWxhYmVsLWNvbG9yJywgZGVzaWduLnRleHRDb2xvciApO1xuXHRcdFx0d3JhcC5zdHlsZS5zZXRQcm9wZXJ0eSggJy0td3BiY19mb3JtLWxhYmVsLXN1YmxhYmVsLWNvbG9yJywgZGVzaWduLnRleHRDb2xvciApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR3cmFwLnN0eWxlLnJlbW92ZVByb3BlcnR5KCAnLS13cGJjX2Zvcm0tbGFiZWwtY29sb3InICk7XG5cdFx0XHR3cmFwLnN0eWxlLnJlbW92ZVByb3BlcnR5KCAnLS13cGJjX2Zvcm0tbGFiZWwtc3VibGFiZWwtY29sb3InICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBkZXNpZ24uZmllbGRCYWNrZ3JvdW5kICkge1xuXHRcdFx0d3JhcC5zdHlsZS5zZXRQcm9wZXJ0eSggJy0td3BiY19mb3JtLWZpZWxkLWJhY2tncm91bmQtY29sb3InLCBkZXNpZ24uZmllbGRCYWNrZ3JvdW5kICk7XG5cdFx0XHR3cmFwLnN0eWxlLnNldFByb3BlcnR5KCAnLS13cGJjX2Zvcm0tZmllbGQtbWVudS1jb2xvcicsIGRlc2lnbi5maWVsZEJhY2tncm91bmQgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0d3JhcC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSggJy0td3BiY19mb3JtLWZpZWxkLWJhY2tncm91bmQtY29sb3InICk7XG5cdFx0XHR3cmFwLnN0eWxlLnJlbW92ZVByb3BlcnR5KCAnLS13cGJjX2Zvcm0tZmllbGQtbWVudS1jb2xvcicgKTtcblx0XHR9XG5cblx0XHRpZiAoIGRlc2lnbi5maWVsZFRleHQgKSB7XG5cdFx0XHR3cmFwLnN0eWxlLnNldFByb3BlcnR5KCAnLS13cGJjX2Zvcm0tZmllbGQtdGV4dC1jb2xvcicsIGRlc2lnbi5maWVsZFRleHQgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0d3JhcC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSggJy0td3BiY19mb3JtLWZpZWxkLXRleHQtY29sb3InICk7XG5cdFx0fVxuXG5cdFx0aWYgKCBkZXNpZ24uZmllbGRCb3JkZXIgKSB7XG5cdFx0XHR3cmFwLnN0eWxlLnNldFByb3BlcnR5KCAnLS13cGJjX2Zvcm0tZmllbGQtYm9yZGVyLWNvbG9yJywgZGVzaWduLmZpZWxkQm9yZGVyICk7XG5cdFx0XHR3cmFwLnN0eWxlLnNldFByb3BlcnR5KCAnLS13cGJjX2Zvcm0tZmllbGQtYm9yZGVyLWNvbG9yLXNwYXJlJywgZGVzaWduLmZpZWxkQm9yZGVyICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHdyYXAuc3R5bGUucmVtb3ZlUHJvcGVydHkoICctLXdwYmNfZm9ybS1maWVsZC1ib3JkZXItY29sb3InICk7XG5cdFx0XHR3cmFwLnN0eWxlLnJlbW92ZVByb3BlcnR5KCAnLS13cGJjX2Zvcm0tZmllbGQtYm9yZGVyLWNvbG9yLXNwYXJlJyApO1xuXHRcdH1cblx0fSApO1xufVxuXG5mdW5jdGlvbiB3cGJjX2JmYl9nbG9iYWxfZm9ybV9zdHlsZV9fZ2V0X3ZhcnMoKSB7XG5cdHJldHVybiB3aW5kb3cud3BiY19iZmJfc2V0dGluZ3NfdmFycyB8fCB7fTtcbn1cblxuZnVuY3Rpb24gd3BiY19iZmJfZ2xvYmFsX2Zvcm1fc3R5bGVfX2dldF9wcmVzZXRzKCkge1xuXHRjb25zdCB2YXJzID0gd3BiY19iZmJfZ2xvYmFsX2Zvcm1fc3R5bGVfX2dldF92YXJzKCk7XG5cdHJldHVybiB2YXJzLmZvcm1fc3R5bGVfcHJlc2V0cyAmJiB0eXBlb2YgdmFycy5mb3JtX3N0eWxlX3ByZXNldHMgPT09ICdvYmplY3QnID8gdmFycy5mb3JtX3N0eWxlX3ByZXNldHMgOiB7fTtcbn1cblxuZnVuY3Rpb24gd3BiY19iZmJfZ2xvYmFsX2Zvcm1fc3R5bGVfX2dldF9jdXN0b21fa2V5cygpIHtcblx0cmV0dXJuIFtcblx0XHQnYm9va2luZ19mb3JtX2N1c3RvbV9iYWNrZ3JvdW5kX2NvbG9yJyxcblx0XHQnYm9va2luZ19mb3JtX2N1c3RvbV9ib3JkZXJfY29sb3InLFxuXHRcdCdib29raW5nX2Zvcm1fY3VzdG9tX2JvcmRlcl93aWR0aCcsXG5cdFx0J2Jvb2tpbmdfZm9ybV9jdXN0b21fYm9yZGVyX3JhZGl1cycsXG5cdFx0J2Jvb2tpbmdfZm9ybV9jdXN0b21fcGFkZGluZ192ZXJ0aWNhbCcsXG5cdFx0J2Jvb2tpbmdfZm9ybV9jdXN0b21fcGFkZGluZ19ob3Jpem9udGFsJyxcblx0XHQnYm9va2luZ19mb3JtX2N1c3RvbV90ZXh0X2NvbG9yJyxcblx0XHQnYm9va2luZ19mb3JtX2N1c3RvbV9maWVsZF9iYWNrZ3JvdW5kX2NvbG9yJyxcblx0XHQnYm9va2luZ19mb3JtX2N1c3RvbV9maWVsZF90ZXh0X2NvbG9yJyxcblx0XHQnYm9va2luZ19mb3JtX2N1c3RvbV9maWVsZF9ib3JkZXJfY29sb3InLFxuXHRcdCdib29raW5nX2Zvcm1fY3VzdG9tX2J1dHRvbl9iYWNrZ3JvdW5kX2NvbG9yJyxcblx0XHQnYm9va2luZ19mb3JtX2N1c3RvbV9idXR0b25fdGV4dF9jb2xvcicsXG5cdFx0J2Jvb2tpbmdfZm9ybV9jdXN0b21fYnV0dG9uX2JvcmRlcl9jb2xvcicsXG5cdFx0J2Jvb2tpbmdfZm9ybV9jdXN0b21fYnV0dG9uX2hvdmVyX2JhY2tncm91bmRfY29sb3InLFxuXHRcdCdib29raW5nX2Zvcm1fY3VzdG9tX2J1dHRvbl9ob3Zlcl90ZXh0X2NvbG9yJyxcblx0XHQnYm9va2luZ19mb3JtX2N1c3RvbV9idXR0b25faG92ZXJfYm9yZGVyX2NvbG9yJyxcblx0XHQnYm9va2luZ19mb3JtX2N1c3RvbV9zZWNvbmRhcnlfYnV0dG9uX2JhY2tncm91bmRfY29sb3InLFxuXHRcdCdib29raW5nX2Zvcm1fY3VzdG9tX3NlY29uZGFyeV9idXR0b25fdGV4dF9jb2xvcicsXG5cdFx0J2Jvb2tpbmdfZm9ybV9jdXN0b21fc2Vjb25kYXJ5X2J1dHRvbl9ib3JkZXJfY29sb3InLFxuXHRcdCdib29raW5nX2Zvcm1fY3VzdG9tX3NlY29uZGFyeV9idXR0b25faG92ZXJfYmFja2dyb3VuZF9jb2xvcicsXG5cdFx0J2Jvb2tpbmdfZm9ybV9jdXN0b21fc2Vjb25kYXJ5X2J1dHRvbl9ob3Zlcl90ZXh0X2NvbG9yJyxcblx0XHQnYm9va2luZ19mb3JtX2N1c3RvbV9zZWNvbmRhcnlfYnV0dG9uX2hvdmVyX2JvcmRlcl9jb2xvcidcblx0XTtcbn1cblxuZnVuY3Rpb24gd3BiY19iZmJfZ2xvYmFsX2Zvcm1fc3R5bGVfX2dldF9jdXN0b21fZGVmYXVsdHMoKSB7XG5cdGNvbnN0IHZhcnMgPSB3cGJjX2JmYl9nbG9iYWxfZm9ybV9zdHlsZV9fZ2V0X3ZhcnMoKTtcblx0Y29uc3QgbG9jYWxpemVkID0gdmFycy5jdXN0b21fZm9ybV9zdHlsZV9kZWZhdWx0cyAmJiB0eXBlb2YgdmFycy5jdXN0b21fZm9ybV9zdHlsZV9kZWZhdWx0cyA9PT0gJ29iamVjdCdcblx0XHQ/IHZhcnMuY3VzdG9tX2Zvcm1fc3R5bGVfZGVmYXVsdHNcblx0XHQ6IHt9O1xuXG5cdHJldHVybiBPYmplY3QuYXNzaWduKCB7XG5cdFx0Ym9va2luZ19mb3JtX2N1c3RvbV9iYWNrZ3JvdW5kX2NvbG9yICAgICAgIDogJyNmZmZmZmYnLFxuXHRcdGJvb2tpbmdfZm9ybV9jdXN0b21fYm9yZGVyX2NvbG9yICAgICAgICAgICA6ICcjY2NjY2NjJyxcblx0XHRib29raW5nX2Zvcm1fY3VzdG9tX2JvcmRlcl93aWR0aCAgICAgICAgICAgOiAnMXB4Jyxcblx0XHRib29raW5nX2Zvcm1fY3VzdG9tX2JvcmRlcl9yYWRpdXMgICAgICAgICAgOiAnMnB4Jyxcblx0XHRib29raW5nX2Zvcm1fY3VzdG9tX3BhZGRpbmdfdmVydGljYWwgICAgICAgOiAnMTBweCcsXG5cdFx0Ym9va2luZ19mb3JtX2N1c3RvbV9wYWRkaW5nX2hvcml6b250YWwgICAgIDogJzMwcHgnLFxuXHRcdGJvb2tpbmdfZm9ybV9jdXN0b21fdGV4dF9jb2xvciAgICAgICAgICAgICA6ICcjMWQyMzI3Jyxcblx0XHRib29raW5nX2Zvcm1fY3VzdG9tX2ZpZWxkX2JhY2tncm91bmRfY29sb3IgOiAnI2ZmZmZmZicsXG5cdFx0Ym9va2luZ19mb3JtX2N1c3RvbV9maWVsZF90ZXh0X2NvbG9yICAgICAgIDogJyMzYzQzNGEnLFxuXHRcdGJvb2tpbmdfZm9ybV9jdXN0b21fZmllbGRfYm9yZGVyX2NvbG9yICAgICA6ICcjY2NjY2NjJyxcblx0XHRib29raW5nX2Zvcm1fY3VzdG9tX2J1dHRvbl9iYWNrZ3JvdW5kX2NvbG9yOiAnIzA2NmFhYicsXG5cdFx0Ym9va2luZ19mb3JtX2N1c3RvbV9idXR0b25fdGV4dF9jb2xvciAgICAgIDogJyNmZmZmZmYnLFxuXHRcdGJvb2tpbmdfZm9ybV9jdXN0b21fYnV0dG9uX2JvcmRlcl9jb2xvciAgICA6ICcjMDY2YWFiJyxcblx0XHRib29raW5nX2Zvcm1fY3VzdG9tX2J1dHRvbl9ob3Zlcl9iYWNrZ3JvdW5kX2NvbG9yOiAnIzA1NTU4OScsXG5cdFx0Ym9va2luZ19mb3JtX2N1c3RvbV9idXR0b25faG92ZXJfdGV4dF9jb2xvcjogJyNmZmZmZmYnLFxuXHRcdGJvb2tpbmdfZm9ybV9jdXN0b21fYnV0dG9uX2hvdmVyX2JvcmRlcl9jb2xvcjogJyMwNTU1ODknLFxuXHRcdGJvb2tpbmdfZm9ybV9jdXN0b21fc2Vjb25kYXJ5X2J1dHRvbl9iYWNrZ3JvdW5kX2NvbG9yOiAnI2ZkZmRmZCcsXG5cdFx0Ym9va2luZ19mb3JtX2N1c3RvbV9zZWNvbmRhcnlfYnV0dG9uX3RleHRfY29sb3I6ICcjNDQ0NDQ0Jyxcblx0XHRib29raW5nX2Zvcm1fY3VzdG9tX3NlY29uZGFyeV9idXR0b25fYm9yZGVyX2NvbG9yOiAnI2VlZWVlZScsXG5cdFx0Ym9va2luZ19mb3JtX2N1c3RvbV9zZWNvbmRhcnlfYnV0dG9uX2hvdmVyX2JhY2tncm91bmRfY29sb3I6ICcjZmRmZGZkJyxcblx0XHRib29raW5nX2Zvcm1fY3VzdG9tX3NlY29uZGFyeV9idXR0b25faG92ZXJfdGV4dF9jb2xvcjogJyM0NDQ0NDQnLFxuXHRcdGJvb2tpbmdfZm9ybV9jdXN0b21fc2Vjb25kYXJ5X2J1dHRvbl9ob3Zlcl9ib3JkZXJfY29sb3I6ICcjNGQ5MWNkJ1xuXHR9LCBsb2NhbGl6ZWQgKTtcbn1cblxuZnVuY3Rpb24gd3BiY19iZmJfZ2xvYmFsX2Zvcm1fc3R5bGVfX2dldF9jdXJyZW50X29wdGlvbnMoY3R4LCBrZXksIHZhbHVlKSB7XG5cdGNvbnN0IHZhcnMgPSB3cGJjX2JmYl9nbG9iYWxfZm9ybV9zdHlsZV9fZ2V0X3ZhcnMoKTtcblx0bGV0IG9wdGlvbnMgPSB2YXJzLmdsb2JhbF9mb3JtX3N0eWxlICYmIHR5cGVvZiB2YXJzLmdsb2JhbF9mb3JtX3N0eWxlID09PSAnb2JqZWN0J1xuXHRcdD8gT2JqZWN0LmFzc2lnbigge30sIHZhcnMuZ2xvYmFsX2Zvcm1fc3R5bGUgKVxuXHRcdDoge307XG5cblx0aWYgKCB3aW5kb3cuV1BCQ19CRkJfRm9ybVNldHRpbmdzICYmIHR5cGVvZiB3aW5kb3cuV1BCQ19CRkJfRm9ybVNldHRpbmdzLmNvbGxlY3QgPT09ICdmdW5jdGlvbicgKSB7XG5cdFx0b3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oIG9wdGlvbnMsIHdpbmRvdy5XUEJDX0JGQl9Gb3JtU2V0dGluZ3MuY29sbGVjdCggJ2dsb2JhbCcgKSB8fCB7fSApO1xuXHR9XG5cblx0aWYgKCBjdHggJiYgY3R4Lm9wdGlvbnMgJiYgdHlwZW9mIGN0eC5vcHRpb25zID09PSAnb2JqZWN0JyApIHtcblx0XHRvcHRpb25zID0gT2JqZWN0LmFzc2lnbiggb3B0aW9ucywgY3R4Lm9wdGlvbnMgKTtcblx0fVxuXHRpZiAoIGtleSApIHtcblx0XHRvcHRpb25zW1N0cmluZygga2V5ICldID0gdmFsdWU7XG5cdH1cblx0aWYgKCAhIG9wdGlvbnMuYm9va2luZ19mb3JtX3N0eWxlICkge1xuXHRcdG9wdGlvbnMuYm9va2luZ19mb3JtX3N0eWxlID0gJ2xpZ2h0X2JvcmRlcmVkJztcblx0fVxuXG5cdHJldHVybiBvcHRpb25zO1xufVxuXG5mdW5jdGlvbiB3cGJjX2JmYl9nbG9iYWxfZm9ybV9zdHlsZV9fcmVzb2x2ZV9jc3NfdmFycyhvcHRpb25zKSB7XG5cdG9wdGlvbnMgPSBvcHRpb25zICYmIHR5cGVvZiBvcHRpb25zID09PSAnb2JqZWN0JyA/IG9wdGlvbnMgOiB7fTtcblx0Y29uc3Qgc3R5bGUgPSBTdHJpbmcoIG9wdGlvbnMuYm9va2luZ19mb3JtX3N0eWxlIHx8ICdsaWdodF9ib3JkZXJlZCcgKTtcblx0Y29uc3QgcHJlc2V0cyA9IHdwYmNfYmZiX2dsb2JhbF9mb3JtX3N0eWxlX19nZXRfcHJlc2V0cygpO1xuXHRjb25zdCBwcmVzZXQgPSBwcmVzZXRzW3N0eWxlXSB8fCBwcmVzZXRzLmxpZ2h0X2JvcmRlcmVkIHx8IHt9O1xuXHRjb25zdCBkZWZhdWx0cyA9IHdwYmNfYmZiX2dsb2JhbF9mb3JtX3N0eWxlX19nZXRfY3VzdG9tX2RlZmF1bHRzKCk7XG5cblx0aWYgKCAnY3VzdG9tJyAhPT0gc3R5bGUgKSB7XG5cdFx0cmV0dXJuIHByZXNldC5jc3NfdmFycyAmJiB0eXBlb2YgcHJlc2V0LmNzc192YXJzID09PSAnb2JqZWN0JyA/IE9iamVjdC5hc3NpZ24oIHt9LCBwcmVzZXQuY3NzX3ZhcnMgKSA6IHt9O1xuXHR9XG5cblx0cmV0dXJuIHtcblx0XHQnLS13cGJjLWJmYi1mb3JtLWJhY2tncm91bmQnICAgICAgICAgIDogd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zYW5pdGl6ZV9jb2xvciggb3B0aW9ucy5ib29raW5nX2Zvcm1fY3VzdG9tX2JhY2tncm91bmRfY29sb3IsIGRlZmF1bHRzLmJvb2tpbmdfZm9ybV9jdXN0b21fYmFja2dyb3VuZF9jb2xvciApLFxuXHRcdCctLXdwYmMtYmZiLWZvcm0tYm9yZGVyLWNvbG9yJyAgICAgICAgOiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Nhbml0aXplX2NvbG9yKCBvcHRpb25zLmJvb2tpbmdfZm9ybV9jdXN0b21fYm9yZGVyX2NvbG9yLCBkZWZhdWx0cy5ib29raW5nX2Zvcm1fY3VzdG9tX2JvcmRlcl9jb2xvciApLFxuXHRcdCctLXdwYmMtYmZiLWZvcm0tYm9yZGVyLXdpZHRoJyAgICAgICAgOiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Nhbml0aXplX2xlbmd0aCggb3B0aW9ucy5ib29raW5nX2Zvcm1fY3VzdG9tX2JvcmRlcl93aWR0aCwgZGVmYXVsdHMuYm9va2luZ19mb3JtX2N1c3RvbV9ib3JkZXJfd2lkdGggKSxcblx0XHQnLS13cGJjLWJmYi1mb3JtLWJvcmRlci1yYWRpdXMnICAgICAgIDogd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zYW5pdGl6ZV9sZW5ndGgoIG9wdGlvbnMuYm9va2luZ19mb3JtX2N1c3RvbV9ib3JkZXJfcmFkaXVzLCBkZWZhdWx0cy5ib29raW5nX2Zvcm1fY3VzdG9tX2JvcmRlcl9yYWRpdXMgKSxcblx0XHQnLS13cGJjLWJmYi1mb3JtLXBhZGRpbmcnICAgICAgICAgICAgIDogd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zYW5pdGl6ZV9sZW5ndGgoIG9wdGlvbnMuYm9va2luZ19mb3JtX2N1c3RvbV9wYWRkaW5nX3ZlcnRpY2FsLCBkZWZhdWx0cy5ib29raW5nX2Zvcm1fY3VzdG9tX3BhZGRpbmdfdmVydGljYWwgKSArICcgJyArIHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2FuaXRpemVfbGVuZ3RoKCBvcHRpb25zLmJvb2tpbmdfZm9ybV9jdXN0b21fcGFkZGluZ19ob3Jpem9udGFsLCBkZWZhdWx0cy5ib29raW5nX2Zvcm1fY3VzdG9tX3BhZGRpbmdfaG9yaXpvbnRhbCApLFxuXHRcdCctLXdwYmMtYmZiLWZvcm0tYm94LXNoYWRvdycgICAgICAgICAgOiAncmdiYSgwLCAwLCAwLCAwLjA1KSAwcHggMnB4IDZweCAwcHgnLFxuXHRcdCctLXdwYmNfZm9ybS1sYWJlbC1jb2xvcicgICAgICAgICAgICAgOiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Nhbml0aXplX2NvbG9yKCBvcHRpb25zLmJvb2tpbmdfZm9ybV9jdXN0b21fdGV4dF9jb2xvciwgZGVmYXVsdHMuYm9va2luZ19mb3JtX2N1c3RvbV90ZXh0X2NvbG9yICksXG5cdFx0Jy0td3BiY19mb3JtLWxhYmVsLXN1YmxhYmVsLWNvbG9yJyAgICA6IHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2FuaXRpemVfY29sb3IoIG9wdGlvbnMuYm9va2luZ19mb3JtX2N1c3RvbV90ZXh0X2NvbG9yLCBkZWZhdWx0cy5ib29raW5nX2Zvcm1fY3VzdG9tX3RleHRfY29sb3IgKSxcblx0XHQnLS13cGJjX2Zvcm0tbGFiZWwtZXJyb3ItY29sb3InICAgICAgIDogJyNkNjM2MzcnLFxuXHRcdCctLXdwYmNfZm9ybS1maWVsZC1iYWNrZ3JvdW5kLWNvbG9yJyAgOiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Nhbml0aXplX2NvbG9yKCBvcHRpb25zLmJvb2tpbmdfZm9ybV9jdXN0b21fZmllbGRfYmFja2dyb3VuZF9jb2xvciwgZGVmYXVsdHMuYm9va2luZ19mb3JtX2N1c3RvbV9maWVsZF9iYWNrZ3JvdW5kX2NvbG9yICksXG5cdFx0Jy0td3BiY19mb3JtLWZpZWxkLW1lbnUtY29sb3InICAgICAgICA6IHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2FuaXRpemVfY29sb3IoIG9wdGlvbnMuYm9va2luZ19mb3JtX2N1c3RvbV9maWVsZF9iYWNrZ3JvdW5kX2NvbG9yLCBkZWZhdWx0cy5ib29raW5nX2Zvcm1fY3VzdG9tX2ZpZWxkX2JhY2tncm91bmRfY29sb3IgKSxcblx0XHQnLS13cGJjX2Zvcm0tZmllbGQtdGV4dC1jb2xvcicgICAgICAgIDogd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zYW5pdGl6ZV9jb2xvciggb3B0aW9ucy5ib29raW5nX2Zvcm1fY3VzdG9tX2ZpZWxkX3RleHRfY29sb3IsIGRlZmF1bHRzLmJvb2tpbmdfZm9ybV9jdXN0b21fZmllbGRfdGV4dF9jb2xvciApLFxuXHRcdCctLXdwYmNfZm9ybS1maWVsZC1ib3JkZXItY29sb3InICAgICAgOiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Nhbml0aXplX2NvbG9yKCBvcHRpb25zLmJvb2tpbmdfZm9ybV9jdXN0b21fZmllbGRfYm9yZGVyX2NvbG9yLCBkZWZhdWx0cy5ib29raW5nX2Zvcm1fY3VzdG9tX2ZpZWxkX2JvcmRlcl9jb2xvciApLFxuXHRcdCctLXdwYmNfZm9ybS1maWVsZC1ib3JkZXItY29sb3Itc3BhcmUnOiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Nhbml0aXplX2NvbG9yKCBvcHRpb25zLmJvb2tpbmdfZm9ybV9jdXN0b21fZmllbGRfYm9yZGVyX2NvbG9yLCBkZWZhdWx0cy5ib29raW5nX2Zvcm1fY3VzdG9tX2ZpZWxkX2JvcmRlcl9jb2xvciApLFxuXHRcdCctLXdwYmNfZm9ybS1maWVsZC1mb2N1cy1ib3JkZXItY29sb3InOiAnIzA2NmFhYicsXG5cdFx0Jy0td3BiY19mb3JtLWZpZWxkLWZvY3VzLXNoYWRvdy1jb2xvcic6ICcjMDY2YWFiJyxcblx0XHQnLS13cGJjX2Zvcm0tZmllbGQtZGlzYWJsZWQtY29sb3InICAgIDogJ3JnYmEoMCwgMCwgMCwgMC4yKScsXG5cdFx0Jy0td3BiY19mb3JtLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yJyA6IHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2FuaXRpemVfY29sb3IoIG9wdGlvbnMuYm9va2luZ19mb3JtX2N1c3RvbV9idXR0b25fYmFja2dyb3VuZF9jb2xvciwgZGVmYXVsdHMuYm9va2luZ19mb3JtX2N1c3RvbV9idXR0b25fYmFja2dyb3VuZF9jb2xvciApLFxuXHRcdCctLXdwYmNfZm9ybS1idXR0b24tYmFja2dyb3VuZC1jb2xvci1hbHQnOiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Nhbml0aXplX2NvbG9yKCBvcHRpb25zLmJvb2tpbmdfZm9ybV9jdXN0b21fYnV0dG9uX2JhY2tncm91bmRfY29sb3IsIGRlZmF1bHRzLmJvb2tpbmdfZm9ybV9jdXN0b21fYnV0dG9uX2JhY2tncm91bmRfY29sb3IgKSxcblx0XHQnLS13cGJjX2Zvcm0tYnV0dG9uLWJvcmRlci1jb2xvcicgICAgIDogd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zYW5pdGl6ZV9jb2xvciggb3B0aW9ucy5ib29raW5nX2Zvcm1fY3VzdG9tX2J1dHRvbl9ib3JkZXJfY29sb3IsIGRlZmF1bHRzLmJvb2tpbmdfZm9ybV9jdXN0b21fYnV0dG9uX2JvcmRlcl9jb2xvciApLFxuXHRcdCctLXdwYmNfZm9ybS1idXR0b24tdGV4dC1jb2xvcicgICAgICAgOiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Nhbml0aXplX2NvbG9yKCBvcHRpb25zLmJvb2tpbmdfZm9ybV9jdXN0b21fYnV0dG9uX3RleHRfY29sb3IsIGRlZmF1bHRzLmJvb2tpbmdfZm9ybV9jdXN0b21fYnV0dG9uX3RleHRfY29sb3IgKSxcblx0XHQnLS13cGJjX2Zvcm0tYnV0dG9uLXRleHQtY29sb3ItYWx0JyAgIDogd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zYW5pdGl6ZV9jb2xvciggb3B0aW9ucy5ib29raW5nX2Zvcm1fY3VzdG9tX2J1dHRvbl90ZXh0X2NvbG9yLCBkZWZhdWx0cy5ib29raW5nX2Zvcm1fY3VzdG9tX2J1dHRvbl90ZXh0X2NvbG9yICksXG5cdFx0Jy0td3BiY19mb3JtLWJ1dHRvbi1ob3Zlci1iYWNrZ3JvdW5kLWNvbG9yJzogd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zYW5pdGl6ZV9jb2xvciggb3B0aW9ucy5ib29raW5nX2Zvcm1fY3VzdG9tX2J1dHRvbl9ob3Zlcl9iYWNrZ3JvdW5kX2NvbG9yLCBkZWZhdWx0cy5ib29raW5nX2Zvcm1fY3VzdG9tX2J1dHRvbl9ob3Zlcl9iYWNrZ3JvdW5kX2NvbG9yICksXG5cdFx0Jy0td3BiY19mb3JtLWJ1dHRvbi1ob3Zlci1ib3JkZXItY29sb3InOiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Nhbml0aXplX2NvbG9yKCBvcHRpb25zLmJvb2tpbmdfZm9ybV9jdXN0b21fYnV0dG9uX2hvdmVyX2JvcmRlcl9jb2xvciwgZGVmYXVsdHMuYm9va2luZ19mb3JtX2N1c3RvbV9idXR0b25faG92ZXJfYm9yZGVyX2NvbG9yICksXG5cdFx0Jy0td3BiY19mb3JtLWJ1dHRvbi1ob3Zlci10ZXh0LWNvbG9yJyA6IHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2FuaXRpemVfY29sb3IoIG9wdGlvbnMuYm9va2luZ19mb3JtX2N1c3RvbV9idXR0b25faG92ZXJfdGV4dF9jb2xvciwgZGVmYXVsdHMuYm9va2luZ19mb3JtX2N1c3RvbV9idXR0b25faG92ZXJfdGV4dF9jb2xvciApLFxuXHRcdCctLXdwYmNfZm9ybS1jaG9pY2UtY2hlY2tlZC1ib3JkZXItY29sb3InOiAnIzA2NmFhYicsXG5cdFx0Jy0td3BiY19mb3JtLWNob2ljZS1jaGVja2VkLWNvbG9yJyAgICA6ICcjMDY2YWFiJyxcblx0XHQnLS13cGJjX2Zvcm0tY2hvaWNlLWZvY3VzLWNvbG9yJyAgICAgIDogJyMwNjZhYWInLFxuXHRcdCctLXdwYmNfZm9ybS1idXR0b24tbGlnaHQtYmFja2dyb3VuZC1jb2xvcic6IHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2FuaXRpemVfY29sb3IoIG9wdGlvbnMuYm9va2luZ19mb3JtX2N1c3RvbV9zZWNvbmRhcnlfYnV0dG9uX2JhY2tncm91bmRfY29sb3IsIGRlZmF1bHRzLmJvb2tpbmdfZm9ybV9jdXN0b21fc2Vjb25kYXJ5X2J1dHRvbl9iYWNrZ3JvdW5kX2NvbG9yICksXG5cdFx0Jy0td3BiY19mb3JtLWJ1dHRvbi1saWdodC1ib3JkZXItY29sb3InOiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Nhbml0aXplX2NvbG9yKCBvcHRpb25zLmJvb2tpbmdfZm9ybV9jdXN0b21fc2Vjb25kYXJ5X2J1dHRvbl9ib3JkZXJfY29sb3IsIGRlZmF1bHRzLmJvb2tpbmdfZm9ybV9jdXN0b21fc2Vjb25kYXJ5X2J1dHRvbl9ib3JkZXJfY29sb3IgKSxcblx0XHQnLS13cGJjX2Zvcm0tYnV0dG9uLWxpZ2h0LXRleHQtY29sb3InIDogd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zYW5pdGl6ZV9jb2xvciggb3B0aW9ucy5ib29raW5nX2Zvcm1fY3VzdG9tX3NlY29uZGFyeV9idXR0b25fdGV4dF9jb2xvciwgZGVmYXVsdHMuYm9va2luZ19mb3JtX2N1c3RvbV9zZWNvbmRhcnlfYnV0dG9uX3RleHRfY29sb3IgKSxcblx0XHQnLS13cGJjX2Zvcm0tYnV0dG9uLWxpZ2h0LWJveC1zaGFkb3cnIDogJzAgMnB4IDEwcHggMnB4ICNmZmZmZmY1NCcsXG5cdFx0Jy0td3BiY19mb3JtLWJ1dHRvbi1saWdodC1ob3Zlci1iYWNrZ3JvdW5kLWNvbG9yJzogd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zYW5pdGl6ZV9jb2xvciggb3B0aW9ucy5ib29raW5nX2Zvcm1fY3VzdG9tX3NlY29uZGFyeV9idXR0b25faG92ZXJfYmFja2dyb3VuZF9jb2xvciwgZGVmYXVsdHMuYm9va2luZ19mb3JtX2N1c3RvbV9zZWNvbmRhcnlfYnV0dG9uX2hvdmVyX2JhY2tncm91bmRfY29sb3IgKSxcblx0XHQnLS13cGJjX2Zvcm0tYnV0dG9uLWxpZ2h0LWhvdmVyLWJvcmRlci1jb2xvcic6IHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2FuaXRpemVfY29sb3IoIG9wdGlvbnMuYm9va2luZ19mb3JtX2N1c3RvbV9zZWNvbmRhcnlfYnV0dG9uX2hvdmVyX2JvcmRlcl9jb2xvciwgZGVmYXVsdHMuYm9va2luZ19mb3JtX2N1c3RvbV9zZWNvbmRhcnlfYnV0dG9uX2hvdmVyX2JvcmRlcl9jb2xvciApLFxuXHRcdCctLXdwYmNfZm9ybS1idXR0b24tbGlnaHQtaG92ZXItdGV4dC1jb2xvcic6IHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2FuaXRpemVfY29sb3IoIG9wdGlvbnMuYm9va2luZ19mb3JtX2N1c3RvbV9zZWNvbmRhcnlfYnV0dG9uX2hvdmVyX3RleHRfY29sb3IsIGRlZmF1bHRzLmJvb2tpbmdfZm9ybV9jdXN0b21fc2Vjb25kYXJ5X2J1dHRvbl9ob3Zlcl90ZXh0X2NvbG9yICksXG5cdFx0Jy0td3BiY19mb3JtLWJ1dHRvbi1saWdodC1ob3Zlci1ib3gtc2hhZG93JzogJzAgMnB4IDEwcHggMnB4ICNmZmZmZmY1NCcsXG5cdFx0Jy0td3BiY19mb3JtLWJ1dHRvbi1wcmltYXJ5LWhvdmVyLWJvcmRlci1jb2xvcic6IHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2FuaXRpemVfY29sb3IoIG9wdGlvbnMuYm9va2luZ19mb3JtX2N1c3RvbV9idXR0b25faG92ZXJfYm9yZGVyX2NvbG9yLCBkZWZhdWx0cy5ib29raW5nX2Zvcm1fY3VzdG9tX2J1dHRvbl9ob3Zlcl9ib3JkZXJfY29sb3IgKSxcblx0XHQnLS13cGJjX2Zvcm0tcGFnZS1icmVhay1jb2xvcicgICAgICAgIDogJyMwNjZhYWInXG5cdH07XG59XG5cbmZ1bmN0aW9uIHdwYmNfYmZiX2dsb2JhbF9mb3JtX3N0eWxlX19nZXRfY3NzX3Zhcl9rZXlzKG9wdGlvbnMpIHtcblx0Y29uc3QgdmFycyA9IHdwYmNfYmZiX2dsb2JhbF9mb3JtX3N0eWxlX19nZXRfdmFycygpO1xuXHRjb25zdCBsb2NhbGl6ZWQgPSBBcnJheS5pc0FycmF5KCB2YXJzLmZvcm1fc3R5bGVfY3NzX3Zhcl9uYW1lcyApID8gdmFycy5mb3JtX3N0eWxlX2Nzc192YXJfbmFtZXMgOiBbXTtcblx0Y29uc3Qga2V5cyA9IFtdO1xuXHRjb25zdCBwcmVzZXRzID0gd3BiY19iZmJfZ2xvYmFsX2Zvcm1fc3R5bGVfX2dldF9wcmVzZXRzKCk7XG5cblx0aWYgKCBsb2NhbGl6ZWQubGVuZ3RoICkge1xuXHRcdHJldHVybiBsb2NhbGl6ZWQ7XG5cdH1cblxuXHRPYmplY3Qua2V5cyggcHJlc2V0cyApLmZvckVhY2goIGZ1bmN0aW9uIChwcmVzZXRfa2V5KSB7XG5cdFx0Y29uc3QgcHJlc2V0ID0gcHJlc2V0c1twcmVzZXRfa2V5XSB8fCB7fTtcblx0XHRjb25zdCBjc3NfdmFycyA9IHByZXNldC5jc3NfdmFycyAmJiB0eXBlb2YgcHJlc2V0LmNzc192YXJzID09PSAnb2JqZWN0JyA/IHByZXNldC5jc3NfdmFycyA6IHt9O1xuXG5cdFx0T2JqZWN0LmtleXMoIGNzc192YXJzICkuZm9yRWFjaCggZnVuY3Rpb24gKHZhcl9uYW1lKSB7XG5cdFx0XHRpZiAoIGtleXMuaW5kZXhPZiggdmFyX25hbWUgKSA9PT0gLTEgKSB7XG5cdFx0XHRcdGtleXMucHVzaCggdmFyX25hbWUgKTtcblx0XHRcdH1cblx0XHR9ICk7XG5cdH0gKTtcblxuXHRPYmplY3Qua2V5cyggd3BiY19iZmJfZ2xvYmFsX2Zvcm1fc3R5bGVfX3Jlc29sdmVfY3NzX3ZhcnMoIE9iamVjdC5hc3NpZ24oIHt9LCBvcHRpb25zIHx8IHt9LCB7IGJvb2tpbmdfZm9ybV9zdHlsZTogJ2N1c3RvbScgfSApICkgKS5mb3JFYWNoKCBmdW5jdGlvbiAodmFyX25hbWUpIHtcblx0XHRpZiAoIGtleXMuaW5kZXhPZiggdmFyX25hbWUgKSA9PT0gLTEgKSB7XG5cdFx0XHRrZXlzLnB1c2goIHZhcl9uYW1lICk7XG5cdFx0fVxuXHR9ICk7XG5cblx0cmV0dXJuIGtleXM7XG59XG5cbmZ1bmN0aW9uIHdwYmNfYmZiX2dsb2JhbF9mb3JtX3N0eWxlX19zeW5jX2NvbnRyb2xzKG9wdGlvbnMpIHtcblx0Y29uc3QgaXNfY3VzdG9tID0gJ2N1c3RvbScgPT09IFN0cmluZyggb3B0aW9ucyAmJiBvcHRpb25zLmJvb2tpbmdfZm9ybV9zdHlsZSA/IG9wdGlvbnMuYm9va2luZ19mb3JtX3N0eWxlIDogJycgKTtcblx0Y29uc3QgcmVzZXRfcm93ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvciggJ1tkYXRhLXdwYmMtYmZiLWN1c3RvbS1hcHBlYXJhbmNlLXJlc2V0LXJvd10nICk7XG5cblx0d3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zZXRfcmFkaW9fY29udHJvbCggJ2Jvb2tpbmdfZm9ybV9zdHlsZScsIG9wdGlvbnMuYm9va2luZ19mb3JtX3N0eWxlIHx8ICdsaWdodF9ib3JkZXJlZCcgKTtcblxuXHRkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCAnLndwYmNfYmZiX19mb3JtX3NldHRpbmdfZ2xvYmFsX2N1c3RvbV9zdHlsZScgKS5mb3JFYWNoKCBmdW5jdGlvbiAocm93KSB7XG5cdFx0cm93LmhpZGRlbiA9ICEgaXNfY3VzdG9tO1xuXHRcdHJvdy5zZXRBdHRyaWJ1dGUoICdhcmlhLWhpZGRlbicsIGlzX2N1c3RvbSA/ICdmYWxzZScgOiAndHJ1ZScgKTtcblx0XHRyb3cuY2xhc3NMaXN0LnRvZ2dsZSggJ2lzLWhpZGRlbicsICEgaXNfY3VzdG9tICk7XG5cdH0gKTtcblxuXHRpZiAoIHJlc2V0X3JvdyApIHtcblx0XHRyZXNldF9yb3cuaGlkZGVuID0gISBpc19jdXN0b207XG5cdFx0cmVzZXRfcm93LnNldEF0dHJpYnV0ZSggJ2FyaWEtaGlkZGVuJywgaXNfY3VzdG9tID8gJ2ZhbHNlJyA6ICd0cnVlJyApO1xuXHRcdHJlc2V0X3Jvdy5jbGFzc0xpc3QudG9nZ2xlKCAnaXMtaGlkZGVuJywgISBpc19jdXN0b20gKTtcblx0fVxufVxuXG5mdW5jdGlvbiB3cGJjX2JmYl9nbG9iYWxfZm9ybV9zdHlsZV9fYXBwbHkodmFsdWUsIGN0eCkge1xuXHRjb25zdCBvcHRpb25zID0gd3BiY19iZmJfZ2xvYmFsX2Zvcm1fc3R5bGVfX2dldF9jdXJyZW50X29wdGlvbnMoIGN0eCwgY3R4ICYmIGN0eC5rZXksIHZhbHVlICk7XG5cdGNvbnN0IHN0eWxlID0gU3RyaW5nKCBvcHRpb25zLmJvb2tpbmdfZm9ybV9zdHlsZSB8fCAnbGlnaHRfYm9yZGVyZWQnICk7XG5cdGNvbnN0IHByZXNldHMgPSB3cGJjX2JmYl9nbG9iYWxfZm9ybV9zdHlsZV9fZ2V0X3ByZXNldHMoKTtcblx0Y29uc3QgcHJlc2V0ID0gcHJlc2V0c1tzdHlsZV0gfHwgcHJlc2V0cy5saWdodF9ib3JkZXJlZCB8fCB7fTtcblx0Y29uc3QgY3NzX3ZhcnMgPSB3cGJjX2JmYl9nbG9iYWxfZm9ybV9zdHlsZV9fcmVzb2x2ZV9jc3NfdmFycyggb3B0aW9ucyApO1xuXHRjb25zdCByb290ID0gKCBjdHggJiYgY3R4LmNhbnZhcyApIHx8IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCAnd3BiY19iZmJfX3RoZW1lX3Njb3BlJyApIHx8IGRvY3VtZW50O1xuXHRjb25zdCB0aGVtZV9jbGFzc2VzID0gW107XG5cdGNvbnN0IGNzc192YXJfa2V5cyA9IHdwYmNfYmZiX2dsb2JhbF9mb3JtX3N0eWxlX19nZXRfY3NzX3Zhcl9rZXlzKCBvcHRpb25zICk7XG5cblx0d3BiY19iZmJfZ2xvYmFsX2Zvcm1fc3R5bGVfX3N5bmNfY29udHJvbHMoIG9wdGlvbnMgKTtcblxuXHRPYmplY3Qua2V5cyggcHJlc2V0cyApLmZvckVhY2goIGZ1bmN0aW9uIChwcmVzZXRfa2V5KSB7XG5cdFx0Y29uc3QgY2xhc3NfbmFtZSA9IHByZXNldHNbcHJlc2V0X2tleV0gJiYgcHJlc2V0c1twcmVzZXRfa2V5XS50aGVtZV9jbGFzcyA/IFN0cmluZyggcHJlc2V0c1twcmVzZXRfa2V5XS50aGVtZV9jbGFzcyApIDogJyc7XG5cdFx0aWYgKCBjbGFzc19uYW1lICYmIHRoZW1lX2NsYXNzZXMuaW5kZXhPZiggY2xhc3NfbmFtZSApID09PSAtMSApIHtcblx0XHRcdHRoZW1lX2NsYXNzZXMucHVzaCggY2xhc3NfbmFtZSApO1xuXHRcdH1cblx0fSApO1xuXG5cdGlmICggISByb290IHx8ICEgcm9vdC5xdWVyeVNlbGVjdG9yQWxsICkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGNvbnN0IHNlbGVjdG9yID0gJy53cGJjX2NvbnRhaW5lci53cGJjX2Zvcm0sIC53cGJjX2JmYl9mb3JtLCAud3BiY19iZmJfX3BhZ2VzX3BhbmVsLCAud3BiY19iZmJfX2Zvcm1fcHJldmlld19zZWN0aW9uX2NvbnRhaW5lcic7XG5cdGNvbnN0IHdyYXBzID0gW107XG5cdGlmICggcm9vdC5tYXRjaGVzICYmIHJvb3QubWF0Y2hlcyggc2VsZWN0b3IgKSApIHtcblx0XHR3cmFwcy5wdXNoKCByb290ICk7XG5cdH1cblx0cm9vdC5xdWVyeVNlbGVjdG9yQWxsKCBzZWxlY3RvciApLmZvckVhY2goIGZ1bmN0aW9uICh3cmFwKSB7XG5cdFx0d3JhcHMucHVzaCggd3JhcCApO1xuXHR9ICk7XG5cblx0d3JhcHMuZm9yRWFjaCggZnVuY3Rpb24gKHdyYXApIHtcblx0XHRpZiAoICEgd3JhcCB8fCAhIHdyYXAuc3R5bGUgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHRoZW1lX2NsYXNzZXMuZm9yRWFjaCggZnVuY3Rpb24gKGNsYXNzX25hbWUpIHtcblx0XHRcdHdyYXAuY2xhc3NMaXN0LnJlbW92ZSggY2xhc3NfbmFtZSApO1xuXHRcdH0gKTtcblx0XHRpZiAoIHByZXNldC50aGVtZV9jbGFzcyApIHtcblx0XHRcdHdyYXAuY2xhc3NMaXN0LmFkZCggU3RyaW5nKCBwcmVzZXQudGhlbWVfY2xhc3MgKSApO1xuXHRcdH1cblx0XHR3cmFwLmNsYXNzTGlzdC50b2dnbGUoICd3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfY3VzdG9tJywgJ2N1c3RvbScgPT09IHN0eWxlICk7XG5cblx0XHRjc3NfdmFyX2tleXMuZm9yRWFjaCggZnVuY3Rpb24gKGNzc19rZXkpIHtcblx0XHRcdHdyYXAuc3R5bGUucmVtb3ZlUHJvcGVydHkoIGNzc19rZXkgKTtcblx0XHR9ICk7XG5cdFx0T2JqZWN0LmtleXMoIGNzc192YXJzICkuZm9yRWFjaCggZnVuY3Rpb24gKGNzc19rZXkpIHtcblx0XHRcdHdyYXAuc3R5bGUuc2V0UHJvcGVydHkoIGNzc19rZXksIGNzc192YXJzW2Nzc19rZXldICk7XG5cdFx0fSApO1xuXHR9ICk7XG59XG5cbltcblx0J2Jvb2tpbmdfZm9ybV9zdHlsZScsXG5cdCdib29raW5nX2Zvcm1fY3VzdG9tX2JhY2tncm91bmRfY29sb3InLFxuXHQnYm9va2luZ19mb3JtX2N1c3RvbV9ib3JkZXJfY29sb3InLFxuXHQnYm9va2luZ19mb3JtX2N1c3RvbV9ib3JkZXJfd2lkdGgnLFxuXHQnYm9va2luZ19mb3JtX2N1c3RvbV9ib3JkZXJfcmFkaXVzJyxcblx0J2Jvb2tpbmdfZm9ybV9jdXN0b21fcGFkZGluZ192ZXJ0aWNhbCcsXG5cdCdib29raW5nX2Zvcm1fY3VzdG9tX3BhZGRpbmdfaG9yaXpvbnRhbCcsXG5cdCdib29raW5nX2Zvcm1fY3VzdG9tX3RleHRfY29sb3InLFxuXHQnYm9va2luZ19mb3JtX2N1c3RvbV9maWVsZF9iYWNrZ3JvdW5kX2NvbG9yJyxcblx0J2Jvb2tpbmdfZm9ybV9jdXN0b21fZmllbGRfdGV4dF9jb2xvcicsXG5cdCdib29raW5nX2Zvcm1fY3VzdG9tX2ZpZWxkX2JvcmRlcl9jb2xvcicsXG5cdCdib29raW5nX2Zvcm1fY3VzdG9tX2J1dHRvbl9iYWNrZ3JvdW5kX2NvbG9yJyxcblx0J2Jvb2tpbmdfZm9ybV9jdXN0b21fYnV0dG9uX3RleHRfY29sb3InLFxuXHQnYm9va2luZ19mb3JtX2N1c3RvbV9idXR0b25fYm9yZGVyX2NvbG9yJyxcblx0J2Jvb2tpbmdfZm9ybV9jdXN0b21fYnV0dG9uX2hvdmVyX2JhY2tncm91bmRfY29sb3InLFxuXHQnYm9va2luZ19mb3JtX2N1c3RvbV9idXR0b25faG92ZXJfdGV4dF9jb2xvcicsXG5cdCdib29raW5nX2Zvcm1fY3VzdG9tX2J1dHRvbl9ob3Zlcl9ib3JkZXJfY29sb3InLFxuXHQnYm9va2luZ19mb3JtX2N1c3RvbV9zZWNvbmRhcnlfYnV0dG9uX2JhY2tncm91bmRfY29sb3InLFxuXHQnYm9va2luZ19mb3JtX2N1c3RvbV9zZWNvbmRhcnlfYnV0dG9uX3RleHRfY29sb3InLFxuXHQnYm9va2luZ19mb3JtX2N1c3RvbV9zZWNvbmRhcnlfYnV0dG9uX2JvcmRlcl9jb2xvcicsXG5cdCdib29raW5nX2Zvcm1fY3VzdG9tX3NlY29uZGFyeV9idXR0b25faG92ZXJfYmFja2dyb3VuZF9jb2xvcicsXG5cdCdib29raW5nX2Zvcm1fY3VzdG9tX3NlY29uZGFyeV9idXR0b25faG92ZXJfdGV4dF9jb2xvcicsXG5cdCdib29raW5nX2Zvcm1fY3VzdG9tX3NlY29uZGFyeV9idXR0b25faG92ZXJfYm9yZGVyX2NvbG9yJ1xuXS5mb3JFYWNoKCBmdW5jdGlvbiAoa2V5KSB7XG5cdFdQQkNfQkZCX1NldHRpbmdzX0VmZmVjdHMucmVnaXN0ZXIoIGtleSwgZnVuY3Rpb24gKHZhbHVlLCBjdHgpIHtcblx0XHR3cGJjX2JmYl9nbG9iYWxfZm9ybV9zdHlsZV9fYXBwbHkoIHZhbHVlLCBPYmplY3QuYXNzaWduKCB7fSwgY3R4IHx8IHt9LCB7IGtleToga2V5IH0gKSApO1xuXHR9ICk7XG59ICk7XG5cbmZ1bmN0aW9uIHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc3luY19jdXN0b21fY29udHJvbHNfZnJvbV91aSgpIHtcblx0Y29uc3Qgb3B0aW9ucyA9IHdwYmNfYmZiX2dsb2JhbF9mb3JtX3N0eWxlX19nZXRfY3VycmVudF9vcHRpb25zKCk7XG5cdHdwYmNfYmZiX2dsb2JhbF9mb3JtX3N0eWxlX19zeW5jX2NvbnRyb2xzKCBvcHRpb25zICk7XG5cdHdwYmNfYmZiX2dsb2JhbF9mb3JtX3N0eWxlX19hcHBseSggbnVsbCwgeyBzb3VyY2U6ICdzeW5jLWdsb2JhbC1zdHlsZScgfSApO1xufVxuXG53cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3N5bmNfY3VzdG9tX2NvbnRyb2xzX2Zyb21fdWkoKTtcbmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoICdET01Db250ZW50TG9hZGVkJywgd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zeW5jX2N1c3RvbV9jb250cm9sc19mcm9tX3VpICk7XG5cblxuLy8gQk9PS0lOR19GT1JNX1RIRU1FLlxuV1BCQ19CRkJfU2V0dGluZ3NfRWZmZWN0cy5yZWdpc3RlciggJ2Jvb2tpbmdfZm9ybV90aGVtZScsIGZ1bmN0aW9uICh2YWx1ZSwgY3R4KSB7XG5cdGNvbnN0IHJvb3QgPSAoY3R4ICYmIGN0eC5jYW52YXMpIHx8IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCAnd3BiY19iZmJfX3RoZW1lX3Njb3BlJyApIHx8IGRvY3VtZW50O1xuXHRpZiAoICEgcm9vdCB8fCAhIHJvb3QucXVlcnlTZWxlY3RvckFsbCApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRpZiAoIHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9faXNfdXNlcl90aGVtZV9zd2l0Y2goIGN0eCApICkge1xuXHRcdGNvbnN0IGN1cnJlbnRfb3B0aW9ucyA9IHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fZ2V0X2N1cnJlbnRfb3B0aW9ucygpO1xuXHRcdGlmICggJ2N1c3RvbScgPT09IFN0cmluZyggY3VycmVudF9vcHRpb25zLmJvb2tpbmdfZm9ybV9jb250YWluZXJfc3R5bGUgfHwgJycgKSApIHtcblx0XHRcdGN1cnJlbnRfb3B0aW9ucy5ib29raW5nX2Zvcm1fdGhlbWUgPSB2YWx1ZTtcblx0XHRcdHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc3luY19mb3JtX3N0eWxlX2NvbnRyb2woIGN1cnJlbnRfb3B0aW9ucyApO1xuXHRcdFx0d3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19hcHBseV92YXJzKCAnY3VzdG9tJywgT2JqZWN0LmFzc2lnbigge30sIGN0eCB8fCB7fSwge1xuXHRcdFx0XHRrZXkgICAgOiAnYm9va2luZ19mb3JtX2NvbnRhaW5lcl9zdHlsZScsXG5cdFx0XHRcdHNvdXJjZSA6ICd0aGVtZS1iYXNlLWN1c3RvbScsXG5cdFx0XHRcdG9wdGlvbnM6IGN1cnJlbnRfb3B0aW9uc1xuXHRcdFx0fSApICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2V0X2NvbnRhaW5lcl9zdHlsZV9jb250cm9sKCAnYm9yZGVyZWQnICk7XG5cdFx0XHR3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX2FwcGx5X3ZhcnMoICdib3JkZXJlZCcsIE9iamVjdC5hc3NpZ24oIHt9LCBjdHggfHwge30sIHsga2V5OiAnYm9va2luZ19mb3JtX2NvbnRhaW5lcl9zdHlsZScgfSApICk7XG5cdFx0fVxuXHR9IGVsc2UgaWYgKCBjdHggJiYgY3R4Lm9wdGlvbnMgKSB7XG5cdFx0d3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zeW5jX2Zvcm1fc3R5bGVfY29udHJvbCggY3R4Lm9wdGlvbnMgKTtcblx0fVxuXG5cdGNvbnN0IHRoZW1lX3NlbGVjdG9yID0gJy53cGJjX2NvbnRhaW5lci53cGJjX2Zvcm0sIC53cGJjX2JmYl9mb3JtLCAud3BiY19iZmJfX3BhZ2VzX3BhbmVsJztcblx0Y29uc3Qgd3JhcHMgPSBbXTtcblx0aWYgKCByb290Lm1hdGNoZXMgJiYgcm9vdC5tYXRjaGVzKCB0aGVtZV9zZWxlY3RvciApICkge1xuXHRcdHdyYXBzLnB1c2goIHJvb3QgKTtcblx0fVxuXHRyb290LnF1ZXJ5U2VsZWN0b3JBbGwoIHRoZW1lX3NlbGVjdG9yICkuZm9yRWFjaCggZnVuY3Rpb24gKHdyYXApIHtcblx0XHR3cmFwcy5wdXNoKCB3cmFwICk7XG5cdH0gKTtcblx0aWYgKCAhIHdyYXBzLmxlbmd0aCApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHR3cmFwcy5mb3JFYWNoKCBmdW5jdGlvbiAod3JhcCkge1xuXHRcdC8vIHJlbW92ZSBhbnkgcHJldmlvdXMgdGhlbWUgY2xhc3NlcyAoc2ltcGxlICsgZnV0dXJlLXByb29mKS5cblx0XHRBcnJheS5mcm9tKCB3cmFwLmNsYXNzTGlzdCApLmZvckVhY2goIGZ1bmN0aW9uIChjbHMpIHtcblx0XHRcdGlmICggL153cGJjX3RoZW1lXy8udGVzdCggY2xzICkgKSB7XG5cdFx0XHRcdHdyYXAuY2xhc3NMaXN0LnJlbW92ZSggY2xzICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXG5cdFx0aWYgKCB2YWx1ZSApIHtcblx0XHRcdHdyYXAuY2xhc3NMaXN0LmFkZCggU3RyaW5nKCB2YWx1ZSApICk7XG5cdFx0fVxuXHR9ICk7XG59ICk7XG5cblxuLy8gQk9PS0lOR19GT1JNX0xBWU9VVF9XSURUSCDigJQgRm9ybSB3aWR0aDogYXBwbGllcyBjb21iaW5lZCBcIjEwMCVcIiAvIFwiNjAwcHhcIiAvIFwiNDByZW1cIiB0byB0aGUgYm9va2luZyBmb3JtIGNvbnRhaW5lcnMuXG5XUEJDX0JGQl9TZXR0aW5nc19FZmZlY3RzLnJlZ2lzdGVyKCAnYm9va2luZ19mb3JtX2xheW91dF93aWR0aCcsIGZ1bmN0aW9uICh2YWx1ZSwgY3R4KSB7XG5cdGNvbnN0IHJvb3QgPSBjdHggJiYgY3R4LmNhbnZhcztcblx0aWYgKCAhIHJvb3QgfHwgISByb290LnF1ZXJ5U2VsZWN0b3JBbGwgKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Y29uc3Qgd3JhcHMgPSByb290LnF1ZXJ5U2VsZWN0b3JBbGwoICcud3BiY19iZmJfX2Zvcm1fcHJldmlld19zZWN0aW9uX2NvbnRhaW5lcicgKTtcblx0aWYgKCAhIHdyYXBzLmxlbmd0aCApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRjb25zdCB2ID0gU3RyaW5nKCB2YWx1ZSA9PSBudWxsID8gJycgOiB2YWx1ZSApLnRyaW0oKTtcblxuXHQvLyBhbGxvdyBvbmx5IFwibnVtYmVyICsgdW5pdFwiLlxuXHRpZiAoIHYgJiYgISAvXi0/XFxkKyg/OlxcLlxcZCspPyg/OiV8cHh8cmVtfGVtfHZ3fHZoKSQvLnRlc3QoIHYgKSApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHR3cmFwcy5mb3JFYWNoKFxuXHRcdGZ1bmN0aW9uICh3cmFwKSB7XG5cdFx0XHRpZiAoICEgd3JhcCB8fCAhIHdyYXAuc3R5bGUgKSB7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblxuXHRcdFx0aWYgKCAhIHYgKSB7XG5cdFx0XHRcdHdyYXAuc3R5bGUucmVtb3ZlUHJvcGVydHkoICctLXdwYmMtYmZiLWJvb2tpbmdfZm9ybV9sYXlvdXRfd2lkdGgnICk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR3cmFwLnN0eWxlLnNldFByb3BlcnR5KCAnLS13cGJjLWJmYi1ib29raW5nX2Zvcm1fbGF5b3V0X3dpZHRoJywgdiApO1xuXHRcdFx0fVxuXHRcdH1cblx0KTtcbn0gKTtcblxuXG4vLyBEZWJ1ZyBQcmV2aWV3IE1vZGUuXG5XUEJDX0JGQl9TZXR0aW5nc19FZmZlY3RzLnJlZ2lzdGVyKCAnYm9va2luZ19iZmJfcHJldmlld19tb2RlJywgZnVuY3Rpb24gKHZhbHVlLCBjdHgpIHtcblx0Y29uc3Qgcm9vdCA9IGN0eC5jYW52YXM7XG5cdGlmICggISByb290IHx8ICEgcm9vdC5xdWVyeVNlbGVjdG9yQWxsICkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGNvbnN0IHdyYXBzID0gcm9vdC5xdWVyeVNlbGVjdG9yQWxsKCAnLndwYmNfY29udGFpbmVyLndwYmNfZm9ybScgKTtcblx0aWYgKCAhIHdyYXBzLmxlbmd0aCApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHQvLyBHZXQgYnVpbGRlciBhc3luYy5cblx0d3BiY19iZmJfYXBpLndpdGhfYnVpbGRlcihcblx0XHRmdW5jdGlvbiAoQnVpbGRlcikge1xuXG5cdFx0XHQvKipcblx0XHRcdCAqIENhcHR1cmUgYWN0aXZlIHJpZ2h0IHNpZGViYXIgdGFiIGFuZCByZXR1cm4gcmVzdG9yZSBoYW5kbGUuXG5cdFx0XHQgKlxuXHRcdFx0ICogQHJldHVybiB7e3Jlc3RvcmU6ZnVuY3Rpb24oKTp2b2lkfXxudWxsfVxuXHRcdFx0ICovXG5cdFx0XHRmdW5jdGlvbiBjYXB0dXJlX3JpZ2h0X3NpZGViYXJfYWN0aXZlX3RhYl9yZXN0b3JlX2hhbmRsZSgpIHtcblxuXHRcdFx0XHR2YXIgdGFibGlzdF9lbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoICcud3BiY19iZmJfX3JpZ2h0YmFyX3RhYnNbcm9sZT1cInRhYmxpc3RcIl0nICk7XG5cdFx0XHRcdGlmICggISB0YWJsaXN0X2VsICkge1xuXHRcdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dmFyIGFjdGl2ZV90YWJfZWwgPSB0YWJsaXN0X2VsLnF1ZXJ5U2VsZWN0b3IoICdbcm9sZT1cInRhYlwiXVthcmlhLXNlbGVjdGVkPVwidHJ1ZVwiXScgKTtcblxuXHRcdFx0XHRpZiAoICEgYWN0aXZlX3RhYl9lbCApIHtcblx0XHRcdFx0XHRhY3RpdmVfdGFiX2VsID0gdGFibGlzdF9lbC5xdWVyeVNlbGVjdG9yKCAnW3JvbGU9XCJ0YWJcIl1bYXJpYS1jb250cm9scz1cIndwYmNfYmZiX19wYWxldHRlX2FkZF9uZXdcIl0nICk7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAoICEgYWN0aXZlX3RhYl9lbCB8fCB0eXBlb2YgYWN0aXZlX3RhYl9lbC5jbGljayAhPT0gJ2Z1bmN0aW9uJyApIHtcblx0XHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiB7XG5cdFx0XHRcdFx0cmVzdG9yZTogZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRcdFx0dHJ5IHsgYWN0aXZlX3RhYl9lbC5jbGljaygpOyB9IGNhdGNoICggX2UgKSB7fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fTtcblx0XHRcdH1cblxuXHRcdFx0dmFyIHRhYl9yZXN0b3JlX2hhbmRsZSA9IGNhcHR1cmVfcmlnaHRfc2lkZWJhcl9hY3RpdmVfdGFiX3Jlc3RvcmVfaGFuZGxlKCk7XG5cblx0XHRcdGxldCByZXN0b3JlZCAgPSBmYWxzZTtcblx0XHRcdHZhciBFVlMgICAgICA9IHdpbmRvdy5XUEJDX0JGQl9Db3JlICYmIHdpbmRvdy5XUEJDX0JGQl9Db3JlLldQQkNfQkZCX0V2ZW50cyA/IHdpbmRvdy5XUEJDX0JGQl9Db3JlLldQQkNfQkZCX0V2ZW50cyA6IHt9O1xuXHRcdFx0dmFyIEVWX0RPTkUgID0gRVZTLlNUUlVDVFVSRV9MT0FERUQgfHwgRVZTLkNBTlZBU19SRUZSRVNIRUQgfHwgJ3dwYmM6YmZiOnN0cnVjdHVyZS1sb2FkZWQnO1xuXG5cblx0XHRcdGZ1bmN0aW9uIGRvX3Jlc3RvcmUoKSB7XG5cdFx0XHRcdGlmICggcmVzdG9yZWQgKSB7IHJldHVybjsgfVxuXHRcdFx0XHRyZXN0b3JlZCA9IHRydWU7XG5cdFx0XHRcdHRyeSB7IEJ1aWxkZXI/LmJ1cz8ub2ZmPy4oIEVWX0RPTkUsIGRvX3Jlc3RvcmUgKTsgfSBjYXRjaCAoIF8gKSB7fVxuXHRcdFx0XHRyZXF1ZXN0QW5pbWF0aW9uRnJhbWUoIGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRpZiAoICEgdGFiX3Jlc3RvcmVfaGFuZGxlICkgeyByZXR1cm47IH1cblx0XHRcdFx0XHR0YWJfcmVzdG9yZV9oYW5kbGUucmVzdG9yZSgpO1xuXHRcdFx0XHR9ICk7XG5cdFx0XHR9XG5cblx0XHRcdC8vIExpc3RlbiBvbmNlIChiZXN0KSwgcGx1cyBhIGZhbGxiYWNrIGluIGNhc2UgZXZlbnQgaXNuJ3QgZmlyZWQuXG5cdFx0XHR0cnkgeyBCdWlsZGVyPy5idXM/Lm9uPy4oIEVWX0RPTkUsIGRvX3Jlc3RvcmUgKTsgfSBjYXRjaCAoIF8gKSB7fVxuXG5cblx0XHRcdHZhciBlbmFibGVkID0gKCdPbicgPT09IHZhbHVlKTtcblx0XHRcdEJ1aWxkZXIuc2V0X3ByZXZpZXdfbW9kZSggZW5hYmxlZCwgeyByZWJ1aWxkOiB0cnVlLCByZWluaXQ6IHRydWUsIHNvdXJjZTogJ3NldHRpbmdzLWVmZmVjdHMnIH0gKTtcblx0XHR9XG5cdCk7XG5cbn0gKTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQyxVQUFVQSxDQUFDLEVBQUVDLENBQUMsRUFBRTtFQUNoQixZQUFZOztFQUVaLE1BQU1DLE9BQU8sR0FBSUYsQ0FBQyxDQUFDRyx5QkFBeUIsR0FBR0gsQ0FBQyxDQUFDRyx5QkFBeUIsSUFBSSxDQUFDLENBQUU7RUFDakYsTUFBTUMsR0FBRyxHQUFRRixPQUFPLENBQUNFLEdBQUcsR0FBR0YsT0FBTyxDQUFDRSxHQUFHLElBQUlDLE1BQU0sQ0FBQ0MsTUFBTSxDQUFFLElBQUssQ0FBRTtFQUVwRUosT0FBTyxDQUFDSyxRQUFRLEdBQUcsVUFBVUMsR0FBRyxFQUFFQyxFQUFFLEVBQUU7SUFDckMsSUFBS0QsR0FBRyxJQUFJLE9BQU9DLEVBQUUsS0FBSyxVQUFVLEVBQUc7TUFDdENMLEdBQUcsQ0FBQ00sTUFBTSxDQUFFRixHQUFJLENBQUMsQ0FBQyxHQUFHQyxFQUFFO0lBQ3hCO0VBQ0QsQ0FBQztFQUVELFNBQVNFLGVBQWVBLENBQUEsRUFBRztJQUMxQixPQUNDVixDQUFDLENBQUNXLGFBQWEsQ0FBRSw0QkFBNkIsQ0FBQyxJQUMvQ1gsQ0FBQyxDQUFDVyxhQUFhLENBQUUsMkJBQTRCLENBQUMsSUFDOUNYLENBQUMsQ0FBQ1ksY0FBYyxDQUFFLG1CQUFvQixDQUFDLElBQ3ZDWixDQUFDLENBQUNhLElBQUksSUFBSWIsQ0FBQyxDQUFDYyxlQUFlO0VBRTdCO0VBRUFiLE9BQU8sQ0FBQ2MsU0FBUyxHQUFHLFVBQVVSLEdBQUcsRUFBRVMsS0FBSyxFQUFFQyxHQUFHLEVBQUU7SUFDOUMsTUFBTVQsRUFBRSxHQUFHTCxHQUFH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 | |
| 1094 | +//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5jbHVkZXMvcGFnZS1mb3JtLWJ1aWxkZXIvZm9ybS1zZXR0aW5ncy9fb3V0L3NldHRpbmdzX2VmZmVjdHMuanMiLCJuYW1lcyI6WyJ3IiwiZCIsIkVmZmVjdHMiLCJXUEJDX0JGQl9TZXR0aW5nc19FZmZlY3RzIiwibWFwIiwiT2JqZWN0IiwiY3JlYXRlIiwicmVnaXN0ZXIiLCJrZXkiLCJmbiIsIlN0cmluZyIsImdldF9jYW52YXNfcm9vdCIsInF1ZXJ5U2VsZWN0b3IiLCJnZXRFbGVtZW50QnlJZCIsImJvZHkiLCJkb2N1bWVudEVsZW1lbnQiLCJhcHBseV9vbmUiLCJ2YWx1ZSIsImN0eCIsImFzc2lnbiIsImNhbnZhcyIsImUiLCJjb25zb2xlIiwiZXJyb3IiLCJhcHBseV9hbGwiLCJvcHRpb25zIiwia2V5cyIsImZvckVhY2giLCJrIiwibm9ybWFsaXplX3BhY2siLCJwYWNrIiwiSlNPTiIsInBhcnNlIiwiX2UiLCJoYXNfc2hhcGUiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJjc3NfdmFycyIsImJmYl9vcHRpb25zIiwicmVhcHBseV9hZnRlcl9jYW52YXMiLCJzZXR0aW5nc19wYWNrIiwic291cmNlIiwid3BiY19iZmJfZ2xvYmFsX2Zvcm1fc3R5bGVfX2FwcGx5Iiwic2V0VGltZW91dCIsImFkZEV2ZW50TGlzdGVuZXIiLCJkZXRhaWwiLCJzZXR0aW5ncyIsImNzc19lc2NhcGUiLCJ2IiwiQ1NTIiwiZXNjYXBlIiwicmVwbGFjZSIsImZpbmRfZnNfcm9vdCIsImVsIiwiY2xvc2VzdCIsImRpcmVjdCIsImxlbl9ncm91cCIsInNwYWNpbmdfZ3JvdXAiLCJyYW5nZV9ncm91cCIsInJlYWRfdmFsdWVfZnJvbV9mc19yb290IiwiZnNfcm9vdCIsIm9yaWdpbmFsX3RhcmdldCIsImZzX3R5cGUiLCJnZXRBdHRyaWJ1dGUiLCJjb250cm9sX2lkIiwic2VsZWN0b3IiLCJjaGVja2VkIiwiZ3JvdXAiLCJ2ZXJ0aWNhbF9pbnB1dCIsImhvcml6b250YWxfaW5wdXQiLCJ3cml0ZXIiLCJ2ZXJ0aWNhbCIsImhvcml6b250YWwiLCJjb21iaW5lZCIsIndwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fbm9ybWFsaXplX3NwYWNpbmdfbnVtYmVycyIsInR5cGUiLCJjYiIsImFwcGx5X2NoYW5nZV9mcm9tX3RhcmdldCIsInRhcmdldCIsImV2ZW50X3R5cGUiLCJldmVudF9zb3VyY2UiLCJ0YWciLCJ0YWdOYW1lIiwidG9Mb3dlckNhc2UiLCJ1c2VfY2hhbmdlIiwic2NvcGUiLCJjb250cm9sIiwiaXNfY29sb3Jpc19jb250cm9sIiwibWF0Y2hlcyIsIm9uX2NoYW5nZSIsImV2IiwiaXNUcnVzdGVkIiwib25fY29sb3Jpc19waWNrIiwiY3VycmVudEVsIiwiaW5wdXQiLCJjb2xvciIsIndpbmRvdyIsImRvY3VtZW50Iiwid3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19nZXRfcHJlc2V0cyIsImJvcmRlcmVkIiwiYmFja2dyb3VuZCIsImJvcmRlckNvbG9yIiwiYm9yZGVyV2lkdGgiLCJyYWRpdXMiLCJwYWRkaW5nIiwic2hhZG93Iiwibm9uZSIsInNvZnQiLCJ3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX2lzX2RhcmtfdGhlbWUiLCJib29raW5nX2Zvcm1fdGhlbWUiLCJ3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX2dldF9wcmVzZXRfZm9yX29wdGlvbnMiLCJzdHlsZSIsInByZXNldHMiLCJ3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Nhbml0aXplX2NvbG9yIiwiZmFsbGJhY2siLCJ0cmltIiwidGVzdCIsIndwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2FuaXRpemVfb3B0aW9uYWxfY29sb3IiLCJ3cGJjX2JmYl9nbG9iYWxfZm9ybV9zdHlsZV9fc2FuaXRpemVfYWNjZW50X2NvbG9yIiwicmVxdWVzdGVkX2NvbG9yIiwic2V0dGluZ3NfdmFycyIsIndwYmNfYmZiX3NldHRpbmdzX3ZhcnMiLCJhY2NlbnRfZGVmYXVsdHMiLCJmb3JtX2FjY2VudF9kZWZhdWx0cyIsImRlZmF1bHRfY29sb3IiLCJib29raW5nX2Zvcm1fYWNjZW50X2NvbG9yIiwid3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zYW5pdGl6ZV9sZW5ndGgiLCJ3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Nhbml0aXplX3NwYWNpbmciLCJwYXJ0cyIsInNwbGl0IiwibGVuZ3RoIiwiaSIsImpvaW4iLCJoIiwidmVydGljYWxfbnVtIiwiaG9yaXpvbnRhbF9udW0iLCJ3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX2NvbGxlY3Rfb3B0aW9ucyIsIldQQkNfQkZCX0Zvcm1TZXR0aW5ncyIsImNvbGxlY3QiLCJ3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX2lzX2N1c3RvbV9jb250cm9sX2tleSIsImJvb2tpbmdfZm9ybV9jb250YWluZXJfc3R5bGUiLCJ3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3NldF9jb250YWluZXJfc3R5bGVfY29udHJvbCIsIndwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fZ2V0X2N1c3RvbV9jb250cm9sX2tleXMiLCJpbmRleE9mIiwid3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zZXRfcmFkaW9fY29udHJvbCIsInJvdyIsIndyYXAiLCJyYWRpb3MiLCJxdWVyeVNlbGVjdG9yQWxsIiwicmFkaW8iLCJzaG91bGRfY2hlY2siLCJjaG9pY2UiLCJjbGFzc0xpc3QiLCJ0b2dnbGUiLCJ3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3NldF9zZWxlY3RfY29udHJvbCIsIndwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fZ2V0X2N1cnJlbnRfb3B0aW9ucyIsIndwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fZ2V0X3N0eWxlX3ZhbHVlX2Zyb21fb3B0aW9ucyIsInRoZW1lIiwicHJlZml4Iiwid3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zeW5jX2Zvcm1fc3R5bGVfY29udHJvbCIsIndwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fcmVzb2x2ZV9mb3JtX3N0eWxlX2Nob2ljZSIsImN1cnJlbnRfb3B0aW9ucyIsImN1cnJlbnRfdGhlbWUiLCJ3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX2lzX3VzZXJfdGhlbWVfc3dpdGNoIiwid3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19pc19jdXN0b21fc3R5bGUiLCJ3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3N5bmNfY3VzdG9tX2NvbnRyb2xzIiwiaXNfY3VzdG9tIiwicmVzZXRfcm93IiwiYmFzZV90aGVtZV9yb3ciLCJoaWRkZW4iLCJzZXRBdHRyaWJ1dGUiLCJ3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Jlc29sdmUiLCJnbG9iYWxfb3B0aW9ucyIsImdsb2JhbF9hcHBlYXJhbmNlIiwiYm9va2luZ19mb3JtX2JhY2tncm91bmRfY29sb3IiLCJib29raW5nX2Zvcm1fYm9yZGVyX2NvbG9yIiwiYm9va2luZ19mb3JtX2JvcmRlcl93aWR0aCIsImJvb2tpbmdfZm9ybV9ib3JkZXJfcmFkaXVzIiwiYm9va2luZ19mb3JtX3BhZGRpbmciLCJ3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Jlc29sdmVfZGVzaWduX2NvbG9ycyIsInRleHRDb2xvciIsImZpZWxkQmFja2dyb3VuZCIsImZpZWxkVGV4dCIsImZpZWxkQm9yZGVyIiwiYm9va2luZ19mb3JtX3RleHRfY29sb3IiLCJib29raW5nX2Zvcm1fZmllbGRfYmFja2dyb3VuZF9jb2xvciIsImJvb2tpbmdfZm9ybV9maWVsZF90ZXh0X2NvbG9yIiwiYm9va2luZ19mb3JtX2ZpZWxkX2JvcmRlcl9jb2xvciIsIndwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fYXBwbHlfdmFycyIsInJlc29sdmVkIiwiZGVzaWduIiwicm9vdCIsIndyYXBzIiwicmVtb3ZlUHJvcGVydHkiLCJzZXRQcm9wZXJ0eSIsIndwYmNfYmZiX2dsb2JhbF9mb3JtX3N0eWxlX19nZXRfdmFycyIsIndwYmNfYmZiX2dsb2JhbF9mb3JtX3N0eWxlX19nZXRfcHJlc2V0cyIsInZhcnMiLCJmb3JtX3N0eWxlX3ByZXNldHMiLCJ3cGJjX2JmYl9nbG9iYWxfZm9ybV9zdHlsZV9fZ2V0X2N1c3RvbV9rZXlzIiwid3BiY19iZmJfZ2xvYmFsX2Zvcm1fc3R5bGVfX2dldF9jdXN0b21fZGVmYXVsdHMiLCJsb2NhbGl6ZWQiLCJjdXN0b21fZm9ybV9zdHlsZV9kZWZhdWx0cyIsImJvb2tpbmdfZm9ybV9jdXN0b21fYmFja2dyb3VuZF9jb2xvciIsImJvb2tpbmdfZm9ybV9jdXN0b21fYm9yZGVyX2NvbG9yIiwiYm9va2luZ19mb3JtX2N1c3RvbV9ib3JkZXJfd2lkdGgiLCJib29raW5nX2Zvcm1fY3VzdG9tX2JvcmRlcl9yYWRpdXMiLCJib29raW5nX2Zvcm1fY3VzdG9tX3BhZGRpbmdfdmVydGljYWwiLCJib29raW5nX2Zvcm1fY3VzdG9tX3BhZGRpbmdfaG9yaXpvbnRhbCIsImJvb2tpbmdfZm9ybV9jdXN0b21fdGV4dF9jb2xvciIsImJvb2tpbmdfZm9ybV9jdXN0b21fZmllbGRfYmFja2dyb3VuZF9jb2xvciIsImJvb2tpbmdfZm9ybV9jdXN0b21fZmllbGRfdGV4dF9jb2xvciIsImJvb2tpbmdfZm9ybV9jdXN0b21fZmllbGRfYm9yZGVyX2NvbG9yIiwiYm9va2luZ19mb3JtX2N1c3RvbV9idXR0b25fYmFja2dyb3VuZF9jb2xvciIsImJvb2tpbmdfZm9ybV9jdXN0b21fYnV0dG9uX3RleHRfY29sb3IiLCJib29raW5nX2Zvcm1fY3VzdG9tX2J1dHRvbl9ib3JkZXJfY29sb3IiLCJib29raW5nX2Zvcm1fY3VzdG9tX2J1dHRvbl9ob3Zlcl9iYWNrZ3JvdW5kX2NvbG9yIiwiYm9va2luZ19mb3JtX2N1c3RvbV9idXR0b25faG92ZXJfdGV4dF9jb2xvciIsImJvb2tpbmdfZm9ybV9jdXN0b21fYnV0dG9uX2hvdmVyX2JvcmRlcl9jb2xvciIsImJvb2tpbmdfZm9ybV9jdXN0b21fc2Vjb25kYXJ5X2J1dHRvbl9iYWNrZ3JvdW5kX2NvbG9yIiwiYm9va2luZ19mb3JtX2N1c3RvbV9zZWNvbmRhcnlfYnV0dG9uX3RleHRfY29sb3IiLCJib29raW5nX2Zvcm1fY3VzdG9tX3NlY29uZGFyeV9idXR0b25fYm9yZGVyX2NvbG9yIiwiYm9va2luZ19mb3JtX2N1c3RvbV9zZWNvbmRhcnlfYnV0dG9uX2hvdmVyX2JhY2tncm91bmRfY29sb3IiLCJib29raW5nX2Zvcm1fY3VzdG9tX3NlY29uZGFyeV9idXR0b25faG92ZXJfdGV4dF9jb2xvciIsImJvb2tpbmdfZm9ybV9jdXN0b21fc2Vjb25kYXJ5X2J1dHRvbl9ob3Zlcl9ib3JkZXJfY29sb3IiLCJib29raW5nX2Zvcm1fY3VzdG9tX2J1dHRvbl9ib3JkZXJfd2lkdGgiLCJib29raW5nX2Zvcm1fY3VzdG9tX2J1dHRvbl9ib3JkZXJfcmFkaXVzIiwid3BiY19iZmJfZ2xvYmFsX2Zvcm1fc3R5bGVfX2dldF9jdXJyZW50X29wdGlvbnMiLCJnbG9iYWxfZm9ybV9zdHlsZSIsImJvb2tpbmdfZm9ybV9zdHlsZSIsIndwYmNfYmZiX2dsb2JhbF9mb3JtX3N0eWxlX19taXhfY29sb3JzIiwiYW1vdW50IiwiZGVzdGluYXRpb24iLCJjaGFubmVscyIsImluZGV4Iiwic291cmNlX2NoYW5uZWwiLCJwYXJzZUludCIsInN1YnN0ciIsInRhcmdldF9jaGFubmVsIiwicHVzaCIsIk1hdGgiLCJyb3VuZCIsImNoYW5uZWwiLCJ0b1N0cmluZyIsInNsaWNlIiwid3BiY19iZmJfZ2xvYmFsX2Zvcm1fc3R5bGVfX2dldF9sdW1pbmFuY2UiLCJoZXgiLCJwb3ciLCJ3cGJjX2JmYl9nbG9iYWxfZm9ybV9zdHlsZV9fYXBwbHlfYWNjZW50IiwicHJlc2VydmVfY3VzdG9tX2J1dHRvbl9jb2xvcnMiLCJib29raW5nX2Zvcm1fYWNjZW50X2VuYWJsZWQiLCJhY2NlbnQiLCJsdW1pbmFuY2UiLCJjb250cmFzdCIsImhvdmVyX3RhcmdldCIsImhvdmVyIiwiaG92ZXJfY29udHJhc3QiLCJhY2NlbnRfb3ZlcmxheSIsImNzc192YXJfbmFtZSIsIndwYmNfYmZiX2dsb2JhbF9mb3JtX3N0eWxlX19yZXNvbHZlX2Nzc192YXJzIiwicHJlc2V0IiwibGlnaHRfYm9yZGVyZWQiLCJkZWZhdWx0cyIsIndwYmNfYmZiX2dsb2JhbF9mb3JtX3N0eWxlX19nZXRfY3NzX3Zhcl9rZXlzIiwiQXJyYXkiLCJpc0FycmF5IiwiZm9ybV9zdHlsZV9jc3NfdmFyX25hbWVzIiwicHJlc2V0X2tleSIsInZhcl9uYW1lIiwid3BiY19iZmJfZ2xvYmFsX2Zvcm1fc3R5bGVfX3N5bmNfY29udHJvbHMiLCJhY2NlbnRfZW5hYmxlZCIsInRoZW1lX2NsYXNzZXMiLCJjc3NfdmFyX2tleXMiLCJjbGFzc19uYW1lIiwidGhlbWVfY2xhc3MiLCJyZW1vdmUiLCJhZGQiLCJjc3Nfa2V5Iiwid3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zeW5jX2N1c3RvbV9jb250cm9sc19mcm9tX3VpIiwidGhlbWVfc2VsZWN0b3IiLCJmcm9tIiwiY2xzIiwid3BiY19iZmJfYXBpIiwid2l0aF9idWlsZGVyIiwiQnVpbGRlciIsImNhcHR1cmVfcmlnaHRfc2lkZWJhcl9hY3RpdmVfdGFiX3Jlc3RvcmVfaGFuZGxlIiwidGFibGlzdF9lbCIsImFjdGl2ZV90YWJfZWwiLCJjbGljayIsInJlc3RvcmUiLCJ0YWJfcmVzdG9yZV9oYW5kbGUiLCJyZXN0b3JlZCIsIkVWUyIsIldQQkNfQkZCX0NvcmUiLCJXUEJDX0JGQl9FdmVudHMiLCJFVl9ET05FIiwiU1RSVUNUVVJFX0xPQURFRCIsIkNBTlZBU19SRUZSRVNIRUQiLCJkb19yZXN0b3JlIiwiYnVzIiwib2ZmIiwiXyIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsIm9uIiwiZW5hYmxlZCIsInNldF9wcmV2aWV3X21vZGUiLCJyZWJ1aWxkIiwicmVpbml0Il0sInNvdXJjZXMiOlsiaW5jbHVkZXMvcGFnZS1mb3JtLWJ1aWxkZXIvZm9ybS1zZXR0aW5ncy9fc3JjL3NldHRpbmdzX2VmZmVjdHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBBcHBsaWVzIGVmZmVjdHMgaW4gQ2FudmFzLCBhZnRlciBjaGFuZ2luZyBzb21lIHNldHRpbmdzIGluIHRoZSByaWdodCBzaWRlYmFyIGluIEJGQi5cbiAqXG4gKiBAZmlsZSAuLi9pbmNsdWRlcy9wYWdlLWZvcm0tYnVpbGRlci9mb3JtLXNldHRpbmdzL19zcmMvc2V0dGluZ3NfZWZmZWN0cy5qc1xuICovXG4oZnVuY3Rpb24gKHcsIGQpIHtcblx0J3VzZSBzdHJpY3QnO1xuXG5cdGNvbnN0IEVmZmVjdHMgPSAody5XUEJDX0JGQl9TZXR0aW5nc19FZmZlY3RzID0gdy5XUEJDX0JGQl9TZXR0aW5nc19FZmZlY3RzIHx8IHt9KTtcblx0Y29uc3QgbWFwICAgICA9IChFZmZlY3RzLm1hcCA9IEVmZmVjdHMubWFwIHx8IE9iamVjdC5jcmVhdGUoIG51bGwgKSk7XG5cblx0RWZmZWN0cy5yZWdpc3RlciA9IGZ1bmN0aW9uIChrZXksIGZuKSB7XG5cdFx0aWYgKCBrZXkgJiYgdHlwZW9mIGZuID09PSAnZnVuY3Rpb24nICkge1xuXHRcdFx0bWFwW1N0cmluZygga2V5ICldID0gZm47XG5cdFx0fVxuXHR9O1xuXG5cdGZ1bmN0aW9uIGdldF9jYW52YXNfcm9vdCgpIHtcblx0XHRyZXR1cm4gKFxuXHRcdFx0ZC5xdWVyeVNlbGVjdG9yKCAnI3dwYmNfYmZiX19wYWdlc19jb250YWluZXInICkgfHxcblx0XHRcdGQucXVlcnlTZWxlY3RvciggJy53cGJjX2JmYl9fcGFuZWwtLXByZXZpZXcnICkgfHxcblx0XHRcdGQuZ2V0RWxlbWVudEJ5SWQoICd3cGJjX2JmYl9fcHJldmlldycgKSB8fFxuXHRcdFx0ZC5ib2R5IHx8IGQuZG9jdW1lbnRFbGVtZW50XG5cdFx0KTtcblx0fVxuXG5cdEVmZmVjdHMuYXBwbHlfb25lID0gZnVuY3Rpb24gKGtleSwgdmFsdWUsIGN0eCkge1xuXHRcdGNvbnN0IGZuID0gbWFwW1N0cmluZygga2V5ICldO1xuXHRcdGlmICggISBmbiApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0dHJ5IHtcblx0XHRcdGZuKCB2YWx1ZSwgT2JqZWN0LmFzc2lnbiggeyBrZXksIHZhbHVlLCBjYW52YXM6IGdldF9jYW52YXNfcm9vdCgpIH0sIGN0eCB8fCB7fSApICk7XG5cdFx0fSBjYXRjaCAoIGUgKSB7XG5cdFx0XHQvLyBrZWVwIHNpbGVudCBpbiBwcm9kdWN0aW9uIGlmIHlvdSBwcmVmZXJcblx0XHRcdGNvbnNvbGUuZXJyb3IoICdXUEJDIEVmZmVjdHMgZXJyb3I6Jywga2V5LCBlICk7XG5cdFx0fVxuXHR9O1xuXG5cdEVmZmVjdHMuYXBwbHlfYWxsID0gZnVuY3Rpb24gKG9wdGlvbnMsIGN0eCkge1xuXHRcdGlmICggISBvcHRpb25zIHx8IHR5cGVvZiBvcHRpb25zICE9PSAnb2JqZWN0JyApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0T2JqZWN0LmtleXMoIG9wdGlvbnMgKS5mb3JFYWNoKCBmdW5jdGlvbiAoaykge1xuXHRcdFx0RWZmZWN0cy5hcHBseV9vbmUoIGssIG9wdGlvbnNba10sIE9iamVjdC5hc3NpZ24oIHsgb3B0aW9uczogb3B0aW9ucyB9LCBjdHggfHwge30gKSApO1xuXHRcdH0gKTtcblx0fTtcblxuXHQvKipcblx0ICogTm9ybWFsaXplIHNldHRpbmdzIHBhY2sgdG8gdGhlIG1pbmltdW0gcmVxdWlyZWQgc2hhcGU6XG5cdCAqIHsgb3B0aW9uczoge30sIGNzc192YXJzOiB7fSB9XG5cdCAqXG5cdCAqIEBwYXJhbSB7Kn0gcGFja1xuXHQgKiBAcmV0dXJuIHt7b3B0aW9uczpPYmplY3QsIGNzc192YXJzOk9iamVjdCwgYmZiX29wdGlvbnM/Ok9iamVjdH18bnVsbH1cblx0ICovXG5cdEVmZmVjdHMubm9ybWFsaXplX3BhY2sgPSBmdW5jdGlvbiAocGFjaykge1xuXG5cdFx0aWYgKCBwYWNrID09PSBudWxsIHx8IHR5cGVvZiBwYWNrID09PSAndW5kZWZpbmVkJyB8fCBwYWNrID09PSAnJyApIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblxuXHRcdC8vIFBhcnNlIEpTT04gc3RyaW5nIGlmIG5lZWRlZC5cblx0XHRpZiAoIHR5cGVvZiBwYWNrID09PSAnc3RyaW5nJyApIHtcblx0XHRcdHRyeSB7XG5cdFx0XHRcdHBhY2sgPSBKU09OLnBhcnNlKCBwYWNrICk7XG5cdFx0XHR9IGNhdGNoICggX2UgKSB7XG5cdFx0XHRcdHJldHVybiBudWxsO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmICggISBwYWNrIHx8IHR5cGVvZiBwYWNrICE9PSAnb2JqZWN0JyApIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblxuXHRcdC8vIElmIHVzZXIgcGFzc2VkIGp1c3Qge2tleTp2YWx1ZX0gb3B0aW9ucyBtYXAsIHdyYXAgaXQuXG5cdFx0Y29uc3QgaGFzX3NoYXBlID1cblx0XHRcdFx0ICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoIHBhY2ssICdvcHRpb25zJyApIHx8XG5cdFx0XHRcdCAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKCBwYWNrLCAnY3NzX3ZhcnMnICkgfHxcblx0XHRcdFx0ICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoIHBhY2ssICdiZmJfb3B0aW9ucycgKTtcblxuXHRcdGlmICggISBoYXNfc2hhcGUgKSB7XG5cdFx0XHRwYWNrID0geyBvcHRpb25zOiBwYWNrLCBjc3NfdmFyczoge30gfTtcblx0XHR9XG5cblx0XHRpZiAoICEgcGFjay5vcHRpb25zIHx8IHR5cGVvZiBwYWNrLm9wdGlvbnMgIT09ICdvYmplY3QnICkge1xuXHRcdFx0cGFjay5vcHRpb25zID0ge307XG5cdFx0fVxuXHRcdGlmICggISBwYWNrLmNzc192YXJzIHx8IHR5cGVvZiBwYWNrLmNzc192YXJzICE9PSAnb2JqZWN0JyApIHtcblx0XHRcdHBhY2suY3NzX3ZhcnMgPSB7fTtcblx0XHR9XG5cblx0XHQvLyBiZmJfb3B0aW9ucyBpcyBvcHRpb25hbDsga2VlcCBpZiB2YWxpZC5cblx0XHRpZiAoIHBhY2suYmZiX29wdGlvbnMgJiYgdHlwZW9mIHBhY2suYmZiX29wdGlvbnMgIT09ICdvYmplY3QnICkge1xuXHRcdFx0ZGVsZXRlIHBhY2suYmZiX29wdGlvbnM7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHBhY2s7XG5cdH07XG5cblx0LyoqXG5cdCAqIFJlLWFwcGx5IHNldHRpbmdzIGVmZmVjdHMgYWZ0ZXIgYSBjYW52YXMgcmVidWlsZCAvIHN0cnVjdHVyZSBsb2FkLlxuXHQgKlxuXHQgKiBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIHN0cnVjdHVyZSBsb2FkaW5nIGNhbiByZXBsYWNlIERPTSBub2RlcyB0aGF0IGVmZmVjdHMgdGFyZ2V0LlxuXHQgKlxuXHQgKiBAcGFyYW0geyp9IHNldHRpbmdzX3BhY2sgIHN0cmluZ3xvYmplY3Qgc2V0dGluZ3NfanNvbiBwYWNrIChvciBwbGFpbiBvcHRpb25zIG1hcClcblx0ICogQHBhcmFtIHtPYmplY3R9IFtjdHhdXG5cdCAqL1xuXHRFZmZlY3RzLnJlYXBwbHlfYWZ0ZXJfY2FudmFzID0gZnVuY3Rpb24gKHNldHRpbmdzX3BhY2ssIGN0eCkge1xuXG5cdFx0Y29uc3QgcGFjayA9IEVmZmVjdHMubm9ybWFsaXplX3BhY2soIHNldHRpbmdzX3BhY2sgKTtcblx0XHRpZiAoICEgcGFjayApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHQvLyBBcHBseSBpbW1lZGlhdGVseSAoYmVzdCBlZmZvcnQpLlxuXHRcdEVmZmVjdHMuYXBwbHlfYWxsKCBwYWNrLm9wdGlvbnMsIE9iamVjdC5hc3NpZ24oIHsgc291cmNlOiAncmVhcHBseV9hZnRlcl9jYW52YXMnIH0sIGN0eCB8fCB7fSApICk7XG5cdFx0d3BiY19iZmJfZ2xvYmFsX2Zvcm1fc3R5bGVfX2FwcGx5KCBudWxsLCBPYmplY3QuYXNzaWduKCB7IHNvdXJjZTogJ3JlYXBwbHlfYWZ0ZXJfY2FudmFzJyB9LCBjdHggfHwge30gKSApO1xuXG5cdFx0Ly8gU29tZSBtb2R1bGVzL2h5ZHJhdGlvbiBtYXkgcnVuIHNob3J0bHkgYWZ0ZXI7IGRvIG9uZSBtb3JlIHBhc3MuXG5cdFx0c2V0VGltZW91dCggZnVuY3Rpb24gKCkge1xuXHRcdFx0RWZmZWN0cy5hcHBseV9hbGwoIHBhY2sub3B0aW9ucywgT2JqZWN0LmFzc2lnbiggeyBzb3VyY2U6ICdyZWFwcGx5X2FmdGVyX2NhbnZhc19kZWxheWVkJyB9LCBjdHggfHwge30gKSApO1xuXHRcdFx0d3BiY19iZmJfZ2xvYmFsX2Zvcm1fc3R5bGVfX2FwcGx5KCBudWxsLCBPYmplY3QuYXNzaWduKCB7IHNvdXJjZTogJ3JlYXBwbHlfYWZ0ZXJfY2FudmFzX2RlbGF5ZWQnIH0sIGN0eCB8fCB7fSApICk7XG5cdFx0fSwgNjAgKTtcblx0fTtcblxuXHQvLyAxKSBBcHBseSBmcm9tIEFKQVggbG9hZC5cblx0ZC5hZGRFdmVudExpc3RlbmVyKCAnd3BiYzpiZmI6Zm9ybV9zZXR0aW5nczphcHBseScsIGZ1bmN0aW9uIChlKSB7XG5cdFx0Y29uc3QgcGFjayA9IGUgJiYgZS5kZXRhaWwgPyBlLmRldGFpbC5zZXR0aW5ncyA6IG51bGw7XG5cdFx0aWYgKCBwYWNrICYmIHBhY2sub3B0aW9ucyApIHtcblx0XHRcdEVmZmVjdHMuYXBwbHlfYWxsKCBwYWNrLm9wdGlvbnMsIHsgc291cmNlOiAnYXBwbHknIH0gKTtcblx0XHR9XG5cdFx0d3BiY19iZmJfZ2xvYmFsX2Zvcm1fc3R5bGVfX2FwcGx5KCBudWxsLCB7IHNvdXJjZTogJ2FwcGx5LWdsb2JhbC1zdHlsZScgfSApO1xuXHR9ICk7XG5cblx0Ly8gMikgQXBwbHkgbGl2ZSBmcm9tIFVJIGNoYW5nZSAoZGVsZWdhdGVkKS5cblx0ZnVuY3Rpb24gY3NzX2VzY2FwZSh2YWx1ZSkge1xuXHRcdGNvbnN0IHYgPSBTdHJpbmcoIHZhbHVlID09IG51bGwgPyAnJyA6IHZhbHVlICk7XG5cdFx0aWYgKCB3LkNTUyAmJiB0eXBlb2Ygdy5DU1MuZXNjYXBlID09PSAnZnVuY3Rpb24nICkge1xuXHRcdFx0cmV0dXJuIHcuQ1NTLmVzY2FwZSggdiApO1xuXHRcdH1cblx0XHRyZXR1cm4gdi5yZXBsYWNlKCAvW15hLXpBLVowLTlfXFwtXS9nLCAnXFxcXCQmJyApO1xuXHR9XG5cblx0ZnVuY3Rpb24gZmluZF9mc19yb290KGVsKSB7XG5cdFx0aWYgKCAhIGVsIHx8ICEgZWwuY2xvc2VzdCApIHtcblx0XHRcdHJldHVybiBudWxsO1xuXHRcdH1cblxuXHRcdC8vIDEpIERpcmVjdDogZWxlbWVudCBvciBhbmNlc3RvciBjYXJyaWVzIEZTIGtleSAoaW5wdXQvc2VsZWN0L3RleHRhcmVhIHdyaXRlciwgcmFkaW8gd3JhcHBlciwgZXRjLilcblx0XHRjb25zdCBkaXJlY3QgPSBlbC5jbG9zZXN0KCAnW2RhdGEtd3BiYy1iZmItZnMta2V5XScgKTtcblx0XHRpZiAoIGRpcmVjdCApIHtcblx0XHRcdHJldHVybiBkaXJlY3Q7XG5cdFx0fVxuXG5cdFx0Ly8gMikgTGVuZ3RoOiBldmVudCBjYW1lIGZyb20gbnVtYmVyL3VuaXQvcmFuZ2UgaW5zaWRlIC53cGJjX3NsaWRlcl9sZW5fZ3JvdXBcblx0XHRjb25zdCBsZW5fZ3JvdXAgPSBlbC5jbG9zZXN0KCAnLndwYmNfc2xpZGVyX2xlbl9ncm91cCcgKTtcblx0XHRpZiAoIGxlbl9ncm91cCApIHtcblx0XHRcdHJldHVybiAoXG5cdFx0XHRcdGxlbl9ncm91cC5xdWVyeVNlbGVjdG9yKCAnaW5wdXRbZGF0YS13cGJjX3NsaWRlcl9sZW5fd3JpdGVyXVtkYXRhLXdwYmMtYmZiLWZzLWtleV0nICkgfHxcblx0XHRcdFx0bGVuX2dyb3VwLnF1ZXJ5U2VsZWN0b3IoICdpbnB1dFtkYXRhLXdwYmMtYmZiLWZzLXR5cGU9XCJsZW5ndGhcIl1bZGF0YS13cGJjLWJmYi1mcy1rZXldJyApIHx8XG5cdFx0XHRcdG51bGxcblx0XHRcdCk7XG5cdFx0fVxuXG5cdFx0Ly8gMykgU3BhY2luZzogZXZlbnQgY2FtZSBmcm9tIHZlcnRpY2FsL2hvcml6b250YWwgbnVtYmVyIGluc2lkZSAud3BiY19zcGFjaW5nX2dyb3VwLlxuXHRcdGNvbnN0IHNwYWNpbmdfZ3JvdXAgPSBlbC5jbG9zZXN0KCAnLndwYmNfc3BhY2luZ19ncm91cCcgKTtcblx0XHRpZiAoIHNwYWNpbmdfZ3JvdXAgKSB7XG5cdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRzcGFjaW5nX2dyb3VwLnF1ZXJ5U2VsZWN0b3IoICdpbnB1dFtkYXRhLXdwYmNfc3BhY2luZ193cml0ZXJdW2RhdGEtd3BiYy1iZmItZnMta2V5XScgKSB8fFxuXHRcdFx0XHRzcGFjaW5nX2dyb3VwLnF1ZXJ5U2VsZWN0b3IoICdpbnB1dFtkYXRhLXdwYmMtYmZiLWZzLXR5cGU9XCJzcGFjaW5nXCJdW2RhdGEtd3BiYy1iZmItZnMta2V5XScgKSB8fFxuXHRcdFx0XHRudWxsXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdC8vIDQpIFJhbmdlOiBldmVudCBjYW1lIGZyb20gcmFuZ2UgaW5wdXQgaW5zaWRlIC53cGJjX3NsaWRlcl9yYW5nZV9ncm91cFxuXHRcdGNvbnN0IHJhbmdlX2dyb3VwID0gZWwuY2xvc2VzdCggJy53cGJjX3NsaWRlcl9yYW5nZV9ncm91cCcgKTtcblx0XHRpZiAoIHJhbmdlX2dyb3VwICkge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0cmFuZ2VfZ3JvdXAucXVlcnlTZWxlY3RvciggJ2lucHV0W2RhdGEtd3BiY19zbGlkZXJfcmFuZ2Vfd3JpdGVyXVtkYXRhLXdwYmMtYmZiLWZzLWtleV0nICkgfHxcblx0XHRcdFx0cmFuZ2VfZ3JvdXAucXVlcnlTZWxlY3RvciggJ2lucHV0W2RhdGEtd3BiY19zbGlkZXJfcmFuZ2Vfd3JpdGVyXScgKSB8fFxuXHRcdFx0XHRudWxsXG5cdFx0XHQpO1xuXHRcdH1cblxuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0ZnVuY3Rpb24gcmVhZF92YWx1ZV9mcm9tX2ZzX3Jvb3QoZnNfcm9vdCwgb3JpZ2luYWxfdGFyZ2V0KSB7XG5cdFx0aWYgKCAhIGZzX3Jvb3QgKSB7XG5cdFx0XHRyZXR1cm4gJyc7XG5cdFx0fVxuXG5cdFx0Y29uc3QgZnNfdHlwZSA9IFN0cmluZyggZnNfcm9vdC5nZXRBdHRyaWJ1dGUoICdkYXRhLXdwYmMtYmZiLWZzLXR5cGUnICkgfHwgJycgKTtcblxuXHRcdC8vIFJBRElPOiByZWFkIGNoZWNrZWQgd2l0aGluIHdyYXBwZXIuXG5cdFx0aWYgKCBmc190eXBlID09PSAncmFkaW8nICkge1xuXHRcdFx0Y29uc3QgY29udHJvbF9pZCA9IGZzX3Jvb3QuZ2V0QXR0cmlidXRlKCAnZGF0YS13cGJjLWJmYi1mcy1jb250cm9saWQnICkgfHwgJyc7XG5cdFx0XHRjb25zdCBzZWxlY3RvciAgID0gY29udHJvbF9pZFxuXHRcdFx0XHQ/ICdpbnB1dFt0eXBlPVwicmFkaW9cIl1bbmFtZT1cIicgKyBjc3NfZXNjYXBlKCBjb250cm9sX2lkICkgKyAnXCJdOmNoZWNrZWQnXG5cdFx0XHRcdDogJ2lucHV0W3R5cGU9XCJyYWRpb1wiXTpjaGVja2VkJztcblxuXHRcdFx0Y29uc3QgY2hlY2tlZCA9IGZzX3Jvb3QucXVlcnlTZWxlY3Rvciggc2VsZWN0b3IgKTtcblx0XHRcdHJldHVybiBjaGVja2VkID8gU3RyaW5nKCBjaGVja2VkLnZhbHVlIHx8ICcnICkgOiAnJztcblx0XHR9XG5cblx0XHRpZiAoIGZzX3R5cGUgPT09ICdzcGFjaW5nJyApIHtcblx0XHRcdGNvbnN0IGdyb3VwID0gKCBvcmlnaW5hbF90YXJnZXQgJiYgb3JpZ2luYWxfdGFyZ2V0LmNsb3Nlc3QgKSA/IG9yaWdpbmFsX3RhcmdldC5jbG9zZXN0KCAnLndwYmNfc3BhY2luZ19ncm91cCcgKSA6IGZzX3Jvb3QuY2xvc2VzdCggJy53cGJjX3NwYWNpbmdfZ3JvdXAnICk7XG5cdFx0XHRjb25zdCB2ZXJ0aWNhbF9pbnB1dCA9IGdyb3VwID8gZ3JvdXAucXVlcnlTZWxlY3RvciggJ2lucHV0W2RhdGEtd3BiY19zcGFjaW5nX3ZlcnRpY2FsXScgKSA6IG51bGw7XG5cdFx0XHRjb25zdCBob3Jpem9udGFsX2lucHV0ID0gZ3JvdXAgPyBncm91cC5xdWVyeVNlbGVjdG9yKCAnaW5wdXRbZGF0YS13cGJjX3NwYWNpbmdfaG9yaXpvbnRhbF0nICkgOiBudWxsO1xuXHRcdFx0Y29uc3Qgd3JpdGVyID0gZ3JvdXAgPyBncm91cC5xdWVyeVNlbGVjdG9yKCAnaW5wdXRbZGF0YS13cGJjX3NwYWNpbmdfd3JpdGVyXScgKSA6IG51bGw7XG5cdFx0XHRjb25zdCB2ZXJ0aWNhbCA9IHZlcnRpY2FsX2lucHV0ID8gU3RyaW5nKCB2ZXJ0aWNhbF9pbnB1dC52YWx1ZSB8fCAnMCcgKSA6ICcwJztcblx0XHRcdGNvbnN0IGhvcml6b250YWwgPSBob3Jpem9udGFsX2lucHV0ID8gU3RyaW5nKCBob3Jpem9udGFsX2lucHV0LnZhbHVlIHx8IHZlcnRpY2FsICkgOiB2ZXJ0aWNhbDtcblx0XHRcdGNvbnN0IGNvbWJpbmVkID0gd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19ub3JtYWxpemVfc3BhY2luZ19udW1iZXJzKCB2ZXJ0aWNhbCwgaG9yaXpvbnRhbCApO1xuXG5cdFx0XHRpZiAoIHdyaXRlciApIHtcblx0XHRcdFx0d3JpdGVyLnZhbHVlID0gY29tYmluZWQ7XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBjb21iaW5lZDtcblx0XHR9XG5cblx0XHQvLyBDSEVDS0JPWCAvIFRPR0dMRVxuXHRcdGlmICggKG9yaWdpbmFsX3RhcmdldCAmJiBvcmlnaW5hbF90YXJnZXQudHlwZSA9PT0gJ2NoZWNrYm94JykgfHwgZnNfcm9vdC50eXBlID09PSAnY2hlY2tib3gnICkge1xuXHRcdFx0Y29uc3QgY2IgPSAob3JpZ2luYWxfdGFyZ2V0ICYmIG9yaWdpbmFsX3RhcmdldC50eXBlID09PSAnY2hlY2tib3gnKSA/IG9yaWdpbmFsX3RhcmdldCA6IGZzX3Jvb3Q7XG5cdFx0XHRyZXR1cm4gY2IuY2hlY2tlZCA/ICdPbicgOiAnT2ZmJztcblx0XHR9XG5cblx0XHQvLyBERUZBVUxUOiB3cml0ZXIvaW5wdXQvdGV4dGFyZWEvc2VsZWN0XG5cdFx0aWYgKCBmc19yb290LnZhbHVlICE9IG51bGwgKSB7XG5cdFx0XHRyZXR1cm4gU3RyaW5nKCBmc19yb290LnZhbHVlICk7XG5cdFx0fVxuXHRcdGlmICggb3JpZ2luYWxfdGFyZ2V0ICYmIG9yaWdpbmFsX3RhcmdldC52YWx1ZSAhPSBudWxsICkge1xuXHRcdFx0cmV0dXJuIFN0cmluZyggb3JpZ2luYWxfdGFyZ2V0LnZhbHVlICk7XG5cdFx0fVxuXG5cdFx0cmV0dXJuICcnO1xuXHR9XG5cblx0ZnVuY3Rpb24gYXBwbHlfY2hhbmdlX2Zyb21fdGFyZ2V0KHRhcmdldCwgZXZlbnRfdHlwZSwgZXZlbnRfc291cmNlKSB7XG5cdFx0aWYgKCAhIHRhcmdldCApIHsgcmV0dXJuOyB9XG5cblx0XHRjb25zdCBmc19yb290ID0gZmluZF9mc19yb290KCB0YXJnZXQgKTtcblx0XHRpZiAoICEgZnNfcm9vdCApIHsgcmV0dXJuOyB9XG5cblxuXHRcdC8vIE5vcm1hbGl6ZSBldmVudHMgc28gZWFjaCBjb250cm9sIHByb2R1Y2VzIGV4YWN0bHkgb25lIGVmZmVjdCBjYWxsLlxuXHRcdC8vIC0gdG9nZ2xlL3NlbGVjdC9yYWRpby9jaGVja2JveCA9PiBcImNoYW5nZVwiIG9ubHkuXG5cdFx0Ly8gLSBldmVyeXRoaW5nIGVsc2UgICAgICAgICAgICAgID0+IFwiaW5wdXRcIiBvbmx5LlxuXHRcdGNvbnN0IGZzX3R5cGUgPSBTdHJpbmcoIGZzX3Jvb3QuZ2V0QXR0cmlidXRlKCAnZGF0YS13cGJjLWJmYi1mcy10eXBlJyApIHx8ICcnICk7XG5cdFx0Y29uc3QgdGFnICAgICA9IFN0cmluZyggdGFyZ2V0LnRhZ05hbWUgfHwgJycgKS50b0xvd2VyQ2FzZSgpO1xuXHRcdGNvbnN0IHR5cGUgICAgPSBTdHJpbmcoIHRhcmdldC50eXBlIHx8ICcnICkudG9Mb3dlckNhc2UoKTtcblxuXHRcdGNvbnN0IHVzZV9jaGFuZ2UgPSAoZnNfdHlwZSA9PT0gJ3RvZ2dsZScpIHx8IChmc190eXBlID09PSAnc2VsZWN0JykgfHwgKGZzX3R5cGUgPT09ICdyYWRpbycpIHx8ICh0eXBlID09PSAnY2hlY2tib3gnKSB8fCAodHlwZSA9PT0gJ3JhZGlvJykgfHwgKHRhZyA9PT0gJ3NlbGVjdCcpO1xuXG5cdFx0aWYgKCB1c2VfY2hhbmdlICYmIGV2ZW50X3R5cGUgIT09ICdjaGFuZ2UnICkgeyByZXR1cm47IH1cblx0XHRpZiAoICEgdXNlX2NoYW5nZSAmJiBldmVudF90eXBlICE9PSAnaW5wdXQnICkgeyByZXR1cm47IH1cblx0XHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblx0XHRjb25zdCBrZXkgPSBmc19yb290LmdldEF0dHJpYnV0ZSggJ2RhdGEtd3BiYy1iZmItZnMta2V5JyApO1xuXHRcdGlmICggISBrZXkgKSB7IHJldHVybjsgfVxuXG5cdFx0Y29uc3Qgc2NvcGUgPSBmc19yb290LmdldEF0dHJpYnV0ZSggJ2RhdGEtd3BiYy1iZmItZnMtc2NvcGUnICkgfHwgJyc7XG5cdFx0Y29uc3QgdmFsdWUgPSByZWFkX3ZhbHVlX2Zyb21fZnNfcm9vdCggZnNfcm9vdCwgdGFyZ2V0ICk7XG5cblx0XHRFZmZlY3RzLmFwcGx5X29uZSgga2V5LCB2YWx1ZSwgeyBzb3VyY2U6IGV2ZW50X3NvdXJjZSB8fCAndWknLCBzY29wZTogc2NvcGUsIGNvbnRyb2w6IHRhcmdldCwgZnNfcm9vdDogZnNfcm9vdCB9ICk7XG5cdH1cblxuXHRmdW5jdGlvbiBpc19jb2xvcmlzX2NvbnRyb2wodGFyZ2V0KSB7XG5cdFx0aWYgKCAhIHRhcmdldCB8fCAhIHRhcmdldC5tYXRjaGVzICkge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdHJldHVybiB0YXJnZXQubWF0Y2hlcyggJ1tkYXRhLXdwYmMtYmZiLWZzLXR5cGU9XCJjb2xvclwiXSwgW2RhdGEtaW5zcGVjdG9yLXR5cGU9XCJjb2xvclwiXSwgLndwYmNfYmZiX2NvbG9yaXMnICk7XG5cdH1cblxuXHRmdW5jdGlvbiBvbl9jaGFuZ2UoZXYpIHtcblx0XHQvLyBJZ25vcmUgZ2VuZXJpYyBzeW50aGV0aWMgZXZlbnRzIGRpc3BhdGNoZWQgYnkgY29kZSAoYXBwbHkvcmVhcHBseSwgc2xpZGVyIHN5bmMsIGV0Yy4pLlxuXHRcdC8vIENvbG9yaXMgZGlzcGF0Y2hlcyBzeW50aGV0aWMgaW5wdXQgZXZlbnRzIHdoaWxlIHRoZSB1c2VyIHBpY2tzIGEgY29sb3IsIHNvIGFsbG93IHRob3NlIGNvbG9yIGNvbnRyb2xzIHRocm91Z2guXG5cdFx0aWYgKCBldiAmJiBldi5pc1RydXN0ZWQgPT09IGZhbHNlICYmICEgaXNfY29sb3Jpc19jb250cm9sKCBldi50YXJnZXQgKSApIHsgcmV0dXJuOyB9XG5cdFx0YXBwbHlfY2hhbmdlX2Zyb21fdGFyZ2V0KCBldiAmJiBldi50YXJnZXQsIGV2ICYmIGV2LnR5cGUsICggZXYgJiYgZXYuaXNUcnVzdGVkID09PSBmYWxzZSApID8gJ2NvbG9yaXMnIDogJ3VpJyApO1xuXHR9XG5cblx0ZC5hZGRFdmVudExpc3RlbmVyKCAnaW5wdXQnLCBvbl9jaGFuZ2UsIGZhbHNlICk7XG5cdGQuYWRkRXZlbnRMaXN0ZW5lciggJ2NoYW5nZScsIG9uX2NoYW5nZSwgZmFsc2UgKTtcblx0ZnVuY3Rpb24gb25fY29sb3Jpc19waWNrKGV2KSB7XG5cdFx0Y29uc3QgZGV0YWlsID0gZXYgJiYgZXYuZGV0YWlsID8gZXYuZGV0YWlsIDoge307XG5cdFx0Y29uc3QgdGFyZ2V0ID0gZGV0YWlsLmN1cnJlbnRFbCB8fCBkZXRhaWwuZWwgfHwgZGV0YWlsLmlucHV0IHx8IGV2LnRhcmdldCB8fCBudWxsO1xuXG5cdFx0aWYgKCAhIGlzX2NvbG9yaXNfY29udHJvbCggdGFyZ2V0ICkgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKCBkZXRhaWwuY29sb3IgJiYgdGFyZ2V0LnZhbHVlICE9PSBkZXRhaWwuY29sb3IgKSB7XG5cdFx0XHR0YXJnZXQudmFsdWUgPSBkZXRhaWwuY29sb3I7XG5cdFx0fVxuXG5cdFx0YXBwbHlfY2hhbmdlX2Zyb21fdGFyZ2V0KCB0YXJnZXQsICdpbnB1dCcsICdjb2xvcmlzJyApO1xuXHR9XG5cdGQuYWRkRXZlbnRMaXN0ZW5lciggJ2NvbG9yaXM6cGljaycsIG9uX2NvbG9yaXNfcGljaywgZmFsc2UgKTtcblx0ZC5hZGRFdmVudExpc3RlbmVyKCAnd3BiYzpiZmI6Y29sb3JpczpjaGFuZ2UnLCBvbl9jb2xvcmlzX3BpY2ssIGZhbHNlICk7XG5cbn0pKCB3aW5kb3csIGRvY3VtZW50ICk7XG5cbmZ1bmN0aW9uIHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fZ2V0X3ByZXNldHMoKSB7XG5cdHJldHVybiB7XG5cdFx0Ym9yZGVyZWQ6IHtcblx0XHRcdGJhY2tncm91bmQgOiAnI2ZmZmZmZicsXG5cdFx0XHRib3JkZXJDb2xvcjogJyNjY2NjY2MnLFxuXHRcdFx0Ym9yZGVyV2lkdGg6ICcxcHgnLFxuXHRcdFx0cmFkaXVzICAgICA6ICcycHgnLFxuXHRcdFx0cGFkZGluZyAgICA6ICcxMHB4IDMwcHgnLFxuXHRcdFx0c2hhZG93ICAgICA6ICdyZ2JhKDAsIDAsIDAsIDAuMDUpIDBweCAycHggNnB4IDBweCdcblx0XHR9LFxuXHRcdG5vbmUgICAgOiB7XG5cdFx0XHRiYWNrZ3JvdW5kIDogJ3RyYW5zcGFyZW50Jyxcblx0XHRcdGJvcmRlckNvbG9yOiAndHJhbnNwYXJlbnQnLFxuXHRcdFx0Ym9yZGVyV2lkdGg6ICcwcHgnLFxuXHRcdFx0cmFkaXVzICAgICA6ICcwcHgnLFxuXHRcdFx0cGFkZGluZyAgICA6ICcwcHgnLFxuXHRcdFx0c2hhZG93ICAgICA6ICdub25lJ1xuXHRcdH0sXG5cdFx0c29mdCAgICA6IHtcblx0XHRcdGJhY2tncm91bmQgOiAnI2Y5ZjlmYScsXG5cdFx0XHRib3JkZXJDb2xvcjogJyNmZmYnLFxuXHRcdFx0Ym9yZGVyV2lkdGg6ICczcHgnLFxuXHRcdFx0cmFkaXVzICAgICA6ICc4cHgnLFxuXHRcdFx0cGFkZGluZyAgICA6ICcyMHB4Jyxcblx0XHRcdHNoYWRvdyAgICAgOiAncmdiYSgxNSwgMjMsIDQyLCAwLjA2KSAwcHggNHB4IDE2cHggMHB4J1xuXHRcdH1cblx0fTtcbn1cblxuZnVuY3Rpb24gd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19pc19kYXJrX3RoZW1lKG9wdGlvbnMpIHtcblx0b3B0aW9ucyA9IG9wdGlvbnMgJiYgdHlwZW9mIG9wdGlvbnMgPT09ICdvYmplY3QnID8gb3B0aW9ucyA6IHt9O1xuXHRyZXR1cm4gJ3dwYmNfdGhlbWVfZGFya18xJyA9PT0gU3RyaW5nKCBvcHRpb25zLmJvb2tpbmdfZm9ybV90aGVtZSB8fCAnJyApO1xufVxuXG5mdW5jdGlvbiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX2dldF9wcmVzZXRfZm9yX29wdGlvbnMoc3R5bGUsIG9wdGlvbnMpIHtcblx0Y29uc3QgcHJlc2V0cyA9IHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fZ2V0X3ByZXNldHMoKTtcblxuXHRpZiAoICEgd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19pc19kYXJrX3RoZW1lKCBvcHRpb25zICkgKSB7XG5cdFx0cmV0dXJuIHByZXNldHNbc3R5bGVdIHx8IHByZXNldHMuYm9yZGVyZWQ7XG5cdH1cblxuXHRpZiAoICdzb2Z0JyA9PT0gc3R5bGUgKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGJhY2tncm91bmQgOiAnIzFmMjkzNycsXG5cdFx0XHRib3JkZXJDb2xvcjogJyMzMzQxNTUnLFxuXHRcdFx0Ym9yZGVyV2lkdGg6ICczcHgnLFxuXHRcdFx0cmFkaXVzICAgICA6ICc4cHgnLFxuXHRcdFx0cGFkZGluZyAgICA6ICcyMHB4Jyxcblx0XHRcdHNoYWRvdyAgICAgOiAncmdiYSgwLCAwLCAwLCAwLjI0KSAwcHggNHB4IDE2cHggMHB4J1xuXHRcdH07XG5cdH1cblxuXHRyZXR1cm4gcHJlc2V0c1tzdHlsZV0gfHwgcHJlc2V0cy5ib3JkZXJlZDtcbn1cblxuZnVuY3Rpb24gd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zYW5pdGl6ZV9jb2xvcih2YWx1ZSwgZmFsbGJhY2spIHtcblx0Y29uc3QgdiA9IFN0cmluZyggdmFsdWUgPT0gbnVsbCA/ICcnIDogdmFsdWUgKS50cmltKCk7XG5cdGlmICggL14jKD86WzAtOWEtZl17M318WzAtOWEtZl17Nn0pJC9pLnRlc3QoIHYgKSApIHtcblx0XHRyZXR1cm4gdjtcblx0fVxuXHRpZiAoIHYgPT09ICd0cmFuc3BhcmVudCcgKSB7XG5cdFx0cmV0dXJuIHY7XG5cdH1cblx0cmV0dXJuIGZhbGxiYWNrO1xufVxuXG5mdW5jdGlvbiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Nhbml0aXplX29wdGlvbmFsX2NvbG9yKHZhbHVlKSB7XG5cdHJldHVybiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Nhbml0aXplX2NvbG9yKCB2YWx1ZSwgJycgKTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlIGFuIG9wYXF1ZSBhY2NlbnQgY29sb3Igd2l0aCB0aGUgUEhQLWxvY2FsaXplZCBpbnN0YWxsYXRpb24gZGVmYXVsdC5cbiAqXG4gKiBUaGUgRm9ybSBTdHlsZSBlZmZlY3RzIGxpdmUgb3V0c2lkZSB0aGUgcmVnaXN0cmF0aW9uIElJRkUsIHNvIHRoZSBkZWZhdWx0IGlzXG4gKiBkZWxpYmVyYXRlbHkgcmVhZCBmcm9tIHRoZSBzaGFyZWQgbG9jYWxpemVkIHBheWxvYWQgYXQgdGhlIHBvaW50IG9mIHVzZS5cbiAqIEludmFsaWQgcmVxdWVzdGVkIGFuZCBsb2NhbGl6ZWQgdmFsdWVzIHJldHVybiBhbiBlbXB0eSBzdHJpbmcsIGFsbG93aW5nIHRoZVxuICogY2FsbGVyIHRvIHNraXAgdGhlIGFjY2VudCBvdmVybGF5IHdpdGhvdXQgdGhyb3dpbmcgb3IgcHJvZHVjaW5nIGludmFsaWQgQ1NTLlxuICpcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgUmVxdWVzdGVkIGFjY2VudCBjb2xvci5cbiAqIEByZXR1cm4ge3N0cmluZ30gVmFsaWQgdGhyZWUtIG9yIHNpeC1kaWdpdCBoZXhhZGVjaW1hbCBjb2xvciwgb3IgYW4gZW1wdHkgc3RyaW5nLlxuICovXG5mdW5jdGlvbiB3cGJjX2JmYl9nbG9iYWxfZm9ybV9zdHlsZV9fc2FuaXRpemVfYWNjZW50X2NvbG9yKHZhbHVlKSB7XG5cdGNvbnN0IHJlcXVlc3RlZF9jb2xvciA9IFN0cmluZyggdmFsdWUgPT0gbnVsbCA/ICcnIDogdmFsdWUgKS50cmltKCk7XG5cdGlmICggL14jKD86WzAtOWEtZl17M318WzAtOWEtZl17Nn0pJC9pLnRlc3QoIHJlcXVlc3RlZF9jb2xvciApICkge1xuXHRcdHJldHVybiByZXF1ZXN0ZWRfY29sb3I7XG5cdH1cblxuXHRjb25zdCBzZXR0aW5nc192YXJzID0gd2luZG93LndwYmNfYmZiX3NldHRpbmdzX3ZhcnMgJiYgdHlwZW9mIHdpbmRvdy53cGJjX2JmYl9zZXR0aW5nc192YXJzID09PSAnb2JqZWN0J1xuXHRcdD8gd2luZG93LndwYmNfYmZiX3NldHRpbmdzX3ZhcnNcblx0XHQ6IHt9O1xuXHRjb25zdCBhY2NlbnRfZGVmYXVsdHMgPSBzZXR0aW5nc192YXJzLmZvcm1fYWNjZW50X2RlZmF1bHRzICYmIHR5cGVvZiBzZXR0aW5nc192YXJzLmZvcm1fYWNjZW50X2RlZmF1bHRzID09PSAnb2JqZWN0J1xuXHRcdD8gc2V0dGluZ3NfdmFycy5mb3JtX2FjY2VudF9kZWZhdWx0c1xuXHRcdDoge307XG5cdGNvbnN0IGRlZmF1bHRfY29sb3IgPSBTdHJpbmcoIGFjY2VudF9kZWZhdWx0cy5ib29raW5nX2Zvcm1fYWNjZW50X2NvbG9yIHx8ICcnICkudHJpbSgpO1xuXG5cdHJldHVybiAvXiMoPzpbMC05YS1mXXszfXxbMC05YS1mXXs2fSkkL2kudGVzdCggZGVmYXVsdF9jb2xvciApID8gZGVmYXVsdF9jb2xvciA6ICcnO1xufVxuXG5mdW5jdGlvbiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Nhbml0aXplX2xlbmd0aCh2YWx1ZSwgZmFsbGJhY2spIHtcblx0Y29uc3QgdiA9IFN0cmluZyggdmFsdWUgPT0gbnVsbCA/ICcnIDogdmFsdWUgKS50cmltKCk7XG5cdGlmICggL15cXGQrKD86XFwuXFxkKyk/KD86cHh8cmVtfGVtfCUpJC9pLnRlc3QoIHYgKSApIHtcblx0XHRyZXR1cm4gdjtcblx0fVxuXHRyZXR1cm4gZmFsbGJhY2s7XG59XG5cbmZ1bmN0aW9uIHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2FuaXRpemVfc3BhY2luZyh2YWx1ZSwgZmFsbGJhY2spIHtcblx0Y29uc3QgdiA9IFN0cmluZyggdmFsdWUgPT0gbnVsbCA/ICcnIDogdmFsdWUgKS50cmltKCkucmVwbGFjZSggL1xccysvZywgJyAnICk7XG5cdGNvbnN0IHBhcnRzID0gdiA/IHYuc3BsaXQoICcgJyApIDogW107XG5cdGlmICggcGFydHMubGVuZ3RoIDwgMSB8fCBwYXJ0cy5sZW5ndGggPiA0ICkge1xuXHRcdHJldHVybiBmYWxsYmFjaztcblx0fVxuXHRmb3IgKCBsZXQgaSA9IDA7IGkgPCBwYXJ0cy5sZW5ndGg7IGkrKyApIHtcblx0XHRpZiAoICEgL15cXGQrKD86XFwuXFxkKyk/KD86cHh8cmVtfGVtfCUpJC9pLnRlc3QoIHBhcnRzW2ldICkgKSB7XG5cdFx0XHRyZXR1cm4gZmFsbGJhY2s7XG5cdFx0fVxuXHR9XG5cdHJldHVybiBwYXJ0cy5qb2luKCAnICcgKTtcbn1cblxuZnVuY3Rpb24gd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19ub3JtYWxpemVfc3BhY2luZ19udW1iZXJzKHZlcnRpY2FsLCBob3Jpem9udGFsKSB7XG5cdGNvbnN0IHYgPSBTdHJpbmcoIHZlcnRpY2FsID09IG51bGwgPyAnJyA6IHZlcnRpY2FsICkudHJpbSgpO1xuXHRjb25zdCBoID0gU3RyaW5nKCBob3Jpem9udGFsID09IG51bGwgPyAnJyA6IGhvcml6b250YWwgKS50cmltKCk7XG5cdGNvbnN0IHZlcnRpY2FsX251bSA9IC9eXFxkKyg/OlxcLlxcZCspPyQvLnRlc3QoIHYgKSA/IHYgOiAnMCc7XG5cdGNvbnN0IGhvcml6b250YWxfbnVtID0gL15cXGQrKD86XFwuXFxkKyk/JC8udGVzdCggaCApID8gaCA6IHZlcnRpY2FsX251bTtcblxuXHRyZXR1cm4gdmVydGljYWxfbnVtICsgJ3B4ICcgKyBob3Jpem9udGFsX251bSArICdweCc7XG59XG5cbmZ1bmN0aW9uIHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fY29sbGVjdF9vcHRpb25zKGN0eCwga2V5LCB2YWx1ZSkge1xuXHRsZXQgb3B0aW9ucyA9IChjdHggJiYgY3R4Lm9wdGlvbnMgJiYgdHlwZW9mIGN0eC5vcHRpb25zID09PSAnb2JqZWN0JykgPyBPYmplY3QuYXNzaWduKCB7fSwgY3R4Lm9wdGlvbnMgKSA6IHt9O1xuXG5cdGlmICggd2luZG93LldQQkNfQkZCX0Zvcm1TZXR0aW5ncyAmJiB0eXBlb2Ygd2luZG93LldQQkNfQkZCX0Zvcm1TZXR0aW5ncy5jb2xsZWN0ID09PSAnZnVuY3Rpb24nICkge1xuXHRcdG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKCB3aW5kb3cuV1BCQ19CRkJfRm9ybVNldHRpbmdzLmNvbGxlY3QoICdmb3JtJyApIHx8IHt9LCBvcHRpb25zICk7XG5cdH1cblxuXHRpZiAoIGtleSApIHtcblx0XHRvcHRpb25zW1N0cmluZygga2V5ICldID0gdmFsdWU7XG5cdH1cblxuXHRpZiAoIHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9faXNfY3VzdG9tX2NvbnRyb2xfa2V5KCBrZXkgKSApIHtcblx0XHRvcHRpb25zLmJvb2tpbmdfZm9ybV9jb250YWluZXJfc3R5bGUgPSAnY3VzdG9tJztcblx0XHR3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3NldF9jb250YWluZXJfc3R5bGVfY29udHJvbCggJ2N1c3RvbScgKTtcblx0fVxuXG5cdHJldHVybiBvcHRpb25zO1xufVxuXG5mdW5jdGlvbiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX2dldF9jdXN0b21fY29udHJvbF9rZXlzKCkge1xuXHRyZXR1cm4gW1xuXHRcdCdib29raW5nX2Zvcm1fYmFja2dyb3VuZF9jb2xvcicsXG5cdFx0J2Jvb2tpbmdfZm9ybV9ib3JkZXJfY29sb3InLFxuXHRcdCdib29raW5nX2Zvcm1fYm9yZGVyX3dpZHRoJyxcblx0XHQnYm9va2luZ19mb3JtX2JvcmRlcl9yYWRpdXMnLFxuXHRcdCdib29raW5nX2Zvcm1fcGFkZGluZycsXG5cdFx0J2Jvb2tpbmdfZm9ybV90ZXh0X2NvbG9yJyxcblx0XHQnYm9va2luZ19mb3JtX2ZpZWxkX2JhY2tncm91bmRfY29sb3InLFxuXHRcdCdib29raW5nX2Zvcm1fZmllbGRfdGV4dF9jb2xvcicsXG5cdFx0J2Jvb2tpbmdfZm9ybV9maWVsZF9ib3JkZXJfY29sb3InXG5cdF07XG59XG5cbmZ1bmN0aW9uIHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9faXNfY3VzdG9tX2NvbnRyb2xfa2V5KGtleSkge1xuXHRyZXR1cm4gd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19nZXRfY3VzdG9tX2NvbnRyb2xfa2V5cygpLmluZGV4T2YoIFN0cmluZygga2V5IHx8ICcnICkgKSAhPT0gLTE7XG59XG5cbmZ1bmN0aW9uIHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2V0X2NvbnRhaW5lcl9zdHlsZV9jb250cm9sKHZhbHVlKSB7XG5cdGNvbnN0IGNvbnRyb2wgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCAnW2RhdGEtd3BiYy1iZmItZnMta2V5PVwiYm9va2luZ19mb3JtX2NvbnRhaW5lcl9zdHlsZVwiXScgKTtcblx0aWYgKCAhIGNvbnRyb2wgfHwgY29udHJvbC52YWx1ZSA9PT0gdmFsdWUgKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Y29udHJvbC52YWx1ZSA9IHZhbHVlO1xufVxuXG5mdW5jdGlvbiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3NldF9yYWRpb19jb250cm9sKGtleSwgdmFsdWUpIHtcblx0Y29uc3Qgcm93ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvciggJy53cGJjX2JmYl9fZm9ybV9zZXR0aW5nW2RhdGEta2V5PVwiJyArIGtleSArICdcIl0nICk7XG5cdGlmICggISByb3cgKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Y29uc3Qgd3JhcCA9IHJvdy5xdWVyeVNlbGVjdG9yKCAnLndwYmNfYmZiX19mb3JtX3NldHRpbmdfcmFkaW9bZGF0YS13cGJjLWJmYi1mcy1jb250cm9saWRdJyApO1xuXHRjb25zdCBjb250cm9sX2lkID0gd3JhcCA/IFN0cmluZyggd3JhcC5nZXRBdHRyaWJ1dGUoICdkYXRhLXdwYmMtYmZiLWZzLWNvbnRyb2xpZCcgKSB8fCAnJyApIDogJyc7XG5cdGNvbnN0IHJhZGlvcyA9IGNvbnRyb2xfaWRcblx0XHQ/IHJvdy5xdWVyeVNlbGVjdG9yQWxsKCAnaW5wdXRbdHlwZT1cInJhZGlvXCJdW25hbWU9XCInICsgY29udHJvbF9pZCArICdcIl0nIClcblx0XHQ6IHJvdy5xdWVyeVNlbGVjdG9yQWxsKCAnaW5wdXRbdHlwZT1cInJhZGlvXCJdJyApO1xuXG5cdHJhZGlvcy5mb3JFYWNoKCBmdW5jdGlvbiAocmFkaW8pIHtcblx0XHRjb25zdCBzaG91bGRfY2hlY2sgPSAoIFN0cmluZyggcmFkaW8udmFsdWUgKSA9PT0gU3RyaW5nKCB2YWx1ZSA9PSBudWxsID8gJycgOiB2YWx1ZSApICk7XG5cdFx0cmFkaW8uY2hlY2tlZCA9IHNob3VsZF9jaGVjaztcblxuXHRcdGNvbnN0IGNob2ljZSA9IHJhZGlvLmNsb3Nlc3QgPyByYWRpby5jbG9zZXN0KCAnLndwYmNfdGhlbWVfY2hvaWNlJyApIDogbnVsbDtcblx0XHRpZiAoIGNob2ljZSApIHtcblx0XHRcdGNob2ljZS5jbGFzc0xpc3QudG9nZ2xlKCAnaXMtc2VsZWN0ZWQnLCBzaG91bGRfY2hlY2sgKTtcblx0XHR9XG5cdH0gKTtcbn1cblxuZnVuY3Rpb24gd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zZXRfc2VsZWN0X2NvbnRyb2woa2V5LCB2YWx1ZSkge1xuXHRjb25zdCBjb250cm9sID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvciggJ1tkYXRhLXdwYmMtYmZiLWZzLWtleT1cIicgKyBrZXkgKyAnXCJdJyApO1xuXHRpZiAoIGNvbnRyb2wgKSB7XG5cdFx0Y29udHJvbC52YWx1ZSA9IFN0cmluZyggdmFsdWUgPT0gbnVsbCA/ICcnIDogdmFsdWUgKTtcblx0fVxufVxuXG5mdW5jdGlvbiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX2dldF9jdXJyZW50X29wdGlvbnMoKSB7XG5cdHJldHVybiB3aW5kb3cuV1BCQ19CRkJfRm9ybVNldHRpbmdzICYmIHR5cGVvZiB3aW5kb3cuV1BCQ19CRkJfRm9ybVNldHRpbmdzLmNvbGxlY3QgPT09ICdmdW5jdGlvbidcblx0XHQ/IHdpbmRvdy5XUEJDX0JGQl9Gb3JtU2V0dGluZ3MuY29sbGVjdCggJ2Zvcm0nICkgfHwge31cblx0XHQ6IHt9O1xufVxuXG5mdW5jdGlvbiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX2dldF9zdHlsZV92YWx1ZV9mcm9tX29wdGlvbnMob3B0aW9ucykge1xuXHRvcHRpb25zID0gb3B0aW9ucyAmJiB0eXBlb2Ygb3B0aW9ucyA9PT0gJ29iamVjdCcgPyBvcHRpb25zIDoge307XG5cblx0Y29uc3QgdGhlbWUgPSBTdHJpbmcoIG9wdGlvbnMuYm9va2luZ19mb3JtX3RoZW1lIHx8ICcnICk7XG5cdGNvbnN0IHN0eWxlID0gU3RyaW5nKCBvcHRpb25zLmJvb2tpbmdfZm9ybV9jb250YWluZXJfc3R5bGUgfHwgJ2luaGVyaXQnICk7XG5cblx0aWYgKCAnY3VzdG9tJyA9PT0gc3R5bGUgKSB7XG5cdFx0cmV0dXJuICdjdXN0b20nO1xuXHR9XG5cdGlmICggJ2luaGVyaXQnID09PSBzdHlsZSB8fCAnJyA9PT0gc3R5bGUgKSB7XG5cdFx0cmV0dXJuICdpbmhlcml0Jztcblx0fVxuXG5cdGNvbnN0IHByZWZpeCA9ICggJ3dwYmNfdGhlbWVfZGFya18xJyA9PT0gdGhlbWUgKSA/ICdkYXJrJyA6ICdsaWdodCc7XG5cdGlmICggWyAnYm9yZGVyZWQnLCAnbm9uZScsICdzb2Z0JyBdLmluZGV4T2YoIHN0eWxlICkgPT09IC0xICkge1xuXHRcdHJldHVybiBwcmVmaXggKyAnX2JvcmRlcmVkJztcblx0fVxuXG5cdHJldHVybiBwcmVmaXggKyAnXycgKyBzdHlsZTtcbn1cblxuZnVuY3Rpb24gd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zeW5jX2Zvcm1fc3R5bGVfY29udHJvbChvcHRpb25zKSB7XG5cdHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2V0X3JhZGlvX2NvbnRyb2woICdib29raW5nX2Zvcm1fc3R5bGUnLCB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX2dldF9zdHlsZV92YWx1ZV9mcm9tX29wdGlvbnMoIG9wdGlvbnMgKSApO1xufVxuXG5mdW5jdGlvbiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Jlc29sdmVfZm9ybV9zdHlsZV9jaG9pY2UodmFsdWUpIHtcblx0Y29uc3QgY3VycmVudF9vcHRpb25zID0gd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19nZXRfY3VycmVudF9vcHRpb25zKCk7XG5cdGNvbnN0IGN1cnJlbnRfdGhlbWUgPSBTdHJpbmcoIGN1cnJlbnRfb3B0aW9ucy5ib29raW5nX2Zvcm1fdGhlbWUgfHwgJycgKTtcblx0Y29uc3QgY2hvaWNlID0gU3RyaW5nKCB2YWx1ZSB8fCAnaW5oZXJpdCcgKTtcblxuXHRpZiAoICdjdXN0b20nID09PSBjaG9pY2UgKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdGJvb2tpbmdfZm9ybV90aGVtZSAgICAgICAgICA6IGN1cnJlbnRfdGhlbWUsXG5cdFx0XHRib29raW5nX2Zvcm1fY29udGFpbmVyX3N0eWxlOiAnY3VzdG9tJ1xuXHRcdH07XG5cdH1cblx0aWYgKCAnaW5oZXJpdCcgPT09IGNob2ljZSB8fCAnJyA9PT0gY2hvaWNlICkge1xuXHRcdHJldHVybiB7XG5cdFx0XHRib29raW5nX2Zvcm1fdGhlbWUgICAgICAgICAgOiAnJyxcblx0XHRcdGJvb2tpbmdfZm9ybV9jb250YWluZXJfc3R5bGU6ICdpbmhlcml0J1xuXHRcdH07XG5cdH1cblxuXHRjb25zdCBwYXJ0cyA9IGNob2ljZS5zcGxpdCggJ18nICk7XG5cdGNvbnN0IHRoZW1lID0gKCAnZGFyaycgPT09IHBhcnRzWzBdICkgPyAnd3BiY190aGVtZV9kYXJrXzEnIDogJyc7XG5cdGNvbnN0IHN0eWxlID0gcGFydHNbMV0gfHwgJ2JvcmRlcmVkJztcblxuXHRyZXR1cm4ge1xuXHRcdGJvb2tpbmdfZm9ybV90aGVtZSAgICAgICAgICA6IHRoZW1lLFxuXHRcdGJvb2tpbmdfZm9ybV9jb250YWluZXJfc3R5bGU6ICggWyAnYm9yZGVyZWQnLCAnbm9uZScsICdzb2Z0JyBdLmluZGV4T2YoIHN0eWxlICkgPT09IC0xICkgPyAnYm9yZGVyZWQnIDogc3R5bGVcblx0fTtcbn1cblxuZnVuY3Rpb24gd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19pc191c2VyX3RoZW1lX3N3aXRjaChjdHgpIHtcblx0Y29uc3Qgc291cmNlID0gU3RyaW5nKCBjdHggJiYgY3R4LnNvdXJjZSA/IGN0eC5zb3VyY2UgOiAnJyApO1xuXHRyZXR1cm4gWyAndWknLCAnY29sb3JpcycgXS5pbmRleE9mKCBzb3VyY2UgKSAhPT0gLTE7XG59XG5cbmZ1bmN0aW9uIHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9faXNfY3VzdG9tX3N0eWxlKG9wdGlvbnMpIHtcblx0cmV0dXJuIFN0cmluZyggb3B0aW9ucyAmJiBvcHRpb25zLmJvb2tpbmdfZm9ybV9jb250YWluZXJfc3R5bGUgPyBvcHRpb25zLmJvb2tpbmdfZm9ybV9jb250YWluZXJfc3R5bGUgOiAnaW5oZXJpdCcgKSA9PT0gJ2N1c3RvbSc7XG59XG5cbmZ1bmN0aW9uIHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc3luY19jdXN0b21fY29udHJvbHMob3B0aW9ucykge1xuXHRjb25zdCBpc19jdXN0b20gPSB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX2lzX2N1c3RvbV9zdHlsZSggb3B0aW9ucyApO1xuXHRjb25zdCByZXNldF9yb3cgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCAnW2RhdGEtd3BiYy1iZmItY3VzdG9tLWFwcGVhcmFuY2UtcmVzZXQtcm93XScgKTtcblx0Y29uc3QgYmFzZV90aGVtZV9yb3cgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCAnLndwYmNfYmZiX19mb3JtX3NldHRpbmdbZGF0YS1rZXk9XCJib29raW5nX2Zvcm1fdGhlbWVcIl0nICk7XG5cblx0d3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19nZXRfY3VzdG9tX2NvbnRyb2xfa2V5cygpLmZvckVhY2goIGZ1bmN0aW9uIChrZXkpIHtcblx0XHRjb25zdCByb3cgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCAnLndwYmNfYmZiX19mb3JtX3NldHRpbmdbZGF0YS1rZXk9XCInICsga2V5ICsgJ1wiXScgKTtcblx0XHRpZiAoICEgcm93ICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRyb3cuaGlkZGVuID0gISBpc19jdXN0b207XG5cdFx0cm93LnNldEF0dHJpYnV0ZSggJ2FyaWEtaGlkZGVuJywgaXNfY3VzdG9tID8gJ2ZhbHNlJyA6ICd0cnVlJyApO1xuXHRcdHJvdy5jbGFzc0xpc3QudG9nZ2xlKCAnaXMtaGlkZGVuJywgISBpc19jdXN0b20gKTtcblx0fSApO1xuXG5cdGlmICggcmVzZXRfcm93ICkge1xuXHRcdHJlc2V0X3Jvdy5oaWRkZW4gPSAhIGlzX2N1c3RvbTtcblx0XHRyZXNldF9yb3cuc2V0QXR0cmlidXRlKCAnYXJpYS1oaWRkZW4nLCBpc19jdXN0b20gPyAnZmFsc2UnIDogJ3RydWUnICk7XG5cdFx0cmVzZXRfcm93LmNsYXNzTGlzdC50b2dnbGUoICdpcy1oaWRkZW4nLCAhIGlzX2N1c3RvbSApO1xuXHR9XG5cblx0aWYgKCBiYXNlX3RoZW1lX3JvdyApIHtcblx0XHRiYXNlX3RoZW1lX3Jvdy5oaWRkZW4gPSAhIGlzX2N1c3RvbTtcblx0XHRiYXNlX3RoZW1lX3Jvdy5zZXRBdHRyaWJ1dGUoICdhcmlhLWhpZGRlbicsIGlzX2N1c3RvbSA/ICdmYWxzZScgOiAndHJ1ZScgKTtcblx0XHRiYXNlX3RoZW1lX3Jvdy5jbGFzc0xpc3QudG9nZ2xlKCAnaXMtaGlkZGVuJywgISBpc19jdXN0b20gKTtcblx0fVxufVxuXG5mdW5jdGlvbiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Jlc29sdmUob3B0aW9ucykge1xuXHRsZXQgc3R5bGUgICAgID0gU3RyaW5nKCBvcHRpb25zLmJvb2tpbmdfZm9ybV9jb250YWluZXJfc3R5bGUgfHwgJ2luaGVyaXQnICk7XG5cblx0aWYgKCBzdHlsZSA9PT0gJ2luaGVyaXQnICkge1xuXHRcdGNvbnN0IGdsb2JhbF9vcHRpb25zID0gd2luZG93LndwYmNfYmZiX3NldHRpbmdzX3ZhcnMgJiYgd2luZG93LndwYmNfYmZiX3NldHRpbmdzX3ZhcnMuZ2xvYmFsX2FwcGVhcmFuY2Vcblx0XHRcdD8gd2luZG93LndwYmNfYmZiX3NldHRpbmdzX3ZhcnMuZ2xvYmFsX2FwcGVhcmFuY2Vcblx0XHRcdDoge307XG5cdFx0b3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oIHt9LCBnbG9iYWxfb3B0aW9ucyB8fCB7fSApO1xuXHRcdHN0eWxlID0gU3RyaW5nKCBvcHRpb25zLmJvb2tpbmdfZm9ybV9jb250YWluZXJfc3R5bGUgfHwgJ2JvcmRlcmVkJyApO1xuXHR9XG5cblx0aWYgKCBzdHlsZSA9PT0gJ2JvcmRlcmVkJyApIHtcblx0XHRyZXR1cm4gbnVsbDtcblx0fVxuXG5cdGlmICggc3R5bGUgIT09ICdjdXN0b20nICkge1xuXHRcdHJldHVybiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX2dldF9wcmVzZXRfZm9yX29wdGlvbnMoIHN0eWxlLCBvcHRpb25zICk7XG5cdH1cblxuXHRyZXR1cm4ge1xuXHRcdGJhY2tncm91bmQgOiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Nhbml0aXplX2NvbG9yKCBvcHRpb25zLmJvb2tpbmdfZm9ybV9iYWNrZ3JvdW5kX2NvbG9yLCAnI2ZmZmZmZicgKSxcblx0XHRib3JkZXJDb2xvcjogd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zYW5pdGl6ZV9jb2xvciggb3B0aW9ucy5ib29raW5nX2Zvcm1fYm9yZGVyX2NvbG9yLCAnI2NjY2NjYycgKSxcblx0XHRib3JkZXJXaWR0aDogd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zYW5pdGl6ZV9sZW5ndGgoIG9wdGlvbnMuYm9va2luZ19mb3JtX2JvcmRlcl93aWR0aCwgJzFweCcgKSxcblx0XHRyYWRpdXMgICAgIDogd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zYW5pdGl6ZV9sZW5ndGgoIG9wdGlvbnMuYm9va2luZ19mb3JtX2JvcmRlcl9yYWRpdXMsICcycHgnICksXG5cdFx0cGFkZGluZyAgICA6IHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2FuaXRpemVfc3BhY2luZyggb3B0aW9ucy5ib29raW5nX2Zvcm1fcGFkZGluZywgJzEwcHggMzBweCcgKSxcblx0XHRzaGFkb3cgICAgIDogJ3JnYmEoMCwgMCwgMCwgMC4wNSkgMHB4IDJweCA2cHggMHB4J1xuXHR9O1xufVxuXG5mdW5jdGlvbiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Jlc29sdmVfZGVzaWduX2NvbG9ycyhvcHRpb25zKSB7XG5cdG9wdGlvbnMgPSBvcHRpb25zICYmIHR5cGVvZiBvcHRpb25zID09PSAnb2JqZWN0JyA/IG9wdGlvbnMgOiB7fTtcblxuXHRpZiAoICEgd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19pc19jdXN0b21fc3R5bGUoIG9wdGlvbnMgKSApIHtcblx0XHRpZiAoXG5cdFx0XHR3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX2lzX2RhcmtfdGhlbWUoIG9wdGlvbnMgKSAmJlxuXHRcdFx0J25vbmUnID09PSBTdHJpbmcoIG9wdGlvbnMuYm9va2luZ19mb3JtX2NvbnRhaW5lcl9zdHlsZSB8fCAnJyApXG5cdFx0KSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHR0ZXh0Q29sb3IgICAgICA6ICcjMWQyMzI3Jyxcblx0XHRcdFx0ZmllbGRCYWNrZ3JvdW5kOiAnJyxcblx0XHRcdFx0ZmllbGRUZXh0ICAgICAgOiAnJyxcblx0XHRcdFx0ZmllbGRCb3JkZXIgICAgOiAnJ1xuXHRcdFx0fTtcblx0XHR9XG5cdFx0cmV0dXJuIHtcblx0XHRcdHRleHRDb2xvciAgICAgIDogJycsXG5cdFx0XHRmaWVsZEJhY2tncm91bmQ6ICcnLFxuXHRcdFx0ZmllbGRUZXh0ICAgICAgOiAnJyxcblx0XHRcdGZpZWxkQm9yZGVyICAgIDogJydcblx0XHR9O1xuXHR9XG5cblx0cmV0dXJuIHtcblx0XHR0ZXh0Q29sb3IgICAgICA6IHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2FuaXRpemVfb3B0aW9uYWxfY29sb3IoIG9wdGlvbnMuYm9va2luZ19mb3JtX3RleHRfY29sb3IgKSxcblx0XHRmaWVsZEJhY2tncm91bmQ6IHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2FuaXRpemVfb3B0aW9uYWxfY29sb3IoIG9wdGlvbnMuYm9va2luZ19mb3JtX2ZpZWxkX2JhY2tncm91bmRfY29sb3IgKSxcblx0XHRmaWVsZFRleHQgICAgICA6IHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2FuaXRpemVfb3B0aW9uYWxfY29sb3IoIG9wdGlvbnMuYm9va2luZ19mb3JtX2ZpZWxkX3RleHRfY29sb3IgKSxcblx0XHRmaWVsZEJvcmRlciAgICA6IHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2FuaXRpemVfb3B0aW9uYWxfY29sb3IoIG9wdGlvbnMuYm9va2luZ19mb3JtX2ZpZWxkX2JvcmRlcl9jb2xvciApXG5cdH07XG59XG5cbmZ1bmN0aW9uIHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fYXBwbHlfdmFycyh2YWx1ZSwgY3R4KSB7XG5cdGNvbnN0IG9wdGlvbnMgPSB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX2NvbGxlY3Rfb3B0aW9ucyggY3R4LCBjdHggJiYgY3R4LmtleSwgdmFsdWUgKTtcblx0Y29uc3QgcmVzb2x2ZWQgPSB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Jlc29sdmUoIG9wdGlvbnMgKTtcblx0Y29uc3QgZGVzaWduID0gd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19yZXNvbHZlX2Rlc2lnbl9jb2xvcnMoIG9wdGlvbnMgKTtcblx0Y29uc3QgaXNfY3VzdG9tID0gd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19pc19jdXN0b21fc3R5bGUoIG9wdGlvbnMgKTtcblx0Y29uc3Qgcm9vdCA9IGN0eCAmJiBjdHguY2FudmFzO1xuXG5cdHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc3luY19mb3JtX3N0eWxlX2NvbnRyb2woIG9wdGlvbnMgKTtcblx0d3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zeW5jX2N1c3RvbV9jb250cm9scyggb3B0aW9ucyApO1xuXG5cdGlmICggISByb290IHx8ICEgcm9vdC5xdWVyeVNlbGVjdG9yQWxsICkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGNvbnN0IHdyYXBzID0gcm9vdC5xdWVyeVNlbGVjdG9yQWxsKCAnLndwYmNfYmZiX19mb3JtX3ByZXZpZXdfc2VjdGlvbl9jb250YWluZXIsIC53cGJjX2JmYl9mb3JtJyApO1xuXHRpZiAoICEgd3JhcHMubGVuZ3RoICkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdHdyYXBzLmZvckVhY2goIGZ1bmN0aW9uICh3cmFwKSB7XG5cdFx0aWYgKCAhIHdyYXAgfHwgISB3cmFwLnN0eWxlICkge1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR3cmFwLmNsYXNzTGlzdC50b2dnbGUoICd3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfY3VzdG9tJywgaXNfY3VzdG9tICk7XG5cdFx0aWYgKCAhIHJlc29sdmVkICkge1xuXHRcdFx0d3JhcC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSggJy0td3BiYy1iZmItZm9ybS1iYWNrZ3JvdW5kJyApO1xuXHRcdFx0d3JhcC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSggJy0td3BiYy1iZmItZm9ybS1ib3JkZXItY29sb3InICk7XG5cdFx0XHR3cmFwLnN0eWxlLnJlbW92ZVByb3BlcnR5KCAnLS13cGJjLWJmYi1mb3JtLWJvcmRlci13aWR0aCcgKTtcblx0XHRcdHdyYXAuc3R5bGUucmVtb3ZlUHJvcGVydHkoICctLXdwYmMtYmZiLWZvcm0tYm9yZGVyLXJhZGl1cycgKTtcblx0XHRcdHdyYXAuc3R5bGUucmVtb3ZlUHJvcGVydHkoICctLXdwYmMtYmZiLWZvcm0tcGFkZGluZycgKTtcblx0XHRcdHdyYXAuc3R5bGUucmVtb3ZlUHJvcGVydHkoICctLXdwYmMtYmZiLWZvcm0tYm94LXNoYWRvdycgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0d3JhcC5zdHlsZS5zZXRQcm9wZXJ0eSggJy0td3BiYy1iZmItZm9ybS1iYWNrZ3JvdW5kJywgcmVzb2x2ZWQuYmFja2dyb3VuZCApO1xuXHRcdFx0d3JhcC5zdHlsZS5zZXRQcm9wZXJ0eSggJy0td3BiYy1iZmItZm9ybS1ib3JkZXItY29sb3InLCByZXNvbHZlZC5ib3JkZXJDb2xvciApO1xuXHRcdFx0d3JhcC5zdHlsZS5zZXRQcm9wZXJ0eSggJy0td3BiYy1iZmItZm9ybS1ib3JkZXItd2lkdGgnLCByZXNvbHZlZC5ib3JkZXJXaWR0aCApO1xuXHRcdFx0d3JhcC5zdHlsZS5zZXRQcm9wZXJ0eSggJy0td3BiYy1iZmItZm9ybS1ib3JkZXItcmFkaXVzJywgcmVzb2x2ZWQucmFkaXVzICk7XG5cdFx0XHR3cmFwLnN0eWxlLnNldFByb3BlcnR5KCAnLS13cGJjLWJmYi1mb3JtLXBhZGRpbmcnLCByZXNvbHZlZC5wYWRkaW5nICk7XG5cdFx0XHR3cmFwLnN0eWxlLnNldFByb3BlcnR5KCAnLS13cGJjLWJmYi1mb3JtLWJveC1zaGFkb3cnLCByZXNvbHZlZC5zaGFkb3cgKTtcblx0XHR9XG5cblx0XHRpZiAoIGRlc2lnbi50ZXh0Q29sb3IgKSB7XG5cdFx0XHR3cmFwLnN0eWxlLnNldFByb3BlcnR5KCAnLS13cGJjX2Zvcm0tbGFiZWwtY29sb3InLCBkZXNpZ24udGV4dENvbG9yICk7XG5cdFx0XHR3cmFwLnN0eWxlLnNldFByb3BlcnR5KCAnLS13cGJjX2Zvcm0tbGFiZWwtc3VibGFiZWwtY29sb3InLCBkZXNpZ24udGV4dENvbG9yICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHdyYXAuc3R5bGUucmVtb3ZlUHJvcGVydHkoICctLXdwYmNfZm9ybS1sYWJlbC1jb2xvcicgKTtcblx0XHRcdHdyYXAuc3R5bGUucmVtb3ZlUHJvcGVydHkoICctLXdwYmNfZm9ybS1sYWJlbC1zdWJsYWJlbC1jb2xvcicgKTtcblx0XHR9XG5cblx0XHRpZiAoIGRlc2lnbi5maWVsZEJhY2tncm91bmQgKSB7XG5cdFx0XHR3cmFwLnN0eWxlLnNldFByb3BlcnR5KCAnLS13cGJjX2Zvcm0tZmllbGQtYmFja2dyb3VuZC1jb2xvcicsIGRlc2lnbi5maWVsZEJhY2tncm91bmQgKTtcblx0XHRcdHdyYXAuc3R5bGUuc2V0UHJvcGVydHkoICctLXdwYmNfZm9ybS1maWVsZC1tZW51LWNvbG9yJywgZGVzaWduLmZpZWxkQmFja2dyb3VuZCApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR3cmFwLnN0eWxlLnJlbW92ZVByb3BlcnR5KCAnLS13cGJjX2Zvcm0tZmllbGQtYmFja2dyb3VuZC1jb2xvcicgKTtcblx0XHRcdHdyYXAuc3R5bGUucmVtb3ZlUHJvcGVydHkoICctLXdwYmNfZm9ybS1maWVsZC1tZW51LWNvbG9yJyApO1xuXHRcdH1cblxuXHRcdGlmICggZGVzaWduLmZpZWxkVGV4dCApIHtcblx0XHRcdHdyYXAuc3R5bGUuc2V0UHJvcGVydHkoICctLXdwYmNfZm9ybS1maWVsZC10ZXh0LWNvbG9yJywgZGVzaWduLmZpZWxkVGV4dCApO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHR3cmFwLnN0eWxlLnJlbW92ZVByb3BlcnR5KCAnLS13cGJjX2Zvcm0tZmllbGQtdGV4dC1jb2xvcicgKTtcblx0XHR9XG5cblx0XHRpZiAoIGRlc2lnbi5maWVsZEJvcmRlciApIHtcblx0XHRcdHdyYXAuc3R5bGUuc2V0UHJvcGVydHkoICctLXdwYmNfZm9ybS1maWVsZC1ib3JkZXItY29sb3InLCBkZXNpZ24uZmllbGRCb3JkZXIgKTtcblx0XHRcdHdyYXAuc3R5bGUuc2V0UHJvcGVydHkoICctLXdwYmNfZm9ybS1maWVsZC1ib3JkZXItY29sb3Itc3BhcmUnLCBkZXNpZ24uZmllbGRCb3JkZXIgKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0d3JhcC5zdHlsZS5yZW1vdmVQcm9wZXJ0eSggJy0td3BiY19mb3JtLWZpZWxkLWJvcmRlci1jb2xvcicgKTtcblx0XHRcdHdyYXAuc3R5bGUucmVtb3ZlUHJvcGVydHkoICctLXdwYmNfZm9ybS1maWVsZC1ib3JkZXItY29sb3Itc3BhcmUnICk7XG5cdFx0fVxuXHR9ICk7XG59XG5cbmZ1bmN0aW9uIHdwYmNfYmZiX2dsb2JhbF9mb3JtX3N0eWxlX19nZXRfdmFycygpIHtcblx0cmV0dXJuIHdpbmRvdy53cGJjX2JmYl9zZXR0aW5nc192YXJzIHx8IHt9O1xufVxuXG5mdW5jdGlvbiB3cGJjX2JmYl9nbG9iYWxfZm9ybV9zdHlsZV9fZ2V0X3ByZXNldHMoKSB7XG5cdGNvbnN0IHZhcnMgPSB3cGJjX2JmYl9nbG9iYWxfZm9ybV9zdHlsZV9fZ2V0X3ZhcnMoKTtcblx0cmV0dXJuIHZhcnMuZm9ybV9zdHlsZV9wcmVzZXRzICYmIHR5cGVvZiB2YXJzLmZvcm1fc3R5bGVfcHJlc2V0cyA9PT0gJ29iamVjdCcgPyB2YXJzLmZvcm1fc3R5bGVfcHJlc2V0cyA6IHt9O1xufVxuXG5mdW5jdGlvbiB3cGJjX2JmYl9nbG9iYWxfZm9ybV9zdHlsZV9fZ2V0X2N1c3RvbV9rZXlzKCkge1xuXHRyZXR1cm4gW1xuXHRcdCdib29raW5nX2Zvcm1fY3VzdG9tX2JhY2tncm91bmRfY29sb3InLFxuXHRcdCdib29raW5nX2Zvcm1fY3VzdG9tX2JvcmRlcl9jb2xvcicsXG5cdFx0J2Jvb2tpbmdfZm9ybV9jdXN0b21fYm9yZGVyX3dpZHRoJyxcblx0XHQnYm9va2luZ19mb3JtX2N1c3RvbV9ib3JkZXJfcmFkaXVzJyxcblx0XHQnYm9va2luZ19mb3JtX2N1c3RvbV9wYWRkaW5nX3ZlcnRpY2FsJyxcblx0XHQnYm9va2luZ19mb3JtX2N1c3RvbV9wYWRkaW5nX2hvcml6b250YWwnLFxuXHRcdCdib29raW5nX2Zvcm1fY3VzdG9tX3RleHRfY29sb3InLFxuXHRcdCdib29raW5nX2Zvcm1fY3VzdG9tX2ZpZWxkX2JhY2tncm91bmRfY29sb3InLFxuXHRcdCdib29raW5nX2Zvcm1fY3VzdG9tX2ZpZWxkX3RleHRfY29sb3InLFxuXHRcdCdib29raW5nX2Zvcm1fY3VzdG9tX2ZpZWxkX2JvcmRlcl9jb2xvcicsXG5cdFx0J2Jvb2tpbmdfZm9ybV9jdXN0b21fYnV0dG9uX2JhY2tncm91bmRfY29sb3InLFxuXHRcdCdib29raW5nX2Zvcm1fY3VzdG9tX2J1dHRvbl90ZXh0X2NvbG9yJyxcblx0XHQnYm9va2luZ19mb3JtX2N1c3RvbV9idXR0b25fYm9yZGVyX2NvbG9yJyxcblx0XHQnYm9va2luZ19mb3JtX2N1c3RvbV9idXR0b25faG92ZXJfYmFja2dyb3VuZF9jb2xvcicsXG5cdFx0J2Jvb2tpbmdfZm9ybV9jdXN0b21fYnV0dG9uX2hvdmVyX3RleHRfY29sb3InLFxuXHRcdCdib29raW5nX2Zvcm1fY3VzdG9tX2J1dHRvbl9ob3Zlcl9ib3JkZXJfY29sb3InLFxuXHRcdCdib29raW5nX2Zvcm1fY3VzdG9tX3NlY29uZGFyeV9idXR0b25fYmFja2dyb3VuZF9jb2xvcicsXG5cdFx0J2Jvb2tpbmdfZm9ybV9jdXN0b21fc2Vjb25kYXJ5X2J1dHRvbl90ZXh0X2NvbG9yJyxcblx0XHQnYm9va2luZ19mb3JtX2N1c3RvbV9zZWNvbmRhcnlfYnV0dG9uX2JvcmRlcl9jb2xvcicsXG5cdFx0J2Jvb2tpbmdfZm9ybV9jdXN0b21fc2Vjb25kYXJ5X2J1dHRvbl9ob3Zlcl9iYWNrZ3JvdW5kX2NvbG9yJyxcblx0XHQnYm9va2luZ19mb3JtX2N1c3RvbV9zZWNvbmRhcnlfYnV0dG9uX2hvdmVyX3RleHRfY29sb3InLFxuXHRcdCdib29raW5nX2Zvcm1fY3VzdG9tX3NlY29uZGFyeV9idXR0b25faG92ZXJfYm9yZGVyX2NvbG9yJyxcblx0XHQnYm9va2luZ19mb3JtX2N1c3RvbV9idXR0b25fYm9yZGVyX3dpZHRoJyxcblx0XHQnYm9va2luZ19mb3JtX2N1c3RvbV9idXR0b25fYm9yZGVyX3JhZGl1cydcblx0XTtcbn1cblxuZnVuY3Rpb24gd3BiY19iZmJfZ2xvYmFsX2Zvcm1fc3R5bGVfX2dldF9jdXN0b21fZGVmYXVsdHMoKSB7XG5cdGNvbnN0IHZhcnMgPSB3cGJjX2JmYl9nbG9iYWxfZm9ybV9zdHlsZV9fZ2V0X3ZhcnMoKTtcblx0Y29uc3QgbG9jYWxpemVkID0gdmFycy5jdXN0b21fZm9ybV9zdHlsZV9kZWZhdWx0cyAmJiB0eXBlb2YgdmFycy5jdXN0b21fZm9ybV9zdHlsZV9kZWZhdWx0cyA9PT0gJ29iamVjdCdcblx0XHQ/IHZhcnMuY3VzdG9tX2Zvcm1fc3R5bGVfZGVmYXVsdHNcblx0XHQ6IHt9O1xuXG5cdHJldHVybiBPYmplY3QuYXNzaWduKCB7XG5cdFx0Ym9va2luZ19mb3JtX2N1c3RvbV9iYWNrZ3JvdW5kX2NvbG9yICAgICAgIDogJyNmZmZmZmYnLFxuXHRcdGJvb2tpbmdfZm9ybV9jdXN0b21fYm9yZGVyX2NvbG9yICAgICAgICAgICA6ICcjY2NjY2NjJyxcblx0XHRib29raW5nX2Zvcm1fY3VzdG9tX2JvcmRlcl93aWR0aCAgICAgICAgICAgOiAnMXB4Jyxcblx0XHRib29raW5nX2Zvcm1fY3VzdG9tX2JvcmRlcl9yYWRpdXMgICAgICAgICAgOiAnMnB4Jyxcblx0XHRib29raW5nX2Zvcm1fY3VzdG9tX3BhZGRpbmdfdmVydGljYWwgICAgICAgOiAnMTBweCcsXG5cdFx0Ym9va2luZ19mb3JtX2N1c3RvbV9wYWRkaW5nX2hvcml6b250YWwgICAgIDogJzMwcHgnLFxuXHRcdGJvb2tpbmdfZm9ybV9jdXN0b21fdGV4dF9jb2xvciAgICAgICAgICAgICA6ICcjMWQyMzI3Jyxcblx0XHRib29raW5nX2Zvcm1fY3VzdG9tX2ZpZWxkX2JhY2tncm91bmRfY29sb3IgOiAnI2ZmZmZmZicsXG5cdFx0Ym9va2luZ19mb3JtX2N1c3RvbV9maWVsZF90ZXh0X2NvbG9yICAgICAgIDogJyMzYzQzNGEnLFxuXHRcdGJvb2tpbmdfZm9ybV9jdXN0b21fZmllbGRfYm9yZGVyX2NvbG9yICAgICA6ICcjY2NjY2NjJyxcblx0XHRib29raW5nX2Zvcm1fY3VzdG9tX2J1dHRvbl9iYWNrZ3JvdW5kX2NvbG9yOiAnIzA2NmFhYicsXG5cdFx0Ym9va2luZ19mb3JtX2N1c3RvbV9idXR0b25fdGV4dF9jb2xvciAgICAgIDogJyNmZmZmZmYnLFxuXHRcdGJvb2tpbmdfZm9ybV9jdXN0b21fYnV0dG9uX2JvcmRlcl9jb2xvciAgICA6ICcjMDY2YWFiJyxcblx0XHRib29raW5nX2Zvcm1fY3VzdG9tX2J1dHRvbl9ob3Zlcl9iYWNrZ3JvdW5kX2NvbG9yOiAnIzA1NTU4OScsXG5cdFx0Ym9va2luZ19mb3JtX2N1c3RvbV9idXR0b25faG92ZXJfdGV4dF9jb2xvcjogJyNmZmZmZmYnLFxuXHRcdGJvb2tpbmdfZm9ybV9jdXN0b21fYnV0dG9uX2hvdmVyX2JvcmRlcl9jb2xvcjogJyMwNTU1ODknLFxuXHRcdGJvb2tpbmdfZm9ybV9jdXN0b21fc2Vjb25kYXJ5X2J1dHRvbl9iYWNrZ3JvdW5kX2NvbG9yOiAnI2ZkZmRmZCcsXG5cdFx0Ym9va2luZ19mb3JtX2N1c3RvbV9zZWNvbmRhcnlfYnV0dG9uX3RleHRfY29sb3I6ICcjNDQ0NDQ0Jyxcblx0XHRib29raW5nX2Zvcm1fY3VzdG9tX3NlY29uZGFyeV9idXR0b25fYm9yZGVyX2NvbG9yOiAnI2VlZWVlZScsXG5cdFx0Ym9va2luZ19mb3JtX2N1c3RvbV9zZWNvbmRhcnlfYnV0dG9uX2hvdmVyX2JhY2tncm91bmRfY29sb3I6ICcjZmRmZGZkJyxcblx0XHRib29raW5nX2Zvcm1fY3VzdG9tX3NlY29uZGFyeV9idXR0b25faG92ZXJfdGV4dF9jb2xvcjogJyM0NDQ0NDQnLFxuXHRcdGJvb2tpbmdfZm9ybV9jdXN0b21fc2Vjb25kYXJ5X2J1dHRvbl9ob3Zlcl9ib3JkZXJfY29sb3I6ICcjNGQ5MWNkJyxcblx0XHRib29raW5nX2Zvcm1fY3VzdG9tX2J1dHRvbl9ib3JkZXJfd2lkdGggICAgICA6ICcxcHgnLFxuXHRcdGJvb2tpbmdfZm9ybV9jdXN0b21fYnV0dG9uX2JvcmRlcl9yYWRpdXMgICAgIDogJzNweCdcblx0fSwgbG9jYWxpemVkICk7XG59XG5cbmZ1bmN0aW9uIHdwYmNfYmZiX2dsb2JhbF9mb3JtX3N0eWxlX19nZXRfY3VycmVudF9vcHRpb25zKGN0eCwga2V5LCB2YWx1ZSkge1xuXHRjb25zdCB2YXJzID0gd3BiY19iZmJfZ2xvYmFsX2Zvcm1fc3R5bGVfX2dldF92YXJzKCk7XG5cdGxldCBvcHRpb25zID0gdmFycy5nbG9iYWxfZm9ybV9zdHlsZSAmJiB0eXBlb2YgdmFycy5nbG9iYWxfZm9ybV9zdHlsZSA9PT0gJ29iamVjdCdcblx0XHQ/IE9iamVjdC5hc3NpZ24oIHt9LCB2YXJzLmdsb2JhbF9mb3JtX3N0eWxlIClcblx0XHQ6IHt9O1xuXG5cdGlmICggd2luZG93LldQQkNfQkZCX0Zvcm1TZXR0aW5ncyAmJiB0eXBlb2Ygd2luZG93LldQQkNfQkZCX0Zvcm1TZXR0aW5ncy5jb2xsZWN0ID09PSAnZnVuY3Rpb24nICkge1xuXHRcdG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKCBvcHRpb25zLCB3aW5kb3cuV1BCQ19CRkJfRm9ybVNldHRpbmdzLmNvbGxlY3QoICdnbG9iYWwnICkgfHwge30gKTtcblx0fVxuXG5cdGlmICggY3R4ICYmIGN0eC5vcHRpb25zICYmIHR5cGVvZiBjdHgub3B0aW9ucyA9PT0gJ29iamVjdCcgKSB7XG5cdFx0b3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oIG9wdGlvbnMsIGN0eC5vcHRpb25zICk7XG5cdH1cblx0aWYgKCBrZXkgKSB7XG5cdFx0b3B0aW9uc1tTdHJpbmcoIGtleSApXSA9IHZhbHVlO1xuXHR9XG5cdGlmICggISBvcHRpb25zLmJvb2tpbmdfZm9ybV9zdHlsZSApIHtcblx0XHRvcHRpb25zLmJvb2tpbmdfZm9ybV9zdHlsZSA9ICdsaWdodF9ib3JkZXJlZCc7XG5cdH1cblxuXHRyZXR1cm4gb3B0aW9ucztcbn1cblxuZnVuY3Rpb24gd3BiY19iZmJfZ2xvYmFsX2Zvcm1fc3R5bGVfX21peF9jb2xvcnMoY29sb3IsIHRhcmdldCwgYW1vdW50KSB7XG5cdGxldCBzb3VyY2UgPSB3cGJjX2JmYl9nbG9iYWxfZm9ybV9zdHlsZV9fc2FuaXRpemVfYWNjZW50X2NvbG9yKCBjb2xvciApLnJlcGxhY2UoICcjJywgJycgKTtcblx0Y29uc3QgZGVzdGluYXRpb24gPSB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Nhbml0aXplX2NvbG9yKCB0YXJnZXQsICcjMDAwMDAwJyApLnJlcGxhY2UoICcjJywgJycgKTtcblx0Y29uc3QgY2hhbm5lbHMgPSBbXTtcblx0aWYgKCAhIHNvdXJjZSApIHtcblx0XHRyZXR1cm4gJyc7XG5cdH1cblx0aWYgKCBzb3VyY2UubGVuZ3RoID09PSAzICkge1xuXHRcdHNvdXJjZSA9IHNvdXJjZS5yZXBsYWNlKCAvLi9nLCBmdW5jdGlvbiAodmFsdWUpIHsgcmV0dXJuIHZhbHVlICsgdmFsdWU7IH0gKTtcblx0fVxuXHRmb3IgKCBsZXQgaW5kZXggPSAwOyBpbmRleCA8IDM7IGluZGV4KysgKSB7XG5cdFx0Y29uc3Qgc291cmNlX2NoYW5uZWwgPSBwYXJzZUludCggc291cmNlLnN1YnN0ciggaW5kZXggKiAyLCAyICksIDE2ICk7XG5cdFx0Y29uc3QgdGFyZ2V0X2NoYW5uZWwgPSBwYXJzZUludCggZGVzdGluYXRpb24uc3Vic3RyKCBpbmRleCAqIDIsIDIgKSwgMTYgKTtcblx0XHRjaGFubmVscy5wdXNoKCBNYXRoLnJvdW5kKCBzb3VyY2VfY2hhbm5lbCArICggKCB0YXJnZXRfY2hhbm5lbCAtIHNvdXJjZV9jaGFubmVsICkgKiBhbW91bnQgKSApICk7XG5cdH1cblx0cmV0dXJuICcjJyArIGNoYW5uZWxzLm1hcCggZnVuY3Rpb24gKGNoYW5uZWwpIHsgcmV0dXJuICggJzAnICsgY2hhbm5lbC50b1N0cmluZyggMTYgKSApLnNsaWNlKCAtMiApOyB9ICkuam9pbiggJycgKTtcbn1cblxuZnVuY3Rpb24gd3BiY19iZmJfZ2xvYmFsX2Zvcm1fc3R5bGVfX2dldF9sdW1pbmFuY2UoY29sb3IpIHtcblx0bGV0IGhleCA9IHdwYmNfYmZiX2dsb2JhbF9mb3JtX3N0eWxlX19zYW5pdGl6ZV9hY2NlbnRfY29sb3IoIGNvbG9yICkucmVwbGFjZSggJyMnLCAnJyApO1xuXHRpZiAoICEgaGV4ICkge1xuXHRcdHJldHVybiAwO1xuXHR9XG5cdGlmICggaGV4Lmxlbmd0aCA9PT0gMyApIHtcblx0XHRoZXggPSBoZXgucmVwbGFjZSggLy4vZywgZnVuY3Rpb24gKHZhbHVlKSB7IHJldHVybiB2YWx1ZSArIHZhbHVlOyB9ICk7XG5cdH1cblx0Y29uc3QgY2hhbm5lbHMgPSBbIDAsIDEsIDIgXS5tYXAoIGZ1bmN0aW9uIChpbmRleCkge1xuXHRcdGNvbnN0IGNoYW5uZWwgPSBwYXJzZUludCggaGV4LnN1YnN0ciggaW5kZXggKiAyLCAyICksIDE2ICkgLyAyNTU7XG5cdFx0cmV0dXJuIGNoYW5uZWwgPD0gMC4wMzkyOCA/IGNoYW5uZWwgLyAxMi45MiA6IE1hdGgucG93KCAoIGNoYW5uZWwgKyAwLjA1NSApIC8gMS4wNTUsIDIuNCApO1xuXHR9ICk7XG5cdHJldHVybiAoIDAuMjEyNiAqIGNoYW5uZWxzWzBdICkgKyAoIDAuNzE1MiAqIGNoYW5uZWxzWzFdICkgKyAoIDAuMDcyMiAqIGNoYW5uZWxzWzJdICk7XG59XG5cbi8qKlxuICogQXBwbHkgc2hhcmVkIGFjY2VudCB2YXJpYWJsZXMgd2l0aG91dCBtYXNraW5nIGV4cGxpY2l0IEN1c3RvbSBidXR0b24gY29udHJvbHMuXG4gKlxuICogQHBhcmFtIHtPYmplY3R9ICBjc3NfdmFycyAgICAgICAgICAgICAgICAgICAgICBSZXNvbHZlZCBiYXNlIHN0eWxlIHZhcmlhYmxlcy5cbiAqIEBwYXJhbSB7T2JqZWN0fSAgb3B0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgQ3VycmVudCBnbG9iYWwgc3R5bGUgb3B0aW9ucy5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gcHJlc2VydmVfY3VzdG9tX2J1dHRvbl9jb2xvcnMgV2hldGhlciBDdXN0b20gYnV0dG9uIHZhcmlhYmxlcyByZW1haW4gYXV0aG9yaXRhdGl2ZS5cbiAqIEByZXR1cm4ge09iamVjdH0gUmVzb2x2ZWQgdmFyaWFibGVzIHdpdGggdGhlIG9wdGlvbmFsIGFjY2VudCBvdmVybGF5LlxuICovXG5mdW5jdGlvbiB3cGJjX2JmYl9nbG9iYWxfZm9ybV9zdHlsZV9fYXBwbHlfYWNjZW50KGNzc192YXJzLCBvcHRpb25zLCBwcmVzZXJ2ZV9jdXN0b21fYnV0dG9uX2NvbG9ycykge1xuXHRpZiAoIFN0cmluZyggb3B0aW9ucy5ib29raW5nX2Zvcm1fYWNjZW50X2VuYWJsZWQgfHwgJ09mZicgKSAhPT0gJ09uJyApIHtcblx0XHRyZXR1cm4gY3NzX3ZhcnM7XG5cdH1cblx0Y29uc3QgYWNjZW50ID0gd3BiY19iZmJfZ2xvYmFsX2Zvcm1fc3R5bGVfX3Nhbml0aXplX2FjY2VudF9jb2xvciggb3B0aW9ucy5ib29raW5nX2Zvcm1fYWNjZW50X2NvbG9yICk7XG5cdGlmICggISBhY2NlbnQgKSB7XG5cdFx0cmV0dXJuIGNzc192YXJzO1xuXHR9XG5cdGNvbnN0IGx1bWluYW5jZSA9IHdwYmNfYmZiX2dsb2JhbF9mb3JtX3N0eWxlX19nZXRfbHVtaW5hbmNlKCBhY2NlbnQgKTtcblx0Y29uc3QgY29udHJhc3QgPSBsdW1pbmFuY2UgPiAwLjE4ID8gJyMwMDAwMDAnIDogJyNmZmZmZmYnO1xuXHRjb25zdCBob3Zlcl90YXJnZXQgPSAnI2ZmZmZmZicgPT09IGNvbnRyYXN0ID8gJyMwMDAwMDAnIDogJyNmZmZmZmYnO1xuXHRjb25zdCBob3ZlciA9IHdwYmNfYmZiX2dsb2JhbF9mb3JtX3N0eWxlX19taXhfY29sb3JzKCBhY2NlbnQsIGhvdmVyX3RhcmdldCwgMC4xMCApO1xuXHRjb25zdCBob3Zlcl9jb250cmFzdCA9IGNvbnRyYXN0O1xuXG5cdGNvbnN0IGFjY2VudF9vdmVybGF5ID0ge1xuXHRcdCctLXdwYmNfZm9ybS1hY2NlbnQtY29sb3InOiBhY2NlbnQsXG5cdFx0Jy0td3BiY19mb3JtLWFjY2VudC1ob3Zlci1jb2xvcic6IGhvdmVyLFxuXHRcdCctLXdwYmNfZm9ybS1hY2NlbnQtY29udHJhc3QtY29sb3InOiBjb250cmFzdCxcblx0XHQnLS13cGJjX2Zvcm0tZmllbGQtZm9jdXMtYm9yZGVyLWNvbG9yJzogYWNjZW50LFxuXHRcdCctLXdwYmNfZm9ybS1maWVsZC1mb2N1cy1zaGFkb3ctY29sb3InOiBhY2NlbnQsXG5cdFx0Jy0td3BiY19mb3JtLWNob2ljZS1jaGVja2VkLWJvcmRlci1jb2xvcic6IGFjY2VudCxcblx0XHQnLS13cGJjX2Zvcm0tY2hvaWNlLWNoZWNrZWQtY29sb3InOiBhY2NlbnQsXG5cdFx0Jy0td3BiY19mb3JtLWNob2ljZS1mb2N1cy1jb2xvcic6IGFjY2VudCxcblx0XHQnLS13cGJjX2Zvcm0tYnV0dG9uLWJhY2tncm91bmQtY29sb3InOiBhY2NlbnQsXG5cdFx0Jy0td3BiY19mb3JtLWJ1dHRvbi1iYWNrZ3JvdW5kLWNvbG9yLWFsdCc6IGFjY2VudCxcblx0XHQnLS13cGJjX2Zvcm0tYnV0dG9uLWJvcmRlci1jb2xvcic6IGFjY2VudCxcblx0XHQnLS13cGJjX2Zvcm0tYnV0dG9uLXRleHQtY29sb3InOiBjb250cmFzdCxcblx0XHQnLS13cGJjX2Zvcm0tYnV0dG9uLXRleHQtY29sb3ItYWx0JzogY29udHJhc3QsXG5cdFx0Jy0td3BiY19mb3JtLWJ1dHRvbi1ob3Zlci1iYWNrZ3JvdW5kLWNvbG9yJzogaG92ZXIsXG5cdFx0Jy0td3BiY19mb3JtLWJ1dHRvbi1ob3Zlci1ib3JkZXItY29sb3InOiBob3Zlcixcblx0XHQnLS13cGJjX2Zvcm0tYnV0dG9uLWhvdmVyLXRleHQtY29sb3InOiBob3Zlcl9jb250cmFzdCxcblx0XHQnLS13cGJjX2Zvcm0tYnV0dG9uLWxpZ2h0LWhvdmVyLWJvcmRlci1jb2xvcic6IGFjY2VudCxcblx0XHQnLS13cGJjX2Zvcm0tYnV0dG9uLXByaW1hcnktaG92ZXItYm9yZGVyLWNvbG9yJzogaG92ZXIsXG5cdFx0Jy0td3BiY19mb3JtLXBhZ2UtYnJlYWstY29sb3InOiBhY2NlbnRcblx0fTtcblxuXHRpZiAoIHByZXNlcnZlX2N1c3RvbV9idXR0b25fY29sb3JzICkge1xuXHRcdFtcblx0XHRcdCctLXdwYmNfZm9ybS1idXR0b24tYmFja2dyb3VuZC1jb2xvcicsXG5cdFx0XHQnLS13cGJjX2Zvcm0tYnV0dG9uLWJhY2tncm91bmQtY29sb3ItYWx0Jyxcblx0XHRcdCctLXdwYmNfZm9ybS1idXR0b24tYm9yZGVyLWNvbG9yJyxcblx0XHRcdCctLXdwYmNfZm9ybS1idXR0b24tdGV4dC1jb2xvcicsXG5cdFx0XHQnLS13cGJjX2Zvcm0tYnV0dG9uLXRleHQtY29sb3ItYWx0Jyxcblx0XHRcdCctLXdwYmNfZm9ybS1idXR0b24taG92ZXItYmFja2dyb3VuZC1jb2xvcicsXG5cdFx0XHQnLS13cGJjX2Zvcm0tYnV0dG9uLWhvdmVyLWJvcmRlci1jb2xvcicsXG5cdFx0XHQnLS13cGJjX2Zvcm0tYnV0dG9uLWhvdmVyLXRleHQtY29sb3InLFxuXHRcdFx0Jy0td3BiY19mb3JtLWJ1dHRvbi1saWdodC1ob3Zlci1ib3JkZXItY29sb3InLFxuXHRcdFx0Jy0td3BiY19mb3JtLWJ1dHRvbi1wcmltYXJ5LWhvdmVyLWJvcmRlci1jb2xvcidcblx0XHRdLmZvckVhY2goIGZ1bmN0aW9uIChjc3NfdmFyX25hbWUpIHtcblx0XHRcdGRlbGV0ZSBhY2NlbnRfb3ZlcmxheVtjc3NfdmFyX25hbWVdO1xuXHRcdH0gKTtcblx0fVxuXG5cdHJldHVybiBPYmplY3QuYXNzaWduKCB7fSwgY3NzX3ZhcnMsIGFjY2VudF9vdmVybGF5ICk7XG59XG5cbmZ1bmN0aW9uIHdwYmNfYmZiX2dsb2JhbF9mb3JtX3N0eWxlX19yZXNvbHZlX2Nzc192YXJzKG9wdGlvbnMpIHtcblx0b3B0aW9ucyA9IG9wdGlvbnMgJiYgdHlwZW9mIG9wdGlvbnMgPT09ICdvYmplY3QnID8gb3B0aW9ucyA6IHt9O1xuXHRjb25zdCBzdHlsZSA9IFN0cmluZyggb3B0aW9ucy5ib29raW5nX2Zvcm1fc3R5bGUgfHwgJ2xpZ2h0X2JvcmRlcmVkJyApO1xuXHRjb25zdCBwcmVzZXRzID0gd3BiY19iZmJfZ2xvYmFsX2Zvcm1fc3R5bGVfX2dldF9wcmVzZXRzKCk7XG5cdGNvbnN0IHByZXNldCA9IHByZXNldHNbc3R5bGVdIHx8IHByZXNldHMubGlnaHRfYm9yZGVyZWQgfHwge307XG5cdGNvbnN0IGRlZmF1bHRzID0gd3BiY19iZmJfZ2xvYmFsX2Zvcm1fc3R5bGVfX2dldF9jdXN0b21fZGVmYXVsdHMoKTtcblxuXHRpZiAoICdjdXN0b20nICE9PSBzdHlsZSApIHtcblx0XHRyZXR1cm4gd3BiY19iZmJfZ2xvYmFsX2Zvcm1fc3R5bGVfX2FwcGx5X2FjY2VudCggcHJlc2V0LmNzc192YXJzICYmIHR5cGVvZiBwcmVzZXQuY3NzX3ZhcnMgPT09ICdvYmplY3QnID8gT2JqZWN0LmFzc2lnbigge30sIHByZXNldC5jc3NfdmFycyApIDoge30sIG9wdGlvbnMgKTtcblx0fVxuXG5cdGNvbnN0IGNzc192YXJzID0ge1xuXHRcdCctLXdwYmMtYmZiLWZvcm0tYmFja2dyb3VuZCcgICAgICAgICAgOiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Nhbml0aXplX2NvbG9yKCBvcHRpb25zLmJvb2tpbmdfZm9ybV9jdXN0b21fYmFja2dyb3VuZF9jb2xvciwgZGVmYXVsdHMuYm9va2luZ19mb3JtX2N1c3RvbV9iYWNrZ3JvdW5kX2NvbG9yICksXG5cdFx0Jy0td3BiYy1iZmItZm9ybS1ib3JkZXItY29sb3InICAgICAgICA6IHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2FuaXRpemVfY29sb3IoIG9wdGlvbnMuYm9va2luZ19mb3JtX2N1c3RvbV9ib3JkZXJfY29sb3IsIGRlZmF1bHRzLmJvb2tpbmdfZm9ybV9jdXN0b21fYm9yZGVyX2NvbG9yICksXG5cdFx0Jy0td3BiYy1iZmItZm9ybS1ib3JkZXItd2lkdGgnICAgICAgICA6IHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2FuaXRpemVfbGVuZ3RoKCBvcHRpb25zLmJvb2tpbmdfZm9ybV9jdXN0b21fYm9yZGVyX3dpZHRoLCBkZWZhdWx0cy5ib29raW5nX2Zvcm1fY3VzdG9tX2JvcmRlcl93aWR0aCApLFxuXHRcdCctLXdwYmMtYmZiLWZvcm0tYm9yZGVyLXJhZGl1cycgICAgICAgOiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Nhbml0aXplX2xlbmd0aCggb3B0aW9ucy5ib29raW5nX2Zvcm1fY3VzdG9tX2JvcmRlcl9yYWRpdXMsIGRlZmF1bHRzLmJvb2tpbmdfZm9ybV9jdXN0b21fYm9yZGVyX3JhZGl1cyApLFxuXHRcdCctLXdwYmMtYmZiLWZvcm0tcGFkZGluZycgICAgICAgICAgICAgOiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Nhbml0aXplX2xlbmd0aCggb3B0aW9ucy5ib29raW5nX2Zvcm1fY3VzdG9tX3BhZGRpbmdfdmVydGljYWwsIGRlZmF1bHRzLmJvb2tpbmdfZm9ybV9jdXN0b21fcGFkZGluZ192ZXJ0aWNhbCApICsgJyAnICsgd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zYW5pdGl6ZV9sZW5ndGgoIG9wdGlvbnMuYm9va2luZ19mb3JtX2N1c3RvbV9wYWRkaW5nX2hvcml6b250YWwsIGRlZmF1bHRzLmJvb2tpbmdfZm9ybV9jdXN0b21fcGFkZGluZ19ob3Jpem9udGFsICksXG5cdFx0Jy0td3BiYy1iZmItZm9ybS1ib3gtc2hhZG93JyAgICAgICAgICA6ICdyZ2JhKDAsIDAsIDAsIDAuMDUpIDBweCAycHggNnB4IDBweCcsXG5cdFx0Jy0td3BiY19mb3JtLWxhYmVsLWNvbG9yJyAgICAgICAgICAgICA6IHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2FuaXRpemVfY29sb3IoIG9wdGlvbnMuYm9va2luZ19mb3JtX2N1c3RvbV90ZXh0X2NvbG9yLCBkZWZhdWx0cy5ib29raW5nX2Zvcm1fY3VzdG9tX3RleHRfY29sb3IgKSxcblx0XHQnLS13cGJjX2Zvcm0tbGFiZWwtc3VibGFiZWwtY29sb3InICAgIDogd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zYW5pdGl6ZV9jb2xvciggb3B0aW9ucy5ib29raW5nX2Zvcm1fY3VzdG9tX3RleHRfY29sb3IsIGRlZmF1bHRzLmJvb2tpbmdfZm9ybV9jdXN0b21fdGV4dF9jb2xvciApLFxuXHRcdCctLXdwYmNfZm9ybS1sYWJlbC1lcnJvci1jb2xvcicgICAgICAgOiAnI2Q2MzYzNycsXG5cdFx0Jy0td3BiY19mb3JtLWZpZWxkLWJhY2tncm91bmQtY29sb3InICA6IHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2FuaXRpemVfY29sb3IoIG9wdGlvbnMuYm9va2luZ19mb3JtX2N1c3RvbV9maWVsZF9iYWNrZ3JvdW5kX2NvbG9yLCBkZWZhdWx0cy5ib29raW5nX2Zvcm1fY3VzdG9tX2ZpZWxkX2JhY2tncm91bmRfY29sb3IgKSxcblx0XHQnLS13cGJjX2Zvcm0tZmllbGQtbWVudS1jb2xvcicgICAgICAgIDogd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zYW5pdGl6ZV9jb2xvciggb3B0aW9ucy5ib29raW5nX2Zvcm1fY3VzdG9tX2ZpZWxkX2JhY2tncm91bmRfY29sb3IsIGRlZmF1bHRzLmJvb2tpbmdfZm9ybV9jdXN0b21fZmllbGRfYmFja2dyb3VuZF9jb2xvciApLFxuXHRcdCctLXdwYmNfZm9ybS1maWVsZC10ZXh0LWNvbG9yJyAgICAgICAgOiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Nhbml0aXplX2NvbG9yKCBvcHRpb25zLmJvb2tpbmdfZm9ybV9jdXN0b21fZmllbGRfdGV4dF9jb2xvciwgZGVmYXVsdHMuYm9va2luZ19mb3JtX2N1c3RvbV9maWVsZF90ZXh0X2NvbG9yICksXG5cdFx0Jy0td3BiY19mb3JtLWZpZWxkLWJvcmRlci1jb2xvcicgICAgICA6IHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2FuaXRpemVfY29sb3IoIG9wdGlvbnMuYm9va2luZ19mb3JtX2N1c3RvbV9maWVsZF9ib3JkZXJfY29sb3IsIGRlZmF1bHRzLmJvb2tpbmdfZm9ybV9jdXN0b21fZmllbGRfYm9yZGVyX2NvbG9yICksXG5cdFx0Jy0td3BiY19mb3JtLWZpZWxkLWJvcmRlci1jb2xvci1zcGFyZSc6IHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2FuaXRpemVfY29sb3IoIG9wdGlvbnMuYm9va2luZ19mb3JtX2N1c3RvbV9maWVsZF9ib3JkZXJfY29sb3IsIGRlZmF1bHRzLmJvb2tpbmdfZm9ybV9jdXN0b21fZmllbGRfYm9yZGVyX2NvbG9yICksXG5cdFx0Jy0td3BiY19mb3JtLWZpZWxkLWZvY3VzLWJvcmRlci1jb2xvcic6ICcjMDY2YWFiJyxcblx0XHQnLS13cGJjX2Zvcm0tZmllbGQtZm9jdXMtc2hhZG93LWNvbG9yJzogJyMwNjZhYWInLFxuXHRcdCctLXdwYmNfZm9ybS1maWVsZC1kaXNhYmxlZC1jb2xvcicgICAgOiAncmdiYSgwLCAwLCAwLCAwLjIpJyxcblx0XHQnLS13cGJjX2Zvcm0tYnV0dG9uLWJvcmRlci1yYWRpdXMnICAgIDogd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zYW5pdGl6ZV9sZW5ndGgoIG9wdGlvbnMuYm9va2luZ19mb3JtX2N1c3RvbV9idXR0b25fYm9yZGVyX3JhZGl1cywgZGVmYXVsdHMuYm9va2luZ19mb3JtX2N1c3RvbV9idXR0b25fYm9yZGVyX3JhZGl1cyApLFxuXHRcdCctLXdwYmNfZm9ybS1idXR0b24tYm9yZGVyLXN0eWxlJyAgICAgOiAnc29saWQnLFxuXHRcdCctLXdwYmNfZm9ybS1idXR0b24tYm9yZGVyLXNpemUnICAgICAgOiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Nhbml0aXplX2xlbmd0aCggb3B0aW9ucy5ib29raW5nX2Zvcm1fY3VzdG9tX2J1dHRvbl9ib3JkZXJfd2lkdGgsIGRlZmF1bHRzLmJvb2tpbmdfZm9ybV9jdXN0b21fYnV0dG9uX2JvcmRlcl93aWR0aCApLFxuXHRcdCctLXdwYmNfZm9ybS1idXR0b24tYmFja2dyb3VuZC1jb2xvcicgOiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Nhbml0aXplX2NvbG9yKCBvcHRpb25zLmJvb2tpbmdfZm9ybV9jdXN0b21fYnV0dG9uX2JhY2tncm91bmRfY29sb3IsIGRlZmF1bHRzLmJvb2tpbmdfZm9ybV9jdXN0b21fYnV0dG9uX2JhY2tncm91bmRfY29sb3IgKSxcblx0XHQnLS13cGJjX2Zvcm0tYnV0dG9uLWJhY2tncm91bmQtY29sb3ItYWx0Jzogd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zYW5pdGl6ZV9jb2xvciggb3B0aW9ucy5ib29raW5nX2Zvcm1fY3VzdG9tX2J1dHRvbl9iYWNrZ3JvdW5kX2NvbG9yLCBkZWZhdWx0cy5ib29raW5nX2Zvcm1fY3VzdG9tX2J1dHRvbl9iYWNrZ3JvdW5kX2NvbG9yICksXG5cdFx0Jy0td3BiY19mb3JtLWJ1dHRvbi1ib3JkZXItY29sb3InICAgICA6IHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2FuaXRpemVfY29sb3IoIG9wdGlvbnMuYm9va2luZ19mb3JtX2N1c3RvbV9idXR0b25fYm9yZGVyX2NvbG9yLCBkZWZhdWx0cy5ib29raW5nX2Zvcm1fY3VzdG9tX2J1dHRvbl9ib3JkZXJfY29sb3IgKSxcblx0XHQnLS13cGJjX2Zvcm0tYnV0dG9uLXRleHQtY29sb3InICAgICAgIDogd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zYW5pdGl6ZV9jb2xvciggb3B0aW9ucy5ib29raW5nX2Zvcm1fY3VzdG9tX2J1dHRvbl90ZXh0X2NvbG9yLCBkZWZhdWx0cy5ib29raW5nX2Zvcm1fY3VzdG9tX2J1dHRvbl90ZXh0X2NvbG9yICksXG5cdFx0Jy0td3BiY19mb3JtLWJ1dHRvbi10ZXh0LWNvbG9yLWFsdCcgICA6IHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2FuaXRpemVfY29sb3IoIG9wdGlvbnMuYm9va2luZ19mb3JtX2N1c3RvbV9idXR0b25fdGV4dF9jb2xvciwgZGVmYXVsdHMuYm9va2luZ19mb3JtX2N1c3RvbV9idXR0b25fdGV4dF9jb2xvciApLFxuXHRcdCctLXdwYmNfZm9ybS1idXR0b24taG92ZXItYmFja2dyb3VuZC1jb2xvcic6IHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2FuaXRpemVfY29sb3IoIG9wdGlvbnMuYm9va2luZ19mb3JtX2N1c3RvbV9idXR0b25faG92ZXJfYmFja2dyb3VuZF9jb2xvciwgZGVmYXVsdHMuYm9va2luZ19mb3JtX2N1c3RvbV9idXR0b25faG92ZXJfYmFja2dyb3VuZF9jb2xvciApLFxuXHRcdCctLXdwYmNfZm9ybS1idXR0b24taG92ZXItYm9yZGVyLWNvbG9yJzogd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zYW5pdGl6ZV9jb2xvciggb3B0aW9ucy5ib29raW5nX2Zvcm1fY3VzdG9tX2J1dHRvbl9ob3Zlcl9ib3JkZXJfY29sb3IsIGRlZmF1bHRzLmJvb2tpbmdfZm9ybV9jdXN0b21fYnV0dG9uX2hvdmVyX2JvcmRlcl9jb2xvciApLFxuXHRcdCctLXdwYmNfZm9ybS1idXR0b24taG92ZXItdGV4dC1jb2xvcicgOiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Nhbml0aXplX2NvbG9yKCBvcHRpb25zLmJvb2tpbmdfZm9ybV9jdXN0b21fYnV0dG9uX2hvdmVyX3RleHRfY29sb3IsIGRlZmF1bHRzLmJvb2tpbmdfZm9ybV9jdXN0b21fYnV0dG9uX2hvdmVyX3RleHRfY29sb3IgKSxcblx0XHQnLS13cGJjX2Zvcm0tY2hvaWNlLWNoZWNrZWQtYm9yZGVyLWNvbG9yJzogJyMwNjZhYWInLFxuXHRcdCctLXdwYmNfZm9ybS1jaG9pY2UtY2hlY2tlZC1jb2xvcicgICAgOiAnIzA2NmFhYicsXG5cdFx0Jy0td3BiY19mb3JtLWNob2ljZS1mb2N1cy1jb2xvcicgICAgICA6ICcjMDY2YWFiJyxcblx0XHQnLS13cGJjX2Zvcm0tYnV0dG9uLWxpZ2h0LWJhY2tncm91bmQtY29sb3InOiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Nhbml0aXplX2NvbG9yKCBvcHRpb25zLmJvb2tpbmdfZm9ybV9jdXN0b21fc2Vjb25kYXJ5X2J1dHRvbl9iYWNrZ3JvdW5kX2NvbG9yLCBkZWZhdWx0cy5ib29raW5nX2Zvcm1fY3VzdG9tX3NlY29uZGFyeV9idXR0b25fYmFja2dyb3VuZF9jb2xvciApLFxuXHRcdCctLXdwYmNfZm9ybS1idXR0b24tbGlnaHQtYm9yZGVyLWNvbG9yJzogd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zYW5pdGl6ZV9jb2xvciggb3B0aW9ucy5ib29raW5nX2Zvcm1fY3VzdG9tX3NlY29uZGFyeV9idXR0b25fYm9yZGVyX2NvbG9yLCBkZWZhdWx0cy5ib29raW5nX2Zvcm1fY3VzdG9tX3NlY29uZGFyeV9idXR0b25fYm9yZGVyX2NvbG9yICksXG5cdFx0Jy0td3BiY19mb3JtLWJ1dHRvbi1saWdodC1ib3JkZXItc2l6ZSc6IHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2FuaXRpemVfbGVuZ3RoKCBvcHRpb25zLmJvb2tpbmdfZm9ybV9jdXN0b21fYnV0dG9uX2JvcmRlcl93aWR0aCwgZGVmYXVsdHMuYm9va2luZ19mb3JtX2N1c3RvbV9idXR0b25fYm9yZGVyX3dpZHRoICksXG5cdFx0Jy0td3BiY19mb3JtLWJ1dHRvbi1saWdodC10ZXh0LWNvbG9yJyA6IHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2FuaXRpemVfY29sb3IoIG9wdGlvbnMuYm9va2luZ19mb3JtX2N1c3RvbV9zZWNvbmRhcnlfYnV0dG9uX3RleHRfY29sb3IsIGRlZmF1bHRzLmJvb2tpbmdfZm9ybV9jdXN0b21fc2Vjb25kYXJ5X2J1dHRvbl90ZXh0X2NvbG9yICksXG5cdFx0Jy0td3BiY19mb3JtLWJ1dHRvbi1saWdodC1ib3gtc2hhZG93JyA6ICcwIDJweCAxMHB4IDJweCAjZmZmZmZmNTQnLFxuXHRcdCctLXdwYmNfZm9ybS1idXR0b24tbGlnaHQtaG92ZXItYmFja2dyb3VuZC1jb2xvcic6IHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2FuaXRpemVfY29sb3IoIG9wdGlvbnMuYm9va2luZ19mb3JtX2N1c3RvbV9zZWNvbmRhcnlfYnV0dG9uX2hvdmVyX2JhY2tncm91bmRfY29sb3IsIGRlZmF1bHRzLmJvb2tpbmdfZm9ybV9jdXN0b21fc2Vjb25kYXJ5X2J1dHRvbl9ob3Zlcl9iYWNrZ3JvdW5kX2NvbG9yICksXG5cdFx0Jy0td3BiY19mb3JtLWJ1dHRvbi1saWdodC1ob3Zlci1ib3JkZXItY29sb3InOiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Nhbml0aXplX2NvbG9yKCBvcHRpb25zLmJvb2tpbmdfZm9ybV9jdXN0b21fc2Vjb25kYXJ5X2J1dHRvbl9ob3Zlcl9ib3JkZXJfY29sb3IsIGRlZmF1bHRzLmJvb2tpbmdfZm9ybV9jdXN0b21fc2Vjb25kYXJ5X2J1dHRvbl9ob3Zlcl9ib3JkZXJfY29sb3IgKSxcblx0XHQnLS13cGJjX2Zvcm0tYnV0dG9uLWxpZ2h0LWhvdmVyLXRleHQtY29sb3InOiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Nhbml0aXplX2NvbG9yKCBvcHRpb25zLmJvb2tpbmdfZm9ybV9jdXN0b21fc2Vjb25kYXJ5X2J1dHRvbl9ob3Zlcl90ZXh0X2NvbG9yLCBkZWZhdWx0cy5ib29raW5nX2Zvcm1fY3VzdG9tX3NlY29uZGFyeV9idXR0b25faG92ZXJfdGV4dF9jb2xvciApLFxuXHRcdCctLXdwYmNfZm9ybS1idXR0b24tbGlnaHQtaG92ZXItYm94LXNoYWRvdyc6ICcwIDJweCAxMHB4IDJweCAjZmZmZmZmNTQnLFxuXHRcdCctLXdwYmNfZm9ybS1idXR0b24tcHJpbWFyeS1ob3Zlci1ib3JkZXItY29sb3InOiB3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3Nhbml0aXplX2NvbG9yKCBvcHRpb25zLmJvb2tpbmdfZm9ybV9jdXN0b21fYnV0dG9uX2hvdmVyX2JvcmRlcl9jb2xvciwgZGVmYXVsdHMuYm9va2luZ19mb3JtX2N1c3RvbV9idXR0b25faG92ZXJfYm9yZGVyX2NvbG9yICksXG5cdFx0Jy0td3BiY19mb3JtLXBhZ2UtYnJlYWstY29sb3InICAgICAgICA6ICcjMDY2YWFiJ1xuXHR9O1xuXG5cdHJldHVybiB3cGJjX2JmYl9nbG9iYWxfZm9ybV9zdHlsZV9fYXBwbHlfYWNjZW50KCBjc3NfdmFycywgb3B0aW9ucywgdHJ1ZSApO1xufVxuXG5mdW5jdGlvbiB3cGJjX2JmYl9nbG9iYWxfZm9ybV9zdHlsZV9fZ2V0X2Nzc192YXJfa2V5cyhvcHRpb25zKSB7XG5cdGNvbnN0IHZhcnMgPSB3cGJjX2JmYl9nbG9iYWxfZm9ybV9zdHlsZV9fZ2V0X3ZhcnMoKTtcblx0Y29uc3QgbG9jYWxpemVkID0gQXJyYXkuaXNBcnJheSggdmFycy5mb3JtX3N0eWxlX2Nzc192YXJfbmFtZXMgKSA/IHZhcnMuZm9ybV9zdHlsZV9jc3NfdmFyX25hbWVzIDogW107XG5cdGNvbnN0IGtleXMgPSBbXTtcblx0Y29uc3QgcHJlc2V0cyA9IHdwYmNfYmZiX2dsb2JhbF9mb3JtX3N0eWxlX19nZXRfcHJlc2V0cygpO1xuXG5cdGlmICggbG9jYWxpemVkLmxlbmd0aCApIHtcblx0XHRyZXR1cm4gbG9jYWxpemVkO1xuXHR9XG5cblx0T2JqZWN0LmtleXMoIHByZXNldHMgKS5mb3JFYWNoKCBmdW5jdGlvbiAocHJlc2V0X2tleSkge1xuXHRcdGNvbnN0IHByZXNldCA9IHByZXNldHNbcHJlc2V0X2tleV0gfHwge307XG5cdFx0Y29uc3QgY3NzX3ZhcnMgPSBwcmVzZXQuY3NzX3ZhcnMgJiYgdHlwZW9mIHByZXNldC5jc3NfdmFycyA9PT0gJ29iamVjdCcgPyBwcmVzZXQuY3NzX3ZhcnMgOiB7fTtcblxuXHRcdE9iamVjdC5rZXlzKCBjc3NfdmFycyApLmZvckVhY2goIGZ1bmN0aW9uICh2YXJfbmFtZSkge1xuXHRcdFx0aWYgKCBrZXlzLmluZGV4T2YoIHZhcl9uYW1lICkgPT09IC0xICkge1xuXHRcdFx0XHRrZXlzLnB1c2goIHZhcl9uYW1lICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXHR9ICk7XG5cblx0T2JqZWN0LmtleXMoIHdwYmNfYmZiX2dsb2JhbF9mb3JtX3N0eWxlX19yZXNvbHZlX2Nzc192YXJzKCBPYmplY3QuYXNzaWduKCB7fSwgb3B0aW9ucyB8fCB7fSwgeyBib29raW5nX2Zvcm1fc3R5bGU6ICdjdXN0b20nIH0gKSApICkuZm9yRWFjaCggZnVuY3Rpb24gKHZhcl9uYW1lKSB7XG5cdFx0aWYgKCBrZXlzLmluZGV4T2YoIHZhcl9uYW1lICkgPT09IC0xICkge1xuXHRcdFx0a2V5cy5wdXNoKCB2YXJfbmFtZSApO1xuXHRcdH1cblx0fSApO1xuXG5cdHJldHVybiBrZXlzO1xufVxuXG5mdW5jdGlvbiB3cGJjX2JmYl9nbG9iYWxfZm9ybV9zdHlsZV9fc3luY19jb250cm9scyhvcHRpb25zKSB7XG5cdGNvbnN0IGlzX2N1c3RvbSA9ICdjdXN0b20nID09PSBTdHJpbmcoIG9wdGlvbnMgJiYgb3B0aW9ucy5ib29raW5nX2Zvcm1fc3R5bGUgPyBvcHRpb25zLmJvb2tpbmdfZm9ybV9zdHlsZSA6ICcnICk7XG5cdGNvbnN0IGFjY2VudF9lbmFibGVkID0gJ09uJyA9PT0gU3RyaW5nKCBvcHRpb25zICYmIG9wdGlvbnMuYm9va2luZ19mb3JtX2FjY2VudF9lbmFibGVkID8gb3B0aW9ucy5ib29raW5nX2Zvcm1fYWNjZW50X2VuYWJsZWQgOiAnT2ZmJyApO1xuXHRjb25zdCByZXNldF9yb3cgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCAnW2RhdGEtd3BiYy1iZmItY3VzdG9tLWFwcGVhcmFuY2UtcmVzZXQtcm93XScgKTtcblxuXHR3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3NldF9yYWRpb19jb250cm9sKCAnYm9va2luZ19mb3JtX3N0eWxlJywgb3B0aW9ucy5ib29raW5nX2Zvcm1fc3R5bGUgfHwgJ2xpZ2h0X2JvcmRlcmVkJyApO1xuXG5cdGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoICcud3BiY19iZmJfX2Zvcm1fc2V0dGluZ19nbG9iYWxfY3VzdG9tX3N0eWxlJyApLmZvckVhY2goIGZ1bmN0aW9uIChyb3cpIHtcblx0XHRyb3cuaGlkZGVuID0gISBpc19jdXN0b207XG5cdFx0cm93LnNldEF0dHJpYnV0ZSggJ2FyaWEtaGlkZGVuJywgaXNfY3VzdG9tID8gJ2ZhbHNlJyA6ICd0cnVlJyApO1xuXHRcdHJvdy5jbGFzc0xpc3QudG9nZ2xlKCAnaXMtaGlkZGVuJywgISBpc19jdXN0b20gKTtcblx0fSApO1xuXG5cdGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoICcud3BiY19iZmJfX2Zvcm1fc2V0dGluZ19nbG9iYWxfYWNjZW50X2RlcGVuZGVudCcgKS5mb3JFYWNoKCBmdW5jdGlvbiAocm93KSB7XG5cdFx0cm93LmhpZGRlbiA9ICEgYWNjZW50X2VuYWJsZWQ7XG5cdFx0cm93LnNldEF0dHJpYnV0ZSggJ2FyaWEtaGlkZGVuJywgYWNjZW50X2VuYWJsZWQgPyAnZmFsc2UnIDogJ3RydWUnICk7XG5cdFx0cm93LmNsYXNzTGlzdC50b2dnbGUoICdpcy1oaWRkZW4nLCAhIGFjY2VudF9lbmFibGVkICk7XG5cdH0gKTtcblxuXHRpZiAoIHJlc2V0X3JvdyApIHtcblx0XHRyZXNldF9yb3cuaGlkZGVuID0gISBpc19jdXN0b207XG5cdFx0cmVzZXRfcm93LnNldEF0dHJpYnV0ZSggJ2FyaWEtaGlkZGVuJywgaXNfY3VzdG9tID8gJ2ZhbHNlJyA6ICd0cnVlJyApO1xuXHRcdHJlc2V0X3Jvdy5jbGFzc0xpc3QudG9nZ2xlKCAnaXMtaGlkZGVuJywgISBpc19jdXN0b20gKTtcblx0fVxufVxuXG5mdW5jdGlvbiB3cGJjX2JmYl9nbG9iYWxfZm9ybV9zdHlsZV9fYXBwbHkodmFsdWUsIGN0eCkge1xuXHRjb25zdCBvcHRpb25zID0gd3BiY19iZmJfZ2xvYmFsX2Zvcm1fc3R5bGVfX2dldF9jdXJyZW50X29wdGlvbnMoIGN0eCwgY3R4ICYmIGN0eC5rZXksIHZhbHVlICk7XG5cdGNvbnN0IHN0eWxlID0gU3RyaW5nKCBvcHRpb25zLmJvb2tpbmdfZm9ybV9zdHlsZSB8fCAnbGlnaHRfYm9yZGVyZWQnICk7XG5cdGNvbnN0IHByZXNldHMgPSB3cGJjX2JmYl9nbG9iYWxfZm9ybV9zdHlsZV9fZ2V0X3ByZXNldHMoKTtcblx0Y29uc3QgcHJlc2V0ID0gcHJlc2V0c1tzdHlsZV0gfHwgcHJlc2V0cy5saWdodF9ib3JkZXJlZCB8fCB7fTtcblx0Y29uc3QgY3NzX3ZhcnMgPSB3cGJjX2JmYl9nbG9iYWxfZm9ybV9zdHlsZV9fcmVzb2x2ZV9jc3NfdmFycyggb3B0aW9ucyApO1xuXHQvLyBGb3JtIFN0eWxlIGlzIGdsb2JhbC4gQWx3YXlzIHN0YXJ0IGF0IHRoZSBjb21wbGV0ZSBCdWlsZGVyIHRoZW1lIHNjb3BlIHNvXG5cdC8vIGlubGluZSBDdXN0b20gdG9rZW5zIG9uIGFuIG91dGVyIHdyYXBwZXIgY2Fubm90IGxlYWsgaW50byBhIHByZXNldCB3aGVuIGFcblx0Ly8gZmllbGQtbGV2ZWwgdXBkYXRlIHByb3ZpZGVzIG9ubHkgdGhlIGlubmVyIGNhbnZhcyBpbiBjdHguY2FudmFzLlxuXHRjb25zdCByb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoICd3cGJjX2JmYl9fdGhlbWVfc2NvcGUnICkgfHwgKCBjdHggJiYgY3R4LmNhbnZhcyApIHx8IGRvY3VtZW50O1xuXHRjb25zdCB0aGVtZV9jbGFzc2VzID0gW107XG5cdGNvbnN0IGNzc192YXJfa2V5cyA9IHdwYmNfYmZiX2dsb2JhbF9mb3JtX3N0eWxlX19nZXRfY3NzX3Zhcl9rZXlzKCBvcHRpb25zICk7XG5cblx0d3BiY19iZmJfZ2xvYmFsX2Zvcm1fc3R5bGVfX3N5bmNfY29udHJvbHMoIG9wdGlvbnMgKTtcblxuXHRPYmplY3Qua2V5cyggcHJlc2V0cyApLmZvckVhY2goIGZ1bmN0aW9uIChwcmVzZXRfa2V5KSB7XG5cdFx0Y29uc3QgY2xhc3NfbmFtZSA9IHByZXNldHNbcHJlc2V0X2tleV0gJiYgcHJlc2V0c1twcmVzZXRfa2V5XS50aGVtZV9jbGFzcyA/IFN0cmluZyggcHJlc2V0c1twcmVzZXRfa2V5XS50aGVtZV9jbGFzcyApIDogJyc7XG5cdFx0aWYgKCBjbGFzc19uYW1lICYmIHRoZW1lX2NsYXNzZXMuaW5kZXhPZiggY2xhc3NfbmFtZSApID09PSAtMSApIHtcblx0XHRcdHRoZW1lX2NsYXNzZXMucHVzaCggY2xhc3NfbmFtZSApO1xuXHRcdH1cblx0fSApO1xuXG5cdGlmICggISByb290IHx8ICEgcm9vdC5xdWVyeVNlbGVjdG9yQWxsICkge1xuXHRcdHJldHVybjtcblx0fVxuXG5cdGNvbnN0IHNlbGVjdG9yID0gJy53cGJjX2NvbnRhaW5lci53cGJjX2Zvcm0sIC53cGJjX2JmYl9mb3JtLCAud3BiY19iZmJfX3BhZ2VzX3BhbmVsLCAud3BiY19iZmJfX2Zvcm1fcHJldmlld19zZWN0aW9uX2NvbnRhaW5lcic7XG5cdGNvbnN0IHdyYXBzID0gW107XG5cdGlmICggcm9vdC5tYXRjaGVzICYmIHJvb3QubWF0Y2hlcyggc2VsZWN0b3IgKSApIHtcblx0XHR3cmFwcy5wdXNoKCByb290ICk7XG5cdH1cblx0cm9vdC5xdWVyeVNlbGVjdG9yQWxsKCBzZWxlY3RvciApLmZvckVhY2goIGZ1bmN0aW9uICh3cmFwKSB7XG5cdFx0d3JhcHMucHVzaCggd3JhcCApO1xuXHR9ICk7XG5cblx0d3JhcHMuZm9yRWFjaCggZnVuY3Rpb24gKHdyYXApIHtcblx0XHRpZiAoICEgd3JhcCB8fCAhIHdyYXAuc3R5bGUgKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdHRoZW1lX2NsYXNzZXMuZm9yRWFjaCggZnVuY3Rpb24gKGNsYXNzX25hbWUpIHtcblx0XHRcdHdyYXAuY2xhc3NMaXN0LnJlbW92ZSggY2xhc3NfbmFtZSApO1xuXHRcdH0gKTtcblx0XHRpZiAoIHByZXNldC50aGVtZV9jbGFzcyApIHtcblx0XHRcdHdyYXAuY2xhc3NMaXN0LmFkZCggU3RyaW5nKCBwcmVzZXQudGhlbWVfY2xhc3MgKSApO1xuXHRcdH1cblx0XHR3cmFwLmNsYXNzTGlzdC50b2dnbGUoICd3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfY3VzdG9tJywgJ2N1c3RvbScgPT09IHN0eWxlICk7XG5cblx0XHRjc3NfdmFyX2tleXMuZm9yRWFjaCggZnVuY3Rpb24gKGNzc19rZXkpIHtcblx0XHRcdHdyYXAuc3R5bGUucmVtb3ZlUHJvcGVydHkoIGNzc19rZXkgKTtcblx0XHR9ICk7XG5cdFx0T2JqZWN0LmtleXMoIGNzc192YXJzICkuZm9yRWFjaCggZnVuY3Rpb24gKGNzc19rZXkpIHtcblx0XHRcdHdyYXAuc3R5bGUuc2V0UHJvcGVydHkoIGNzc19rZXksIGNzc192YXJzW2Nzc19rZXldICk7XG5cdFx0fSApO1xuXHR9ICk7XG59XG5cbltcblx0J2Jvb2tpbmdfZm9ybV9zdHlsZScsXG5cdCdib29raW5nX2Zvcm1fYWNjZW50X2VuYWJsZWQnLFxuXHQnYm9va2luZ19mb3JtX2FjY2VudF9jb2xvcicsXG5cdCdib29raW5nX2Zvcm1fY3VzdG9tX2JhY2tncm91bmRfY29sb3InLFxuXHQnYm9va2luZ19mb3JtX2N1c3RvbV9ib3JkZXJfY29sb3InLFxuXHQnYm9va2luZ19mb3JtX2N1c3RvbV9ib3JkZXJfd2lkdGgnLFxuXHQnYm9va2luZ19mb3JtX2N1c3RvbV9ib3JkZXJfcmFkaXVzJyxcblx0J2Jvb2tpbmdfZm9ybV9jdXN0b21fcGFkZGluZ192ZXJ0aWNhbCcsXG5cdCdib29raW5nX2Zvcm1fY3VzdG9tX3BhZGRpbmdfaG9yaXpvbnRhbCcsXG5cdCdib29raW5nX2Zvcm1fY3VzdG9tX3RleHRfY29sb3InLFxuXHQnYm9va2luZ19mb3JtX2N1c3RvbV9maWVsZF9iYWNrZ3JvdW5kX2NvbG9yJyxcblx0J2Jvb2tpbmdfZm9ybV9jdXN0b21fZmllbGRfdGV4dF9jb2xvcicsXG5cdCdib29raW5nX2Zvcm1fY3VzdG9tX2ZpZWxkX2JvcmRlcl9jb2xvcicsXG5cdCdib29raW5nX2Zvcm1fY3VzdG9tX2J1dHRvbl9iYWNrZ3JvdW5kX2NvbG9yJyxcblx0J2Jvb2tpbmdfZm9ybV9jdXN0b21fYnV0dG9uX3RleHRfY29sb3InLFxuXHQnYm9va2luZ19mb3JtX2N1c3RvbV9idXR0b25fYm9yZGVyX2NvbG9yJyxcblx0J2Jvb2tpbmdfZm9ybV9jdXN0b21fYnV0dG9uX2hvdmVyX2JhY2tncm91bmRfY29sb3InLFxuXHQnYm9va2luZ19mb3JtX2N1c3RvbV9idXR0b25faG92ZXJfdGV4dF9jb2xvcicsXG5cdCdib29raW5nX2Zvcm1fY3VzdG9tX2J1dHRvbl9ob3Zlcl9ib3JkZXJfY29sb3InLFxuXHQnYm9va2luZ19mb3JtX2N1c3RvbV9zZWNvbmRhcnlfYnV0dG9uX2JhY2tncm91bmRfY29sb3InLFxuXHQnYm9va2luZ19mb3JtX2N1c3RvbV9zZWNvbmRhcnlfYnV0dG9uX3RleHRfY29sb3InLFxuXHQnYm9va2luZ19mb3JtX2N1c3RvbV9zZWNvbmRhcnlfYnV0dG9uX2JvcmRlcl9jb2xvcicsXG5cdCdib29raW5nX2Zvcm1fY3VzdG9tX3NlY29uZGFyeV9idXR0b25faG92ZXJfYmFja2dyb3VuZF9jb2xvcicsXG5cdCdib29raW5nX2Zvcm1fY3VzdG9tX3NlY29uZGFyeV9idXR0b25faG92ZXJfdGV4dF9jb2xvcicsXG5cdCdib29raW5nX2Zvcm1fY3VzdG9tX3NlY29uZGFyeV9idXR0b25faG92ZXJfYm9yZGVyX2NvbG9yJyxcblx0J2Jvb2tpbmdfZm9ybV9jdXN0b21fYnV0dG9uX2JvcmRlcl93aWR0aCcsXG5cdCdib29raW5nX2Zvcm1fY3VzdG9tX2J1dHRvbl9ib3JkZXJfcmFkaXVzJ1xuXS5mb3JFYWNoKCBmdW5jdGlvbiAoa2V5KSB7XG5cdFdQQkNfQkZCX1NldHRpbmdzX0VmZmVjdHMucmVnaXN0ZXIoIGtleSwgZnVuY3Rpb24gKHZhbHVlLCBjdHgpIHtcblx0XHR3cGJjX2JmYl9nbG9iYWxfZm9ybV9zdHlsZV9fYXBwbHkoIHZhbHVlLCBPYmplY3QuYXNzaWduKCB7fSwgY3R4IHx8IHt9LCB7IGtleToga2V5IH0gKSApO1xuXHR9ICk7XG59ICk7XG5cbmZ1bmN0aW9uIHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc3luY19jdXN0b21fY29udHJvbHNfZnJvbV91aSgpIHtcblx0Y29uc3Qgb3B0aW9ucyA9IHdwYmNfYmZiX2dsb2JhbF9mb3JtX3N0eWxlX19nZXRfY3VycmVudF9vcHRpb25zKCk7XG5cdHdwYmNfYmZiX2dsb2JhbF9mb3JtX3N0eWxlX19zeW5jX2NvbnRyb2xzKCBvcHRpb25zICk7XG5cdHdwYmNfYmZiX2dsb2JhbF9mb3JtX3N0eWxlX19hcHBseSggbnVsbCwgeyBzb3VyY2U6ICdzeW5jLWdsb2JhbC1zdHlsZScgfSApO1xufVxuXG53cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX3N5bmNfY3VzdG9tX2NvbnRyb2xzX2Zyb21fdWkoKTtcbmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoICdET01Db250ZW50TG9hZGVkJywgd3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zeW5jX2N1c3RvbV9jb250cm9sc19mcm9tX3VpICk7XG5cblxuLy8gQk9PS0lOR19GT1JNX1RIRU1FLlxuV1BCQ19CRkJfU2V0dGluZ3NfRWZmZWN0cy5yZWdpc3RlciggJ2Jvb2tpbmdfZm9ybV90aGVtZScsIGZ1bmN0aW9uICh2YWx1ZSwgY3R4KSB7XG5cdGNvbnN0IHJvb3QgPSAoY3R4ICYmIGN0eC5jYW52YXMpIHx8IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCAnd3BiY19iZmJfX3RoZW1lX3Njb3BlJyApIHx8IGRvY3VtZW50O1xuXHRpZiAoICEgcm9vdCB8fCAhIHJvb3QucXVlcnlTZWxlY3RvckFsbCApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRpZiAoIHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9faXNfdXNlcl90aGVtZV9zd2l0Y2goIGN0eCApICkge1xuXHRcdGNvbnN0IGN1cnJlbnRfb3B0aW9ucyA9IHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fZ2V0X2N1cnJlbnRfb3B0aW9ucygpO1xuXHRcdGlmICggJ2N1c3RvbScgPT09IFN0cmluZyggY3VycmVudF9vcHRpb25zLmJvb2tpbmdfZm9ybV9jb250YWluZXJfc3R5bGUgfHwgJycgKSApIHtcblx0XHRcdGN1cnJlbnRfb3B0aW9ucy5ib29raW5nX2Zvcm1fdGhlbWUgPSB2YWx1ZTtcblx0XHRcdHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc3luY19mb3JtX3N0eWxlX2NvbnRyb2woIGN1cnJlbnRfb3B0aW9ucyApO1xuXHRcdFx0d3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19hcHBseV92YXJzKCAnY3VzdG9tJywgT2JqZWN0LmFzc2lnbigge30sIGN0eCB8fCB7fSwge1xuXHRcdFx0XHRrZXkgICAgOiAnYm9va2luZ19mb3JtX2NvbnRhaW5lcl9zdHlsZScsXG5cdFx0XHRcdHNvdXJjZSA6ICd0aGVtZS1iYXNlLWN1c3RvbScsXG5cdFx0XHRcdG9wdGlvbnM6IGN1cnJlbnRfb3B0aW9uc1xuXHRcdFx0fSApICk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHdwYmNfYmZiX2Zvcm1fYXBwZWFyYW5jZV9fc2V0X2NvbnRhaW5lcl9zdHlsZV9jb250cm9sKCAnYm9yZGVyZWQnICk7XG5cdFx0XHR3cGJjX2JmYl9mb3JtX2FwcGVhcmFuY2VfX2FwcGx5X3ZhcnMoICdib3JkZXJlZCcsIE9iamVjdC5hc3NpZ24oIHt9LCBjdHggfHwge30sIHsga2V5OiAnYm9va2luZ19mb3JtX2NvbnRhaW5lcl9zdHlsZScgfSApICk7XG5cdFx0fVxuXHR9IGVsc2UgaWYgKCBjdHggJiYgY3R4Lm9wdGlvbnMgKSB7XG5cdFx0d3BiY19iZmJfZm9ybV9hcHBlYXJhbmNlX19zeW5jX2Zvcm1fc3R5bGVfY29udHJvbCggY3R4Lm9wdGlvbnMgKTtcblx0fVxuXG5cdGNvbnN0IHRoZW1lX3NlbGVjdG9yID0gJy53cGJjX2NvbnRhaW5lci53cGJjX2Zvcm0sIC53cGJjX2JmYl9mb3JtLCAud3BiY19iZmJfX3BhZ2VzX3BhbmVsJztcblx0Y29uc3Qgd3JhcHMgPSBbXTtcblx0aWYgKCByb290Lm1hdGNoZXMgJiYgcm9vdC5tYXRjaGVzKCB0aGVtZV9zZWxlY3RvciApICkge1xuXHRcdHdyYXBzLnB1c2goIHJvb3QgKTtcblx0fVxuXHRyb290LnF1ZXJ5U2VsZWN0b3JBbGwoIHRoZW1lX3NlbGVjdG9yICkuZm9yRWFjaCggZnVuY3Rpb24gKHdyYXApIHtcblx0XHR3cmFwcy5wdXNoKCB3cmFwICk7XG5cdH0gKTtcblx0aWYgKCAhIHdyYXBzLmxlbmd0aCApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHR3cmFwcy5mb3JFYWNoKCBmdW5jdGlvbiAod3JhcCkge1xuXHRcdC8vIHJlbW92ZSBhbnkgcHJldmlvdXMgdGhlbWUgY2xhc3NlcyAoc2ltcGxlICsgZnV0dXJlLXByb29mKS5cblx0XHRBcnJheS5mcm9tKCB3cmFwLmNsYXNzTGlzdCApLmZvckVhY2goIGZ1bmN0aW9uIChjbHMpIHtcblx0XHRcdGlmICggL153cGJjX3RoZW1lXy8udGVzdCggY2xzICkgKSB7XG5cdFx0XHRcdHdyYXAuY2xhc3NMaXN0LnJlbW92ZSggY2xzICk7XG5cdFx0XHR9XG5cdFx0fSApO1xuXG5cdFx0aWYgKCB2YWx1ZSApIHtcblx0XHRcdHdyYXAuY2xhc3NMaXN0LmFkZCggU3RyaW5nKCB2YWx1ZSApICk7XG5cdFx0fVxuXHR9ICk7XG59ICk7XG5cblxuLy8gQk9PS0lOR19GT1JNX0xBWU9VVF9XSURUSCDigJQgRm9ybSB3aWR0aDogYXBwbGllcyBjb21iaW5lZCBcIjEwMCVcIiAvIFwiNjAwcHhcIiAvIFwiNDByZW1cIiB0byB0aGUgYm9va2luZyBmb3JtIGNvbnRhaW5lcnMuXG5XUEJDX0JGQl9TZXR0aW5nc19FZmZlY3RzLnJlZ2lzdGVyKCAnYm9va2luZ19mb3JtX2xheW91dF93aWR0aCcsIGZ1bmN0aW9uICh2YWx1ZSwgY3R4KSB7XG5cdGNvbnN0IHJvb3QgPSBjdHggJiYgY3R4LmNhbnZhcztcblx0aWYgKCAhIHJvb3QgfHwgISByb290LnF1ZXJ5U2VsZWN0b3JBbGwgKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Y29uc3Qgd3JhcHMgPSByb290LnF1ZXJ5U2VsZWN0b3JBbGwoICcud3BiY19iZmJfX2Zvcm1fcHJldmlld19zZWN0aW9uX2NvbnRhaW5lcicgKTtcblx0aWYgKCAhIHdyYXBzLmxlbmd0aCApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRjb25zdCB2ID0gU3RyaW5nKCB2YWx1ZSA9PSBudWxsID8gJycgOiB2YWx1ZSApLnRyaW0oKTtcblxuXHQvLyBhbGxvdyBvbmx5IFwibnVtYmVyICsgdW5pdFwiLlxuXHRpZiAoIHYgJiYgISAvXlxcZCsoPzpcXC5cXGQrKT8oPzolfHB4fHJlbXxlbXx2d3x2aCkkLy50ZXN0KCB2ICkgKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0d3JhcHMuZm9yRWFjaChcblx0XHRmdW5jdGlvbiAod3JhcCkge1xuXHRcdFx0aWYgKCAhIHdyYXAgfHwgISB3cmFwLnN0eWxlICkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGlmICggISB2ICkge1xuXHRcdFx0XHR3cmFwLnN0eWxlLnJlbW92ZVByb3BlcnR5KCAnLS13cGJjLWJmYi1ib29raW5nX2Zvcm1fbGF5b3V0X3dpZHRoJyApO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0d3JhcC5zdHlsZS5zZXRQcm9wZXJ0eSggJy0td3BiYy1iZmItYm9va2luZ19mb3JtX2xheW91dF93aWR0aCcsIHYgKTtcblx0XHRcdH1cblx0XHR9XG5cdCk7XG59ICk7XG5cblxuLy8gRGVidWcgUHJldmlldyBNb2RlLlxuV1BCQ19CRkJfU2V0dGluZ3NfRWZmZWN0cy5yZWdpc3RlciggJ2Jvb2tpbmdfYmZiX3ByZXZpZXdfbW9kZScsIGZ1bmN0aW9uICh2YWx1ZSwgY3R4KSB7XG5cdGNvbnN0IHJvb3QgPSBjdHguY2FudmFzO1xuXHRpZiAoICEgcm9vdCB8fCAhIHJvb3QucXVlcnlTZWxlY3RvckFsbCApIHtcblx0XHRyZXR1cm47XG5cdH1cblxuXHRjb25zdCB3cmFwcyA9IHJvb3QucXVlcnlTZWxlY3RvckFsbCggJy53cGJjX2NvbnRhaW5lci53cGJjX2Zvcm0nICk7XG5cdGlmICggISB3cmFwcy5sZW5ndGggKSB7XG5cdFx0cmV0dXJuO1xuXHR9XG5cblx0Ly8gR2V0IGJ1aWxkZXIgYXN5bmMuXG5cdHdwYmNfYmZiX2FwaS53aXRoX2J1aWxkZXIoXG5cdFx0ZnVuY3Rpb24gKEJ1aWxkZXIpIHtcblxuXHRcdFx0LyoqXG5cdFx0XHQgKiBDYXB0dXJlIGFjdGl2ZSByaWdodCBzaWRlYmFyIHRhYiBhbmQgcmV0dXJuIHJlc3RvcmUgaGFuZGxlLlxuXHRcdFx0ICpcblx0XHRcdCAqIEByZXR1cm4ge3tyZXN0b3JlOmZ1bmN0aW9uKCk6dm9pZH18bnVsbH1cblx0XHRcdCAqL1xuXHRcdFx0ZnVuY3Rpb24gY2FwdHVyZV9yaWdodF9zaWRlYmFyX2FjdGl2ZV90YWJfcmVzdG9yZV9oYW5kbGUoKSB7XG5cblx0XHRcdFx0dmFyIHRhYmxpc3RfZWwgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCAnLndwYmNfYmZiX19yaWdodGJhcl90YWJzW3JvbGU9XCJ0YWJsaXN0XCJdJyApO1xuXHRcdFx0XHRpZiAoICEgdGFibGlzdF9lbCApIHtcblx0XHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHZhciBhY3RpdmVfdGFiX2VsID0gdGFibGlzdF9lbC5xdWVyeVNlbGVjdG9yKCAnW3JvbGU9XCJ0YWJcIl1bYXJpYS1zZWxlY3RlZD1cInRydWVcIl0nICk7XG5cblx0XHRcdFx0aWYgKCAhIGFjdGl2ZV90YWJfZWwgKSB7XG5cdFx0XHRcdFx0YWN0aXZlX3RhYl9lbCA9IHRhYmxpc3RfZWwucXVlcnlTZWxlY3RvciggJ1tyb2xlPVwidGFiXCJdW2FyaWEtY29udHJvbHM9XCJ3cGJjX2JmYl9fcGFsZXR0ZV9hZGRfbmV3XCJdJyApO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCAhIGFjdGl2ZV90YWJfZWwgfHwgdHlwZW9mIGFjdGl2ZV90YWJfZWwuY2xpY2sgIT09ICdmdW5jdGlvbicgKSB7XG5cdFx0XHRcdFx0cmV0dXJuIG51bGw7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRcdHJlc3RvcmU6IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0XHRcdHRyeSB7IGFjdGl2ZV90YWJfZWwuY2xpY2soKTsgfSBjYXRjaCAoIF9lICkge31cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH07XG5cdFx0XHR9XG5cblx0XHRcdHZhciB0YWJfcmVzdG9yZV9oYW5kbGUgPSBjYXB0dXJlX3JpZ2h0X3NpZGViYXJfYWN0aXZlX3RhYl9yZXN0b3JlX2hhbmRsZSgpO1xuXG5cdFx0XHRsZXQgcmVzdG9yZWQgID0gZmFsc2U7XG5cdFx0XHR2YXIgRVZTICAgICAgPSB3aW5kb3cuV1BCQ19CRkJfQ29yZSAmJiB3aW5kb3cuV1BCQ19CRkJfQ29yZS5XUEJDX0JGQl9FdmVudHMgPyB3aW5kb3cuV1BCQ19CRkJfQ29yZS5XUEJDX0JGQl9FdmVudHMgOiB7fTtcblx0XHRcdHZhciBFVl9ET05FICA9IEVWUy5TVFJVQ1RVUkVfTE9BREVEIHx8IEVWUy5DQU5WQVNfUkVGUkVTSEVEIHx8ICd3cGJjOmJmYjpzdHJ1Y3R1cmUtbG9hZGVkJztcblxuXG5cdFx0XHRmdW5jdGlvbiBkb19yZXN0b3JlKCkge1xuXHRcdFx0XHRpZiAoIHJlc3RvcmVkICkgeyByZXR1cm47IH1cblx0XHRcdFx0cmVzdG9yZWQgPSB0cnVlO1xuXHRcdFx0XHR0cnkgeyBCdWlsZGVyPy5idXM/Lm9mZj8uKCBFVl9ET05FLCBkb19yZXN0b3JlICk7IH0gY2F0Y2ggKCBfICkge31cblx0XHRcdFx0cmVxdWVzdEFuaW1hdGlvbkZyYW1lKCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRcdFx0aWYgKCAhIHRhYl9yZXN0b3JlX2hhbmRsZSApIHsgcmV0dXJuOyB9XG5cdFx0XHRcdFx0dGFiX3Jlc3RvcmVfaGFuZGxlLnJlc3RvcmUoKTtcblx0XHRcdFx0fSApO1xuXHRcdFx0fVxuXG5cdFx0XHQvLyBMaXN0ZW4gb25jZSAoYmVzdCksIHBsdXMgYSBmYWxsYmFjayBpbiBjYXNlIGV2ZW50IGlzbid0IGZpcmVkLlxuXHRcdFx0dHJ5IHsgQnVpbGRlcj8uYnVzPy5vbj8uKCBFVl9ET05FLCBkb19yZXN0b3JlICk7IH0gY2F0Y2ggKCBfICkge31cblxuXG5cdFx0XHR2YXIgZW5hYmxlZCA9ICgnT24nID09PSB2YWx1ZSk7XG5cdFx0XHRCdWlsZGVyLnNldF9wcmV2aWV3X21vZGUoIGVuYWJsZWQsIHsgcmVidWlsZDogdHJ1ZSwgcmVpbml0OiB0cnVlLCBzb3VyY2U6ICdzZXR0aW5ncy1lZmZlY3RzJyB9ICk7XG5cdFx0fVxuXHQpO1xuXG59ICk7XG4iXSwibWFwcGluZ3MiOiI7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUMsVUFBVUEsQ0FBQyxFQUFFQyxDQUFDLEVBQUU7RUFDaEIsWUFBWTs7RUFFWixNQUFNQyxPQUFPLEdBQUlGLENBQUMsQ0FBQ0cseUJBQXlCLEdBQUdILENBQUMsQ0FBQ0cseUJBQXlCLElBQUksQ0FBQyxDQUFFO0VBQ2pGLE1BQU1DLEdBQUcsR0FBUUYsT0FBTyxDQUFDRSxHQUFHLEdBQUdGLE9BQU8sQ0FBQ0UsR0FBRyxJQUFJQyxNQUFNLENBQUNDLE1BQU0sQ0FBRSxJQUFLLENBQUU7RUFFcEVKLE9BQU8sQ0FBQ0ssUUFBUSxHQUFHLFVBQVVDLEdBQUcsRUFBRUMsRUFBRSxFQUFFO0lBQ3JDLElBQUtELEdBQUcsSUFBSSxPQUFPQyxFQUFFLEtBQUssVUFBVSxFQUFHO01BQ3RDTCxHQUFHLENBQUNNLE1BQU0sQ0FBRUYsR0FBSSxDQUFDLENBQUMsR0FBR0MsRUFBRTtJQUN4QjtFQUNELENBQUM7RUFFRCxTQUFTRSxlQUFlQSxDQUFBLEVBQUc7SUFDMUIsT0FDQ1YsQ0FBQyxDQUFDVyxhQUFhLENBQUUsNEJBQTZCLENBQUMsSUFDL0NYLENBQUMsQ0FBQ1csYUFBYSxDQUFFLDJCQUE0QixDQUFDLElBQzlDWCxDQUFDLENBQUNZLGNBQWMsQ0FBRSxtQkFBb0IsQ0FBQyxJQUN2Q1osQ0FBQyxDQUFDYSxJQUFJLElBQUliLENBQUMsQ0FBQ2MsZUFBZTtFQUU3QjtFQUVBYixPQUFPLENBQUNjLFNBQVMsR0FBRyxVQUFVUixHQUFHLEVBQUVTLEtBQUssRUFBRUMsR0FBRyxFQUFFO0lBQzlDLE1BQU1ULEVBQUUsR0FBR0wsR0FBRyxDQUFDTSxNQUFNLENBQUVGLEdBQUksQ0FBQyxDQUFDO0lBQzdCLElBQUssQ0FBRUMsRUFBRSxFQUFHO01BQ1g7SUFDRDtJQUNBLElBQUk7TUFDSEEsRUFBRSxDQUFFUSxLQUFLLEVBQUVaLE1BQU0sQ0FBQ2MsTUFBTSxDQUFFO1FBQUVYLEdBQUc7UUFBRVMsS0FBSztRQUFFRyxNQUFNLEVBQUVULGVBQWUsQ0FBQztNQUFFLENBQUMsRUFBRU8sR0FBRyxJQUFJLENBQUMsQ0FBRSxDQUFFLENBQUM7SUFDbkYsQ0FBQyxDQUFDLE9BQVFHLENBQUMsRUFBRztNQUNiO01BQ0FDLE9BQU8sQ0FBQ0MsS0FBSyxDQUFFLHFCQUFxQixFQUFFZixHQUFHLEVBQUVhLENBQUUsQ0FBQztJQUMvQztFQUNELENBQUM7RUFFRG5CLE9BQU8sQ0FBQ3NCLFNBQVMsR0FBRyxVQUFVQyxPQUFPLEVBQUVQLEdBQUcsRUFBRTtJQUMzQyxJQUFLLENBQUVPLE9BQU8sSUFBSSxPQUFPQSxPQUFPLEtBQUssUUFBUSxFQUFHO01BQy9DO0lBQ0Q7SUFDQXBCLE1BQU0sQ0FBQ3FCLElBQUksQ0FBRUQsT0FBUSxDQUFDLENBQUNFLE9BQU8sQ0FBRSxVQUFVQyxDQUFDLEVBQUU7TUFDNUMxQixPQUFPLENBQUNjLFNBQVMsQ0FBRVksQ0FBQyxFQUFFSCxPQUFPLENBQUNHLENBQUMsQ0FBQyxFQUFFdkIsTUFBTSxDQUFDYyxNQUFNLENBQUU7UUFBRU0sT0FBTyxFQUFFQTtNQUFRLENBQUMsRUFBRVAsR0FBRyxJQUFJLENBQUMsQ0FBRSxDQUFFLENBQUM7SUFDckYsQ0FBRSxDQUFDO0VBQ0osQ0FBQzs7RUFFRDtBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNDaEIsT0FBTyxDQUFDMkIsY0FBYyxHQUFHLFVBQVVDLElBQUksRUFBRTtJQUV4QyxJQUFLQSxJQUFJLEtBQUssSUFBSSxJQUFJLE9BQU9BLElBQUksS0FBSyxXQUFXLElBQUlBLElBQUksS0FBSyxFQUFFLEVBQUc7TUFDbEUsT0FBTyxJQUFJO0lBQ1o7O0lBRUE7SUFDQSxJQUFLLE9BQU9BLElBQUksS0FBSyxRQUFRLEVBQUc7TUFDL0IsSUFBSTtRQUNIQSxJQUFJLEdBQUdDLElBQUksQ0FBQ0MsS0FBSyxDQUFFRixJQUFLLENBQUM7TUFDMUIsQ0FBQyxDQUFDLE9BQVFHLEVBQUUsRUFBRztRQUNkLE9BQU8sSUFBSTtNQUNaO0lBQ0Q7SUFFQSxJQUFLLENBQUVILElBQUksSUFBSSxPQUFPQSxJQUFJLEtBQUssUUFBUSxFQUFHO01BQ3pDLE9BQU8sSUFBSTtJQUNaOztJQUVBO0lBQ0EsTUFBTUksU0FBUyxHQUNYN0IsTUFBTSxDQUFDOEIsU0FBUyxDQUFDQyxjQUFjLENBQUNDLElBQUksQ0FBRVAsSUFBSSxFQUFFLFNBQVUsQ0FBQyxJQUN2RHpCLE1BQU0sQ0FBQzhCLFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUVQLElBQUksRUFBRSxVQUFXLENBQUMsSUFDeER6QixNQUFNLENBQUM4QixTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUFFUCxJQUFJLEVBQUUsYUFBYyxDQUFDO0lBRS9ELElBQUssQ0FBRUksU0FBUyxFQUFHO01BQ2xCSixJQUFJLEdBQUc7UUFBRUwsT0FBTyxFQUFFSyxJQUFJO1FBQUVRLFFBQVEsRUFBRSxDQUFDO01BQUUsQ0FBQztJQUN2QztJQUVBLElBQUssQ0FBRVIsSUFBSSxDQUFDTCxPQUFPLElBQUksT0FBT0ssSUFBSSxDQUFDTCxPQUFPLEtBQUssUUFBUSxFQUFHO01BQ3pESyxJQUFJLENBQUNMLE9BQU8sR0FBRyxDQUFDLENBQUM7SUFDbEI7SUFDQSxJQUFLLENBQUVLLElBQUksQ0FBQ1EsUUFBUSxJQUFJLE9BQU9SLElBQUksQ0FBQ1EsUUFBUSxLQUFLLFFBQVEsRUFBRztNQUMzRFIsSUFBSSxDQUFDUSxRQUFRLEdBQUcsQ0FBQyxDQUFDO0lBQ25COztJQUVBO0lBQ0EsSUFBS1IsSUFBSSxDQUFDUyxXQUFXLElBQUksT0FBT1QsSUFBSSxDQUFDUyxXQUFXLEtBQUssUUFBUSxFQUFHO01BQy9ELE9BQU9ULElBQUksQ0FBQ1MsV0FBVztJQUN4QjtJQUVBLE9BQU9ULElBQUk7RUFDWixDQUFDOztFQUVEO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDQzVCLE9BQU8sQ0FBQ3NDLG9CQUFvQixHQUFHLFVBQVVDLGFBQWEsRUFBRXZCLEdBQUcsRUFBRTtJQUU1RCxNQUFNWSxJQUFJLEdBQUc1QixPQUFPLENBQUMyQixjQUFjLENBQUVZLGFBQWMsQ0FBQztJQUNwRCxJQUFLLENBQUVYLElBQUksRUFBRztNQUNiO0lBQ0Q7O0lBRUE7SUFDQTVCLE9BQU8sQ0FBQ3NCLFNBQVMsQ0FBRU0sSUFBSSxDQUFDTCxPQUFPLEVBQUVwQixNQUFNLENBQUNjLE1BQU0sQ0FBRTtNQUFFdUIsTUFBTSxFQUFFO0lBQXVCLENBQUMsRUFBRXhCLEdBQUcsSUFBSSxDQUFDLENBQUUsQ0FBRSxDQUFDO0lBQ2pHeUIsaUNBQWlDLENBQUUsSUFBSSxFQUFFdEMsTUFBTSxDQUFDYyxNQUFNLENBQUU7TUFBRXVCLE1BQU0sRUFBRTtJQUF1QixDQUFDLEVBQUV4QixHQUFHLElBQUksQ0FBQyxDQUFFLENBQUUsQ0FBQzs7SUFFekc7SUFDQTBCLFVBQVUsQ0FBRSxZQUFZO01BQ3ZCMUMsT0FBTyxDQUFDc0IsU0FBUyxDQUFFTSxJQUFJLENBQUNMLE9BQU8sRUFBRXBCLE1BQU0sQ0FBQ2MsTUFBTSxDQUFFO1FBQUV1QixNQUFNLEVBQUU7TUFBK0IsQ0FBQyxFQUFFeEIsR0FBRyxJQUFJLENBQUMsQ0FBRSxDQUFFLENBQUM7TUFDekd5QixpQ0FBaUMsQ0FBRSxJQUFJLEVBQUV0QyxNQUFNLENBQUNjLE1BQU0sQ0FBRTtRQUFFdUIsTUFBTSxFQUFFO01BQStCLENBQUMsRUFBRXhCLEdBQUcsSUFBSSxDQUFDLENBQUUsQ0FBRSxDQUFDO0lBQ2xILENBQUMsRUFBRSxFQUFHLENBQUM7RUFDUixDQUFDOztFQUVEO0VBQ0FqQixDQUFDLENBQUM0QyxnQkFBZ0IsQ0FBRSw4QkFBOEIsRUFBRSxVQUFVeEIsQ0FBQyxFQUFFO0lBQ2hFLE1BQU1TLElBQUksR0FBR1QsQ0FBQyxJQUFJQSxDQUFDLENBQUN5QixNQUFNLEdBQUd6QixDQUFDLENBQUN5QixNQUFNLENBQUNDLFFBQVEsR0FBRyxJQUFJO0lBQ3JELElBQUtqQixJQUFJLElBQUlBLElBQUksQ0FBQ0wsT0FBTyxFQUFHO01BQzNCdkIsT0FBTyxDQUFDc0IsU0FBUyxDQUFFTSxJQUFJLENBQUNMLE9BQU8sRUFBRTtRQUFFaUIsTUFBTSxFQUFFO01BQVEsQ0FBRSxDQUFDO0lBQ3ZEO0lBQ0FDLGlDQUFpQyxDQUFFLElBQUksRUFBRTtNQUFFRCxNQUFNLEVBQUU7SUFBcUIsQ0FBRSxDQUFDO0VBQzVFLENBQUUsQ0FBQzs7RUFFSDtFQUNBLFNBQVNNLFVBQVVBLENBQUMvQixLQUFLLEVBQUU7SUFDMUIsTUFBTWdDLENBQUMsR0FBR3ZDLE1BQU0sQ0FBRU8sS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUdBLEtBQU0sQ0FBQztJQUM5QyxJQUFLakIsQ0FBQyxDQUFDa0QsR0FBRyxJQUFJLE9BQU9sRCxDQUFDLENBQUNrRCxHQUFHLENBQUNDLE1BQU0sS0FBSyxVQUFVLEVBQUc7TUFDbEQsT0FBT25ELENBQUMsQ0FBQ2tELEdBQUcsQ0FBQ0MsTUFBTSxDQUFFRixDQUFFLENBQUM7SUFDekI7SUFDQSxPQUFPQSxDQUFDLENBQUNHLE9BQU8sQ0FBRSxrQkFBa0IsRUFBRSxNQUFPLENBQUM7RUFDL0M7RUFFQSxTQUFTQyxZQUFZQSxDQUFDQyxFQUFFLEVBQUU7SUFDekIsSUFBSyxDQUFFQSxFQUFFLElBQUksQ0FBRUEsRUFBRSxDQUFDQyxPQUFPLEVBQUc7TUFDM0IsT0FBTyxJQUFJO0lBQ1o7O0lBRUE7SUFDQSxNQUFNQyxNQUFNLEdBQUdGLEVBQUUsQ0FBQ0MsT0FBTyxDQUFFLHdCQUF5QixDQUFDO0lBQ3JELElBQUtDLE1BQU0sRUFBRztNQUNiLE9BQU9BLE1BQU07SUFDZDs7SUFFQTtJQUNBLE1BQU1DLFNBQVMsR0FBR0gsRUFBRSxDQUFDQyxPQUFPLENBQUUsd0JBQXlCLENBQUM7SUFDeEQsSUFBS0UsU0FBUyxFQUFHO01BQ2hCLE9BQ0NBLFNBQVMsQ0FBQzdDLGFBQWEsQ0FBRSwwREFBMkQsQ0FBQyxJQUNyRjZDLFNBQVMsQ0FBQzdDLGFBQWEsQ0FBRSw2REFBOEQsQ0FBQyxJQUN4RixJQUFJO0lBRU47O0lBRUE7SUFDQSxNQUFNOEMsYUFBYSxHQUFHSixFQUFFLENBQUNDLE9BQU8sQ0FBRSxxQkFBc0IsQ0FBQztJQUN6RCxJQUFLRyxhQUFhLEVBQUc7TUFDcEIsT0FDQ0EsYUFBYSxDQUFDOUMsYUFBYSxDQUFFLHVEQUF3RCxDQUFDLElBQ3RGOEMsYUFBYSxDQUFDOUMsYUFBYSxDQUFFLDhEQUErRCxDQUFDLElBQzdGLElBQUk7SUFFTjs7SUFFQTtJQUNBLE1BQU0rQyxXQUFXLEdBQUdMLEVBQUUsQ0FBQ0MsT0FBTyxDQUFFLDBCQUEyQixDQUFDO0lBQzVELElBQUtJLFdBQVcsRUFBRztNQUNsQixPQUNDQSxXQUFXLENBQUMvQyxhQUFhLENBQUUsNERBQTZELENBQUMsSUFDekYrQyxXQUFXLENBQUMvQyxhQUFhLENBQUUsc0NBQXVDLENBQUMsSUFDbkUsSUFBSTtJQUVOO0lBRUEsT0FBTyxJQUFJO0VBQ1o7RUFFQSxTQUFTZ0QsdUJBQXVCQSxDQUFDQyxPQUFPLEVBQUVDLGVBQWUsRUFBRTtJQUMxRCxJQUFLLENBQUVELE9BQU8sRUFBRztNQUNoQixPQUFPLEVBQUU7SUFDVjtJQUVBLE1BQU1FLE9BQU8sR0FBR3JELE1BQU0sQ0FBRW1ELE9BQU8sQ0FBQ0csWUFBWSxDQUFFLHVCQUF3QixDQUFDLElBQUksRUFBRyxDQUFDOztJQUUvRTtJQUNBLElBQUtELE9BQU8sS0FBSyxPQUFPLEVBQUc7TUFDMUIsTUFBTUUsVUFBVSxHQUFHSixPQUFPLENBQUNHLFlBQVksQ0FBRSw0QkFBNkIsQ0FBQyxJQUFJLEVBQUU7TUFDN0UsTUFBTUUsUUFBUSxHQUFLRCxVQUFVLEdBQzFCLDRCQUE0QixHQUFHakIsVUFBVSxDQUFFaUIsVUFBVyxDQUFDLEdBQUcsWUFBWSxHQUN0RSw2QkFBNkI7TUFFaEMsTUFBTUUsT0FBTyxHQUFHTixPQUFPLENBQUNqRCxhQUFhLENBQUVzRCxRQUFTLENBQUM7TUFDakQsT0FBT0MsT0FBTyxHQUFHekQsTUFBTSxDQUFFeUQsT0FBTyxDQUFDbEQsS0FBSyxJQUFJLEVBQUcsQ0FBQyxHQUFHLEVBQUU7SUFDcEQ7SUFFQSxJQUFLOEMsT0FBTyxLQUFLLFNBQVMsRUFBRztNQUM1QixNQUFNSyxLQUFLLEdBQUtOLGVBQWUsSUFBSUEsZUFBZSxDQUFDUCxPQUFPLEdBQUtPLGVBQWUsQ0FBQ1AsT0FBTyxDQUFFLHFCQUFzQixDQUFDLEdBQUdNLE9BQU8sQ0FBQ04sT0FBTyxDQUFFLHFCQUFzQixDQUFDO01BQzFKLE1BQU1jLGNBQWMsR0FBR0QsS0FBSyxHQUFHQSxLQUFLLENBQUN4RCxhQUFhLENBQUUsbUNBQW9DLENBQUMsR0FBRyxJQUFJO01BQ2hHLE1BQU0wRCxnQkFBZ0IsR0FBR0YsS0FBSyxHQUFHQSxLQUFLLENBQUN4RCxhQUFhLENBQUUscUNBQXNDLENBQUMsR0FBRyxJQUFJO01BQ3BHLE1BQU0yRCxNQUFNLEdBQUdILEtBQUssR0FBR0EsS0FBSyxDQUFDeEQsYUFBYSxDQUFFLGlDQUFrQyxDQUFDLEdBQUcsSUFBSTtNQUN0RixNQUFNNEQsUUFBUSxHQUFHSCxjQUFjLEdBQUczRCxNQUFNLENBQUUyRCxjQUFjLENBQUNwRCxLQUFLLElBQUksR0FBSSxDQUFDLEdBQUcsR0FBRztNQUM3RSxNQUFNd0QsVUFBVSxHQUFHSCxnQkFBZ0IsR0FBRzVELE1BQU0sQ0FBRTRELGdCQUFnQixDQUFDckQsS0FBSyxJQUFJdUQsUUFBUyxDQUFDLEdBQUdBLFFBQVE7TUFDN0YsTUFBTUUsUUFBUSxHQUFHQyxtREFBbUQsQ0FBRUgsUUFBUSxFQUFFQyxVQUFXLENBQUM7TUFFNUYsSUFBS0YsTUFBTSxFQUFHO1FBQ2JBLE1BQU0sQ0FBQ3RELEtBQUssR0FBR3lELFFBQVE7TUFDeEI7TUFFQSxPQUFPQSxRQUFRO0lBQ2hCOztJQUVBO0lBQ0EsSUFBTVosZUFBZSxJQUFJQSxlQUFlLENBQUNjLElBQUksS0FBSyxVQUFVLElBQUtmLE9BQU8sQ0FBQ2UsSUFBSSxLQUFLLFVBQVUsRUFBRztNQUM5RixNQUFNQyxFQUFFLEdBQUlmLGVBQWUsSUFBSUEsZUFBZSxDQUFDYyxJQUFJLEtBQUssVUFBVSxHQUFJZCxlQUFlLEdBQUdELE9BQU87TUFDL0YsT0FBT2dCLEVBQUUsQ0FBQ1YsT0FBTyxHQUFHLElBQUksR0FBRyxLQUFLO0lBQ2pDOztJQUVBO0lBQ0EsSUFBS04sT0FBTyxDQUFDNUMsS0FBSyxJQUFJLElBQUksRUFBRztNQUM1QixPQUFPUCxNQUFNLENBQUVtRCxPQUFPLENBQUM1QyxLQUFNLENBQUM7SUFDL0I7SUFDQSxJQUFLNkMsZUFBZSxJQUFJQSxlQUFlLENBQUM3QyxLQUFLLElBQUksSUFBSSxFQUFHO01BQ3ZELE9BQU9QLE1BQU0sQ0FBRW9ELGVBQWUsQ0FBQzdDLEtBQU0sQ0FBQztJQUN2QztJQUVBLE9BQU8sRUFBRTtFQUNWO0VBRUEsU0FBUzZELHdCQUF3QkEsQ0FBQ0MsTUFBTSxFQUFFQyxVQUFVLEVBQUVDLFlBQVksRUFBRTtJQUNuRSxJQUFLLENBQUVGLE1BQU0sRUFBRztNQUFFO0lBQVE7SUFFMUIsTUFBTWxCLE9BQU8sR0FBR1IsWUFBWSxDQUFFMEIsTUFBTyxDQUFDO0lBQ3RDLElBQUssQ0FBRWxCLE9BQU8sRUFBRztNQUFFO0lBQVE7O0lBRzNCO0lBQ0E7SUFDQTtJQUNBLE1BQU1FLE9BQU8sR0FBR3JELE1BQU0sQ0FBRW1ELE9BQU8sQ0FBQ0csWUFBWSxDQUFFLHVCQUF3QixDQUFDLElBQUksRUFBRyxDQUFDO0lBQy9FLE1BQU1rQixHQUFHLEdBQU94RSxNQUFNLENBQUVxRSxNQUFNLENBQUNJLE9BQU8sSUFBSSxFQUFHLENBQUMsQ0FBQ0MsV0FBVyxDQUFDLENBQUM7SUFDNUQsTUFBTVIsSUFBSSxHQUFNbEUsTUFBTSxDQUFFcUUsTUFBTSxDQUFDSCxJQUFJLElBQUksRUFBRyxDQUFDLENBQUNRLFdBQVcsQ0FBQyxDQUFDO0lBRXpELE1BQU1DLFVBQVUsR0FBSXRCLE9BQU8sS0FBSyxRQUFRLElBQU1BLE9BQU8sS0FBSyxRQUFTLElBQUtBLE9BQU8sS0FBSyxPQUFRLElBQUthLElBQUksS0FBSyxVQUFXLElBQUtBLElBQUksS0FBSyxPQUFRLElBQUtNLEdBQUcsS0FBSyxRQUFTO0lBRWpLLElBQUtHLFVBQVUsSUFBSUwsVUFBVSxLQUFLLFFBQVEsRUFBRztNQUFFO0lBQVE7SUFDdkQsSUFBSyxDQUFFSyxVQUFVLElBQUlMLFVBQVUsS0FBSyxPQUFPLEVBQUc7TUFBRTtJQUFRO0lBQ3hEOztJQUVBLE1BQU14RSxHQUFHLEdBQUdxRCxPQUFPLENBQUNHLFlBQVksQ0FBRSxzQkFBdUIsQ0FBQztJQUMxRCxJQUFLLENBQUV4RCxHQUFHLEVBQUc7TUFBRTtJQUFRO0lBRXZCLE1BQU04RSxLQUFLLEdBQUd6QixPQUFPLENBQUNHLFlBQVksQ0FBRSx3QkFBeUIsQ0FBQyxJQUFJLEVBQUU7SUFDcEUsTUFBTS9DLEtBQUssR0FBRzJDLHVCQUF1QixDQUFFQyxPQUFPLEVBQUVrQixNQUFPLENBQUM7SUFFeEQ3RSxPQUFPLENBQUNjLFNBQVMsQ0FBRVIsR0FBRyxFQUFFUyxLQUFLLEVBQUU7TUFBRXlCLE1BQU0sRUFBRXVDLFlBQVksSUFBSSxJQUFJO01BQUVLLEtBQUssRUFBRUEsS0FBSztNQUFFQyxPQUFPLEVBQUVSLE1BQU07TUFBRWxCLE9BQU8sRUFBRUE7SUFBUSxDQUFFLENBQUM7RUFDbkg7RUFFQSxTQUFTMkIsa0JBQWtCQSxDQUFDVCxNQUFNLEVBQUU7SUFDbkMsSUFBSyxDQUFFQSxNQUFNLElBQUksQ0FBRUEsTUFBTSxDQUFDVSxPQUFPLEVBQUc7TUFDbkMsT0FBTyxLQUFLO0lBQ2I7SUFFQSxPQUFPVixNQUFNLENBQUNVLE9BQU8sQ0FBRSxtRkFBb0YsQ0FBQztFQUM3RztFQUVBLFNBQVNDLFNBQVNBLENBQUNDLEVBQUUsRUFBRTtJQUN0QjtJQUNBO0lBQ0EsSUFBS0EsRUFBRSxJQUFJQSxFQUFFLENBQUNDLFNBQVMsS0FBSyxLQUFLLElBQUksQ0FBRUosa0JBQWtCLENBQUVHLEVBQUUsQ0FBQ1osTUFBTyxDQUFDLEVBQUc7TUFBRTtJQUFRO0lBQ25GRCx3QkFBd0IsQ0FBRWEsRUFBRSxJQUFJQSxFQUFFLENBQUNaLE1BQU0sRUFBRVksRUFBRSxJQUFJQSxFQUFFLENBQUNmLElBQUksRUFBSWUsRUFBRSxJQUFJQSxFQUFFLENBQUNDLFNBQVMsS0FBSyxLQUFLLEdBQUssU0FBUyxHQUFHLElBQUssQ0FBQztFQUNoSDtFQUVBM0YsQ0FBQyxDQUFDNEMsZ0JBQWdCLENBQUUsT0FBTyxFQUFFNkMsU0FBUyxFQUFFLEtBQU0sQ0FBQztFQUMvQ3pGLENBQUMsQ0FBQzRDLGdCQUFnQixDQUFFLFFBQVEsRUFBRTZDLFNBQVMsRUFBRSxLQUFNLENBQUM7RUFDaEQsU0FBU0csZUFBZUEsQ0FBQ0YsRUFBRSxFQUFFO0lBQzVCLE1BQU03QyxNQUFNLEdBQUc2QyxFQUFFLElBQUlBLEVBQUUsQ0FBQzdDLE1BQU0sR0FBRzZDLEVBQUUsQ0FBQzdDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDL0MsTUFBTWlDLE1BQU0sR0FBR2pDLE1BQU0sQ0FBQ2dELFNBQVMsSUFBSWhELE1BQU0sQ0FBQ1EsRUFBRSxJQUFJUixNQUFNLENBQUNpRCxLQUFLLElBQUlKLEVBQUUsQ0FBQ1osTUFBTSxJQUFJLElBQUk7SUFFakYsSUFBSyxDQUFFUyxrQkFBa0IsQ0FBRVQsTUFBTyxDQUFDLEVBQUc7TUFDckM7SUFDRDtJQUVBLElBQUtqQyxNQUFNLENBQUNrRCxLQUFLLElBQUlqQixNQUFNLENBQUM5RCxLQUFLLEtBQUs2QixNQUFNLENBQUNrRCxLQUFLLEVBQUc7TUFDcERqQixNQUFNLENBQUM5RCxLQUFLLEdBQUc2QixNQUFNLENBQUNrRCxLQUFLO0lBQzVCO0lBRUFsQix3QkFBd0IsQ0FBRUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxTQUFVLENBQUM7RUFDdkQ7RUFDQTlFLENBQUMsQ0FBQzRDLGdCQUFnQixDQUFFLGNBQWMsRUFBRWdELGVBQWUsRUFBRSxLQUFNLENBQUM7RUFDNUQ1RixDQUFDLENBQUM0QyxnQkFBZ0IsQ0FBRSx5QkFBeUIsRUFBRWdELGVBQWUsRUFBRSxLQUFNLENBQUM7QUFFeEUsQ0FBQyxFQUFHSSxNQUFNLEVBQUVDLFFBQVMsQ0FBQztBQUV0QixTQUFTQyxxQ0FBcUNBLENBQUEsRUFBRztFQUNoRCxPQUFPO0lBQ05DLFFBQVEsRUFBRTtNQUNUQyxVQUFVLEVBQUcsU0FBUztNQUN0QkMsV0FBVyxFQUFFLFNBQVM7TUFDdEJDLFdBQVcsRUFBRSxLQUFLO01BQ2xCQyxNQUFNLEVBQU8sS0FBSztNQUNsQkMsT0FBTyxFQUFNLFdBQVc7TUFDeEJDLE1BQU0sRUFBTztJQUNkLENBQUM7SUFDREMsSUFBSSxFQUFNO01BQ1ROLFVBQVUsRUFBRyxhQUFhO01BQzFCQyxXQUFXLEVBQUUsYUFBYTtNQUMxQkMsV0FBVyxFQUFFLEtBQUs7TUFDbEJDLE1BQU0sRUFBTyxLQUFLO01BQ2xCQyxPQUFPLEVBQU0sS0FBSztNQUNsQkMsTUFBTSxFQUFPO0lBQ2QsQ0FBQztJQUNERSxJQUFJLEVBQU07TUFDVFAsVUFBVSxFQUFHLFNBQVM7TUFDdEJDLFdBQVcsRUFBRSxNQUFNO01BQ25CQyxXQUFXLEVBQUUsS0FBSztNQUNsQkMsTUFBTSxFQUFPLEtBQUs7TUFDbEJDLE9BQU8sRUFBTSxNQUFNO01BQ25CQyxNQUFNLEVBQU87SUFDZDtFQUNELENBQUM7QUFDRjtBQUVBLFNBQVNHLHVDQUF1Q0EsQ0FBQ3BGLE9BQU8sRUFBRTtFQUN6REEsT0FBTyxHQUFHQSxPQUFPLElBQUksT0FBT0EsT0FBTyxLQUFLLFFBQVEsR0FBR0EsT0FBTyxHQUFHLENBQUMsQ0FBQztFQUMvRCxPQUFPLG1CQUFtQixLQUFLZixNQUFNLENBQUVlLE9BQU8sQ0FBQ3FGLGtCQUFrQixJQUFJLEVBQUcsQ0FBQztBQUMxRTtBQUVBLFNBQVNDLGdEQUFnREEsQ0FBQ0MsS0FBSyxFQUFFdkYsT0FBTyxFQUFFO0VBQ3pFLE1BQU13RixPQUFPLEdBQUdkLHFDQUFxQyxDQUFDLENBQUM7RUFFdkQsSUFBSyxDQUFFVSx1Q0FBdUMsQ0FBRXBGLE9BQVEsQ0FBQyxFQUFHO0lBQzNELE9BQU93RixPQUFPLENBQUNELEtBQUssQ0FBQyxJQUFJQyxPQUFPLENBQUNiLFFBQVE7RUFDMUM7RUFFQSxJQUFLLE1BQU0sS0FBS1ksS0FBSyxFQUFHO0lBQ3ZCLE9BQU87TUFDTlgsVUFBVSxFQUFHLFNBQVM7TUFDdEJDLFdBQVcsRUFBRSxTQUFTO01BQ3RCQyxXQUFXLEVBQUUsS0FBSztNQUNsQkMsTUFBTSxFQUFPLEtBQUs7TUFDbEJDLE9BQU8sRUFBTSxNQUFNO01BQ25CQyxNQUFNLEVBQU87SUFDZCxDQUFDO0VBQ0Y7RUFFQSxPQUFPTyxPQUFPLENBQUNELEtBQUssQ0FBQyxJQUFJQyxPQUFPLENBQUNiLFFBQVE7QUFDMUM7QUFFQSxTQUFTYyx3Q0FBd0NBLENBQUNqRyxLQUFLLEVBQUVrRyxRQUFRLEVBQUU7RUFDbEUsTUFBTWxFLENBQUMsR0FBR3ZDLE1BQU0sQ0FBRU8sS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUdBLEtBQU0sQ0FBQyxDQUFDbUcsSUFBSSxDQUFDLENBQUM7RUFDckQsSUFBSyxpQ0FBaUMsQ0FBQ0MsSUFBSSxDQUFFcEUsQ0FBRSxDQUFDLEVBQUc7SUFDbEQsT0FBT0EsQ0FBQztFQUNUO0VBQ0EsSUFBS0EsQ0FBQyxLQUFLLGFBQWEsRUFBRztJQUMxQixPQUFPQSxDQUFDO0VBQ1Q7RUFDQSxPQUFPa0UsUUFBUTtBQUNoQjtBQUVBLFNBQVNHLGlEQUFpREEsQ0FBQ3JHLEtBQUssRUFBRTtFQUNqRSxPQUFPaUcsd0NBQXdDLENBQUVqRyxLQUFLLEVBQUUsRUFBRyxDQUFDO0FBQzdEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTc0csaURBQWlEQSxDQUFDdEcsS0FBSyxFQUFFO0VBQ2pFLE1BQU11RyxlQUFlLEdBQUc5RyxNQUFNLENBQUVPLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHQSxLQUFNLENBQUMsQ0FBQ21HLElBQUksQ0FBQyxDQUFDO0VBQ25FLElBQUssaUNBQWlDLENBQUNDLElBQUksQ0FBRUcsZUFBZ0IsQ0FBQyxFQUFHO0lBQ2hFLE9BQU9BLGVBQWU7RUFDdkI7RUFFQSxNQUFNQyxhQUFhLEdBQUd4QixNQUFNLENBQUN5QixzQkFBc0IsSUFBSSxPQUFPekIsTUFBTSxDQUFDeUIsc0JBQXNCLEtBQUssUUFBUSxHQUNyR3pCLE1BQU0sQ0FBQ3lCLHNCQUFzQixHQUM3QixDQUFDLENBQUM7RUFDTCxNQUFNQyxlQUFlLEdBQUdGLGFBQWEsQ0FBQ0csb0JBQW9CLElBQUksT0FBT0gsYUFBYSxDQUFDRyxvQkFBb0IsS0FBSyxRQUFRLEdBQ2pISCxhQUFhLENBQUNHLG9CQUFvQixHQUNsQyxDQUFDLENBQUM7RUFDTCxNQUFNQyxhQUFhLEdBQUduSCxNQUFNLENBQUVpSCxlQUFlLENBQUNHLHlCQUF5QixJQUFJLEVBQUcsQ0FBQyxDQUFDVixJQUFJLENBQUMsQ0FBQztFQUV0RixPQUFPLGlDQUFpQyxDQUFDQyxJQUFJLENBQUVRLGFBQWMsQ0FBQyxHQUFHQSxhQUFhLEdBQUcsRUFBRTtBQUNwRjtBQUVBLFNBQVNFLHlDQUF5Q0EsQ0FBQzlHLEtBQUssRUFBRWtHLFFBQVEsRUFBRTtFQUNuRSxNQUFNbEUsQ0FBQyxHQUFHdkMsTUFBTSxDQUFFTyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBR0EsS0FBTSxDQUFDLENBQUNtRyxJQUFJLENBQUMsQ0FBQztFQUNyRCxJQUFLLGlDQUFpQyxDQUFDQyxJQUFJLENBQUVwRSxDQUFFLENBQUMsRUFBRztJQUNsRCxPQUFPQSxDQUFDO0VBQ1Q7RUFDQSxPQUFPa0UsUUFBUTtBQUNoQjtBQUVBLFNBQVNhLDBDQUEwQ0EsQ0FBQy9HLEtBQUssRUFBRWtHLFFBQVEsRUFBRTtFQUNwRSxNQUFNbEUsQ0FBQyxHQUFHdkMsTUFBTSxDQUFFTyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBR0EsS0FBTSxDQUFDLENBQUNtRyxJQUFJLENBQUMsQ0FBQyxDQUFDaEUsT0FBTyxDQUFFLE1BQU0sRUFBRSxHQUFJLENBQUM7RUFDNUUsTUFBTTZFLEtBQUssR0FBR2hGLENBQUMsR0FBR0EsQ0FBQyxDQUFDaUYsS0FBSyxDQUFFLEdBQUksQ0FBQyxHQUFHLEVBQUU7RUFDckMsSUFBS0QsS0FBSyxDQUFDRSxNQUFNLEdBQUcsQ0FBQyxJQUFJRixLQUFLLENBQUNFLE1BQU0sR0FBRyxDQUFDLEVBQUc7SUFDM0MsT0FBT2hCLFFBQVE7RUFDaEI7RUFDQSxLQUFNLElBQUlpQixDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdILEtBQUssQ0FBQ0UsTUFBTSxFQUFFQyxDQUFDLEVBQUUsRUFBRztJQUN4QyxJQUFLLENBQUUsaUNBQWlDLENBQUNmLElBQUksQ0FBRVksS0FBSyxDQUFDRyxDQUFDLENBQUUsQ0FBQyxFQUFHO01BQzNELE9BQU9qQixRQUFRO0lBQ2hCO0VBQ0Q7RUFDQSxPQUFPYyxLQUFLLENBQUNJLElBQUksQ0FBRSxHQUFJLENBQUM7QUFDekI7QUFFQSxTQUFTMUQsbURBQW1EQSxDQUFDSCxRQUFRLEVBQUVDLFVBQVUsRUFBRTtFQUNsRixNQUFNeEIsQ0FBQyxHQUFHdkMsTUFBTSxDQUFFOEQsUUFBUSxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUdBLFFBQVMsQ0FBQyxDQUFDNEMsSUFBSSxDQUFDLENBQUM7RUFDM0QsTUFBTWtCLENBQUMsR0FBRzVILE1BQU0sQ0FBRStELFVBQVUsSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHQSxVQUFXLENBQUMsQ0FBQzJDLElBQUksQ0FBQyxDQUFDO0VBQy9ELE1BQU1tQixZQUFZLEdBQUcsaUJBQWlCLENBQUNsQixJQUFJLENBQUVwRSxDQUFFLENBQUMsR0FBR0EsQ0FBQyxHQUFHLEdBQUc7RUFDMUQsTUFBTXVGLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQ25CLElBQUksQ0FBRWlCLENBQUUsQ0FBQyxHQUFHQSxDQUFDLEdBQUdDLFlBQVk7RUFFckUsT0FBT0EsWUFBWSxHQUFHLEtBQUssR0FBR0MsY0FBYyxHQUFHLElBQUk7QUFDcEQ7QUFFQSxTQUFTQyx5Q0FBeUNBLENBQUN2SCxHQUFHLEVBQUVWLEdBQUcsRUFBRVMsS0FBSyxFQUFFO0VBQ25FLElBQUlRLE9BQU8sR0FBSVAsR0FBRyxJQUFJQSxHQUFHLENBQUNPLE9BQU8sSUFBSSxPQUFPUCxHQUFHLENBQUNPLE9BQU8sS0FBSyxRQUFRLEdBQUlwQixNQUFNLENBQUNjLE1BQU0sQ0FBRSxDQUFDLENBQUMsRUFBRUQsR0FBRyxDQUFDTyxPQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7RUFFN0csSUFBS3dFLE1BQU0sQ0FBQ3lDLHFCQUFxQixJQUFJLE9BQU96QyxNQUFNLENBQUN5QyxxQkFBcUIsQ0FBQ0MsT0FBTyxLQUFLLFVBQVUsRUFBRztJQUNqR2xILE9BQU8sR0FBR3BCLE1BQU0sQ0FBQ2MsTUFBTSxDQUFFOEUsTUFBTSxDQUFDeUMscUJBQXFCLENBQUNDLE9BQU8sQ0FBRSxNQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRWxILE9BQVEsQ0FBQztFQUN6RjtFQUVBLElBQUtqQixHQUFHLEVBQUc7SUFDVmlCLE9BQU8sQ0FBQ2YsTUFBTSxDQUFFRixHQUFJLENBQUMsQ0FBQyxHQUFHUyxLQUFLO0VBQy9CO0VBRUEsSUFBSzJILCtDQUErQyxDQUFFcEksR0FBSSxDQUFDLEVBQUc7SUFDN0RpQixPQUFPLENBQUNvSCw0QkFBNEIsR0FBRyxRQUFRO0lBQy9DQyxxREFBcUQsQ0FBRSxRQUFTLENBQUM7RUFDbEU7RUFFQSxPQUFPckgsT0FBTztBQUNmO0FBRUEsU0FBU3NILGlEQUFpREEsQ0FBQSxFQUFHO0VBQzVELE9BQU8sQ0FDTiwrQkFBK0IsRUFDL0IsMkJBQTJCLEVBQzNCLDJCQUEyQixFQUMzQiw0QkFBNEIsRUFDNUIsc0JBQXNCLEVBQ3RCLHlCQUF5QixFQUN6QixxQ0FBcUMsRUFDckMsK0JBQStCLEVBQy9CLGlDQUFpQyxDQUNqQztBQUNGO0FBRUEsU0FBU0gsK0NBQStDQSxDQUFDcEksR0FBRyxFQUFFO0VBQzdELE9BQU91SSxpREFBaUQsQ0FBQyxDQUFDLENBQUNDLE9BQU8sQ0FBRXRJLE1BQU0sQ0FBRUYsR0FBRyxJQUFJLEVBQUcsQ0FBRSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2pHO0FBRUEsU0FBU3NJLHFEQUFxREEsQ0FBQzdILEtBQUssRUFBRTtFQUNyRSxNQUFNc0UsT0FBTyxHQUFHVyxRQUFRLENBQUN0RixhQUFhLENBQUUsdURBQXdELENBQUM7RUFDakcsSUFBSyxDQUFFMkUsT0FBTyxJQUFJQSxPQUFPLENBQUN0RSxLQUFLLEtBQUtBLEtBQUssRUFBRztJQUMzQztFQUNEO0VBRUFzRSxPQUFPLENBQUN0RSxLQUFLLEdBQUdBLEtBQUs7QUFDdEI7QUFFQSxTQUFTZ0ksMkNBQTJDQSxDQUFDekksR0FBRyxFQUFFUyxLQUFLLEVBQUU7RUFDaEUsTUFBTWlJLEdBQUcsR0FBR2hELFFBQVEsQ0FBQ3RGLGFBQWEsQ0FBRSxvQ0FBb0MsR0FBR0osR0FBRyxHQUFHLElBQUssQ0FBQztFQUN2RixJQUFLLENBQUUwSSxHQUFHLEVBQUc7SUFDWjtFQUNEO0VBRUEsTUFBTUMsSUFBSSxHQUFHRCxHQUFHLENBQUN0SSxhQUFhLENBQUUsMkRBQTRELENBQUM7RUFDN0YsTUFBTXFELFVBQVUsR0FBR2tGLElBQUksR0FBR3pJLE1BQU0sQ0FBRXlJLElBQUksQ0FBQ25GLFlBQVksQ0FBRSw0QkFBNkIsQ0FBQyxJQUFJLEVBQUcsQ0FBQyxHQUFHLEVBQUU7RUFDaEcsTUFBTW9GLE1BQU0sR0FBR25GLFVBQVUsR0FDdEJpRixHQUFHLENBQUNHLGdCQUFnQixDQUFFLDRCQUE0QixHQUFHcEYsVUFBVSxHQUFHLElBQUssQ0FBQyxHQUN4RWlGLEdBQUcsQ0FBQ0csZ0JBQWdCLENBQUUscUJBQXNCLENBQUM7RUFFaERELE1BQU0sQ0FBQ3pILE9BQU8sQ0FBRSxVQUFVMkgsS0FBSyxFQUFFO0lBQ2hDLE1BQU1DLFlBQVksR0FBSzdJLE1BQU0sQ0FBRTRJLEtBQUssQ0FBQ3JJLEtBQU0sQ0FBQyxLQUFLUCxNQUFNLENBQUVPLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHQSxLQUFNLENBQUc7SUFDdkZxSSxLQUFLLENBQUNuRixPQUFPLEdBQUdvRixZQUFZO0lBRTVCLE1BQU1DLE1BQU0sR0FBR0YsS0FBSyxDQUFDL0YsT0FBTyxHQUFHK0YsS0FBSyxDQUFDL0YsT0FBTyxDQUFFLG9CQUFxQixDQUFDLEdBQUcsSUFBSTtJQUMzRSxJQUFLaUcsTUFBTSxFQUFHO01BQ2JBLE1BQU0sQ0FBQ0MsU0FBUyxDQUFDQyxNQUFNLENBQUUsYUFBYSxFQUFFSCxZQUFhLENBQUM7SUFDdkQ7RUFDRCxDQUFFLENBQUM7QUFDSjtBQUVBLFNBQVNJLDRDQUE0Q0EsQ0FBQ25KLEdBQUcsRUFBRVMsS0FBSyxFQUFFO0VBQ2pFLE1BQU1zRSxPQUFPLEdBQUdXLFFBQVEsQ0FBQ3RGLGFBQWEsQ0FBRSx5QkFBeUIsR0FBR0osR0FBRyxHQUFHLElBQUssQ0FBQztFQUNoRixJQUFLK0UsT0FBTyxFQUFHO0lBQ2RBLE9BQU8sQ0FBQ3RFLEtBQUssR0FBR1AsTUFBTSxDQUFFTyxLQUFLLElBQUksSUFBSSxHQUFHLEVBQUUsR0FBR0EsS0FBTSxDQUFDO0VBQ3JEO0FBQ0Q7QUFFQSxTQUFTMkksNkNBQTZDQSxDQUFBLEVBQUc7RUFDeEQsT0FBTzNELE1BQU0sQ0FBQ3lDLHFCQUFxQixJQUFJLE9BQU96QyxNQUFNLENBQUN5QyxxQkFBcUIsQ0FBQ0MsT0FBTyxLQUFLLFVBQVUsR0FDOUYxQyxNQUFNLENBQUN5QyxxQkFBcUIsQ0FBQ0MsT0FBTyxDQUFFLE1BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUNwRCxDQUFDLENBQUM7QUFDTjtBQUVBLFNBQVNrQixzREFBc0RBLENBQUNwSSxPQUFPLEVBQUU7RUFDeEVBLE9BQU8sR0FBR0EsT0FBTyxJQUFJLE9BQU9BLE9BQU8sS0FBSyxRQUFRLEdBQUdBLE9BQU8sR0FBRyxDQUFDLENBQUM7RUFFL0QsTUFBTXFJLEtBQUssR0FBR3BKLE1BQU0sQ0FBRWUsT0FBTyxDQUFDcUYsa0JBQWtCLElBQUksRUFBRyxDQUFDO0VBQ3hELE1BQU1FLEtBQUssR0FBR3RHLE1BQU0sQ0FBRWUsT0FBTyxDQUFDb0gsNEJBQTRCLElBQUksU0FBVSxDQUFDO0VBRXpFLElBQUssUUFBUSxLQUFLN0IsS0FBSyxFQUFHO0lBQ3pCLE9BQU8sUUFBUTtFQUNoQjtFQUNBLElBQUssU0FBUyxLQUFLQSxLQUFLLElBQUksRUFBRSxLQUFLQSxLQUFLLEVBQUc7SUFDMUMsT0FBTyxTQUFTO0VBQ2pCO0VBRUEsTUFBTStDLE1BQU0sR0FBSyxtQkFBbUIsS0FBS0QsS0FBSyxHQUFLLE1BQU0sR0FBRyxPQUFPO0VBQ25FLElBQUssQ0FBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sQ0FBRSxDQUFDZCxPQUFPLENBQUVoQyxLQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRztJQUM3RCxPQUFPK0MsTUFBTSxHQUFHLFdBQVc7RUFDNUI7RUFFQSxPQUFPQSxNQUFNLEdBQUcsR0FBRyxHQUFHL0MsS0FBSztBQUM1QjtBQUVBLFNBQVNnRCxpREFBaURBLENBQUN2SSxPQUFPLEVBQUU7RUFDbkV3SCwyQ0FBMkMsQ0FBRSxvQkFBb0IsRUFBRVksc0RBQXNELENBQUVwSSxPQUFRLENBQUUsQ0FBQztBQUN2STtBQUVBLFNBQVN3SSxtREFBbURBLENBQUNoSixLQUFLLEVBQUU7RUFDbkUsTUFBTWlKLGVBQWUsR0FBR04sNkNBQTZDLENBQUMsQ0FBQztFQUN2RSxNQUFNTyxhQUFhLEdBQUd6SixNQUFNLENBQUV3SixlQUFlLENBQUNwRCxrQkFBa0IsSUFBSSxFQUFHLENBQUM7RUFDeEUsTUFBTTBDLE1BQU0sR0FBRzlJLE1BQU0sQ0FBRU8sS0FBSyxJQUFJLFNBQVUsQ0FBQztFQUUzQyxJQUFLLFFBQVEsS0FBS3VJLE1BQU0sRUFBRztJQUMxQixPQUFPO01BQ04xQyxrQkFBa0IsRUFBWXFELGFBQWE7TUFDM0N0Qiw0QkFBNEIsRUFBRTtJQUMvQixDQUFDO0VBQ0Y7RUFDQSxJQUFLLFNBQVMsS0FBS1csTUFBTSxJQUFJLEVBQUUsS0FBS0EsTUFBTSxFQUFHO0lBQzVDLE9BQU87TUFDTjFDLGtCQUFrQixFQUFZLEVBQUU7TUFDaEMrQiw0QkFBNEIsRUFBRTtJQUMvQixDQUFDO0VBQ0Y7RUFFQSxNQUFNWixLQUFLLEdBQUd1QixNQUFNLENBQUN0QixLQUFLLENBQUUsR0FBSSxDQUFDO0VBQ2pDLE1BQU00QixLQUFLLEdBQUssTUFBTSxLQUFLN0IsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFLLG1CQUFtQixHQUFHLEVBQUU7RUFDaEUsTUFBTWpCLEtBQUssR0FBR2lCLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxVQUFVO0VBRXBDLE9BQU87SUFDTm5CLGtCQUFrQixFQUFZZ0QsS0FBSztJQUNuQ2pCLDRCQUE0QixFQUFJLENBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUUsQ0FBQ0csT0FBTyxDQUFFaEMsS0FBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEdBQUssVUFBVSxHQUFHQTtFQUN6RyxDQUFDO0FBQ0Y7QUFFQSxTQUFTb0QsOENBQThDQSxDQUFDbEosR0FBRyxFQUFFO0VBQzVELE1BQU13QixNQUFNLEdBQUdoQyxNQUFNLENBQUVRLEdBQUcsSUFBSUEsR0FBRyxDQUFDd0IsTUFBTSxHQUFHeEIsR0FBRyxDQUFDd0IsTUFBTSxHQUFHLEVBQUcsQ0FBQztFQUM1RCxPQUFPLENBQUUsSUFBSSxFQUFFLFNBQVMsQ0FBRSxDQUFDc0csT0FBTyxDQUFFdEcsTUFBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3BEO0FBRUEsU0FBUzJILHlDQUF5Q0EsQ0FBQzVJLE9BQU8sRUFBRTtFQUMzRCxPQUFPZixNQUFNLENBQUVlLE9BQU8sSUFBSUEsT0FBTyxDQUFDb0gsNEJBQTRCLEdBQUdwSCxPQUFPLENBQUNvSCw0QkFBNEIsR0FBRyxTQUFVLENBQUMsS0FBSyxRQUFRO0FBQ2pJO0FBRUEsU0FBU3lCLDhDQUE4Q0EsQ0FBQzdJLE9BQU8sRUFBRTtFQUNoRSxNQUFNOEksU0FBUyxHQUFHRix5Q0FBeUMsQ0FBRTVJLE9BQVEsQ0FBQztFQUN0RSxNQUFNK0ksU0FBUyxHQUFHdEUsUUFBUSxDQUFDdEYsYUFBYSxDQUFFLDZDQUE4QyxDQUFDO0VBQ3pGLE1BQU02SixjQUFjLEdBQUd2RSxRQUFRLENBQUN0RixhQUFhLENBQUUsd0RBQXlELENBQUM7RUFFekdtSSxpREFBaUQsQ0FBQyxDQUFDLENBQUNwSCxPQUFPLENBQUUsVUFBVW5CLEdBQUcsRUFBRTtJQUMzRSxNQUFNMEksR0FBRyxHQUFHaEQsUUFBUSxDQUFDdEYsYUFBYSxDQUFFLG9DQUFvQyxHQUFHSixHQUFHLEdBQUcsSUFBSyxDQUFDO0lBQ3ZGLElBQUssQ0FBRTBJLEdBQUcsRUFBRztNQUNaO0lBQ0Q7SUFDQUEsR0FBRyxDQUFDd0IsTUFBTSxHQUFHLENBQUVILFNBQVM7SUFDeEJyQixHQUFHLENBQUN5QixZQUFZLENBQUUsYUFBYSxFQUFFSixTQUFTLEdBQUcsT0FBTyxHQUFHLE1BQU8sQ0FBQztJQUMvRHJCLEdBQUcsQ0FBQ08sU0FBUyxDQUFDQyxNQUFNLENBQUUsV0FBVyxFQUFFLENBQUVhLFNBQVUsQ0FBQztFQUNqRCxDQUFFLENBQUM7RUFFSCxJQUFLQyxTQUFTLEVBQUc7SUFDaEJBLFNBQVMsQ0FBQ0UsTUFBTSxHQUFHLENBQUVILFNBQVM7SUFDOUJDLFNBQVMsQ0FBQ0csWUFBWSxDQUFFLGFBQWEsRUFBRUosU0FBUyxHQUFHLE9BQU8sR0FBRyxNQUFPLENBQUM7SUFDckVDLFNBQVMsQ0FBQ2YsU0FBUyxDQUFDQyxNQUFNLENBQUUsV0FBVyxFQUFFLENBQUVhLFNBQVUsQ0FBQztFQUN2RDtFQUVBLElBQUtFLGNBQWMsRUFBRztJQUNyQkEsY0FBYyxDQUFDQyxNQUFNLEdBQUcsQ0FBRUgsU0FBUztJQUNuQ0UsY0FBYyxDQUFDRSxZQUFZLENBQUUsYUFBYSxFQUFFSixTQUFTLEdBQUcsT0FBTyxHQUFHLE1BQU8sQ0FBQztJQUMxRUUsY0FBYyxDQUFDaEIsU0FBUyxDQUFDQyxNQUFNLENBQUUsV0FBVyxFQUFFLENBQUVhLFNBQVUsQ0FBQztFQUM1RDtBQUNEO0FBRUEsU0FBU0ssaUNBQWlDQSxDQUFDbkosT0FBTyxFQUFFO0VBQ25ELElBQUl1RixLQUFLLEdBQU90RyxNQUFNLENBQUVlLE9BQU8sQ0FBQ29ILDRCQUE0QixJQUFJLFNBQVUsQ0FBQztFQUUzRSxJQUFLN0IsS0FBSyxLQUFLLFNBQVMsRUFBRztJQUMxQixNQUFNNkQsY0FBYyxHQUFHNUUsTUFBTSxDQUFDeUIsc0JBQXNCLElBQUl6QixNQUFNLENBQUN5QixzQkFBc0IsQ0FBQ29ELGlCQUFpQixHQUNwRzdFLE1BQU0sQ0FBQ3lCLHNCQUFzQixDQUFDb0QsaUJBQWlCLEdBQy9DLENBQUMsQ0FBQztJQUNMckosT0FBTyxHQUFHcEIsTUFBTSxDQUFDYyxNQUFNLENBQUUsQ0FBQyxDQUFDLEVBQUUwSixjQUFjLElBQUksQ0FBQyxDQUFFLENBQUM7SUFDbkQ3RCxLQUFLLEdBQUd0RyxNQUFNLENBQUVlLE9BQU8sQ0FBQ29ILDRCQUE0QixJQUFJLFVBQVcsQ0FBQztFQUNyRTtFQUVBLElBQUs3QixLQUFLLEtBQUssVUFBVSxFQUFHO0lBQzNCLE9BQU8sSUFBSTtFQUNaO0VBRUEsSUFBS0EsS0FBSyxLQUFLLFFBQVEsRUFBRztJQUN6QixPQUFPRCxnREFBZ0QsQ0FBRUMsS0FBSyxFQUFFdkYsT0FBUSxDQUFDO0VBQzFFO0VBRUEsT0FBTztJQUNONEUsVUFBVSxFQUFHYSx3Q0FBd0MsQ0FBRXpGLE9BQU8sQ0FBQ3NKLDZCQUE2QixFQUFFLFNBQVUsQ0FBQztJQUN6R3pFLFdBQVcsRUFBRVksd0NBQXdDLENBQUV6RixPQUFPLENBQUN1Six5QkFBeUIsRUFBRSxTQUFVLENBQUM7SUFDckd6RSxXQUFXLEVBQUV3Qix5Q0FBeUMsQ0FBRXRHLE9BQU8sQ0FBQ3dKLHlCQUF5QixFQUFFLEtBQU0sQ0FBQztJQUNsR3pFLE1BQU0sRUFBT3VCLHlDQUF5QyxDQUFFdEcsT0FBTyxDQUFDeUosMEJBQTBCLEVBQUUsS0FBTSxDQUFDO0lBQ25HekUsT0FBTyxFQUFNdUIsMENBQTBDLENBQUV2RyxPQUFPLENBQUMwSixvQkFBb0IsRUFBRSxXQUFZLENBQUM7SUFDcEd6RSxNQUFNLEVBQU87RUFDZCxDQUFDO0FBQ0Y7QUFFQSxTQUFTMEUsK0NBQStDQSxDQUFDM0osT0FBTyxFQUFFO0VBQ2pFQSxPQUFPLEdBQUdBLE9BQU8sSUFBSSxPQUFPQSxPQUFPLEtBQUssUUFBUSxHQUFHQSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0VBRS9ELElBQUssQ0FBRTRJLHlDQUF5QyxDQUFFNUksT0FBUSxDQUFDLEVBQUc7SUFDN0QsSUFDQ29GLHVDQUF1QyxDQUFFcEYsT0FBUSxDQUFDLElBQ2xELE1BQU0sS0FBS2YsTUFBTSxDQUFFZSxPQUFPLENBQUNvSCw0QkFBNEIsSUFBSSxFQUFHLENBQUMsRUFDOUQ7TUFDRCxPQUFPO1FBQ053QyxTQUFTLEVBQVEsU0FBUztRQUMxQkMsZUFBZSxFQUFFLEVBQUU7UUFDbkJDLFNBQVMsRUFBUSxFQUFFO1FBQ25CQyxXQUFXLEVBQU07TUFDbEIsQ0FBQztJQUNGO0lBQ0EsT0FBTztNQUNOSCxTQUFTLEVBQVEsRUFBRTtNQUNuQkMsZUFBZSxFQUFFLEVBQUU7TUFDbkJDLFNBQVMsRUFBUSxFQUFFO01BQ25CQyxXQUFXLEVBQU07SUFDbEIsQ0FBQztFQUNGO0VBRUEsT0FBTztJQUNOSCxTQUFTLEVBQVEvRCxpREFBaUQsQ0FBRTdGLE9BQU8sQ0FBQ2dLLHVCQUF3QixDQUFDO0lBQ3JHSCxlQUFlLEVBQUVoRSxpREFBaUQsQ0FBRTdGLE9BQU8sQ0FBQ2lLLG1DQUFvQyxDQUFDO0lBQ2pISCxTQUFTLEVBQVFqRSxpREFBaUQsQ0FBRTdGLE9BQU8sQ0FBQ2tLLDZCQUE4QixDQUFDO0lBQzNHSCxXQUFXLEVBQU1sRSxpREFBaUQsQ0FBRTdGLE9BQU8sQ0FBQ21LLCtCQUFnQztFQUM3RyxDQUFDO0FBQ0Y7QUFFQSxTQUFTQyxvQ0FBb0NBLENBQUM1SyxLQUFLLEVBQUVDLEdBQUcsRUFBRTtFQUN6RCxNQUFNTyxPQUFPLEdBQUdnSCx5Q0FBeUMsQ0FBRXZILEdBQUcsRUFBRUEsR0FBRyxJQUFJQSxHQUFHLENBQUNWLEdBQUcsRUFBRVMsS0FBTSxDQUFDO0VBQ3ZGLE1BQU02SyxRQUFRLEdBQUdsQixpQ0FBaUMsQ0FBRW5KLE9BQVEsQ0FBQztFQUM3RCxNQUFNc0ssTUFBTSxHQUFHWCwrQ0FBK0MsQ0FBRTNKLE9BQVEsQ0FBQztFQUN6RSxNQUFNOEksU0FBUyxHQUFHRix5Q0FBeUMsQ0FBRTVJLE9BQVEsQ0FBQztFQUN0RSxNQUFNdUssSUFBSSxHQUFHOUssR0FBRyxJQUFJQSxHQUFHLENBQUNFLE1BQU07RUFFOUI0SSxpREFBaUQsQ0FBRXZJLE9BQVEsQ0FBQztFQUM1RDZJLDhDQUE4QyxDQUFFN0ksT0FBUSxDQUFDO0VBRXpELElBQUssQ0FBRXVLLElBQUksSUFBSSxDQUFFQSxJQUFJLENBQUMzQyxnQkFBZ0IsRUFBRztJQUN4QztFQUNEO0VBRUEsTUFBTTRDLEtBQUssR0FBR0QsSUFBSSxDQUFDM0MsZ0JBQWdCLENBQUUsMkRBQTRELENBQUM7RUFDbEcsSUFBSyxDQUFFNEMsS0FBSyxDQUFDOUQsTUFBTSxFQUFHO0lBQ3JCO0VBQ0Q7RUFFQThELEtBQUssQ0FBQ3RLLE9BQU8sQ0FBRSxVQUFVd0gsSUFBSSxFQUFFO0lBQzlCLElBQUssQ0FBRUEsSUFBSSxJQUFJLENBQUVBLElBQUksQ0FBQ25DLEtBQUssRUFBRztNQUM3QjtJQUNEO0lBQ0FtQyxJQUFJLENBQUNNLFNBQVMsQ0FBQ0MsTUFBTSxDQUFFLGlDQUFpQyxFQUFFYSxTQUFVLENBQUM7SUFDckUsSUFBSyxDQUFFdUIsUUFBUSxFQUFHO01BQ2pCM0MsSUFBSSxDQUFDbkMsS0FBSyxDQUFDa0YsY0FBYyxDQUFFLDRCQUE2QixDQUFDO01BQ3pEL0MsSUFBSSxDQUFDbkMsS0FBSyxDQUFDa0YsY0FBYyxDQUFFLDhCQUErQixDQUFDO01BQzNEL0MsSUFBSSxDQUFDbkMsS0FBSyxDQUFDa0YsY0FBYyxDQUFFLDhCQUErQixDQUFDO01BQzNEL0MsSUFBSSxDQUFDbkMsS0FBSyxDQUFDa0YsY0FBYyxDQUFFLCtCQUFnQyxDQUFDO01BQzVEL0MsSUFBSSxDQUFDbkMsS0FBSyxDQUFDa0YsY0FBYyxDQUFFLHlCQUEwQixDQUFDO01BQ3REL0MsSUFBSSxDQUFDbkMsS0FBSyxDQUFDa0YsY0FBYyxDQUFFLDRCQUE2QixDQUFDO0lBQzFELENBQUMsTUFBTTtNQUNOL0MsSUFBSSxDQUFDbkMsS0FBSyxDQUFDbUYsV0FBVyxDQUFFLDRCQUE0QixFQUFFTCxRQUFRLENBQUN6RixVQUFXLENBQUM7TUFDM0U4QyxJQUFJLENBQUNuQyxLQUFLLENBQUNtRixXQUFXLENBQUUsOEJBQThCLEVBQUVMLFFBQVEsQ0FBQ3hGLFdBQVksQ0FBQztNQUM5RTZDLElBQUksQ0FBQ25DLEtBQUssQ0FBQ21GLFdBQVcsQ0FBRSw4QkFBOEIsRUFBRUwsUUFBUSxDQUFDdkYsV0FBWSxDQUFDO01BQzlFNEMsSUFBSSxDQUFDbkMsS0FBSyxDQUFDbUYsV0FBVyxDQUFFLCtCQUErQixFQUFFTCxRQUFRLENBQUN0RixNQUFPLENBQUM7TUFDMUUyQyxJQUFJLENBQUNuQyxLQUFLLENBQUNtRixXQUFXLENBQUUseUJBQXlCLEVBQUVMLFFBQVEsQ0FBQ3JGLE9BQVEsQ0FBQztNQUNyRTBDLElBQUksQ0FBQ25DLEtBQUssQ0FBQ21GLFdBQVcsQ0FBRSw0QkFBNEIsRUFBRUwsUUFBUSxDQUFDcEYsTUFBTyxDQUFDO0lBQ3hFO0lBRUEsSUFBS3FGLE1BQU0sQ0FBQ1YsU0FBUyxFQUFHO01BQ3ZCbEMsSUFBSSxDQUFDbkMsS0FBSyxDQUFDbUYsV0FBVyxDQUFFLHlCQUF5QixFQUFFSixNQUFNLENBQUNWLFNBQVUsQ0FBQztNQUNyRWxDLElBQUksQ0FBQ25DLEtBQUssQ0FBQ21GLFdBQVcsQ0FBRSxrQ0FBa0MsRUFBRUosTUFBTSxDQUFDVixTQUFVLENBQUM7SUFDL0UsQ0FBQyxNQUFNO01BQ05sQyxJQUFJLENBQUNuQyxLQUFLLENBQUNrRixjQUFjLENBQUUseUJBQTBCLENBQUM7TUFDdEQvQyxJQUFJLENBQUNuQyxLQUFLLENBQUNrRixjQUFjLENBQUUsa0NBQW1DLENBQUM7SUFDaEU7SUFFQSxJQUFLSCxNQUFNLENBQUNULGVBQWUsRUFBRztNQUM3Qm5DLElBQUksQ0FBQ25DLEtBQUssQ0FBQ21GLFdBQVcsQ0FBRSxvQ0FBb0MsRUFBRUosTUFBTSxDQUFDVCxlQUFnQixDQUFDO01BQ3RGbkMsSUFBSSxDQUFDbkMsS0FBSyxDQUFDbUYsV0FBVyxDQUFFLDhCQUE4QixFQUFFSixNQUFNLENBQUNULGVBQWdCLENBQUM7SUFDakYsQ0FBQyxNQUFNO01BQ05uQyxJQUFJLENBQUNuQyxLQUFLLENBQUNrRixjQUFjLENBQUUsb0NBQXFDLENBQUM7TUFDakUvQyxJQUFJLENBQUNuQyxLQUFLLENBQUNrRixjQUFjLENBQUUsOEJBQStCLENBQUM7SUFDNUQ7SUFFQSxJQUFLSCxNQUFNLENBQUNSLFNBQVMsRUFBRztNQUN2QnBDLElBQUksQ0FBQ25DLEtBQUssQ0FBQ21GLFdBQVcsQ0FBRSw4QkFBOEIsRUFBRUosTUFBTSxDQUFDUixTQUFVLENBQUM7SUFDM0UsQ0FBQyxNQUFNO01BQ05wQyxJQUFJLENBQUNuQyxLQUFLLENBQUNrRixjQUFjLENBQUUsOEJBQStCLENBQUM7SUFDNUQ7SUFFQSxJQUFLSCxNQUFNLENBQUNQLFdBQVcsRUFBRztNQUN6QnJDLElBQUksQ0FBQ25DLEtBQUssQ0FBQ21GLFdBQVcsQ0FBRSxnQ0FBZ0MsRUFBRUosTUFBTSxDQUFDUCxXQUFZLENBQUM7TUFDOUVyQyxJQUFJLENBQUNuQyxLQUFLLENBQUNtRixXQUFXLENBQUUsc0NBQXNDLEVBQUVKLE1BQU0sQ0FBQ1AsV0FBWSxDQUFDO0lBQ3JGLENBQUMsTUFBTTtNQUNOckMsSUFBSSxDQUFDbkMsS0FBSyxDQUFDa0YsY0FBYyxDQUFFLGdDQUFpQyxDQUFDO01BQzdEL0MsSUFBSSxDQUFDbkMsS0FBSyxDQUFDa0YsY0FBYyxDQUFFLHNDQUF1QyxDQUFDO0lBQ3BFO0VBQ0QsQ0FBRSxDQUFDO0FBQ0o7QUFFQSxTQUFTRSxvQ0FBb0NBLENBQUEsRUFBRztFQUMvQyxPQUFPbkcsTUFBTSxDQUFDeUIsc0JBQXNCLElBQUksQ0FBQyxDQUFDO0FBQzNDO0FBRUEsU0FBUzJFLHVDQUF1Q0EsQ0FBQSxFQUFHO0VBQ2xELE1BQU1DLElBQUksR0FBR0Ysb0NBQW9DLENBQUMsQ0FBQztFQUNuRCxPQUFPRSxJQUFJLENBQUNDLGtCQUFrQixJQUFJLE9BQU9ELElBQUksQ0FBQ0Msa0JBQWtCLEtBQUssUUFBUSxHQUFHRCxJQUFJLENBQUNDLGtCQUFrQixHQUFHLENBQUMsQ0FBQztBQUM3RztBQUVBLFNBQVNDLDJDQUEyQ0EsQ0FBQSxFQUFHO0VBQ3RELE9BQU8sQ0FDTixzQ0FBc0MsRUFDdEMsa0NBQWtDLEVBQ2xDLGtDQUFrQyxFQUNsQyxtQ0FBbUMsRUFDbkMsc0NBQXNDLEVBQ3RDLHdDQUF3QyxFQUN4QyxnQ0FBZ0MsRUFDaEMsNENBQTRDLEVBQzVDLHNDQUFzQyxFQUN0Qyx3Q0FBd0MsRUFDeEMsNkNBQTZDLEVBQzdDLHVDQUF1QyxFQUN2Qyx5Q0FBeUMsRUFDekMsbURBQW1ELEVBQ25ELDZDQUE2QyxFQUM3QywrQ0FBK0MsRUFDL0MsdURBQXVELEVBQ3ZELGlEQUFpRCxFQUNqRCxtREFBbUQsRUFDbkQsNkRBQTZELEVBQzdELHVEQUF1RCxFQUN2RCx5REFBeUQsRUFDekQseUNBQXlDLEVBQ3pDLDBDQUEwQyxDQUMxQztBQUNGO0FBRUEsU0FBU0MsK0NBQStDQSxDQUFBLEVBQUc7RUFDMUQsTUFBTUgsSUFBSSxHQUFHRixvQ0FBb0MsQ0FBQyxDQUFDO0VBQ25ELE1BQU1NLFNBQVMsR0FBR0osSUFBSSxDQUFDSywwQkFBMEIsSUFBSSxPQUFPTCxJQUFJLENBQUNLLDBCQUEwQixLQUFLLFFBQVEsR0FDckdMLElBQUksQ0FBQ0ssMEJBQTBCLEdBQy9CLENBQUMsQ0FBQztFQUVMLE9BQU90TSxNQUFNLENBQUNjLE1BQU0sQ0FBRTtJQUNyQnlMLG9DQUFvQyxFQUFTLFNBQVM7SUFDdERDLGdDQUFnQyxFQUFhLFNBQVM7SUFDdERDLGdDQUFnQyxFQUFhLEtBQUs7SUFDbERDLGlDQUFpQyxFQUFZLEtBQUs7SUFDbERDLG9DQUFvQyxFQUFTLE1BQU07SUFDbkRDLHNDQUFzQyxFQUFPLE1BQU07SUFDbkRDLDhCQUE4QixFQUFlLFNBQVM7SUFDdERDLDBDQUEwQyxFQUFHLFNBQVM7SUFDdERDLG9DQUFvQyxFQUFTLFNBQVM7SUFDdERDLHNDQUFzQyxFQUFPLFNBQVM7SUFDdERDLDJDQUEyQyxFQUFFLFNBQVM7SUFDdERDLHFDQUFxQyxFQUFRLFNBQVM7SUFDdERDLHVDQUF1QyxFQUFNLFNBQVM7SUFDdERDLGlEQUFpRCxFQUFFLFNBQVM7SUFDNURDLDJDQUEyQyxFQUFFLFNBQVM7SUFDdERDLDZDQUE2QyxFQUFFLFNBQVM7SUFDeERDLHFEQUFxRCxFQUFFLFNBQVM7SUFDaEVDLCtDQUErQyxFQUFFLFNBQVM7SUFDMURDLGlEQUFpRCxFQUFFLFNBQVM7SUFDNURDLDJEQUEyRCxFQUFFLFNBQVM7SUFDdEVDLHFEQUFxRCxFQUFFLFNBQVM7SUFDaEVDLHVEQUF1RCxFQUFFLFNBQVM7SUFDbEVDLHVDQUF1QyxFQUFRLEtBQUs7SUFDcERDLHdDQUF3QyxFQUFPO0VBQ2hELENBQUMsRUFBRXpCLFNBQVUsQ0FBQztBQUNmO0FBRUEsU0FBUzBCLCtDQUErQ0EsQ0FBQ2xOLEdBQUcsRUFBRVYsR0FBRyxFQUFFUyxLQUFLLEVBQUU7RUFDekUsTUFBTXFMLElBQUksR0FBR0Ysb0NBQW9DLENBQUMsQ0FBQztFQUNuRCxJQUFJM0ssT0FBTyxHQUFHNkssSUFBSSxDQUFDK0IsaUJBQWlCLElBQUksT0FBTy9CLElBQUksQ0FBQytCLGlCQUFpQixLQUFLLFFBQVEsR0FDL0VoTyxNQUFNLENBQUNjLE1BQU0sQ0FBRSxDQUFDLENBQUMsRUFBRW1MLElBQUksQ0FBQytCLGlCQUFrQixDQUFDLEdBQzNDLENBQUMsQ0FBQztFQUVMLElBQUtwSSxNQUFNLENBQUN5QyxxQkFBcUIsSUFBSSxPQUFPekMsTUFBTSxDQUFDeUMscUJBQXFCLENBQUNDLE9BQU8sS0FBSyxVQUFVLEVBQUc7SUFDakdsSCxPQUFPLEdBQUdwQixNQUFNLENBQUNjLE1BQU0sQ0FBRU0sT0FBTyxFQUFFd0UsTUFBTSxDQUFDeUMscUJBQXFCLENBQUNDLE9BQU8sQ0FBRSxRQUFTLENBQUMsSUFBSSxDQUFDLENBQUUsQ0FBQztFQUMzRjtFQUVBLElBQUt6SCxHQUFHLElBQUlBLEdBQUcsQ0FBQ08sT0FBTyxJQUFJLE9BQU9QLEdBQUcsQ0FBQ08sT0FBTyxLQUFLLFFBQVEsRUFBRztJQUM1REEsT0FBTyxHQUFHcEIsTUFBTSxDQUFDYyxNQUFNLENBQUVNLE9BQU8sRUFBRVAsR0FBRyxDQUFDTyxPQUFRLENBQUM7RUFDaEQ7RUFDQSxJQUFLakIsR0FBRyxFQUFHO0lBQ1ZpQixPQUFPLENBQUNmLE1BQU0sQ0FBRUYsR0FBSSxDQUFDLENBQUMsR0FBR1MsS0FBSztFQUMvQjtFQUNBLElBQUssQ0FBRVEsT0FBTyxDQUFDNk0sa0JBQWtCLEVBQUc7SUFDbkM3TSxPQUFPLENBQUM2TSxrQkFBa0IsR0FBRyxnQkFBZ0I7RUFDOUM7RUFFQSxPQUFPN00sT0FBTztBQUNmO0FBRUEsU0FBUzhNLHNDQUFzQ0EsQ0FBQ3ZJLEtBQUssRUFBRWpCLE1BQU0sRUFBRXlKLE1BQU0sRUFBRTtFQUN0RSxJQUFJOUwsTUFBTSxHQUFHNkUsaURBQWlELENBQUV2QixLQUFNLENBQUMsQ0FBQzVDLE9BQU8sQ0FBRSxHQUFHLEVBQUUsRUFBRyxDQUFDO0VBQzFGLE1BQU1xTCxXQUFXLEdBQUd2SCx3Q0FBd0MsQ0FBRW5DLE1BQU0sRUFBRSxTQUFVLENBQUMsQ0FBQzNCLE9BQU8sQ0FBRSxHQUFHLEVBQUUsRUFBRyxDQUFDO0VBQ3BHLE1BQU1zTCxRQUFRLEdBQUcsRUFBRTtFQUNuQixJQUFLLENBQUVoTSxNQUFNLEVBQUc7SUFDZixPQUFPLEVBQUU7RUFDVjtFQUNBLElBQUtBLE1BQU0sQ0FBQ3lGLE1BQU0sS0FBSyxDQUFDLEVBQUc7SUFDMUJ6RixNQUFNLEdBQUdBLE1BQU0sQ0FBQ1UsT0FBTyxDQUFFLElBQUksRUFBRSxVQUFVbkMsS0FBSyxFQUFFO01BQUUsT0FBT0EsS0FBSyxHQUFHQSxLQUFLO0lBQUUsQ0FBRSxDQUFDO0VBQzVFO0VBQ0EsS0FBTSxJQUFJME4sS0FBSyxHQUFHLENBQUMsRUFBRUEsS0FBSyxHQUFHLENBQUMsRUFBRUEsS0FBSyxFQUFFLEVBQUc7SUFDekMsTUFBTUMsY0FBYyxHQUFHQyxRQUFRLENBQUVuTSxNQUFNLENBQUNvTSxNQUFNLENBQUVILEtBQUssR0FBRyxDQUFDLEVBQUUsQ0FBRSxDQUFDLEVBQUUsRUFBRyxDQUFDO0lBQ3BFLE1BQU1JLGNBQWMsR0FBR0YsUUFBUSxDQUFFSixXQUFXLENBQUNLLE1BQU0sQ0FBRUgsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFFLENBQUMsRUFBRSxFQUFHLENBQUM7SUFDekVELFFBQVEsQ0FBQ00sSUFBSSxDQUFFQyxJQUFJLENBQUNDLEtBQUssQ0FBRU4sY0FBYyxHQUFLLENBQUVHLGNBQWMsR0FBR0gsY0FBYyxJQUFLSixNQUFTLENBQUUsQ0FBQztFQUNqRztFQUNBLE9BQU8sR0FBRyxHQUFHRSxRQUFRLENBQUN0TyxHQUFHLENBQUUsVUFBVStPLE9BQU8sRUFBRTtJQUFFLE9BQU8sQ0FBRSxHQUFHLEdBQUdBLE9BQU8sQ0FBQ0MsUUFBUSxDQUFFLEVBQUcsQ0FBQyxFQUFHQyxLQUFLLENBQUUsQ0FBQyxDQUFFLENBQUM7RUFBRSxDQUFFLENBQUMsQ0FBQ2hILElBQUksQ0FBRSxFQUFHLENBQUM7QUFDcEg7QUFFQSxTQUFTaUgseUNBQXlDQSxDQUFDdEosS0FBSyxFQUFFO0VBQ3pELElBQUl1SixHQUFHLEdBQUdoSSxpREFBaUQsQ0FBRXZCLEtBQU0sQ0FBQyxDQUFDNUMsT0FBTyxDQUFFLEdBQUcsRUFBRSxFQUFHLENBQUM7RUFDdkYsSUFBSyxDQUFFbU0sR0FBRyxFQUFHO0lBQ1osT0FBTyxDQUFDO0VBQ1Q7RUFDQSxJQUFLQSxHQUFHLENBQUNwSCxNQUFNLEtBQUssQ0FBQyxFQUFHO0lBQ3ZCb0gsR0FBRyxHQUFHQSxHQUFHLENBQUNuTSxPQUFPLENBQUUsSUFBSSxFQUFFLFVBQVVuQyxLQUFLLEVBQUU7TUFBRSxPQUFPQSxLQUFLLEdBQUdBLEtBQUs7SUFBRSxDQUFFLENBQUM7RUFDdEU7RUFDQSxNQUFNeU4sUUFBUSxHQUFHLENBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUUsQ0FBQ3RPLEdBQUcsQ0FBRSxVQUFVdU8sS0FBSyxFQUFFO0lBQ2xELE1BQU1RLE9BQU8sR0FBR04sUUFBUSxDQUFFVSxHQUFHLENBQUNULE1BQU0sQ0FBRUgsS0FBSyxHQUFHLENBQUMsRUFBRSxDQUFFLENBQUMsRUFBRSxFQUFHLENBQUMsR0FBRyxHQUFHO0lBQ2hFLE9BQU9RLE9BQU8sSUFBSSxPQUFPLEdBQUdBLE9BQU8sR0FBRyxLQUFLLEdBQUdGLElBQUksQ0FBQ08sR0FBRyxDQUFFLENBQUVMLE9BQU8sR0FBRyxLQUFLLElBQUssS0FBSyxFQUFFLEdBQUksQ0FBQztFQUMzRixDQUFFLENBQUM7RUFDSCxPQUFTLE1BQU0sR0FBR1QsUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFPLE1BQU0sR0FBR0EsUUFBUSxDQUFDLENBQUMsQ0FBRyxHQUFLLE1BQU0sR0FBR0EsUUFBUSxDQUFDLENBQUMsQ0FBRztBQUN0Rjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU2Usd0NBQXdDQSxDQUFDbk4sUUFBUSxFQUFFYixPQUFPLEVBQUVpTyw2QkFBNkIsRUFBRTtFQUNuRyxJQUFLaFAsTUFBTSxDQUFFZSxPQUFPLENBQUNrTywyQkFBMkIsSUFBSSxLQUFNLENBQUMsS0FBSyxJQUFJLEVBQUc7SUFDdEUsT0FBT3JOLFFBQVE7RUFDaEI7RUFDQSxNQUFNc04sTUFBTSxHQUFHckksaURBQWlELENBQUU5RixPQUFPLENBQUNxRyx5QkFBMEIsQ0FBQztFQUNyRyxJQUFLLENBQUU4SCxNQUFNLEVBQUc7SUFDZixPQUFPdE4sUUFBUTtFQUNoQjtFQUNBLE1BQU11TixTQUFTLEdBQUdQLHlDQUF5QyxDQUFFTSxNQUFPLENBQUM7RUFDckUsTUFBTUUsUUFBUSxHQUFHRCxTQUFTLEdBQUcsSUFBSSxHQUFHLFNBQVMsR0FBRyxTQUFTO0VBQ3pELE1BQU1FLFlBQVksR0FBRyxTQUFTLEtBQUtELFFBQVEsR0FBRyxTQUFTLEdBQUcsU0FBUztFQUNuRSxNQUFNRSxLQUFLLEdBQUd6QixzQ0FBc0MsQ0FBRXFCLE1BQU0sRUFBRUcsWUFBWSxFQUFFLElBQUssQ0FBQztFQUNsRixNQUFNRSxjQUFjLEdBQUdILFFBQVE7RUFFL0IsTUFBTUksY0FBYyxHQUFHO0lBQ3RCLDBCQUEwQixFQUFFTixNQUFNO0lBQ2xDLGdDQUFnQyxFQUFFSSxLQUFLO0lBQ3ZDLG1DQUFtQyxFQUFFRixRQUFRO0lBQzdDLHNDQUFzQyxFQUFFRixNQUFNO0lBQzlDLHNDQUFzQyxFQUFFQSxNQUFNO0lBQzlDLHlDQUF5QyxFQUFFQSxNQUFNO0lBQ2pELGtDQUFrQyxFQUFFQSxNQUFNO0lBQzFDLGdDQUFnQyxFQUFFQSxNQUFNO0lBQ3hDLHFDQUFxQyxFQUFFQSxNQUFNO0lBQzdDLHlDQUF5QyxFQUFFQSxNQUFNO0lBQ2pELGlDQUFpQyxFQUFFQSxNQUFNO0lBQ3pDLCtCQUErQixFQUFFRSxRQUFRO0lBQ3pDLG1DQUFtQyxFQUFFQSxRQUFRO0lBQzdDLDJDQUEyQyxFQUFFRSxLQUFLO0lBQ2xELHVDQUF1QyxFQUFFQSxLQUFLO0lBQzlDLHFDQUFxQyxFQUFFQyxjQUFjO0lBQ3JELDZDQUE2QyxFQUFFTCxNQUFNO0lBQ3JELCtDQUErQyxFQUFFSSxLQUFLO0lBQ3RELDhCQUE4QixFQUFFSjtFQUNqQyxDQUFDO0VBRUQsSUFBS0YsNkJBQTZCLEVBQUc7SUFDcEMsQ0FDQyxxQ0FBcUMsRUFDckMseUNBQXlDLEVBQ3pDLGlDQUFpQyxFQUNqQywrQkFBK0IsRUFDL0IsbUNBQW1DLEVBQ25DLDJDQUEyQyxFQUMzQyx1Q0FBdUMsRUFDdkMscUNBQXFDLEVBQ3JDLDZDQUE2QyxFQUM3QywrQ0FBK0MsQ0FDL0MsQ0FBQy9OLE9BQU8sQ0FBRSxVQUFVd08sWUFBWSxFQUFFO01BQ2xDLE9BQU9ELGNBQWMsQ0FBQ0MsWUFBWSxDQUFDO0lBQ3BDLENBQUUsQ0FBQztFQUNKO0VBRUEsT0FBTzlQLE1BQU0sQ0FBQ2MsTUFBTSxDQUFFLENBQUMsQ0FBQyxFQUFFbUIsUUFBUSxFQUFFNE4sY0FBZSxDQUFDO0FBQ3JEO0FBRUEsU0FBU0UsNENBQTRDQSxDQUFDM08sT0FBTyxFQUFFO0VBQzlEQSxPQUFPLEdBQUdBLE9BQU8sSUFBSSxPQUFPQSxPQUFPLEtBQUssUUFBUSxHQUFHQSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0VBQy9ELE1BQU11RixLQUFLLEdBQUd0RyxNQUFNLENBQUVlLE9BQU8sQ0FBQzZNLGtCQUFrQixJQUFJLGdCQUFpQixDQUFDO0VBQ3RFLE1BQU1ySCxPQUFPLEdBQUdvRix1Q0FBdUMsQ0FBQyxDQUFDO0VBQ3pELE1BQU1nRSxNQUFNLEdBQUdwSixPQUFPLENBQUNELEtBQUssQ0FBQyxJQUFJQyxPQUFPLENBQUNxSixjQUFjLElBQUksQ0FBQyxDQUFDO0VBQzdELE1BQU1DLFFBQVEsR0FBRzlELCtDQUErQyxDQUFDLENBQUM7RUFFbEUsSUFBSyxRQUFRLEtBQUt6RixLQUFLLEVBQUc7SUFDekIsT0FBT3lJLHdDQUF3QyxDQUFFWSxNQUFNLENBQUMvTixRQUFRLElBQUksT0FBTytOLE1BQU0sQ0FBQy9OLFFBQVEsS0FBSyxRQUFRLEdBQUdqQyxNQUFNLENBQUNjLE1BQU0sQ0FBRSxDQUFDLENBQUMsRUFBRWtQLE1BQU0sQ0FBQy9OLFFBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFYixPQUFRLENBQUM7RUFDL0o7RUFFQSxNQUFNYSxRQUFRLEdBQUc7SUFDaEIsNEJBQTRCLEVBQVk0RSx3Q0FBd0MsQ0FBRXpGLE9BQU8sQ0FBQ21MLG9DQUFvQyxFQUFFMkQsUUFBUSxDQUFDM0Qsb0NBQXFDLENBQUM7SUFDL0ssOEJBQThCLEVBQVUxRix3Q0FBd0MsQ0FBRXpGLE9BQU8sQ0FBQ29MLGdDQUFnQyxFQUFFMEQsUUFBUSxDQUFDMUQsZ0NBQWlDLENBQUM7SUFDdkssOEJBQThCLEVBQVU5RSx5Q0FBeUMsQ0FBRXRHLE9BQU8sQ0FBQ3FMLGdDQUFnQyxFQUFFeUQsUUFBUSxDQUFDekQsZ0NBQWlDLENBQUM7SUFDeEssK0JBQStCLEVBQVMvRSx5Q0FBeUMsQ0FBRXRHLE9BQU8sQ0FBQ3NMLGlDQUFpQyxFQUFFd0QsUUFBUSxDQUFDeEQsaUNBQWtDLENBQUM7SUFDMUsseUJBQXlCLEVBQWVoRix5Q0FBeUMsQ0FBRXRHLE9BQU8sQ0FBQ3VMLG9DQUFvQyxFQUFFdUQsUUFBUSxDQUFDdkQsb0NBQXFDLENBQUMsR0FBRyxHQUFHLEdBQUdqRix5Q0FBeUMsQ0FBRXRHLE9BQU8sQ0FBQ3dMLHNDQUFzQyxFQUFFc0QsUUFBUSxDQUFDdEQsc0NBQXVDLENBQUM7SUFDclUsNEJBQTRCLEVBQVkscUNBQXFDO0lBQzdFLHlCQUF5QixFQUFlL0Ysd0NBQXdDLENBQUV6RixPQUFPLENBQUN5TCw4QkFBOEIsRUFBRXFELFFBQVEsQ0FBQ3JELDhCQUErQixDQUFDO0lBQ25LLGtDQUFrQyxFQUFNaEcsd0NBQXdDLENBQUV6RixPQUFPLENBQUN5TCw4QkFBOEIsRUFBRXFELFFBQVEsQ0FBQ3JELDhCQUErQixDQUFDO0lBQ25LLCtCQUErQixFQUFTLFNBQVM7SUFDakQsb0NBQW9DLEVBQUloRyx3Q0FBd0MsQ0FBRXpGLE9BQU8sQ0FBQzBMLDBDQUEwQyxFQUFFb0QsUUFBUSxDQUFDcEQsMENBQTJDLENBQUM7SUFDM0wsOEJBQThCLEVBQVVqRyx3Q0FBd0MsQ0FBRXpGLE9BQU8sQ0FBQzBMLDBDQUEwQyxFQUFFb0QsUUFBUSxDQUFDcEQsMENBQTJDLENBQUM7SUFDM0wsOEJBQThCLEVBQVVqRyx3Q0FBd0MsQ0FBRXpGLE9BQU8sQ0FBQzJMLG9DQUFvQyxFQUFFbUQsUUFBUSxDQUFDbkQsb0NBQXFDLENBQUM7SUFDL0ssZ0NBQWdDLEVBQVFsRyx3Q0FBd0MsQ0FBRXpGLE9BQU8sQ0FBQzRMLHNDQUFzQyxFQUFFa0QsUUFBUSxDQUFDbEQsc0NBQXVDLENBQUM7SUFDbkwsc0NBQXNDLEVBQUVuRyx3Q0FBd0MsQ0FBRXpGLE9BQU8sQ0FBQzRMLHNDQUFzQyxFQUFFa0QsUUFBUSxDQUFDbEQsc0NBQXVDLENBQUM7SUFDbkwsc0NBQXNDLEVBQUUsU0FBUztJQUNqRCxzQ0FBc0MsRUFBRSxTQUFTO0lBQ2pELGtDQUFrQyxFQUFNLG9CQUFvQjtJQUM1RCxrQ0FBa0MsRUFBTXRGLHlDQUF5QyxDQUFFdEcsT0FBTyxDQUFDME0sd0NBQXdDLEVBQUVvQyxRQUFRLENBQUNwQyx3Q0FBeUMsQ0FBQztJQUN4TCxpQ0FBaUMsRUFBTyxPQUFPO0lBQy9DLGdDQUFnQyxFQUFRcEcseUNBQXlDLENBQUV0RyxPQUFPLENBQUN5TSx1Q0FBdUMsRUFBRXFDLFFBQVEsQ0FBQ3JDLHVDQUF3QyxDQUFDO0lBQ3RMLHFDQUFxQyxFQUFHaEgsd0NBQXdDLENBQUV6RixPQUFPLENBQUM2TCwyQ0FBMkMsRUFBRWlELFFBQVEsQ0FBQ2pELDJDQUE0QyxDQUFDO0lBQzdMLHlDQUF5QyxFQUFFcEcsd0NBQXdDLENBQUV6RixPQUFPLENBQUM2TCwyQ0FBMkMsRUFBRWlELFFBQVEsQ0FBQ2pELDJDQUE0QyxDQUFDO0lBQ2hNLGlDQUFpQyxFQUFPcEcsd0NBQXdDLENBQUV6RixPQUFPLENBQUMrTCx1Q0FBdUMsRUFBRStDLFFBQVEsQ0FBQy9DLHVDQUF3QyxDQUFDO0lBQ3JMLCtCQUErQixFQUFTdEcsd0NBQXdDLENBQUV6RixPQUFPLENBQUM4TCxxQ0FBcUMsRUFBRWdELFFBQVEsQ0FBQ2hELHFDQUFzQyxDQUFDO0lBQ2pMLG1DQUFtQyxFQUFLckcsd0NBQXdDLENBQUV6RixPQUFPLENBQUM4TCxxQ0FBcUMsRUFBRWdELFFBQVEsQ0FBQ2hELHFDQUFzQyxDQUFDO0lBQ2pMLDJDQUEyQyxFQUFFckcsd0NBQXdDLENBQUV6RixPQUFPLENBQUNnTSxpREFBaUQsRUFBRThDLFFBQVEsQ0FBQzlDLGlEQUFrRCxDQUFDO0lBQzlNLHVDQUF1QyxFQUFFdkcsd0NBQXdDLENBQUV6RixPQUFPLENBQUNrTSw2Q0FBNkMsRUFBRTRDLFFBQVEsQ0FBQzVDLDZDQUE4QyxDQUFDO0lBQ2xNLHFDQUFxQyxFQUFHekcsd0NBQXdDLENBQUV6RixPQUFPLENBQUNpTSwyQ0FBMkMsRUFBRTZDLFFBQVEsQ0FBQzdDLDJDQUE0QyxDQUFDO0lBQzdMLHlDQUF5QyxFQUFFLFNBQVM7SUFDcEQsa0NBQWtDLEVBQU0sU0FBUztJQUNqRCxnQ0FBZ0MsRUFBUSxTQUFTO0lBQ2pELDJDQUEyQyxFQUFFeEcsd0NBQXdDLENBQUV6RixPQUFPLENBQUNtTSxxREFBcUQsRUFBRTJDLFFBQVEsQ0FBQzNDLHFEQUFzRCxDQUFDO0lBQ3ROLHVDQUF1QyxFQUFFMUcsd0NBQXdDLENBQUV6RixPQUFPLENBQUNxTSxpREFBaUQsRUFBRXlDLFFBQVEsQ0FBQ3pDLGlEQUFrRCxDQUFDO0lBQzFNLHNDQUFzQyxFQUFFL0YseUNBQXlDLENBQUV0RyxPQUFPLENBQUN5TSx1Q0FBdUMsRUFBRXFDLFFBQVEsQ0FBQ3JDLHVDQUF3QyxDQUFDO0lBQ3RMLHFDQUFxQyxFQUFHaEgsd0NBQXdDLENBQUV6RixPQUFPLENBQUNvTSwrQ0FBK0MsRUFBRTBDLFFBQVEsQ0FBQzFDLCtDQUFnRCxDQUFDO0lBQ3JNLHFDQUFxQyxFQUFHLDBCQUEwQjtJQUNsRSxpREFBaUQsRUFBRTNHLHdDQUF3QyxDQUFFekYsT0FBTyxDQUFDc00sMkRBQTJELEVBQUV3QyxRQUFRLENBQUN4QywyREFBNEQsQ0FBQztJQUN4Tyw2Q0FBNkMsRUFBRTdHLHdDQUF3QyxDQUFFekYsT0FBTyxDQUFDd00sdURBQXVELEVBQUVzQyxRQUFRLENBQUN0Qyx1REFBd0QsQ0FBQztJQUM1TiwyQ0FBMkMsRUFBRS9HLHdDQUF3QyxDQUFFekYsT0FBTyxDQUFDdU0scURBQXFELEVBQUV1QyxRQUFRLENBQUN2QyxxREFBc0QsQ0FBQztJQUN0TiwyQ0FBMkMsRUFBRSwwQkFBMEI7SUFDdkUsK0NBQStDLEVBQUU5Ryx3Q0FBd0MsQ0FBRXpGLE9BQU8sQ0FBQ2tNLDZDQUE2QyxFQUFFNEMsUUFBUSxDQUFDNUMsNkNBQThDLENBQUM7SUFDMU0sOEJBQThCLEVBQVU7RUFDekMsQ0FBQztFQUVELE9BQU84Qix3Q0FBd0MsQ0FBRW5OLFFBQVEsRUFBRWIsT0FBTyxFQUFFLElBQUssQ0FBQztBQUMzRTtBQUVBLFNBQVMrTyw0Q0FBNENBLENBQUMvTyxPQUFPLEVBQUU7RUFDOUQsTUFBTTZLLElBQUksR0FBR0Ysb0NBQW9DLENBQUMsQ0FBQztFQUNuRCxNQUFNTSxTQUFTLEdBQUcrRCxLQUFLLENBQUNDLE9BQU8sQ0FBRXBFLElBQUksQ0FBQ3FFLHdCQUF5QixDQUFDLEdBQUdyRSxJQUFJLENBQUNxRSx3QkFBd0IsR0FBRyxFQUFFO0VBQ3JHLE1BQU1qUCxJQUFJLEdBQUcsRUFBRTtFQUNmLE1BQU11RixPQUFPLEdBQUdvRix1Q0FBdUMsQ0FBQyxDQUFDO0VBRXpELElBQUtLLFNBQVMsQ0FBQ3ZFLE1BQU0sRUFBRztJQUN2QixPQUFPdUUsU0FBUztFQUNqQjtFQUVBck0sTUFBTSxDQUFDcUIsSUFBSSxDQUFFdUYsT0FBUSxDQUFDLENBQUN0RixPQUFPLENBQUUsVUFBVWlQLFVBQVUsRUFBRTtJQUNyRCxNQUFNUCxNQUFNLEdBQUdwSixPQUFPLENBQUMySixVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsTUFBTXRPLFFBQVEsR0FBRytOLE1BQU0sQ0FBQy9OLFFBQVEsSUFBSSxPQUFPK04sTUFBTSxDQUFDL04sUUFBUSxLQUFLLFFBQVEsR0FBRytOLE1BQU0sQ0FBQy9OLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFFOUZqQyxNQUFNLENBQUNxQixJQUFJLENBQUVZLFFBQVMsQ0FBQyxDQUFDWCxPQUFPLENBQUUsVUFBVWtQLFFBQVEsRUFBRTtNQUNwRCxJQUFLblAsSUFBSSxDQUFDc0gsT0FBTyxDQUFFNkgsUUFBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUc7UUFDdENuUCxJQUFJLENBQUNzTixJQUFJLENBQUU2QixRQUFTLENBQUM7TUFDdEI7SUFDRCxDQUFFLENBQUM7RUFDSixDQUFFLENBQUM7RUFFSHhRLE1BQU0sQ0FBQ3FCLElBQUksQ0FBRTBPLDRDQUE0QyxDQUFFL1AsTUFBTSxDQUFDYyxNQUFNLENBQUUsQ0FBQyxDQUFDLEVBQUVNLE9BQU8sSUFBSSxDQUFDLENBQUMsRUFBRTtJQUFFNk0sa0JBQWtCLEVBQUU7RUFBUyxDQUFFLENBQUUsQ0FBRSxDQUFDLENBQUMzTSxPQUFPLENBQUUsVUFBVWtQLFFBQVEsRUFBRTtJQUNoSyxJQUFLblAsSUFBSSxDQUFDc0gsT0FBTyxDQUFFNkgsUUFBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUc7TUFDdENuUCxJQUFJLENBQUNzTixJQUFJLENBQUU2QixRQUFTLENBQUM7SUFDdEI7RUFDRCxDQUFFLENBQUM7RUFFSCxPQUFPblAsSUFBSTtBQUNaO0FBRUEsU0FBU29QLHlDQUF5Q0EsQ0FBQ3JQLE9BQU8sRUFBRTtFQUMzRCxNQUFNOEksU0FBUyxHQUFHLFFBQVEsS0FBSzdKLE1BQU0sQ0FBRWUsT0FBTyxJQUFJQSxPQUFPLENBQUM2TSxrQkFBa0IsR0FBRzdNLE9BQU8sQ0FBQzZNLGtCQUFrQixHQUFHLEVBQUcsQ0FBQztFQUNoSCxNQUFNeUMsY0FBYyxHQUFHLElBQUksS0FBS3JRLE1BQU0sQ0FBRWUsT0FBTyxJQUFJQSxPQUFPLENBQUNrTywyQkFBMkIsR0FBR2xPLE9BQU8sQ0FBQ2tPLDJCQUEyQixHQUFHLEtBQU0sQ0FBQztFQUN0SSxNQUFNbkYsU0FBUyxHQUFHdEUsUUFBUSxDQUFDdEYsYUFBYSxDQUFFLDZDQUE4QyxDQUFDO0VBRXpGcUksMkNBQTJDLENBQUUsb0JBQW9CLEVBQUV4SCxPQUFPLENBQUM2TSxrQkFBa0IsSUFBSSxnQkFBaUIsQ0FBQztFQUVuSHBJLFFBQVEsQ0FBQ21ELGdCQUFnQixDQUFFLDZDQUE4QyxDQUFDLENBQUMxSCxPQUFPLENBQUUsVUFBVXVILEdBQUcsRUFBRTtJQUNsR0EsR0FBRyxDQUFDd0IsTUFBTSxHQUFHLENBQUVILFNBQVM7SUFDeEJyQixHQUFHLENBQUN5QixZQUFZLENBQUUsYUFBYSxFQUFFSixTQUFTLEdBQUcsT0FBTyxHQUFHLE1BQU8sQ0FBQztJQUMvRHJCLEdBQUcsQ0FBQ08sU0FBUyxDQUFDQyxNQUFNLENBQUUsV0FBVyxFQUFFLENBQUVhLFNBQVUsQ0FBQztFQUNqRCxDQUFFLENBQUM7RUFFSHJFLFFBQVEsQ0FBQ21ELGdCQUFnQixDQUFFLGlEQUFrRCxDQUFDLENBQUMxSCxPQUFPLENBQUUsVUFBVXVILEdBQUcsRUFBRTtJQUN0R0EsR0FBRyxDQUFDd0IsTUFBTSxHQUFHLENBQUVxRyxjQUFjO0lBQzdCN0gsR0FBRyxDQUFDeUIsWUFBWSxDQUFFLGFBQWEsRUFBRW9HLGNBQWMsR0FBRyxPQUFPLEdBQUcsTUFBTyxDQUFDO0lBQ3BFN0gsR0FBRyxDQUFDTyxTQUFTLENBQUNDLE1BQU0sQ0FBRSxXQUFXLEVBQUUsQ0FBRXFILGNBQWUsQ0FBQztFQUN0RCxDQUFFLENBQUM7RUFFSCxJQUFLdkcsU0FBUyxFQUFHO0lBQ2hCQSxTQUFTLENBQUNFLE1BQU0sR0FBRyxDQUFFSCxTQUFTO0lBQzlCQyxTQUFTLENBQUNHLFlBQVksQ0FBRSxhQUFhLEVBQUVKLFNBQVMsR0FBRyxPQUFPLEdBQUcsTUFBTyxDQUFDO0lBQ3JFQyxTQUFTLENBQUNmLFNBQVMsQ0FBQ0MsTUFBTSxDQUFFLFdBQVcsRUFBRSxDQUFFYSxTQUFVLENBQUM7RUFDdkQ7QUFDRDtBQUVBLFNBQVM1SCxpQ0FBaUNBLENBQUMxQixLQUFLLEVBQUVDLEdBQUcsRUFBRTtFQUN0RCxNQUFNTyxPQUFPLEdBQUcyTSwrQ0FBK0MsQ0FBRWxOLEdBQUcsRUFBRUEsR0FBRyxJQUFJQSxHQUFHLENBQUNWLEdBQUcsRUFBRVMsS0FBTSxDQUFDO0VBQzdGLE1BQU0rRixLQUFLLEdBQUd0RyxNQUFNLENBQUVlLE9BQU8sQ0FBQzZNLGtCQUFrQixJQUFJLGdCQUFpQixDQUFDO0VBQ3RFLE1BQU1ySCxPQUFPLEdBQUdvRix1Q0FBdUMsQ0FBQyxDQUFDO0VBQ3pELE1BQU1nRSxNQUFNLEdBQUdwSixPQUFPLENBQUNELEtBQUssQ0FBQyxJQUFJQyxPQUFPLENBQUNxSixjQUFjLElBQUksQ0FBQyxDQUFDO0VBQzdELE1BQU1oTyxRQUFRLEdBQUc4Tiw0Q0FBNEMsQ0FBRTNPLE9BQVEsQ0FBQztFQUN4RTtFQUNBO0VBQ0E7RUFDQSxNQUFNdUssSUFBSSxHQUFHOUYsUUFBUSxDQUFDckYsY0FBYyxDQUFFLHVCQUF3QixDQUFDLElBQU1LLEdBQUcsSUFBSUEsR0FBRyxDQUFDRSxNQUFRLElBQUk4RSxRQUFRO0VBQ3BHLE1BQU04SyxhQUFhLEdBQUcsRUFBRTtFQUN4QixNQUFNQyxZQUFZLEdBQUdULDRDQUE0QyxDQUFFL08sT0FBUSxDQUFDO0VBRTVFcVAseUNBQXlDLENBQUVyUCxPQUFRLENBQUM7RUFFcERwQixNQUFNLENBQUNxQixJQUFJLENBQUV1RixPQUFRLENBQUMsQ0FBQ3RGLE9BQU8sQ0FBRSxVQUFVaVAsVUFBVSxFQUFFO0lBQ3JELE1BQU1NLFVBQVUsR0FBR2pLLE9BQU8sQ0FBQzJKLFVBQVUsQ0FBQyxJQUFJM0osT0FBTyxDQUFDMkosVUFBVSxDQUFDLENBQUNPLFdBQVcsR0FBR3pRLE1BQU0sQ0FBRXVHLE9BQU8sQ0FBQzJKLFVBQVUsQ0FBQyxDQUFDTyxXQUFZLENBQUMsR0FBRyxFQUFFO0lBQzFILElBQUtELFVBQVUsSUFBSUYsYUFBYSxDQUFDaEksT0FBTyxDQUFFa0ksVUFBVyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUc7TUFDL0RGLGFBQWEsQ0FBQ2hDLElBQUksQ0FBRWtDLFVBQVcsQ0FBQztJQUNqQztFQUNELENBQUUsQ0FBQztFQUVILElBQUssQ0FBRWxGLElBQUksSUFBSSxDQUFFQSxJQUFJLENBQUMzQyxnQkFBZ0IsRUFBRztJQUN4QztFQUNEO0VBRUEsTUFBTW5GLFFBQVEsR0FBRyw4R0FBOEc7RUFDL0gsTUFBTStILEtBQUssR0FBRyxFQUFFO0VBQ2hCLElBQUtELElBQUksQ0FBQ3ZHLE9BQU8sSUFBSXVHLElBQUksQ0FBQ3ZHLE9BQU8sQ0FBRXZCLFFBQVMsQ0FBQyxFQUFHO0lBQy9DK0gsS0FBSyxDQUFDK0MsSUFBSSxDQUFFaEQsSUFBSyxDQUFDO0VBQ25CO0VBQ0FBLElBQUksQ0FBQzNDLGdCQUFnQixDQUFFbkYsUUFBUyxDQUFDLENBQUN2QyxPQUFPLENBQUUsVUFBVXdILElBQUksRUFBRTtJQUMxRDhDLEtBQUssQ0FBQytDLElBQUksQ0FBRTdGLElBQUssQ0FBQztFQUNuQixDQUFFLENBQUM7RUFFSDhDLEtBQUssQ0FBQ3RLLE9BQU8sQ0FBRSxVQUFVd0gsSUFBSSxFQUFFO0lBQzlCLElBQUssQ0FBRUEsSUFBSSxJQUFJLENBQUVBLElBQUksQ0FBQ25DLEtBQUssRUFBRztNQUM3QjtJQUNEO0lBQ0FnSyxhQUFhLENBQUNyUCxPQUFPLENBQUUsVUFBVXVQLFVBQVUsRUFBRTtNQUM1Qy9ILElBQUksQ0FBQ00sU0FBUyxDQUFDMkgsTUFBTSxDQUFFRixVQUFXLENBQUM7SUFDcEMsQ0FBRSxDQUFDO0lBQ0gsSUFBS2IsTUFBTSxDQUFDYyxXQUFXLEVBQUc7TUFDekJoSSxJQUFJLENBQUNNLFNBQVMsQ0FBQzRILEdBQUcsQ0FBRTNRLE1BQU0sQ0FBRTJQLE1BQU0sQ0FBQ2MsV0FBWSxDQUFFLENBQUM7SUFDbkQ7SUFDQWhJLElBQUksQ0FBQ00sU0FBUyxDQUFDQyxNQUFNLENBQUUsaUNBQWlDLEVBQUUsUUFBUSxLQUFLMUMsS0FBTSxDQUFDO0lBRTlFaUssWUFBWSxDQUFDdFAsT0FBTyxDQUFFLFVBQVUyUCxPQUFPLEVBQUU7TUFDeENuSSxJQUFJLENBQUNuQyxLQUFLLENBQUNrRixjQUFjLENBQUVvRixPQUFRLENBQUM7SUFDckMsQ0FBRSxDQUFDO0lBQ0hqUixNQUFNLENBQUNxQixJQUFJLENBQUVZLFFBQVMsQ0FBQyxDQUFDWCxPQUFPLENBQUUsVUFBVTJQLE9BQU8sRUFBRTtNQUNuRG5JLElBQUksQ0FBQ25DLEtBQUssQ0FBQ21GLFdBQVcsQ0FBRW1GLE9BQU8sRUFBRWhQLFFBQVEsQ0FBQ2dQLE9BQU8sQ0FBRSxDQUFDO0lBQ3JELENBQUUsQ0FBQztFQUNKLENBQUUsQ0FBQztBQUNKO0FBRUEsQ0FDQyxvQkFBb0IsRUFDcEIsNkJBQTZCLEVBQzdCLDJCQUEyQixFQUMzQixzQ0FBc0MsRUFDdEMsa0NBQWtDLEVBQ2xDLGtDQUFrQyxFQUNsQyxtQ0FBbUMsRUFDbkMsc0NBQXNDLEVBQ3RDLHdDQUF3QyxFQUN4QyxnQ0FBZ0MsRUFDaEMsNENBQTRDLEVBQzVDLHNDQUFzQyxFQUN0Qyx3Q0FBd0MsRUFDeEMsNkNBQTZDLEVBQzdDLHVDQUF1QyxFQUN2Qyx5Q0FBeUMsRUFDekMsbURBQW1ELEVBQ25ELDZDQUE2QyxFQUM3QywrQ0FBK0MsRUFDL0MsdURBQXVELEVBQ3ZELGlEQUFpRCxFQUNqRCxtREFBbUQsRUFDbkQsNkRBQTZELEVBQzdELHVEQUF1RCxFQUN2RCx5REFBeUQsRUFDekQseUNBQXlDLEVBQ3pDLDBDQUEwQyxDQUMxQyxDQUFDM1AsT0FBTyxDQUFFLFVBQVVuQixHQUFHLEVBQUU7RUFDekJMLHlCQUF5QixDQUFDSSxRQUFRLENBQUVDLEdBQUcsRUFBRSxVQUFVUyxLQUFLLEVBQUVDLEdBQUcsRUFBRTtJQUM5RHlCLGlDQUFpQyxDQUFFMUIsS0FBSyxFQUFFWixNQUFNLENBQUNjLE1BQU0sQ0FBRSxDQUFDLENBQUMsRUFBRUQsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFO01BQUVWLEdBQUcsRUFBRUE7SUFBSSxDQUFFLENBQUUsQ0FBQztFQUN6RixDQUFFLENBQUM7QUFDSixDQUFFLENBQUM7QUFFSCxTQUFTK1Esc0RBQXNEQSxDQUFBLEVBQUc7RUFDakUsTUFBTTlQLE9BQU8sR0FBRzJNLCtDQUErQyxDQUFDLENBQUM7RUFDakUwQyx5Q0FBeUMsQ0FBRXJQLE9BQVEsQ0FBQztFQUNwRGtCLGlDQUFpQyxDQUFFLElBQUksRUFBRTtJQUFFRCxNQUFNLEVBQUU7RUFBb0IsQ0FBRSxDQUFDO0FBQzNFO0FBRUE2TyxzREFBc0QsQ0FBQyxDQUFDO0FBQ3hEckwsUUFBUSxDQUFDckQsZ0JBQWdCLENBQUUsa0JBQWtCLEVBQUUwTyxzREFBdUQsQ0FBQzs7QUFHdkc7QUFDQXBSLHlCQUF5QixDQUFDSSxRQUFRLENBQUUsb0JBQW9CLEVBQUUsVUFBVVUsS0FBSyxFQUFFQyxHQUFHLEVBQUU7RUFDL0UsTUFBTThLLElBQUksR0FBSTlLLEdBQUcsSUFBSUEsR0FBRyxDQUFDRSxNQUFNLElBQUs4RSxRQUFRLENBQUNyRixjQUFjLENBQUUsdUJBQXdCLENBQUMsSUFBSXFGLFFBQVE7RUFDbEcsSUFBSyxDQUFFOEYsSUFBSSxJQUFJLENBQUVBLElBQUksQ0FBQzNDLGdCQUFnQixFQUFHO0lBQ3hDO0VBQ0Q7RUFFQSxJQUFLZSw4Q0FBOEMsQ0FBRWxKLEdBQUksQ0FBQyxFQUFHO0lBQzVELE1BQU1nSixlQUFlLEdBQUdOLDZDQUE2QyxDQUFDLENBQUM7SUFDdkUsSUFBSyxRQUFRLEtBQUtsSixNQUFNLENBQUV3SixlQUFlLENBQUNyQiw0QkFBNEIsSUFBSSxFQUFHLENBQUMsRUFBRztNQUNoRnFCLGVBQWUsQ0FBQ3BELGtCQUFrQixHQUFHN0YsS0FBSztNQUMxQytJLGlEQUFpRCxDQUFFRSxlQUFnQixDQUFDO01BQ3BFMkIsb0NBQW9DLENBQUUsUUFBUSxFQUFFeEwsTUFBTSxDQUFDYyxNQUFNLENBQUUsQ0FBQyxDQUFDLEVBQUVELEdBQUcsSUFBSSxDQUFDLENBQUMsRUFBRTtRQUM3RVYsR0FBRyxFQUFNLDhCQUE4QjtRQUN2Q2tDLE1BQU0sRUFBRyxtQkFBbUI7UUFDNUJqQixPQUFPLEVBQUV5STtNQUNWLENBQUUsQ0FBRSxDQUFDO0lBQ04sQ0FBQyxNQUFNO01BQ05wQixxREFBcUQsQ0FBRSxVQUFXLENBQUM7TUFDbkUrQyxvQ0FBb0MsQ0FBRSxVQUFVLEVBQUV4TCxNQUFNLENBQUNjLE1BQU0sQ0FBRSxDQUFDLENBQUMsRUFBRUQsR0FBRyxJQUFJLENBQUMsQ0FBQyxFQUFFO1FBQUVWLEdBQUcsRUFBRTtNQUErQixDQUFFLENBQUUsQ0FBQztJQUM1SDtFQUNELENBQUMsTUFBTSxJQUFLVSxHQUFHLElBQUlBLEdBQUcsQ0FBQ08sT0FBTyxFQUFHO0lBQ2hDdUksaURBQWlELENBQUU5SSxHQUFHLENBQUNPLE9BQVEsQ0FBQztFQUNqRTtFQUVBLE1BQU0rUCxjQUFjLEdBQUcsbUVBQW1FO0VBQzFGLE1BQU12RixLQUFLLEdBQUcsRUFBRTtFQUNoQixJQUFLRCxJQUFJLENBQUN2RyxPQUFPLElBQUl1RyxJQUFJLENBQUN2RyxPQUFPLENBQUUrTCxjQUFlLENBQUMsRUFBRztJQUNyRHZGLEtBQUssQ0FBQytDLElBQUksQ0FBRWhELElBQUssQ0FBQztFQUNuQjtFQUNBQSxJQUFJLENBQUMzQyxnQkFBZ0IsQ0FBRW1JLGNBQWUsQ0FBQyxDQUFDN1AsT0FBTyxDQUFFLFVBQVV3SCxJQUFJLEVBQUU7SUFDaEU4QyxLQUFLLENBQUMrQyxJQUFJLENBQUU3RixJQUFLLENBQUM7RUFDbkIsQ0FBRSxDQUFDO0VBQ0gsSUFBSyxDQUFFOEMsS0FBSyxDQUFDOUQsTUFBTSxFQUFHO0lBQ3JCO0VBQ0Q7RUFFQThELEtBQUssQ0FBQ3RLLE9BQU8sQ0FBRSxVQUFVd0gsSUFBSSxFQUFFO0lBQzlCO0lBQ0FzSCxLQUFLLENBQUNnQixJQUFJLENBQUV0SSxJQUFJLENBQUNNLFNBQVUsQ0FBQyxDQUFDOUgsT0FBTyxDQUFFLFVBQVUrUCxHQUFHLEVBQUU7TUFDcEQsSUFBSyxjQUFjLENBQUNySyxJQUFJLENBQUVxSyxHQUFJLENBQUMsRUFBRztRQUNqQ3ZJLElBQUksQ0FBQ00sU0FBUyxDQUFDMkgsTUFBTSxDQUFFTSxHQUFJLENBQUM7TUFDN0I7SUFDRCxDQUFFLENBQUM7SUFFSCxJQUFLelEsS0FBSyxFQUFHO01BQ1prSSxJQUFJLENBQUNNLFNBQVMsQ0FBQzRILEdBQUcsQ0FBRTNRLE1BQU0sQ0FBRU8sS0FBTSxDQUFFLENBQUM7SUFDdEM7RUFDRCxDQUFFLENBQUM7QUFDSixDQUFFLENBQUM7O0FBR0g7QUFDQWQseUJBQXlCLENBQUNJLFFBQVEsQ0FBRSwyQkFBMkIsRUFBRSxVQUFVVSxLQUFLLEVBQUVDLEdBQUcsRUFBRTtFQUN0RixNQUFNOEssSUFBSSxHQUFHOUssR0FBRyxJQUFJQSxHQUFHLENBQUNFLE1BQU07RUFDOUIsSUFBSyxDQUFFNEssSUFBSSxJQUFJLENBQUVBLElBQUksQ0FBQzNDLGdCQUFnQixFQUFHO0lBQ3hDO0VBQ0Q7RUFFQSxNQUFNNEMsS0FBSyxHQUFHRCxJQUFJLENBQUMzQyxnQkFBZ0IsQ0FBRSwyQ0FBNEMsQ0FBQztFQUNsRixJQUFLLENBQUU0QyxLQUFLLENBQUM5RCxNQUFNLEVBQUc7SUFDckI7RUFDRDtFQUVBLE1BQU1sRixDQUFDLEdBQUd2QyxNQUFNLENBQUVPLEtBQUssSUFBSSxJQUFJLEdBQUcsRUFBRSxHQUFHQSxLQUFNLENBQUMsQ0FBQ21HLElBQUksQ0FBQyxDQUFDOztFQUVyRDtFQUNBLElBQUtuRSxDQUFDLElBQUksQ0FBRSxzQ0FBc0MsQ0FBQ29FLElBQUksQ0FBRXBFLENBQUUsQ0FBQyxFQUFHO0lBQzlEO0VBQ0Q7RUFFQWdKLEtBQUssQ0FBQ3RLLE9BQU8sQ0FDWixVQUFVd0gsSUFBSSxFQUFFO0lBQ2YsSUFBSyxDQUFFQSxJQUFJLElBQUksQ0FBRUEsSUFBSSxDQUFDbkMsS0FBSyxFQUFHO01BQzdCO0lBQ0Q7SUFFQSxJQUFLLENBQUUvRCxDQUFDLEVBQUc7TUFDVmtHLElBQUksQ0FBQ25DLEtBQUssQ0FBQ2tGLGNBQWMsQ0FBRSxzQ0FBdUMsQ0FBQztJQUNwRSxDQUFDLE1BQU07TUFDTi9DLElBQUksQ0FBQ25DLEtBQUssQ0FBQ21GLFdBQVcsQ0FBRSxzQ0FBc0MsRUFBRWxKLENBQUUsQ0FBQztJQUNwRTtFQUNELENBQ0QsQ0FBQztBQUNGLENBQUUsQ0FBQzs7QUFHSDtBQUNBOUMseUJBQXlCLENBQUNJLFFBQVEsQ0FBRSwwQkFBMEIsRUFBRSxVQUFVVSxLQUFLLEVBQUVDLEdBQUcsRUFBRTtFQUNyRixNQUFNOEssSUFBSSxHQUFHOUssR0FBRyxDQUFDRSxNQUFNO0VBQ3ZCLElBQUssQ0FBRTRLLElBQUksSUFBSSxDQUFFQSxJQUFJLENBQUMzQyxnQkFBZ0IsRUFBRztJQUN4QztFQUNEO0VBRUEsTUFBTTRDLEtBQUssR0FBR0QsSUFBSSxDQUFDM0MsZ0JBQWdCLENBQUUsMkJBQTRCLENBQUM7RUFDbEUsSUFBSyxDQUFFNEMsS0FBSyxDQUFDOUQsTUFBTSxFQUFHO0lBQ3JCO0VBQ0Q7O0VBRUE7RUFDQXdKLFlBQVksQ0FBQ0MsWUFBWSxDQUN4QixVQUFVQyxPQUFPLEVBQUU7SUFFbEI7QUFDSDtBQUNBO0FBQ0E7QUFDQTtJQUNHLFNBQVNDLCtDQUErQ0EsQ0FBQSxFQUFHO01BRTFELElBQUlDLFVBQVUsR0FBRzdMLFFBQVEsQ0FBQ3RGLGFBQWEsQ0FBRSwwQ0FBMkMsQ0FBQztNQUNyRixJQUFLLENBQUVtUixVQUFVLEVBQUc7UUFDbkIsT0FBTyxJQUFJO01BQ1o7TUFFQSxJQUFJQyxhQUFhLEdBQUdELFVBQVUsQ0FBQ25SLGFBQWEsQ0FBRSxvQ0FBcUMsQ0FBQztNQUVwRixJQUFLLENBQUVvUixhQUFhLEVBQUc7UUFDdEJBLGFBQWEsR0FBR0QsVUFBVSxDQUFDblIsYUFBYSxDQUFFLHlEQUEwRCxDQUFDO01BQ3RHO01BRUEsSUFBSyxDQUFFb1IsYUFBYSxJQUFJLE9BQU9BLGFBQWEsQ0FBQ0MsS0FBSyxLQUFLLFVBQVUsRUFBRztRQUNuRSxPQUFPLElBQUk7TUFDWjtNQUVBLE9BQU87UUFDTkMsT0FBTyxFQUFFLFNBQUFBLENBQUEsRUFBWTtVQUNwQixJQUFJO1lBQUVGLGFBQWEsQ0FBQ0MsS0FBSyxDQUFDLENBQUM7VUFBRSxDQUFDLENBQUMsT0FBUWhRLEVBQUUsRUFBRyxDQUFDO1FBQzlDO01BQ0QsQ0FBQztJQUNGO0lBRUEsSUFBSWtRLGtCQUFrQixHQUFHTCwrQ0FBK0MsQ0FBQyxDQUFDO0lBRTFFLElBQUlNLFFBQVEsR0FBSSxLQUFLO0lBQ3JCLElBQUlDLEdBQUcsR0FBUXBNLE1BQU0sQ0FBQ3FNLGFBQWEsSUFBSXJNLE1BQU0sQ0FBQ3FNLGFBQWEsQ0FBQ0MsZUFBZSxHQUFHdE0sTUFBTSxDQUFDcU0sYUFBYSxDQUFDQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO0lBQ3ZILElBQUlDLE9BQU8sR0FBSUgsR0FBRyxDQUFDSSxnQkFBZ0IsSUFBSUosR0FBRyxDQUFDSyxnQkFBZ0IsSUFBSSwyQkFBMkI7SUFHMUYsU0FBU0MsVUFBVUEsQ0FBQSxFQUFHO01BQ3JCLElBQUtQLFFBQVEsRUFBRztRQUFFO01BQVE7TUFDMUJBLFFBQVEsR0FBRyxJQUFJO01BQ2YsSUFBSTtRQUFFUCxPQUFPLEVBQUVlLEdBQUcsRUFBRUMsR0FBRyxHQUFJTCxPQUFPLEVBQUVHLFVBQVcsQ0FBQztNQUFFLENBQUMsQ0FBQyxPQUFRRyxDQUFDLEVBQUcsQ0FBQztNQUNqRUMscUJBQXFCLENBQUUsWUFBWTtRQUNsQyxJQUFLLENBQUVaLGtCQUFrQixFQUFHO1VBQUU7UUFBUTtRQUN0Q0Esa0JBQWtCLENBQUNELE9BQU8sQ0FBQyxDQUFDO01BQzdCLENBQUUsQ0FBQztJQUNKOztJQUVBO0lBQ0EsSUFBSTtNQUFFTCxPQUFPLEVBQUVlLEdBQUcsRUFBRUksRUFBRSxHQUFJUixPQUFPLEVBQUVHLFVBQVcsQ0FBQztJQUFFLENBQUMsQ0FBQyxPQUFRRyxDQUFDLEVBQUcsQ0FBQztJQUdoRSxJQUFJRyxPQUFPLEdBQUksSUFBSSxLQUFLaFMsS0FBTTtJQUM5QjRRLE9BQU8sQ0FBQ3FCLGdCQUFnQixDQUFFRCxPQUFPLEVBQUU7TUFBRUUsT0FBTyxFQUFFLElBQUk7TUFBRUMsTUFBTSxFQUFFLElBQUk7TUFBRTFRLE1BQU0sRUFBRTtJQUFtQixDQUFFLENBQUM7RUFDakcsQ0FDRCxDQUFDO0FBRUYsQ0FBRSxDQUFDIiwiaWdub3JlTGlzdCI6W119 | |