PluginProbe
Booking Calendar / 11.2
Booking Calendar v11.2
11.9 11.8.4 11.8.3 11.8.2 11.8.1 11.8 11.7 11.6.1 11.6 11.5 11.4.3 11.4.2 11.4.1 11.4 11.3 11.2.1 11.2 11.1 11.0 10.15.7 10.15.6 10.1.3 10.10 10.10.1 10.10.2 All 205 releases
booking / includes / page-form-builder / field-packs / _shared / _out / hint-shortcode-wptpl.js

hint-shortcode-wptpl.js in Booking Calendar 11.2, at includes/page-form-builder/field-packs/_shared/_out/hint-shortcode-wptpl.js

163 lines 25.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 "use strict";
2
3 // == WPBC BFB Shared Pack Helper: Generic Hint Shortcode
4 (function (w, d) {
5 'use strict';
6
7 w.WPBC_BFB_RegisterShortcodeHintPack = function (cfg) {
8 cfg = cfg || {};
9 var T = String(cfg.token || '');
10 var S = String(cfg.shortcode || T);
11 var P = String(cfg.prefix || '');
12 var L = String(cfg.label || T);
13 var B = String(cfg.boot || '');
14 var F = String(cfg.fallback || '');
15 var Core = w.WPBC_BFB_Core || {};
16 var Registry = Core.WPBC_BFB_Field_Renderer_Registry;
17 var Base = Core.WPBC_BFB_Field_Base;
18 if (!T) {
19 return;
20 }
21 if (!Registry || typeof Registry.register !== 'function' || !Base) {
22 w._wpbc?.dev?.error?.('wpbc_bfb_field_' + T, 'Core registry/base missing');
23 return;
24 }
25 class ShortcodeHintField extends Base {
26 static template_id = 'wpbc-bfb-field-' + T;
27 static get_defaults() {
28 return {
29 type: T,
30 prefix_text: P,
31 html_id: '',
32 cssclass: '',
33 help: ''
34 };
35 }
36 static get_boot() {
37 return B ? w[B] || {} : {};
38 }
39 static render(el, data, ctx) {
40 if (!el) {
41 return;
42 }
43 var d_normalized = this.normalize_data(data);
44 var s = Core.WPBC_BFB_Sanitize || {};
45 var boot = this.get_boot();
46 var html_id = d_normalized.html_id ? s.sanitize_html_id ? s.sanitize_html_id(String(d_normalized.html_id)) : String(d_normalized.html_id) : '';
47 var cssclass = d_normalized.cssclass ? s.sanitize_css_classlist ? s.sanitize_css_classlist(String(d_normalized.cssclass)) : String(d_normalized.cssclass) : '';
48 var tpl = this.get_template(this.template_id);
49 var is_supported = String(boot.is_supported || '0') === '1';
50 if (typeof tpl !== 'function') {
51 el.innerHTML = '<div class="wpbc_bfb__error" role="alert">Template not found: ' + this.template_id + '.</div>';
52 return;
53 }
54 try {
55 el.innerHTML = tpl(Object.assign({}, d_normalized, {
56 html_id: html_id,
57 cssclass: cssclass,
58 is_supported: is_supported,
59 upgrade_text: String(boot.upgrade_text || ''),
60 preview_value: String(boot.preview_value || F)
61 }));
62 } catch (er) {
63 w._wpbc?.dev?.error?.(T + '_wptpl.tpl.render', er);
64 el.innerHTML = '<div class="wpbc_bfb__error" role="alert">Error rendering ' + L + ' preview.</div>';
65 return;
66 }
67 el.dataset.type = T;
68 el.dataset.prefix_text = d_normalized.prefix_text != null ? String(d_normalized.prefix_text) : '';
69 el.dataset.html_id = html_id;
70 el.dataset.cssclass = cssclass;
71 el.dataset.help = d_normalized.help != null ? String(d_normalized.help) : '';
72 el.setAttribute('data-label', d_normalized.prefix_text != null ? String(d_normalized.prefix_text) : '');
73 Core.UI?.WPBC_BFB_Overlay?.ensure?.(ctx?.builder, el);
74 }
75 static on_field_drop(data, el, ctx) {
76 super.on_field_drop?.(data, el, ctx);
77 }
78 }
79 try {
80 Registry.register(T, ShortcodeHintField);
81 } catch (er) {
82 w._wpbc?.dev?.error?.('wpbc_bfb_field_' + T + '.register', er);
83 }
84 function register_booking_form_exporter() {
85 var exporter = w.WPBC_BFB_Exporter;
86 if (!exporter || typeof exporter.register !== 'function') {
87 return;
88 }
89 if (typeof exporter.has_exporter === 'function' && exporter.has_exporter(T)) {
90 return;
91 }
92 var s = Core.WPBC_BFB_Sanitize || {};
93 var esc_html = s.escape_html || function (value) {
94 return String(value).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, '&#039;');
95 };
96 var sanitize_html_id = s.sanitize_html_id || function (value) {
97 return String(value || '');
98 };
99 var sanitize_css_classlist = s.sanitize_css_classlist || function (value) {
100 return String(value || '');
101 };
102 exporter.register(T, function (field, emit) {
103 var prefix_text = field && typeof field.prefix_text === 'string' ? field.prefix_text.trim() : P;
104 var html_id = field && field.html_id ? sanitize_html_id(field.html_id) : '';
105 var cssclass = field && field.cssclass ? sanitize_css_classlist(field.cssclass) : '';
106 var body_html = '';
107 var attrs = '';
108 if (prefix_text) {
109 body_html += esc_html(prefix_text) + '&nbsp;';
110 }
111 body_html += '<strong>[' + S + ']</strong>';
112 if (html_id) {
113 attrs += ' id="' + esc_html(html_id) + '"';
114 }
115 if (cssclass) {
116 attrs += ' class="' + esc_html(cssclass) + '"';
117 }
118 if (attrs) {
119 body_html = '<span' + attrs + '>' + body_html + '</span>';
120 }
121 emit(body_html);
122 });
123 }
124 if (w.WPBC_BFB_Exporter && typeof w.WPBC_BFB_Exporter.register === 'function') {
125 register_booking_form_exporter();
126 } else {
127 d.addEventListener('wpbc:bfb:exporter-ready', register_booking_form_exporter, {
128 once: true
129 });
130 }
131 function register_booking_data_exporter() {
132 var content_exporter = w.WPBC_BFB_ContentExporter;
133 if (!content_exporter || typeof content_exporter.register !== 'function') {
134 return;
135 }
136 if (typeof content_exporter.has_exporter === 'function' && content_exporter.has_exporter(T)) {
137 return;
138 }
139 content_exporter.register(T, function (field, emit, extras) {
140 extras = extras || {};
141 var cfg_export = extras.cfg || {};
142 var raw_label = field && typeof field.prefix_text === 'string' ? field.prefix_text.trim() : '';
143 var label = raw_label.replace(/\s*:\s*$/, '') || L;
144 if (typeof content_exporter.emit_line_bold_field === 'function') {
145 // Intentionally stop exporting hints into the "Content of booking fields data" form!
146 // content_exporter.emit_line_bold_field( emit, label, S, cfg_export );
147 return;
148 }
149 // Intentionally stop exporting hints into the "Content of booking fields data" form!
150 // emit( '<b>' + label + '</b>: <f>[' + S + ']</f><br>' );
151 });
152 }
153 if (w.WPBC_BFB_ContentExporter && typeof w.WPBC_BFB_ContentExporter.register === 'function') {
154 register_booking_data_exporter();
155 } else {
156 d.addEventListener('wpbc:bfb:content-exporter-ready', register_booking_data_exporter, {
157 once: true
158 });
159 }
160 };
161 })(window, document);
162 //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5jbHVkZXMvcGFnZS1mb3JtLWJ1aWxkZXIvZmllbGQtcGFja3MvX3NoYXJlZC9fb3V0L2hpbnQtc2hvcnRjb2RlLXdwdHBsLmpzIiwibmFtZXMiOlsidyIsImQiLCJXUEJDX0JGQl9SZWdpc3RlclNob3J0Y29kZUhpbnRQYWNrIiwiY2ZnIiwiVCIsIlN0cmluZyIsInRva2VuIiwiUyIsInNob3J0Y29kZSIsIlAiLCJwcmVmaXgiLCJMIiwibGFiZWwiLCJCIiwiYm9vdCIsIkYiLCJmYWxsYmFjayIsIkNvcmUiLCJXUEJDX0JGQl9Db3JlIiwiUmVnaXN0cnkiLCJXUEJDX0JGQl9GaWVsZF9SZW5kZXJlcl9SZWdpc3RyeSIsIkJhc2UiLCJXUEJDX0JGQl9GaWVsZF9CYXNlIiwicmVnaXN0ZXIiLCJfd3BiYyIsImRldiIsImVycm9yIiwiU2hvcnRjb2RlSGludEZpZWxkIiwidGVtcGxhdGVfaWQiLCJnZXRfZGVmYXVsdHMiLCJ0eXBlIiwicHJlZml4X3RleHQiLCJodG1sX2lkIiwiY3NzY2xhc3MiLCJoZWxwIiwiZ2V0X2Jvb3QiLCJyZW5kZXIiLCJlbCIsImRhdGEiLCJjdHgiLCJkX25vcm1hbGl6ZWQiLCJub3JtYWxpemVfZGF0YSIsInMiLCJXUEJDX0JGQl9TYW5pdGl6ZSIsInNhbml0aXplX2h0bWxfaWQiLCJzYW5pdGl6ZV9jc3NfY2xhc3NsaXN0IiwidHBsIiwiZ2V0X3RlbXBsYXRlIiwiaXNfc3VwcG9ydGVkIiwiaW5uZXJIVE1MIiwiT2JqZWN0IiwiYXNzaWduIiwidXBncmFkZV90ZXh0IiwicHJldmlld192YWx1ZSIsImVyIiwiZGF0YXNldCIsInNldEF0dHJpYnV0ZSIsIlVJIiwiV1BCQ19CRkJfT3ZlcmxheSIsImVuc3VyZSIsImJ1aWxkZXIiLCJvbl9maWVsZF9kcm9wIiwicmVnaXN0ZXJfYm9va2luZ19mb3JtX2V4cG9ydGVyIiwiZXhwb3J0ZXIiLCJXUEJDX0JGQl9FeHBvcnRlciIsImhhc19leHBvcnRlciIsImVzY19odG1sIiwiZXNjYXBlX2h0bWwiLCJ2YWx1ZSIsInJlcGxhY2UiLCJmaWVsZCIsImVtaXQiLCJ0cmltIiwiYm9keV9odG1sIiwiYXR0cnMiLCJhZGRFdmVudExpc3RlbmVyIiwib25jZSIsInJlZ2lzdGVyX2Jvb2tpbmdfZGF0YV9leHBvcnRlciIsImNvbnRlbnRfZXhwb3J0ZXIiLCJXUEJDX0JGQl9Db250ZW50RXhwb3J0ZXIiLCJleHRyYXMiLCJjZmdfZXhwb3J0IiwicmF3X2xhYmVsIiwiZW1pdF9saW5lX2JvbGRfZmllbGQiLCJ3aW5kb3ciLCJkb2N1bWVudCJdLCJzb3VyY2VzIjpbImluY2x1ZGVzL3BhZ2UtZm9ybS1idWlsZGVyL2ZpZWxkLXBhY2tzL19zaGFyZWQvX3NyYy9oaW50LXNob3J0Y29kZS13cHRwbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyA9PSBXUEJDIEJGQiBTaGFyZWQgUGFjayBIZWxwZXI6IEdlbmVyaWMgSGludCBTaG9ydGNvZGVcbihmdW5jdGlvbiAoIHcsIGQgKSB7XG5cdCd1c2Ugc3RyaWN0JztcblxuXHR3LldQQkNfQkZCX1JlZ2lzdGVyU2hvcnRjb2RlSGludFBhY2sgPSBmdW5jdGlvbiAoIGNmZyApIHtcblx0XHRjZmcgPSBjZmcgfHwge307XG5cblx0XHR2YXIgVCA9IFN0cmluZyggY2ZnLnRva2VuIHx8ICcnICk7XG5cdFx0dmFyIFMgPSBTdHJpbmcoIGNmZy5zaG9ydGNvZGUgfHwgVCApO1xuXHRcdHZhciBQID0gU3RyaW5nKCBjZmcucHJlZml4IHx8ICcnICk7XG5cdFx0dmFyIEwgPSBTdHJpbmcoIGNmZy5sYWJlbCB8fCBUICk7XG5cdFx0dmFyIEIgPSBTdHJpbmcoIGNmZy5ib290IHx8ICcnICk7XG5cdFx0dmFyIEYgPSBTdHJpbmcoIGNmZy5mYWxsYmFjayB8fCAnJyApO1xuXHRcdHZhciBDb3JlID0gdy5XUEJDX0JGQl9Db3JlIHx8IHt9O1xuXHRcdHZhciBSZWdpc3RyeSA9IENvcmUuV1BCQ19CRkJfRmllbGRfUmVuZGVyZXJfUmVnaXN0cnk7XG5cdFx0dmFyIEJhc2UgPSBDb3JlLldQQkNfQkZCX0ZpZWxkX0Jhc2U7XG5cblx0XHRpZiAoICEgVCApIHtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoICEgUmVnaXN0cnkgfHwgdHlwZW9mIFJlZ2lzdHJ5LnJlZ2lzdGVyICE9PSAnZnVuY3Rpb24nIHx8ICEgQmFzZSApIHtcblx0XHRcdHcuX3dwYmM/LmRldj8uZXJyb3I/LiggJ3dwYmNfYmZiX2ZpZWxkXycgKyBULCAnQ29yZSByZWdpc3RyeS9iYXNlIG1pc3NpbmcnICk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0Y2xhc3MgU2hvcnRjb2RlSGludEZpZWxkIGV4dGVuZHMgQmFzZSB7XG5cdFx0XHRzdGF0aWMgdGVtcGxhdGVfaWQgPSAnd3BiYy1iZmItZmllbGQtJyArIFQ7XG5cblx0XHRcdHN0YXRpYyBnZXRfZGVmYXVsdHMoKSB7XG5cdFx0XHRcdHJldHVybiB7IHR5cGU6IFQsIHByZWZpeF90ZXh0OiBQLCBodG1sX2lkOiAnJywgY3NzY2xhc3M6ICcnLCBoZWxwOiAnJyB9O1xuXHRcdFx0fVxuXG5cdFx0XHRzdGF0aWMgZ2V0X2Jvb3QoKSB7XG5cdFx0XHRcdHJldHVybiBCID8gKCB3WyBCIF0gfHwge30gKSA6IHt9O1xuXHRcdFx0fVxuXG5cdFx0XHRzdGF0aWMgcmVuZGVyKCBlbCwgZGF0YSwgY3R4ICkge1xuXHRcdFx0XHRpZiAoICEgZWwgKSB7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dmFyIGRfbm9ybWFsaXplZCA9IHRoaXMubm9ybWFsaXplX2RhdGEoIGRhdGEgKTtcblx0XHRcdFx0dmFyIHMgPSBDb3JlLldQQkNfQkZCX1Nhbml0aXplIHx8IHt9O1xuXHRcdFx0XHR2YXIgYm9vdCA9IHRoaXMuZ2V0X2Jvb3QoKTtcblx0XHRcdFx0dmFyIGh0bWxfaWQgPSBkX25vcm1hbGl6ZWQuaHRtbF9pZCA/ICggcy5zYW5pdGl6ZV9odG1sX2lkID8gcy5zYW5pdGl6ZV9odG1sX2lkKCBTdHJpbmcoIGRfbm9ybWFsaXplZC5odG1sX2lkICkgKSA6IFN0cmluZyggZF9ub3JtYWxpemVkLmh0bWxfaWQgKSApIDogJyc7XG5cdFx0XHRcdHZhciBjc3NjbGFzcyA9IGRfbm9ybWFsaXplZC5jc3NjbGFzcyA/ICggcy5zYW5pdGl6ZV9jc3NfY2xhc3NsaXN0ID8gcy5zYW5pdGl6ZV9jc3NfY2xhc3NsaXN0KCBTdHJpbmcoIGRfbm9ybWFsaXplZC5jc3NjbGFzcyApICkgOiBTdHJpbmcoIGRfbm9ybWFsaXplZC5jc3NjbGFzcyApICkgOiAnJztcblx0XHRcdFx0dmFyIHRwbCA9IHRoaXMuZ2V0X3RlbXBsYXRlKCB0aGlzLnRlbXBsYXRlX2lkICk7XG5cdFx0XHRcdHZhciBpc19zdXBwb3J0ZWQgPSBTdHJpbmcoIGJvb3QuaXNfc3VwcG9ydGVkIHx8ICcwJyApID09PSAnMSc7XG5cblx0XHRcdFx0aWYgKCB0eXBlb2YgdHBsICE9PSAnZnVuY3Rpb24nICkge1xuXHRcdFx0XHRcdGVsLmlubmVySFRNTCA9ICc8ZGl2IGNsYXNzPVwid3BiY19iZmJfX2Vycm9yXCIgcm9sZT1cImFsZXJ0XCI+VGVtcGxhdGUgbm90IGZvdW5kOiAnICsgdGhpcy50ZW1wbGF0ZV9pZCArICcuPC9kaXY+Jztcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0cnkge1xuXHRcdFx0XHRcdGVsLmlubmVySFRNTCA9IHRwbCggT2JqZWN0LmFzc2lnbigge30sIGRfbm9ybWFsaXplZCwge1xuXHRcdFx0XHRcdFx0aHRtbF9pZDogaHRtbF9pZCxcblx0XHRcdFx0XHRcdGNzc2NsYXNzOiBjc3NjbGFzcyxcblx0XHRcdFx0XHRcdGlzX3N1cHBvcnRlZDogaXNfc3VwcG9ydGVkLFxuXHRcdFx0XHRcdFx0dXBncmFkZV90ZXh0OiBTdHJpbmcoIGJvb3QudXBncmFkZV90ZXh0IHx8ICcnICksXG5cdFx0XHRcdFx0XHRwcmV2aWV3X3ZhbHVlOiBTdHJpbmcoIGJvb3QucHJldmlld192YWx1ZSB8fCBGIClcblx0XHRcdFx0XHR9ICkgKTtcblx0XHRcdFx0fSBjYXRjaCAoIGVyICkge1xuXHRcdFx0XHRcdHcuX3dwYmM/LmRldj8uZXJyb3I/LiggVCArICdfd3B0cGwudHBsLnJlbmRlcicsIGVyICk7XG5cdFx0XHRcdFx0ZWwuaW5uZXJIVE1MID0gJzxkaXYgY2xhc3M9XCJ3cGJjX2JmYl9fZXJyb3JcIiByb2xlPVwiYWxlcnRcIj5FcnJvciByZW5kZXJpbmcgJyArIEwgKyAnIHByZXZpZXcuPC9kaXY+Jztcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRlbC5kYXRhc2V0LnR5cGUgPSBUO1xuXHRcdFx0XHRlbC5kYXRhc2V0LnByZWZpeF90ZXh0ID0gZF9ub3JtYWxpemVkLnByZWZpeF90ZXh0ICE9IG51bGwgPyBTdHJpbmcoIGRfbm9ybWFsaXplZC5wcmVmaXhfdGV4dCApIDogJyc7XG5cdFx0XHRcdGVsLmRhdGFzZXQuaHRtbF9pZCA9IGh0bWxfaWQ7XG5cdFx0XHRcdGVsLmRhdGFzZXQuY3NzY2xhc3MgPSBjc3NjbGFzcztcblx0XHRcdFx0ZWwuZGF0YXNldC5oZWxwID0gZF9ub3JtYWxpemVkLmhlbHAgIT0gbnVsbCA/IFN0cmluZyggZF9ub3JtYWxpemVkLmhlbHAgKSA6ICcnO1xuXHRcdFx0XHRlbC5zZXRBdHRyaWJ1dGUoICdkYXRhLWxhYmVsJywgZF9ub3JtYWxpemVkLnByZWZpeF90ZXh0ICE9IG51bGwgPyBTdHJpbmcoIGRfbm9ybWFsaXplZC5wcmVmaXhfdGV4dCApIDogJycgKTtcblx0XHRcdFx0Q29yZS5VST8uV1BCQ19CRkJfT3ZlcmxheT8uZW5zdXJlPy4oIGN0eD8uYnVpbGRlciwgZWwgKTtcblx0XHRcdH1cblxuXHRcdFx0c3RhdGljIG9uX2ZpZWxkX2Ryb3AoIGRhdGEsIGVsLCBjdHggKSB7XG5cdFx0XHRcdHN1cGVyLm9uX2ZpZWxkX2Ryb3A/LiggZGF0YSwgZWwsIGN0eCApO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdHRyeSB7XG5cdFx0XHRSZWdpc3RyeS5yZWdpc3RlciggVCwgU2hvcnRjb2RlSGludEZpZWxkICk7XG5cdFx0fSBjYXRjaCAoIGVyICkge1xuXHRcdFx0dy5fd3BiYz8uZGV2Py5lcnJvcj8uKCAnd3BiY19iZmJfZmllbGRfJyArIFQgKyAnLnJlZ2lzdGVyJywgZXIgKTtcblx0XHR9XG5cblx0XHRmdW5jdGlvbiByZWdpc3Rlcl9ib29raW5nX2Zvcm1fZXhwb3J0ZXIoKSB7XG5cdFx0XHR2YXIgZXhwb3J0ZXIgPSB3LldQQkNfQkZCX0V4cG9ydGVyO1xuXHRcdFx0aWYgKCAhIGV4cG9ydGVyIHx8IHR5cGVvZiBleHBvcnRlci5yZWdpc3RlciAhPT0gJ2Z1bmN0aW9uJyApIHtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCB0eXBlb2YgZXhwb3J0ZXIuaGFzX2V4cG9ydGVyID09PSAnZnVuY3Rpb24nICYmIGV4cG9ydGVyLmhhc19leHBvcnRlciggVCApICkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdHZhciBzID0gQ29yZS5XUEJDX0JGQl9TYW5pdGl6ZSB8fCB7fTtcblx0XHRcdHZhciBlc2NfaHRtbCA9IHMuZXNjYXBlX2h0bWwgfHwgZnVuY3Rpb24gKCB2YWx1ZSApIHtcblx0XHRcdFx0cmV0dXJuIFN0cmluZyggdmFsdWUgKS5yZXBsYWNlKCAvJi9nLCAnJmFtcDsnICkucmVwbGFjZSggLzwvZywgJyZsdDsnICkucmVwbGFjZSggLz4vZywgJyZndDsnICkucmVwbGFjZSggL1wiL2csICcmcXVvdDsnICkucmVwbGFjZSggLycvZywgJyYjMDM5OycgKTtcblx0XHRcdH07XG5cdFx0XHR2YXIgc2FuaXRpemVfaHRtbF9pZCA9IHMuc2FuaXRpemVfaHRtbF9pZCB8fCBmdW5jdGlvbiAoIHZhbHVlICkgeyByZXR1cm4gU3RyaW5nKCB2YWx1ZSB8fCAnJyApOyB9O1xuXHRcdFx0dmFyIHNhbml0aXplX2Nzc19jbGFzc2xpc3QgPSBzLnNhbml0aXplX2Nzc19jbGFzc2xpc3QgfHwgZnVuY3Rpb24gKCB2YWx1ZSApIHsgcmV0dXJuIFN0cmluZyggdmFsdWUgfHwgJycgKTsgfTtcblxuXHRcdFx0ZXhwb3J0ZXIucmVnaXN0ZXIoIFQsIGZ1bmN0aW9uICggZmllbGQsIGVtaXQgKSB7XG5cdFx0XHRcdHZhciBwcmVmaXhfdGV4dCA9ICggZmllbGQgJiYgdHlwZW9mIGZpZWxkLnByZWZpeF90ZXh0ID09PSAnc3RyaW5nJyApID8gZmllbGQucHJlZml4X3RleHQudHJpbSgpIDogUDtcblx0XHRcdFx0dmFyIGh0bWxfaWQgPSBmaWVsZCAmJiBmaWVsZC5odG1sX2lkID8gc2FuaXRpemVfaHRtbF9pZCggZmllbGQuaHRtbF9pZCApIDogJyc7XG5cdFx0XHRcdHZhciBjc3NjbGFzcyA9IGZpZWxkICYmIGZpZWxkLmNzc2NsYXNzID8gc2FuaXRpemVfY3NzX2NsYXNzbGlzdCggZmllbGQuY3NzY2xhc3MgKSA6ICcnO1xuXHRcdFx0XHR2YXIgYm9keV9odG1sID0gJyc7XG5cdFx0XHRcdHZhciBhdHRycyA9ICcnO1xuXG5cdFx0XHRcdGlmICggcHJlZml4X3RleHQgKSB7XG5cdFx0XHRcdFx0Ym9keV9odG1sICs9IGVzY19odG1sKCBwcmVmaXhfdGV4dCApICsgJyZuYnNwOyc7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ym9keV9odG1sICs9ICc8c3Ryb25nPlsnICsgUyArICddPC9zdHJvbmc+Jztcblx0XHRcdFx0aWYgKCBodG1sX2lkICkge1xuXHRcdFx0XHRcdGF0dHJzICs9ICcgaWQ9XCInICsgZXNjX2h0bWwoIGh0bWxfaWQgKSArICdcIic7XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKCBjc3NjbGFzcyApIHtcblx0XHRcdFx0XHRhdHRycyArPSAnIGNsYXNzPVwiJyArIGVzY19odG1sKCBjc3NjbGFzcyApICsgJ1wiJztcblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAoIGF0dHJzICkge1xuXHRcdFx0XHRcdGJvZHlfaHRtbCA9ICc8c3BhbicgKyBhdHRycyArICc+JyArIGJvZHlfaHRtbCArICc8L3NwYW4+Jztcblx0XHRcdFx0fVxuXHRcdFx0XHRlbWl0KCBib2R5X2h0bWwgKTtcblx0XHRcdH0gKTtcblx0XHR9XG5cblx0XHRpZiAoIHcuV1BCQ19CRkJfRXhwb3J0ZXIgJiYgdHlwZW9mIHcuV1BCQ19CRkJfRXhwb3J0ZXIucmVnaXN0ZXIgPT09ICdmdW5jdGlvbicgKSB7XG5cdFx0XHRyZWdpc3Rlcl9ib29raW5nX2Zvcm1fZXhwb3J0ZXIoKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0ZC5hZGRFdmVudExpc3RlbmVyKCAnd3BiYzpiZmI6ZXhwb3J0ZXItcmVhZHknLCByZWdpc3Rlcl9ib29raW5nX2Zvcm1fZXhwb3J0ZXIsIHsgb25jZTogdHJ1ZSB9ICk7XG5cdFx0fVxuXG5cdFx0ZnVuY3Rpb24gcmVnaXN0ZXJfYm9va2luZ19kYXRhX2V4cG9ydGVyKCkge1xuXHRcdFx0dmFyIGNvbnRlbnRfZXhwb3J0ZXIgPSB3LldQQkNfQkZCX0NvbnRlbnRFeHBvcnRlcjtcblx0XHRcdGlmICggISBjb250ZW50X2V4cG9ydGVyIHx8IHR5cGVvZiBjb250ZW50X2V4cG9ydGVyLnJlZ2lzdGVyICE9PSAnZnVuY3Rpb24nICkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRpZiAoIHR5cGVvZiBjb250ZW50X2V4cG9ydGVyLmhhc19leHBvcnRlciA9PT0gJ2Z1bmN0aW9uJyAmJiBjb250ZW50X2V4cG9ydGVyLmhhc19leHBvcnRlciggVCApICkge1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cblx0XHRcdGNvbnRlbnRfZXhwb3J0ZXIucmVnaXN0ZXIoIFQsIGZ1bmN0aW9uICggZmllbGQsIGVtaXQsIGV4dHJhcyApIHtcblx0XHRcdFx0ZXh0cmFzID0gZXh0cmFzIHx8IHt9O1xuXHRcdFx0XHR2YXIgY2ZnX2V4cG9ydCA9IGV4dHJhcy5jZmcgfHwge307XG5cdFx0XHRcdHZhciByYXdfbGFiZWwgPSAoIGZpZWxkICYmIHR5cGVvZiBmaWVsZC5wcmVmaXhfdGV4dCA9PT0gJ3N0cmluZycgKSA/IGZpZWxkLnByZWZpeF90ZXh0LnRyaW0oKSA6ICcnO1xuXHRcdFx0XHR2YXIgbGFiZWwgPSByYXdfbGFiZWwucmVwbGFjZSggL1xccyo6XFxzKiQvLCAnJyApIHx8IEw7XG5cblx0XHRcdFx0aWYgKCB0eXBlb2YgY29udGVudF9leHBvcnRlci5lbWl0X2xpbmVfYm9sZF9maWVsZCA9PT0gJ2Z1bmN0aW9uJyApIHtcblx0XHRcdFx0XHQvLyBJbnRlbnRpb25hbGx5IHN0b3AgZXhwb3J0aW5nIGhpbnRzIGludG8gdGhlIFwiQ29udGVudCBvZiBib29raW5nIGZpZWxkcyBkYXRhXCIgZm9ybSFcblx0XHRcdFx0XHQvLyBjb250ZW50X2V4cG9ydGVyLmVtaXRfbGluZV9ib2xkX2ZpZWxkKCBlbWl0LCBsYWJlbCwgUywgY2ZnX2V4cG9ydCApO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBJbnRlbnRpb25hbGx5IHN0b3AgZXhwb3J0aW5nIGhpbnRzIGludG8gdGhlIFwiQ29udGVudCBvZiBib29raW5nIGZpZWxkcyBkYXRhXCIgZm9ybSFcblx0XHRcdFx0Ly8gZW1pdCggJzxiPicgKyBsYWJlbCArICc8L2I+OiA8Zj5bJyArIFMgKyAnXTwvZj48YnI+JyApO1xuXHRcdFx0fSApO1xuXHRcdH1cblxuXHRcdGlmICggdy5XUEJDX0JGQl9Db250ZW50RXhwb3J0ZXIgJiYgdHlwZW9mIHcuV1BCQ19CRkJfQ29udGVudEV4cG9ydGVyLnJlZ2lzdGVyID09PSAnZnVuY3Rpb24nICkge1xuXHRcdFx0cmVnaXN0ZXJfYm9va2luZ19kYXRhX2V4cG9ydGVyKCk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdGQuYWRkRXZlbnRMaXN0ZW5lciggJ3dwYmM6YmZiOmNvbnRlbnQtZXhwb3J0ZXItcmVhZHknLCByZWdpc3Rlcl9ib29raW5nX2RhdGFfZXhwb3J0ZXIsIHsgb25jZTogdHJ1ZSB9ICk7XG5cdFx0fVxuXHR9O1xufSkoIHdpbmRvdywgZG9jdW1lbnQgKTtcbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUNBLENBQUMsVUFBV0EsQ0FBQyxFQUFFQyxDQUFDLEVBQUc7RUFDbEIsWUFBWTs7RUFFWkQsQ0FBQyxDQUFDRSxrQ0FBa0MsR0FBRyxVQUFXQyxHQUFHLEVBQUc7SUFDdkRBLEdBQUcsR0FBR0EsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUVmLElBQUlDLENBQUMsR0FBR0MsTUFBTSxDQUFFRixHQUFHLENBQUNHLEtBQUssSUFBSSxFQUFHLENBQUM7SUFDakMsSUFBSUMsQ0FBQyxHQUFHRixNQUFNLENBQUVGLEdBQUcsQ0FBQ0ssU0FBUyxJQUFJSixDQUFFLENBQUM7SUFDcEMsSUFBSUssQ0FBQyxHQUFHSixNQUFNLENBQUVGLEdBQUcsQ0FBQ08sTUFBTSxJQUFJLEVBQUcsQ0FBQztJQUNsQyxJQUFJQyxDQUFDLEdBQUdOLE1BQU0sQ0FBRUYsR0FBRyxDQUFDUyxLQUFLLElBQUlSLENBQUUsQ0FBQztJQUNoQyxJQUFJUyxDQUFDLEdBQUdSLE1BQU0sQ0FBRUYsR0FBRyxDQUFDVyxJQUFJLElBQUksRUFBRyxDQUFDO0lBQ2hDLElBQUlDLENBQUMsR0FBR1YsTUFBTSxDQUFFRixHQUFHLENBQUNhLFFBQVEsSUFBSSxFQUFHLENBQUM7SUFDcEMsSUFBSUMsSUFBSSxHQUFHakIsQ0FBQyxDQUFDa0IsYUFBYSxJQUFJLENBQUMsQ0FBQztJQUNoQyxJQUFJQyxRQUFRLEdBQUdGLElBQUksQ0FBQ0csZ0NBQWdDO0lBQ3BELElBQUlDLElBQUksR0FBR0osSUFBSSxDQUFDSyxtQkFBbUI7SUFFbkMsSUFBSyxDQUFFbEIsQ0FBQyxFQUFHO01BQ1Y7SUFDRDtJQUVBLElBQUssQ0FBRWUsUUFBUSxJQUFJLE9BQU9BLFFBQVEsQ0FBQ0ksUUFBUSxLQUFLLFVBQVUsSUFBSSxDQUFFRixJQUFJLEVBQUc7TUFDdEVyQixDQUFDLENBQUN3QixLQUFLLEVBQUVDLEdBQUcsRUFBRUMsS0FBSyxHQUFJLGlCQUFpQixHQUFHdEIsQ0FBQyxFQUFFLDRCQUE2QixDQUFDO01BQzVFO0lBQ0Q7SUFFQSxNQUFNdUIsa0JBQWtCLFNBQVNOLElBQUksQ0FBQztNQUNyQyxPQUFPTyxXQUFXLEdBQUcsaUJBQWlCLEdBQUd4QixDQUFDO01BRTFDLE9BQU95QixZQUFZQSxDQUFBLEVBQUc7UUFDckIsT0FBTztVQUFFQyxJQUFJLEVBQUUxQixDQUFDO1VBQUUyQixXQUFXLEVBQUV0QixDQUFDO1VBQUV1QixPQUFPLEVBQUUsRUFBRTtVQUFFQyxRQUFRLEVBQUUsRUFBRTtVQUFFQyxJQUFJLEVBQUU7UUFBRyxDQUFDO01BQ3hFO01BRUEsT0FBT0MsUUFBUUEsQ0FBQSxFQUFHO1FBQ2pCLE9BQU90QixDQUFDLEdBQUtiLENBQUMsQ0FBRWEsQ0FBQyxDQUFFLElBQUksQ0FBQyxDQUFDLEdBQUssQ0FBQyxDQUFDO01BQ2pDO01BRUEsT0FBT3VCLE1BQU1BLENBQUVDLEVBQUUsRUFBRUMsSUFBSSxFQUFFQyxHQUFHLEVBQUc7UUFDOUIsSUFBSyxDQUFFRixFQUFFLEVBQUc7VUFDWDtRQUNEO1FBRUEsSUFBSUcsWUFBWSxHQUFHLElBQUksQ0FBQ0MsY0FBYyxDQUFFSCxJQUFLLENBQUM7UUFDOUMsSUFBSUksQ0FBQyxHQUFHekIsSUFBSSxDQUFDMEIsaUJBQWlCLElBQUksQ0FBQyxDQUFDO1FBQ3BDLElBQUk3QixJQUFJLEdBQUcsSUFBSSxDQUFDcUIsUUFBUSxDQUFDLENBQUM7UUFDMUIsSUFBSUgsT0FBTyxHQUFHUSxZQUFZLENBQUNSLE9BQU8sR0FBS1UsQ0FBQyxDQUFDRSxnQkFBZ0IsR0FBR0YsQ0FBQyxDQUFDRSxnQkFBZ0IsQ0FBRXZDLE1BQU0sQ0FBRW1DLFlBQVksQ0FBQ1IsT0FBUSxDQUFFLENBQUMsR0FBRzNCLE1BQU0sQ0FBRW1DLFlBQVksQ0FBQ1IsT0FBUSxDQUFDLEdBQUssRUFBRTtRQUN4SixJQUFJQyxRQUFRLEdBQUdPLFlBQVksQ0FBQ1AsUUFBUSxHQUFLUyxDQUFDLENBQUNHLHNCQUFzQixHQUFHSCxDQUFDLENBQUNHLHNCQUFzQixDQUFFeEMsTUFBTSxDQUFFbUMsWUFBWSxDQUFDUCxRQUFTLENBQUUsQ0FBQyxHQUFHNUIsTUFBTSxDQUFFbUMsWUFBWSxDQUFDUCxRQUFTLENBQUMsR0FBSyxFQUFFO1FBQ3hLLElBQUlhLEdBQUcsR0FBRyxJQUFJLENBQUNDLFlBQVksQ0FBRSxJQUFJLENBQUNuQixXQUFZLENBQUM7UUFDL0MsSUFBSW9CLFlBQVksR0FBRzNDLE1BQU0sQ0FBRVMsSUFBSSxDQUFDa0MsWUFBWSxJQUFJLEdBQUksQ0FBQyxLQUFLLEdBQUc7UUFFN0QsSUFBSyxPQUFPRixHQUFHLEtBQUssVUFBVSxFQUFHO1VBQ2hDVCxFQUFFLENBQUNZLFNBQVMsR0FBRyxnRUFBZ0UsR0FBRyxJQUFJLENBQUNyQixXQUFXLEdBQUcsU0FBUztVQUM5RztRQUNEO1FBRUEsSUFBSTtVQUNIUyxFQUFFLENBQUNZLFNBQVMsR0FBR0gsR0FBRyxDQUFFSSxNQUFNLENBQUNDLE1BQU0sQ0FBRSxDQUFDLENBQUMsRUFBRVgsWUFBWSxFQUFFO1lBQ3BEUixPQUFPLEVBQUVBLE9BQU87WUFDaEJDLFFBQVEsRUFBRUEsUUFBUTtZQUNsQmUsWUFBWSxFQUFFQSxZQUFZO1lBQzFCSSxZQUFZLEVBQUUvQyxNQUFNLENBQUVTLElBQUksQ0FBQ3NDLFlBQVksSUFBSSxFQUFHLENBQUM7WUFDL0NDLGFBQWEsRUFBRWhELE1BQU0sQ0FBRVMsSUFBSSxDQUFDdUMsYUFBYSxJQUFJdEMsQ0FBRTtVQUNoRCxDQUFFLENBQUUsQ0FBQztRQUNOLENBQUMsQ0FBQyxPQUFRdUMsRUFBRSxFQUFHO1VBQ2R0RCxDQUFDLENBQUN3QixLQUFLLEVBQUVDLEdBQUcsRUFBRUMsS0FBSyxHQUFJdEIsQ0FBQyxHQUFHLG1CQUFtQixFQUFFa0QsRUFBRyxDQUFDO1VBQ3BEakIsRUFBRSxDQUFDWSxTQUFTLEdBQUcsNERBQTRELEdBQUd0QyxDQUFDLEdBQUcsaUJBQWlCO1VBQ25HO1FBQ0Q7UUFFQTBCLEVBQUUsQ0FBQ2tCLE9BQU8sQ0FBQ3pCLElBQUksR0FBRzFCLENBQUM7UUFDbkJpQyxFQUFFLENBQUNrQixPQUFPLENBQUN4QixXQUFXLEdBQUdTLFlBQVksQ0FBQ1QsV0FBVyxJQUFJLElBQUksR0FBRzFCLE1BQU0sQ0FBRW1DLFlBQVksQ0FBQ1QsV0FBWSxDQUFDLEdBQUcsRUFBRTtRQUNuR00sRUFBRSxDQUFDa0IsT0FBTyxDQUFDdkIsT0FBTyxHQUFHQSxPQUFPO1FBQzVCSyxFQUFFLENBQUNrQixPQUFPLENBQUN0QixRQUFRLEdBQUdBLFFBQVE7UUFDOUJJLEVBQUUsQ0FBQ2tCLE9BQU8sQ0FBQ3JCLElBQUksR0FBR00sWUFBWSxDQUFDTixJQUFJLElBQUksSUFBSSxHQUFHN0IsTUFBTSxDQUFFbUMsWUFBWSxDQUFDTixJQUFLLENBQUMsR0FBRyxFQUFFO1FBQzlFRyxFQUFFLENBQUNtQixZQUFZLENBQUUsWUFBWSxFQUFFaEIsWUFBWSxDQUFDVCxXQUFXLElBQUksSUFBSSxHQUFHMUIsTUFBTSxDQUFFbUMsWUFBWSxDQUFDVCxXQUFZLENBQUMsR0FBRyxFQUFHLENBQUM7UUFDM0dkLElBQUksQ0FBQ3dDLEVBQUUsRUFBRUMsZ0JBQWdCLEVBQUVDLE1BQU0sR0FBSXBCLEdBQUcsRUFBRXFCLE9BQU8sRUFBRXZCLEVBQUcsQ0FBQztNQUN4RDtNQUVBLE9BQU93QixhQUFhQSxDQUFFdkIsSUFBSSxFQUFFRCxFQUFFLEVBQUVFLEdBQUcsRUFBRztRQUNyQyxLQUFLLENBQUNzQixhQUFhLEdBQUl2QixJQUFJLEVBQUVELEVBQUUsRUFBRUUsR0FBSSxDQUFDO01BQ3ZDO0lBQ0Q7SUFFQSxJQUFJO01BQ0hwQixRQUFRLENBQUNJLFFBQVEsQ0FBRW5CLENBQUMsRUFBRXVCLGtCQUFtQixDQUFDO0lBQzNDLENBQUMsQ0FBQyxPQUFRMkIsRUFBRSxFQUFHO01BQ2R0RCxDQUFDLENBQUN3QixLQUFLLEVBQUVDLEdBQUcsRUFBRUMsS0FBSyxHQUFJLGlCQUFpQixHQUFHdEIsQ0FBQyxHQUFHLFdBQVcsRUFBRWtELEVBQUcsQ0FBQztJQUNqRTtJQUVBLFNBQVNRLDhCQUE4QkEsQ0FBQSxFQUFHO01BQ3pDLElBQUlDLFFBQVEsR0FBRy9ELENBQUMsQ0FBQ2dFLGlCQUFpQjtNQUNsQyxJQUFLLENBQUVELFFBQVEsSUFBSSxPQUFPQSxRQUFRLENBQUN4QyxRQUFRLEtBQUssVUFBVSxFQUFHO1FBQzVEO01BQ0Q7TUFDQSxJQUFLLE9BQU93QyxRQUFRLENBQUNFLFlBQVksS0FBSyxVQUFVLElBQUlGLFFBQVEsQ0FBQ0UsWUFBWSxDQUFFN0QsQ0FBRSxDQUFDLEVBQUc7UUFDaEY7TUFDRDtNQUVBLElBQUlzQyxDQUFDLEdBQUd6QixJQUFJLENBQUMwQixpQkFBaUIsSUFBSSxDQUFDLENBQUM7TUFDcEMsSUFBSXVCLFFBQVEsR0FBR3hCLENBQUMsQ0FBQ3lCLFdBQVcsSUFBSSxVQUFXQyxLQUFLLEVBQUc7UUFDbEQsT0FBTy9ELE1BQU0sQ0FBRStELEtBQU0sQ0FBQyxDQUFDQyxPQUFPLENBQUUsSUFBSSxFQUFFLE9BQVEsQ0FBQyxDQUFDQSxPQUFPLENBQUUsSUFBSSxFQUFFLE1BQU8sQ0FBQyxDQUFDQSxPQUFPLENBQUUsSUFBSSxFQUFFLE1BQU8sQ0FBQyxDQUFDQSxPQUFPLENBQUUsSUFBSSxFQUFFLFFBQVMsQ0FBQyxDQUFDQSxPQUFPLENBQUUsSUFBSSxFQUFFLFFBQVMsQ0FBQztNQUNwSixDQUFDO01BQ0QsSUFBSXpCLGdCQUFnQixHQUFHRixDQUFDLENBQUNFLGdCQUFnQixJQUFJLFVBQVd3QixLQUFLLEVBQUc7UUFBRSxPQUFPL0QsTUFBTSxDQUFFK0QsS0FBSyxJQUFJLEVBQUcsQ0FBQztNQUFFLENBQUM7TUFDakcsSUFBSXZCLHNCQUFzQixHQUFHSCxDQUFDLENBQUNHLHNCQUFzQixJQUFJLFVBQVd1QixLQUFLLEVBQUc7UUFBRSxPQUFPL0QsTUFBTSxDQUFFK0QsS0FBSyxJQUFJLEVBQUcsQ0FBQztNQUFFLENBQUM7TUFFN0dMLFFBQVEsQ0FBQ3hDLFFBQVEsQ0FBRW5CLENBQUMsRUFBRSxVQUFXa0UsS0FBSyxFQUFFQyxJQUFJLEVBQUc7UUFDOUMsSUFBSXhDLFdBQVcsR0FBS3VDLEtBQUssSUFBSSxPQUFPQSxLQUFLLENBQUN2QyxXQUFXLEtBQUssUUFBUSxHQUFLdUMsS0FBSyxDQUFDdkMsV0FBVyxDQUFDeUMsSUFBSSxDQUFDLENBQUMsR0FBRy9ELENBQUM7UUFDbkcsSUFBSXVCLE9BQU8sR0FBR3NDLEtBQUssSUFBSUEsS0FBSyxDQUFDdEMsT0FBTyxHQUFHWSxnQkFBZ0IsQ0FBRTBCLEtBQUssQ0FBQ3RDLE9BQVEsQ0FBQyxHQUFHLEVBQUU7UUFDN0UsSUFBSUMsUUFBUSxHQUFHcUMsS0FBSyxJQUFJQSxLQUFLLENBQUNyQyxRQUFRLEdBQUdZLHNCQUFzQixDQUFFeUIsS0FBSyxDQUFDckMsUUFBUyxDQUFDLEdBQUcsRUFBRTtRQUN0RixJQUFJd0MsU0FBUyxHQUFHLEVBQUU7UUFDbEIsSUFBSUMsS0FBSyxHQUFHLEVBQUU7UUFFZCxJQUFLM0MsV0FBVyxFQUFHO1VBQ2xCMEMsU0FBUyxJQUFJUCxRQUFRLENBQUVuQyxXQUFZLENBQUMsR0FBRyxRQUFRO1FBQ2hEO1FBQ0EwQyxTQUFTLElBQUksV0FBVyxHQUFHbEUsQ0FBQyxHQUFHLFlBQVk7UUFDM0MsSUFBS3lCLE9BQU8sRUFBRztVQUNkMEMsS0FBSyxJQUFJLE9BQU8sR0FBR1IsUUFBUSxDQUFFbEMsT0FBUSxDQUFDLEdBQUcsR0FBRztRQUM3QztRQUNBLElBQUtDLFFBQVEsRUFBRztVQUNmeUMsS0FBSyxJQUFJLFVBQVUsR0FBR1IsUUFBUSxDQUFFakMsUUFBUyxDQUFDLEdBQUcsR0FBRztRQUNqRDtRQUNBLElBQUt5QyxLQUFLLEVBQUc7VUFDWkQsU0FBUyxHQUFHLE9BQU8sR0FBR0MsS0FBSyxHQUFHLEdBQUcsR0FBR0QsU0FBUyxHQUFHLFNBQVM7UUFDMUQ7UUFDQUYsSUFBSSxDQUFFRSxTQUFVLENBQUM7TUFDbEIsQ0FBRSxDQUFDO0lBQ0o7SUFFQSxJQUFLekUsQ0FBQyxDQUFDZ0UsaUJBQWlCLElBQUksT0FBT2hFLENBQUMsQ0FBQ2dFLGlCQUFpQixDQUFDekMsUUFBUSxLQUFLLFVBQVUsRUFBRztNQUNoRnVDLDhCQUE4QixDQUFDLENBQUM7SUFDakMsQ0FBQyxNQUFNO01BQ043RCxDQUFDLENBQUMwRSxnQkFBZ0IsQ0FBRSx5QkFBeUIsRUFBRWIsOEJBQThCLEVBQUU7UUFBRWMsSUFBSSxFQUFFO01BQUssQ0FBRSxDQUFDO0lBQ2hHO0lBRUEsU0FBU0MsOEJBQThCQSxDQUFBLEVBQUc7TUFDekMsSUFBSUMsZ0JBQWdCLEdBQUc5RSxDQUFDLENBQUMrRSx3QkFBd0I7TUFDakQsSUFBSyxDQUFFRCxnQkFBZ0IsSUFBSSxPQUFPQSxnQkFBZ0IsQ0FBQ3ZELFFBQVEsS0FBSyxVQUFVLEVBQUc7UUFDNUU7TUFDRDtNQUNBLElBQUssT0FBT3VELGdCQUFnQixDQUFDYixZQUFZLEtBQUssVUFBVSxJQUFJYSxnQkFBZ0IsQ0FBQ2IsWUFBWSxDQUFFN0QsQ0FBRSxDQUFDLEVBQUc7UUFDaEc7TUFDRDtNQUVBMEUsZ0JBQWdCLENBQUN2RCxRQUFRLENBQUVuQixDQUFDLEVBQUUsVUFBV2tFLEtBQUssRUFBRUMsSUFBSSxFQUFFUyxNQUFNLEVBQUc7UUFDOURBLE1BQU0sR0FBR0EsTUFBTSxJQUFJLENBQUMsQ0FBQztRQUNyQixJQUFJQyxVQUFVLEdBQUdELE1BQU0sQ0FBQzdFLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDakMsSUFBSStFLFNBQVMsR0FBS1osS0FBSyxJQUFJLE9BQU9BLEtBQUssQ0FBQ3ZDLFdBQVcsS0FBSyxRQUFRLEdBQUt1QyxLQUFLLENBQUN2QyxXQUFXLENBQUN5QyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUU7UUFDbEcsSUFBSTVELEtBQUssR0FBR3NFLFNBQVMsQ0FBQ2IsT0FBTyxDQUFFLFVBQVUsRUFBRSxFQUFHLENBQUMsSUFBSTFELENBQUM7UUFFcEQsSUFBSyxPQUFPbUUsZ0JBQWdCLENBQUNLLG9CQUFvQixLQUFLLFVBQVUsRUFBRztVQUNsRTtVQUNBO1VBQ0E7UUFDRDtRQUNBO1FBQ0E7TUFDRCxDQUFFLENBQUM7SUFDSjtJQUVBLElBQUtuRixDQUFDLENBQUMrRSx3QkFBd0IsSUFBSSxPQUFPL0UsQ0FBQyxDQUFDK0Usd0JBQXdCLENBQUN4RCxRQUFRLEtBQUssVUFBVSxFQUFHO01BQzlGc0QsOEJBQThCLENBQUMsQ0FBQztJQUNqQyxDQUFDLE1BQU07TUFDTjVFLENBQUMsQ0FBQzBFLGdCQUFnQixDQUFFLGlDQUFpQyxFQUFFRSw4QkFBOEIsRUFBRTtRQUFFRCxJQUFJLEVBQUU7TUFBSyxDQUFFLENBQUM7SUFDeEc7RUFDRCxDQUFDO0FBQ0YsQ0FBQyxFQUFHUSxNQUFNLEVBQUVDLFFBQVMsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
163