{"version":3,"file":"msfd_search.js","sources":["../../src/js/msfd_search.js"],"sourcesContent":["/* global window, document, jQuery */\n(function (window, document, $) {\n /*\n * ****************************************************\n * Page elements init\n * ****************************************************\n * */\n var exceptVal = ['all', 'none', 'invert', 'apply'];\n var selectorFormContainer = '.wise-search-form-container';\n var selectorLeftForm = '#wise-search-form';\n\n var sessionStore = storageFactory(sessionStorage);\n /*\n * Vars and $ plugins\n *\n * */\n $.randomString = function () {\n var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz';\n var string_length = 8;\n var randomstring = '';\n for (var i = 0; i < string_length; i++) {\n var rnum = Math.floor(Math.random() * chars.length);\n randomstring += chars.substring(rnum, rnum + 1);\n }\n return randomstring;\n };\n\n $.getMultipartData = function (frmName, newBoundary) {\n //Start multipart formatting\n var initBoundary = newBoundary || $.randomString();\n var strBoundary = '--' + initBoundary;\n var strMultipartBody = '';\n var strCRLF = '\\r\\n';\n\n var iname = $(frmName).attr('id');\n\n var formData = $(frmName).serializeArray();\n //Create multipart for each element of the form\n\n if (formData.length === 0) {\n return false;\n }\n\n var res = [];\n var vals = {};\n\n $.each(formData, function (indx, val) {\n strMultipartBody +=\n strBoundary +\n strCRLF +\n 'Content-Disposition: form-data; name=\"' +\n val.name +\n '\"' +\n strCRLF +\n strCRLF +\n val.value +\n strCRLF;\n\n res.push(val.name);\n if (!vals[val.name]) vals[val.name] = [];\n vals[val.name].push(val.value);\n });\n\n //End the body by delimiting it\n strMultipartBody += strBoundary + '--' + strCRLF;\n\n //Return boundary without -- and the multipart content\n return [initBoundary, strMultipartBody, vals];\n };\n\n var loading = false;\n\n /*\n * Styling and hiding\n *\n */\n function initStyling() {\n var ajaxSpinner = $('#ajax-spinner');\n $('body').append(ajaxSpinner.clone(true).attr('id', 'ajax-spinner2'));\n ajaxSpinner.remove();\n\n $('.button-field').addClass('btn');\n $(selectorFormContainer + ' #s2id_form-widgets-marine_unit_id')\n .parentsUntil('.field')\n .parent()\n .hide();\n\n $('#form-buttons-continue').hide('fast');\n\n var fbDownload = $('#form-buttons-download');\n if (fbDownload.length > 0) {\n var dBtn =\n fbDownload.prop('outerHTML').replace('input', 'button') +\n ' Download as spreadsheet';\n var btnForm = fbDownload.parent();\n\n fbDownload.remove();\n\n btnForm.append($(dBtn));\n $('#form-buttons-download')\n .val('Download as spreadsheet')\n .addClass('glyphicon glyphicon-download-alt');\n }\n }\n\n /*\n * CHECKBOXES functions\n * */\n function generateControlDiv() {\n var spAll =\n '' +\n 'Select :';\n var spClear =\n '';\n var invertSel =\n '' +\n '
Apply filters
' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '';\n return spAll + spClear + invertSel;\n }\n\n function searchAutoComplete(evtarget, $field) {\n var cheks2 = $field.find('.option .label:not(.horizontal) ');\n var labels = cheks2.parentsUntil('.option').parent();\n var inputs = labels.find('input');\n var options = labels.parent();\n var no_results = options.find('.noresults');\n\n if ($(evtarget).val() === '') {\n no_results.addClass('hidden');\n labels.removeClass('hidden');\n var data = $field.find('.panel').data('checked_items');\n if (data) {\n $.each(inputs, function (idx, el) {\n // 96264 in case we have an empty searchfield checked items\n // saved in previous query\n el.checked = data.indexOf(el.id) !== -1;\n });\n }\n return true;\n }\n\n $field.find('.apply-filters').show();\n //$(evtarget).find(\".apply-filters\").show();\n labels.removeClass('hidden');\n\n var toSearch = $(evtarget).val().toLowerCase().replace(/\\s/g, '_');\n\n var matcher = new RegExp($.ui.autocomplete.escapeRegex(toSearch), 'i');\n\n var temp = {};\n var checksLabels = $field\n .find('.option .label:not(.horizontal) ')\n .map(function (ind, item) {\n temp[$(item).text().toLowerCase()] = $(item)\n .text()\n .toLowerCase()\n .replace(/\\s/g, '_');\n //return temp;\n return (\n $(item)\n .text()\n .toLowerCase()\n /*.replace(/^\\s+|\\s+$/g, '')*/\n /*.replace(/_/g, \"\")*/\n .replace(/\\s/g, '_')\n );\n });\n\n var found = [];\n $.each(temp, function (indx, item) {\n if (!matcher.test(item)) {\n found.push(indx);\n }\n });\n\n var tohide = cheks2.filter(function (idx, elem) {\n return found.indexOf($(elem).text().toLowerCase()) !== -1;\n });\n\n var toshow = cheks2.filter(function (idx, elem) {\n return found.indexOf($(elem).text().toLowerCase()) === -1;\n });\n $.each(toshow, function (ind, item) {\n $(item)\n .parentsUntil('.option')\n .parent()\n .find(\"[type='checkbox']\")\n .prop('checked', true);\n });\n\n $.each(tohide, function (inx, item) {\n $(item)\n .parentsUntil('.option')\n .parent()\n .find(\"[type='checkbox']\")\n .prop('checked', false);\n $(item)\n .parentsUntil('.option')\n .parent()\n .find(\"input[type='checkbox']\")\n .prop('checked', false);\n $(item)\n .parentsUntil('.option')\n .parent()\n .find(\"input[type='checkbox']\")\n .removeAttr('checked');\n $(item).parentsUntil('.option').parent().addClass('hidden');\n });\n\n if (tohide.length === cheks2.length) {\n no_results.removeClass('hidden');\n } else {\n no_results.addClass('hidden');\n }\n }\n\n function addAutoComplete($field) {\n $field.find('.ui-autocomplete-input').autocomplete({\n minLength: 0,\n source: [],\n search: function (event) {\n searchAutoComplete(event.target, $field);\n },\n create: function () {\n var that = this;\n var removeBtn = $(this)\n .parentsUntil('.ui-autocomplete')\n .find('.clear-btn ');\n removeBtn.on('click', null, that, function (ev) {\n $(this).parentsUntil('.controls').find('input').val('');\n $(this).parentsUntil('.controls').find('input').trigger('change');\n $(ev.data).autocomplete('search', 'undefined');\n });\n },\n });\n }\n\n function addCheckboxPanel($field, fieldId, cheks) {\n $field.addClass('panel-group');\n\n var chekspan = $field.find('> span:not(.controls)');\n // chekspan.css(\"border-radius\", 0);\n chekspan\n .addClass(fieldId + '-collapse')\n .addClass('collapse')\n .addClass('panel')\n .addClass('panel-default');\n\n var label = $field.find('.horizontal');\n\n var alabel =\n \"\" +\n label.text() +\n '';\n label.html(alabel);\n\n label.addClass('panel-heading').addClass('panel-title');\n\n label.attr('data-toggle', 'collapse');\n label.attr('data-target', '.' + fieldId + '-collapse');\n\n // if already checked than collapse\n // double collapse fix\n // chekspan.collapse({ toggle: true });\n // chekspan.collapse({ toggle: true });\n\n $field.find('.accordion-toggle').addClass('accordion-after');\n\n // hidden-colapse event\n chekspan.on('hidden.bs.collapse', function () {\n chekspan.fadeOut('fast');\n $field.find('.controls').slideUp('fast');\n $field.css({ 'border-bottom': '1px solid #ccc;' });\n });\n\n // show accordion\n chekspan.on('show.bs.collapse', function () {\n // collapsed\n chekspan.fadeIn('fast');\n $field.find('.controls').slideDown('fast');\n $field.find('> span').css({ display: 'block' });\n $field.find('.accordion-toggle').addClass('accordion-after');\n });\n\n // hide accordion\n chekspan.on('hide.bs.collapse', function () {\n // not collapsed\n window.setTimeout(function () {\n $field.find('.accordion-toggle').removeClass('accordion-after');\n }, 600);\n });\n\n // initialize autocomplete for more than 6 checkboxes\n if (cheks.length < 6) {\n $field.find('.controls .ui-autocomplete').hide();\n } else {\n // 96264 save checked items when having search input in case the user\n // goes back on the search\n chekspan.append(\"\");\n chekspan.data('checked_items', []);\n\n var data = chekspan.data('checked_items');\n $.each($field.find('input:checked'), function (idx, el) {\n data.push(el.id);\n });\n\n // TIBI TODO: re-enable\n addAutoComplete($field);\n }\n }\n\n function sortCheckboxesByChecked($field) {\n if (\n window.WISE !== undefined &&\n window.WISE.blocks !== undefined &&\n window.WISE.blocks.indexOf($field.attr('id')) !== -1\n ) {\n return;\n }\n var arr = [];\n $.each(\n $field.find(\".option input[type='checkbox']:not(:checked)\"),\n function (ix, ch) {\n arr.push($(ch).parent());\n },\n );\n var found = $field.find(\".option input[type='checkbox']:checked\");\n var foundArr = [];\n if (found.length > 0) {\n $.each(found, function (ix, item) {\n foundArr.push($(item).parent());\n });\n }\n var all = foundArr.concat(arr);\n\n $.each(all, function (ix, ch) {\n $field.find('.panel').append(ch);\n });\n }\n\n // enable autosubmit handler\n function fieldAutoSubmitSetup(fieldId, $field) {\n $('#' + fieldId).on('click', '.option', function () {\n var self = this;\n $('#ajax-spinner2').hide();\n //window.WISE.blocks = window.WISE.blocks.sort().filter((x, i, a) => !i || x != a[i-1]);\n\n if (\n window.WISE.blocks.indexOf(\n $(this).parentsUntil('.field').parent().attr('id'),\n ) !== -1\n ) {\n sortCheckboxesByChecked($field);\n } else {\n //TODO : check if apply-filters shown\n // each checkbox does auto submit\n window.setTimeout(function () {\n $(\n selectorFormContainer + ' .formControls #form-buttons-continue',\n ).trigger('click', { button: self });\n }, 300);\n }\n });\n }\n\n function generateCheckboxes($fields, $fieldsnr) {\n var count = $fieldsnr;\n $fields.each(function (indx, field) {\n var $field = $(field);\n var cheks = $field.find('.option');\n var allcheckboxes = cheks.find(\"input[type='checkbox']\");\n var hasChecks = allcheckboxes.length > 0;\n // has checkboxes\n if (hasChecks) {\n var fieldId = $field.attr('id');\n\n fieldAutoSubmitSetup(fieldId, $field);\n\n // add \"controls\"\n var all = generateControlDiv();\n $field.find('> label.horizontal').after(all);\n\n //tooltips\n cheks.each(function (idx) {\n var text = $(cheks[idx]).text();\n $(cheks[idx]).attr('title', text.trim());\n });\n\n if (cheks.length < 4) {\n $field.find('.controls a').hide();\n $field\n .find('.controls')\n .html('')\n .css('height', '1px')\n .css('padding', 0);\n } else {\n addCheckboxPanel($field, fieldId, cheks);\n\n $field.find('.search-icon').on('click', function (ev) {\n $(ev.target).parent().find('input').trigger('focus');\n });\n }\n\n sortCheckboxesByChecked($field);\n }\n if (!--count)\n $(selectorFormContainer + ',' + selectorLeftForm).animate(\n { opacity: 1 },\n 1000,\n );\n });\n }\n\n function checkboxHandlerAll(ev) {\n ev.preventDefault();\n\n var par = $(this).parent().parent();\n\n window.WISE.blocks.push($(this).parentsUntil('.field').parent().attr('id'));\n\n par.find('.apply-filters').show();\n var rest = filterInvalidCheckboxes($(par).find(\"[type='checkbox']\"));\n\n $.each(rest, function (idx) {\n if ($(rest[idx]).val() !== 'all' && $(rest[idx]).val() !== 'none')\n $(rest[idx]).prop('checked', true);\n });\n\n //$( selectorFormContainer + \" .formControls #form-buttons-continue\").trigger(\"click\");\n }\n\n function checkboxHandlerNone(ev) {\n ev.preventDefault();\n\n $(this).prop('checked', false);\n var par = $(this).parent().parent();\n par.find('.apply-filters').show();\n var rest = filterInvalidCheckboxes($(par).find(\"[type='checkbox']\"));\n\n window.WISE.blocks.push($(this).parentsUntil('.field').parent().attr('id'));\n\n $.each(rest, function (idx) {\n $(rest[idx]).prop('checked', false);\n //if( $(rest[idx]).val() !== \"none\")\n });\n\n //$( selectorFormContainer + \" .formControls #form-buttons-continue\").trigger(\"click\");\n }\n\n function checkboxHandlerInvert(ev) {\n ev.preventDefault();\n $(this).prop('checked', false);\n\n var par = $(this).parent().parent();\n par.find('.apply-filters').show();\n\n window.WISE.blocks.push($(this).parentsUntil('.field').parent().attr('id'));\n\n var rest = filterInvalidCheckboxes($(par).find(\"[type='checkbox']\"));\n\n var checked = rest.filter(function (ind, item) {\n return $(item).is(':checked');\n });\n\n var unchecked = rest.filter(function (ind, item) {\n return !$(item).is(':checked');\n });\n\n $.each(checked, function (idx) {\n $(checked[idx]).prop('checked', false);\n });\n\n $.each(unchecked, function (idx) {\n $(unchecked[idx]).prop('checked', true);\n });\n //$( selectorFormContainer + \" .formControls #form-buttons-continue\").trigger(\"click\");\n }\n\n function addCheckboxHandlers() {\n var $controls = $('.controls');\n $controls.on('click', \"a[data-value='all']\", checkboxHandlerAll);\n $controls.on('click', \"a[data-value='none']\", checkboxHandlerNone);\n $controls.on('click', \"a[data-value='invert']\", checkboxHandlerInvert);\n //$(\".controls .apply-filters\").on(\"click\", $( selectorFormContainer + \" .formControls #form-buttons-continue\").trigger(\"click\") );\n\n $controls.one('click', '.apply-filters', function () {\n $(selectorFormContainer + \" [name='form.widgets.page']\").val(0);\n $(\n selectorFormContainer + ' .formControls #form-buttons-continue',\n ).trigger('click', { button: this });\n });\n }\n\n function filterInvalidCheckboxes(cbxs) {\n return cbxs.filter(function (idx, item) {\n return exceptVal.indexOf($(item).val()) === -1;\n });\n }\n\n function addCheckboxLabelHandlers() {\n var allch = $(selectorFormContainer + ', ' + selectorLeftForm).find(\n '[data-fieldname]',\n );\n\n var triggerClick = function (chV, ev) {\n //reset page\n $(selectorFormContainer + \" [name='form.widgets.page']\").val(0);\n if (exceptVal.indexOf(chV) === -1)\n $(ev.target).find(\"input[type='checkbox']\").trigger('click');\n };\n\n // listener for click on the whole span\n allch.on('click', '.option', function (ev) {\n $('#ajax-spinner2').hide();\n var checkboxV = $(this).find(\"input[type='checkbox']\").val();\n if (\n window.WISE.blocks.indexOf(\n $(this).parentsUntil('.field').parent().attr('id'),\n ) !== -1\n ) {\n //return false;\n } else {\n triggerClick(checkboxV, ev);\n }\n });\n }\n /*\n * CHECKBOXES functions END\n * */\n\n /*\n * SELECT2 functions\n * */\n function setupRightSelects2(selector) {\n var forbiddenIDs = [\n 'form-widgets-member_states-from',\n 'form-widgets-member_states-to',\n ];\n var selectorFormCont = selector || selectorFormContainer;\n\n $(selectorFormCont + ' select').each(function (ind, selectElement) {\n var selectedElementID = $(selectElement).attr('id');\n if (forbiddenIDs.indexOf(selectedElementID) !== -1) {\n return false;\n }\n\n $(selectElement).addClass('js-example-basic-single');\n var lessOptions = $(selectElement).find('option').length < 10;\n\n var $wise_search_form = $(selectorFormCont);\n\n var options = {\n placeholder: 'Select an option',\n closeOnSelect: true,\n dropdownAutoWidth: true,\n width: '100%',\n theme: 'flat',\n };\n if (lessOptions) options.minimumResultsForSearch = Infinity;\n\n $(selectElement).select2(options);\n\n $(selectorFormCont + ' #s2id_form-widgets-marine_unit_id').hide();\n\n var removePaginationButtons = function () {\n // $wise_search_form.find(\"[name='form.buttons.prev']\").remove();\n // $wise_search_form.find(\"[name='form.buttons.next']\").remove();\n $wise_search_form.find(\"[name='form.widgets.page']\").remove();\n };\n\n $(selectElement).on('select2-selecting', function (ev) {\n // remove results following form-widgets-article select element\n // as we want to reset each facet to it's initial value if we change form\n if ($(this).attr('id') === 'form-widgets-article') {\n //$(ev.target).closest(\".form-right-side\").next().remove();\n }\n\n removePaginationButtons();\n\n var self = this;\n window.setTimeout(function () {\n $(\n selectorFormCont + ' .formControls #form-buttons-continue',\n ).trigger('click', { select: self });\n }, 300);\n });\n });\n }\n\n function formatArticle(article) {\n var el = $(article.element[0]);\n var subtitle = el.attr('data-subtitle');\n\n return '' + el.attr('data-maintitle') + ': ' + subtitle + '';\n }\n\n function marineUnitSelect() {\n var $selectArticle = $('#mobile-select-article');\n\n var moptions = {\n placeholder: 'Select an option',\n closeOnSelect: true,\n // dropdownAutoWidth: true,\n // width: 'auto',\n width: 'element',\n theme: 'flat',\n minimumResultsForSearch: 20,\n formatSelection: formatArticle,\n formatResult: formatArticle,\n containerCssClass: 'mobile-select-article',\n };\n\n if ($.fn.select2 !== undefined) {\n $selectArticle.select2(moptions);\n $selectArticle.one('select2-selecting', function (ev) {\n document.location.href = ev.choice.id;\n });\n }\n }\n\n function setupLeftSelect2() {\n var marineUnitTriggerSelector = '#marine-unit-trigger';\n if (\n $(selectorLeftForm + ' select:not(.notselect)').hasClass(\n 'js-example-basic-single',\n )\n ) {\n return false;\n }\n $(selectorLeftForm + ' select:not(.notselect)')\n .addClass('js-example-basic-single')\n .each(function (ind, selectElement) {\n var options = {\n placeholder: 'Select an option',\n closeOnSelect: true,\n dropdownAutoWidth: false,\n width: 'auto',\n theme: 'flat',\n minimumResultsForSearch: 20,\n allowClear: true,\n dropdownParent: '#marine-unit-trigger',\n dropdownAdapter: 'AttachContainer',\n containerCssClass: 'select2-top-override',\n dropdownCssClass: 'select2-top-override-dropdown',\n debug: true,\n };\n\n $(selectElement).select2(options);\n\n // david\n $(selectElement)\n .parentsUntil('.field')\n .parent()\n .prepend('

Marine Unit ID:

');\n\n $(selectElement).on('select2-open', function () {\n var trh = $(marineUnitTriggerSelector).offset().top;\n //$(\".select2-top-override-dropdown\").css(\"margin-top\", $(\"#marine-unit-trigger\").height()/2 + \"px\" );\n $(marineUnitTriggerSelector + ' .arrow').hide();\n $('.select2-top-override-dropdown').css({\n top:\n trh +\n $(marineUnitTriggerSelector).height() -\n $(marineUnitTriggerSelector + ' .arrow').height() +\n 'px',\n 'margin-top': '12' + 'px !important',\n });\n });\n\n $(selectElement).on('select2-selecting', function (ev) {\n //$(selectorLeftForm + \" \"+ marineUnitTriggerSelector +\" a\").text(ev.object.text);\n\n $(selectorFormContainer + \" [name='form.widgets.page']\").val(0);\n $(selectorFormContainer + ' #form-widgets-marine_unit_id')\n .select2()\n .val(ev.val)\n .trigger('change');\n $(\n selectorFormContainer + ' .formControls #form-buttons-continue',\n ).trigger('click', { select: ev.target, from_marine_widget: true });\n });\n\n $(selectElement).on('select2-close', function () {\n $(marineUnitTriggerSelector).css('background', 'transparent');\n $(marineUnitTriggerSelector + ' a').css('background', 'transparent');\n $(marineUnitTriggerSelector + ' .arrow').show();\n });\n\n /// Marine Unit id selector\n if (\n $(selectorLeftForm + ' select').hasClass('js-example-basic-single')\n ) {\n // Select2 has been initialized\n var text = $(\n selectorLeftForm +\n ' select [value=\"' +\n jQuery(selectorLeftForm + ' .select-article select').val() +\n '\"]',\n ).text();\n $(selectorLeftForm + ' select:not(.notselect)')\n .parentsUntil('.field')\n .before(\n '
' +\n '
' +\n text +\n '
' +\n '
',\n );\n\n $(marineUnitTriggerSelector).on('click', function () {\n if (loading) return false;\n $(marineUnitTriggerSelector).css(\n 'background',\n 'rgb(238, 238, 238)',\n );\n $(marineUnitTriggerSelector + ' a').css(\n 'background',\n 'rgb(238, 238, 238)',\n );\n\n $(selectorLeftForm + ' select:not(.notselect)').select2('open');\n\n var trH = $(marineUnitTriggerSelector + ' a').height();\n $('.select2-top-override-dropdown').css(\n 'margin-top',\n trH / 2 + 'px',\n );\n });\n }\n });\n }\n\n function attachSelect2() {\n setupRightSelects2();\n setupLeftSelect2();\n marineUnitSelect();\n\n var w = 'auto';\n var daw = true;\n if (window.matchMedia('(max-width: 967px)').matches) {\n w = false;\n daw = false;\n }\n\n var options = {\n placeholder: 'Select an option',\n closeOnSelect: true,\n dropdownAutoWidth: daw,\n width: w,\n theme: 'flat',\n minimumResultsForSearch: 20,\n containerCssClass: 'extra-details-select',\n };\n\n $.each($(selectorLeftForm + ' .extra-details-select'), function (\n idx,\n elem,\n ) {\n if ($(elem).find('option').length > 1) {\n $(elem).select2(options);\n } else {\n $(elem).hide();\n //$(elem).after(\"\"+ $($(elem).find(\"option\")[0]).attr(\"title\") +\"\");\n }\n });\n\n $(selectorLeftForm + ' .extra-details .tab-panel').fadeOut(\n 'slow',\n function () {\n $.each(\n $(selectorLeftForm + ' .extra-details .extra-details-section'),\n function (indx, item) {\n $($(item).find('.tab-panel')[0]).show();\n },\n );\n },\n );\n\n $(selectorLeftForm + ' .extra-details-select').on(\n 'select2-selecting',\n function (ev) {\n var sect = $(ev.target).parentsUntil('.extra-details-section').parent();\n $.each($(sect).find('.tab-panel'), function (idx, elem) {\n if ($(elem).attr('id') !== ev.choice.id) {\n $(elem).hide();\n } else {\n $(elem).fadeIn();\n }\n });\n },\n );\n\n if($(selectorLeftForm + ' .tab-content .tab-pane.fade').length > 0) {\n $($(selectorLeftForm + ' .tab-content.msfd-extra-tab-content .tab-pane.fade')[0]).addClass('in active');\n $($(selectorLeftForm + ' .nav-tabs.msfd-extra-nav-tabs .nav-item')[0]).addClass('active');\n }\n }\n /*\n * SELECT2 functions END\n * */\n\n function marineBtnHandler(ev) {\n var direction = ev.data.direction;\n var marinUidSelect = $(\n selectorFormContainer + ' #s2id_form-widgets-marine_unit_id',\n );\n var selectedV = marinUidSelect.select2('data');\n\n var nextEl = $(selectedV.element[0]).next();\n var prevEl = $(selectedV.element[0]).prev();\n\n if (direction === 'next') {\n var dir = nextEl.val();\n } else if (direction === 'prev') {\n var dir = prevEl.val();\n }\n\n // reset paging\n $(selectorFormContainer + \" [name='form.widgets.page']\").remove();\n\n $(selectorFormContainer + ' #form-widgets-marine_unit_id')\n .select2()\n .val(dir)\n .trigger('change', { from_marine_widget: true });\n $(selectorFormContainer + ' #s2id_form-widgets-marine_unit_id').hide();\n\n //$(selectorFormContainer + \" .formControls #form-buttons-continue\").trigger(\"click\");\n $(selectorFormContainer + ' .formControls #form-buttons-continue').trigger(\n 'click',\n );\n }\n\n function setPaginationButtons() {\n var prevButton = $(\".msfd-search-wrapper [name='form.buttons.prev']\");\n var nextButton = $(\".msfd-search-wrapper [name='form.buttons.next']\");\n var continueBtn = '.formControls #form-buttons-continue';\n\n prevButton.one('click', function () {\n if (loading) return false;\n $(selectorFormContainer)\n .find('form')\n .append(\"\");\n $(selectorFormContainer).find(continueBtn).trigger('click');\n });\n\n nextButton.one('click', function () {\n if (loading) return false;\n $(selectorFormContainer)\n .find('form')\n .append(\"\");\n $(selectorFormContainer).find(continueBtn).trigger('click');\n });\n\n var selected = $(selectorLeftForm + ' select:not(.notselect)').val();\n\n var opts = $(selectorLeftForm + ' select:not(.notselect) option');\n var formBtnPrevTop = '#form-buttons-prev-top';\n var formBtnNextTop = '#form-buttons-next-top';\n var marineUnitTrigger = '#marine-unit-trigger';\n\n $('#marine-unit-nav').hide();\n // ignore 1st option for \"prev\" button\n if (\n $(selectorLeftForm + ' select:not(.notselect)').val() !== $(opts[1]).val()\n ) {\n var topPrevBtn =\n '';\n\n $(formBtnPrevTop).append(topPrevBtn);\n\n $(formBtnPrevTop).on(\n 'click',\n null,\n { direction: 'prev' },\n marineBtnHandler,\n );\n $(formBtnPrevTop).hide();\n $(marineUnitTrigger + ' .arrow-left-container').one('click', function () {\n $(formBtnPrevTop).trigger('click');\n });\n } else {\n $(marineUnitTrigger + ' .arrow-left-container').hide();\n $('.text-trigger').css('margin-left', 0);\n }\n\n // ignore last option for \"next\" button\n if (\n $(selectorLeftForm + ' select:not(.notselect)').val() !==\n $(opts[opts.length - 1]).val()\n ) {\n var topNextBtn =\n '';\n\n $(formBtnNextTop).append(topNextBtn);\n\n $(formBtnNextTop).on(\n 'click',\n null,\n { direction: 'next' },\n marineBtnHandler,\n );\n $(formBtnNextTop).hide();\n $(marineUnitTrigger + ' .arrow-right-container').one(\n 'click',\n function () {\n $('#form-buttons-next-top').trigger('click');\n },\n );\n } else {\n $(marineUnitTrigger + ' .arrow-right-container').hide();\n }\n }\n\n var paginationTextResult = '.pagination-text > span:first-child';\n\n function initPaginationInput() {\n // check if results more than 2, if not then disable\n if (parseInt($($('.pagination-text > span:nth-child(2)')[0]).text()) < 3) {\n return false;\n }\n\n $(paginationTextResult).addClass('pagination-result');\n\n if ($(paginationTextResult).parent().find('input').length === 0) {\n $(paginationTextResult).after(\n '',\n );\n $('.pagination-text .pagination-input').hide();\n\n paginationInputHandlers();\n }\n\n $('.msfd-search-wrapper').on('click', paginationTextResult, function (ev) {\n $(ev.target)\n .parent()\n .find('input')\n .show(300)\n .focus()\n .css('display', 'inline-block');\n $(ev.target).hide();\n });\n\n $('.msfd-search-wrapper').on('click', function (ev) {\n // if click is on the result text\n if (\n $(ev.target).is(paginationTextResult) ||\n $(ev.target).is('.pagination-text .pagination-input')\n ) {\n } else {\n $(paginationTextResult).parent().find('input').hide();\n $(paginationTextResult).show();\n }\n });\n }\n\n function paginationInputHandlers() {\n var inp = $('.pagination-text .pagination-input');\n\n // hide pagination input on focus out\n /*inp.on(\"focusout\", function (){\n inp.hide();\n $(paginationTextResult).show();\n });*/\n\n // pagination input delay auto-submit\n inp.bind('focusout', function (e) {\n var val = $(e.target).val();\n var maximum = parseInt($($(e.target).parent().find('> span')[1]).text());\n\n if (loading) {\n return false;\n }\n\n var _this = $(this);\n var validateNr = function (x, maximum) {\n if (isNaN(parseInt(x))) {\n return false;\n } else {\n x = parseInt(x);\n var res = $($(paginationTextResult)[0]).text();\n if (x === parseInt(res)) {\n return false;\n }\n if (x > maximum) {\n return maximum - 1;\n }\n if (x <= 0) {\n return false;\n }\n }\n return x === 1 ? 0 : x - 1;\n };\n var validator = validateNr(val, maximum);\n if (validator !== false) {\n $(selectorFormContainer + \" [name='form.widgets.page']\").val(validator);\n $(paginationTextResult).text(val);\n $(paginationTextResult).show();\n $(paginationTextResult).parent().find('input').hide();\n $(\n selectorFormContainer + ' .formControls #form-buttons-continue',\n ).trigger('click');\n } else {\n $(e.target).val('');\n $(paginationTextResult).parent().find('input').hide();\n $(paginationTextResult).show();\n }\n });\n }\n\n function initPageElems() {\n // move marine unit id below form title and pagination as seen on the\n // other article tabs\n var pagination = $('.prev-next-row').eq(0);\n if (pagination.length) {\n $('#marine-widget-top').detach().insertBefore(pagination);\n }\n\n initStyling();\n\n var $fields = $(selectorFormContainer + ', ' + selectorLeftForm).find(\n '[data-fieldname]',\n );\n if ($fields.length > 0) {\n generateCheckboxes($fields, $fields.length);\n }\n\n $(selectorFormContainer + ',' + selectorLeftForm).animate(\n { opacity: 1 },\n 1000,\n );\n\n addCheckboxHandlers($(selectorFormContainer));\n addCheckboxLabelHandlers();\n attachSelect2();\n\n if ('undefined' !== typeof window.setupTabs && null !== window.setupTabs)\n window.setupTabs();\n\n if ('undefined' !== typeof clickFirstTab && null !== clickFirstTab)\n clickFirstTab();\n\n setPaginationButtons();\n initPaginationInput();\n }\n\n /*\n * Form handlers\n * */\n function beforeSendForm(jqXHR, settings) {\n window.WISE.blocks = [];\n //$(\"#ajax-spinner2\").hide();\n\n $(selectorLeftForm + ' .no-results').remove();\n\n var t = \"
\";\n var sp = $('#ajax-spinner2').attr('id', 'ajax-spinner-form').show();\n\n $(selectorFormContainer).append(t);\n $('#wise-search-form-container-preloader').append(sp);\n\n $('#form-widgets-marine_unit_id').prop('disabled', true);\n //$(\"s2id_form-widgets-marine_unit_id\").select2(\"enable\",false);\n $(\"[name='form.buttons.prev']\").prop('disabled', true);\n $(\"[name='form.buttons.next']\").prop('disabled', true);\n\n $(\"[name='marine.buttons.prev']\").prop('disabled', true);\n $(\"[name='marine.buttons.next']\").prop('disabled', true);\n\n if ($('#marine-widget-top').length > 0) {\n var cont = $('#marine-widget-top').next();\n cont.css('position', 'relative');\n } else {\n cont = $('.left-side-form');\n }\n\n cont.prepend(\"
\");\n\n $('#wise-search-form-preloader').append(\n \"\",\n );\n $('#wise-search-form-preloader > span').append(\n $('#ajax-spinner2').clone().attr('id', 'ajax-spinner-center').show(),\n );\n\n $('#ajax-spinner-center').css({\n position: 'fixed',\n //\"top\" : \"50%\",\n //\"left\" : \"30%\",\n // \"transform\" : \"translateX(-50%)\"\n });\n\n $('#wise-search-form-top').find('.alert').remove();\n //window.WISE.marineUnit = $(selectorLeftForm + \" select\").val( );\n\n loading = true;\n }\n\n function formSuccess(data, status, req) {\n $(selectorLeftForm + ' #wise-search-form-top')\n .siblings()\n .html('');\n $(selectorLeftForm + ' #wise-search-form-top')\n .siblings()\n .fadeOut('fast');\n\n $(selectorLeftForm + ' .topnav')\n .next()\n .remove();\n\n var $data = $(data);\n\n window.WISE.formData = $(data).find(selectorFormContainer).clone(true);\n\n var chtml = $data.find(selectorFormContainer);\n\n var fhtml = chtml.html();\n\n console.log('success');\n $('#wise-search-form-preloader').remove();\n\n var centerContentD = $data\n .find(selectorLeftForm + ' #wise-search-form-top')\n .siblings();\n\n $(selectorFormContainer).html(fhtml);\n\n if ($data.find(selectorLeftForm + ' .topnav').next().length > 0) {\n $(selectorLeftForm + ' .topnav').after(\n $data.find(selectorLeftForm + ' .topnav').next(),\n );\n }\n\n $(selectorLeftForm + ' #wise-search-form-top')\n .siblings()\n .remove();\n $(selectorLeftForm + ' #wise-search-form-top').after(centerContentD);\n\n /*var res = $data.find( selectorLeftForm );\n\n if(res.children().length === 1){\n if($(res[0]).attr(\"id\") === \"wise-search-form-top\" ){\n $( selectorLeftForm + \" #wise-search-form-top\").after(\"No results found.\");\n }\n\n }*/\n\n initPageElems();\n var formAction = $('.wise-search-form-container form').attr('action') || '';\n if (formAction.includes(\"/marine/++api++\")) {\n var newFormAction = formAction;\n } else {\n var newFormAction = formAction.replace(\"/marine\", \"/marine/++api++\");\n }\n\n $('.wise-search-form-container form').attr('action', newFormAction);\n removeNoValues();\n fixTableHeaderAndCellsHeight();\n //addDoubleScroll();\n\n $(\"[name='form.buttons.prev']\").prop('disabled', false);\n $(\"[name='form.buttons.next']\").prop('disabled', false);\n\n $(\"[name='marine.buttons.prev']\").prop('disabled', false);\n $(\"[name='marine.buttons.next']\").prop('disabled', false);\n $('#wise-search-form-top').find('.alert').remove();\n }\n\n /* - table_sorter.js - */\n /********* Table sorter script *************/\n /*\n * For all table elements with 'listing' class,\n * when user clicks on a th without 'nosort' class,\n * it sort table values using the td class with 'sortabledata-mydata' name,\n * or the td text content\n *\n */\n function sortabledataclass(cell) {\n var re, matches;\n\n re = new RegExp('sortabledata-([^ ]*)', 'g');\n matches = re.exec(cell.attr('class'));\n if (matches) {\n return matches[1];\n } else {\n return null;\n }\n }\n\n function sortable(cell) {\n // convert a cell a to something sortable\n\n // use sortabledata-xxx cell class if it is defined\n var text = sortabledataclass(cell);\n if (text === null) {\n text = cell.text();\n }\n\n // A number, but not a date?\n if (\n text.charAt(4) !== '-' &&\n text.charAt(7) !== '-' &&\n !isNaN(parseFloat(text))\n ) {\n return parseFloat(text);\n }\n return text.toLowerCase();\n }\n\n function sort() {\n var th, colnum, table, tbody, reverse, index, data, usenumbers, tsorted;\n\n th = $(this).closest('th');\n colnum = $('th', $(this).closest('thead')).index(th);\n table = $(this).parents('table:first');\n tbody = table.find('tbody:first');\n tsorted = parseInt(table.attr('sorted') || '-1', 10);\n reverse = tsorted === colnum;\n\n $(this).parent().find('th:not(.nosort) .sortdirection').html(' ');\n $(this)\n .children('.sortdirection')\n .html(reverse ? '▲' : '▼');\n\n (index = $(this).parent().children('th').index(this)),\n (data = []),\n (usenumbers = true);\n tbody.find('tr').each(function () {\n var cells, sortableitem;\n\n cells = $(this).children('td');\n sortableitem = sortable(cells.slice(index, index + 1));\n if (isNaN(sortableitem)) {\n usenumbers = false;\n }\n data.push([\n sortableitem,\n // crude way to sort by surname and name after first choice\n sortable(cells.slice(1, 2)),\n sortable(cells.slice(0, 1)),\n this,\n ]);\n });\n\n if (data.length) {\n if (usenumbers) {\n data.sort(function (a, b) {\n return a[0] - b[0];\n });\n } else {\n data.sort();\n }\n if (reverse) {\n data.reverse();\n }\n table.attr('sorted', reverse ? '' : colnum);\n\n // appending the tr nodes in sorted order will remove them from their old ordering\n tbody.append(\n $.map(data, function (a) {\n return a[3];\n }),\n );\n // jquery :odd and :even are 0 based\n tbody.each(setoddeven);\n }\n }\n\n function setoddeven() {\n var tbody = $(this);\n // jquery :odd and :even are 0 based\n tbody\n .find('tr')\n .removeClass('odd')\n .removeClass('even')\n .filter(':odd')\n .addClass('even')\n .end()\n .filter(':even')\n .addClass('odd');\n }\n\n function formAjaxComplete(jqXHR, textStatus) {\n if (textStatus === 'success') {\n $(selectorFormContainer).fadeIn('fast', function () {\n $(selectorLeftForm + ' #wise-search-form-top')\n .siblings()\n .fadeIn('fast');\n });\n }\n\n // $(selectorFormContainer).find(\"[name='form.buttons.prev']\").remove();\n // $(selectorFormContainer).find(\"[name='form.buttons.next']\").remove();\n\n //$(\"s2id_form-widgets-marine_unit_id\").select2().enable(true);\n\n $(selectorLeftForm + ' #loader-placeholder').remove();\n\n $('#form-widgets-marine_unit_id').prop('disabled', false);\n\n //if($( selectorLeftForm + \" select\").val() === \"--NOVALUE--\" ) $( selectorLeftForm + \" select\").val(window.WISE.marineUnit).trigger(\"change.select2\");\n if ($(selectorLeftForm + ' select').hasClass('js-example-basic-single')) {\n // Select2 has been initialized\n if (\n $(selectorLeftForm + ' .select2-choice').width() / 2 <=\n $(selectorLeftForm + ' #select2-chosen-3').width()\n ) {\n $(selectorLeftForm + ' .select2-choice').css('width', '50%');\n } else if (\n 2 * ($(selectorLeftForm + ' .select2-choice').width() / 3) <=\n $(selectorLeftForm + ' #select2-chosen-3').width()\n ) {\n $(selectorLeftForm + ' .select2-choice').css('width', '70%');\n }\n }\n\n if ($('#wise-search-form-top').next().length === 0) {\n $(selectorLeftForm + ' #wise-search-form-top').after(\n \"No results found.\",\n );\n }\n\n loading = false;\n\n // set up blank spaceholder gif\n var blankarrow = $('').addClass('sortdirection');\n // all listing tables not explicitly nosort, all sortable th cells\n // give them a pointer cursor and blank cell and click event handler\n // the first one of the cells gets a up arrow instead.\n $('table.listing:not(.nosort) thead th:not(.nosort)')\n .append(blankarrow.clone())\n .css('cursor', 'pointer')\n .click(sort);\n $('table.listing:not(.nosort) tbody').each(setoddeven);\n\n if (typeof scanforlinks !== 'undefined') jQuery(scanforlinks);\n\n addDoubleScroll();\n }\n\n function formAjaxError(req, status, error) {\n /*if(window.WISE.formData.length > 0){\n var data = $($(window.WISE.formData)[0]).find(\".field\");\n $.each( data , function (indx, $field) {\n var chk = $($field).find(\".option input[type='checkbox']:checked\");\n if(chk.length > 0){\n // TODO\n }\n\n });\n }*/\n\n $('#wise-search-form-top').find('.alert').remove();\n $('#wise-search-form-top').append(\n '
' +\n ' There was a error from the server. You should check in on some of those fields from the form.' +\n ' ' +\n '
',\n );\n\n // $(selectorFormContainer).find(\"[name='form.buttons.prev']\").remove();\n // $(selectorFormContainer).find(\"[name='form.buttons.next']\").remove();\n $('#form-widgets-marine_unit_id').prop('disabled', false);\n\n $('#wise-search-form-container-preloader').remove();\n $('#wise-search-form-preloader').remove();\n\n $('#ajax-spinner-form').hide();\n\n $(\"[name='form.buttons.prev']\").prop('disabled', true);\n $(\"[name='form.buttons.next']\").prop('disabled', true);\n\n $(\"[name='marine.buttons.prev']\").prop('disabled', true);\n $(\"[name='marine.buttons.next']\").prop('disabled', true);\n\n if (typeof Storage !== 'undefined') {\n sessionStore.removeItem('form');\n }\n\n loading = false;\n }\n\n function resetEmptyCheckboxes(fieldID) {\n $.each($('#' + fieldID).find('.option'), function (idx, item) {\n $(item).find(\"[type='checkbox']\").prop('checked', true);\n });\n }\n\n function resetConfigsbelowFacet(\n called_from,\n called_from_button,\n called_from_select,\n args,\n ) {\n var empty_next_inputs;\n var empty_sibling_input;\n if (!called_from || called_from_button || called_from_select) {\n empty_next_inputs = function (el) {\n var panel_group, subform_parent, subform_children;\n panel_group = $(el).closest('.panel-group');\n subform_parent = panel_group.closest('.subform');\n subform_children = subform_parent.find('.subform');\n\n panel_group.nextAll('.panel-group').find('.panel').empty();\n if (subform_children.length) {\n if (subform_children.hasClass('subform')) {\n subform_children.empty();\n }\n subform_children.find('.panel').empty();\n subform_children.find('.subform').empty();\n } else {\n $(el).parent().parent().next().empty();\n }\n };\n\n empty_sibling_input = function (el) {\n var nextFieldID = $(el).parent().next().attr('id');\n\n var panel_group, subform_parent, subform_children;\n panel_group = $(el).closest('.panel-group');\n subform_parent = panel_group.closest('.subform');\n //subform_children = subform_parent.find('.subform');\n subform_children = $(el).parent().parent().next();\n\n if (\n called_from.from_marine_widget !== undefined ||\n called_from.from_marine_widget === true\n ) {\n return true;\n }\n\n if (nextFieldID === 'formfield-form-widgets-member_states') {\n resetEmptyCheckboxes(nextFieldID);\n } else {\n resetEmptyCheckboxes('memberstatesform');\n }\n panel_group.nextAll('.panel-group').find('.panel').empty();\n if (subform_children.length) {\n subform_children.find('.subform').empty();\n }\n };\n if (called_from_button) {\n empty_next_inputs(called_from_button);\n } else if (called_from_select) {\n empty_sibling_input(called_from_select);\n } else {\n $('.ui-autocomplete-input').each(function (idx, el) {\n if (el.value) {\n empty_next_inputs(el);\n return false;\n }\n });\n }\n }\n }\n\n function storageFactory(storage) {\n var inMemoryStorage = {};\n\n var length = 0;\n\n function isSupported() {\n try {\n var testKey = '__some_random_key_you_are_not_going_to_use__';\n storage.setItem(testKey, testKey);\n storage.removeItem(testKey);\n return true;\n } catch (e) {\n return false;\n }\n }\n\n function clear() {\n if (isSupported()) {\n storage.clear();\n } else {\n inMemoryStorage = {};\n }\n }\n\n function getItem(name) {\n if (isSupported()) {\n return storage.getItem(name);\n }\n if (inMemoryStorage.hasOwnProperty(name)) {\n return inMemoryStorage[name];\n }\n return null;\n }\n\n function key(index) {\n if (isSupported()) {\n return storage.key(index);\n } else {\n return Object.keys(inMemoryStorage)[index] || null;\n }\n }\n\n function removeItem(name) {\n if (isSupported()) {\n storage.removeItem(name);\n } else {\n delete inMemoryStorage[name];\n }\n }\n\n function setItem(name, value) {\n if (isSupported()) {\n storage.setItem(name, value);\n } else {\n inMemoryStorage[name] = String(value); // not everyone uses TypeScript\n }\n }\n return {\n getItem: getItem,\n setItem: setItem,\n removeItem: removeItem,\n clear: clear,\n key: key,\n length: length,\n };\n }\n\n function storeFormtoLocalStorage(options) {\n //var form = $( selectorFormContainer ).find(\"form\");\n\n //var strContent = $.getMultipartData(\"#\" + form.attr(\"id\"));\n var data = options.data || null;\n var boundary = options.boundary || null;\n var formData = options.formData || null;\n\n if (typeof LZString !== 'undefined') {\n var compressed = LZString.compressToEncodedURIComponent(data);\n var formD = LZString.compress(JSON.stringify(formData));\n\n if (typeof Storage !== 'undefined') {\n // We have local storage support\n sessionStore.setItem('form-' + defaultForm, compressed); // to save to local storage\n sessionStore.setItem('boundary', boundary);\n sessionStore.setItem(defaultForm, formD);\n // TODO: url shortner\n //window.location.hash = compressed;\n }\n }\n }\n\n function searchFormAjax(boundary, data, url, formData) {\n if (!url.includes(\"/marine/++api++\")) {\n url = url.replace(\"/marine\", \"/marine/++api++\");\n }\n\n $.ajax({\n type: 'POST',\n contentType: 'multipart/form-data; boundary=' + boundary,\n cache: false,\n data: data,\n dataType: 'html',\n url: url,\n //processData:false,\n beforeSend: beforeSendForm,\n success: function (dataRes, status, req) {\n /*function isnotchecked($field) {\n var arr = [];\n $.each( $field.find(\".option input[type='checkbox']:not(:checked)\") , function (ix, ch) {\n arr.push( $(ch).parent() );\n });\n if(arr.length > 0){\n return true;\n }\n return false;\n }\n var $fields = $( selectorFormContainer + \", \" + selectorLeftForm ).find(\"[data-fieldname]\");\n var cheked = false;\n\n $.each($fields,function (ix, $field) {\n if(!isnotchecked($field)){\n cheked = true;\n }\n });\n\n if(cheked){\n storeFormtoLocalStorage({ boundary: boundary,data: data, formData: formData});\n }*/\n\n storeFormtoLocalStorage({\n boundary: boundary,\n data: data,\n formData: formData,\n });\n\n formSuccess(dataRes, status, req);\n },\n complete: formAjaxComplete,\n error: formAjaxError,\n });\n }\n\n var defaultForm =\n window.location.pathname.substr(\n window.location.pathname.indexOf('@@'),\n window.location.pathname.length - 1,\n ) || 'defaultForm';\n\n function restoreFromSessionStorage() {\n if (sessionStore.getItem('form-' + defaultForm) === null) {\n return false;\n }\n if ('undefined' === typeof LZString) {\n console.error('LZString not found');\n return false;\n }\n\n try {\n //var dec = LZString.decompressFromEncodedURIComponent(sessionStore.form);\n var dec = LZString.decompressFromEncodedURIComponent(\n sessionStore.getItem('form-' + defaultForm),\n );\n\n var form = $(selectorFormContainer).find('form');\n\n var strContent = $.getMultipartData('#' + form.attr('id'));\n\n var compareVals = function (fromStorage, fromForm) {\n var notSame = false;\n\n try {\n var prelFromStorage = JSON.parse(fromStorage);\n\n $.each(Object.keys(prelFromStorage), function (ix, item) {\n var arr = prelFromStorage[item];\n\n //TODO: issue on some pages especially on pagination\n var res =\n typeof fromForm[item] !== 'undefined'\n ? fromForm[item].filter(function (el) {\n return arr.indexOf(el) === -1;\n })\n : [];\n if (res.length > 0) {\n notSame = true;\n return false;\n }\n });\n } catch (e) {\n return false;\n }\n\n if (!notSame) return false;\n\n return true;\n };\n\n var defForm = sessionStore.getItem(defaultForm);\n\n var getFormD = $.getMultipartData(\n '#' + form.attr('id'),\n sessionStore.getItem('boundary'),\n );\n\n if (compareVals(LZString.decompress(defForm), strContent[2])) {\n var url = form.attr('action');\n var boundary = sessionStore.getItem('boundary');\n\n searchFormAjax(boundary, dec, url);\n\n // TODO: url shortner\n //window.location.hash = sessionStore.getItem(\"form-\" + defaultForm);\n } else {\n console.log('same data');\n }\n } catch (e) {\n console.log(e);\n }\n }\n\n function resetStorageForPage(ev) {\n var isLink = $(this).attr('href').indexOf('@@');\n var href = $(this).attr('href');\n if (isLink > 0) {\n ev.preventDefault();\n var ls = $(this)\n .attr('href')\n .substr(isLink, href.length - 1);\n sessionStore.removeItem(ls);\n sessionStore.removeItem('form');\n window.location.href = href;\n }\n }\n\n function removeNoValues() {\n /* Remove 'No value' options from all select elements\n */\n var $select = $('.select-widget');\n $select.find(\"option:contains('No value')\").each(function () {\n $(this).remove();\n });\n }\n\n $.fn.fixTableHeaderAndCellsHeight = function () {\n // because the are position: absolute, they don't get the height of\n // the cells, and the other way around.\n\n this.each(function () {\n $('th', this).each(function () {\n var $th = $(this);\n var $next = $('td', $th.parent());\n var cells_max_height = Math.max($next.height());\n var height = Math.max($th.height(), cells_max_height);\n\n $th.height(height);\n\n if ($th.height() >= cells_max_height) {\n $next.height($th.height());\n }\n\n $('div', this).css('margin-top', '-4px');\n });\n });\n };\n\n function fixTableHeaderAndCellsHeight() {\n var $table = $('.table-report');\n $table.fixTableHeaderAndCellsHeight();\n }\n\n function addDoubleScroll() {\n var secondScroll =\n '
' +\n '
' +\n '
';\n\n $('.double-scroll').each(function () {\n var $doubleScroll = $(this);\n var $table = $doubleScroll.find('table');\n var tableWidth = $table.outerWidth((includeMargin = true));\n\n if (tableWidth == null || tableWidth <= $table.parent().width()) {\n return;\n }\n\n $doubleScroll.parent().before(secondScroll);\n var $clonedScrollTop = $doubleScroll\n .parent()\n .siblings('.cloned-scroll-top')\n .first();\n\n $clonedScrollTop.on('scroll', function () {\n $doubleScroll.scrollLeft($clonedScrollTop.scrollLeft());\n });\n\n $doubleScroll.scroll(function () {\n $clonedScrollTop.scrollLeft($doubleScroll.scrollLeft());\n });\n\n $clonedScrollTop.children().width(tableWidth);\n });\n }\n\n jQuery(document).ready(function ($) {\n window.setTimeout(function () {\n initPageElems();\n }, 100);\n\n var formAction = $('.wise-search-form-container form').attr('action') || '';\n if (formAction.includes(\"/marine/++api++\")) {\n var newFormAction = formAction;\n } else {\n var newFormAction = formAction.replace(\"/marine\", \"/marine/++api++\");\n }\n\n $('.wise-search-form-container form').attr('action', newFormAction);\n\n /*$(window).on(\"resize\", function () {\n if (window.matchMedia(\"(max-width: 1024px)\").matches) {\n /!*var el = $(\"#form-buttons-next-top\");\n el.css(\"float\",\"right\");\n $(\"#form-buttons-prev-top\").after(el);*!/\n\n /!*$(\"#marine-widget-top > div\").css(\"display\", \"block\");\n $(\"#marine-widget-top .field\").css(\"display\", \"block\");*!/\n }\n });*/\n\n var AJAX_MODE = true;\n\n window.WISE = {};\n window.WISE.formData = $(selectorFormContainer).clone(true);\n window.WISE.blocks = [];\n\n // ajax form submission\n $(selectorFormContainer)\n .unbind('click')\n .on('click', '.formControls #form-buttons-continue', function (ev) {\n if (!AJAX_MODE) {\n return true;\n }\n ev.preventDefault();\n\n // empty facets below given facet where we had an interaction\n // this way we reset the configurations below the given facet\n // with which we interacted with\n var called_from = arguments[1];\n var called_from_button = called_from && called_from['button'];\n var called_from_select = called_from && called_from['select'];\n\n var resetFacets = true;\n if (resetFacets) {\n resetConfigsbelowFacet(\n called_from,\n called_from_button,\n called_from_select,\n arguments,\n );\n }\n\n var form = $(selectorFormContainer).find('form');\n var url = form.attr('action');\n\n var strContent = $.getMultipartData('#' + form.attr('id'));\n\n searchFormAjax(strContent[0], strContent[1], url, strContent[2]);\n });\n\n restoreFromSessionStorage();\n\n $('.topnav a').on('click', resetStorageForPage);\n\n removeNoValues();\n fixTableHeaderAndCellsHeight();\n addDoubleScroll();\n });\n})(window, document, jQuery);\n"],"names":["window","document","$","storage","inMemoryStorage","exceptVal","selectorFormContainer","selectorLeftForm","sessionStore","sessionStorage","getItem","name","isSupported","hasOwnProperty","setItem","value","String","removeItem","clear","key","index","Object","keys","length","testKey","e","randomString","chars","randomstring","i","rnum","Math","floor","random","substring","loading","getMultipartData","frmName","newBoundary","initBoundary","strBoundary","strMultipartBody","strCRLF","formData","attr","serializeArray","res","vals","each","indx","val","push","addAutoComplete","$field","find","autocomplete","minLength","source","search","event","searchAutoComplete","data","matcher","temp","found","tohide","evtarget","target","cheks2","inputs","labels","parentsUntil","parent","no_results","show","removeClass","toSearch","toLowerCase","replace","RegExp","ui","escapeRegex","map","ind","item","text","test","filter","idx","elem","indexOf","toshow","prop","inx","removeAttr","addClass","el","checked","id","create","this","on","ev","trigger","sortCheckboxesByChecked","arr","foundArr","all","undefined","WISE","blocks","ix","ch","concat","append","generateCheckboxes","$fields","$fieldsnr","count","field","fieldId","cheks","chekspan","label","alabel","self","hide","setTimeout","button","after","spAll","trim","html","css","fadeOut","slideUp","border-bottom","fadeIn","slideDown","display","animate","opacity","checkboxHandlerAll","preventDefault","par","rest","filterInvalidCheckboxes","checkboxHandlerNone","checkboxHandlerInvert","is","unchecked","cbxs","addCheckboxLabelHandlers","allch","checkboxV","chV","setupRightSelects2","selector","forbiddenIDs","selectorFormCont","selectElement","selectedElementID","lessOptions","$wise_search_form","options","placeholder","closeOnSelect","dropdownAutoWidth","width","theme","minimumResultsForSearch","Infinity","select2","remove","select","formatArticle","article","element","subtitle","attachSelect2","marineUnitTriggerSelector","hasClass","allowClear","dropdownParent","dropdownAdapter","containerCssClass","dropdownCssClass","debug","prepend","trh","offset","top","height","margin-top","from_marine_widget","jQuery","before","trH","$selectArticle","fn","formatSelection","formatResult","one","location","href","choice","w","daw","matchMedia","matches","sect","marineBtnHandler","dir","direction","selectedV","nextEl","next","prevEl","prev","paginationTextResult","initPaginationInput","parseInt","bind","maximum","validator","x","isNaN","validateNr","focus","initPageElems","$controls","prevButton","continueBtn","formBtnPrevTop","marineUnitTrigger","pagination","eq","detach","insertBefore","ajaxSpinner","clone","fbDownload","dBtn","btnForm","setupTabs","clickFirstTab","nextButton","opts","formBtnNextTop","beforeSendForm","jqXHR","settings","cont","sp","position","sortable","cell","exec","charAt","parseFloat","sort","usenumbers","th","closest","colnum","table","parents","tbody","reverse","children","cells","sortableitem","slice","a","b","setoddeven","end","formAjaxComplete","textStatus","siblings","blankarrow","click","scanforlinks","addDoubleScroll","formAjaxError","req","status","error","Storage","resetEmptyCheckboxes","fieldID","searchFormAjax","boundary","url","includes","ajax","type","contentType","cache","dataType","beforeSend","success","dataRes","$data","centerContentD","LZString","compressed","compressToEncodedURIComponent","formD","compress","JSON","stringify","defaultForm","fhtml","console","log","newFormAction","formAction","removeNoValues","fixTableHeaderAndCellsHeight","complete","pathname","substr","restoreFromSessionStorage","dec","decompressFromEncodedURIComponent","form","strContent","defForm","fromStorage","fromForm","notSame","prelFromStorage","parse","compareVals","decompress","resetStorageForPage","isLink","ls","$clonedScrollTop","$doubleScroll","$table","tableWidth","outerWidth","includeMargin","first","scrollLeft","scroll","$th","$next","cells_max_height","max","ready","unbind","called_from","empty_next_inputs","arguments","called_from_button","called_from_select","panel_group","subform_children","nextAll","empty","empty_sibling_input","nextFieldID"],"mappings":"CACA,SAAWA,EAAQC,EAAUC,GAM3B,IAy7CwBC,EAClBC,EA17CFC,EAAY,CAAC,MAAO,OAAQ,SAAU,SACtCC,EAAwB,8BACxBC,EAAmB,oBAEnBC,GAq7CoBL,EAr7CUM,eAs7C5BL,EAAkB,GAwDf,CACLM,QAlCF,SAAiBC,GACf,OAAIC,IACKT,EAAQO,QAAQC,GAErBP,EAAgBS,eAAeF,GAC1BP,EAAgBO,GAElB,MA4BPG,QATF,SAAiBH,EAAMI,GACjBH,IACFT,EAAQW,QAAQH,EAAMI,GAEtBX,EAAgBO,GAAQK,OAAOD,IAMjCE,WAlBF,SAAoBN,GACdC,IACFT,EAAQc,WAAWN,UAEZP,EAAgBO,IAezBO,MA7CF,WACMN,IACFT,EAAQe,QAERd,EAAkB,IA0CpBe,IA5BF,SAAaC,GACX,OAAIR,IACKT,EAAQgB,IAAIC,GAEZC,OAAOC,KAAKlB,GAAiBgB,IAAU,MAyBhDG,OA5DW,IAEb,SAASX,IACP,IACE,IAAIY,EAAU,+CAGd,OAFArB,EAAQW,QAAQU,EAASA,GACzBrB,EAAQc,WAAWO,GACZ,EACP,MAAOC,GACP,QA57CNvB,EAAEwB,aAAe,WAIf,IAHA,IAAIC,EAAQ,gEAERC,EAAe,GACVC,EAAI,EAAGA,EAFI,EAEeA,IAAK,CACtC,IAAIC,EAAOC,KAAKC,MAAMD,KAAKE,SAAWN,EAAMJ,QAC5CK,GAAgBD,EAAMO,UAAUJ,EAAMA,EAAO,GAE/C,OAAOF,GA8CT,IAAIO,IA3CJjC,EAAEkC,iBAAmB,SAAUC,EAASC,GAEtC,IAAIC,EAAeD,GAAepC,EAAEwB,eAChCc,EAAc,KAAOD,EACrBE,EAAmB,GACnBC,EAAU,OAIVC,GAFQzC,EAAEmC,GAASO,KAAK,MAEb1C,EAAEmC,GAASQ,kBAG1B,GAAwB,IAApBF,EAASpB,OACX,OAAO,EAGT,IAAIuB,EAAM,GACNC,EAAO,GAuBX,OArBA7C,EAAE8C,KAAKL,EAAU,SAAUM,EAAMC,GAC/BT,GACED,EACAE,EACA,yCACAQ,EAAIvC,KACJ,IACA+B,EACAA,EACAQ,EAAInC,MACJ2B,EAEFI,EAAIK,KAAKD,EAAIvC,MACRoC,EAAKG,EAAIvC,QAAOoC,EAAKG,EAAIvC,MAAQ,IACtCoC,EAAKG,EAAIvC,MAAMwC,KAAKD,EAAInC,SAOnB,CAACwB,EAHRE,GAAoBD,EAAc,KAAOE,EAGDK,KA6J1C,SAASK,EAAgBC,GACvBA,EAAOC,KAAK,0BAA0BC,aAAa,CACjDC,UAAW,EACXC,OAAQ,GACRC,OAAQ,SAAUC,GAChBC,IA3FEC,EAiBFC,EAEAC,EAmBAC,EAOAC,EAvDsBC,EAqGHP,EAAMQ,OArGOd,EAqGCA,EApGjCe,EAASf,EAAOC,KAAK,oCAErBe,GAASC,EADAF,EAAOG,aAAa,WAAWC,UACxBlB,KAAK,SAErBmB,EADUH,EAAOE,SACIlB,KAAK,cAEJ,KAAtBpD,EAAEgE,GAAUhB,OAchBG,EAAOC,KAAK,kBAAkBoB,OAE9BJ,EAAOK,YAAY,UAEfC,EAAW1E,EAAEgE,GAAUhB,MAAM2B,cAAcC,QAAQ,MAAO,KAE1DhB,EAAU,IAAIiB,OAAO7E,EAAE8E,GAAGzB,aAAa0B,YAAYL,GAAW,KAE9Db,EAAO,GACQV,EAChBC,KAAK,oCACL4B,IAAI,SAAUC,EAAKC,GAMlB,OALArB,EAAK7D,EAAEkF,GAAMC,OAAOR,eAAiB3E,EAAEkF,GACpCC,OACAR,cACAC,QAAQ,MAAO,KAGhB5E,EAAEkF,GACCC,OACAR,cAGAC,QAAQ,MAAO,OAIpBd,EAAQ,GACZ9D,EAAE8C,KAAKe,EAAM,SAAUd,EAAMmC,GACtBtB,EAAQwB,KAAKF,IAChBpB,EAAMb,KAAKF,KAIXgB,EAASG,EAAOmB,OAAO,SAAUC,EAAKC,GACxC,OAAwD,IAAjDzB,EAAM0B,QAAQxF,EAAEuF,GAAMJ,OAAOR,iBAGlCc,EAASvB,EAAOmB,OAAO,SAAUC,EAAKC,GACxC,OAAwD,IAAjDzB,EAAM0B,QAAQxF,EAAEuF,GAAMJ,OAAOR,iBAEtC3E,EAAE8C,KAAK2C,EAAQ,SAAUR,EAAKC,GAC5BlF,EAAEkF,GACCb,aAAa,WACbC,SACAlB,KAAK,qBACLsC,KAAK,WAAW,KAGrB1F,EAAE8C,KAAKiB,EAAQ,SAAU4B,EAAKT,GAC5BlF,EAAEkF,GACCb,aAAa,WACbC,SACAlB,KAAK,qBACLsC,KAAK,WAAW,GACnB1F,EAAEkF,GACCb,aAAa,WACbC,SACAlB,KAAK,0BACLsC,KAAK,WAAW,GACnB1F,EAAEkF,GACCb,aAAa,WACbC,SACAlB,KAAK,0BACLwC,WAAW,WACd5F,EAAEkF,GAAMb,aAAa,WAAWC,SAASuB,SAAS,YAGhD9B,EAAO1C,SAAW6C,EAAO7C,OAC3BkD,EAAWE,YAAY,UAEvBF,EAAWsB,SAAS,YApFpBtB,EAAWsB,SAAS,UACpBzB,EAAOK,YAAY,WACfd,EAAOR,EAAOC,KAAK,UAAUO,KAAK,mBAEpC3D,EAAE8C,KAAKqB,EAAQ,SAAUmB,EAAKQ,GAG5BA,EAAGC,SAAmC,IAAzBpC,EAAK6B,QAAQM,EAAGE,QAwFjCC,OAAQ,WAEUjG,EAAEkG,MACf7B,aAAa,oBACbjB,KAAK,eACE+C,GAAG,QAAS,KAJXD,KAIuB,SAAUE,GAC1CpG,EAAEkG,MAAM7B,aAAa,aAAajB,KAAK,SAASJ,IAAI,IACpDhD,EAAEkG,MAAM7B,aAAa,aAAajB,KAAK,SAASiD,QAAQ,UACxDrG,EAAEoG,EAAGzC,MAAMN,aAAa,SAAU,kBAgF1C,SAASiD,EAAwBnD,GAC/B,IAOIoD,EAQAC,EAMAC,OApBcC,IAAhB5G,EAAO6G,WACgBD,IAAvB5G,EAAO6G,KAAKC,SACuC,IAAnD9G,EAAO6G,KAAKC,OAAOpB,QAAQrC,EAAOT,KAAK,SAIrC6D,EAAM,GACVvG,EAAE8C,KACAK,EAAOC,KAAK,gDACZ,SAAUyD,EAAIC,GACZP,EAAItD,KAAKjD,EAAE8G,GAAIxC,YAGfR,EAAQX,EAAOC,KAAK,0CACpBoD,EAAW,GACI,EAAf1C,EAAMzC,QACRrB,EAAE8C,KAAKgB,EAAO,SAAU+C,EAAI3B,GAC1BsB,EAASvD,KAAKjD,EAAEkF,GAAMZ,YAGtBmC,EAAMD,EAASO,OAAOR,GAE1BvG,EAAE8C,KAAK2D,EAAK,SAAUI,EAAIC,GACxB3D,EAAOC,KAAK,UAAU4D,OAAOF,MA6BjC,SAASG,EAAmBC,EAASC,GACnC,IAAIC,EAAQD,EACZD,EAAQpE,KAAK,SAAUC,EAAMsE,GAC3B,IAnIsBlE,EAAQmE,EAASC,EAgEnC5D,EA7DF6D,EAQAC,EAEAC,EA2FiCvE,EA2B/BA,EAASnD,EAAEqH,GACXE,EAAQpE,EAAOC,KAAK,WAEe,EADnBmE,EAAMnE,KAAK,0BACD/B,SAGxBiG,EAAUnE,EAAOT,KAAK,MAjCOS,EAmCHA,EAlClCnD,EAAE,IAkCuBsH,GAlCRnB,GAAG,QAAS,UAAW,WACtC,IAAIwB,EAAOzB,KACXlG,EAAE,kBAAkB4H,QAMX,IAFP9H,EAAO6G,KAAKC,OAAOpB,QACjBxF,EAAEkG,MAAM7B,aAAa,UAAUC,SAAS5B,KAAK,OAG/C4D,EAAwBnD,GAIxBrD,EAAO+H,WAAW,WAChB7H,EACEI,EAAwB,yCACxBiG,QAAQ,QAAS,CAAEyB,OAAQH,KAC5B,OAoBHxE,EAAOC,KAAK,sBAAsB2E,MAvQ/BC,+iBA0QHT,EAAMzE,KAAK,SAAUwC,GACnB,IAAIH,EAAOnF,EAAEuH,EAAMjC,IAAMH,OACzBnF,EAAEuH,EAAMjC,IAAM5C,KAAK,QAASyC,EAAK8C,UAG/BV,EAAMlG,OAAS,GACjB8B,EAAOC,KAAK,eAAewE,OAC3BzE,EACGC,KAAK,aACL8E,KAAK,IACLC,IAAI,SAAU,OACdA,IAAI,UAAW,KA7JQb,EA+JDA,EA/JUC,EA+JDA,GA/JhBpE,EA+JDA,GA9JhB0C,SAAS,gBAEZ2B,EAAWrE,EAAOC,KAAK,0BAGxByC,SAASyB,EAAU,aACnBzB,SAAS,YACTA,SAAS,SACTA,SAAS,iBAER4B,EAAQtE,EAAOC,KAAK,eAEpBsE,EACF,uDACAD,EAAMtC,OACN,OACFsC,EAAMS,KAAKR,GAEXD,EAAM5B,SAAS,iBAAiBA,SAAS,eAEzC4B,EAAM/E,KAAK,cAAe,YAC1B+E,EAAM/E,KAAK,cAAe,IAAM4E,EAAU,aAO1CnE,EAAOC,KAAK,qBAAqByC,SAAS,mBAG1C2B,EAASrB,GAAG,qBAAsB,WAChCqB,EAASY,QAAQ,QACjBjF,EAAOC,KAAK,aAAaiF,QAAQ,QACjClF,EAAOgF,IAAI,CAAEG,gBAAiB,sBAIhCd,EAASrB,GAAG,mBAAoB,WAE9BqB,EAASe,OAAO,QAChBpF,EAAOC,KAAK,aAAaoF,UAAU,QACnCrF,EAAOC,KAAK,UAAU+E,IAAI,CAAEM,QAAS,UACrCtF,EAAOC,KAAK,qBAAqByC,SAAS,qBAI5C2B,EAASrB,GAAG,mBAAoB,WAE9BrG,EAAO+H,WAAW,WAChB1E,EAAOC,KAAK,qBAAqBqB,YAAY,oBAC5C,OAID8C,EAAMlG,OAAS,EACjB8B,EAAOC,KAAK,8BAA8BwE,QAI1CJ,EAASR,OAAO,0DAChBQ,EAAS7D,KAAK,gBAAiB,IAE3BA,EAAO6D,EAAS7D,KAAK,iBACzB3D,EAAE8C,KAAKK,EAAOC,KAAK,iBAAkB,SAAUkC,EAAKQ,GAClDnC,EAAKV,KAAK6C,EAAGE,MAIf9C,EAAgBC,IA2FZA,EAAOC,KAAK,gBAAgB+C,GAAG,QAAS,SAAUC,GAChDpG,EAAEoG,EAAGnC,QAAQK,SAASlB,KAAK,SAASiD,QAAQ,YAIhDC,EAAwBnD,MAEnBiE,GACLpH,EAAEI,EAAwB,IAAMC,GAAkBqI,QAChD,CAAEC,QAAS,GACX,OAKR,SAASC,EAAmBxC,GAC1BA,EAAGyC,iBAEH,IAAIC,EAAM9I,EAAEkG,MAAM5B,SAASA,SAKvByE,GAHJjJ,EAAO6G,KAAKC,OAAO3D,KAAKjD,EAAEkG,MAAM7B,aAAa,UAAUC,SAAS5B,KAAK,OAErEoG,EAAI1F,KAAK,kBAAkBoB,OAChBwE,EAAwBhJ,EAAE8I,GAAK1F,KAAK,uBAE/CpD,EAAE8C,KAAKiG,EAAM,SAAUzD,GACM,QAAvBtF,EAAE+I,EAAKzD,IAAMtC,OAA0C,SAAvBhD,EAAE+I,EAAKzD,IAAMtC,OAC/ChD,EAAE+I,EAAKzD,IAAMI,KAAK,WAAW,KAMnC,SAASuD,EAAoB7C,GAC3BA,EAAGyC,iBAEH7I,EAAEkG,MAAMR,KAAK,WAAW,GACxB,IAAIoD,EAAM9I,EAAEkG,MAAM5B,SAASA,SAEvByE,GADJD,EAAI1F,KAAK,kBAAkBoB,OAChBwE,EAAwBhJ,EAAE8I,GAAK1F,KAAK,uBAE/CtD,EAAO6G,KAAKC,OAAO3D,KAAKjD,EAAEkG,MAAM7B,aAAa,UAAUC,SAAS5B,KAAK,OAErE1C,EAAE8C,KAAKiG,EAAM,SAAUzD,GACrBtF,EAAE+I,EAAKzD,IAAMI,KAAK,WAAW,KAOjC,SAASwD,EAAsB9C,GAC7BA,EAAGyC,iBACH7I,EAAEkG,MAAMR,KAAK,WAAW,GAExB,IAAIoD,EAAM9I,EAAEkG,MAAM5B,SAASA,SAKvByE,GAJJD,EAAI1F,KAAK,kBAAkBoB,OAE3B1E,EAAO6G,KAAKC,OAAO3D,KAAKjD,EAAEkG,MAAM7B,aAAa,UAAUC,SAAS5B,KAAK,OAE1DsG,EAAwBhJ,EAAE8I,GAAK1F,KAAK,uBAE3C2C,EAAUgD,EAAK1D,OAAO,SAAUJ,EAAKC,GACvC,OAAOlF,EAAEkF,GAAMiE,GAAG,cAGhBC,EAAYL,EAAK1D,OAAO,SAAUJ,EAAKC,GACzC,OAAQlF,EAAEkF,GAAMiE,GAAG,cAGrBnJ,EAAE8C,KAAKiD,EAAS,SAAUT,GACxBtF,EAAE+F,EAAQT,IAAMI,KAAK,WAAW,KAGlC1F,EAAE8C,KAAKsG,EAAW,SAAU9D,GAC1BtF,EAAEoJ,EAAU9D,IAAMI,KAAK,WAAW,KAoBtC,SAASsD,EAAwBK,GAC/B,OAAOA,EAAKhE,OAAO,SAAUC,EAAKJ,GAChC,OAA6C,IAAtC/E,EAAUqF,QAAQxF,EAAEkF,GAAMlC,SAIrC,SAASsG,IACP,IAAIC,EAAQvJ,EAAEI,EAAwB,KAAOC,GAAkB+C,KAC7D,oBAWFmG,EAAMpD,GAAG,QAAS,UAAW,SAAUC,GACrCpG,EAAE,kBAAkB4H,OACpB,IAAI4B,EAAYxJ,EAAEkG,MAAM9C,KAAK,0BAA0BJ,OAI9C,IAFPlD,EAAO6G,KAAKC,OAAOpB,QACjBxF,EAAEkG,MAAM7B,aAAa,UAAUC,SAAS5B,KAAK,SAbtB+G,EAkBZD,EAlBiBpD,EAkBNA,EAhB1BpG,EAAEI,EAAwB,+BAA+B4C,IAAI,IAC7B,IAA5B7C,EAAUqF,QAAQiE,IACpBzJ,EAAEoG,EAAGnC,QAAQb,KAAK,0BAA0BiD,QAAQ,YAyB1D,SAASqD,EAAmBC,GAC1B,IAAIC,EAAe,CACjB,kCACA,iCAEEC,EAAmBF,GAAYvJ,EAEnCJ,EAAE6J,EAAmB,WAAW/G,KAAK,SAAUmC,EAAK6E,GAClD,IAAIC,EAAoB/J,EAAE8J,GAAepH,KAAK,MAC9C,IAAiD,IAA7CkH,EAAapE,QAAQuE,GACvB,OAAO,EAGT/J,EAAE8J,GAAejE,SAAS,2BAC1B,IAAImE,EAAchK,EAAE8J,GAAe1G,KAAK,UAAU/B,OAAS,GAEvD4I,EAAoBjK,EAAE6J,GAEtBK,EAAU,CACZC,YAAa,mBACbC,eAAe,EACfC,mBAAmB,EACnBC,MAAO,OACPC,MAAO,QAELP,IAAaE,EAAQM,wBAA0BC,EAAAA,GAEnDzK,EAAE8J,GAAeY,QAAQR,GAEzBlK,EAAE6J,EAAmB,sCAAsCjC,OAQ3D5H,EAAE8J,GAAe3D,GAAG,oBAAqB,SAAUC,GAG7CpG,EAAEkG,MAAMxD,KAAK,MANjBuH,EAAkB7G,KAAK,8BAA8BuH,SAYrD,IAAIhD,EAAOzB,KACXpG,EAAO+H,WAAW,WAChB7H,EACE6J,EAAmB,yCACnBxD,QAAQ,QAAS,CAAEuE,OAAQjD,KAC5B,SAKT,SAASkD,EAAcC,GACrB,IAAIhF,EAAK9F,EAAE8K,EAAQC,QAAQ,IACvBC,EAAWlF,EAAGpD,KAAK,iBAEvB,MAAO,SAAWoD,EAAGpD,KAAK,kBAAoB,KAAOsI,EAAW,UA2IlE,SAASC,IACPvB,IAhHIwB,EAA4B,uBAE9BlL,EAAEK,EAAmB,2BAA2B8K,SAC9C,4BAKJnL,EAAEK,EAAmB,2BAClBwF,SAAS,2BACT/C,KAAK,SAAUmC,EAAK6E,GAgBnB9J,EAAE8J,GAAeY,QAfH,CACZP,YAAa,mBACbC,eAAe,EACfC,mBAAmB,EACnBC,MAAO,OACPC,MAAO,OACPC,wBAAyB,GACzBY,YAAY,EACZC,eAAgB,uBAChBC,gBAAiB,kBACjBC,kBAAmB,uBACnBC,iBAAkB,gCAClBC,OAAO,IAMTzL,EAAE8J,GACCzF,aAAa,UACbC,SACAoH,QAAQ,6BAEX1L,EAAE8J,GAAe3D,GAAG,eAAgB,WAClC,IAAIwF,EAAM3L,EAAEkL,GAA2BU,SAASC,IAEhD7L,EAAEkL,EAA4B,WAAWtD,OACzC5H,EAAE,kCAAkCmI,IAAI,CACtC0D,IACEF,EACA3L,EAAEkL,GAA2BY,SAC7B9L,EAAEkL,EAA4B,WAAWY,SACzC,KACFC,aAAc,sBAIlB/L,EAAE8J,GAAe3D,GAAG,oBAAqB,SAAUC,GAGjDpG,EAAEI,EAAwB,+BAA+B4C,IAAI,GAC7DhD,EAAEI,EAAwB,iCACvBsK,UACA1H,IAAIoD,EAAGpD,KACPqD,QAAQ,UACXrG,EACEI,EAAwB,yCACxBiG,QAAQ,QAAS,CAAEuE,OAAQxE,EAAGnC,OAAQ+H,oBAAoB,MAG9DhM,EAAE8J,GAAe3D,GAAG,gBAAiB,WACnCnG,EAAEkL,GAA2B/C,IAAI,aAAc,eAC/CnI,EAAEkL,EAA4B,MAAM/C,IAAI,aAAc,eACtDnI,EAAEkL,EAA4B,WAAW1G,SAKzCxE,EAAEK,EAAmB,WAAW8K,SAAS,6BAGrChG,EAAOnF,EACTK,EACE,mBACA4L,OAAO5L,EAAmB,2BAA2B2C,MACrD,MACFmC,OACFnF,EAAEK,EAAmB,2BAClBgE,aAAa,UACb6H,OACC,2DAEE/G,EACA,gBAINnF,EAAEkL,GAA2B/E,GAAG,QAAS,WACvC,GAAIlE,EAAS,OAAO,EACpBjC,EAAEkL,GAA2B/C,IAC3B,aACA,sBAEFnI,EAAEkL,EAA4B,MAAM/C,IAClC,aACA,sBAGFnI,EAAEK,EAAmB,2BAA2BqK,QAAQ,QAExD,IAAIyB,EAAMnM,EAAEkL,EAA4B,MAAMY,SAC9C9L,EAAE,kCAAkCmI,IAClC,aACAgE,EAAM,EAAI,WAhIhBC,EAAiBpM,EAAE,+BAeF0G,IAAjB1G,EAAEqM,GAAG3B,UACP0B,EAAe1B,QAdF,CACbP,YAAa,mBACbC,eAAe,EAGfE,MAAO,UACPC,MAAO,OACPC,wBAAyB,GACzB8B,gBAAiBzB,EACjB0B,aAAc1B,EACdU,kBAAmB,0BAKnBa,EAAeI,IAAI,oBAAqB,SAAUpG,GAChDrG,EAAS0M,SAASC,KAAOtG,EAAGuG,OAAO3G,MAKzC,IACMkF,EAoHA0B,EAAI,OACJC,GAAM,EAMN3C,EAAU,CACZC,YAAa,mBACbC,eAAe,EACfC,kBANAwC,EAFE/M,EAAOgN,WAAW,sBAAsBC,QAC1CH,GAAI,EAOeC,EACnBvC,MAAOsC,EACPrC,MAAO,OACPC,wBAAyB,GACzBe,kBAAmB,wBAGrBvL,EAAE8C,KAAK9C,EAAEK,EAAmB,0BAA2B,SACrDiF,EACAC,GAEoC,EAAhCvF,EAAEuF,GAAMnC,KAAK,UAAU/B,OACzBrB,EAAEuF,GAAMmF,QAAQR,GAEhBlK,EAAEuF,GAAMqC,SAKZ5H,EAAEK,EAAmB,8BAA8B+H,QACjD,OACA,WACEpI,EAAE8C,KACA9C,EAAEK,EAAmB,0CACrB,SAAU0C,EAAMmC,GACdlF,EAAEA,EAAEkF,GAAM9B,KAAK,cAAc,IAAIoB,WAMzCxE,EAAEK,EAAmB,0BAA0B8F,GAC7C,oBACA,SAAUC,GACR,IAAI4G,EAAOhN,EAAEoG,EAAGnC,QAAQI,aAAa,0BAA0BC,SAC/DtE,EAAE8C,KAAK9C,EAAEgN,GAAM5J,KAAK,cAAe,SAAUkC,EAAKC,GAC5CvF,EAAEuF,GAAM7C,KAAK,QAAU0D,EAAGuG,OAAO3G,GACnChG,EAAEuF,GAAMqC,OAER5H,EAAEuF,GAAMgD,aAMiD,EAA9DvI,EAAEK,EAAmB,gCAAgCgB,SACtDrB,EAAEA,EAAEK,EAAmB,uDAAuD,IAAIwF,SAAS,aAC3F7F,EAAEA,EAAEK,EAAmB,4CAA4C,IAAIwF,SAAS,WAOpF,SAASoH,EAAiB7G,GACxB,IAYM8G,EAZFC,EAAY/G,EAAGzC,KAAKwJ,UAIpBC,EAHiBpN,EACnBI,EAAwB,sCAEKsK,QAAQ,QAEnC2C,EAASrN,EAAEoN,EAAUrC,QAAQ,IAAIuC,OACjCC,EAASvN,EAAEoN,EAAUrC,QAAQ,IAAIyC,OAEnB,SAAdL,EACED,EAAMG,EAAOrK,MACM,SAAdmK,IACLD,EAAMK,EAAOvK,OAInBhD,EAAEI,EAAwB,+BAA+BuK,SAEzD3K,EAAEI,EAAwB,iCACvBsK,UACA1H,IAAIkK,GACJ7G,QAAQ,SAAU,CAAE2F,oBAAoB,IAC3ChM,EAAEI,EAAwB,sCAAsCwH,OAGhE5H,EAAEI,EAAwB,yCAAyCiG,QACjE,SAyFJ,IAAIoH,EAAuB,sCAE3B,SAASC,IAEHC,SAAS3N,EAAEA,EAAE,wCAAwC,IAAImF,QAAU,IAIvEnF,EAAEyN,GAAsB5H,SAAS,qBAE6B,IAA1D7F,EAAEyN,GAAsBnJ,SAASlB,KAAK,SAAS/B,SACjDrB,EAAEyN,GAAsB1F,MACtB,kDAEF/H,EAAE,sCAAsC4H,OA6BhC5H,EAAE,sCASR4N,KAAK,WAAY,SAAUrM,GAC7B,IAAIyB,EAAMhD,EAAEuB,EAAE0C,QAAQjB,MAClB6K,EAAUF,SAAS3N,EAAEA,EAAEuB,EAAE0C,QAAQK,SAASlB,KAAK,UAAU,IAAI+B,QAEjE,GAAIlD,EACF,OAAO,EAGGjC,EAAEkG,MAmBV4H,EAlBa,SAAUC,EAAGF,GAC5B,GAAIG,MAAML,SAASI,IACjB,OAAO,EAEPA,EAAIJ,SAASI,GACb,IAAInL,EAAM5C,EAAEA,EAAEyN,GAAsB,IAAItI,OACxC,OAAI4I,IAAMJ,SAAS/K,KAGXiL,EAAJE,EACKF,EAAU,IAEfE,GAAK,KAIE,IAANA,EAAU,EAAIA,EAAI,IAEXE,CAAWjL,EAAK6K,IACd,IAAdC,GACF9N,EAAEI,EAAwB,+BAA+B4C,IAAI8K,GAC7D9N,EAAEyN,GAAsBtI,KAAKnC,GAC7BhD,EAAEyN,GAAsBjJ,OACxBxE,EAAEyN,GAAsBnJ,SAASlB,KAAK,SAASwE,OAC/C5H,EACEI,EAAwB,yCACxBiG,QAAQ,WAEVrG,EAAEuB,EAAE0C,QAAQjB,IAAI,IAChBhD,EAAEyN,GAAsBnJ,SAASlB,KAAK,SAASwE,OAC/C5H,EAAEyN,GAAsBjJ,WAxE5BxE,EAAE,wBAAwBmG,GAAG,QAASsH,EAAsB,SAAUrH,GACpEpG,EAAEoG,EAAGnC,QACFK,SACAlB,KAAK,SACLoB,KAAK,KACL0J,QACA/F,IAAI,UAAW,gBAClBnI,EAAEoG,EAAGnC,QAAQ2D,SAGf5H,EAAE,wBAAwBmG,GAAG,QAAS,SAAUC,GAG5CpG,EAAEoG,EAAGnC,QAAQkF,GAAGsE,IAChBzN,EAAEoG,EAAGnC,QAAQkF,GAAG,wCAGhBnJ,EAAEyN,GAAsBnJ,SAASlB,KAAK,SAASwE,OAC/C5H,EAAEyN,GAAsBjJ,WA2D9B,SAAS2J,IAGP,IAzhBIC,EAkWAC,EAEAC,EAqBAC,EAEAC,EA8JAC,EAAazO,EAAE,kBAAkB0O,GAAG,GAOpCxH,GANAuH,EAAWpN,QACbrB,EAAE,sBAAsB2O,SAASC,aAAaH,GAr7B5CI,EAAc7O,EAAE,iBACpBA,EAAE,QAAQgH,OAAO6H,EAAYC,OAAM,GAAMpM,KAAK,KAAM,kBACpDmM,EAAYlE,SAEZ3K,EAAE,iBAAiB6F,SAAS,OAC5B7F,EAAEI,EAAwB,sCACvBiE,aAAa,UACbC,SACAsD,OAEH5H,EAAE,0BAA0B4H,KAAK,QAGT,GAApBmH,EADa/O,EAAE,2BACJqB,SACT2N,EACFD,EAAWrJ,KAAK,aAAad,QAAQ,QAAS,UAC9C,oEACEqK,EAAUF,EAAWzK,SAEzByK,EAAWpE,SAEXsE,EAAQjI,OAAOhH,EAAEgP,IACjBhP,EAAE,0BACCgD,IAAI,2BACJ6C,SAAS,qCAk6BA7F,EAAEI,EAAwB,KAAOC,GAAkB+C,KAC/D,qBAEmB,EAAjB8D,EAAQ7F,QACV4F,EAAmBC,EAASA,EAAQ7F,QAGtCrB,EAAEI,EAAwB,IAAMC,GAAkBqI,QAChD,CAAEC,QAAS,GACX,KAGkB3I,EAAEI,IA5iBlBgO,EAAYpO,EAAE,cACRmG,GAAG,QAAS,sBAAuByC,GAC7CwF,EAAUjI,GAAG,QAAS,uBAAwB8C,GAC9CmF,EAAUjI,GAAG,QAAS,yBAA0B+C,GAGhDkF,EAAU5B,IAAI,QAAS,iBAAkB,WACvCxM,EAAEI,EAAwB,+BAA+B4C,IAAI,GAC7DhD,EACEI,EAAwB,yCACxBiG,QAAQ,QAAS,CAAEyB,OAAQ5B,SAmiB/BoD,IACA2B,SAEI,IAAuBnL,EAAOoP,WAAa,OAASpP,EAAOoP,WAC7DpP,EAAOoP,YAEL,oBAAuBC,eAAiB,OAASA,eACnDA,gBAlNEd,EAAarO,EAAE,mDACfoP,EAAapP,EAAE,mDACfsO,EAAc,uCAElBD,EAAW7B,IAAI,QAAS,WACtB,GAAIvK,EAAS,OAAO,EACpBjC,EAAEI,GACCgD,KAAK,QACL4D,OAAO,+DACVhH,EAAEI,GAAuBgD,KAAKkL,GAAajI,QAAQ,WAGrD+I,EAAW5C,IAAI,QAAS,WACtB,GAAIvK,EAAS,OAAO,EACpBjC,EAAEI,GACCgD,KAAK,QACL4D,OAAO,+DACVhH,EAAEI,GAAuBgD,KAAKkL,GAAajI,QAAQ,WAGtCrG,EAAEK,EAAmB,2BAA2B2C,MAE3DqM,EAAOrP,EAAEK,EAAmB,kCAC5BkO,EAAiB,yBACjBe,EAAiB,yBACjBd,EAAoB,uBAExBxO,EAAE,oBAAoB4H,OAGpB5H,EAAEK,EAAmB,2BAA2B2C,QAAUhD,EAAEqP,EAAK,IAAIrM,OAOrEhD,EAAEuO,GAAgBvH,OAJhB,yLAMFhH,EAAEuO,GAAgBpI,GAChB,QACA,KACA,CAAEgH,UAAW,QACbF,GAEFjN,EAAEuO,GAAgB3G,OAClB5H,EAAEwO,EAAoB,0BAA0BhC,IAAI,QAAS,WAC3DxM,EAAEuO,GAAgBlI,QAAQ,aAG5BrG,EAAEwO,EAAoB,0BAA0B5G,OAChD5H,EAAE,iBAAiBmI,IAAI,cAAe,IAKtCnI,EAAEK,EAAmB,2BAA2B2C,QAChDhD,EAAEqP,EAAKA,EAAKhO,OAAS,IAAI2B,OAOzBhD,EAAEsP,GAAgBtI,OAJhB,iLAMFhH,EAAEsP,GAAgBnJ,GAChB,QACA,KACA,CAAEgH,UAAW,QACbF,GAEFjN,EAAEsP,GAAgB1H,OAClB5H,EAAEwO,EAAoB,2BAA2BhC,IAC/C,QACA,WACExM,EAAE,0BAA0BqG,QAAQ,YAIxCrG,EAAEwO,EAAoB,2BAA2B5G,OAqInD8F,IAMF,SAAS6B,EAAeC,EAAOC,GAC7B3P,EAAO6G,KAAKC,OAAS,GAGrB5G,EAAEK,EAAmB,gBAAgBsK,SAErC,IAeM+E,EAdFC,EAAK3P,EAAE,kBAAkB0C,KAAK,KAAM,qBAAqB8B,OAE7DxE,EAAEI,GAAuB4G,OAHjB,oDAIRhH,EAAE,yCAAyCgH,OAAO2I,GAElD3P,EAAE,gCAAgC0F,KAAK,YAAY,GAEnD1F,EAAE,8BAA8B0F,KAAK,YAAY,GACjD1F,EAAE,8BAA8B0F,KAAK,YAAY,GAEjD1F,EAAE,gCAAgC0F,KAAK,YAAY,GACnD1F,EAAE,gCAAgC0F,KAAK,YAAY,GAEd,EAAjC1F,EAAE,sBAAsBqB,QACtBqO,EAAO1P,EAAE,sBAAsBsN,QAC9BnF,IAAI,WAAY,YAErBuH,EAAO1P,EAAE,mBAGX0P,EAAKhE,QAAQ,0CAEb1L,EAAE,+BAA+BgH,OAC/B,iFAKFhH,EAAE,sCAAsCgH,OACtChH,EAAE,kBAAkB8O,QAAQpM,KAAK,KAAM,uBAAuB8B,QAGhExE,EAAE,wBAAwBmI,IAAI,CAC5ByH,SAAU,UAMZ5P,EAAE,yBAAyBoD,KAAK,UAAUuH,SAG1C1I,GAAU,EA8FZ,SAAS4N,EAASC,GAZSA,EAgBIA,EAA7B,IAAI3K,GAZJ4H,EADK,IAAIlI,OAAO,uBAAwB,KAC3BkL,KAAKD,EAAKpN,KAAK,WAEnBqK,EAAQ,GAER,KAcT,MACqB,OALnB5H,EADW,OAATA,EACK2K,EAAK3K,OAKZA,GAAK6K,OAAO,IACO,MAAnB7K,EAAK6K,OAAO,IACXhC,MAAMiC,WAAW9K,IAIbA,EAAKR,cAFHsL,WAAW9K,GAKtB,SAAS+K,IACP,IAAuChP,EAAOyC,EAAMwM,EAEpDC,EAAKpQ,EAAEkG,MAAMmK,QAAQ,MACrBC,EAAStQ,EAAE,KAAMA,EAAEkG,MAAMmK,QAAQ,UAAUnP,MAAMkP,GACjDG,EAAQvQ,EAAEkG,MAAMsK,QAAQ,eACxBC,EAAQF,EAAMnN,KAAK,eAEnBsN,EADU/C,SAAS4C,EAAM7N,KAAK,WAAa,KAAM,MAC3B4N,EAEtBtQ,EAAEkG,MAAM5B,SAASlB,KAAK,kCAAkC8E,KAAK,YAC7DlI,EAAEkG,MACCyK,SAAS,kBACTzI,KAAKwI,EAAU,WAAa,YAE9BxP,EAAQlB,EAAEkG,MAAM5B,SAASqM,SAAS,MAAMzP,MAAMgF,MAC5CvC,EAAO,GACPwM,GAAa,EAChBM,EAAMrN,KAAK,MAAMN,KAAK,WACpB,IAEA8N,EAAQ5Q,EAAEkG,MAAMyK,SAAS,MACzBE,EAAehB,EAASe,EAAME,MAAM5P,EAAOA,EAAQ,IAC/C8M,MAAM6C,KACRV,GAAa,GAEfxM,EAAKV,KAAK,CACR4N,EAEAhB,EAASe,EAAME,MAAM,EAAG,IACxBjB,EAASe,EAAME,MAAM,EAAG,IACxB5K,SAIAvC,EAAKtC,SACH8O,EACFxM,EAAKuM,KAAK,SAAUa,EAAGC,GACrB,OAAOD,EAAE,GAAKC,EAAE,KAGlBrN,EAAKuM,OAEHQ,GACF/M,EAAK+M,UAEPH,EAAM7N,KAAK,SAAUgO,EAAU,GAAKJ,GAGpCG,EAAMzJ,OACJhH,EAAEgF,IAAIrB,EAAM,SAAUoN,GACpB,OAAOA,EAAE,MAIbN,EAAM3N,KAAKmO,IAIf,SAASA,IACKjR,EAAEkG,MAGX9C,KAAK,MACLqB,YAAY,OACZA,YAAY,QACZY,OAAO,QACPQ,SAAS,QACTqL,MACA7L,OAAO,SACPQ,SAAS,OAGd,SAASsL,EAAiB3B,EAAO4B,GACZ,YAAfA,GACFpR,EAAEI,GAAuBmI,OAAO,OAAQ,WACtCvI,EAAEK,EAAmB,0BAClBgR,WACA9I,OAAO,UASdvI,EAAEK,EAAmB,wBAAwBsK,SAE7C3K,EAAE,gCAAgC0F,KAAK,YAAY,GAG/C1F,EAAEK,EAAmB,WAAW8K,SAAS,6BAGzCnL,EAAEK,EAAmB,oBAAoBiK,QAAU,GACnDtK,EAAEK,EAAmB,sBAAsBiK,QAE3CtK,EAAEK,EAAmB,oBAAoB8H,IAAI,QAAS,OAEjDnI,EAAEK,EAAmB,oBAAoBiK,QAAU,EAAxD,GACAtK,EAAEK,EAAmB,sBAAsBiK,SAE3CtK,EAAEK,EAAmB,oBAAoB8H,IAAI,QAAS,QAIT,IAA7CnI,EAAE,yBAAyBsN,OAAOjM,QACpCrB,EAAEK,EAAmB,0BAA0B0H,MAC7C,qDAIJ9F,GAAU,EAGNqP,EAAatR,EAAE,yBAAyB6F,SAAS,iBAIrD7F,EAAE,oDACCgH,OAAOsK,EAAWxC,SAClB3G,IAAI,SAAU,WACdoJ,MAAMrB,GACTlQ,EAAE,oCAAoC8C,KAAKmO,GAEf,oBAAjBO,cAA8BvF,OAAOuF,cAEhDC,IAGF,SAASC,EAAcC,EAAKC,EAAQC,GAYlC7R,EAAE,yBAAyBoD,KAAK,UAAUuH,SAC1C3K,EAAE,yBAAyBgH,OACzB,4VAUFhH,EAAE,gCAAgC0F,KAAK,YAAY,GAEnD1F,EAAE,yCAAyC2K,SAC3C3K,EAAE,+BAA+B2K,SAEjC3K,EAAE,sBAAsB4H,OAExB5H,EAAE,8BAA8B0F,KAAK,YAAY,GACjD1F,EAAE,8BAA8B0F,KAAK,YAAY,GAEjD1F,EAAE,gCAAgC0F,KAAK,YAAY,GACnD1F,EAAE,gCAAgC0F,KAAK,YAAY,GAE5B,oBAAZoM,SACTxR,EAAaS,WAAW,QAG1BkB,GAAU,EAGZ,SAAS8P,EAAqBC,GAC5BhS,EAAE8C,KAAK9C,EAAE,IAAMgS,GAAS5O,KAAK,WAAY,SAAUkC,EAAKJ,GACtDlF,EAAEkF,GAAM9B,KAAK,qBAAqBsC,KAAK,WAAW,KAkKtD,SAASuM,EAAeC,EAAUvO,EAAMwO,EAAK1P,GACtC0P,EAAIC,SAAS,qBAChBD,EAAMA,EAAIvN,QAAQ,UAAW,oBAG/B5E,EAAEqS,KAAK,CACLC,KAAM,OACNC,YAAa,iCAAmCL,EAChDM,OAAO,EACP7O,KAAMA,EACN8O,SAAU,OACVN,IAAKA,EAELO,WAAYnD,EACZoD,QAAS,SAAUC,EAAShB,EAAQD,GArCxC,IA3aqBhO,EAYfkP,EAWAC,EAwZAnP,GAJ2BuG,EA6DH,CACtBgI,SAAUA,EACVvO,KAAMA,EACNlB,SAAUA,IA5DGkB,MAAQ,KACvBuO,EAAWhI,EAAQgI,UAAY,KAC/BzP,EAAWyH,EAAQzH,UAAY,KAEX,oBAAbsQ,WACLC,EAAaD,SAASE,8BAA8BtP,GACpDuP,EAAQH,SAASI,SAASC,KAAKC,UAAU5Q,IAEtB,oBAAZqP,UAETxR,EAAaM,QAAQ,QAAU0S,EAAaN,GAC5C1S,EAAaM,QAAQ,WAAYsR,GACjC5R,EAAaM,QAAQ0S,EAAaJ,KA3bnBvP,EA8eHiP,EA7ehB5S,EAAEK,EAAmB,0BAClBgR,WACAnJ,KAAK,IACRlI,EAAEK,EAAmB,0BAClBgR,WACAjJ,QAAQ,QAEXpI,EAAEK,EAAmB,YAClBiN,OACA3C,SAECkI,EAAQ7S,EAAE2D,GAEd7D,EAAO6G,KAAKlE,SAAWzC,EAAE2D,GAAMP,KAAKhD,GAAuB0O,OAAM,GAI7DyE,EAFQV,EAAMzP,KAAKhD,GAEL8H,OAElBsL,QAAQC,IAAI,WACZzT,EAAE,+BAA+B2K,SAE7BmI,EAAiBD,EAClBzP,KAAK/C,EAAmB,0BACxBgR,WAEHrR,EAAEI,GAAuB8H,KAAKqL,GAEgC,EAA1DV,EAAMzP,KAAK/C,EAAmB,YAAYiN,OAAOjM,QACnDrB,EAAEK,EAAmB,YAAY0H,MAC/B8K,EAAMzP,KAAK/C,EAAmB,YAAYiN,QAI9CtN,EAAEK,EAAmB,0BAClBgR,WACA1G,SACH3K,EAAEK,EAAmB,0BAA0B0H,MAAM+K,GAWrD3E,IAGMuF,GADFC,EADa3T,EAAE,oCAAoC0C,KAAK,WAAa,IAC1D0P,SAAS,mBACFuB,EAEAA,EAAW/O,QAAQ,UAAW,mBAGpD5E,EAAE,oCAAoC0C,KAAK,SAAUgR,GACrDE,IACAC,IAGA7T,EAAE,8BAA8B0F,KAAK,YAAY,GACjD1F,EAAE,8BAA8B0F,KAAK,YAAY,GAEjD1F,EAAE,gCAAgC0F,KAAK,YAAY,GACnD1F,EAAE,gCAAgC0F,KAAK,YAAY,GACnD1F,EAAE,yBAAyBoD,KAAK,UAAUuH,UA6axCmJ,SAAU3C,EACVU,MAAOH,IAIX,IAAI4B,EACFxT,EAAO2M,SAASsH,SAASC,OACvBlU,EAAO2M,SAASsH,SAASvO,QAAQ,MACjC1F,EAAO2M,SAASsH,SAAS1S,OAAS,IAC/B,cAEP,SAAS4S,IACP,GAAoD,OAAhD3T,EAAaE,QAAQ,QAAU8S,GAGnC,GAAI,oBAAuBP,SAK3B,IAEE,IA8CMZ,EA9CF+B,EAAMnB,SAASoB,kCACjB7T,EAAaE,QAAQ,QAAU8S,IAG7Bc,EAAOpU,EAAEI,GAAuBgD,KAAK,QAErCiR,EAAarU,EAAEkC,iBAAiB,IAAMkS,EAAK1R,KAAK,OAgChD4R,EAAUhU,EAAaE,QAAQ8S,GAEpBtT,EAAEkC,iBACf,IAAMkS,EAAK1R,KAAK,MAChBpC,EAAaE,QAAQ,cAlCL,SAAU+T,EAAaC,GACvC,IAAIC,GAAU,EAEd,IACE,IAAIC,EAAkBtB,KAAKuB,MAAMJ,GAEjCvU,EAAE8C,KAAK3B,OAAOC,KAAKsT,GAAkB,SAAU7N,EAAI3B,GACjD,IAAIqB,EAAMmO,EAAgBxP,GAS1B,GAAiB,QALW,IAAnBsP,EAAStP,GACZsP,EAAStP,GAAMG,OAAO,SAAUS,GAC9B,OAA4B,IAArBS,EAAIf,QAAQM,KAErB,IACEzE,OAEN,QADAoT,GAAU,KAId,MAAOlT,GACP,OAAO,EAGT,QAAKkT,EAYHG,CAAY7B,SAAS8B,WAAWP,GAAUD,EAAW,IASvDb,QAAQC,IAAI,cARRtB,EAAMiC,EAAK1R,KAAK,UAGpBuP,EAFe3R,EAAaE,QAAQ,YAEX0T,EAAK/B,IAOhC,MAAO5Q,GACPiS,QAAQC,IAAIlS,QA/DZiS,QAAQ3B,MAAM,sBAmElB,SAASiD,EAAoB1O,GAC3B,IAAI2O,EAAS/U,EAAEkG,MAAMxD,KAAK,QAAQ8C,QAAQ,MACtCkH,EAAO1M,EAAEkG,MAAMxD,KAAK,QACX,EAATqS,IACF3O,EAAGyC,iBACCmM,EAAKhV,EAAEkG,MACRxD,KAAK,QACLsR,OAAOe,EAAQrI,EAAKrL,OAAS,GAChCf,EAAaS,WAAWiU,GACxB1U,EAAaS,WAAW,QACxBjB,EAAO2M,SAASC,KAAOA,GAI3B,SAASkH,IAGO5T,EAAE,kBACRoD,KAAK,+BAA+BN,KAAK,WAC/C9C,EAAEkG,MAAMyE,WA0BZ,SAASkJ,IACM7T,EAAE,iBACR6T,+BAGT,SAASpC,IAMPzR,EAAE,kBAAkB8C,KAAK,WACvB,IASImS,EATAC,EAAgBlV,EAAEkG,MAClBiP,EAASD,EAAc9R,KAAK,SAC5BgS,EAAaD,EAAOE,WAAYC,eAAgB,GAElC,MAAdF,GAAsBA,GAAcD,EAAO7Q,SAASgG,UAIxD4K,EAAc5Q,SAAS4H,OAbvB,wHAcI+I,EAAmBC,EACpB5Q,SACA+M,SAAS,sBACTkE,SAEcpP,GAAG,SAAU,WAC5B+O,EAAcM,WAAWP,EAAiBO,gBAG5CN,EAAcO,OAAO,WACnBR,EAAiBO,WAAWN,EAAcM,gBAG5CP,EAAiBtE,WAAWrG,MAAM8K,MAxDtCpV,EAAEqM,GAAGwH,6BAA+B,WAIlC3N,KAAKpD,KAAK,WACR9C,EAAE,KAAMkG,MAAMpD,KAAK,WACjB,IAAI4S,EAAM1V,EAAEkG,MACRyP,EAAQ3V,EAAE,KAAM0V,EAAIpR,UACpBsR,EAAmB/T,KAAKgU,IAAIF,EAAM7J,UAClCA,EAASjK,KAAKgU,IAAIH,EAAI5J,SAAU8J,GAEpCF,EAAI5J,OAAOA,GAEP4J,EAAI5J,UAAY8J,GAClBD,EAAM7J,OAAO4J,EAAI5J,UAGnB9L,EAAE,MAAOkG,MAAMiC,IAAI,aAAc,aA2CvC8D,OAAOlM,GAAU+V,MAAM,SAAU9V,GAC/BF,EAAO+H,WAAW,WAChBsG,KACC,KAEH,IAAIwF,EAAa3T,EAAE,oCAAoC0C,KAAK,WAAa,GAEnEgR,EADFC,EAAWvB,SAAS,mBACFuB,EAEAA,EAAW/O,QAAQ,UAAW,mBAGpD5E,EAAE,oCAAoC0C,KAAK,SAAUgR,GAerD5T,EAAO6G,KAAO,GACd7G,EAAO6G,KAAKlE,SAAWzC,EAAEI,GAAuB0O,OAAM,GACtDhP,EAAO6G,KAAKC,OAAS,GAGrB5G,EAAEI,GACC2V,OAAO,SACP5P,GAAG,QAAS,uCAAwC,SAAUC,GAI7DA,EAAGyC,iBAKH,IA5ZJmN,EAKIC,EAuZID,EAAcE,UAAU,GACxBC,EAAqBH,GAAeA,EAAoB,OACxDI,EAAqBJ,GAAeA,EAAoB,OAYxD5B,GAzaR+B,EAmaQA,EAlaRC,EAmaQA,GAraRJ,EAmaQA,KA5ZYG,IAAsBC,IACxCH,EAAoB,SAAUnQ,GAC5B,IACAuQ,EAAcrW,EAAE8F,GAAIuK,QAAQ,gBAE5BiG,EADiBD,EAAYhG,QAAQ,YACHjN,KAAK,YAEvCiT,EAAYE,QAAQ,gBAAgBnT,KAAK,UAAUoT,QAC/CF,EAAiBjV,QACfiV,EAAiBnL,SAAS,YAC5BmL,EAAiBE,QAEnBF,EAAiBlT,KAAK,UAAUoT,QAChCF,EAAiBlT,KAAK,YAAYoT,SAElCxW,EAAE8F,GAAIxB,SAASA,SAASgJ,OAAOkJ,SAInCC,EAAsB,SAAU3Q,GAC9B,IAAI4Q,EAAc1W,EAAE8F,GAAIxB,SAASgJ,OAAO5K,KAAK,MAG7C2T,EAAcrW,EAAE8F,GAAIuK,QAAQ,gBAG5BiG,GAFiBD,EAAYhG,QAAQ,YAElBrQ,EAAE8F,GAAIxB,SAASA,SAASgJ,QAE3C,QACqC5G,IAAnCsP,EAAYhK,qBACuB,IAAnCgK,EAAYhK,mBAEZ,OAAO,EAIP+F,EADkB,yCAAhB2E,EACmBA,EAEA,oBAEvBL,EAAYE,QAAQ,gBAAgBnT,KAAK,UAAUoT,QAC/CF,EAAiBjV,QACnBiV,EAAiBlT,KAAK,YAAYoT,SAGlCL,EACFF,EAAkBE,GACTC,EACTK,EAAoBL,GAEpBpW,EAAE,0BAA0B8C,KAAK,SAAUwC,EAAKQ,GAC9C,GAAIA,EAAGjF,MAEL,OADAoV,EAAkBnQ,IACX,KA8WA9F,EAAEI,GAAuBgD,KAAK,SACrC+O,EAAMiC,EAAK1R,KAAK,UAEhB2R,EAAarU,EAAEkC,iBAAiB,IAAMkS,EAAK1R,KAAK,OAEpDuP,EAAeoC,EAAW,GAAIA,EAAW,GAAIlC,EAAKkC,EAAW,MAGjEJ,IAEAjU,EAAE,aAAamG,GAAG,QAAS2O,GAE3BlB,IACAC,IACApC,MApzDJ,CAszDG3R,OAAQC,SAAUkM"}