{"version":3,"file":"main.bundle.js","mappings":"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","sources":["webpack:///webpack/runtime/load script","webpack:///./cancel-event/cancel-event.js","webpack:///./check-in-page/check-in-page.js","webpack:///./event-create-form/event-create-form.js","webpack:///./event-details/event-details.js","webpack:///./event-listings/event-listings.js","webpack:///./home-page/home-page.js","webpack:///./main.js","webpack:///./registration-page/registration-page.js","webpack:///../js/jquery-ui.min.js","webpack:///../js/jquery.ui.widget.js","webpack:///../node_modules/filepond-plugin-file-validate-size/dist/filepond-plugin-file-validate-size.js","webpack:///../node_modules/filepond-plugin-image-preview/dist/filepond-plugin-image-preview.js","webpack:///../node_modules/filepond/dist/filepond.js","webpack:///../node_modules/flatpickr/dist/esm/types/options.js","webpack:///../node_modules/flatpickr/dist/esm/l10n/default.js","webpack:///../node_modules/flatpickr/dist/esm/utils/index.js","webpack:///../node_modules/flatpickr/dist/esm/utils/dom.js","webpack:///../node_modules/flatpickr/dist/esm/utils/formatting.js","webpack:///../node_modules/flatpickr/dist/esm/utils/dates.js","webpack:///../node_modules/flatpickr/dist/esm/index.js","webpack:///../node_modules/flatpickr/dist/esm/utils/polyfills.js","webpack:///../node_modules/moment/locale/af.js","webpack:///../node_modules/moment/locale/ar-dz.js","webpack:///../node_modules/moment/locale/ar-kw.js","webpack:///../node_modules/moment/locale/ar-ly.js","webpack:///../node_modules/moment/locale/ar-ma.js","webpack:///../node_modules/moment/locale/ar-sa.js","webpack:///../node_modules/moment/locale/ar-tn.js","webpack:///../node_modules/moment/locale/ar.js","webpack:///../node_modules/moment/locale/az.js","webpack:///../node_modules/moment/locale/be.js","webpack:///../node_modules/moment/locale/bg.js","webpack:///../node_modules/moment/locale/bm.js","webpack:///../node_modules/moment/locale/bn-bd.js","webpack:///../node_modules/moment/locale/bn.js","webpack:///../node_modules/moment/locale/bo.js","webpack:///../node_modules/moment/locale/br.js","webpack:///../node_modules/moment/locale/bs.js","webpack:///../node_modules/moment/locale/ca.js","webpack:///../node_modules/moment/locale/cs.js","webpack:///../node_modules/moment/locale/cv.js","webpack:///../node_modules/moment/locale/cy.js","webpack:///../node_modules/moment/locale/da.js","webpack:///../node_modules/moment/locale/de-at.js","webpack:///../node_modules/moment/locale/de-ch.js","webpack:///../node_modules/moment/locale/de.js","webpack:///../node_modules/moment/locale/dv.js","webpack:///../node_modules/moment/locale/el.js","webpack:///../node_modules/moment/locale/en-au.js","webpack:///../node_modules/moment/locale/en-ca.js","webpack:///../node_modules/moment/locale/en-gb.js","webpack:///../node_modules/moment/locale/en-ie.js","webpack:///../node_modules/moment/locale/en-il.js","webpack:///../node_modules/moment/locale/en-in.js","webpack:///../node_modules/moment/locale/en-nz.js","webpack:///../node_modules/moment/locale/en-sg.js","webpack:///../node_modules/moment/locale/eo.js","webpack:///../node_modules/moment/locale/es-do.js","webpack:///../node_modules/moment/locale/es-mx.js","webpack:///../node_modules/moment/locale/es-us.js","webpack:///../node_modules/moment/locale/es.js","webpack:///../node_modules/moment/locale/et.js","webpack:///../node_modules/moment/locale/eu.js","webpack:///../node_modules/moment/locale/fa.js","webpack:///../node_modules/moment/locale/fi.js","webpack:///../node_modules/moment/locale/fil.js","webpack:///../node_modules/moment/locale/fo.js","webpack:///../node_modules/moment/locale/fr-ca.js","webpack:///../node_modules/moment/locale/fr-ch.js","webpack:///../node_modules/moment/locale/fr.js","webpack:///../node_modules/moment/locale/fy.js","webpack:///../node_modules/moment/locale/ga.js","webpack:///../node_modules/moment/locale/gd.js","webpack:///../node_modules/moment/locale/gl.js","webpack:///../node_modules/moment/locale/gom-deva.js","webpack:///../node_modules/moment/locale/gom-latn.js","webpack:///../node_modules/moment/locale/gu.js","webpack:///../node_modules/moment/locale/he.js","webpack:///../node_modules/moment/locale/hi.js","webpack:///../node_modules/moment/locale/hr.js","webpack:///../node_modules/moment/locale/hu.js","webpack:///../node_modules/moment/locale/hy-am.js","webpack:///../node_modules/moment/locale/id.js","webpack:///../node_modules/moment/locale/is.js","webpack:///../node_modules/moment/locale/it-ch.js","webpack:///../node_modules/moment/locale/it.js","webpack:///../node_modules/moment/locale/ja.js","webpack:///../node_modules/moment/locale/jv.js","webpack:///../node_modules/moment/locale/ka.js","webpack:///../node_modules/moment/locale/kk.js","webpack:///../node_modules/moment/locale/km.js","webpack:///../node_modules/moment/locale/kn.js","webpack:///../node_modules/moment/locale/ko.js","webpack:///../node_modules/moment/locale/ku.js","webpack:///../node_modules/moment/locale/ky.js","webpack:///../node_modules/moment/locale/lb.js","webpack:///../node_modules/moment/locale/lo.js","webpack:///../node_modules/moment/locale/lt.js","webpack:///../node_modules/moment/locale/lv.js","webpack:///../node_modules/moment/locale/me.js","webpack:///../node_modules/moment/locale/mi.js","webpack:///../node_modules/moment/locale/mk.js","webpack:///../node_modules/moment/locale/ml.js","webpack:///../node_modules/moment/locale/mn.js","webpack:///../node_modules/moment/locale/mr.js","webpack:///../node_modules/moment/locale/ms-my.js","webpack:///../node_modules/moment/locale/ms.js","webpack:///../node_modules/moment/locale/mt.js","webpack:///../node_modules/moment/locale/my.js","webpack:///../node_modules/moment/locale/nb.js","webpack:///../node_modules/moment/locale/ne.js","webpack:///../node_modules/moment/locale/nl-be.js","webpack:///../node_modules/moment/locale/nl.js","webpack:///../node_modules/moment/locale/nn.js","webpack:///../node_modules/moment/locale/oc-lnc.js","webpack:///../node_modules/moment/locale/pa-in.js","webpack:///../node_modules/moment/locale/pl.js","webpack:///../node_modules/moment/locale/pt-br.js","webpack:///../node_modules/moment/locale/pt.js","webpack:///../node_modules/moment/locale/ro.js","webpack:///../node_modules/moment/locale/ru.js","webpack:///../node_modules/moment/locale/sd.js","webpack:///../node_modules/moment/locale/se.js","webpack:///../node_modules/moment/locale/si.js","webpack:///../node_modules/moment/locale/sk.js","webpack:///../node_modules/moment/locale/sl.js","webpack:///../node_modules/moment/locale/sq.js","webpack:///../node_modules/moment/locale/sr-cyrl.js","webpack:///../node_modules/moment/locale/sr.js","webpack:///../node_modules/moment/locale/ss.js","webpack:///../node_modules/moment/locale/sv.js","webpack:///../node_modules/moment/locale/sw.js","webpack:///../node_modules/moment/locale/ta.js","webpack:///../node_modules/moment/locale/te.js","webpack:///../node_modules/moment/locale/tet.js","webpack:///../node_modules/moment/locale/tg.js","webpack:///../node_modules/moment/locale/th.js","webpack:///../node_modules/moment/locale/tk.js","webpack:///../node_modules/moment/locale/tl-ph.js","webpack:///../node_modules/moment/locale/tlh.js","webpack:///../node_modules/moment/locale/tr.js","webpack:///../node_modules/moment/locale/tzl.js","webpack:///../node_modules/moment/locale/tzm-latn.js","webpack:///../node_modules/moment/locale/tzm.js","webpack:///../node_modules/moment/locale/ug-cn.js","webpack:///../node_modules/moment/locale/uk.js","webpack:///../node_modules/moment/locale/ur.js","webpack:///../node_modules/moment/locale/uz-latn.js","webpack:///../node_modules/moment/locale/uz.js","webpack:///../node_modules/moment/locale/vi.js","webpack:///../node_modules/moment/locale/x-pseudo.js","webpack:///../node_modules/moment/locale/yo.js","webpack:///../node_modules/moment/locale/zh-cn.js","webpack:///../node_modules/moment/locale/zh-hk.js","webpack:///../node_modules/moment/locale/zh-mo.js","webpack:///../node_modules/moment/locale/zh-tw.js","webpack:///../node_modules/moment/locale/ sync ^\\.\\/.*$","webpack:///../node_modules/moment/moment.js","webpack:///../node_modules/simple-datatables/src/helpers.js","webpack:///../node_modules/simple-datatables/src/rows.js","webpack:///../node_modules/simple-datatables/src/columns.js","webpack:///../node_modules/simple-datatables/src/table.js","webpack:///../node_modules/simple-datatables/src/config.js","webpack:///../node_modules/simple-datatables/src/datatable.js","webpack:///../node_modules/sweetalert2/dist/sweetalert2.all.js","webpack:///external var \"jQuery\"","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/ensure chunk","webpack:///webpack/runtime/get javascript chunk filename","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///webpack/runtime/node module decorator","webpack:///webpack/runtime/publicPath","webpack:///webpack/runtime/jsonp chunk loading","webpack:///./index.js"],"sourcesContent":["var inProgress = {};\n// data-webpack is not used as build has no uniqueName\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","import Swal from 'sweetalert2';\r\n\r\n(function () {\r\n\tlet cancelButtonEl = document.querySelector('a[data-context=\"cancel-event\"]');\r\n\r\n\tif (cancelButtonEl == undefined) { return }\r\n\r\n\tlet eventName = document.querySelector('.eventName').textContent;\r\n\r\n\tinit(cancelButtonEl);\r\n\r\n\tfunction init(cancelButtonEl) {\r\n\t\tcancelButtonEl.addEventListener('click', function (e) {\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\tSwal.fire({\r\n\t\t\t\ticon: \"warning\",\r\n\t\t\t\ttitle: \"Cancel Event - \" + eventName + \"?\",\r\n\t\t\t\thtml: \"The event will be deleted from the system, a notification of the cancelation will be sent to registrants, & the registrant list will no longer be available.\",\r\n\t\t\t\tinput: 'text',\r\n\t\t\t\tinputLabel: 'Type CONFIRM to cancel',\r\n\t\t\t\tinputValue: '',\r\n\t\t\t\tshowCloseButton: true,\r\n\t\t\t\tshowCancelButton: true,\r\n\t\t\t\tfocusConfirm: false,\r\n\t\t\t\tconfirmButtonText: ' Ok, cancel event',\r\n\t\t\t\tcancelButtonText: 'Never mind',\r\n\t\t\t\tconfirmButtonColor: '#ef4035',\r\n\t\t\t\tcancelButtonColor: '#4cabea',\r\n\t\t\t\tinputValidator: (value) => {\r\n\t\t\t\t\tif (value !== 'CONFIRM') {\r\n\t\t\t\t\t\treturn 'You must type CONFIRM to verify cancel request!'\r\n\t\t\t\t\t}\r\n\t\t\t\t},\t\t\t\t\r\n\t\t\t}).then((result) => {\r\n\t\t\t\tif (result.isConfirmed) {\r\n\t\t\t\t\tSwal.fire({\r\n\t\t\t\t\t\ttitle: 'Canceling event',\r\n\t\t\t\t\t\thtml: 'Please wait...',\r\n\t\t\t\t\t\tshowConfirmButton: false,\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\twindow.location = cancelurl;\r\n\t\t\t\t}\t\t\t\t\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n}());","//on page load, call function\r\n$(document).ready(function () {\r\n\tif ($('.checkin').length) {\r\n\t\tcheckin();\r\n\t\t$('body').addClass('loaded');\r\n\t}\r\n});\r\n\r\nfunction checkin() {\r\n\tswEventsUtilTableSortrInit({\r\n\t\ttableSelector: 'table',\r\n\t\tignoreHeading: 'thead th:nth-child(3), thead tr th:last-child'\r\n\t});\r\n\r\n\t$('#addNewQuick').on('click', function (e) {\r\n\t\te.preventDefault();\r\n\t\tshowModal($('.modal.quickReg'));\r\n\r\n\t\tresetForm($('.modal.quickReg form.register'));\r\n\t\t$('.register').find('button.btn').html('Register ');\r\n\t\t$(\"#UpdateReg\").val(false);\r\n\t});\r\n\r\n\t$('.modal.quickReg').on('modalShown', function () {\r\n\t\t$('.closeBtn').on('click.modal', function () {\r\n\t\t\thideModal($('.modal.quickReg'));\r\n\t\t});\r\n\t}).on('modalClosed', function () {\r\n\t\tresetForm($('.modal.fullReg form.register'));\r\n\t\t$('.closeBtn').off('click.modal');\r\n\t});\r\n\r\n\t$('#addNewFull').on('click', function (e) {\r\n\t\te.preventDefault();\r\n\t\t$('.modal.fullReg').removeClass('updateCEC');\r\n\t\tshowModal($('.modal.fullReg'));\r\n\r\n\t\tresetForm($('#register'));\r\n\t\t$('.register').find('button.btn').html('Register ');\r\n\t\t$(\"#UpdateReg\").val(false);\r\n\t});\r\n\r\n\t$('.modal.fullReg').on('modalShown', function () {\r\n\t\t$('.closeBtn').on('click.modal', function () {\r\n\t\t\thideModal($('.modal.fullReg'));\r\n\t\t});\r\n\t}).on('modalClosed', function () {\r\n\t\tresetForm($('.modal.fullReg form.register'));\r\n\t\t$('.closeBtn').off('click.modal');\r\n\t});\r\n\r\n\t$('#search').on('keyup', function () {\r\n\t\tvar theSearchVal = $(this).val().toLowerCase();\r\n\t\tif (theSearchVal === '') {\r\n\t\t\t$('tbody tr').show();\r\n\t\t} else {\r\n\t\t\t$('tbody tr').each(function () {\r\n\t\t\t\t$(this).text().toLowerCase().indexOf(theSearchVal) >= 0 ? $(this).show() : $(this).hide();\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n\r\n\t$(window).on('listLoading', function () {\r\n\t\t$('body').addClass('listLoading').append('\"Loading...\"');\r\n\t}).on('listDoneLoading', function () {\r\n\t\t$('body').removeClass('listLoading').find('#listLoder').remove();\r\n\t});\r\n\r\n\t$('.registrants').on('change', 'tr td:last-child input[type=\"checkbox\"]', function () {\r\n\t\t$(this).parents('tr').trigger($(this).is(':checked') ? 'checkin' : 'notcheckedin');\r\n\t});\r\n\r\n\t$('.registrants tbody').on('click', 'tr .update', function (e) {\r\n\t\te.preventDefault();\r\n\r\n\t\tresetForm($('.modal.fullReg form.register'));\r\n\r\n\t\t$('.modal.fullReg form.register #Email').attr('readonly', 'readonly');\r\n\r\n\t\tvar email = $(this).parents('tr').attr('data-email'),\r\n\t\t\teid = $(this).parents('tr').attr('data-eventid'),\r\n\t\t\tregId = $(this).parents('tr').attr('data-regid');\r\n\r\n\t\tvar data = {\r\n\t\t\tEventID: eid,\r\n\t\t\tEmail: email,\r\n\t\t\tRegID: regId\r\n\t\t};\r\n\r\n\t\tdata = JSON.stringify(data);\r\n\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\tcontentType: \"application/json; charset=utf-8\",\r\n\t\t\turl: getRegistrantInfoUrl,\r\n\t\t\tdata: data,\r\n\t\t\tsuccess: function (result) {\r\n\t\t\t\tupdateFormFields(result, $('.register'));\r\n\t\t\t\tshowModal($('.modal.fullReg'));\r\n\t\t\t\t$('.register').find('button.btn').html('Update ');\r\n\t\t\t\t$(\"#UpdateReg\").val(true);\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\t$('.registrants tbody').on('click', '.updateCECNum', function (e) {\r\n\t\te.preventDefault();\r\n\r\n\t\tresetForm($('.modal.updateCEC form.register'));\r\n\r\n\t\tvar email = $(this).parents('tr').attr('data-email'),\r\n\t\t\teid = $(this).parents('tr').attr('data-eventid'),\r\n\t\t\tregId = $(this).parents('tr').attr('data-regid'),\r\n\t\t\tdata = {\r\n\t\t\t\tEventID: eid,\r\n\t\t\t\tEmail: email,\r\n\t\t\t\tRegID: regId\r\n\t\t\t};\r\n\r\n\t\tdata = JSON.stringify(data);\r\n\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\tcontentType: \"application/json; charset=utf-8\",\r\n\t\t\turl: getRegistrantInfoUrl,\r\n\t\t\tdata: data,\r\n\t\t\tsuccess: function (result) {\r\n\t\t\t\tupdateFormFields(result, $('.register'));\r\n\t\t\t\t//$('.modal.updateCEC').addClass('updateCEC');\r\n\t\t\t\tshowModal($('.modal.updateCEC'));\r\n\t\t\t\t$('.register').find('button.btn').html('Update ');\r\n\t\t\t\t$(\"#UpdateReg\").val(true);\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\t$('.modal.updateCEC').on('modalShown', function () {\r\n\t\t$('.closeBtn').on('click.modal', function () {\r\n\t\t\thideModal($('.modal.updateCEC'));\r\n\t\t});\r\n\t}).on('modalClosed', function () {\r\n\t\tresetForm($('.modal.updateCEC form.register'));\r\n\t\t$('.closeBtn').off('click.modal');\r\n\t});\r\n\r\n\t$('.register').on('blur', 'input[name=\"Email\"]', function () {\r\n\t\tvar Email = $(this).val(),\r\n\t\t\tEventID = $(this).parents('fieldset').attr('data-eid');\r\n\r\n\t\tvar data = {\r\n\t\t\tEventID: EventID,\r\n\t\t\tEmail: Email\r\n\t\t};\r\n\r\n\t\tdata = JSON.stringify(data);\r\n\r\n\t\tconsole.log(data);\r\n\t\tif (Email) {\r\n\t\t\t$.ajax({\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tcontentType: \"application/json; charset=utf-8\",\r\n\t\t\t\turl: CheckRegistrantEmail,\r\n\t\t\t\tdata: data,\r\n\t\t\t\tsuccess: function (result) {\r\n\t\t\t\t\t//TODO\r\n\t\t\t\t\t//based on the results, enable/disable the form submit button; display relevant message\r\n\t\t\t\t\t//TODO\r\n\t\t\t\t\tconsole.log(result);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n\r\n\t$('.registrants').on('checkin', 'tr', function () {\r\n\t\tvar data = {\r\n\t\t\tRegID: $(this).attr('data-regid'),\r\n\t\t\tEventID: $(this).attr('data-eventid'),\r\n\t\t\tEmail: $(this).attr('data-email'),\r\n\t\t\tContactMe: String($(this).find('input.contact').eq(0).prop('checked'))\r\n\t\t};\r\n\r\n\t\tdata = JSON.stringify(data);\r\n\t\tvar el = $(this);\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\tcontentType: \"application/json; charset=utf-8\",\r\n\t\t\turl: checkInPost,\r\n\t\t\tdata: data,\r\n\t\t\tsuccess: function (result) {\r\n\t\t\t\tif (result.checkin !== false) {\r\n\t\t\t\t\t//swEvents.pages.checkin.checkedinCounter++;\r\n\t\t\t\t\t$(el).addClass('checkedin');\r\n\r\n\t\t\t\t\t/*if (swEvents.pages.checkin.createdCounter && swEvents.pages.checkin.checkedinCounter && swEvents.pages.checkin.createdCounter === swEvents.pages.checkin.checkedinCounter) {\r\n\t\t\t\t\t\t$(window).trigger('listDoneLoading');\r\n\t\t\t\t\t}*/\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$(el).find('input:checkbox').removeAttr('checked');\r\n\t\t\t\t\talert(\"The check in attempt was unsuccessful. Please try again.\");\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\terror: function (result) {\r\n\t\t\t\t$(el).find('input:checkbox').removeAttr('checked');\r\n\t\t\t\talert(\"The check in attempt was unsuccessful. Please try again.\");\r\n\t\t\t}\r\n\t\t});\r\n\t}).on('notcheckedin', 'tr', function () {\r\n\r\n\t\tvar data = {\r\n\t\t\tRegID: $(this).attr('data-regid'),\r\n\t\t\tEventID: $(this).attr('data-eventid'),\r\n\t\t\tEmail: $(this).attr('data-email')\r\n\t\t};\r\n\r\n\t\tdata = JSON.stringify(data);\r\n\r\n\t\tvar el = $(this);\r\n\r\n\t\t$.ajax({\r\n\t\t\ttype: 'POST',\r\n\t\t\tcontentType: \"application/json; charset=utf-8\",\r\n\t\t\turl: checkOutPost,\r\n\t\t\tdata: data,\r\n\t\t\tsuccess: function (result) {\r\n\t\t\t\t$(el).removeClass('checkedin');\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n}\r\n\r\nfunction updateFormFields(result, form) {\r\n\r\n\tvar fields = $(form).find('input, select');\r\n\r\n\t$.each($.parseJSON(result), function (index, jsonObject) {\r\n\t\t$.each(jsonObject, function (key, value) {\r\n\r\n\t\t\tvar el = $(form).find('#' + key);\r\n\r\n\t\t\tif ($(el).is('select')) {\r\n\t\t\t\t$(el).find('option').filter(function () {\r\n\t\t\t\t\treturn $(this).val() === value;\r\n\t\t\t\t}).prop('selected', true);\r\n\t\t\t} else if ($(el).is('input:checkbox')) {\r\n\t\t\t\tif (value === true) {\r\n\t\t\t\t\t$(el).prop('checked', true);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$(el).prop('checked', false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t$(el).attr('value', value);\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n}\r\n\r\nfunction resetForm(form) {\r\n\tform.find('input:text, input:password, input:file, select, textarea').attr('value', '');\r\n\tform.find('input:radio, input:checkbox').removeAttr('checked').removeAttr('selected');\r\n\tform.find('input:text, input:password, input:file, select, textarea').removeAttr('disabled');\r\n}\r\n\r\nfunction showModal(el, opts, cb) {\r\n\ttypeof opts === 'function' && arguments.length === 1 ? cb = opts : opts = opts || {};\r\n\tvar $modal = el,\r\n\t\tbgColor = opts.bgColor || 'rgba(0,0,0,.7)',\r\n\t\tbgSpeed = opts.bgSpeed || 500,\r\n\t\tmodalSpeed = opts.modalSpeed || 500,\r\n\t\tautoScroll = opts.autoScroll || true,\r\n\t\tscrollSpeed = opts.scrollSpeed || 500,\r\n\t\toffset = opts.offset || 75,\r\n\t\t$modalBg = $('
');\r\n\t$modalBg.css({\r\n\t\t'background-color': bgColor,\r\n\t\t'position': 'fixed',\r\n\t\t'z-index': '16777270',\r\n\t\t'top': 0,\r\n\t\t'left': 0,\r\n\t\t'width': '100%',\r\n\t\t'height': '100%',\r\n\t\t'display': 'none'\r\n\t});\r\n\r\n\t$modalBg.appendTo('body').fadeIn(bgSpeed, function () {\r\n\t\t$modal.css('z-index', 16777271).fadeIn(modalSpeed, function () {\r\n\t\t\t$(document).on('keyup.modal', function (e) {\r\n\t\t\t\tif (e.keyCode === 27) { hideModal($modal); }\r\n\t\t\t});\r\n\t\t\t$modalBg.on('click.modal', function () {\r\n\t\t\t\thideModal($modal);\r\n\t\t\t});\r\n\t\t});\r\n\t\tautoScroll === true ? doScroll($modal, scrollSpeed, offset) : completed($modal);\r\n\t});\r\n}\r\n\r\nfunction completed($modal) {\r\n\t$modal.trigger('modalShown');\r\n\tif (typeof cb === 'function') { cb.call($modal); }\r\n}\r\n\r\nfunction doScroll($modal, scrollSpeed, offset) {\r\n\t$('html,body').animate({ scrollTop: $modal.offset().top - offset }, scrollSpeed).promise().done(function () {\r\n\t\tcompleted($modal);\r\n\t});\r\n}\r\n\r\nfunction hideModal(el, opts, cb) {\r\n\ttypeof opts === 'function' && arguments.length === 1 ? cb = opts : opts = opts || {};\r\n\tvar $modal = el,\r\n\t\t$modalBg = $('.zmodalBg'),\r\n\t\tmodalSpeed = opts.modalSpeed || 250,\r\n\t\tbgSpeed = opts.bgSpeed || 250;\r\n\t\t\r\n\t$modal.fadeOut(modalSpeed, function () {\r\n\t\t$modalBg.fadeOut(bgSpeed, function () {\r\n\t\t\thideModalCompleted($modalBg, $modal, cb);\r\n\t\t});\r\n\t});\r\n\treturn this;\r\n}\r\n\r\nfunction hideModalCompleted($modalBg, $modal, cb) {\r\n\t$modalBg.remove();\r\n\t$(document).off('keyup.modal');\r\n\t$modal.trigger('modalClosed');\r\n\tif (typeof cb === 'function') { cb.call($modal); }\r\n}\r\n\r\nfunction swEventsUtilTableSortrInit(opts) {\r\n\tvar theTable, ignoreHeading, useUTC;\r\n\r\n\topts = opts || {};\r\n\ttheTable = opts.tableSelector || 'table.sortable';\r\n\tignoreHeading = opts.ignoreHeading || '.sortIgnore';\r\n\tswEventsUtilTableSortrInitSetup(theTable, ignoreHeading, useUTC);\r\n}\r\n\r\nfunction swEventsUtilTableSortrInitSetup(theTable, ignoreHeading, useUTC) {\r\n\t$(theTable).each(function () {\r\n\t\t$(this).find('thead th').not(ignoreHeading).on('click', function () {\r\n\t\t\tvar $this = $(this),\r\n\t\t\t\tcolIdx = $this.index(),\r\n\t\t\t\ttoSort = [],\r\n\t\t\t\tcurTblBod = $this.parents('table').find('tbody'),\r\n\t\t\t\tnewTblBod = $('');\r\n\r\n\t\t\tif ($(this).attr('data-utc')) {\r\n\t\t\t\tuseUTC = true;\r\n\t\t\t}\r\n\r\n\t\t\t$this.toggleClass('toggle');\r\n\r\n\t\t\tcurTblBod.find('tr').each(function (k, v) {\r\n\t\t\t\tif (useUTC === true) {\r\n\t\t\t\t\ttoSort.push([$(this).children('td').eq(colIdx).attr('data-utc'), $(this).index()]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttoSort.push([$(this).children('td').eq(colIdx).text(), $(this).index()]);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\ttoSort.sort();\r\n\r\n\t\t\tif ($(theTable).data('sorted') === 'descending') {\r\n\t\t\t\ttoSort.reverse();\r\n\t\t\t\t$(theTable).data('sorted', 'ascending');\r\n\t\t\t} else {\r\n\t\t\t\t$(theTable).data('sorted', 'descending');\r\n\t\t\t}\r\n\r\n\t\t\t$.each(toSort, function (k, v) {\r\n\t\t\t\tcurTblBod.find('tr').eq(v[1]).clone(true).appendTo(newTblBod);\r\n\t\t\t});\r\n\t\t\tcurTblBod.replaceWith(newTblBod);\r\n\t\t});\r\n\t});\r\n}","import flatpickr from 'flatpickr';\r\nimport * as FilePond from 'filepond';\r\nimport FilePondPluginFileValidateSize from 'filepond-plugin-file-validate-size';\r\nimport FilePondPluginImagePreview from 'filepond-plugin-image-preview';\r\n\r\n(function () {\r\n\tlet form = document.querySelector('.eventCreateForm');\r\n\r\n\tif (form == undefined) { return }\r\n\r\n\tfunction customSubjectLine() {\r\n\t\t//page load, set default values\r\n\t\t$('.emailTemplates input[name=SelectedEmailTemplate]:checked').each(function () {\r\n\t\t\t$(this).parents('li').addClass('selected');\r\n\t\t});\r\n\r\n\t\tif ($('.emailTemplates input[name=SelectedEmailTemplate]:checked').length) {\r\n\t\t\tif ($('.emailTemplates input[name=SelectedEmailTemplate]:checked').data('imageupload').toLowerCase() === 'true') {\r\n\t\t\t\t$('.template-image').css(\"display\", \"block\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t$('.emailTemplates li').not('.selected').find('.subLines input[type=radio]').each(function () {\r\n\t\t\t$(this).attr('disabled', 'disabled');\r\n\t\t});\r\n\r\n\t\t//user interacts with form\r\n\t\t$('input[name=SelectedEmailTemplate]').on('click', function () {\r\n\t\t\tvar templateImageUpload = $('.template-image');\r\n\r\n\t\t\t$('ul.emailTemplates li').removeClass('selected');\r\n\t\t\t$(this).parents('li').addClass('selected');\r\n\r\n\t\t\t$('.emailTemplates li').not('.selected').find('.subLines input[type=radio]').each(function () {\r\n\t\t\t\t$(this).prop('disabled', true);\r\n\t\t\t\t$(this).prop('checked', false);\r\n\t\t\t});\r\n\r\n\t\t\t$('.emailTemplates li.selected').find('.subLines input[type=radio]').each(function () {\r\n\t\t\t\t$(this).prop('disabled', false);\r\n\t\t\t});\r\n\r\n\t\t\t$('.emailTemplates li.selected').find('.subLines input[type=radio]').first().prop('checked', true).trigger('change');\r\n\r\n\t\t\tif (($(this).data(\"imageupload\").toLowerCase() === 'true')) {\r\n\t\t\t\t$(templateImageUpload).show();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t$(templateImageUpload).hide();\r\n\t\t\t}\r\n\r\n\t\t\t$(window).trigger('resize');\r\n\t\t});\r\n\t}\r\n\r\n\tfunction setupDateTimePickers() {\r\n\t\tvar eventDate = document.querySelector('#eventDate');\r\n\t\tvar eventTime = document.querySelector('#eventTime');\r\n\t\tvar startTime = document.querySelector('#startTime');\r\n\r\n\t\tflatpickr(eventDate, {\r\n\t\t\tdefaultDate: null,\r\n\t\t\tminDate: eventDate.dataset.mindate,\r\n\t\t\tdateFormat: 'Y-m-d',\r\n\t\t\tonReady: function (selectedDates, dateStr, instance) {\r\n\t\t\t\tif (dateStr == null) instance.clear(); //prevent auto-fill on new event\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tflatpickr(eventTime, {\r\n\t\t\tenableTime: true,\r\n\t\t\tnoCalendar: true,\r\n\t\t\tdateFormat: 'h:iK',\r\n\t\t});\r\n\r\n\t\tflatpickr(startTime, {\r\n\t\t\tenableTime: true,\r\n\t\t\tnoCalendar: true,\r\n\t\t\tdateFormat: 'h:iK',\r\n\t\t});\r\n\t}\r\n\r\n\tfunction fileUploaders() {\r\n\t\tFilePond.registerPlugin(\r\n\t\t\t// validates the size of the file\r\n\t\t\tFilePondPluginFileValidateSize,\r\n\t\t\t// previews dropped images\r\n\t\t\tFilePondPluginImagePreview\r\n\t\t);\r\n\r\n\t\t// Get a reference to the file input elements\r\n\t\tconst presenterEl = form.querySelector('input[type=\"file\"].presenter');\r\n\t\tconst sponsorEl = form.querySelector('input[type=\"file\"].sponsor');\r\n\t\tconst templateEl = form.querySelector('input[type=\"file\"].template');\r\n\r\n\t\tconst presenterPhotosInput = document.querySelector('input[name=\"PresenterPhotosFilePond\"]');\r\n\t\tconst sponsorPhotosInput = document.querySelector('input[name=\"SponsorPhotosFilePond\"]');\r\n\t\tconst templatePhotoInput = document.querySelector('input[name=\"TemplateImageCustomizationFilePond\"]');\r\n\r\n\t\tinitFilePond(presenterEl, presenterPhotosInput);\r\n\t\tinitFilePond(sponsorEl, sponsorPhotosInput);\r\n\t\tinitFilePond(templateEl, templatePhotoInput);\r\n\r\n\t\t// Create FilePond instances\r\n\t\tfunction initFilePond(el, field) {\r\n\t\t\tvar ups = [];\r\n\t\t\tvar existing = field.value.length > 0 ? JSON.parse(field.value) : null;\r\n\t\t\tvar loadExisting = [];\r\n\t\t\tvar wrapper = $('.wizardWrap.eventCreateForm');\r\n\r\n\t\t\tif (existing) {\r\n\t\t\t\tfor (var i = 0; i < existing.length; i++) {\r\n\t\t\t\t\tlet o = {};\r\n\t\t\t\t\tlet img = existing[i];\r\n\r\n\t\t\t\t\to.source = img.FileName;\r\n\t\t\t\t\to.filetype = img.FileType;\r\n\t\t\t\t\to.options = { type: 'local' };\r\n\r\n\t\t\t\t\tloadExisting.push(o);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlet pond = FilePond.create(el, {\r\n\t\t\t\tserver: {\r\n\t\t\t\t\tprocess: (fieldName, file, metadata, load, error, progress, abort) => {\r\n\t\t\t\t\t\tconst formData = new FormData();\r\n\t\t\t\t\t\tformData.append(fieldName, file, file.name);\r\n\t\t\t\t\t\tformData.append('EventId', eventId);\r\n\t\t\t\t\t\tformData.append('FieldName', field.name);\r\n\t\t\t\t\t\tformData.append('FieldAlias', field.dataset.fieldalias);\r\n\r\n\t\t\t\t\t\tconst request = new XMLHttpRequest();\r\n\t\t\t\t\t\trequest.open('POST', imageposturl);\r\n\t\t\t\t\t\t// Setting computable to false switches the loading indicator to infinite mode\r\n\t\t\t\t\t\trequest.upload.onprogress = (e) => {\r\n\t\t\t\t\t\t\tprogress(e.lengthComputable, e.loaded, e.total);\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\trequest.onload = function () {\r\n\t\t\t\t\t\t\tif (request.status >= 200 && request.status < 300) {\r\n\t\t\t\t\t\t\t\tload(request.responseText);// the load method accepts either a string (id) or an object\r\n\r\n\t\t\t\t\t\t\t\t//update hidden field with new list IF new event (event edit gets updated in API endpoint)\r\n\t\t\t\t\t\t\t\tif (eventId == \"0\") {\r\n\t\t\t\t\t\t\t\t\tups.push(JSON.parse(request.responseText));\r\n\t\t\t\t\t\t\t\t\tfield.value = JSON.stringify(ups);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t$(wrapper).height($(wrapper).find('.active').height());\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\terror('Error during Upload!');\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\trequest.send(formData);\r\n\t\t\t\t\t\t//expose an abort method so the request can be cancelled\r\n\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\tabort: () => {\r\n\t\t\t\t\t\t\t\t// This function is entered if the user has tapped the cancel button\r\n\t\t\t\t\t\t\t\trequest.abort();\r\n\t\t\t\t\t\t\t\t// Let FilePond know the request has been cancelled\r\n\t\t\t\t\t\t\t\tabort();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t},\r\n\t\t\t\t\tremove: (source, load, error) => {\r\n\t\t\t\t\t\t//actually delete the file\r\n\t\t\t\t\t\tlet req = {\r\n\t\t\t\t\t\t\t'fieldname': field.name,\r\n\t\t\t\t\t\t\t'eventid': eventId,\r\n\t\t\t\t\t\t\t'filename': source,\r\n\t\t\t\t\t\t\t'fieldalias': field.dataset.fieldalias\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tconst request = new XMLHttpRequest();\r\n\t\t\t\t\t\trequest.open('DELETE', imageremoveurl);\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\trequest.onload = function () {\r\n\t\t\t\t\t\t\tif (request.status >= 200 && request.status < 300) {\r\n\t\t\t\t\t\t\t\tload();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\terror('Error while removing file!');\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t//we're sending the metadata over, the endpoint will update the field during request\r\n\t\t\t\t\t\trequest.send(JSON.stringify(req));\r\n\t\t\t\t\t},\r\n\t\t\t\t\trevert: (source, load, error) => {\r\n\t\t\t\t\t\tconst request = new XMLHttpRequest();\r\n\t\t\t\t\t\tvar data = JSON.parse(source);\r\n\r\n\t\t\t\t\t\tdata.FieldName = field.name;\r\n\t\t\t\t\t\tdata.eventid = eventId;\r\n\r\n\t\t\t\t\t\trequest.open('DELETE', imagereverturl);\r\n\r\n\t\t\t\t\t\trequest.onload = function () {\r\n\t\t\t\t\t\t\tif (request.status >= 200 && request.status < 300) {\r\n\t\t\t\t\t\t\t\tload();\r\n\r\n\t\t\t\t\t\t\t\tif (eventId == \"0\") {\r\n\t\t\t\t\t\t\t\t\tvar existing = JSON.parse(field.value);\r\n\r\n\t\t\t\t\t\t\t\t\tups = existing.filter(function (obj) {\r\n\t\t\t\t\t\t\t\t\t\tobj = JSON.parse(obj);\r\n\t\t\t\t\t\t\t\t\t\treturn obj.Guid !== source.Guid;\r\n\t\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\t\t//update hidden field with new list IF new event (event edit gets updated in API endpoint)\r\n\t\t\t\t\t\t\t\t\tfield.value = JSON.stringify(ups);\r\n\t\t\t\t\t\t\t\t}\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\terror('Error while reverting file!');\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\trequest.send(JSON.stringify(data));\r\n\t\t\t\t\t},\r\n\t\t\t\t\tload: imageloadurl + '?guid=',\r\n\t\t\t\t},\r\n\t\t\t\tfiles: loadExisting\r\n\t\t\t});\r\n\t\t}\t\t\r\n\t}\r\n\r\n\tcustomSubjectLine();\r\n\tsetupDateTimePickers();\r\n\tfileUploaders();\r\n}());","import { DataTable } from \"simple-datatables\";\r\n\r\n// Registrant table sorting\r\n(function () {\r\n\tlet el = document.querySelectorAll('.full.regAttendees');\r\n\r\n\tif (el == undefined) { return }\r\n\r\n\tel.forEach(e => init(e));\r\n\r\n\tfunction init(el) {\r\n\t\tconst dataTable = new DataTable(el, {\r\n\t\t\tsearchable: false,\r\n\t\t\tpaging: false\r\n\t\t});\r\n\t}\r\n\r\n\tif ($('[data-print-style]').length) {\r\n\t\t$('head').append('');\r\n\t}\r\n\r\n\t$('.icon-printer').on('click', function () {\r\n\t\t$('.printDetails').show();\r\n\t});\r\n\r\n\t$('.printDetails__print-button').on('click', function () {\r\n\t\tvar header = $('.mainHeader').html(),\r\n\t\t\tbody = $('.mainContent').html(),\r\n\t\t\tstyles = $('link'),\r\n\t\t\tprintWindow = window.open(\"\", \"\", \"\");\r\n\r\n\t\tprintWindow.document.write('');\r\n\t\tstyles.each(function (i) {\r\n\t\t\tprintWindow.document.write('');\r\n\t\t});\r\n\t\tprintWindow.document.write('');\r\n\t\tprintWindow.document.write('');\r\n\t\tprintWindow.document.write('
');\r\n\t\tprintWindow.document.write(header);\r\n\t\tif ($('.presenterDetails').length <= 0) {\r\n\t\t\tprintWindow.document.write('
');\r\n\t\t}\r\n\t\telse {\r\n\t\t\tprintWindow.document.write('
');\r\n\t\t}\r\n\t\tprintWindow.document.write(body);\r\n\t\tprintWindow.document.write('
');\r\n\t\tprintWindow.document.close();\r\n\t\tprintWindow.focus();\r\n\t});\r\n\r\n\t//var mapSrc = swEvents.util.gMapsHelpers.getMapImgUrl({\r\n\t//\taddr: $('.venueMeta').find('address').text(),\r\n\t//\tzoom: '12',\r\n\t//\tsize: '480x480',\r\n\t//\tcolor: 'blue'\r\n\t//});\r\n\r\n\t//$('.venueMeta').find('.map').prop('src', mapSrc).on('click', function () {\r\n\t//\tif (!$('.modal img').length) {\r\n\t//\t\tvar img = $('').attr('src', swEvents.util.gMapsHelpers.getMapImgUrl({\r\n\t//\t\t\taddr: $(this).parents('.venueMeta').find('address').text(),\r\n\t//\t\t\tzoom: swEvents.util.pointsBreak.getWidth() <= 500 ? '16' : '17',\r\n\t//\t\t\tsize: swEvents.util.pointsBreak.getWidth() <= 500 ? '420x420' : '720x720',\r\n\t//\t\t\tcolor: 'blue'\r\n\t//\t\t}));\r\n\t//\t\t$('.modal .modalInner').append(img);\r\n\t//\t}\r\n\t//\t$('.modal').showModal().on('modalClosed', function () {\r\n\t//\t\t$(this).off('modalClosed').find('img').remove();\r\n\t//\t}).find('.closeBtn').on('click', function (e) {\r\n\t//\t\te.preventDefault();\r\n\t//\t\t$(this).off('click');\r\n\t//\t\t$('.modal').hideModal();\r\n\t//\t});\r\n\t//});\r\n\r\n\tif (document.getElementsByClassName('cancel-prompt')[0]) {\r\n\t\tvar cancelPrompt = {\r\n\t\t\teventName: $('.eventName').text(),\r\n\t\t\tpostURL: $('button[data-action=\"cancel-event\"]').attr('href'),\r\n\t\t\ttextInput: $('#confirmation'),\r\n\t\t\tsubmitBtn: $('a[data-action=\"cancel-event\"]'),\r\n\t\t\texitBtn: $('button[data-action=\"exit-prompt\"]'),\r\n\t\t\treset: function () {\r\n\t\t\t\tthis.textInput[0].value = '';\r\n\t\t\t\tthis.submitBtn.removeClass('btn--red');\r\n\t\t\t}\r\n\t\t};\r\n\r\n\r\n\t\t$(cancelPrompt.submitBtn).on('click', function (e) {\r\n\t\t\tcancelPrompt.submitBtn.replaceWith('Cancelling... ');\r\n\t\t});\r\n\r\n\t\t$('.cancel-prompt__eventName').text(cancelPrompt.eventName);\r\n\r\n\t\tcancelPrompt.textInput.on('keyup', function (e) {\r\n\t\t\tif (this.value === 'CONFIRM') {\r\n\t\t\t\tcancelPrompt.submitBtn.addClass('btn--red')\r\n\t\t\t} else if (cancelPrompt.submitBtn.hasClass('btn--red')) {\r\n\t\t\t\tcancelPrompt.submitBtn.removeClass('btn--red');\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t$('a[data-context=\"cancel-event\"]').on('click', function (e) {\r\n\t\t\te.preventDefault();\r\n\r\n\t\t\t$('.cancel-prompt').showModal().on('modalClosed', function () {\r\n\t\t\t\tcancelPrompt.reset();\r\n\t\t\t}).find('.closeBtn').on('click', function (e) {\r\n\t\t\t\te.preventDefault();\r\n\t\t\t\t$(this).off('click');\r\n\t\t\t\t$('.cancel-prompt').hideModal();\r\n\t\t\t\tcancelPrompt.reset();\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tcancelPrompt.exitBtn.on('click', function (e) {\r\n\t\t\te.preventDefault();\r\n\t\t\t$('.cancel-prompt').hideModal();\r\n\t\t\tcancelPrompt.reset();\r\n\t\t});\r\n\t}\r\n\r\n\t$('.eventDetails .selectedTemplate .btn.icon-envelop').on('click', function (e) {\r\n\t\te.preventDefault();\r\n\t\tvar myId = $(this).data('eid');\r\n\t\t$.ajax({\r\n\t\t\turl: sendproofurl + '?eid=' + myId,\r\n\t\t\tmethod: 'POST',\r\n\t\t\tcomplete: function (data) {\r\n\t\t\t\tconsole.log(data);\r\n\t\t\t\t//data = JSON.parse(data);\r\n\t\t\t\tif (data.IsError !== false) {\r\n\t\t\t\t\t$('.eventDetails .selectedTemplate .btn.icon-envelop').text('Proof Sent');\r\n\t\t\t\t} else {\r\n\t\t\t\t\talert('There was an error\\n' + data.responseJSON.Message);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\r\n\t//for clicking the download button\r\n\tvar dlBtn,\r\n\t\ttable,\r\n\t\tfileName,\r\n\t\tcsv = '';\r\n\tswEventsUtilCsvDownloaderInit({\r\n\t\tdownloadButton: '.listDownload--registrants',\r\n\t\ttable: '.dlCSV',\r\n\t\tfileName: 'Attendees' + $('.eventMeta').find('.eventName').text().replace(/\\s/g, '') + '.csv'\r\n\t});\r\n\r\n\tfunction swEventsUtilCsvDownloaderInit(opts) {\r\n\t\topts = opts || {};\r\n\t\tdlBtn = opts.downloadButton || '.csvDownload';\r\n\t\ttable = opts.table || '.csvData';\r\n\t\tfileName = opts.fileName || 'CSV-Download';\r\n\t\tmakeCsv();\r\n\t}\r\n\r\n\tfunction makeCsv() {\r\n\t\t$(table).find('thead th').each(function (i) {\r\n\t\t\tcsv += '\"' + $(this).text() + '\"' + (i === ($(table).find('thead th').length - 1) ? '\\r\\n' : ',');\r\n\t\t}).end().find('tbody tr').each(function (i) {\r\n\t\t\t$(this).find('td').each(function (i) {\r\n\t\t\t\tcsv += '\"' + $(this).text() + '\"' + (i === ($(this).parent('tr').find('td').length - 1) ? '\\r\\n' : ',');\r\n\t\t\t});\r\n\t\t});\r\n\t\tsetupBtn(csv);\r\n\t}\r\n\r\n\tfunction setupBtn(data) {\r\n\t\t$(dlBtn).attr({\r\n\t\t\t'href': 'data:application/text;charset=utf-8,' + encodeURIComponent(data),\r\n\t\t\t'target': '_blank',\r\n\t\t\t'download': fileName\r\n\t\t});\r\n\t\tif (window.navigator.userAgent.search('Trident') >= 0 || window.navigator.userAgent.search('Edge')) {\r\n\t\t\t$(dlBtn).on('click', function (e) {\r\n\t\t\t\t$('body').append('');\r\n\t\t\t\tvar iframe = $('#csvFrame')[0];\r\n\t\t\t\tiframe = iframe.contentWindow || iframe.contentDocument;\r\n\t\t\t\tdata = 'sep=,\\r\\n' + data;\r\n\t\t\t\tiframe.document.open('text/html', 'replace');\r\n\t\t\t\tiframe.document.write(data);\r\n\t\t\t\tiframe.document.close();\r\n\t\t\t\tiframe.focus();\r\n\t\t\t\tiframe.document.execCommand('SaveAs', true, 'Attendees.csv');\r\n\t\t\t\tif (window.navigator.userAgent.search('Edge')) {\r\n\t\t\t\t\tvar blobObject = new Blob([data]);\r\n\t\t\t\t\twindow.navigator.msSaveOrOpenBlob(blobObject, \"Attendees.csv\");\r\n\t\t\t\t}\r\n\t\t\t\t$('#csvFrame').remove();\r\n\t\t\t\te.preventDefault();\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}());","import { DataTable } from \"simple-datatables\";\r\nimport Swal from 'sweetalert2';\r\n\r\n\r\n// Main admin listing page sorting\r\n(function () {\r\n\tlet el = document.querySelectorAll('.pendingEventList.listing table, .upcomingEventList.listing table');\r\n\r\n\tif (el === null) { return }\r\n\r\n\tel.forEach(e => init(e));\r\n\r\n\tfunction init(el) {\r\n\t\tconst dataTable = new DataTable(el, {\r\n\t\t\tsearchable: true,\r\n\t\t\tpaging: false,\r\n\t\t\tcolumns: [\r\n\t\t\t\t{ select: 2, sort: \"asc\", type: \"date\", format: \"MM/DD/YYYY\" },\r\n\t\t\t]\r\n\t\t});\r\n\t\t$(el).find('thead tr th').each(function () {\r\n\t\t\t$(this).width('');\r\n\t\t})\r\n\t}\r\n\r\n\t//have to do this since simple-dt captures all click events inside its' container\r\n\tdocument.addEventListener('click', function (e) {\r\n\t\tfor (let t = e.target; t && t != this; t = t.parentNode) {\r\n\t\t\tif (t.matches('li[data-tooltip=\"Approve\"]')) {\r\n\t\t\t\tApproveEvent(t);\r\n\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t\telse if (t.matches('li[data-tooltip=\"Delete\"]')) {\r\n\t\t\t\tDeleteEvent(t);\r\n\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t\telse if (t.matches('li[data-tooltip=\"Request Approval\"]')) {\r\n\t\t\t\tRequestApproval(t);\r\n\t\t\t\tbreak\r\n\t\t\t}\r\n\t\t}\r\n\t}, false);\r\n\r\n\tfunction ApproveEvent(el) {\r\n\t\tvar $this = $(el),\r\n\t\t\tmyId = $this.parents('tr').data('eventid'),\r\n\t\t\tdata = { eid: myId };\r\n\r\n\t\tdata = JSON.stringify(data);\r\n\r\n\t\tSwal.fire({\r\n\t\t\ticon: \"question\",\r\n\t\t\ttitle: \"Approve Event?\",\r\n\t\t\thtml: \"Are you sure you want to approve this event?\",\r\n\t\t\tshowCloseButton: true,\r\n\t\t\tshowCancelButton: true,\r\n\t\t\tconfirmButtonText: 'Approve Event',\r\n\t\t\tcancelButtonText: 'Never mind',\r\n\t\t\tconfirmButtonColor: '#7aad56',\r\n\t\t\tcancelButtonColor: '#4cabea',\r\n\t\t}).then((result) => {\r\n\t\t\tif (result.isConfirmed) {\r\n\t\t\t\tSwal.fire({\r\n\t\t\t\t\ttitle: 'Approving Event',\r\n\t\t\t\t\thtml: 'please wait...
Please do not navigate away from the page, click the back button, or close the window! ',\r\n\t\t\t\t\tshowConfirmButton: false,\r\n\t\t\t\t});\r\n\r\n\t\t\t\t$.ajax({\r\n\t\t\t\t\turl: approveeventurl + '?eid=' + myId,\r\n\t\t\t\t\ttype: 'POST',\r\n\t\t\t\t\tcontentType: \"application/json; charset=utf-8\",\r\n\t\t\t\t\tdata: data,\r\n\t\t\t\t\tsuccess: function (result) {\r\n\t\t\t\t\t\tconsole.log('result', result);\r\n\r\n\t\t\t\t\t\tif (result.IsError !== false) {\r\n\t\t\t\t\t\t\t//remove overlay\r\n\t\t\t\t\t\t\t$('.approvalWarning').removeClass('show');\r\n\t\t\t\t\t\t\t$('html').removeClass('noscroll');\r\n\r\n\t\t\t\t\t\t\tvar myRow = $this.parents('tr').clone();\r\n\t\t\t\t\t\t\t$('.upcomingEventList tbody').append(myRow);\r\n\t\t\t\t\t\t\tmyRow.find('td').last().find('li').not('[data-tooltip=\"View\"]').remove();\r\n\r\n\t\t\t\t\t\t\tvar checkinButton = $('
  • Check In
  • ');\r\n\r\n\t\t\t\t\t\t\tmyRow.find('ul').append(checkinButton);\r\n\r\n\t\t\t\t\t\t\t$this.parents('tr').remove();\r\n\t\t\t\t\t\t\t$this.off('click');\r\n\r\n\t\t\t\t\t\t\tSwal.fire({\r\n\t\t\t\t\t\t\t\ticon: \"success\",\r\n\t\t\t\t\t\t\t\tshowCloseButton: true,\r\n\t\t\t\t\t\t\t\ttitle: 'Event Approved!',\r\n\t\t\t\t\t\t\t\tshowConfirmButton: false,\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tSwal.fire({\r\n\t\t\t\t\t\t\t\ticon: \"error\",\r\n\t\t\t\t\t\t\t\tshowCloseButton: true,\r\n\t\t\t\t\t\t\t\ttitle: 'Event Approval Failed',\r\n\t\t\t\t\t\t\t\tshowConfirmButton: false,\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction DeleteEvent(el) {\r\n\t\tvar $this = $(el),\r\n\t\t\tmyId = $this.parents('tr').data('eventid'),\r\n\t\t\tdata = { eid: myId };\r\n\r\n\t\tdata = JSON.stringify(data);\r\n\r\n\t\tSwal.fire({\r\n\t\t\ticon: \"question\",\r\n\t\t\ttitle: \"Delete Event?\",\r\n\t\t\thtml: \"Are you sure you would like to delete this event?\\nWARNING: This action cannot be undone\",\r\n\t\t\tshowCloseButton: true,\r\n\t\t\tshowCancelButton: true,\r\n\t\t\tconfirmButtonText: 'Delete Event',\r\n\t\t\tcancelButtonText: 'Never mind',\r\n\t\t\tconfirmButtonColor: '#ef4035',\r\n\t\t\tcancelButtonColor: '#4cabea',\r\n\t\t}).then((result) => {\r\n\t\t\tif (result.isConfirmed) {\r\n\t\t\t\tSwal.fire({\r\n\t\t\t\t\ttitle: 'Deleting Event',\r\n\t\t\t\t\thtml: 'please wait... ',\r\n\t\t\t\t\tshowConfirmButton: false,\r\n\t\t\t\t});\r\n\r\n\t\t\t\t$.ajax({\r\n\t\t\t\t\turl: deleteeventurl + '?eid=' + myId,\r\n\t\t\t\t\ttype: 'POST',\r\n\t\t\t\t\tsuccess: function (result) {\r\n\t\t\t\t\t\tdata = data;\r\n\t\t\t\t\t\tif (data.IsError !== false) {\r\n\t\t\t\t\t\t\t$this.parents('tr').remove();\r\n\r\n\t\t\t\t\t\t\tSwal.fire({\r\n\t\t\t\t\t\t\t\ticon: \"success\",\r\n\t\t\t\t\t\t\t\tshowCloseButton: true,\r\n\t\t\t\t\t\t\t\ttitle: 'Event Deleted.',\r\n\t\t\t\t\t\t\t\tshowConfirmButton: false,\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tSwal.fire({\r\n\t\t\t\t\t\t\t\ticon: \"error\",\r\n\t\t\t\t\t\t\t\tshowCloseButton: true,\r\n\t\t\t\t\t\t\t\ttitle: 'Event Deletion Failed',\r\n\t\t\t\t\t\t\t\tshowConfirmButton: false,\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tfunction RequestApproval(el) {\r\n\t\tvar $this = $(el),\r\n\t\t\tmyId = $this.parents('tr').data('eventid'),\r\n\t\t\tdata = { eid: myId };\r\n\r\n\t\tdata = JSON.stringify(data);\r\n\r\n\t\tSwal.fire({\r\n\t\t\ticon: \"question\",\r\n\t\t\ttitle: \"Request Approval?\",\r\n\t\t\thtml: \"Are you sure you want to request approval for this event?\",\r\n\t\t\tshowCloseButton: true,\r\n\t\t\tshowCancelButton: true,\r\n\t\t\tconfirmButtonText: 'Request Approval',\r\n\t\t\tcancelButtonText: 'Never mind',\r\n\t\t\tconfirmButtonColor: '#7aad56',\r\n\t\t\tcancelButtonColor: '#4cabea',\r\n\t\t}).then((result) => {\r\n\t\t\tif (result.isConfirmed) {\r\n\t\t\t\tSwal.fire({\r\n\t\t\t\t\ttitle: 'Requesting Approval',\r\n\t\t\t\t\thtml: 'please wait...
    Please do not navigate away from the page, click the back button, or close the window! ',\r\n\t\t\t\t\tshowConfirmButton: false,\r\n\t\t\t\t});\r\n\r\n\t\t\t\t$.ajax({\r\n\t\t\t\t\turl: submitforapprovalurl + '?eid=' + myId,\r\n\t\t\t\t\ttype: 'POST',\r\n\t\t\t\t\tcontentType: \"application/json; charset=utf-8\",\r\n\t\t\t\t\tdata: data,\r\n\t\t\t\t\tsuccess: function (result) {\r\n\t\t\t\t\t\tconsole.log('result', result);\r\n\r\n\t\t\t\t\t\tif (result.IsError !== false) {\r\n\t\t\t\t\t\t\t$this.off('click');\r\n\t\t\t\t\t\t\t$this.parents('tr').find('.notSumbittedMsg').remove();\r\n\t\t\t\t\t\t\t$this.remove();\r\n\r\n\t\t\t\t\t\t\tSwal.fire({\r\n\t\t\t\t\t\t\t\ticon: \"success\",\r\n\t\t\t\t\t\t\t\tshowCloseButton: true,\r\n\t\t\t\t\t\t\t\ttitle: 'Approval Requested!',\r\n\t\t\t\t\t\t\t\tshowConfirmButton: false,\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tSwal.fire({\r\n\t\t\t\t\t\t\t\ticon: \"error\",\r\n\t\t\t\t\t\t\t\tshowCloseButton: true,\r\n\t\t\t\t\t\t\t\ttitle: 'Event Approval Request Failed',\r\n\t\t\t\t\t\t\t\tshowConfirmButton: false,\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tvar theTable,\r\n\t\tignoreHeading,\r\n\t\tuseUTC;\r\n\r\n\tfunction swEventsUtilTableSortrInit(opts) {\r\n\t\topts = opts || {};\r\n\t\ttheTable = opts.tableSelector || 'table.sortable';\r\n\t\tignoreHeading = opts.ignoreHeading || '.sortIgnore';\r\n\t\tswEventsUtilTableSortrSetup();\r\n\t}\r\n\r\n\tfunction swEventsUtilTableSortrSetup() {\r\n\t\t$(theTable).each(function () {\r\n\t\t\t$(this).find('thead th').not(ignoreHeading).on('click', function () {\r\n\t\t\t\tvar $this = $(this),\r\n\t\t\t\t\tcolIdx = $this.index(),\r\n\t\t\t\t\ttoSort = [],\r\n\t\t\t\t\tcurTblBod = $this.parents('table').find('tbody'),\r\n\t\t\t\t\tnewTblBod = $('');\r\n\r\n\t\t\t\tif ($(this).attr('data-utc')) {\r\n\t\t\t\t\tuseUTC = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$this.toggleClass('toggle');\r\n\r\n\t\t\t\tcurTblBod.find('tr').each(function (k, v) {\r\n\t\t\t\t\tif (useUTC === true) {\r\n\t\t\t\t\t\ttoSort.push([$(this).children('td').eq(colIdx).attr('data-utc'), $(this).index()]);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\ttoSort.push([$(this).children('td').eq(colIdx).text(), $(this).index()]);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\ttoSort.sort();\r\n\r\n\t\t\t\tif ($(theTable).data('sorted') === 'descending') {\r\n\t\t\t\t\ttoSort.reverse();\r\n\t\t\t\t\t$(theTable).data('sorted', 'ascending');\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$(theTable).data('sorted', 'descending');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconsole.log($(theTable).data('sorted'));\r\n\t\t\t\tconsole.log(\"toSort: \", toSort);\r\n\r\n\t\t\t\t$.each(toSort, function (k, v) {\r\n\t\t\t\t\tcurTblBod.find('tr').eq(v[1]).clone(true).appendTo(newTblBod);\r\n\t\t\t\t});\r\n\t\t\t\tcurTblBod.replaceWith(newTblBod);\r\n\t\t\t});\r\n\t\t});\r\n\t};\r\n\r\n\t$('.view-past-events').on('click', function (e) {\r\n\t\te.preventDefault();\r\n\t\t$.ajax({\r\n\t\t\turl: getpastevents,\r\n\t\t\ttype: 'POST',\r\n\t\t\tbeforeSend: function () {\r\n\t\t\t\t$('.view-past-events').text('Loading past events...');\r\n\t\t\t}\r\n\t\t})\r\n\t\t\t.success(function (result) {\r\n\t\t\t\t$('.pastEventList').html(result);\r\n\t\t\t\tconsole.log('success');\r\n\t\t\t\tswEventsUtilTableSortrInit({\r\n\t\t\t\t\ttableSelector: 'table'\r\n\t\t\t\t})\r\n\r\n\t\t\t\tlet el = document.querySelector('.pastEventList.listing table');\r\n\t\t\t\tif (el === null) { return }\r\n\t\t\t\tinit(el);\r\n\t\t\t})\r\n\t\t\t.error(function (status) {\r\n\t\t\t\t$('.view-past-events').text('Failed to load past events');\r\n\t\t\t\tconsole.log(status);\r\n\t\t\t});\r\n\t});\r\n}());\r\n","//on page load, call function\r\n$(document).ready(function () {\r\n\tif ($('.masterEventListing').length) {\r\n\t\teventListing();\r\n\t\t$('body').addClass('loaded');\r\n\t}\r\n});\r\n\r\nfunction eventListing() {\r\n\tvar map,\r\n\t\tmarkers = [];\r\n\r\n\tswEventsUtilPointsBreakInit();\r\n\tswEventsUtilJQueryExtendsKThen();\r\n\tmap = new google.maps.Map(document.getElementById('map'), {\r\n\t\tcenter: { lat: 39.5, lng: -98.35 },\r\n\t\tzoom: 1,\r\n\t\tscrollwheel: false,\r\n\t\tmapTypeControl: false\r\n\t});\r\n\r\n\t$('.map').addClass('notLoaded');\r\n\r\n\tswEventsUtilPointsBreakInit({\r\n\t\t'W>0': function () { map.setCenter({ lat: 39.5, lng: -98.35 }); },\r\n\t\t'W<601': function () { map.setZoom(2); },\r\n\t\t'W>601&&W<900': function () { map.setZoom(3); },\r\n\t\t'W>900': function () { map.setZoom(4); }\r\n\t});\r\n\r\n\tswEventsUtilTableSortrInit({\r\n\t\ttableSelector: 'table',\r\n\t\tignoreHeading: 'table th:last-child, table th:nth-child(2)'\r\n\t});\r\n\r\n\tvar eventListMap = {\r\n\t\tdataArr: [],\r\n\t\teventsSort: {},\r\n\t\teventsClosestToUser: null,\r\n\t\tmapBoundsClosestToUser: null,\r\n\t\tmapBoundsAllMarkers: new google.maps.LatLngBounds(),\r\n\t\tsortedEventsPanel: document.getElementsByClassName('map-listing__list--sorted')[0],\r\n\t\tdetailedEventsPanel: document.getElementsByClassName('map-listing__detail')[0],\r\n\t\tcloseBtn: document.getElementsByClassName('map-listing__closeBtn')[0],\r\n\t\tgeoLocaterBtn: document.getElementsByClassName('map-listing__goLocBtn')[0],\r\n\t\tloadingOverlay: document.getElementsByClassName('events-map__overlay')[0],\r\n\t\terrorModal: document.getElementsByClassName('events-map__errorModal')[0],\r\n\t\tmapListingNav: document.getElementsByClassName('map-listing__nav')[0],\r\n\t\tmapListingWrapper: document.getElementsByClassName('map-listing__listWrapper')[0],\r\n\t\tdictionary: {\r\n\t\t\tnoLocationsFound: 'Unable to find events near your location',\r\n\t\t\tpermissionIssue: 'Geolocation settings are disabled for this browser. Please update your settings to use this feature'\r\n\t\t}\r\n\t}\r\n\tfunction eventListMapInit() { // copy data from fallback event listing markup\r\n\t\tvar eventListingTableData = document.getElementsByClassName('event');\r\n\r\n\t\tfor (var i = 0; i < eventListingTableData.length; i++) {\r\n\t\t\tvar eventProfile = new Object,\r\n\t\t\t\ttableInfo = eventListingTableData[i].querySelectorAll('[data-head]');\r\n\r\n\t\t\teventProfile.social = new Array;\r\n\r\n\t\t\tfor (var j = 0; j < eventListingTableData[i].attributes.length; j++) {\r\n\t\t\t\teventProfile[eventListingTableData[i].attributes[j].name] = eventListingTableData[i].attributes[j].value;\r\n\t\t\t}\r\n\r\n\t\t\tfor (var l = 0; l < tableInfo.length; l++) {\r\n\t\t\t\tif (tableInfo[l].dataset.head === 'Event Date') {\r\n\t\t\t\t\tfor (var propVal in tableInfo[l].dataset) {\r\n\t\t\t\t\t\teventProfile[propVal.toLowerCase()] = tableInfo[l].dataset[propVal];\r\n\t\t\t\t\t}\r\n\t\t\t\t\teventProfile.formattedDate = tableInfo[l].textContent;\r\n\t\t\t\t} else if (tableInfo[l].dataset.head === 'Share') {\r\n\t\t\t\t\tvar socialItems = tableInfo[l].getElementsByClassName('social');\r\n\t\t\t\t\tfor (var f = 0; f < socialItems.length; f++) {\r\n\t\t\t\t\t\teventProfile.social.push([socialItems[f].getAttribute('href'), socialItems[f].textContent]);\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\teventProfile[tableInfo[l].dataset.head.toLowerCase()] = tableInfo[l].textContent;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\teventListMap.dataArr.push(eventProfile);\r\n\t\t}\r\n\r\n\t\teventListMapMergeDuplicateEvtData();\r\n\t\teventListMapRenderListing(eventListMap.eventsSort.dateAscending);\r\n\t\teventListMapCreateEvtListItems(eventListMap.eventsSort.dateAscending);\r\n\t}\r\n\r\n\tfunction eventListMapMergeDuplicateEvtData() {\r\n\t\t// filter through events using the same lat long coordinates and merge them into a single object\r\n\t\tvar duplicateCoordinates = eventListMapFindDuplicateLatLong(),\r\n\t\t\tuniqueEvents = [],\r\n\t\t\tduplicateEvents = [],\r\n\t\t\tbaseArr = [];\r\n\r\n\t\tfor (var i = 0; i < eventListMap.dataArr.length; i++) {\r\n\t\t\tvar duplicatesFound = 0;\r\n\r\n\t\t\tfor (var k = 0; k < duplicateCoordinates.length; k++) {\r\n\t\t\t\tif (eventListMapLatLongCompare([eventListMap.dataArr[i]['data-lat'], eventListMap.dataArr[i]['data-long']], duplicateCoordinates[k])) duplicatesFound++;\r\n\t\t\t}\r\n\t\t\tif (duplicatesFound == 0) {\r\n\t\t\t\tuniqueEvents.push(eventListMap.dataArr[i]);\r\n\t\t\t} else {\r\n\t\t\t\tduplicateEvents.push(eventListMap.dataArr[i]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tvar mergedArr = baseArr.concat(uniqueEvents);\r\n\r\n\t\tfor (var j = 0; j < duplicateCoordinates.length; j++) {\r\n\t\t\tvar evtContainer = new Object;\r\n\t\t\tevtContainer.events = new Array;\r\n\r\n\t\t\tfor (var t = 0; t < duplicateEvents.length; t++) {\r\n\t\t\t\tif (eventListMapLatLongCompare(duplicateCoordinates[j], [duplicateEvents[t]['data-lat'], duplicateEvents[t]['data-long']])) evtContainer.events.push(duplicateEvents[t]);\r\n\t\t\t}\r\n\r\n\t\t\teventListMapSortByDate(evtContainer.events);\r\n\r\n\t\t\tevtContainer['event name'] = evtContainer.events[0]['event name'];\r\n\t\t\tevtContainer['data-lat'] = evtContainer.events[0]['data-lat'];\r\n\t\t\tevtContainer['data-long'] = evtContainer.events[0]['data-long'];\r\n\t\t\tevtContainer['formattedDate'] = evtContainer.events[0]['formattedDate'];\r\n\t\t\tevtContainer['presentation time'] = evtContainer.events[0]['presentation time'];\r\n\t\t\tevtContainer['state'] = evtContainer.events[0]['state'];\r\n\t\t\tevtContainer['city'] = evtContainer.events[0]['city'];\r\n\t\t\tmergedArr.push(evtContainer);\r\n\t\t}\r\n\r\n\t\teventListMap.eventsSort.dateAscending = eventListMapSortByDate(mergedArr.slice());\r\n\t\teventListMap.eventsSort.dateDescending = eventListMapSortByDate(mergedArr.slice()).reverse();\r\n\t\teventListMap.eventsSort.stateAscending = eventListMapSortByAlpha(mergedArr.slice(), 'state');\r\n\t\teventListMap.eventsSort.stateDescending = eventListMapSortByAlpha(mergedArr.slice(), 'state').reverse();\r\n\t}\r\n\r\n\tfunction eventListMapRenderListing(eventArrData) {\r\n\t\tvar sortedEventsPanel = document.getElementsByClassName('map-listing__list--sorted')[0];\r\n\t\tsortedEventsPanel.innerHTML = '';\r\n\r\n\t\tif (eventArrData.length === 0) {\r\n\t\t\teventListMap.mapListingNav.style.display = 'none';\r\n\t\t\tsortedEventsPanel.style.display = 'none';\r\n\r\n\t\t\tvar msgContainer = document.createElement('div');\r\n\t\t\tvar msg = document.createElement('p');\r\n\t\t\tmsg.textContent = 'There are no events scheduled at this time.';\r\n\r\n\t\t\tmsgContainer.appendChild(msg);\r\n\t\t\tvar mapListingWrapper = document.getElementsByClassName('map-listing__listWrapper')[0];\r\n\t\t\tmapListingWrapper.appendChild(msgContainer);\r\n\r\n\t\t\tmsgContainer.setAttribute('class', 'map-listing__message');\r\n\r\n\t\t\teventListMapShowLoadingOverlay(false);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tfor (var i = 0; i < eventArrData.length; i++) {\r\n\t\t\t\tvar listItem = document.createElement('li'),\r\n\t\t\t\t\tevtName = document.createElement('h2'),\r\n\t\t\t\t\tevtTime = document.createElement('time'),\r\n\t\t\t\t\tevtLocation = document.createElement('p'),\r\n\t\t\t\t\ttimeText = eventArrData[i].hasOwnProperty('events') ? \"Multiple Events\" : (eventArrData[i]['formattedDate'] + ', ' + eventArrData[i]['presentation time']),\r\n\t\t\t\t\taddressValue;\r\n\r\n\t\t\t\tevtName.appendChild(document.createTextNode(eventArrData[i]['event name']));\r\n\t\t\t\tevtName.setAttribute('class', 'map-listing__name');\r\n\r\n\t\t\t\tevtTime.appendChild(document.createTextNode(timeText));\r\n\t\t\t\tevtTime.setAttribute('class', 'map-listing__time');\r\n\r\n\t\t\t\tif (eventArrData[i]['city'].length > 0 && eventArrData[i]['state'].length > 0) {\r\n\t\t\t\t\taddressValue = document.createTextNode(eventArrData[i]['city'] + ', ' + eventArrData[i]['state']);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\taddressValue = document.createTextNode(eventArrData[i]['city'] + ' ' + eventArrData[i]['state']);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tevtLocation.appendChild(addressValue);\r\n\t\t\t\tevtLocation.setAttribute('class', 'map-listing__location');\r\n\r\n\t\t\t\tlistItem.appendChild(evtName);\r\n\t\t\t\tlistItem.appendChild(evtTime);\r\n\t\t\t\tlistItem.appendChild(evtLocation);\r\n\r\n\t\t\t\tlistItem.setAttribute('class', 'map-listing__item map-listing__item--sorted');\r\n\t\t\t\tlistItem.setAttribute('data-lat', eventArrData[i]['data-lat']);\r\n\t\t\t\tlistItem.setAttribute('data-long', eventArrData[i]['data-long']);\r\n\t\t\t\tlistItem.setAttribute('tabindex', 0);\r\n\r\n\t\t\t\tsortedEventsPanel.appendChild(listItem);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction eventListMapCreateEvtListItems(eventArrData) {\r\n\t\tvar detailedEvtList = document.getElementsByClassName('map-listing__list--detailed')[0],\r\n\t\t\tgenerateMarkup = function (data) {\r\n\t\t\t\tvar days = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\r\n\t\t\t\t\tlistItem = document.createElement('li'),\r\n\t\t\t\t\tevtWrapper = document.createElement('dl'),\r\n\t\t\t\t\tevtName = document.createElement('dt'),\r\n\t\t\t\t\tevtAddressWrapper = document.createElement('dd'),\r\n\t\t\t\t\tevtAddress1 = document.createElement('span'),\r\n\t\t\t\t\tevtAddress2 = document.createElement('span'),\r\n\t\t\t\t\tevtDate = document.createElement('dd'),\r\n\t\t\t\t\tevtPresentTime = null,\r\n\t\t\t\t\tevtNetworkTime = null,\r\n\t\t\t\t\tevtSocialMediaContainer = document.createElement('ul'),\r\n\t\t\t\t\tevtRegister = document.createElement('p'),\r\n\t\t\t\t\tevtRegisterLink = document.createElement('a'),\r\n\t\t\t\t\taddressValue;\r\n\r\n\t\t\t\tif (data['city'].length > 0 && data['state'].length > 0) {\r\n\t\t\t\t\taddressValue = document.createTextNode(data['city'] + ', ' + data['state'] + ' ' + data['zip']);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\taddressValue = document.createTextNode(data['city'] + ' ' + data['state'] + ' ' + data['zip']);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tevtName.appendChild(document.createTextNode(data['event name']));\r\n\t\t\t\tevtName.setAttribute('class', 'map-listing__evtName');\r\n\r\n\t\t\t\tevtAddress1.appendChild(document.createTextNode(data['address']));\r\n\t\t\t\tevtAddress2.appendChild(addressValue);\r\n\t\t\t\tevtAddressWrapper.appendChild(evtAddress1);\r\n\t\t\t\tevtAddressWrapper.appendChild(evtAddress2);\r\n\t\t\t\tevtAddressWrapper.setAttribute('class', 'map-listing__info map-listing__info--evtAddress');\r\n\r\n\t\t\t\tvar dayOfEvt = new Date(data['formattedDate']).getDay();\r\n\t\t\t\tdayOfEvt = days[dayOfEvt];\r\n\r\n\t\t\t\tevtDate.appendChild(document.createTextNode(dayOfEvt + ', ' + data['formattedDate']));\r\n\t\t\t\tevtDate.setAttribute('class', 'map-listing__info map-listing__info--evtDate');\r\n\r\n\t\t\t\tif (data.hasOwnProperty('networking time') && data['networking time'] !== '') {\r\n\t\t\t\t\tevtNetworkTime = document.createElement('dd');\r\n\t\t\t\t\tevtNetworkTime.appendChild(document.createTextNode('Networking: ' + data['networking time']));\r\n\t\t\t\t\tevtNetworkTime.setAttribute('class', 'map-listing__info map-listing__info--evtNetwork');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (data.hasOwnProperty('presentation time') && data['presentation time'] !== '') {\r\n\t\t\t\t\tevtPresentTime = document.createElement('dd'),\r\n\t\t\t\t\t\tevtPresentTime.appendChild(document.createTextNode('Presentation: ' + data['presentation time']));\r\n\t\t\t\t\tevtPresentTime.setAttribute('class', 'map-listing__info map-listing__info--evtPresentation');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (var i = 0; i < data.social.length; i++) {\r\n\t\t\t\t\tvar socialMediaItem = document.createElement('li'),\r\n\t\t\t\t\t\tsocialMediaLink = document.createElement('a');\r\n\r\n\t\t\t\t\tsocialMediaLink.appendChild(document.createTextNode(data.social[i][1]));\r\n\t\t\t\t\tsocialMediaLink.setAttribute('href', data.social[i][0]);\r\n\t\t\t\t\tsocialMediaItem.appendChild(socialMediaLink);\r\n\t\t\t\t\tsocialMediaItem.setAttribute('class', 'map-listing__info map-listing__info--evtSocialItem icon social');\r\n\t\t\t\t\tevtSocialMediaContainer.appendChild(socialMediaItem);\r\n\t\t\t\t\tevtSocialMediaContainer.setAttribute('class', 'map-listing__evtSocial');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tevtRegisterLink.appendChild(document.createTextNode('Register for Event'));\r\n\t\t\t\tevtRegisterLink.setAttribute('href', data['data-event-reg']);\r\n\t\t\t\tevtRegister.appendChild(evtRegisterLink);\r\n\t\t\t\tevtRegister.setAttribute('class', 'map-listing__register');\r\n\r\n\t\t\t\tevtWrapper.appendChild(evtName);\r\n\t\t\t\tevtWrapper.appendChild(evtAddressWrapper);\r\n\t\t\t\tevtWrapper.appendChild(evtDate);\r\n\r\n\t\t\t\tif (evtNetworkTime != null) evtWrapper.appendChild(evtNetworkTime);\r\n\t\t\t\tif (evtPresentTime != null) evtWrapper.appendChild(evtPresentTime);\r\n\r\n\t\t\t\tevtWrapper.appendChild(evtSocialMediaContainer);\r\n\t\t\t\tevtWrapper.appendChild(evtRegister);\r\n\t\t\t\tevtWrapper.setAttribute('class', 'map-listing__evtDetails');\r\n\r\n\t\t\t\tlistItem.appendChild(evtWrapper);\r\n\t\t\t\tlistItem.setAttribute('class', 'map-listing__item map-listing__item--detail');\r\n\t\t\t\tlistItem.setAttribute('data-lat', data['data-lat']);\r\n\t\t\t\tlistItem.setAttribute('data-long', data['data-long']);\r\n\r\n\t\t\t\tdetailedEvtList.appendChild(listItem);\r\n\r\n\t\t\t\teventListMap.mapBoundsAllMarkers.extend({\r\n\t\t\t\t\tlat: Number(data['data-lat']),\r\n\t\t\t\t\tlng: Number(data['data-long'])\r\n\t\t\t\t});\r\n\t\t\t};\r\n\r\n\t\tfor (var i = 0; i < eventArrData.length; i++) {\r\n\t\t\tif (eventArrData[i].hasOwnProperty('events')) {\r\n\t\t\t\tfor (var k = 0; k < eventArrData[i].events.length; k++) {\r\n\t\t\t\t\tgenerateMarkup(eventArrData[i].events[k]);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tgenerateMarkup(eventArrData[i]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\teventListMapEventListSort();\r\n\t\teventListMapFindUserLocation();\r\n\t\teventListMapCloseDetailedEvents();\r\n\t\teventListMapEventItemClickTrigger();\r\n\t\teventListMapErrorModalControl();\r\n\t}\r\n\r\n\tfunction eventListMapEventListSort() {\r\n\t\tvar sortOptions = document.getElementsByClassName('map-listing__sortListing')[0];\r\n\t\tsortOptions.addEventListener('change', function (e) {\r\n\t\t\tvar sortType = sortOptions.children[sortOptions.selectedIndex].getAttribute('data-sort'),\r\n\t\t\t\tcurrentSortType = sortOptions.getAttribute('data-currentSort');\r\n\r\n\t\t\tif (currentSortType === sortType) return;\r\n\r\n\t\t\teventListMapRenderListing(eventListMap.eventsSort[sortType]);\r\n\t\t\tsortOptions.setAttribute('data-currentSort', sortType);\r\n\t\t});\r\n\t}\r\n\r\n\tfunction eventListMapFindDuplicateLatLong() {\r\n\t\t// search through scrapped event data and hunt for multiple occurrences of \r\n\t\t// lat and long coordinates. store them into an array to later merge into one object\r\n\t\tvar allLatLong = [],\r\n\t\t\tduplicateLatLong = [];\r\n\r\n\t\t// get all event lat long coordinates\r\n\t\tfor (var i = 0; i < eventListMap.dataArr.length; i++) {\r\n\t\t\tvar itemCoordinates = [eventListMap.dataArr[i]['data-lat'], eventListMap.dataArr[i]['data-long']];\r\n\t\t\tallLatLong.push(itemCoordinates);\r\n\t\t}\r\n\r\n\t\tvar comparisonArr = allLatLong.slice();\r\n\r\n\t\tfor (var j = 0; j < allLatLong.length; j++) {\r\n\t\t\tvar instanceCounter = 0;\r\n\r\n\t\t\tfor (var t = 0; t < comparisonArr.length; t++) {\r\n\t\t\t\t// check how many times each lat long coordinate appears in the duplicate array\r\n\t\t\t\tif (eventListMapLatLongCompare(allLatLong[j], comparisonArr[t])) instanceCounter++;\r\n\t\t\t}\r\n\r\n\t\t\t// if the lat long coordinate appears more than once...\r\n\t\t\tif (instanceCounter > 1) {\r\n\t\t\t\tif (duplicateLatLong.length >= 1) {\r\n\t\t\t\t\t// if the duplicateLatLong array isn't empty, check to see if the lat long coordinate you want to place in there already exists\r\n\t\t\t\t\tvar intsCounter = 0;\r\n\t\t\t\t\tfor (var z = 0; z < duplicateLatLong.length; z++) {\r\n\t\t\t\t\t\tif (eventListMapLatLongCompare(allLatLong[j], duplicateLatLong[z])) intsCounter++;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t// if it doesn't, go ahead and push\r\n\t\t\t\t\tif (intsCounter == 0) duplicateLatLong.push([allLatLong[j][0], allLatLong[j][1]]);\r\n\t\t\t\t} else if (duplicateLatLong.length == 0) {\r\n\t\t\t\t\t// if there are no lat long coordinates in the duplicate lat long array, push it right away\r\n\t\t\t\t\tduplicateLatLong.push([allLatLong[j][0], allLatLong[j][1]]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn duplicateLatLong;\r\n\t}\r\n\r\n\tfunction eventListMapFindUserLocation() {\r\n\t\tif ('geolocation' in navigator) {\r\n\t\t\teventListMap.geoLocaterBtn.addEventListener('click', function () {\r\n\t\t\t\teventListMapShowLoadingOverlay(true);\r\n\r\n\t\t\t\tif (eventListMap.eventsClosestToUser != null) {\r\n\t\t\t\t\t// if the user had already clicked for nearby events, show them the saved data, instead of making another request\r\n\t\t\t\t\teventListMapShowDetailedEvents(eventListMap.eventsClosestToUser)\r\n\t\t\t\t\tmap.fitBounds(eventListMap.mapBoundsClosestToUser);\r\n\t\t\t\t\teventListMapShowLoadingOverlay(false);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// otherwise, make the request to use the distance matrix api\r\n\t\t\t\t\tvar service = new google.maps.DistanceMatrixService;\r\n\t\t\t\t\tnavigator.geolocation.getCurrentPosition(function (position) {\r\n\r\n\t\t\t\t\t\tvar userLatLng = {\r\n\t\t\t\t\t\t\tlat: Number(position.coords.latitude.toFixed(6)),\r\n\t\t\t\t\t\t\tlng: Number(position.coords.longitude.toFixed(6))\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tformatEventsLatLng = eventListMap.eventsSort.dateAscending.map(function (x) {\r\n\t\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\t\tlat: Number(x['data-lat']),\r\n\t\t\t\t\t\t\t\t\tlng: Number(x['data-long'])\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tservice.getDistanceMatrix({\r\n\t\t\t\t\t\t\torigins: [userLatLng],\r\n\t\t\t\t\t\t\tdestinations: formatEventsLatLng,\r\n\t\t\t\t\t\t\ttravelMode: 'DRIVING',\r\n\t\t\t\t\t\t\tunitSystem: google.maps.UnitSystem.METRIC,\r\n\t\t\t\t\t\t\tavoidHighways: false,\r\n\t\t\t\t\t\t\tavoidTolls: false\r\n\t\t\t\t\t\t}, function (response, status) {\r\n\t\t\t\t\t\t\tif (status !== 'OK') {\r\n\t\t\t\t\t\t\t\terror.log('Error was: ' + status);\r\n\t\t\t\t\t\t\t\teventListMapShowErrorModal(true, eventListMap.dictionary.noLocationsFound);\r\n\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\tvar destinationList = response.rows[0].elements,\r\n\t\t\t\t\t\t\t\t\tmiles50 = 80467.2,\r\n\t\t\t\t\t\t\t\t\tmiles100 = 160934,\r\n\t\t\t\t\t\t\t\t\teventsIn50 = [],\r\n\t\t\t\t\t\t\t\t\teventsIn100 = [];\r\n\r\n\t\t\t\t\t\t\t\tvar modifiedEventsArr = eventListMap.eventsSort.dateAscending.slice();\r\n\r\n\t\t\t\t\t\t\t\tfor (var i = 0; i < destinationList.length; i++) {\r\n\t\t\t\t\t\t\t\t\tif (destinationList[i].status === 'OK') {\r\n\t\t\t\t\t\t\t\t\t\tvar latLongCopy = [modifiedEventsArr[i]['data-lat'], modifiedEventsArr[i]['data-long']];\r\n\r\n\t\t\t\t\t\t\t\t\t\tif (destinationList[i].distance.value <= miles50) eventsIn50.push(latLongCopy);\r\n\t\t\t\t\t\t\t\t\t\tif (destinationList[i].distance.value <= miles100) eventsIn100.push(latLongCopy);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tvar convertedEventsLatLng = null,\r\n\t\t\t\t\t\t\t\t\tmapClosestEvents = function (arr) {\r\n\t\t\t\t\t\t\t\t\t\teventListMap.eventsClosestToUser = arr;\r\n\t\t\t\t\t\t\t\t\t\teventListMapShowDetailedEvents(arr);\r\n\t\t\t\t\t\t\t\t\t\tconvertedEventsLatLng = arr.map(function (x) {\r\n\t\t\t\t\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\t\t\t\t\tlat: Number(x[0]),\r\n\t\t\t\t\t\t\t\t\t\t\t\tlng: Number(x[1])\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tif (eventsIn50.length > 0) {\r\n\t\t\t\t\t\t\t\t\tmapClosestEvents(eventsIn50);\r\n\t\t\t\t\t\t\t\t} else if (eventsIn100.length > 0) {\r\n\t\t\t\t\t\t\t\t\tmapClosestEvents(eventsIn100);\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\teventListMapShowErrorModal(true, eventListMap.dictionary.noLocationsFound);\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tif (convertedEventsLatLng != null) {\r\n\t\t\t\t\t\t\t\t\t// create a new instance for map bounds\r\n\t\t\t\t\t\t\t\t\tvar newMapBounds = new google.maps.LatLngBounds();\r\n\r\n\t\t\t\t\t\t\t\t\tfor (var i = 0; i < convertedEventsLatLng.length; i++) {\r\n\t\t\t\t\t\t\t\t\t\tnewMapBounds.extend(convertedEventsLatLng[i]);\r\n\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t// we'll use this to center the map around the closest events in case the user decides to use the geolocation service again\r\n\t\t\t\t\t\t\t\t\teventListMap.mapBoundsClosestToUser = newMapBounds;\r\n\t\t\t\t\t\t\t\t\tmap.fitBounds(newMapBounds);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\teventListMapShowLoadingOverlay(false);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}, function (error) {\r\n\t\t\t\t\t\tif (error.code === 1) {\r\n\t\t\t\t\t\t\t// if the user denies permission to use geolocation...\r\n\t\t\t\t\t\t\teventListMapShowLoadingOverlay(false);\r\n\t\t\t\t\t\t\teventListMapShowErrorModal(true, eventListMap.dictionary.permissionIssue);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\teventListMap.geoLocaterBtn.style.display = 'none';\r\n\t\t}\r\n\t}\r\n\r\n\tfunction eventListMapCloseDetailedEvents() {\r\n\t\teventListMap.closeBtn.addEventListener('click', function () {\r\n\t\t\tif (window.matchMedia(\"(max-width: 60.625em)\").matches) document.documentElement.classList.remove('map-active');\r\n\r\n\t\t\teventListMap.detailedEventsPanel.classList.remove('map-listing__detail--show');\r\n\r\n\t\t\tmap.fitBounds(eventListMap.mapBoundsAllMarkers);\r\n\t\t});\r\n\t}\r\n\r\n\tfunction eventListMapEventItemClickTrigger() {\r\n\t\tvar eventsArr = ['click', 'keypress'];\r\n\r\n\t\tfor (var i = 0; i < eventsArr.length; i++) {\r\n\t\t\teventListMap.sortedEventsPanel.addEventListener(eventsArr[i], function (e) {\r\n\t\t\t\tif (e.type == 'keypress') {\r\n\t\t\t\t\tif (e.keyCode != 13 || e.which != 13) return;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar item;\r\n\r\n\t\t\t\tif (e.target.classList.contains('map-listing__list')) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t} else if (e.target.classList.contains('map-listing__item')) {\r\n\t\t\t\t\titem = e.target;\r\n\t\t\t\t} else {\r\n\t\t\t\t\titem = e.target.parentNode;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar latLong = [Number(item.getAttribute('data-lat')), Number(item.getAttribute('data-long'))];\r\n\r\n\t\t\t\tif (window.matchMedia(\"(min-width: 60.625em)\").matches) {\r\n\t\t\t\t\tmap.setCenter({ lat: latLong[0], lng: latLong[1] });\r\n\t\t\t\t\tmap.setZoom(8);\r\n\t\t\t\t}\r\n\r\n\t\t\t\teventListMapShowDetailedEvents([latLong]);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tfunction eventListMapShowDetailedEvents(arrlatLong) {\r\n\t\tif (eventListMap.detailedEventsPanel.classList.contains('map-listing__detail--show') === false) {\r\n\t\t\tif (window.matchMedia(\"(max-width: 60.625em)\").matches) document.documentElement.classList.add('map-active');\r\n\r\n\t\t\teventListMap.detailedEventsPanel.classList.add('map-listing__detail--show');\r\n\t\t}\r\n\r\n\t\tvar detailedEvtItems = document.getElementsByClassName('map-listing__item--detail');\r\n\r\n\t\tif (arrlatLong.length === 1) {\r\n\t\t\tfor (var i = 0; i < detailedEvtItems.length; i++) {\r\n\t\t\t\tvar itemLatLong = [detailedEvtItems[i].getAttribute('data-lat'), detailedEvtItems[i].getAttribute('data-long')];\r\n\t\t\t\tif (eventListMapLatLongCompare(arrlatLong[0], itemLatLong)) {\r\n\t\t\t\t\tdetailedEvtItems[i].classList.add('map-listing__item--show');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tdetailedEvtItems[i].classList.remove('map-listing__item--show');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tfor (var i = 0; i < detailedEvtItems.length; i++) {\r\n\t\t\t\tdetailedEvtItems[i].classList.remove('map-listing__item--show');\r\n\t\t\t\tvar itemLatLong = [detailedEvtItems[i].getAttribute('data-lat'), detailedEvtItems[i].getAttribute('data-long')];\r\n\t\t\t\tfor (var j = 0; j < arrlatLong.length; j++) {\r\n\t\t\t\t\tif (eventListMapLatLongCompare(arrlatLong[j], itemLatLong)) {\r\n\t\t\t\t\t\tdetailedEvtItems[i].classList.add('map-listing__item--show');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tfunction eventListMapShowLoadingOverlay(boolean) {\r\n\t\tif (boolean) {\r\n\t\t\teventListMap.loadingOverlay.classList.remove('events-map__overlay--hide');\r\n\t\t} else {\r\n\t\t\teventListMap.loadingOverlay.classList.add('events-map__overlay--hide');\r\n\t\t}\r\n\t}\r\n\r\n\tfunction eventListMapErrorModalControl() {\r\n\t\tvar closeBtn = eventListMap.errorModal.getElementsByClassName('events-map__modalBtn')[0];\r\n\r\n\t\tcloseBtn.addEventListener('click', function () {\r\n\t\t\teventListMapShowErrorModal(false);\r\n\t\t});\r\n\t}\r\n\r\n\tfunction eventListMapShowErrorModal(boolean, errorMsg) {\r\n\t\tvar modal = eventListMap.errorModal,\r\n\t\t\tmsg = modal.getElementsByClassName('events-map__warning')[0];\r\n\r\n\t\tif (boolean) {\r\n\t\t\tmodal.classList.add('events-map__errorModal--show');\r\n\t\t\tmsg.textContent = errorMsg;\r\n\t\t} else {\r\n\t\t\tmodal.classList.remove('events-map__errorModal--show');\r\n\t\t\tmsg.textContent = '';\r\n\t\t}\r\n\t}\r\n\r\n\tfunction eventListMapSortByAlpha(arr, property) {\r\n\t\tarr.sort(function (a, b) {\r\n\t\t\tvar itemA = a[property];\r\n\t\t\tvar itemB = b[property];\r\n\t\t\tif (itemA < itemB) {\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\t\t\tif (itemA > itemB) {\r\n\t\t\t\treturn 1;\r\n\t\t\t}\r\n\r\n\t\t\treturn 0;\r\n\t\t});\r\n\r\n\t\treturn arr;\r\n\t}\r\n\r\n\tfunction eventListMapSortByDate(arr) {\r\n\t\tarr.sort(function (a, b) {\r\n\t\t\tvar evtDate1 = new Date(a.formattedDate).getTime(),\r\n\t\t\t\tevtDate2 = new Date(b.formattedDate).getTime();\r\n\r\n\t\t\tif (evtDate1 == evtDate2) {\r\n\t\t\t\tvar evtTime1 = new Date(a['presentation Time']).getTime(),\r\n\t\t\t\t\tevtTime2 = new Date(b['presentation Time']).getTime()\r\n\r\n\t\t\t\treturn evtTime1 - evtTime2;\r\n\t\t\t}\r\n\r\n\t\t\treturn evtDate1 - evtDate2;\r\n\t\t});\r\n\r\n\t\treturn arr;\r\n\t}\r\n\r\n\tfunction eventListMapLatLongCompare(coordinates1, coordinates2) {\r\n\t\treturn (Number(coordinates1[0]) === Number(coordinates2[0]) && Number(coordinates1[1]) === Number(coordinates2[1]));\r\n\t}\r\n\r\n\t$('td[data-head=\"Address\"]').each(function (k, v) {\r\n\t\tvar $this = $(this),\r\n\t\t\tmyEvent = $this.parent('tr'),\r\n\t\t\tmyLocation = myEvent.data('address'),\r\n\t\t\tlatlong,\r\n\t\t\tmyEventName = myEvent.find('[data-head=\"Event Name\"]').text(),\r\n\t\t\tmySummary = '' + myEvent.find('[data-head=\"Event Name\"]').text() + ' - ' + myEvent.find('[data-head=\"Date\"]').text() + '
    ' + myEvent.data('address') + '
    Click here to register for this event',\r\n\t\t\tinfowindow = new google.maps.InfoWindow({\r\n\t\t\t\tcontent: mySummary\r\n\t\t\t}),\r\n\t\t\teventCount = $('td[data-head=\"Address\"]').length - 1;\r\n\r\n\t\tif (myEvent.data('lat') === undefined || myEvent.data('lat') === '' || myEvent.data('long') === undefined || myEvent.data('long') === '') {\r\n\t\t\t// Limit to try and overcome Google's rate limit\r\n\t\t\tsetTimeout(function () {\r\n\t\t\t\tswEventsUtilGMapsHelpersGetLocationLatLong(myLocation, function (result) {\r\n\t\t\t\t\tmyEvent.data('lat', result.G).data('long', result.K);\r\n\t\t\t\t\tmyEvent.attr('data-lat', result.G).attr('data-long', result.K);\r\n\t\t\t\t\tswEventsUtilGMapsHelpersCreateMarker({\r\n\t\t\t\t\t\tmarkers: markers,\r\n\t\t\t\t\t\tmap: map,\r\n\t\t\t\t\t\tmarkerCount: k,\r\n\t\t\t\t\t\tlat: result.G,\r\n\t\t\t\t\t\tlng: result.K,\r\n\t\t\t\t\t\teventName: myEventName,\r\n\t\t\t\t\t\tinfo: infowindow,\r\n\t\t\t\t\t\tshowInfo: false\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t}, k * 250);\r\n\t\t} else {\r\n\t\t\tswEventsUtilGMapsHelpersCreateMarker({\r\n\t\t\t\tmarkers: markers,\r\n\t\t\t\tmap: map,\r\n\t\t\t\tmarkerCount: k,\r\n\t\t\t\tlat: myEvent.data('lat'),\r\n\t\t\t\tlng: myEvent.data('long'),\r\n\t\t\t\teventName: myEventName,\r\n\t\t\t\tinfo: infowindow,\r\n\t\t\t\tshowInfo: false,\r\n\t\t\t\tcustomEvent: function () {\r\n\t\t\t\t\tvar self = this,\r\n\t\t\t\t\t\tcoordinates = [self.lat, self.lng];\r\n\r\n\t\t\t\t\teventListMapShowDetailedEvents([coordinates]);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (k === eventCount) {\r\n\t\t\t$('.map').removeClass('notLoaded');\r\n\t\t\teventListMapShowLoadingOverlay(false);\r\n\t\t}\r\n\r\n\t\t$this.parent('tr').on('click', function () {\r\n\t\t\t//console.log('href: ', $(this).attr('data-event-reg'));\r\n\r\n\t\t\twindow.open($(this).attr('data-event-reg'));\r\n\t\t});\r\n\t});\r\n\r\n\teventListMapInit();\r\n};\r\n\r\nfunction swEventsUtilPointsBreakInit(context) {\r\n\tvar doIt;\r\n\tdoWork(context);\r\n\twindow.onresize = function () {\r\n\t\tclearTimeout(doIt);\r\n\t\tdoIt = setTimeout(function () { doWork(context); }, time);\r\n\t};\r\n\treturn this;\r\n}\r\n\r\nfunction doWork(context) {\r\n\tvar time = 200;\r\n\tvar W, H;\r\n\tvar andReg = /&&+/g;\r\n\tW = window.innerWidth || document.documentElement.clientWidth;\r\n\tH = window.innerHeight || document.documentElement.clientHeight;\r\n\tfor (var i in context) {\r\n\t\tif (i.charAt(0) === 'W' || i.charAt(0) === 'H') {\r\n\t\t\ti = i.replace(/\\s+/g, '').toUpperCase();\r\n\t\t\tvar f = 0,\r\n\t\t\t\tmyFunc = context[i];\r\n\t\t\tif (i.match(andReg) !== null) {\r\n\t\t\t\tvar tests = i.split(/&&/);\r\n\t\t\t\tfor (var x in tests) {\r\n\t\t\t\t\tif (tests[x].charAt(0) === 'W' || tests[x].charAt(0) === 'H') {\r\n\t\t\t\t\t\tif (breakPointTest(tests[x], W, H) === false) { f = false; }\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (f !== false) { runThis(myFunc(W, H)); }\r\n\t\t\t} else {\r\n\t\t\t\tif (breakPointTest(i, W, H)) { runThis(myFunc(W, H)); }\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction breakPointTest(bpTest, W, H) {\r\n\tvar type = bpTest.charAt(0) === 'W' ? W : H,\r\n\t\ttest = bpTest[1],\r\n\t\tdims = bpTest.split(bpTest.charAt(1))[1];\r\n\treturn test === '>' && type > dims || test === '<' && type < dims ? true : false;\r\n}\r\n\r\nfunction runThis(fin) {\r\n\tif (typeof fin === 'function') { fin(); }\r\n}\r\n\r\nfunction swEventsUtilJQueryExtendsKThen() {\r\n\tjQuery.fn.kThen = function (time, func, selector) {\r\n\t\tvar me = this, t = typeof time === 'function' ? 0 : time,\r\n\t\t\tf = typeof time === 'function' ? time : func; setTimeout(function () { if (typeof f === 'function') { f.apply(me); } }, t); return selector ? $(selector) : me;\r\n\t};\r\n}\r\n\r\nfunction swEventsUtilTableSortrInit(opts) {\r\n\tvar theTable, ignoreHeading, useUTC;\r\n\r\n\topts = opts || {};\r\n\ttheTable = opts.tableSelector || 'table.sortable';\r\n\tignoreHeading = opts.ignoreHeading || '.sortIgnore';\r\n\tswEventsUtilTableSortrInitSetup(theTable, ignoreHeading, useUTC);\r\n}\r\n\r\nfunction swEventsUtilTableSortrInitSetup(theTable, ignoreHeading, useUTC) {\r\n\t$(theTable).each(function () {\r\n\t\t$(this).find('thead th').not(ignoreHeading).on('click', function () {\r\n\t\t\tvar $this = $(this),\r\n\t\t\t\tcolIdx = $this.index(),\r\n\t\t\t\ttoSort = [],\r\n\t\t\t\tcurTblBod = $this.parents('table').find('tbody'),\r\n\t\t\t\tnewTblBod = $('');\r\n\r\n\t\t\tif ($(this).attr('data-utc')) {\r\n\t\t\t\tuseUTC = true;\r\n\t\t\t}\r\n\r\n\t\t\t$this.toggleClass('toggle');\r\n\r\n\t\t\tcurTblBod.find('tr').each(function (k, v) {\r\n\t\t\t\tif (useUTC === true) {\r\n\t\t\t\t\ttoSort.push([$(this).children('td').eq(colIdx).attr('data-utc'), $(this).index()]);\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttoSort.push([$(this).children('td').eq(colIdx).text(), $(this).index()]);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\ttoSort.sort();\r\n\r\n\t\t\tif ($(theTable).data('sorted') === 'descending') {\r\n\t\t\t\ttoSort.reverse();\r\n\t\t\t\t$(theTable).data('sorted', 'ascending');\r\n\t\t\t} else {\r\n\t\t\t\t$(theTable).data('sorted', 'descending');\r\n\t\t\t}\r\n\r\n\t\t\tconsole.log($(theTable).data('sorted'));\r\n\t\t\tconsole.log(\"toSort: \", toSort);\r\n\r\n\t\t\t$.each(toSort, function (k, v) {\r\n\t\t\t\tcurTblBod.find('tr').eq(v[1]).clone(true).appendTo(newTblBod);\r\n\t\t\t});\r\n\t\t\tcurTblBod.replaceWith(newTblBod);\r\n\t\t});\r\n\t});\r\n}\r\n\r\n\r\nfunction swEventsUtilGMapsHelpersGetLocationLatLong(address, cb) {\r\n\tvar latlong;\r\n\tjQuery.support.cors = true;\r\n\tvar geocoder = new google.maps.Geocoder();\r\n\r\n\tgeocoder.geocode({ 'address': address }, function (results, status) {\r\n\t\tif (status === 'OK') {\r\n\t\t\tlatlong = {\r\n\t\t\t\tlat: parseFloat(results[0].geometry.location.lat()),\r\n\t\t\t\tlng: parseFloat(results[0].geometry.location.lng())\r\n\t\t\t};\r\n\r\n\t\t\tcb(latlong);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tconsole.log(\"GMaps Geocode ERROR\");\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction swEventsUtilGMapsHelpersCreateMarker(opts) {\r\n\tswEventsUtilJQueryExtendsKThen();\r\n\topts.markers[opts.markerCount] = new google.maps.Marker({\r\n\t\tposition: {\r\n\t\t\tlat: parseFloat(opts.lat),\r\n\t\t\tlng: parseFloat(opts.lng)\r\n\t\t},\r\n\t\tmap: opts.map,\r\n\t\ttitle: opts.eventName\r\n\t});\r\n\tif (opts.showInfo === true) {\r\n\t\topts.markers[opts.markerCount].addListener('click', function () {\r\n\t\t\t$('html,body').animate({ scrollTop: $('.map').offset().top - 50 }, 200, function () {\r\n\t\t\t\topts.map.setZoom(8);\r\n\t\t\t\topts.map.setCenter(opts.markers[opts.markerCount].getPosition());\r\n\t\t\t\topts.info.open(opts.map, opts.markers[opts.markerCount]);\r\n\t\t\t});\r\n\t\t});\r\n\t} else if (opts.showInfo === false && typeof opts.customEvent === 'function') {\r\n\t\topts.markers[opts.markerCount].addListener('click', function () {\r\n\t\t\topts.map.setZoom(8);\r\n\t\t\topts.map.setCenter(opts.markers[opts.markerCount].getPosition());\r\n\t\t\topts.customEvent(opts.markers[opts.markerCount]);\r\n\t\t});\r\n\t}\r\n}","import moment from \"moment\";\r\n\r\n\tvar swEvents = {\r\n\t\tutil: {\r\n\t\t\tapiKeys: {\r\n\t\t\t\tgeocode: 'AIzaSyD4hXcwuj6uQm-eiarXpORcGGPi7oLKGkU',\r\n\t\t\t\tmap: 'AIzaSyBzq61x1o3AsxJKvX5VVv5cPiU3hN6_WTM'\r\n\t\t\t},\r\n\t\t\tactionButton: (function () {\r\n\t\t\t\tvar selector,\r\n\t\t\t\t\tajaxCall,\r\n\t\t\t\t\t$body = $('body'),\r\n\t\t\t\t\toptions;\r\n\t\t\t\t$.ajaxSetup({\r\n\t\t\t\t\tbeforeSend: function (xhr, settings) {\r\n\t\t\t\t\t\tif ($(document.activeElement).attr('data-calls-ajax') === 'true' && settings.url.indexOf('umbraco') > 0) {\r\n\t\t\t\t\t\t\t$(document.activeElement).trigger('processing').addClass('ajaxCaller');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tcomplete: function (xhr) {\r\n\t\t\t\t\t\tif (typeof xhr.responseJSON === 'string') {\r\n\t\t\t\t\t\t\t$('.ajaxCaller').trigger('processingComplete').removeClass('ajaxCaller');\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t\tvar init = function () {\r\n\t\t\t\t\t$(selector).each(function () {\r\n\t\t\t\t\t\tvar $this = $(this);\r\n\t\t\t\t\t\tif (options.ajaxCaller === true) { $this.attr('data-calls-ajax', 'true').data('data-calls-ajax', 'true'); }\r\n\t\t\t\t\t\t$this.on('processing', function () {\r\n\t\t\t\t\t\t\tvar $me = $(this);\r\n\t\t\t\t\t\t\t$body.addClass('processing');\r\n\t\t\t\t\t\t\t$me.attr('data-original-text', $me.html()).text('Working...');\r\n\t\t\t\t\t\t}).on('processingComplete', function () {\r\n\t\t\t\t\t\t\tvar $me = $(this);\r\n\t\t\t\t\t\t\t$body.removeClass('processing');\r\n\t\t\t\t\t\t\t$me.html($me.attr('data-original-text'));\r\n\t\t\t\t\t\t}).on('click', function () {\r\n\t\t\t\t\t\t\tif ($(this).attr('data-calls-ajax') !== 'true') { $(this).trigger('processing'); }\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\t\t\t\t};\r\n\t\t\t\treturn {\r\n\t\t\t\t\tregister: function (opts) {\r\n\t\t\t\t\t\topts = opts || {};\r\n\t\t\t\t\t\toptions = opts;\r\n\t\t\t\t\t\tselector = opts.selector;\r\n\t\t\t\t\t\tajaxCall = opts.ajaxCall || false;\r\n\t\t\t\t\t\tinit();\r\n\t\t\t\t\t\treturn this;\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t})(),\r\n\t\t\tpointsBreak: (function () {\r\n\t\t\t\tvar time = 200, W, H,\r\n\t\t\t\t\trunThis = function (fin) {\r\n\t\t\t\t\t\tif (typeof fin === 'function') { fin(); }\r\n\t\t\t\t\t},\r\n\t\t\t\t\tbreakPointTest = function (bpTest) {\r\n\t\t\t\t\t\tvar type = bpTest.charAt(0) === 'W' ? W : H,\r\n\t\t\t\t\t\t\ttest = bpTest[1],\r\n\t\t\t\t\t\t\tdims = bpTest.split(bpTest.charAt(1))[1];\r\n\t\t\t\t\t\treturn test === '>' && type > dims || test === '<' && type < dims ? true : false;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tdoWork = function (context) {\r\n\t\t\t\t\t\tvar andReg = /&&+/g;\r\n\t\t\t\t\t\tW = window.innerWidth || document.documentElement.clientWidth,\r\n\t\t\t\t\t\t\tH = window.innerHeight || document.documentElement.clientHeight;\r\n\t\t\t\t\t\tfor (var i in context) {\r\n\t\t\t\t\t\t\tif (i.charAt(0) === 'W' || i.charAt(0) === 'H') {\r\n\t\t\t\t\t\t\t\ti = i.replace(/\\s+/g, '').toUpperCase();\r\n\t\t\t\t\t\t\t\tvar f = 0,\r\n\t\t\t\t\t\t\t\t\tmyFunc = context[i];\r\n\t\t\t\t\t\t\t\tif (i.match(andReg) !== null) {\r\n\t\t\t\t\t\t\t\t\tvar tests = i.split(/&&/);\r\n\t\t\t\t\t\t\t\t\tfor (var x in tests) {\r\n\t\t\t\t\t\t\t\t\t\tif (tests[x].charAt(0) === 'W' || tests[x].charAt(0) === 'H') {\r\n\t\t\t\t\t\t\t\t\t\t\tif (breakPointTest(tests[x]) === false) { f = false; }\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tif (f !== false) { runThis(myFunc(W, H)); }\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\tif (breakPointTest(i)) { runThis(myFunc(W, H)); }\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\treturn {\r\n\t\t\t\t\tinit: function (context) {\r\n\t\t\t\t\t\tvar doIt;\r\n\t\t\t\t\t\tdoWork(context);\r\n\t\t\t\t\t\twindow.onresize = function () {\r\n\t\t\t\t\t\t\tclearTimeout(doIt);\r\n\t\t\t\t\t\t\tdoIt = setTimeout(function () { doWork(context); }, time);\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\treturn this;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tsetDelay: function (x, finFunc) {\r\n\t\t\t\t\t\ttime = x;\r\n\t\t\t\t\t\treturn this;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tgetWidth: function () { return W; },\r\n\t\t\t\t\tgetHeight: function () { return H; }\r\n\t\t\t\t};\r\n\t\t\t})(),\r\n\t\t\tvalidate: {\r\n\t\t\t\temail: function (email) {\r\n\t\t\t\t\treturn email.match(/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i) ? true : false;\r\n\t\t\t\t},\r\n\t\t\t\tpostal: function (postalCode, el) {\r\n\t\t\t\t\tpostalCode = postalCode.toUpperCase();\r\n\t\t\t\t\tvar country = el.parents('form').find('#country').val();\r\n\t\t\t\t\treturn country === 'US' && postalCode.match(/(^\\d{5}$)|(^\\d{5}-\\d{4}$)/) ? true : country === 'CA' && postalCode.match(/^([A-Z][0-9][A-Z])\\s*([0-9][A-Z][0-9])$/) ? true : false;\r\n\t\t\t\t},\r\n\t\t\t\tpostalNotRequired: function (postalCode, el) {\r\n\t\t\t\t\tpostalCode = postalCode.toUpperCase();\r\n\t\t\t\t\tvar country = el.parents('form').find('#country').val();\r\n\r\n\t\t\t\t\tif (country === 'US' && postalCode.match(/(^\\d{5}$)|(^\\d{5}-\\d{4}$)/)) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t} else if (country === 'CA' && postalCode.match(/^([A-Z][0-9][A-Z])\\s*([0-9][A-Z][0-9])$/)) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t} else if (postalCode === '') {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//return country === 'US' && postalCode.match(/(^\\d{5}$)|(^\\d{5}-\\d{4}$)/) ? true : country === 'CA' && postalCode.match(/^([A-Z][0-9][A-Z])\\s*([0-9][A-Z][0-9])$/) ? true : false;\r\n\t\t\t\t},\r\n\t\t\t\tnotEmpty: function (value) {\r\n\t\t\t\t\treturn value !== '' && value !== null && value !== undefined;\r\n\t\t\t\t},\r\n\t\t\t\tselected: function (value, el) {\r\n\t\t\t\t\treturn el[0].options.selectedIndex !== 0;\r\n\t\t\t\t},\r\n\t\t\t\tdate: function (value) {\r\n\t\t\t\t\treturn value.match(/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/);\r\n\t\t\t\t},\r\n\t\t\t\ttime: function (value) {\r\n\t\t\t\t\treturn value.match(/^(\\d{1,2}):(\\d{2})([ap]m)?$/);\r\n\t\t\t\t},\r\n\t\t\t\tselectedOption: function (val, el) {\r\n\t\t\t\t\tvar opts = el.prop('name'),\r\n\t\t\t\t\t\toptChosen = false;\r\n\t\t\t\t\t$('[name=\"' + opts + '\"]').each(function () {\r\n\t\t\t\t\t\tif ($(this).is(':checked')) { optChosen = true; }\r\n\t\t\t\t\t});\r\n\t\t\t\t\treturn optChosen;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tgetDate: function () {\r\n\t\t\t\tvar today = new Date();\r\n\t\t\t\tvar dd = today.getDate();\r\n\t\t\t\tvar mm = today.getMonth() + 1;\r\n\r\n\t\t\t\tvar yyyy = today.getFullYear();\r\n\t\t\t\tif (dd < 10) {\r\n\t\t\t\t\tdd = '0' + dd;\r\n\t\t\t\t}\r\n\t\t\t\tif (mm < 10) {\r\n\t\t\t\t\tmm = '0' + mm;\r\n\t\t\t\t}\r\n\t\t\t\ttoday = dd + '/' + mm + '/' + yyyy;\r\n\t\t\t\treturn today;\r\n\t\t\t},\r\n\t\t\tinitDeleteEventButton: function () {\r\n\t\t\t},\r\n\t\t\ttableSortr: (function () {\r\n\t\t\t\tvar theTable,\r\n\t\t\t\t\tignoreHeading,\r\n\t\t\t\t\tuseUTC,\r\n\t\t\t\t\tsetup = function () {\r\n\t\t\t\t\t\t$(theTable).each(function () {\r\n\t\t\t\t\t\t\t$(this).find('thead th').not(ignoreHeading).on('click', function () {\r\n\t\t\t\t\t\t\t\tvar $this = $(this),\r\n\t\t\t\t\t\t\t\t\tcolIdx = $this.index(),\r\n\t\t\t\t\t\t\t\t\ttoSort = [],\r\n\t\t\t\t\t\t\t\t\tcurTblBod = $this.parents('table').find('tbody'),\r\n\t\t\t\t\t\t\t\t\tnewTblBod = $('');\r\n\r\n\t\t\t\t\t\t\t\tif ($(this).attr('data-utc')) {\r\n\t\t\t\t\t\t\t\t\tuseUTC = true;\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t$this.toggleClass('toggle');\r\n\r\n\t\t\t\t\t\t\t\tcurTblBod.find('tr').each(function (k, v) {\r\n\t\t\t\t\t\t\t\t\tif (useUTC === true) {\r\n\t\t\t\t\t\t\t\t\t\ttoSort.push([$(this).children('td').eq(colIdx).attr('data-utc'), $(this).index()]);\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\ttoSort.push([$(this).children('td').eq(colIdx).text(), $(this).index()]);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t\ttoSort.sort();\r\n\r\n\t\t\t\t\t\t\t\tif ($(theTable).data('sorted') === 'descending') {\r\n\t\t\t\t\t\t\t\t\ttoSort.reverse();\r\n\t\t\t\t\t\t\t\t\t$(theTable).data('sorted', 'ascending');\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t$(theTable).data('sorted', 'descending');\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tconsole.log($(theTable).data('sorted'));\r\n\t\t\t\t\t\t\t\tconsole.log(\"toSort: \", toSort);\r\n\r\n\t\t\t\t\t\t\t\t$.each(toSort, function (k, v) {\r\n\t\t\t\t\t\t\t\t\tcurTblBod.find('tr').eq(v[1]).clone(true).appendTo(newTblBod);\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\tcurTblBod.replaceWith(newTblBod);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t};\r\n\t\t\t\treturn {\r\n\t\t\t\t\tinit: function (opts) {\r\n\t\t\t\t\t\topts = opts || {};\r\n\t\t\t\t\t\ttheTable = opts.tableSelector || 'table.sortable';\r\n\t\t\t\t\t\tignoreHeading = opts.ignoreHeading || '.sortIgnore';\r\n\t\t\t\t\t\tsetup();\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t})(),\r\n\t\t\tcsvDownloader: (function () {\r\n\t\t\t\tvar dlBtn,\r\n\t\t\t\t\ttable,\r\n\t\t\t\t\tfileName,\r\n\t\t\t\t\tcsv = '',\r\n\t\t\t\t\tsetupBtn = function (data) {\r\n\t\t\t\t\t\t$(dlBtn).attr({\r\n\t\t\t\t\t\t\t'href': 'data:application/text;charset=utf-8,' + encodeURIComponent(data),\r\n\t\t\t\t\t\t\t'target': '_blank',\r\n\t\t\t\t\t\t\t'download': fileName\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tif (window.navigator.userAgent.search('Trident') >= 0 || window.navigator.userAgent.search('Edge')) {\r\n\t\t\t\t\t\t\t$(dlBtn).on('click', function (e) {\r\n\t\t\t\t\t\t\t\t$('body').append('');\r\n\t\t\t\t\t\t\t\tvar iframe = $('#csvFrame')[0];\r\n\t\t\t\t\t\t\t\tiframe = iframe.contentWindow || iframe.contentDocument;\r\n\t\t\t\t\t\t\t\tdata = 'sep=,\\r\\n' + data;\r\n\t\t\t\t\t\t\t\tiframe.document.open('text/html', 'replace');\r\n\t\t\t\t\t\t\t\tiframe.document.write(data);\r\n\t\t\t\t\t\t\t\tiframe.document.close();\r\n\t\t\t\t\t\t\t\tiframe.focus();\r\n\t\t\t\t\t\t\t\tiframe.document.execCommand('SaveAs', true, 'Attendees.csv');\r\n\t\t\t\t\t\t\t\tif (window.navigator.userAgent.search('Edge')) {\r\n\t\t\t\t\t\t\t\t\tvar blobObject = new Blob([data]);\r\n\t\t\t\t\t\t\t\t\twindow.navigator.msSaveOrOpenBlob(blobObject, \"Attendees.csv\");\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t$('#csvFrame').remove();\r\n\t\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\tmakeCsv = function () {\r\n\t\t\t\t\t\t$(table).find('thead th').each(function (i) {\r\n\t\t\t\t\t\t\tcsv += '\"' + $(this).text() + '\"' + (i === ($(table).find('thead th').length - 1) ? '\\r\\n' : ',');\r\n\t\t\t\t\t\t}).end().find('tbody tr').each(function (i) {\r\n\t\t\t\t\t\t\t$(this).find('td').each(function (i) {\r\n\t\t\t\t\t\t\t\tcsv += '\"' + $(this).text() + '\"' + (i === ($(this).parent('tr').find('td').length - 1) ? '\\r\\n' : ',');\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tsetupBtn(csv);\r\n\t\t\t\t\t};\r\n\t\t\t\treturn {\r\n\t\t\t\t\tinit: function (opts) {\r\n\t\t\t\t\t\topts = opts || {};\r\n\t\t\t\t\t\tdlBtn = opts.downloadButton || '.csvDownload';\r\n\t\t\t\t\t\ttable = opts.table || '.csvData';\r\n\t\t\t\t\t\tfileName = opts.fileName || 'CSV-Download';\r\n\t\t\t\t\t\tmakeCsv();\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t})(),\r\n\t\t\teqHeights: (function () {\r\n\t\t\t\tvar selector, plusSome;\r\n\t\t\t\tvar getHeight = function (selector) {\r\n\t\t\t\t\t$(selector).height('');\r\n\t\t\t\t\tvar theGroup = [], setter = 0;\r\n\t\t\t\t\t$(selector).each(function () {\r\n\t\t\t\t\t\ttheGroup.push($(this).innerHeight().toFixed());\r\n\t\t\t\t\t\tsetter = Math.max.apply(Math, theGroup);\r\n\t\t\t\t\t});\r\n\t\t\t\t\treturn setter;\r\n\t\t\t\t};\r\n\t\t\t\treturn {\r\n\t\t\t\t\tset: function (options, cb) {\r\n\t\t\t\t\t\tselector = options.selector || '.eqHeight';\r\n\t\t\t\t\t\tplusSome = options.plusSome || false;\r\n\t\t\t\t\t\tplusSome ? $(selector).height(getHeight(selector) + plusSome) : $(selector).height(getHeight(selector));\r\n\t\t\t\t\t\tif (typeof cb === 'function') { cb(); }\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t})(),\r\n\t\t\t//loadChart: function(opts){\r\n\t\t\t//\tif(!$(opts.el).parent().children('p').length){\r\n\t\t\t//\t\t$(opts.el).before('

    ' + opts.nums[0] + ' out of ' + opts.nums[1] + '

    ');\r\n\t\t\t//\t}\r\n\t\t\t//\t$(opts.el).text(opts.nums[0] + '/' + opts.nums[1]).peity('donut', {\r\n\t\t\t//\t\twidth: opts.width,\r\n\t\t\t//\t\theight: opts.height,\r\n\t\t\t//\t\tfill: ['#ffffff', '#0067B1'],\r\n\t\t\t//\t\tinnerRadius: opts.innerRadius || 0\r\n\t\t\t//\t});\r\n\t\t\t//},\r\n\t\t\tgMapsHelpers: {\r\n\t\t\t\tconvertToMeters: function (num) {\r\n\t\t\t\t\treturn num * 1609.344;\r\n\t\t\t\t},\r\n\t\t\t\tformatAddressForGmaps: function (address) {\r\n\t\t\t\t\treturn address.replace(/\\s/g, '+').replace(/#/g, 'Suite+');\r\n\t\t\t\t},\r\n\t\t\t\tcreateMarker: function (opts) {\r\n\t\t\t\t\tswEvents.util.jQueryExtends.kThen();\r\n\t\t\t\t\topts.markers[opts.markerCount] = new google.maps.Marker({\r\n\t\t\t\t\t\tposition: {\r\n\t\t\t\t\t\t\tlat: parseFloat(opts.lat),\r\n\t\t\t\t\t\t\tlng: parseFloat(opts.lng)\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tmap: opts.map,\r\n\t\t\t\t\t\ttitle: opts.eventName\r\n\t\t\t\t\t});\r\n\t\t\t\t\tif (opts.showInfo === true) {\r\n\t\t\t\t\t\topts.markers[opts.markerCount].addListener('click', function () {\r\n\t\t\t\t\t\t\t$('html,body').animate({ scrollTop: $('.map').offset().top - 50 }, 200, function () {\r\n\t\t\t\t\t\t\t\topts.map.setZoom(8);\r\n\t\t\t\t\t\t\t\topts.map.setCenter(opts.markers[opts.markerCount].getPosition());\r\n\t\t\t\t\t\t\t\topts.info.open(opts.map, opts.markers[opts.markerCount]);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t} else if (opts.showInfo === false && typeof opts.customEvent === 'function') {\r\n\t\t\t\t\t\topts.markers[opts.markerCount].addListener('click', function () {\r\n\t\t\t\t\t\t\topts.map.setZoom(8);\r\n\t\t\t\t\t\t\topts.map.setCenter(opts.markers[opts.markerCount].getPosition());\r\n\t\t\t\t\t\t\topts.customEvent(opts.markers[opts.markerCount]);\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tgetLocationLatLong: function (address, cb) {\r\n\t\t\t\t\tvar latlong;\r\n\t\t\t\t\tjQuery.support.cors = true;\r\n\t\t\t\t\tvar geocoder = new google.maps.Geocoder();\r\n\r\n\t\t\t\t\tgeocoder.geocode({ 'address': address }, function(results, status) \r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tif (status==='OK') {\r\n\t\t\t\t\t\t\tlatlong = {\r\n\t\t\t\t\t\t\t\tlat: parseFloat(results[0].geometry.location.lat()),\r\n\t\t\t\t\t\t\t\tlng: parseFloat(results[0].geometry.location.lng())\r\n\t\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t\tcb(latlong);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tconsole.log(\"GMaps Geocode ERROR\");\r\n\t\t\t\t\t\t} \r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\tgetMapImgUrl: function (opts) {\r\n\t\t\t\t\topts = opts || {};\r\n\t\t\t\t\tvar formatedAddr = this.formatAddressForGmaps(opts.addr);\r\n\t\t\t\t\treturn 'https://maps.googleapis.com/maps/api/staticmap?center=' + formatedAddr + '&zoom=' + opts.zoom + '&size=' + opts.size + '&maptype=roadmap&markers=color:' + opts.color + '%7C' + formatedAddr + `&key=${swEvents.util.apiKeys.map}`;\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tjQueryExtends: {\r\n\t\t\t\tmodals: function () {\r\n\t\t\t\t\t$.extend($.fn, {\r\n\t\t\t\t\t\tshowModal: function (opts, cb) {\r\n\t\t\t\t\t\t\ttypeof opts === 'function' && arguments.length === 1 ? cb = opts : opts = opts || {};\r\n\t\t\t\t\t\t\tvar $modal = $(this),\r\n\t\t\t\t\t\t\t\tbgColor = opts.bgColor || 'rgba(0,0,0,.7)',\r\n\t\t\t\t\t\t\t\tbgSpeed = opts.bgSpeed || 500,\r\n\t\t\t\t\t\t\t\tmodalSpeed = opts.modalSpeed || 500,\r\n\t\t\t\t\t\t\t\tautoScroll = opts.autoScroll || true,\r\n\t\t\t\t\t\t\t\tscrollSpeed = opts.scrollSpeed || 500,\r\n\t\t\t\t\t\t\t\toffset = opts.offset || 75,\r\n\t\t\t\t\t\t\t\t$modalBg = $('
    ');\r\n\t\t\t\t\t\t\t$modalBg.css({\r\n\t\t\t\t\t\t\t\t'background-color': bgColor,\r\n\t\t\t\t\t\t\t\t'position': 'fixed',\r\n\t\t\t\t\t\t\t\t'z-index': '16777270',\r\n\t\t\t\t\t\t\t\t'top': 0,\r\n\t\t\t\t\t\t\t\t'left': 0,\r\n\t\t\t\t\t\t\t\t'width': '100%',\r\n\t\t\t\t\t\t\t\t'height': '100%',\r\n\t\t\t\t\t\t\t\t'display': 'none'\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tvar completed = function () {\r\n\t\t\t\t\t\t\t\t$modal.trigger('modalShown');\r\n\t\t\t\t\t\t\t\tif (typeof cb === 'function') { cb.call($modal); }\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t\tdoScroll = function () {\r\n\t\t\t\t\t\t\t\t\t$('html,body').animate({ scrollTop: $modal.offset().top - offset }, scrollSpeed).promise().done(function () {\r\n\t\t\t\t\t\t\t\t\t\tcompleted();\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\treturn this.each(function () {\r\n\t\t\t\t\t\t\t\t$modalBg.appendTo('body').fadeIn(bgSpeed, function () {\r\n\t\t\t\t\t\t\t\t\t$modal.css('z-index', 16777271).fadeIn(modalSpeed, function () {\r\n\t\t\t\t\t\t\t\t\t\t$(document).on('keyup.modal', function (e) {\r\n\t\t\t\t\t\t\t\t\t\t\tif (e.keyCode === 27) { $modal.hideModal(); }\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t$modalBg.on('click.modal', function () {\r\n\t\t\t\t\t\t\t\t\t\t\t$modal.hideModal();\r\n\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\tautoScroll === true ? doScroll() : completed();\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\thideModal: function (opts, cb) {\r\n\t\t\t\t\t\t\ttypeof opts === 'function' && arguments.length === 1 ? cb = opts : opts = opts || {};\r\n\t\t\t\t\t\t\tvar $modal = $(this),\r\n\t\t\t\t\t\t\t\t$modalBg = $('.zmodalBg'),\r\n\t\t\t\t\t\t\t\tmodalSpeed = opts.modalSpeed || 250,\r\n\t\t\t\t\t\t\t\tbgSpeed = opts.bgSpeed || 250,\r\n\t\t\t\t\t\t\t\tcompleted = function () {\r\n\t\t\t\t\t\t\t\t\t$modalBg.remove();\r\n\t\t\t\t\t\t\t\t\t$(document).off('keyup.modal');\r\n\t\t\t\t\t\t\t\t\t$modal.trigger('modalClosed');\r\n\t\t\t\t\t\t\t\t\tif (typeof cb === 'function') { cb.call($modal); }\r\n\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t$modal.fadeOut(modalSpeed, function () {\r\n\t\t\t\t\t\t\t\t$modalBg.fadeOut(bgSpeed, function () {\r\n\t\t\t\t\t\t\t\t\tcompleted();\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\treturn this;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t},\r\n\t\t\t\tkThen: function () { jQuery.fn.kThen = function (time, func, selector) { var me = this, t = typeof time === 'function' ? 0 : time, f = typeof time === 'function' ? time : func; setTimeout(function () { if (typeof f === 'function') { f.apply(me); } }, t); return selector ? $(selector) : me; }; }\r\n\t\t\t}\r\n\t\t},\r\n\t\tinit: function (page) {\r\n\t\t\tthis.common();\r\n\t\t\tif (this.pages[page] !== '' && this.pages[page] && typeof this.pages[page] === 'function') { this.pages[page](); }\r\n\t\t},\r\n\t\tcommon: function () {\r\n\t\t\t\r\n\t\t},\r\n\t\tpages: {\r\n\t\t\tlogin: function () {\r\n\t\t\t\t$('.passwordRecover').on('click', function (e) {\r\n\t\t\t\t\t$(this).parents('fieldset').fadeOut('fast', function () {\r\n\t\t\t\t\t\t$(this).next('fieldset').fadeIn('fast');\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\t\t\t},\r\n\t\t\tcreateEvent: function () {\r\n\t\t\t\t// REPLACE - MOVE THIS TO VIEW/DATA ATTR\r\n\t\t\t\t// Create the ability to check if user is editing or creating and user type.\r\n\t\t\t\tswEvents.context = {};\r\n\t\t\t\tswEvents.context.editing = window.location.href.split('?')[1] ? true : false;\r\n\t\t\t\tswEvents.context.userType = $('#UserType').val() === 'EventManagers' ? 'Event Manager' : 'Event Creator';\r\n\r\n\t\t\t\t//// Managers aren't limited to number of days out\r\n\t\t\t\tvar daysOut = swEvents.context.userType === 'Event Manager' ? 0 : 6;\r\n\r\n\t\t\t\t//// Update moment.js to be able to add business days for validation and minDate\r\n\t\t\t\tmoment.fn.addWorkdays = function (days) {\r\n\t\t\t\t\tvar incr = days / Math.abs(days),\r\n\t\t\t\t\t\tdate = this.clone().add(Math.floor(Math.abs(days) / 5) * 7 * incr, 'days'),\r\n\t\t\t\t\t\tremaining = days % 5;\r\n\t\t\t\t\twhile (remaining !== 0) {\r\n\t\t\t\t\t\tdate.add(incr, 'days');\r\n\t\t\t\t\t\tif (date.isoWeekday() !== 6 && date.isoWeekday() !== 7) { remaining -= incr; }\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn date;\r\n\t\t\t\t};\r\n\r\n\t\t\t\tswEvents.util.jQueryExtends.kThen();\r\n\r\n\t\t\t\tvar panelSteps = (function () {\r\n\t\t\t\t\tvar wrapper, panelSelector, next, back, panelCount, activePanel, backForward,\r\n\t\t\t\t\t\tstepNames = {\r\n\t\t\t\t\t\t\t1: 'Event Info',\r\n\t\t\t\t\t\t\t2: 'Location',\r\n\t\t\t\t\t\t\t3: 'Options',\r\n\t\t\t\t\t\t\t4: 'Prospects',\r\n\t\t\t\t\t\t\t5: 'Select Emails'\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetPercent = function (a, b) {\r\n\t\t\t\t\t\t\treturn ((a / b) / a) * 100 + '%';\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tsizr = function () {\r\n\t\t\t\t\t\t\t$(panelSelector).removeAttr('style').kThen(function () {\r\n\t\t\t\t\t\t\t\t$(panelSelector).each(function () {\r\n\t\t\t\t\t\t\t\t\t$(this).css('max-width', getPercent($(wrapper).width(), panelCount));\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t$(wrapper).css({\r\n\t\t\t\t\t\t\t\t\t'width': (100 * panelCount) + '%',\r\n\t\t\t\t\t\t\t\t\t'height': $(wrapper).find('.active').height(),\r\n\t\t\t\t\t\t\t\t\t'left': -($('.active').data('panel-index') * $(panelSelector).width())\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tmove = { \r\n\t\t\t\t\t\t\tforward: function (el) {\r\n\t\t\t\t\t\t\t\t$(el).animate({\r\n\t\t\t\t\t\t\t\t\t'left': $(el).css('left').split('px')[0] - $(panelSelector).width(),\r\n\t\t\t\t\t\t\t\t\t'height': $(el).find('.active').height()\r\n\t\t\t\t\t\t\t\t}, 350, function () {\r\n\t\t\t\t\t\t\t\t\tactivePanel = $('.active').data('panel-index');\r\n\t\t\t\t\t\t\t\t\tbackForward = 'forward';\r\n\t\t\t\t\t\t\t\t\t$('.active').trigger('activated');\r\n\t\t\t\t\t\t\t\t\t$(wrapper).trigger('switchedPane');\r\n\t\t\t\t\t\t\t\t\tpanelSteps.resize();\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t$('html,body').animate({ scrollTop: 0 }, 'fast');\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\tbackward: function (el) {\r\n\t\t\t\t\t\t\t\t$(el).animate({\r\n\t\t\t\t\t\t\t\t\t'left': parseInt($(el).css('left').split('px')[0], 10) + $(panelSelector).width(),\r\n\t\t\t\t\t\t\t\t\t'height': $(el).find('.active').height()\r\n\t\t\t\t\t\t\t\t}, 350, function () {\r\n\t\t\t\t\t\t\t\t\tactivePanel = $('.active').data('panel-index');\r\n\t\t\t\t\t\t\t\t\tbackForward = 'backward';\r\n\t\t\t\t\t\t\t\t\t$('.active').trigger('activated');\r\n\t\t\t\t\t\t\t\t\t$(wrapper).trigger('switchedPane');\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t$('html,body').animate({ scrollTop: 0 }, 'fast');\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tsetup = function (cb) {\r\n\t\t\t\t\t\t\tpanelCount = $(panelSelector).length;\r\n\t\t\t\t\t\t\tvar progressItem = $('
    ');\r\n\r\n\t\t\t\t\t\t\tprogressItem.css({\r\n\t\t\t\t\t\t\t\t'width': getPercent($('.progressBar').width(), panelCount)\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t$('#templateSubjectLine').val($('.subLines input[type=radio]:checked').val());\r\n\r\n\t\t\t\t\t\t\t$(panelSelector).each(function (k, v) {\r\n\t\t\t\t\t\t\t\tvar $this = $(this);\r\n\t\t\t\t\t\t\t\t$this.attr('data-panel-index', $this.index()).find('.next, .back, [type=\"submit\"]').each(function () {\r\n\t\t\t\t\t\t\t\t\tvar $btnClicked = $(this);\r\n\t\t\t\t\t\t\t\t\t$btnClicked.on('click', function (e) {\r\n\t\t\t\t\t\t\t\t\t\tif (!$btnClicked.is('[type=\"submit\"]')) { e.preventDefault(); }\r\n\r\n\t\t\t\t\t\t\t\t\t\tvar valid = true,\r\n\t\t\t\t\t\t\t\t\t\t\terrMessage = '\"*\" INDICATES REQUIRED FIELDS\\nPlease check the form for errors.';\r\n\r\n\t\t\t\t\t\t\t\t\t\t//REPLACE W REAL VALIDATION\r\n\t\t\t\t\t\t\t\t\t\t// Validation Check\r\n\t\t\t\t\t\t\t\t\t\tif ($btnClicked.is(next) || $btnClicked.is('[type=\"submit\"]')) {\r\n\t\t\t\t\t\t\t\t\t\t\t$this.find($('[data-validate]')).each(function (k, v) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tvar myRule = $(this).attr('data-validate');\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (!swEvents.util.validate[myRule]($(this).val(), $(this))) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t$(this).addClass('error');\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tvalid = false;\r\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tif ($(this).is('#eventDate')) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar now = new Date();\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar selectedDate = moment($('#eventDate').val()),\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tminDate = moment(now).addWorkdays(daysOut - 1);\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (selectedDate <= minDate) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$('#eventDate').addClass('error');\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvalid = false;\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (swEvents.util.validate[myRule]($('#eventDate').val())) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t$('#eventDate').removeClass('error');\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t$(this).removeClass('error');\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tif ($(this).is('#zipPostal')) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.log('zipPostal');\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\tif (valid === true) {\r\n\t\t\t\t\t\t\t\t\t\t\tif (!$btnClicked.is('[type=\"submit\"]')) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t$(panelSelector).not($btnClicked.parents(panelSelector)[$btnClicked.is(next) ? 'next' : 'prev']()).removeClass('active');\r\n\t\t\t\t\t\t\t\t\t\t\t\t$btnClicked.parents(panelSelector)[$btnClicked.is(next) ? 'next' : 'prev']().addClass('active');\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (($btnClicked.is(back) && $btnClicked.parents(panelSelector).data('panel-index') === 0) || ($btnClicked.is(next) && $btnClicked.parents(panelSelector).data('panel-index') === $(panelSelector).length - 1)) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\tsetTimeout(function () {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (!$('body').hasClass('processing')) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmove[$btnClicked.is(next) ? 'forward' : 'backward'](wrapper);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t}, 100);\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t\t\t\t\t\tif (($('.error').length > 1 && $('#eventDate').hasClass('error')) || $('#eventDate').hasClass('error')) {\r\n\t\t\t\t\t\t\t\t\t\t\t\terrMessage = errMessage += '\\nEvent date must be at least ' + daysOut + ' business days from today.';\r\n\t\t\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\t\t\terrMessage = '\"*\" INDICATES REQUIRED FIELDS\\nPlease check the form for errors.';\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\talert(errMessage);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\tvar item = progressItem.clone().append('' + ($(this).data('panel-index') + 1) + '');\r\n\t\t\t\t\t\t\t\titem.appendTo('.progressBar');\r\n\r\n\t\t\t\t\t\t\t}).on('activated', function () {\r\n\t\t\t\t\t\t\t\t$('.progressItem').eq(activePanel).addClass('show').nextAll().removeClass('show');\r\n\t\t\t\t\t\t\t\t$('.progressItem').eq(activePanel).prev('.progressItem').addClass('completed').nextAll().removeClass('completed');\r\n\t\t\t\t\t\t\t\tif (activePanel === 0) {\r\n\t\t\t\t\t\t\t\t\t$('.progressItem').eq(activePanel).removeClass('completed');\r\n\t\t\t\t\t\t\t\t} else if (activePanel === ($('[data-panel-index]').length - 1) && $('.emailTemplates li').length > 1) {\r\n\t\t\t\t\t\t\t\t\tconsole.log('Last Panel');\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tactivePanel = $('.active').data('panel-index');\r\n\t\t\t\t\t\t\t$('.active').trigger('activated');\r\n\t\t\t\t\t\t\tif (typeof cb === 'function') { cb.call(); }\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tinit: function (opts) {\r\n\t\t\t\t\t\t\topts = opts || {};\r\n\t\t\t\t\t\t\twrapper = opts.wrapper;\r\n\t\t\t\t\t\t\tpanelSelector = opts.panelSelector;\r\n\t\t\t\t\t\t\tnext = opts.nextBtn || '.next';\r\n\t\t\t\t\t\t\tback = opts.backBtn || '.back';\r\n\t\t\t\t\t\t\tsetup(function () { sizr(); });\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tresize: function () {\r\n\t\t\t\t\t\t\tsizr();\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tgetActivePanel: function () {\r\n\t\t\t\t\t\t\treturn activePanel;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\ttriggerMove: function (dir) {\r\n\t\t\t\t\t\t\tmove[dir](wrapper);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t};\r\n\t\t\t\t})();\r\n\r\n\t\t\t\tswEvents.util.actionButton.register({\r\n\t\t\t\t\tselector: '#proof, #approval'\r\n\t\t\t\t}).register({\r\n\t\t\t\t\tselector: '.stepThree .next.control',\r\n\t\t\t\t\tajaxCaller: true\r\n\t\t\t\t});\r\n\r\n\t\t\t\twindow.googMaps = {};\r\n\r\n\t\t\t\tpanelSteps.init({\r\n\t\t\t\t\twrapper: '.wizardWrap',\r\n\t\t\t\t\tpanelSelector: '.wizardWrap .panel'\r\n\t\t\t\t});\r\n\r\n\t\t\t\tswEvents.util.pointsBreak.init({\r\n\t\t\t\t\t'W>0': function (W, H) {\r\n\t\t\t\t\t\tpanelSteps.resize();\r\n\t\t\t\t\t\tif (googMaps.map) { googMaps.map.setCenter(googMaps.location); }\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t$('.stepThree').on('click', '.control.next', function (e) {\r\n\t\t\t\t\t$('#noInviteSends').trigger('input');\r\n\t\t\t\t});\r\n\r\n\t\t\t\t$('.stepThree .next.control').on('processingComplete', function (e) {\r\n\t\t\t\t\tpanelSteps.triggerMove('forward');\r\n\t\t\t\t});\r\n\r\n\t\t\t\t$('#sendRadiusPostalCode').on('input', function () {\r\n\t\t\t\t\tconsole.log('pc change', $(this).val());\r\n\r\n\t\t\t\t\t$('.stepFour').data('mapLoaded', false);\r\n\r\n\t\t\t\t\tif ($(this).val().length >= 5) {\r\n\t\t\t\t\t\t$('.stepFour').trigger('activated.map');\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t$('#noInviteSends').on('input', function () {\r\n\t\t\t\t\tconsole.log('nosends check: ', $(this).prop('checked'));\r\n\r\n\t\t\t\t\tvar srpc = document.getElementById('sendRadiusPostalCode');\r\n\r\n\t\t\t\t\tif ($(this).prop('checked')) {\r\n\t\t\t\t\t\t$('.stepFour').addClass('noRadius');\r\n\t\t\t\t\t\t$('.stepFour .send-options').hide();\r\n\t\t\t\t\t\tsrpc.dataset.validate = 'postalNotRequired';\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t$('.stepFour').removeClass('noRadius');\r\n\t\t\t\t\t\t$('.stepFour .send-options').show();\r\n\t\t\t\t\t\tsrpc.dataset.validate = 'postal';\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t$(window).trigger('resize');\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif ($('#sendRadiusPostalCode').val() !== '') { $('#sendRadiusPostalCode').trigger('change'); }\r\n\r\n\t\t\t\t$('.stepFour').on('activated.map', function () {\r\n\t\t\t\t\tvar $this = $(this);\r\n\t\t\t\t\tvar geocoder = new google.maps.Geocoder();\r\n\r\n\t\t\t\t\tif (!$this.data('mapLoaded')) {\r\n\t\t\t\t\t\tvar zip = $this.find('#sendRadiusPostalCode').val();\r\n\r\n\t\t\t\t\t\tif (zip.length >= 5) {\r\n\t\t\t\t\t\t\tgeocoder.geocode({ 'address': zip }, function (results, status) {\r\n\t\t\t\t\t\t\t\tif (status === 'OK') {\r\n\t\t\t\t\t\t\t\t\tvar markers = [];\r\n\t\t\t\t\t\t\t\t\tgoogMaps.location = results[0].geometry.location;\r\n\t\t\t\t\t\t\t\t\tgoogMaps.Latlng = new google.maps.LatLng(googMaps.location.lat(), googMaps.location.lng());\r\n\t\t\t\t\t\t\t\t\tgoogMaps.mapOpts = {\r\n\t\t\t\t\t\t\t\t\t\tscrollwheel: false,\r\n\t\t\t\t\t\t\t\t\t\tcenter: googMaps.Latlng,\r\n\t\t\t\t\t\t\t\t\t\tzoom: 9\r\n\t\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\t\twindow.googMaps.map = new google.maps.Map(document.getElementById('map'), googMaps.mapOpts);\r\n\t\t\t\t\t\t\t\t\tgoogMaps.marker = new google.maps.Marker({\r\n\t\t\t\t\t\t\t\t\t\tposition: googMaps.Latlng,\r\n\t\t\t\t\t\t\t\t\t\tmap: googMaps.map,\r\n\t\t\t\t\t\t\t\t\t\ttitle: $this.find('#selected-zipPostal').text(),\r\n\t\t\t\t\t\t\t\t\t\tanimation: google.maps.Animation.DROP\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\t$this.data('mapLoaded', true);\r\n\t\t\t\t\t\t\t\t\tgoogMaps.circle = new google.maps.Circle({\r\n\t\t\t\t\t\t\t\t\t\tmap: googMaps.map,\r\n\t\t\t\t\t\t\t\t\t\tradius: 16093,\r\n\t\t\t\t\t\t\t\t\t\tstrokeOpacity: 0.5,\r\n\t\t\t\t\t\t\t\t\t\tstrokeWeight: 2,\r\n\t\t\t\t\t\t\t\t\t\tfillColor: '#AA0000'\r\n\t\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t\t\tgoogMaps.circle.bindTo('center', googMaps.marker, 'position');\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tvar defaultZip = '66952';\r\n\r\n\t\t\t\t\t\t\tgeocoder.geocode({ 'address': defaultZip }, function (results, status) {\r\n\t\t\t\t\t\t\t\tif (status === 'OK') {\r\n\t\t\t\t\t\t\t\t\tvar markers = [];\r\n\t\t\t\t\t\t\t\t\tgoogMaps.location = results[0].geometry.location;\r\n\t\t\t\t\t\t\t\t\tgoogMaps.Latlng = new google.maps.LatLng(googMaps.location.lat(), googMaps.location.lng());\r\n\t\t\t\t\t\t\t\t\tgoogMaps.mapOpts = {\r\n\t\t\t\t\t\t\t\t\t\tscrollwheel: false,\r\n\t\t\t\t\t\t\t\t\t\tcenter: googMaps.Latlng,\r\n\t\t\t\t\t\t\t\t\t\tzoom: 3\r\n\t\t\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\t\t\twindow.googMaps.map = new google.maps.Map(document.getElementById('map'), googMaps.mapOpts);\r\n\r\n\t\t\t\t\t\t\t\t\t$this.data('mapLoaded', true);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// create event map radius selector\r\n\t\t\t\tconst prospectMap = document.getElementsByClassName('prospect-map')[0];\r\n\r\n\t\t\t\tif (prospectMap) {\r\n\t\t\t\t\tconst radiusSwapper = {\r\n\t\t\t\t\t\toptions: [].slice.call(prospectMap.getElementsByClassName('prospect-map__input')),\r\n\t\t\t\t\t\tcalcButton: document.getElementsByClassName('prospect-map__btn')[0],\r\n\t\t\t\t\t\tcopyContainer: document.getElementsByClassName('prospect-map__result')[0],\r\n\t\t\t\t\t\testimatedSendsCopy: document.getElementsByClassName('prospect-map__estimate')[0],\r\n\t\t\t\t\t\tmilesRadiusCopy: document.getElementsByClassName('prospect-map__miles')[0],\r\n\t\t\t\t\t\tupdateCopy: (sends, miles) => {\r\n\t\t\t\t\t\t\tradiusSwapper.estimatedSendsCopy.textContent = sends;\r\n\t\t\t\t\t\t\tradiusSwapper.milesRadiusCopy.textContent = miles;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tsavedData: {\r\n\t\t\t\t\t\t\t10: {\r\n\t\t\t\t\t\t\t\ttotalSends: null,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t25: {\r\n\t\t\t\t\t\t\t\ttotalSends: null,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t50: {\r\n\t\t\t\t\t\t\t\ttotalSends: null,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t75: {\r\n\t\t\t\t\t\t\t\ttotalSends: null,\r\n\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t100: {\r\n\t\t\t\t\t\t\t\ttotalSends: null,\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tactiveMileSelection: 10\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\t// update the value of activeMileSelection whenever the user selects an option\r\n\t\t\t\t\tradiusSwapper.options.forEach(item => {\r\n\t\t\t\t\t\titem.addEventListener('click', event => {\r\n\t\t\t\t\t\t\tif (event.target.classList.contains('prospect-map__input')) {\r\n\t\t\t\t\t\t\t\tconst inputValue = event.target.value;\r\n\r\n\t\t\t\t\t\t\t\tradiusSwapper.activeMileSelection = inputValue;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t// logic for the update estimate button\r\n\t\t\t\t\tradiusSwapper.calcButton.addEventListener('click', event => {\r\n\t\t\t\t\t\tevent.preventDefault();\r\n\r\n\t\t\t\t\t\t// sets the zoom level on the map\r\n\t\t\t\t\t\tgoogMaps.circle.setOptions({\r\n\t\t\t\t\t\t\tradius: swEvents.util.gMapsHelpers.convertToMeters(radiusSwapper.activeMileSelection)\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\tvar postalCode = document.getElementById('zipPostal').value;\r\n\t\t\t\t\t\tvar sendRadiusPostalCode = document.getElementById('sendRadiusPostalCode').value;\r\n\r\n\t\t\t\t\t\tpostalCode = sendRadiusPostalCode.length === 0 ? postalCode : sendRadiusPostalCode;\r\n\r\n\t\t\t\t\t\tconst radius = parseInt(radiusSwapper.activeMileSelection, 10);\r\n\r\n\t\t\t\t\t\t//remove spaces from CAN postal code\r\n\t\t\t\t\t\tpostalCode = postalCode.replace(/\\s+/g, '');\r\n\r\n\t\t\t\t\t\tgoogMaps.map.setZoom(radius === 10 ? 9 : (radius === 25 ? 8 : (radius === 50 ? 7 : (radius === 75 ? 6 : 5))));\r\n\r\n\t\t\t\t\t\t// if there are no total sends for the radius selected, make an ajax request for the data\r\n\t\t\t\t\t\tif (radiusSwapper.savedData[radiusSwapper.activeMileSelection].totalSends === null) {\r\n\r\n\t\t\t\t\t\t\t// disable the submit button before the ajax request is sent\r\n\t\t\t\t\t\t\tradiusSwapper.calcButton.disabled = true;\r\n\r\n\t\t\t\t\t\t\tconst currentRadiusSelected = radiusSwapper.activeMileSelection;\r\n\r\n\t\t\t\t\t\t\tradiusSwapper.updateCopy(\"?\", currentRadiusSelected);\r\n\r\n\t\t\t\t\t\t\tvar data = { 'radius': currentRadiusSelected, 'postalcode': postalCode };\r\n\r\n\t\t\t\t\t\t\t$.post(estimateinvitesendsurl, data, function (response) {\r\n\r\n\t\t\t\t\t\t\t\tconsole.log(response);\r\n\r\n\t\t\t\t\t\t\t\t// assign the retrieved estimated sends data to a variable\r\n\t\t\t\t\t\t\t\tconst retrievedEstimateSends = response; // ex. data.totalSends\r\n\r\n\t\t\t\t\t\t\t\t// add that sends data to the savedData object\r\n\t\t\t\t\t\t\t\tradiusSwapper.savedData[radiusSwapper.activeMileSelection].totalSends = retrievedEstimateSends;\r\n\r\n\t\t\t\t\t\t\t\t// update the results copy\r\n\t\t\t\t\t\t\t\tradiusSwapper.updateCopy(retrievedEstimateSends, currentRadiusSelected);\r\n\r\n\t\t\t\t\t\t\t\t// if the result copy isn't already visible on the page, show it after we get the json data\r\n\t\t\t\t\t\t\t\tif (radiusSwapper.copyContainer.classList.contains('prospect-map__result--show') === false) {\r\n\t\t\t\t\t\t\t\t\tradiusSwapper.copyContainer.classList.add('prospect-map__result--show');\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t// enable the submit button\r\n\t\t\t\t\t\t\t\tradiusSwapper.calcButton.disabled = false;\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// if we already have data for the estimated sends for a radius, just use what we have in the savedData object\r\n\t\t\t\t\t\t\tradiusSwapper.updateCopy(radiusSwapper.savedData[radiusSwapper.activeMileSelection].totalSends, radiusSwapper.activeMileSelection);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\teventsAdmin: function () {\r\n\t\t\t\tswEvents.util.initDeleteEventButton();\r\n\t\t\t\tswEvents.util.tableSortr.init({\r\n\t\t\t\t\ttableSelector: 'table'\r\n\t\t\t\t});\r\n\r\n\t\t\t\tconsole.log('eventsAdmin');\r\n\r\n\t\t\t\t$('[data-tooltip=\"Request Approval\"]').on('click', function () {\r\n\t\t\t\t\tconsole.log(\"Requesting Approval\");\r\n\r\n\t\t\t\t\tvar $this = $(this),\r\n\t\t\t\t\t\tmyId = $this.parents('tr').data('eventid'),\r\n\t\t\t\t\t\tdata = { eid: myId };\r\n\r\n\t\t\t\t\tdata = JSON.stringify(data);\r\n\r\n\t\t\t\t\tif (confirm('Are you sure you would like to submit this event for approval?')) {\r\n\t\t\t\t\t\t$.ajax({\r\n\t\t\t\t\t\t\turl: submitforapprovalurl + '?eid=' + myId,\r\n\t\t\t\t\t\t\ttype: 'POST',\r\n\t\t\t\t\t\t\tcontentType: \"application/json; charset=utf-8\",\r\n\t\t\t\t\t\t\tdata: data,\r\n\t\t\t\t\t\t\tsuccess: function (result) {\r\n\t\t\t\t\t\t\t\t//console.log('result', result);\r\n\r\n\t\t\t\t\t\t\t\tif (result.IsError !== false) {\r\n\t\t\t\t\t\t\t\t\t$this.off('click');\r\n\r\n\t\t\t\t\t\t\t\t\t$this.parents('tr').find('.notSumbittedMsg').remove();\r\n\r\n\t\t\t\t\t\t\t\t\t$this.remove();\r\n\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\talert('There was an error\\n' + result.responseJSON.Message);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tvar cancellationNotice = document.getElementsByClassName('cancellation-notice')[0];\r\n\t\t\t\tif (cancellationNotice) {\r\n\t\t\t\t\tcancellationNotice.addEventListener('click', function () {\r\n\t\t\t\t\t\tthis.classList.remove('cancellation-notice--show');\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\t\t\teventCreator: function () {\r\n\t\t\t\tModernizr.load([{\r\n\t\t\t\t\tload: '/js/jquery.peity.min.js',\r\n\t\t\t\t\tcomplete: function () {\r\n\t\t\t\t\t\tswEvents.util.initDeleteEventButton();\r\n\t\t\t\t\t\tswEvents.util.jQueryExtends.modals();\r\n\r\n\t\t\t\t\t\tswEvents.util.tableSortr.init({\r\n\t\t\t\t\t\t\ttableSelector: 'table',\r\n\t\t\t\t\t\t\tignoreHeading: 'thead tr th:last-child'\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t$('img').on('load', function () {\r\n\t\t\t\t\t\t\tvar $this = $(this);\r\n\t\t\t\t\t\t\tif ($this.prop('src').split('.')[1] !== 'gif') {\r\n\t\t\t\t\t\t\t\t$this.addClass('loaded').off('load');\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t$('.toggleGraph').on('click', function (e) {\r\n\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t\tvar $this = $(this);\r\n\t\t\t\t\t\t\tif (!$('.graphPlaceholder + .peity').length) {\r\n\t\t\t\t\t\t\t\tswEvents.util.loadChart({\r\n\t\t\t\t\t\t\t\t\tel: '.graphPlaceholder',\r\n\t\t\t\t\t\t\t\t\tnums: [\r\n\t\t\t\t\t\t\t\t\t\t$('.graph').parent('.event').data('event-attended'),\r\n\t\t\t\t\t\t\t\t\t\t$('.graph').parent('.event').data('event-sent')\r\n\t\t\t\t\t\t\t\t\t],\r\n\t\t\t\t\t\t\t\t\twidth: 200,\r\n\t\t\t\t\t\t\t\t\theight: 200,\r\n\t\t\t\t\t\t\t\t\tinnerRadius: 75\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t$('.graph').fadeToggle('fast');\r\n\t\t\t\t\t\t\t$this.text($this.text() === 'Show Graph' ? 'Hide Graph' : 'Show Graph');\r\n\t\t\t\t\t\t\tif ($this.text() === 'Hide Graph') {\r\n\t\t\t\t\t\t\t\t$('html,body').animate({ scrollTop: $('.graph').offset().top - 200 }, 'fast');\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t$('.eventSummary .event').each(function () {\r\n\t\t\t\t\t\t\tvar $this = $(this);\r\n\t\t\t\t\t\t\tvar mapSrc = swEvents.util.gMapsHelpers.getMapImgUrl({\r\n\t\t\t\t\t\t\t\taddr: $this.find('address').text(),\r\n\t\t\t\t\t\t\t\tzoom: '14',\r\n\t\t\t\t\t\t\t\tsize: '300x300',\r\n\t\t\t\t\t\t\t\tcolor: 'blue'\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t$this.find('.map').prop('src', mapSrc).on('click', function () {\r\n\t\t\t\t\t\t\t\tif (!$('.modal img').length) {\r\n\t\t\t\t\t\t\t\t\tvar img = $('').attr('src', swEvents.util.gMapsHelpers.getMapImgUrl({\r\n\t\t\t\t\t\t\t\t\t\taddr: $(this).parents('.event').find('address').text(),\r\n\t\t\t\t\t\t\t\t\t\tzoom: '17',\r\n\t\t\t\t\t\t\t\t\t\tsize: swEvents.util.pointsBreak.getWidth() <= 500 ? '400x400' : '600x600',\r\n\t\t\t\t\t\t\t\t\t\tcolor: 'blue'\r\n\t\t\t\t\t\t\t\t\t}));\r\n\t\t\t\t\t\t\t\t\t$('.modal .modalInner').append(img);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t$('.modal').showModal().on('modalClosed', function () {\r\n\t\t\t\t\t\t\t\t\t$(this).off('modalClosed').find('img').remove();\r\n\t\t\t\t\t\t\t\t}).find('.closeBtn').on('click', function (e) {\r\n\t\t\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t\t\t\t$(this).off('click');\r\n\t\t\t\t\t\t\t\t\t$('.modal').hideModal();\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}]);\r\n\t\t\t},\r\n\t\t\teventDetails: function () {\r\n\t\t\t\tModernizr.load([{\r\n\t\t\t\t\tcomplete: function () {\r\n\r\n\t\t\t\t\t\tswEvents.util.jQueryExtends.modals();\r\n\r\n\t\t\t\t\t\tif ($('[data-print-style]').length) {\r\n\t\t\t\t\t\t\t$('head').append('');\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t$('.icon-printer').on('click', function () {\r\n\t\t\t\t\t\t\t$('.printDetails').show();\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t$('.printDetails__print-button').on('click', function () {\r\n\t\t\t\t\t\t\tvar header = $('.mainHeader').html(),\r\n\t\t\t\t\t\t\t\tbody = $('.mainContent').html(),\r\n\t\t\t\t\t\t\t\tstyles = $('link'),\r\n\t\t\t\t\t\t\t\tprintWindow = window.open(\"\", \"\", \"\");\r\n\r\n\t\t\t\t\t\t\tprintWindow.document.write('');\r\n\t\t\t\t\t\t\tstyles.each(function (i) {\r\n\t\t\t\t\t\t\t\tprintWindow.document.write('');\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tprintWindow.document.write('');\r\n\t\t\t\t\t\t\tprintWindow.document.write('');\r\n\t\t\t\t\t\t\tprintWindow.document.write('
    ');\r\n\t\t\t\t\t\t\tprintWindow.document.write(header);\r\n\t\t\t\t\t\t\tif ($('.presenterDetails').length <= 0) {\r\n\t\t\t\t\t\t\t\tprintWindow.document.write('
    ');\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\tprintWindow.document.write('
    ');\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tprintWindow.document.write(body);\r\n\t\t\t\t\t\t\tprintWindow.document.write('
    ');\r\n\t\t\t\t\t\t\tprintWindow.document.close();\r\n\t\t\t\t\t\t\tprintWindow.focus();\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tvar mapSrc = swEvents.util.gMapsHelpers.getMapImgUrl({\r\n\t\t\t\t\t\t\taddr: $('.venueMeta').find('address').text(),\r\n\t\t\t\t\t\t\tzoom: '12',\r\n\t\t\t\t\t\t\tsize: '480x480',\r\n\t\t\t\t\t\t\tcolor: 'blue'\r\n\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t$('.venueMeta').find('.map').prop('src', mapSrc).on('click', function () {\r\n\t\t\t\t\t\t\tif (!$('.modal img').length) {\r\n\t\t\t\t\t\t\t\tvar img = $('').attr('src', swEvents.util.gMapsHelpers.getMapImgUrl({\r\n\t\t\t\t\t\t\t\t\taddr: $(this).parents('.venueMeta').find('address').text(),\r\n\t\t\t\t\t\t\t\t\tzoom: swEvents.util.pointsBreak.getWidth() <= 500 ? '16' : '17',\r\n\t\t\t\t\t\t\t\t\tsize: swEvents.util.pointsBreak.getWidth() <= 500 ? '420x420' : '720x720',\r\n\t\t\t\t\t\t\t\t\tcolor: 'blue'\r\n\t\t\t\t\t\t\t\t}));\r\n\t\t\t\t\t\t\t\t$('.modal .modalInner').append(img);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t$('.modal').showModal().on('modalClosed', function () {\r\n\t\t\t\t\t\t\t\t$(this).off('modalClosed').find('img').remove();\r\n\t\t\t\t\t\t\t}).find('.closeBtn').on('click', function (e) {\r\n\t\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t\t\t$(this).off('click');\r\n\t\t\t\t\t\t\t\t$('.modal').hideModal();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tif (document.getElementsByClassName('cancel-prompt')[0]) {\r\n\t\t\t\t\t\t\tvar cancelPrompt = {\r\n\t\t\t\t\t\t\t\teventName: $('.eventName').text(),\r\n\t\t\t\t\t\t\t\tpostURL: $('button[data-action=\"cancel-event\"]').attr('href'),\r\n\t\t\t\t\t\t\t\ttextInput: $('#confirmation'),\r\n\t\t\t\t\t\t\t\tsubmitBtn: $('a[data-action=\"cancel-event\"]'),\r\n\t\t\t\t\t\t\t\texitBtn: $('button[data-action=\"exit-prompt\"]'),\r\n\t\t\t\t\t\t\t\treset: function () {\r\n\t\t\t\t\t\t\t\t\tthis.textInput[0].value = '';\r\n\t\t\t\t\t\t\t\t\tthis.submitBtn.removeClass('btn--red');\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t};\r\n\r\n\r\n\t\t\t\t\t\t\t$(cancelPrompt.submitBtn).on('click', function (e){\r\n\t\t\t\t\t\t\t\tcancelPrompt.submitBtn.replaceWith('Cancelling... ');\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t$('.cancel-prompt__eventName').text(cancelPrompt.eventName);\r\n\r\n\t\t\t\t\t\t\tcancelPrompt.textInput.on('keyup', function (e) {\r\n\t\t\t\t\t\t\t\tif (this.value === 'CONFIRM') {\r\n\t\t\t\t\t\t\t\t\tcancelPrompt.submitBtn.addClass('btn--red')\r\n\t\t\t\t\t\t\t\t} else if (cancelPrompt.submitBtn.hasClass('btn--red')) {\r\n\t\t\t\t\t\t\t\t\tcancelPrompt.submitBtn.removeClass('btn--red');\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\t$('a[data-context=\"cancel-event\"]').on('click', function (e) {\r\n\t\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t$('.cancel-prompt').showModal().on('modalClosed', function () {\r\n\t\t\t\t\t\t\t\t\tcancelPrompt.reset();\r\n\t\t\t\t\t\t\t\t}).find('.closeBtn').on('click', function (e) {\r\n\t\t\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t\t\t\t$(this).off('click');\r\n\t\t\t\t\t\t\t\t\t$('.cancel-prompt').hideModal();\r\n\t\t\t\t\t\t\t\t\tcancelPrompt.reset();\r\n\t\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tcancelPrompt.exitBtn.on('click', function (e) {\r\n\t\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t\t\t$('.cancel-prompt').hideModal();\r\n\t\t\t\t\t\t\t\tcancelPrompt.reset();\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t$('.eventDetails .selectedTemplate .btn.icon-envelop').on('click', function (e) {\r\n\t\t\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\t\tvar myId = $(this).data('eid');\r\n\t\t\t\t\t\t\t$.ajax({\r\n\t\t\t\t\t\t\t\turl: sendproofurl + '?eid=' + myId,\r\n\t\t\t\t\t\t\t\tmethod: 'POST',\r\n\t\t\t\t\t\t\t\tcomplete: function (data) {\r\n\t\t\t\t\t\t\t\t\tconsole.log(data);\r\n\t\t\t\t\t\t\t\t\t//data = JSON.parse(data);\r\n\t\t\t\t\t\t\t\t\tif (data.IsError !== false) {\r\n\t\t\t\t\t\t\t\t\t\t$('.eventDetails .selectedTemplate .btn.icon-envelop').text('Proof Sent');\r\n\t\t\t\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t\t\t\talert('There was an error\\n' + data.responseJSON.Message);\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\t\t\t\t}]);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\t$(function () { swEvents.init($('html').data('page')); });\r\n","//on page load, call function\r\n$(document).ready(function () {\r\n\tif ($('.landingPage').length) {\r\n\t\tregistrationPage();\r\n\t\t$('body').addClass('loaded');\r\n\t}\r\n});\r\n\r\nfunction registrationPage() {\r\n\tvar map,\r\n\t\tmarkers = [],\r\n\t\teventLoc = {};\r\n\r\n\tswEventsUtilGMapsHelpersGetLocationLatLong($('.eventInfo address').text(), function (result) {\r\n\t\teventLoc.lat = result.lat;\r\n\t\teventLoc.lng = result.lng;\r\n\r\n\t\tmap = new google.maps.Map(document.getElementById('map'), {\r\n\t\t\tcenter: {\r\n\t\t\t\tlat: eventLoc.lat,\r\n\t\t\t\tlng: eventLoc.lng\r\n\t\t\t},\r\n\t\t\tzoom: 15,\r\n\t\t\tscrollwheel: false\r\n\t\t});\r\n\t\tswEventsUtilGMapsHelpersCreateMarker({\r\n\t\t\tmarkers: markers,\r\n\t\t\tmap: map,\r\n\t\t\tmarkerCount: 0,\r\n\t\t\tlat: eventLoc.lat,\r\n\t\t\tlng: eventLoc.lng\r\n\t\t});\r\n\t\tswEventsUtilPointsBreakInit({\r\n\t\t\t'W>0': function () { map.setCenter({ lat: eventLoc.lat, lng: eventLoc.lng }); }\r\n\t\t});\r\n\t});\r\n\r\n\t$('.register').on('blur', 'input[name=\"Email\"]', function () {\r\n\t\tvar Email = $(this).val(),\r\n\t\t\tEventID = $(this).parents('fieldset').attr('data-eid');\r\n\r\n\t\tvar data = {\r\n\t\t\tEventID: EventID,\r\n\t\t\tEmail: Email\r\n\t\t};\r\n\r\n\t\tdata = JSON.stringify(data);\r\n\r\n\t\tconsole.log(data);\r\n\t\tif (Email) {\r\n\t\t\t$.ajax({\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tcontentType: \"application/json; charset=utf-8\",\r\n\t\t\t\turl: CheckRegistrantEmail,\r\n\t\t\t\tdata: data,\r\n\t\t\t\tsuccess: function (result) {\r\n\t\t\t\t\t//TODO\r\n\t\t\t\t\t//based on the results, enable/disable the form submit button; display relevant message\r\n\t\t\t\t\t//TODO\r\n\t\t\t\t\tconsole.log(result);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t});\r\n\r\n\t$('#privacyCheck').on('change', function (e) {\r\n\t\tvar state = $(this).prop('checked');\r\n\t\tvar regButton = $('#registerButton');\r\n\t\tif (state) {\r\n\t\t\tregButton.attr('disabled', false);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tregButton.attr('disabled', true);\r\n\t\t}\r\n\t})\r\n};\r\n\r\nfunction swEventsUtilGMapsHelpersGetLocationLatLong(address, cb) {\r\n\tvar latlong;\r\n\tjQuery.support.cors = true;\r\n\tvar geocoder = new google.maps.Geocoder();\r\n\r\n\tgeocoder.geocode({ 'address': address }, function (results, status) {\r\n\t\tif (status === 'OK') {\r\n\t\t\tlatlong = {\r\n\t\t\t\tlat: parseFloat(results[0].geometry.location.lat()),\r\n\t\t\t\tlng: parseFloat(results[0].geometry.location.lng())\r\n\t\t\t};\r\n\r\n\t\t\tcb(latlong);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tconsole.log(\"GMaps Geocode ERROR\");\r\n\t\t}\r\n\t});\r\n}\r\n\r\nfunction swEventsUtilGMapsHelpersCreateMarker(opts) {\r\n\tswEventsUtilJQueryExtendsKThen();\r\n\topts.markers[opts.markerCount] = new google.maps.Marker({\r\n\t\tposition: {\r\n\t\t\tlat: parseFloat(opts.lat),\r\n\t\t\tlng: parseFloat(opts.lng)\r\n\t\t},\r\n\t\tmap: opts.map,\r\n\t\ttitle: opts.eventName\r\n\t});\r\n\tif (opts.showInfo === true) {\r\n\t\topts.markers[opts.markerCount].addListener('click', function () {\r\n\t\t\t$('html,body').animate({ scrollTop: $('.map').offset().top - 50 }, 200, function () {\r\n\t\t\t\topts.map.setZoom(8);\r\n\t\t\t\topts.map.setCenter(opts.markers[opts.markerCount].getPosition());\r\n\t\t\t\topts.info.open(opts.map, opts.markers[opts.markerCount]);\r\n\t\t\t});\r\n\t\t});\r\n\t} else if (opts.showInfo === false && typeof opts.customEvent === 'function') {\r\n\t\topts.markers[opts.markerCount].addListener('click', function () {\r\n\t\t\topts.map.setZoom(8);\r\n\t\t\topts.map.setCenter(opts.markers[opts.markerCount].getPosition());\r\n\t\t\topts.customEvent(opts.markers[opts.markerCount]);\r\n\t\t});\r\n\t}\r\n}\r\n\r\nfunction swEventsUtilJQueryExtendsKThen() {\r\n\tjQuery.fn.kThen = function (time, func, selector) {\r\n\t\tvar me = this, t = typeof time === 'function' ? 0 : time,\r\n\t\t\tf = typeof time === 'function' ? time : func; setTimeout(function () { if (typeof f === 'function') { f.apply(me); } }, t); return selector ? $(selector) : me;\r\n\t};\r\n}\r\n\r\nfunction swEventsUtilPointsBreakInit(context) {\r\n\tvar doIt;\r\n\tdoWork(context);\r\n\twindow.onresize = function () {\r\n\t\tclearTimeout(doIt);\r\n\t\tdoIt = setTimeout(function () { doWork(context); }, time);\r\n\t};\r\n\treturn this;\r\n}\r\n\r\nfunction doWork(context) {\r\n\tvar time = 200;\r\n\tvar W, H;\r\n\tvar andReg = /&&+/g;\r\n\tW = window.innerWidth || document.documentElement.clientWidth;\r\n\tH = window.innerHeight || document.documentElement.clientHeight;\r\n\tfor (var i in context) {\r\n\t\tif (i.charAt(0) === 'W' || i.charAt(0) === 'H') {\r\n\t\t\ti = i.replace(/\\s+/g, '').toUpperCase();\r\n\t\t\tvar f = 0,\r\n\t\t\t\tmyFunc = context[i];\r\n\t\t\tif (i.match(andReg) !== null) {\r\n\t\t\t\tvar tests = i.split(/&&/);\r\n\t\t\t\tfor (var x in tests) {\r\n\t\t\t\t\tif (tests[x].charAt(0) === 'W' || tests[x].charAt(0) === 'H') {\r\n\t\t\t\t\t\tif (breakPointTest(tests[x], W, H) === false) { f = false; }\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\tif (f !== false) { runThis(myFunc(W, H)); }\r\n\t\t\t} else {\r\n\t\t\t\tif (breakPointTest(i, W, H)) { runThis(myFunc(W, H)); }\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\nfunction breakPointTest(bpTest, W, H) {\r\n\tvar type = bpTest.charAt(0) === 'W' ? W : H,\r\n\t\ttest = bpTest[1],\r\n\t\tdims = bpTest.split(bpTest.charAt(1))[1];\r\n\treturn test === '>' && type > dims || test === '<' && type < dims ? true : false;\r\n}\r\n\r\nfunction runThis(fin) {\r\n\tif (typeof fin === 'function') { fin(); }\r\n}","/*! jQuery UI - v1.11.4 - 2015-07-26\r\n* http://jqueryui.com\r\n* Includes: core.js, datepicker.js\r\n* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */\r\n\r\n(function(e){\"function\"==typeof define&&define.amd?define([\"jquery\"],e):e(jQuery)})(function(e){function t(t,s){var n,a,o,r=t.nodeName.toLowerCase();return\"area\"===r?(n=t.parentNode,a=n.name,t.href&&a&&\"map\"===n.nodeName.toLowerCase()?(o=e(\"img[usemap='#\"+a+\"']\")[0],!!o&&i(o)):!1):(/^(input|select|textarea|button|object)$/.test(r)?!t.disabled:\"a\"===r?t.href||s:s)&&i(t)}function i(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return\"hidden\"===e.css(this,\"visibility\")}).length}function s(e){for(var t,i;e.length&&e[0]!==document;){if(t=e.css(\"position\"),(\"absolute\"===t||\"relative\"===t||\"fixed\"===t)&&(i=parseInt(e.css(\"zIndex\"),10),!isNaN(i)&&0!==i))return i;e=e.parent()}return 0}function n(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId=\"ui-datepicker-div\",this._inlineClass=\"ui-datepicker-inline\",this._appendClass=\"ui-datepicker-append\",this._triggerClass=\"ui-datepicker-trigger\",this._dialogClass=\"ui-datepicker-dialog\",this._disableClass=\"ui-datepicker-disabled\",this._unselectableClass=\"ui-datepicker-unselectable\",this._currentClass=\"ui-datepicker-current-day\",this._dayOverClass=\"ui-datepicker-days-cell-over\",this.regional=[],this.regional[\"\"]={closeText:\"Done\",prevText:\"Prev\",nextText:\"Next\",currentText:\"Today\",monthNames:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"],monthNamesShort:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],dayNames:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],dayNamesShort:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],dayNamesMin:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"],weekHeader:\"Wk\",dateFormat:\"mm/dd/yy\",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:\"\"},this._defaults={showOn:\"focus\",showAnim:\"fadeIn\",showOptions:{},defaultDate:null,appendText:\"\",buttonText:\"...\",buttonImage:\"\",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:\"c-10:c+10\",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:\"+10\",minDate:null,maxDate:null,duration:\"fast\",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:\"\",altFormat:\"\",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},e.extend(this._defaults,this.regional[\"\"]),this.regional.en=e.extend(!0,{},this.regional[\"\"]),this.regional[\"en-US\"]=e.extend(!0,{},this.regional.en),this.dpDiv=a(e(\"
    \"))}function a(t){var i=\"button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a\";return t.delegate(i,\"mouseout\",function(){e(this).removeClass(\"ui-state-hover\"),-1!==this.className.indexOf(\"ui-datepicker-prev\")&&e(this).removeClass(\"ui-datepicker-prev-hover\"),-1!==this.className.indexOf(\"ui-datepicker-next\")&&e(this).removeClass(\"ui-datepicker-next-hover\")}).delegate(i,\"mouseover\",o)}function o(){e.datepicker._isDisabledDatepicker(h.inline?h.dpDiv.parent()[0]:h.input[0])||(e(this).parents(\".ui-datepicker-calendar\").find(\"a\").removeClass(\"ui-state-hover\"),e(this).addClass(\"ui-state-hover\"),-1!==this.className.indexOf(\"ui-datepicker-prev\")&&e(this).addClass(\"ui-datepicker-prev-hover\"),-1!==this.className.indexOf(\"ui-datepicker-next\")&&e(this).addClass(\"ui-datepicker-next-hover\"))}function r(t,i){e.extend(t,i);for(var s in i)null==i[s]&&(t[s]=i[s]);return t}e.ui=e.ui||{},e.extend(e.ui,{version:\"1.11.4\",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({scrollParent:function(t){var i=this.css(\"position\"),s=\"absolute\"===i,n=t?/(auto|scroll|hidden)/:/(auto|scroll)/,a=this.parents().filter(function(){var t=e(this);return s&&\"static\"===t.css(\"position\")?!1:n.test(t.css(\"overflow\")+t.css(\"overflow-y\")+t.css(\"overflow-x\"))}).eq(0);return\"fixed\"!==i&&a.length?a:e(this[0].ownerDocument||document)},uniqueId:function(){var e=0;return function(){return this.each(function(){this.id||(this.id=\"ui-id-\"+ ++e)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\\d+$/.test(this.id)&&e(this).removeAttr(\"id\")})}}),e.extend(e.expr[\":\"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,s){return!!e.data(t,s[3])},focusable:function(i){return t(i,!isNaN(e.attr(i,\"tabindex\")))},tabbable:function(i){var s=e.attr(i,\"tabindex\"),n=isNaN(s);return(n||s>=0)&&t(i,!n)}}),e(\"\").outerWidth(1).jquery||e.each([\"Width\",\"Height\"],function(t,i){function s(t,i,s,a){return e.each(n,function(){i-=parseFloat(e.css(t,\"padding\"+this))||0,s&&(i-=parseFloat(e.css(t,\"border\"+this+\"Width\"))||0),a&&(i-=parseFloat(e.css(t,\"margin\"+this))||0)}),i}var n=\"Width\"===i?[\"Left\",\"Right\"]:[\"Top\",\"Bottom\"],a=i.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn[\"inner\"+i]=function(t){return void 0===t?o[\"inner\"+i].call(this):this.each(function(){e(this).css(a,s(this,t)+\"px\")})},e.fn[\"outer\"+i]=function(t,n){return\"number\"!=typeof t?o[\"outer\"+i].call(this,t):this.each(function(){e(this).css(a,s(this,t,!0,n)+\"px\")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e(\"\").data(\"a-b\",\"a\").removeData(\"a-b\").data(\"a-b\")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\\w.]+/.exec(navigator.userAgent.toLowerCase()),e.fn.extend({focus:function(t){return function(i,s){return\"number\"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),s&&s.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),disableSelection:function(){var e=\"onselectstart\"in document.createElement(\"div\")?\"selectstart\":\"mousedown\";return function(){return this.bind(e+\".ui-disableSelection\",function(e){e.preventDefault()})}}(),enableSelection:function(){return this.unbind(\".ui-disableSelection\")},zIndex:function(t){if(void 0!==t)return this.css(\"zIndex\",t);if(this.length)for(var i,s,n=e(this[0]);n.length&&n[0]!==document;){if(i=n.css(\"position\"),(\"absolute\"===i||\"relative\"===i||\"fixed\"===i)&&(s=parseInt(n.css(\"zIndex\"),10),!isNaN(s)&&0!==s))return s;n=n.parent()}return 0}}),e.ui.plugin={add:function(t,i,s){var n,a=e.ui[t].prototype;for(n in s)a.plugins[n]=a.plugins[n]||[],a.plugins[n].push([i,s[n]])},call:function(e,t,i,s){var n,a=e.plugins[t];if(a&&(s||e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType))for(n=0;a.length>n;n++)e.options[a[n][0]]&&a[n][1].apply(e.element,i)}},e.extend(e.ui,{datepicker:{version:\"1.11.4\"}});var h;e.extend(n.prototype,{markerClassName:\"hasDatepicker\",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return r(this._defaults,e||{}),this},_attachDatepicker:function(t,i){var s,n,a;s=t.nodeName.toLowerCase(),n=\"div\"===s||\"span\"===s,t.id||(this.uuid+=1,t.id=\"dp\"+this.uuid),a=this._newInst(e(t),n),a.settings=e.extend({},i||{}),\"input\"===s?this._connectDatepicker(t,a):n&&this._inlineDatepicker(t,a)},_newInst:function(t,i){var s=t[0].id.replace(/([^A-Za-z0-9_\\-])/g,\"\\\\\\\\$1\");return{id:s,input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?a(e(\"
    \")):this.dpDiv}},_connectDatepicker:function(t,i){var s=e(t);i.append=e([]),i.trigger=e([]),s.hasClass(this.markerClassName)||(this._attachments(s,i),s.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp),this._autoSize(i),e.data(t,\"datepicker\",i),i.settings.disabled&&this._disableDatepicker(t))},_attachments:function(t,i){var s,n,a,o=this._get(i,\"appendText\"),r=this._get(i,\"isRTL\");i.append&&i.append.remove(),o&&(i.append=e(\"\"+o+\"\"),t[r?\"before\":\"after\"](i.append)),t.unbind(\"focus\",this._showDatepicker),i.trigger&&i.trigger.remove(),s=this._get(i,\"showOn\"),(\"focus\"===s||\"both\"===s)&&t.focus(this._showDatepicker),(\"button\"===s||\"both\"===s)&&(n=this._get(i,\"buttonText\"),a=this._get(i,\"buttonImage\"),i.trigger=e(this._get(i,\"buttonImageOnly\")?e(\"\").addClass(this._triggerClass).attr({src:a,alt:n,title:n}):e(\"\").addClass(this._triggerClass).html(a?e(\"\").attr({src:a,alt:n,title:n}):n)),t[r?\"before\":\"after\"](i.trigger),i.trigger.click(function(){return e.datepicker._datepickerShowing&&e.datepicker._lastInput===t[0]?e.datepicker._hideDatepicker():e.datepicker._datepickerShowing&&e.datepicker._lastInput!==t[0]?(e.datepicker._hideDatepicker(),e.datepicker._showDatepicker(t[0])):e.datepicker._showDatepicker(t[0]),!1}))},_autoSize:function(e){if(this._get(e,\"autoSize\")&&!e.inline){var t,i,s,n,a=new Date(2009,11,20),o=this._get(e,\"dateFormat\");o.match(/[DM]/)&&(t=function(e){for(i=0,s=0,n=0;e.length>n;n++)e[n].length>i&&(i=e[n].length,s=n);return s},a.setMonth(t(this._get(e,o.match(/MM/)?\"monthNames\":\"monthNamesShort\"))),a.setDate(t(this._get(e,o.match(/DD/)?\"dayNames\":\"dayNamesShort\"))+20-a.getDay())),e.input.attr(\"size\",this._formatDate(e,a).length)}},_inlineDatepicker:function(t,i){var s=e(t);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),e.data(t,\"datepicker\",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(t),i.dpDiv.css(\"display\",\"block\"))},_dialogDatepicker:function(t,i,s,n,a){var o,h,l,u,d,c=this._dialogInst;return c||(this.uuid+=1,o=\"dp\"+this.uuid,this._dialogInput=e(\"\"),this._dialogInput.keydown(this._doKeyDown),e(\"body\").append(this._dialogInput),c=this._dialogInst=this._newInst(this._dialogInput,!1),c.settings={},e.data(this._dialogInput[0],\"datepicker\",c)),r(c.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(c,i):i,this._dialogInput.val(i),this._pos=a?a.length?a:[a.pageX,a.pageY]:null,this._pos||(h=document.documentElement.clientWidth,l=document.documentElement.clientHeight,u=document.documentElement.scrollLeft||document.body.scrollLeft,d=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[h/2-100+u,l/2-150+d]),this._dialogInput.css(\"left\",this._pos[0]+20+\"px\").css(\"top\",this._pos[1]+\"px\"),c.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),e.blockUI&&e.blockUI(this.dpDiv),e.data(this._dialogInput[0],\"datepicker\",c),this},_destroyDatepicker:function(t){var i,s=e(t),n=e.data(t,\"datepicker\");s.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),e.removeData(t,\"datepicker\"),\"input\"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).unbind(\"focus\",this._showDatepicker).unbind(\"keydown\",this._doKeyDown).unbind(\"keypress\",this._doKeyPress).unbind(\"keyup\",this._doKeyUp)):(\"div\"===i||\"span\"===i)&&s.removeClass(this.markerClassName).empty(),h===n&&(h=null))},_enableDatepicker:function(t){var i,s,n=e(t),a=e.data(t,\"datepicker\");n.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),\"input\"===i?(t.disabled=!1,a.trigger.filter(\"button\").each(function(){this.disabled=!1}).end().filter(\"img\").css({opacity:\"1.0\",cursor:\"\"})):(\"div\"===i||\"span\"===i)&&(s=n.children(\".\"+this._inlineClass),s.children().removeClass(\"ui-state-disabled\"),s.find(\"select.ui-datepicker-month, select.ui-datepicker-year\").prop(\"disabled\",!1)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}))},_disableDatepicker:function(t){var i,s,n=e(t),a=e.data(t,\"datepicker\");n.hasClass(this.markerClassName)&&(i=t.nodeName.toLowerCase(),\"input\"===i?(t.disabled=!0,a.trigger.filter(\"button\").each(function(){this.disabled=!0}).end().filter(\"img\").css({opacity:\"0.5\",cursor:\"default\"})):(\"div\"===i||\"span\"===i)&&(s=n.children(\".\"+this._inlineClass),s.children().addClass(\"ui-state-disabled\"),s.find(\"select.ui-datepicker-month, select.ui-datepicker-year\").prop(\"disabled\",!0)),this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}),this._disabledInputs[this._disabledInputs.length]=t)},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;this._disabledInputs.length>t;t++)if(this._disabledInputs[t]===e)return!0;return!1},_getInst:function(t){try{return e.data(t,\"datepicker\")}catch(i){throw\"Missing instance data for this datepicker\"}},_optionDatepicker:function(t,i,s){var n,a,o,h,l=this._getInst(t);return 2===arguments.length&&\"string\"==typeof i?\"defaults\"===i?e.extend({},e.datepicker._defaults):l?\"all\"===i?e.extend({},l.settings):this._get(l,i):null:(n=i||{},\"string\"==typeof i&&(n={},n[i]=s),l&&(this._curInst===l&&this._hideDatepicker(),a=this._getDateDatepicker(t,!0),o=this._getMinMaxDate(l,\"min\"),h=this._getMinMaxDate(l,\"max\"),r(l.settings,n),null!==o&&void 0!==n.dateFormat&&void 0===n.minDate&&(l.settings.minDate=this._formatDate(l,o)),null!==h&&void 0!==n.dateFormat&&void 0===n.maxDate&&(l.settings.maxDate=this._formatDate(l,h)),\"disabled\"in n&&(n.disabled?this._disableDatepicker(t):this._enableDatepicker(t)),this._attachments(e(t),l),this._autoSize(l),this._setDate(l,a),this._updateAlternate(l),this._updateDatepicker(l)),void 0)},_changeDatepicker:function(e,t,i){this._optionDatepicker(e,t,i)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var i=this._getInst(e);i&&(this._setDate(i,t),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(e,t){var i=this._getInst(e);return i&&!i.inline&&this._setDateFromField(i,t),i?this._getDate(i):null},_doKeyDown:function(t){var i,s,n,a=e.datepicker._getInst(t.target),o=!0,r=a.dpDiv.is(\".ui-datepicker-rtl\");if(a._keyEvent=!0,e.datepicker._datepickerShowing)switch(t.keyCode){case 9:e.datepicker._hideDatepicker(),o=!1;break;case 13:return n=e(\"td.\"+e.datepicker._dayOverClass+\":not(.\"+e.datepicker._currentClass+\")\",a.dpDiv),n[0]&&e.datepicker._selectDay(t.target,a.selectedMonth,a.selectedYear,n[0]),i=e.datepicker._get(a,\"onSelect\"),i?(s=e.datepicker._formatDate(a),i.apply(a.input?a.input[0]:null,[s,a])):e.datepicker._hideDatepicker(),!1;case 27:e.datepicker._hideDatepicker();break;case 33:e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(a,\"stepBigMonths\"):-e.datepicker._get(a,\"stepMonths\"),\"M\");break;case 34:e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(a,\"stepBigMonths\"):+e.datepicker._get(a,\"stepMonths\"),\"M\");break;case 35:(t.ctrlKey||t.metaKey)&&e.datepicker._clearDate(t.target),o=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&e.datepicker._gotoToday(t.target),o=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,r?1:-1,\"D\"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(a,\"stepBigMonths\"):-e.datepicker._get(a,\"stepMonths\"),\"M\");break;case 38:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,-7,\"D\"),o=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,r?-1:1,\"D\"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(a,\"stepBigMonths\"):+e.datepicker._get(a,\"stepMonths\"),\"M\");break;case 40:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,7,\"D\"),o=t.ctrlKey||t.metaKey;break;default:o=!1}else 36===t.keyCode&&t.ctrlKey?e.datepicker._showDatepicker(this):o=!1;o&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(t){var i,s,n=e.datepicker._getInst(t.target);return e.datepicker._get(n,\"constrainInput\")?(i=e.datepicker._possibleChars(e.datepicker._get(n,\"dateFormat\")),s=String.fromCharCode(null==t.charCode?t.keyCode:t.charCode),t.ctrlKey||t.metaKey||\" \">s||!i||i.indexOf(s)>-1):void 0},_doKeyUp:function(t){var i,s=e.datepicker._getInst(t.target);if(s.input.val()!==s.lastVal)try{i=e.datepicker.parseDate(e.datepicker._get(s,\"dateFormat\"),s.input?s.input.val():null,e.datepicker._getFormatConfig(s)),i&&(e.datepicker._setDateFromField(s),e.datepicker._updateAlternate(s),e.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(t){if(t=t.target||t,\"input\"!==t.nodeName.toLowerCase()&&(t=e(\"input\",t.parentNode)[0]),!e.datepicker._isDisabledDatepicker(t)&&e.datepicker._lastInput!==t){var i,n,a,o,h,l,u;i=e.datepicker._getInst(t),e.datepicker._curInst&&e.datepicker._curInst!==i&&(e.datepicker._curInst.dpDiv.stop(!0,!0),i&&e.datepicker._datepickerShowing&&e.datepicker._hideDatepicker(e.datepicker._curInst.input[0])),n=e.datepicker._get(i,\"beforeShow\"),a=n?n.apply(t,[t,i]):{},a!==!1&&(r(i.settings,a),i.lastVal=null,e.datepicker._lastInput=t,e.datepicker._setDateFromField(i),e.datepicker._inDialog&&(t.value=\"\"),e.datepicker._pos||(e.datepicker._pos=e.datepicker._findPos(t),e.datepicker._pos[1]+=t.offsetHeight),o=!1,e(t).parents().each(function(){return o|=\"fixed\"===e(this).css(\"position\"),!o}),h={left:e.datepicker._pos[0],top:e.datepicker._pos[1]},e.datepicker._pos=null,i.dpDiv.empty(),i.dpDiv.css({position:\"absolute\",display:\"block\",top:\"-1000px\"}),e.datepicker._updateDatepicker(i),h=e.datepicker._checkOffset(i,h,o),i.dpDiv.css({position:e.datepicker._inDialog&&e.blockUI?\"static\":o?\"fixed\":\"absolute\",display:\"none\",left:h.left+\"px\",top:h.top+\"px\"}),i.inline||(l=e.datepicker._get(i,\"showAnim\"),u=e.datepicker._get(i,\"duration\"),i.dpDiv.css(\"z-index\",s(e(t))+1),e.datepicker._datepickerShowing=!0,e.effects&&e.effects.effect[l]?i.dpDiv.show(l,e.datepicker._get(i,\"showOptions\"),u):i.dpDiv[l||\"show\"](l?u:null),e.datepicker._shouldFocusInput(i)&&i.input.focus(),e.datepicker._curInst=i))}},_updateDatepicker:function(t){this.maxRows=4,h=t,t.dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t);var i,s=this._getNumberOfMonths(t),n=s[1],a=17,r=t.dpDiv.find(\".\"+this._dayOverClass+\" a\");r.length>0&&o.apply(r.get(0)),t.dpDiv.removeClass(\"ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4\").width(\"\"),n>1&&t.dpDiv.addClass(\"ui-datepicker-multi-\"+n).css(\"width\",a*n+\"em\"),t.dpDiv[(1!==s[0]||1!==s[1]?\"add\":\"remove\")+\"Class\"](\"ui-datepicker-multi\"),t.dpDiv[(this._get(t,\"isRTL\")?\"add\":\"remove\")+\"Class\"](\"ui-datepicker-rtl\"),t===e.datepicker._curInst&&e.datepicker._datepickerShowing&&e.datepicker._shouldFocusInput(t)&&t.input.focus(),t.yearshtml&&(i=t.yearshtml,setTimeout(function(){i===t.yearshtml&&t.yearshtml&&t.dpDiv.find(\"select.ui-datepicker-year:first\").replaceWith(t.yearshtml),i=t.yearshtml=null},0))},_shouldFocusInput:function(e){return e.input&&e.input.is(\":visible\")&&!e.input.is(\":disabled\")&&!e.input.is(\":focus\")},_checkOffset:function(t,i,s){var n=t.dpDiv.outerWidth(),a=t.dpDiv.outerHeight(),o=t.input?t.input.outerWidth():0,r=t.input?t.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:e(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:e(document).scrollTop());return i.left-=this._get(t,\"isRTL\")?n-o:0,i.left-=s&&i.left===t.input.offset().left?e(document).scrollLeft():0,i.top-=s&&i.top===t.input.offset().top+r?e(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+a>l&&l>a?Math.abs(a+r):0),i},_findPos:function(t){for(var i,s=this._getInst(t),n=this._get(s,\"isRTL\");t&&(\"hidden\"===t.type||1!==t.nodeType||e.expr.filters.hidden(t));)t=t[n?\"previousSibling\":\"nextSibling\"];return i=e(t).offset(),[i.left,i.top]},_hideDatepicker:function(t){var i,s,n,a,o=this._curInst;!o||t&&o!==e.data(t,\"datepicker\")||this._datepickerShowing&&(i=this._get(o,\"showAnim\"),s=this._get(o,\"duration\"),n=function(){e.datepicker._tidyDialog(o)},e.effects&&(e.effects.effect[i]||e.effects[i])?o.dpDiv.hide(i,e.datepicker._get(o,\"showOptions\"),s,n):o.dpDiv[\"slideDown\"===i?\"slideUp\":\"fadeIn\"===i?\"fadeOut\":\"hide\"](i?s:null,n),i||n(),this._datepickerShowing=!1,a=this._get(o,\"onClose\"),a&&a.apply(o.input?o.input[0]:null,[o.input?o.input.val():\"\",o]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:\"absolute\",left:\"0\",top:\"-100px\"}),e.blockUI&&(e.unblockUI(),e(\"body\").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).unbind(\".ui-datepicker-calendar\")},_checkExternalClick:function(t){if(e.datepicker._curInst){var i=e(t.target),s=e.datepicker._getInst(i[0]);(i[0].id!==e.datepicker._mainDivId&&0===i.parents(\"#\"+e.datepicker._mainDivId).length&&!i.hasClass(e.datepicker.markerClassName)&&!i.closest(\".\"+e.datepicker._triggerClass).length&&e.datepicker._datepickerShowing&&(!e.datepicker._inDialog||!e.blockUI)||i.hasClass(e.datepicker.markerClassName)&&e.datepicker._curInst!==s)&&e.datepicker._hideDatepicker()}},_adjustDate:function(t,i,s){var n=e(t),a=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(a,i+(\"M\"===s?this._get(a,\"showCurrentAtPos\"):0),s),this._updateDatepicker(a))},_gotoToday:function(t){var i,s=e(t),n=this._getInst(s[0]);this._get(n,\"gotoCurrent\")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(t,i,s){var n=e(t),a=this._getInst(n[0]);a[\"selected\"+(\"M\"===s?\"Month\":\"Year\")]=a[\"draw\"+(\"M\"===s?\"Month\":\"Year\")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(a),this._adjustDate(n)},_selectDay:function(t,i,s,n){var a,o=e(t);e(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(o[0])||(a=this._getInst(o[0]),a.selectedDay=a.currentDay=e(\"a\",n).html(),a.selectedMonth=a.currentMonth=i,a.selectedYear=a.currentYear=s,this._selectDate(t,this._formatDate(a,a.currentDay,a.currentMonth,a.currentYear)))},_clearDate:function(t){var i=e(t);this._selectDate(i,\"\")},_selectDate:function(t,i){var s,n=e(t),a=this._getInst(n[0]);i=null!=i?i:this._formatDate(a),a.input&&a.input.val(i),this._updateAlternate(a),s=this._get(a,\"onSelect\"),s?s.apply(a.input?a.input[0]:null,[i,a]):a.input&&a.input.trigger(\"change\"),a.inline?this._updateDatepicker(a):(this._hideDatepicker(),this._lastInput=a.input[0],\"object\"!=typeof a.input[0]&&a.input.focus(),this._lastInput=null)},_updateAlternate:function(t){var i,s,n,a=this._get(t,\"altField\");a&&(i=this._get(t,\"altFormat\")||this._get(t,\"dateFormat\"),s=this._getDate(t),n=this.formatDate(i,s,this._getFormatConfig(t)),e(a).each(function(){e(this).val(n)}))},noWeekends:function(e){var t=e.getDay();return[t>0&&6>t,\"\"]},iso8601Week:function(e){var t,i=new Date(e.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),t=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((t-i)/864e5)/7)+1},parseDate:function(t,i,s){if(null==t||null==i)throw\"Invalid arguments\";if(i=\"object\"==typeof i?\"\"+i:i+\"\",\"\"===i)return null;var n,a,o,r,h=0,l=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,u=\"string\"!=typeof l?l:(new Date).getFullYear()%100+parseInt(l,10),d=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,c=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,m=-1,g=-1,v=-1,y=-1,b=!1,_=function(e){var i=t.length>n+1&&t.charAt(n+1)===e;return i&&n++,i},x=function(e){var t=_(e),s=\"@\"===e?14:\"!\"===e?20:\"y\"===e&&t?4:\"o\"===e?3:2,n=\"y\"===e?s:1,a=RegExp(\"^\\\\d{\"+n+\",\"+s+\"}\"),o=i.substring(h).match(a);if(!o)throw\"Missing number at position \"+h;return h+=o[0].length,parseInt(o[0],10)},w=function(t,s,n){var a=-1,o=e.map(_(t)?n:s,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)});if(e.each(o,function(e,t){var s=t[1];return i.substr(h,s.length).toLowerCase()===s.toLowerCase()?(a=t[0],h+=s.length,!1):void 0}),-1!==a)return a+1;throw\"Unknown name at position \"+h},k=function(){if(i.charAt(h)!==t.charAt(n))throw\"Unexpected literal at position \"+h;h++};for(n=0;t.length>n;n++)if(b)\"'\"!==t.charAt(n)||_(\"'\")?k():b=!1;else switch(t.charAt(n)){case\"d\":v=x(\"d\");break;case\"D\":w(\"D\",d,c);break;case\"o\":y=x(\"o\");break;case\"m\":g=x(\"m\");break;case\"M\":g=w(\"M\",p,f);break;case\"y\":m=x(\"y\");break;case\"@\":r=new Date(x(\"@\")),m=r.getFullYear(),g=r.getMonth()+1,v=r.getDate();break;case\"!\":r=new Date((x(\"!\")-this._ticksTo1970)/1e4),m=r.getFullYear(),g=r.getMonth()+1,v=r.getDate();break;case\"'\":_(\"'\")?k():b=!0;break;default:k()}if(i.length>h&&(o=i.substr(h),!/^\\s+/.test(o)))throw\"Extra/unparsed characters found in date: \"+o;if(-1===m?m=(new Date).getFullYear():100>m&&(m+=(new Date).getFullYear()-(new Date).getFullYear()%100+(u>=m?0:-100)),y>-1)for(g=1,v=y;;){if(a=this._getDaysInMonth(m,g-1),a>=v)break;g++,v-=a}if(r=this._daylightSavingAdjust(new Date(m,g-1,v)),r.getFullYear()!==m||r.getMonth()+1!==g||r.getDate()!==v)throw\"Invalid date\";return r},ATOM:\"yy-mm-dd\",COOKIE:\"D, dd M yy\",ISO_8601:\"yy-mm-dd\",RFC_822:\"D, d M y\",RFC_850:\"DD, dd-M-y\",RFC_1036:\"D, d M y\",RFC_1123:\"D, d M yy\",RFC_2822:\"D, d M yy\",RSS:\"D, d M y\",TICKS:\"!\",TIMESTAMP:\"@\",W3C:\"yy-mm-dd\",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(e,t,i){if(!t)return\"\";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,a=(i?i.dayNames:null)||this._defaults.dayNames,o=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(t){var i=e.length>s+1&&e.charAt(s+1)===t;return i&&s++,i},l=function(e,t,i){var s=\"\"+t;if(h(e))for(;i>s.length;)s=\"0\"+s;return s},u=function(e,t,i,s){return h(e)?s[t]:i[t]},d=\"\",c=!1;if(t)for(s=0;e.length>s;s++)if(c)\"'\"!==e.charAt(s)||h(\"'\")?d+=e.charAt(s):c=!1;else switch(e.charAt(s)){case\"d\":d+=l(\"d\",t.getDate(),2);break;case\"D\":d+=u(\"D\",t.getDay(),n,a);break;case\"o\":d+=l(\"o\",Math.round((new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime()-new Date(t.getFullYear(),0,0).getTime())/864e5),3);break;case\"m\":d+=l(\"m\",t.getMonth()+1,2);break;case\"M\":d+=u(\"M\",t.getMonth(),o,r);break;case\"y\":d+=h(\"y\")?t.getFullYear():(10>t.getYear()%100?\"0\":\"\")+t.getYear()%100;break;case\"@\":d+=t.getTime();break;case\"!\":d+=1e4*t.getTime()+this._ticksTo1970;break;case\"'\":h(\"'\")?d+=\"'\":c=!0;break;default:d+=e.charAt(s)}return d},_possibleChars:function(e){var t,i=\"\",s=!1,n=function(i){var s=e.length>t+1&&e.charAt(t+1)===i;return s&&t++,s};for(t=0;e.length>t;t++)if(s)\"'\"!==e.charAt(t)||n(\"'\")?i+=e.charAt(t):s=!1;else switch(e.charAt(t)){case\"d\":case\"m\":case\"y\":case\"@\":i+=\"0123456789\";break;case\"D\":case\"M\":return null;case\"'\":n(\"'\")?i+=\"'\":s=!0;break;default:i+=e.charAt(t)}return i},_get:function(e,t){return void 0!==e.settings[t]?e.settings[t]:this._defaults[t]},_setDateFromField:function(e,t){if(e.input.val()!==e.lastVal){var i=this._get(e,\"dateFormat\"),s=e.lastVal=e.input?e.input.val():null,n=this._getDefaultDate(e),a=n,o=this._getFormatConfig(e);try{a=this.parseDate(i,s,o)||n}catch(r){s=t?\"\":s}e.selectedDay=a.getDate(),e.drawMonth=e.selectedMonth=a.getMonth(),e.drawYear=e.selectedYear=a.getFullYear(),e.currentDay=s?a.getDate():0,e.currentMonth=s?a.getMonth():0,e.currentYear=s?a.getFullYear():0,this._adjustInstDate(e)}},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,\"defaultDate\"),new Date))},_determineDate:function(t,i,s){var n=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},a=function(i){try{return e.datepicker.parseDate(e.datepicker._get(t,\"dateFormat\"),i,e.datepicker._getFormatConfig(t))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?e.datepicker._getDate(t):null)||new Date,a=n.getFullYear(),o=n.getMonth(),r=n.getDate(),h=/([+\\-]?[0-9]+)\\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||\"d\"){case\"d\":case\"D\":r+=parseInt(l[1],10);break;case\"w\":case\"W\":r+=7*parseInt(l[1],10);break;case\"m\":case\"M\":o+=parseInt(l[1],10),r=Math.min(r,e.datepicker._getDaysInMonth(a,o));break;case\"y\":case\"Y\":a+=parseInt(l[1],10),r=Math.min(r,e.datepicker._getDaysInMonth(a,o))}l=h.exec(i)}return new Date(a,o,r)},o=null==i||\"\"===i?s:\"string\"==typeof i?a(i):\"number\"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return o=o&&\"Invalid Date\"==\"\"+o?s:o,o&&(o.setHours(0),o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0)),this._daylightSavingAdjust(o)},_daylightSavingAdjust:function(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,i){var s=!t,n=e.selectedMonth,a=e.selectedYear,o=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=o.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=o.getMonth(),e.drawYear=e.selectedYear=e.currentYear=o.getFullYear(),n===e.selectedMonth&&a===e.selectedYear||i||this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(s?\"\":this._formatDate(e))},_getDate:function(e){var t=!e.currentYear||e.input&&\"\"===e.input.val()?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return t},_attachHandlers:function(t){var i=this._get(t,\"stepMonths\"),s=\"#\"+t.id.replace(/\\\\\\\\/g,\"\\\\\");t.dpDiv.find(\"[data-handler]\").map(function(){var t={prev:function(){e.datepicker._adjustDate(s,-i,\"M\")},next:function(){e.datepicker._adjustDate(s,+i,\"M\")},hide:function(){e.datepicker._hideDatepicker()},today:function(){e.datepicker._gotoToday(s)},selectDay:function(){return e.datepicker._selectDay(s,+this.getAttribute(\"data-month\"),+this.getAttribute(\"data-year\"),this),!1},selectMonth:function(){return e.datepicker._selectMonthYear(s,this,\"M\"),!1},selectYear:function(){return e.datepicker._selectMonthYear(s,this,\"Y\"),!1}};e(this).bind(this.getAttribute(\"data-event\"),t[this.getAttribute(\"data-handler\")])})},_generateHTML:function(e){var t,i,s,n,a,o,r,h,l,u,d,c,p,f,m,g,v,y,b,_,x,w,k,T,D,S,N,M,C,P,A,I,H,z,F,E,W,O,L,j=new Date,R=this._daylightSavingAdjust(new Date(j.getFullYear(),j.getMonth(),j.getDate())),Y=this._get(e,\"isRTL\"),J=this._get(e,\"showButtonPanel\"),B=this._get(e,\"hideIfNoPrevNext\"),K=this._get(e,\"navigationAsDateFormat\"),V=this._getNumberOfMonths(e),U=this._get(e,\"showCurrentAtPos\"),q=this._get(e,\"stepMonths\"),G=1!==V[0]||1!==V[1],X=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),Q=this._getMinMaxDate(e,\"min\"),$=this._getMinMaxDate(e,\"max\"),Z=e.drawMonth-U,et=e.drawYear;if(0>Z&&(Z+=12,et--),$)for(t=this._daylightSavingAdjust(new Date($.getFullYear(),$.getMonth()-V[0]*V[1]+1,$.getDate())),t=Q&&Q>t?Q:t;this._daylightSavingAdjust(new Date(et,Z,1))>t;)Z--,0>Z&&(Z=11,et--);for(e.drawMonth=Z,e.drawYear=et,i=this._get(e,\"prevText\"),i=K?this.formatDate(i,this._daylightSavingAdjust(new Date(et,Z-q,1)),this._getFormatConfig(e)):i,s=this._canAdjustMonth(e,-1,et,Z)?\"
    \"+i+\"\":B?\"\":\"\"+i+\"\",n=this._get(e,\"nextText\"),n=K?this.formatDate(n,this._daylightSavingAdjust(new Date(et,Z+q,1)),this._getFormatConfig(e)):n,a=this._canAdjustMonth(e,1,et,Z)?\"\"+n+\"\":B?\"\":\"\"+n+\"\",o=this._get(e,\"currentText\"),r=this._get(e,\"gotoCurrent\")&&e.currentDay?X:R,o=K?this.formatDate(o,r,this._getFormatConfig(e)):o,h=e.inline?\"\":\"\",l=J?\"
    \"+(Y?h:\"\")+(this._isInRange(e,r)?\"\":\"\")+(Y?\"\":h)+\"
    \":\"\",u=parseInt(this._get(e,\"firstDay\"),10),u=isNaN(u)?0:u,d=this._get(e,\"showWeek\"),c=this._get(e,\"dayNames\"),p=this._get(e,\"dayNamesMin\"),f=this._get(e,\"monthNames\"),m=this._get(e,\"monthNamesShort\"),g=this._get(e,\"beforeShowDay\"),v=this._get(e,\"showOtherMonths\"),y=this._get(e,\"selectOtherMonths\"),b=this._getDefaultDate(e),_=\"\",w=0;V[0]>w;w++){for(k=\"\",this.maxRows=4,T=0;V[1]>T;T++){if(D=this._daylightSavingAdjust(new Date(et,Z,e.selectedDay)),S=\" ui-corner-all\",N=\"\",G){if(N+=\"
    \"}for(N+=\"
    \"+(/all|left/.test(S)&&0===w?Y?a:s:\"\")+(/all|right/.test(S)&&0===w?Y?s:a:\"\")+this._generateMonthYearHeader(e,Z,et,Q,$,w>0||T>0,f,m)+\"
    \"+\"\",M=d?\"\":\"\",x=0;7>x;x++)C=(x+u)%7,M+=\"\";for(N+=M+\"\",P=this._getDaysInMonth(et,Z),et===e.selectedYear&&Z===e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,P)),A=(this._getFirstDayOfMonth(et,Z)-u+7)%7,I=Math.ceil((A+P)/7),H=G?this.maxRows>I?this.maxRows:I:I,this.maxRows=H,z=this._daylightSavingAdjust(new Date(et,Z,1-A)),F=0;H>F;F++){for(N+=\"\",E=d?\"\":\"\",x=0;7>x;x++)W=g?g.apply(e.input?e.input[0]:null,[z]):[!0,\"\"],O=z.getMonth()!==Z,L=O&&!y||!W[0]||Q&&Q>z||$&&z>$,E+=\"\",z.setDate(z.getDate()+1),z=this._daylightSavingAdjust(z);N+=E+\"\"}Z++,Z>11&&(Z=0,et++),N+=\"
    \"+this._get(e,\"weekHeader\")+\"=5?\" class='ui-datepicker-week-end'\":\"\")+\">\"+\"\"+p[C]+\"
    \"+this._get(e,\"calculateWeek\")(z)+\"\"+(O&&!v?\" \":L?\"\"+z.getDate()+\"\":\"\"+z.getDate()+\"\")+\"
    \"+(G?\"
    \"+(V[0]>0&&T===V[1]-1?\"
    \":\"\"):\"\"),k+=N}_+=k}return _+=l,e._keyEvent=!1,_},_generateMonthYearHeader:function(e,t,i,s,n,a,o,r){var h,l,u,d,c,p,f,m,g=this._get(e,\"changeMonth\"),v=this._get(e,\"changeYear\"),y=this._get(e,\"showMonthAfterYear\"),b=\"
    \",_=\"\";if(a||!g)_+=\"\"+o[t]+\"\";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,_+=\"\"}if(y||(b+=_+(!a&&g&&v?\"\":\" \")),!e.yearshtml)if(e.yearshtml=\"\",a||!v)b+=\"\"+i+\"\";else{for(d=this._get(e,\"yearRange\").split(\":\"),c=(new Date).getFullYear(),p=function(e){var t=e.match(/c[+\\-].*/)?i+parseInt(e.substring(1),10):e.match(/[+\\-].*/)?c+parseInt(e,10):parseInt(e,10);return isNaN(t)?c:t},f=p(d[0]),m=Math.max(f,p(d[1]||\"\")),f=s?Math.max(f,s.getFullYear()):f,m=n?Math.min(m,n.getFullYear()):m,e.yearshtml+=\"\",b+=e.yearshtml,e.yearshtml=null}return b+=this._get(e,\"yearSuffix\"),y&&(b+=(!a&&g&&v?\"\":\" \")+_),b+=\"
    \"},_adjustInstDate:function(e,t,i){var s=e.drawYear+(\"Y\"===i?t:0),n=e.drawMonth+(\"M\"===i?t:0),a=Math.min(e.selectedDay,this._getDaysInMonth(s,n))+(\"D\"===i?t:0),o=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(s,n,a)));e.selectedDay=o.getDate(),e.drawMonth=e.selectedMonth=o.getMonth(),e.drawYear=e.selectedYear=o.getFullYear(),(\"M\"===i||\"Y\"===i)&&this._notifyChange(e)},_restrictMinMax:function(e,t){var i=this._getMinMaxDate(e,\"min\"),s=this._getMinMaxDate(e,\"max\"),n=i&&i>t?i:t;return s&&n>s?s:n},_notifyChange:function(e){var t=this._get(e,\"onChangeMonthYear\");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,\"numberOfMonths\");return null==t?[1,1]:\"number\"==typeof t?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+\"Date\"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return new Date(e,t,1).getDay()},_canAdjustMonth:function(e,t,i,s){var n=this._getNumberOfMonths(e),a=this._daylightSavingAdjust(new Date(i,s+(0>t?t:n[0]*n[1]),1));return 0>t&&a.setDate(this._getDaysInMonth(a.getFullYear(),a.getMonth())),this._isInRange(e,a)},_isInRange:function(e,t){var i,s,n=this._getMinMaxDate(e,\"min\"),a=this._getMinMaxDate(e,\"max\"),o=null,r=null,h=this._get(e,\"yearRange\");return h&&(i=h.split(\":\"),s=(new Date).getFullYear(),o=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\\-].*/)&&(o+=s),i[1].match(/[+\\-].*/)&&(r+=s)),(!n||t.getTime()>=n.getTime())&&(!a||t.getTime()<=a.getTime())&&(!o||t.getFullYear()>=o)&&(!r||r>=t.getFullYear())},_getFormatConfig:function(e){var t=this._get(e,\"shortYearCutoff\");return t=\"string\"!=typeof t?t:(new Date).getFullYear()%100+parseInt(t,10),{shortYearCutoff:t,dayNamesShort:this._get(e,\"dayNamesShort\"),dayNames:this._get(e,\"dayNames\"),monthNamesShort:this._get(e,\"monthNamesShort\"),monthNames:this._get(e,\"monthNames\")}},_formatDate:function(e,t,i,s){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var n=t?\"object\"==typeof t?t:this._daylightSavingAdjust(new Date(s,i,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,\"dateFormat\"),n,this._getFormatConfig(e))}}),e.fn.datepicker=function(t){if(!this.length)return this;e.datepicker.initialized||(e(document).mousedown(e.datepicker._checkExternalClick),e.datepicker.initialized=!0),0===e(\"#\"+e.datepicker._mainDivId).length&&e(\"body\").append(e.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return\"string\"!=typeof t||\"isDisabled\"!==t&&\"getDate\"!==t&&\"widget\"!==t?\"option\"===t&&2===arguments.length&&\"string\"==typeof arguments[1]?e.datepicker[\"_\"+t+\"Datepicker\"].apply(e.datepicker,[this[0]].concat(i)):this.each(function(){\"string\"==typeof t?e.datepicker[\"_\"+t+\"Datepicker\"].apply(e.datepicker,[this].concat(i)):e.datepicker._attachDatepicker(this,t)}):e.datepicker[\"_\"+t+\"Datepicker\"].apply(e.datepicker,[this[0]].concat(i))},e.datepicker=new n,e.datepicker.initialized=!1,e.datepicker.uuid=(new Date).getTime(),e.datepicker.version=\"1.11.4\",e.datepicker});","/*! jQuery UI - v1.11.1+CommonJS - 2014-09-17\r\n* http://jqueryui.com\r\n* Includes: widget.js\r\n* Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */\r\n\r\n(function( factory ) {\r\n\tif ( typeof define === \"function\" && define.amd ) {\r\n\r\n\t\t// AMD. Register as an anonymous module.\r\n\t\tdefine([ \"jquery\" ], factory );\r\n\r\n\t} else if (typeof exports === \"object\") {\r\n\t\t// Node/CommonJS:\r\n\t\tfactory(require(\"jquery\"));\r\n\r\n\t} else {\r\n\r\n\t\t// Browser globals\r\n\t\tfactory( jQuery );\r\n\t}\r\n}(function( $ ) {\r\n/*!\r\n * jQuery UI Widget 1.11.1\r\n * http://jqueryui.com\r\n *\r\n * Copyright 2014 jQuery Foundation and other contributors\r\n * Released under the MIT license.\r\n * http://jquery.org/license\r\n *\r\n * http://api.jqueryui.com/jQuery.widget/\r\n */\r\n\r\n\r\nvar widget_uuid = 0,\r\n\twidget_slice = Array.prototype.slice;\r\n\r\n$.cleanData = (function( orig ) {\r\n\treturn function( elems ) {\r\n\t\tvar events, elem, i;\r\n\t\tfor ( i = 0; (elem = elems[i]) != null; i++ ) {\r\n\t\t\ttry {\r\n\r\n\t\t\t\t// Only trigger remove when necessary to save time\r\n\t\t\t\tevents = $._data( elem, \"events\" );\r\n\t\t\t\tif ( events && events.remove ) {\r\n\t\t\t\t\t$( elem ).triggerHandler( \"remove\" );\r\n\t\t\t\t}\r\n\r\n\t\t\t// http://bugs.jquery.com/ticket/8235\r\n\t\t\t} catch( e ) {}\r\n\t\t}\r\n\t\torig( elems );\r\n\t};\r\n})( $.cleanData );\r\n\r\n$.widget = function( name, base, prototype ) {\r\n\tvar fullName, existingConstructor, constructor, basePrototype,\r\n\t\t// proxiedPrototype allows the provided prototype to remain unmodified\r\n\t\t// so that it can be used as a mixin for multiple widgets (#8876)\r\n\t\tproxiedPrototype = {},\r\n\t\tnamespace = name.split( \".\" )[ 0 ];\r\n\r\n\tname = name.split( \".\" )[ 1 ];\r\n\tfullName = namespace + \"-\" + name;\r\n\r\n\tif ( !prototype ) {\r\n\t\tprototype = base;\r\n\t\tbase = $.Widget;\r\n\t}\r\n\r\n\t// create selector for plugin\r\n\t$.expr[ \":\" ][ fullName.toLowerCase() ] = function( elem ) {\r\n\t\treturn !!$.data( elem, fullName );\r\n\t};\r\n\r\n\t$[ namespace ] = $[ namespace ] || {};\r\n\texistingConstructor = $[ namespace ][ name ];\r\n\tconstructor = $[ namespace ][ name ] = function( options, element ) {\r\n\t\t// allow instantiation without \"new\" keyword\r\n\t\tif ( !this._createWidget ) {\r\n\t\t\treturn new constructor( options, element );\r\n\t\t}\r\n\r\n\t\t// allow instantiation without initializing for simple inheritance\r\n\t\t// must use \"new\" keyword (the code above always passes args)\r\n\t\tif ( arguments.length ) {\r\n\t\t\tthis._createWidget( options, element );\r\n\t\t}\r\n\t};\r\n\t// extend with the existing constructor to carry over any static properties\r\n\t$.extend( constructor, existingConstructor, {\r\n\t\tversion: prototype.version,\r\n\t\t// copy the object used to create the prototype in case we need to\r\n\t\t// redefine the widget later\r\n\t\t_proto: $.extend( {}, prototype ),\r\n\t\t// track widgets that inherit from this widget in case this widget is\r\n\t\t// redefined after a widget inherits from it\r\n\t\t_childConstructors: []\r\n\t});\r\n\r\n\tbasePrototype = new base();\r\n\t// we need to make the options hash a property directly on the new instance\r\n\t// otherwise we'll modify the options hash on the prototype that we're\r\n\t// inheriting from\r\n\tbasePrototype.options = $.widget.extend( {}, basePrototype.options );\r\n\t$.each( prototype, function( prop, value ) {\r\n\t\tif ( !$.isFunction( value ) ) {\r\n\t\t\tproxiedPrototype[ prop ] = value;\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tproxiedPrototype[ prop ] = (function() {\r\n\t\t\tvar _super = function() {\r\n\t\t\t\t\treturn base.prototype[ prop ].apply( this, arguments );\r\n\t\t\t\t},\r\n\t\t\t\t_superApply = function( args ) {\r\n\t\t\t\t\treturn base.prototype[ prop ].apply( this, args );\r\n\t\t\t\t};\r\n\t\t\treturn function() {\r\n\t\t\t\tvar __super = this._super,\r\n\t\t\t\t\t__superApply = this._superApply,\r\n\t\t\t\t\treturnValue;\r\n\r\n\t\t\t\tthis._super = _super;\r\n\t\t\t\tthis._superApply = _superApply;\r\n\r\n\t\t\t\treturnValue = value.apply( this, arguments );\r\n\r\n\t\t\t\tthis._super = __super;\r\n\t\t\t\tthis._superApply = __superApply;\r\n\r\n\t\t\t\treturn returnValue;\r\n\t\t\t};\r\n\t\t})();\r\n\t});\r\n\tconstructor.prototype = $.widget.extend( basePrototype, {\r\n\t\t// TODO: remove support for widgetEventPrefix\r\n\t\t// always use the name + a colon as the prefix, e.g., draggable:start\r\n\t\t// don't prefix for widgets that aren't DOM-based\r\n\t\twidgetEventPrefix: existingConstructor ? (basePrototype.widgetEventPrefix || name) : name\r\n\t}, proxiedPrototype, {\r\n\t\tconstructor: constructor,\r\n\t\tnamespace: namespace,\r\n\t\twidgetName: name,\r\n\t\twidgetFullName: fullName\r\n\t});\r\n\r\n\t// If this widget is being redefined then we need to find all widgets that\r\n\t// are inheriting from it and redefine all of them so that they inherit from\r\n\t// the new version of this widget. We're essentially trying to replace one\r\n\t// level in the prototype chain.\r\n\tif ( existingConstructor ) {\r\n\t\t$.each( existingConstructor._childConstructors, function( i, child ) {\r\n\t\t\tvar childPrototype = child.prototype;\r\n\r\n\t\t\t// redefine the child widget using the same prototype that was\r\n\t\t\t// originally used, but inherit from the new version of the base\r\n\t\t\t$.widget( childPrototype.namespace + \".\" + childPrototype.widgetName, constructor, child._proto );\r\n\t\t});\r\n\t\t// remove the list of existing child constructors from the old constructor\r\n\t\t// so the old child constructors can be garbage collected\r\n\t\tdelete existingConstructor._childConstructors;\r\n\t} else {\r\n\t\tbase._childConstructors.push( constructor );\r\n\t}\r\n\r\n\t$.widget.bridge( name, constructor );\r\n\r\n\treturn constructor;\r\n};\r\n\r\n$.widget.extend = function( target ) {\r\n\tvar input = widget_slice.call( arguments, 1 ),\r\n\t\tinputIndex = 0,\r\n\t\tinputLength = input.length,\r\n\t\tkey,\r\n\t\tvalue;\r\n\tfor ( ; inputIndex < inputLength; inputIndex++ ) {\r\n\t\tfor ( key in input[ inputIndex ] ) {\r\n\t\t\tvalue = input[ inputIndex ][ key ];\r\n\t\t\tif ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {\r\n\t\t\t\t// Clone objects\r\n\t\t\t\tif ( $.isPlainObject( value ) ) {\r\n\t\t\t\t\ttarget[ key ] = $.isPlainObject( target[ key ] ) ?\r\n\t\t\t\t\t\t$.widget.extend( {}, target[ key ], value ) :\r\n\t\t\t\t\t\t// Don't extend strings, arrays, etc. with objects\r\n\t\t\t\t\t\t$.widget.extend( {}, value );\r\n\t\t\t\t// Copy everything else by reference\r\n\t\t\t\t} else {\r\n\t\t\t\t\ttarget[ key ] = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn target;\r\n};\r\n\r\n$.widget.bridge = function( name, object ) {\r\n\tvar fullName = object.prototype.widgetFullName || name;\r\n\t$.fn[ name ] = function( options ) {\r\n\t\tvar isMethodCall = typeof options === \"string\",\r\n\t\t\targs = widget_slice.call( arguments, 1 ),\r\n\t\t\treturnValue = this;\r\n\r\n\t\t// allow multiple hashes to be passed on init\r\n\t\toptions = !isMethodCall && args.length ?\r\n\t\t\t$.widget.extend.apply( null, [ options ].concat(args) ) :\r\n\t\t\toptions;\r\n\r\n\t\tif ( isMethodCall ) {\r\n\t\t\tthis.each(function() {\r\n\t\t\t\tvar methodValue,\r\n\t\t\t\t\tinstance = $.data( this, fullName );\r\n\t\t\t\tif ( options === \"instance\" ) {\r\n\t\t\t\t\treturnValue = instance;\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\tif ( !instance ) {\r\n\t\t\t\t\treturn $.error( \"cannot call methods on \" + name + \" prior to initialization; \" +\r\n\t\t\t\t\t\t\"attempted to call method '\" + options + \"'\" );\r\n\t\t\t\t}\r\n\t\t\t\tif ( !$.isFunction( instance[options] ) || options.charAt( 0 ) === \"_\" ) {\r\n\t\t\t\t\treturn $.error( \"no such method '\" + options + \"' for \" + name + \" widget instance\" );\r\n\t\t\t\t}\r\n\t\t\t\tmethodValue = instance[ options ].apply( instance, args );\r\n\t\t\t\tif ( methodValue !== instance && methodValue !== undefined ) {\r\n\t\t\t\t\treturnValue = methodValue && methodValue.jquery ?\r\n\t\t\t\t\t\treturnValue.pushStack( methodValue.get() ) :\r\n\t\t\t\t\t\tmethodValue;\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.each(function() {\r\n\t\t\t\tvar instance = $.data( this, fullName );\r\n\t\t\t\tif ( instance ) {\r\n\t\t\t\t\tinstance.option( options || {} );\r\n\t\t\t\t\tif ( instance._init ) {\r\n\t\t\t\t\t\tinstance._init();\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\t$.data( this, fullName, new object( options, this ) );\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\treturn returnValue;\r\n\t};\r\n};\r\n\r\n$.Widget = function( /* options, element */ ) {};\r\n$.Widget._childConstructors = [];\r\n\r\n$.Widget.prototype = {\r\n\twidgetName: \"widget\",\r\n\twidgetEventPrefix: \"\",\r\n\tdefaultElement: \"
    \",\r\n\toptions: {\r\n\t\tdisabled: false,\r\n\r\n\t\t// callbacks\r\n\t\tcreate: null\r\n\t},\r\n\t_createWidget: function( options, element ) {\r\n\t\telement = $( element || this.defaultElement || this )[ 0 ];\r\n\t\tthis.element = $( element );\r\n\t\tthis.uuid = widget_uuid++;\r\n\t\tthis.eventNamespace = \".\" + this.widgetName + this.uuid;\r\n\t\tthis.options = $.widget.extend( {},\r\n\t\t\tthis.options,\r\n\t\t\tthis._getCreateOptions(),\r\n\t\t\toptions );\r\n\r\n\t\tthis.bindings = $();\r\n\t\tthis.hoverable = $();\r\n\t\tthis.focusable = $();\r\n\r\n\t\tif ( element !== this ) {\r\n\t\t\t$.data( element, this.widgetFullName, this );\r\n\t\t\tthis._on( true, this.element, {\r\n\t\t\t\tremove: function( event ) {\r\n\t\t\t\t\tif ( event.target === element ) {\r\n\t\t\t\t\t\tthis.destroy();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tthis.document = $( element.style ?\r\n\t\t\t\t// element within the document\r\n\t\t\t\telement.ownerDocument :\r\n\t\t\t\t// element is window or document\r\n\t\t\t\telement.document || element );\r\n\t\t\tthis.window = $( this.document[0].defaultView || this.document[0].parentWindow );\r\n\t\t}\r\n\r\n\t\tthis._create();\r\n\t\tthis._trigger( \"create\", null, this._getCreateEventData() );\r\n\t\tthis._init();\r\n\t},\r\n\t_getCreateOptions: $.noop,\r\n\t_getCreateEventData: $.noop,\r\n\t_create: $.noop,\r\n\t_init: $.noop,\r\n\r\n\tdestroy: function() {\r\n\t\tthis._destroy();\r\n\t\t// we can probably remove the unbind calls in 2.0\r\n\t\t// all event bindings should go through this._on()\r\n\t\tthis.element\r\n\t\t\t.unbind( this.eventNamespace )\r\n\t\t\t.removeData( this.widgetFullName )\r\n\t\t\t// support: jquery <1.6.3\r\n\t\t\t// http://bugs.jquery.com/ticket/9413\r\n\t\t\t.removeData( $.camelCase( this.widgetFullName ) );\r\n\t\tthis.widget()\r\n\t\t\t.unbind( this.eventNamespace )\r\n\t\t\t.removeAttr( \"aria-disabled\" )\r\n\t\t\t.removeClass(\r\n\t\t\t\tthis.widgetFullName + \"-disabled \" +\r\n\t\t\t\t\"ui-state-disabled\" );\r\n\r\n\t\t// clean up events and states\r\n\t\tthis.bindings.unbind( this.eventNamespace );\r\n\t\tthis.hoverable.removeClass( \"ui-state-hover\" );\r\n\t\tthis.focusable.removeClass( \"ui-state-focus\" );\r\n\t},\r\n\t_destroy: $.noop,\r\n\r\n\twidget: function() {\r\n\t\treturn this.element;\r\n\t},\r\n\r\n\toption: function( key, value ) {\r\n\t\tvar options = key,\r\n\t\t\tparts,\r\n\t\t\tcurOption,\r\n\t\t\ti;\r\n\r\n\t\tif ( arguments.length === 0 ) {\r\n\t\t\t// don't return a reference to the internal hash\r\n\t\t\treturn $.widget.extend( {}, this.options );\r\n\t\t}\r\n\r\n\t\tif ( typeof key === \"string\" ) {\r\n\t\t\t// handle nested keys, e.g., \"foo.bar\" => { foo: { bar: ___ } }\r\n\t\t\toptions = {};\r\n\t\t\tparts = key.split( \".\" );\r\n\t\t\tkey = parts.shift();\r\n\t\t\tif ( parts.length ) {\r\n\t\t\t\tcurOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );\r\n\t\t\t\tfor ( i = 0; i < parts.length - 1; i++ ) {\r\n\t\t\t\t\tcurOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};\r\n\t\t\t\t\tcurOption = curOption[ parts[ i ] ];\r\n\t\t\t\t}\r\n\t\t\t\tkey = parts.pop();\r\n\t\t\t\tif ( arguments.length === 1 ) {\r\n\t\t\t\t\treturn curOption[ key ] === undefined ? null : curOption[ key ];\r\n\t\t\t\t}\r\n\t\t\t\tcurOption[ key ] = value;\r\n\t\t\t} else {\r\n\t\t\t\tif ( arguments.length === 1 ) {\r\n\t\t\t\t\treturn this.options[ key ] === undefined ? null : this.options[ key ];\r\n\t\t\t\t}\r\n\t\t\t\toptions[ key ] = value;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._setOptions( options );\r\n\r\n\t\treturn this;\r\n\t},\r\n\t_setOptions: function( options ) {\r\n\t\tvar key;\r\n\r\n\t\tfor ( key in options ) {\r\n\t\t\tthis._setOption( key, options[ key ] );\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\t_setOption: function( key, value ) {\r\n\t\tthis.options[ key ] = value;\r\n\r\n\t\tif ( key === \"disabled\" ) {\r\n\t\t\tthis.widget()\r\n\t\t\t\t.toggleClass( this.widgetFullName + \"-disabled\", !!value );\r\n\r\n\t\t\t// If the widget is becoming disabled, then nothing is interactive\r\n\t\t\tif ( value ) {\r\n\t\t\t\tthis.hoverable.removeClass( \"ui-state-hover\" );\r\n\t\t\t\tthis.focusable.removeClass( \"ui-state-focus\" );\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\t},\r\n\r\n\tenable: function() {\r\n\t\treturn this._setOptions({ disabled: false });\r\n\t},\r\n\tdisable: function() {\r\n\t\treturn this._setOptions({ disabled: true });\r\n\t},\r\n\r\n\t_on: function( suppressDisabledCheck, element, handlers ) {\r\n\t\tvar delegateElement,\r\n\t\t\tinstance = this;\r\n\r\n\t\t// no suppressDisabledCheck flag, shuffle arguments\r\n\t\tif ( typeof suppressDisabledCheck !== \"boolean\" ) {\r\n\t\t\thandlers = element;\r\n\t\t\telement = suppressDisabledCheck;\r\n\t\t\tsuppressDisabledCheck = false;\r\n\t\t}\r\n\r\n\t\t// no element argument, shuffle and use this.element\r\n\t\tif ( !handlers ) {\r\n\t\t\thandlers = element;\r\n\t\t\telement = this.element;\r\n\t\t\tdelegateElement = this.widget();\r\n\t\t} else {\r\n\t\t\telement = delegateElement = $( element );\r\n\t\t\tthis.bindings = this.bindings.add( element );\r\n\t\t}\r\n\r\n\t\t$.each( handlers, function( event, handler ) {\r\n\t\t\tfunction handlerProxy() {\r\n\t\t\t\t// allow widgets to customize the disabled handling\r\n\t\t\t\t// - disabled as an array instead of boolean\r\n\t\t\t\t// - disabled class as method for disabling individual parts\r\n\t\t\t\tif ( !suppressDisabledCheck &&\r\n\t\t\t\t\t\t( instance.options.disabled === true ||\r\n\t\t\t\t\t\t\t$( this ).hasClass( \"ui-state-disabled\" ) ) ) {\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\r\n\t\t\t\t\t.apply( instance, arguments );\r\n\t\t\t}\r\n\r\n\t\t\t// copy the guid so direct unbinding works\r\n\t\t\tif ( typeof handler !== \"string\" ) {\r\n\t\t\t\thandlerProxy.guid = handler.guid =\r\n\t\t\t\t\thandler.guid || handlerProxy.guid || $.guid++;\r\n\t\t\t}\r\n\r\n\t\t\tvar match = event.match( /^([\\w:-]*)\\s*(.*)$/ ),\r\n\t\t\t\teventName = match[1] + instance.eventNamespace,\r\n\t\t\t\tselector = match[2];\r\n\t\t\tif ( selector ) {\r\n\t\t\t\tdelegateElement.delegate( selector, eventName, handlerProxy );\r\n\t\t\t} else {\r\n\t\t\t\telement.bind( eventName, handlerProxy );\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\t_off: function( element, eventName ) {\r\n\t\teventName = (eventName || \"\").split( \" \" ).join( this.eventNamespace + \" \" ) + this.eventNamespace;\r\n\t\telement.unbind( eventName ).undelegate( eventName );\r\n\t},\r\n\r\n\t_delay: function( handler, delay ) {\r\n\t\tfunction handlerProxy() {\r\n\t\t\treturn ( typeof handler === \"string\" ? instance[ handler ] : handler )\r\n\t\t\t\t.apply( instance, arguments );\r\n\t\t}\r\n\t\tvar instance = this;\r\n\t\treturn setTimeout( handlerProxy, delay || 0 );\r\n\t},\r\n\r\n\t_hoverable: function( element ) {\r\n\t\tthis.hoverable = this.hoverable.add( element );\r\n\t\tthis._on( element, {\r\n\t\t\tmouseenter: function( event ) {\r\n\t\t\t\t$( event.currentTarget ).addClass( \"ui-state-hover\" );\r\n\t\t\t},\r\n\t\t\tmouseleave: function( event ) {\r\n\t\t\t\t$( event.currentTarget ).removeClass( \"ui-state-hover\" );\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\t_focusable: function( element ) {\r\n\t\tthis.focusable = this.focusable.add( element );\r\n\t\tthis._on( element, {\r\n\t\t\tfocusin: function( event ) {\r\n\t\t\t\t$( event.currentTarget ).addClass( \"ui-state-focus\" );\r\n\t\t\t},\r\n\t\t\tfocusout: function( event ) {\r\n\t\t\t\t$( event.currentTarget ).removeClass( \"ui-state-focus\" );\r\n\t\t\t}\r\n\t\t});\r\n\t},\r\n\r\n\t_trigger: function( type, event, data ) {\r\n\t\tvar prop, orig,\r\n\t\t\tcallback = this.options[ type ];\r\n\r\n\t\tdata = data || {};\r\n\t\tevent = $.Event( event );\r\n\t\tevent.type = ( type === this.widgetEventPrefix ?\r\n\t\t\ttype :\r\n\t\t\tthis.widgetEventPrefix + type ).toLowerCase();\r\n\t\t// the original event may come from any element\r\n\t\t// so we need to reset the target on the new event\r\n\t\tevent.target = this.element[ 0 ];\r\n\r\n\t\t// copy original event properties over to the new event\r\n\t\torig = event.originalEvent;\r\n\t\tif ( orig ) {\r\n\t\t\tfor ( prop in orig ) {\r\n\t\t\t\tif ( !( prop in event ) ) {\r\n\t\t\t\t\tevent[ prop ] = orig[ prop ];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.element.trigger( event, data );\r\n\t\treturn !( $.isFunction( callback ) &&\r\n\t\t\tcallback.apply( this.element[0], [ event ].concat( data ) ) === false ||\r\n\t\t\tevent.isDefaultPrevented() );\r\n\t}\r\n};\r\n\r\n$.each( { show: \"fadeIn\", hide: \"fadeOut\" }, function( method, defaultEffect ) {\r\n\t$.Widget.prototype[ \"_\" + method ] = function( element, options, callback ) {\r\n\t\tif ( typeof options === \"string\" ) {\r\n\t\t\toptions = { effect: options };\r\n\t\t}\r\n\t\tvar hasOptions,\r\n\t\t\teffectName = !options ?\r\n\t\t\t\tmethod :\r\n\t\t\t\toptions === true || typeof options === \"number\" ?\r\n\t\t\t\t\tdefaultEffect :\r\n\t\t\t\t\toptions.effect || defaultEffect;\r\n\t\toptions = options || {};\r\n\t\tif ( typeof options === \"number\" ) {\r\n\t\t\toptions = { duration: options };\r\n\t\t}\r\n\t\thasOptions = !$.isEmptyObject( options );\r\n\t\toptions.complete = callback;\r\n\t\tif ( options.delay ) {\r\n\t\t\telement.delay( options.delay );\r\n\t\t}\r\n\t\tif ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {\r\n\t\t\telement[ method ]( options );\r\n\t\t} else if ( effectName !== method && element[ effectName ] ) {\r\n\t\t\telement[ effectName ]( options.duration, options.easing, callback );\r\n\t\t} else {\r\n\t\t\telement.queue(function( next ) {\r\n\t\t\t\t$( this )[ method ]();\r\n\t\t\t\tif ( callback ) {\r\n\t\t\t\t\tcallback.call( element[ 0 ] );\r\n\t\t\t\t}\r\n\t\t\t\tnext();\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n});\r\n\r\nvar widget = $.widget;\r\n\r\n\r\n\r\n}));\r\n","/*!\n * FilePondPluginFileValidateSize 2.2.7\n * Licensed under MIT, https://opensource.org/licenses/MIT/\n * Please visit https://pqina.nl/filepond/ for details.\n */\n\n/* eslint-disable */\n\n(function(global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n ? (module.exports = factory())\n : typeof define === 'function' && define.amd\n ? define(factory)\n : ((global = global || self), (global.FilePondPluginFileValidateSize = factory()));\n})(this, function() {\n 'use strict';\n\n var plugin = function plugin(_ref) {\n var addFilter = _ref.addFilter,\n utils = _ref.utils;\n // get quick reference to Type utils\n var Type = utils.Type,\n replaceInString = utils.replaceInString,\n toNaturalFileSize = utils.toNaturalFileSize;\n\n // filtering if an item is allowed in hopper\n addFilter('ALLOW_HOPPER_ITEM', function(file, _ref2) {\n var query = _ref2.query;\n if (!query('GET_ALLOW_FILE_SIZE_VALIDATION')) {\n return true;\n }\n\n var sizeMax = query('GET_MAX_FILE_SIZE');\n if (sizeMax !== null && file.size > sizeMax) {\n return false;\n }\n\n var sizeMin = query('GET_MIN_FILE_SIZE');\n if (sizeMin !== null && file.size < sizeMin) {\n return false;\n }\n\n return true;\n });\n\n // called for each file that is loaded\n // right before it is set to the item state\n // should return a promise\n addFilter('LOAD_FILE', function(file, _ref3) {\n var query = _ref3.query;\n return new Promise(function(resolve, reject) {\n // if not allowed, all fine, exit\n if (!query('GET_ALLOW_FILE_SIZE_VALIDATION')) {\n return resolve(file);\n }\n\n // check if file should be filtered\n var fileFilter = query('GET_FILE_VALIDATE_SIZE_FILTER');\n if (fileFilter && !fileFilter(file)) {\n return resolve(file);\n }\n\n // reject or resolve based on file size\n var sizeMax = query('GET_MAX_FILE_SIZE');\n if (sizeMax !== null && file.size > sizeMax) {\n reject({\n status: {\n main: query('GET_LABEL_MAX_FILE_SIZE_EXCEEDED'),\n sub: replaceInString(query('GET_LABEL_MAX_FILE_SIZE'), {\n filesize: toNaturalFileSize(\n sizeMax,\n '.',\n query('GET_FILE_SIZE_BASE'),\n query('GET_FILE_SIZE_LABELS', query)\n ),\n }),\n },\n });\n\n return;\n }\n\n // reject or resolve based on file size\n var sizeMin = query('GET_MIN_FILE_SIZE');\n if (sizeMin !== null && file.size < sizeMin) {\n reject({\n status: {\n main: query('GET_LABEL_MIN_FILE_SIZE_EXCEEDED'),\n sub: replaceInString(query('GET_LABEL_MIN_FILE_SIZE'), {\n filesize: toNaturalFileSize(\n sizeMin,\n '.',\n query('GET_FILE_SIZE_BASE'),\n query('GET_FILE_SIZE_LABELS', query)\n ),\n }),\n },\n });\n\n return;\n }\n\n // returns the current option value\n var totalSizeMax = query('GET_MAX_TOTAL_FILE_SIZE');\n if (totalSizeMax !== null) {\n // get the current total file size\n var currentTotalSize = query('GET_ACTIVE_ITEMS').reduce(function(total, item) {\n return total + item.fileSize;\n }, 0);\n\n // get the size of the new file\n if (currentTotalSize > totalSizeMax) {\n reject({\n status: {\n main: query('GET_LABEL_MAX_TOTAL_FILE_SIZE_EXCEEDED'),\n sub: replaceInString(query('GET_LABEL_MAX_TOTAL_FILE_SIZE'), {\n filesize: toNaturalFileSize(\n totalSizeMax,\n '.',\n query('GET_FILE_SIZE_BASE'),\n query('GET_FILE_SIZE_LABELS', query)\n ),\n }),\n },\n });\n\n return;\n }\n }\n\n // file is fine, let's pass it back\n resolve(file);\n });\n });\n\n return {\n options: {\n // Enable or disable file type validation\n allowFileSizeValidation: [true, Type.BOOLEAN],\n\n // Max individual file size in bytes\n maxFileSize: [null, Type.INT],\n\n // Min individual file size in bytes\n minFileSize: [null, Type.INT],\n\n // Max total file size in bytes\n maxTotalFileSize: [null, Type.INT],\n\n // Filter the files that need to be validated for size\n fileValidateSizeFilter: [null, Type.FUNCTION],\n\n // error labels\n labelMinFileSizeExceeded: ['File is too small', Type.STRING],\n labelMinFileSize: ['Minimum file size is {filesize}', Type.STRING],\n\n labelMaxFileSizeExceeded: ['File is too large', Type.STRING],\n labelMaxFileSize: ['Maximum file size is {filesize}', Type.STRING],\n\n labelMaxTotalFileSizeExceeded: ['Maximum total size exceeded', Type.STRING],\n labelMaxTotalFileSize: ['Maximum total file size is {filesize}', Type.STRING],\n },\n };\n };\n\n // fire pluginloaded event if running in browser, this allows registering the plugin when using async script tags\n var isBrowser = typeof window !== 'undefined' && typeof window.document !== 'undefined';\n if (isBrowser) {\n document.dispatchEvent(new CustomEvent('FilePond:pluginloaded', { detail: plugin }));\n }\n\n return plugin;\n});\n","/*!\n * FilePondPluginImagePreview 4.6.11\n * Licensed under MIT, https://opensource.org/licenses/MIT/\n * Please visit https://pqina.nl/filepond/ for details.\n */\n\n/* eslint-disable */\n\n(function(global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n ? (module.exports = factory())\n : typeof define === 'function' && define.amd\n ? define(factory)\n : ((global = global || self),\n (global.FilePondPluginImagePreview = factory()));\n})(this, function() {\n 'use strict';\n\n // test if file is of type image and can be viewed in canvas\n var isPreviewableImage = function isPreviewableImage(file) {\n return /^image/.test(file.type);\n };\n\n function _typeof(obj) {\n if (typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol') {\n _typeof = function(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function(obj) {\n return obj &&\n typeof Symbol === 'function' &&\n obj.constructor === Symbol &&\n obj !== Symbol.prototype\n ? 'symbol'\n : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n var REACT_ELEMENT_TYPE;\n\n function _jsx(type, props, key, children) {\n if (!REACT_ELEMENT_TYPE) {\n REACT_ELEMENT_TYPE =\n (typeof Symbol === 'function' &&\n Symbol.for &&\n Symbol.for('react.element')) ||\n 0xeac7;\n }\n\n var defaultProps = type && type.defaultProps;\n var childrenLength = arguments.length - 3;\n\n if (!props && childrenLength !== 0) {\n props = {\n children: void 0\n };\n }\n\n if (props && defaultProps) {\n for (var propName in defaultProps) {\n if (props[propName] === void 0) {\n props[propName] = defaultProps[propName];\n }\n }\n } else if (!props) {\n props = defaultProps || {};\n }\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = new Array(childrenLength);\n\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 3];\n }\n\n props.children = childArray;\n }\n\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key === undefined ? null : '' + key,\n ref: null,\n props: props,\n _owner: null\n };\n }\n\n function _asyncIterator(iterable) {\n var method;\n\n if (typeof Symbol === 'function') {\n if (Symbol.asyncIterator) {\n method = iterable[Symbol.asyncIterator];\n if (method != null) return method.call(iterable);\n }\n\n if (Symbol.iterator) {\n method = iterable[Symbol.iterator];\n if (method != null) return method.call(iterable);\n }\n }\n\n throw new TypeError('Object is not async iterable');\n }\n\n function _AwaitValue(value) {\n this.wrapped = value;\n }\n\n function _AsyncGenerator(gen) {\n var front, back;\n\n function send(key, arg) {\n return new Promise(function(resolve, reject) {\n var request = {\n key: key,\n arg: arg,\n resolve: resolve,\n reject: reject,\n next: null\n };\n\n if (back) {\n back = back.next = request;\n } else {\n front = back = request;\n resume(key, arg);\n }\n });\n }\n\n function resume(key, arg) {\n try {\n var result = gen[key](arg);\n var value = result.value;\n var wrappedAwait = value instanceof _AwaitValue;\n Promise.resolve(wrappedAwait ? value.wrapped : value).then(\n function(arg) {\n if (wrappedAwait) {\n resume('next', arg);\n return;\n }\n\n settle(result.done ? 'return' : 'normal', arg);\n },\n function(err) {\n resume('throw', err);\n }\n );\n } catch (err) {\n settle('throw', err);\n }\n }\n\n function settle(type, value) {\n switch (type) {\n case 'return':\n front.resolve({\n value: value,\n done: true\n });\n break;\n\n case 'throw':\n front.reject(value);\n break;\n\n default:\n front.resolve({\n value: value,\n done: false\n });\n break;\n }\n\n front = front.next;\n\n if (front) {\n resume(front.key, front.arg);\n } else {\n back = null;\n }\n }\n\n this._invoke = send;\n\n if (typeof gen.return !== 'function') {\n this.return = undefined;\n }\n }\n\n if (typeof Symbol === 'function' && Symbol.asyncIterator) {\n _AsyncGenerator.prototype[Symbol.asyncIterator] = function() {\n return this;\n };\n }\n\n _AsyncGenerator.prototype.next = function(arg) {\n return this._invoke('next', arg);\n };\n\n _AsyncGenerator.prototype.throw = function(arg) {\n return this._invoke('throw', arg);\n };\n\n _AsyncGenerator.prototype.return = function(arg) {\n return this._invoke('return', arg);\n };\n\n function _wrapAsyncGenerator(fn) {\n return function() {\n return new _AsyncGenerator(fn.apply(this, arguments));\n };\n }\n\n function _awaitAsyncGenerator(value) {\n return new _AwaitValue(value);\n }\n\n function _asyncGeneratorDelegate(inner, awaitWrap) {\n var iter = {},\n waiting = false;\n\n function pump(key, value) {\n waiting = true;\n value = new Promise(function(resolve) {\n resolve(inner[key](value));\n });\n return {\n done: false,\n value: awaitWrap(value)\n };\n }\n\n if (typeof Symbol === 'function' && Symbol.iterator) {\n iter[Symbol.iterator] = function() {\n return this;\n };\n }\n\n iter.next = function(value) {\n if (waiting) {\n waiting = false;\n return value;\n }\n\n return pump('next', value);\n };\n\n if (typeof inner.throw === 'function') {\n iter.throw = function(value) {\n if (waiting) {\n waiting = false;\n throw value;\n }\n\n return pump('throw', value);\n };\n }\n\n if (typeof inner.return === 'function') {\n iter.return = function(value) {\n return pump('return', value);\n };\n }\n\n return iter;\n }\n\n function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n }\n\n function _asyncToGenerator(fn) {\n return function() {\n var self = this,\n args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(\n gen,\n resolve,\n reject,\n _next,\n _throw,\n 'next',\n value\n );\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, 'throw', err);\n }\n\n _next(undefined);\n });\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError('Cannot call a class as a function');\n }\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ('value' in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _defineEnumerableProperties(obj, descs) {\n for (var key in descs) {\n var desc = descs[key];\n desc.configurable = desc.enumerable = true;\n if ('value' in desc) desc.writable = true;\n Object.defineProperty(obj, key, desc);\n }\n\n if (Object.getOwnPropertySymbols) {\n var objectSymbols = Object.getOwnPropertySymbols(descs);\n\n for (var i = 0; i < objectSymbols.length; i++) {\n var sym = objectSymbols[i];\n var desc = descs[sym];\n desc.configurable = desc.enumerable = true;\n if ('value' in desc) desc.writable = true;\n Object.defineProperty(obj, sym, desc);\n }\n }\n\n return obj;\n }\n\n function _defaults(obj, defaults) {\n var keys = Object.getOwnPropertyNames(defaults);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = Object.getOwnPropertyDescriptor(defaults, key);\n\n if (value && value.configurable && obj[key] === undefined) {\n Object.defineProperty(obj, key, value);\n }\n }\n\n return obj;\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function _extends() {\n _extends =\n Object.assign ||\n function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n\n function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(\n Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n })\n );\n }\n\n ownKeys.forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== 'function' && superClass !== null) {\n throw new TypeError('Super expression must either be null or a function');\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n }\n\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n }\n\n function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf\n ? Object.getPrototypeOf\n : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n }\n\n function _setPrototypeOf(o, p) {\n _setPrototypeOf =\n Object.setPrototypeOf ||\n function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n }\n\n function isNativeReflectConstruct() {\n if (typeof Reflect === 'undefined' || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === 'function') return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n }\n\n function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n }\n\n function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf('[native code]') !== -1;\n }\n\n function _wrapNativeSuper(Class) {\n var _cache = typeof Map === 'function' ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n\n if (typeof Class !== 'function') {\n throw new TypeError(\n 'Super expression must either be null or a function'\n );\n }\n\n if (typeof _cache !== 'undefined') {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n }\n\n function _instanceof(left, right) {\n if (\n right != null &&\n typeof Symbol !== 'undefined' &&\n right[Symbol.hasInstance]\n ) {\n return right[Symbol.hasInstance](left);\n } else {\n return left instanceof right;\n }\n }\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule\n ? obj\n : {\n default: obj\n };\n }\n\n function _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc =\n Object.defineProperty && Object.getOwnPropertyDescriptor\n ? Object.getOwnPropertyDescriptor(obj, key)\n : {};\n\n if (desc.get || desc.set) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n }\n\n newObj.default = obj;\n return newObj;\n }\n }\n\n function _newArrowCheck(innerThis, boundThis) {\n if (innerThis !== boundThis) {\n throw new TypeError('Cannot instantiate an arrow function');\n }\n }\n\n function _objectDestructuringEmpty(obj) {\n if (obj == null) throw new TypeError('Cannot destructure undefined');\n }\n\n function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n }\n\n function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n }\n\n function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\n \"this hasn't been initialised - super() hasn't been called\"\n );\n }\n\n return self;\n }\n\n function _possibleConstructorReturn(self, call) {\n if (call && (typeof call === 'object' || typeof call === 'function')) {\n return call;\n }\n\n return _assertThisInitialized(self);\n }\n\n function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n }\n\n function _get(target, property, receiver) {\n if (typeof Reflect !== 'undefined' && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n }\n\n function set(target, property, value, receiver) {\n if (typeof Reflect !== 'undefined' && Reflect.set) {\n set = Reflect.set;\n } else {\n set = function set(target, property, value, receiver) {\n var base = _superPropBase(target, property);\n\n var desc;\n\n if (base) {\n desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.set) {\n desc.set.call(receiver, value);\n return true;\n } else if (!desc.writable) {\n return false;\n }\n }\n\n desc = Object.getOwnPropertyDescriptor(receiver, property);\n\n if (desc) {\n if (!desc.writable) {\n return false;\n }\n\n desc.value = value;\n Object.defineProperty(receiver, property, desc);\n } else {\n _defineProperty(receiver, property, value);\n }\n\n return true;\n };\n }\n\n return set(target, property, value, receiver);\n }\n\n function _set(target, property, value, receiver, isStrict) {\n var s = set(target, property, value, receiver || target);\n\n if (!s && isStrict) {\n throw new Error('failed to set property');\n }\n\n return value;\n }\n\n function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n return Object.freeze(\n Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n })\n );\n }\n\n function _taggedTemplateLiteralLoose(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n strings.raw = raw;\n return strings;\n }\n\n function _temporalRef(val, name) {\n if (val === _temporalUndefined) {\n throw new ReferenceError(name + ' is not defined - temporal dead zone');\n } else {\n return val;\n }\n }\n\n function _readOnlyError(name) {\n throw new Error('\"' + name + '\" is read-only');\n }\n\n function _classNameTDZError(name) {\n throw new Error(\n 'Class \"' + name + '\" cannot be referenced in computed property keys.'\n );\n }\n\n var _temporalUndefined = {};\n\n function _slicedToArray(arr, i) {\n return (\n _arrayWithHoles(arr) ||\n _iterableToArrayLimit(arr, i) ||\n _nonIterableRest()\n );\n }\n\n function _slicedToArrayLoose(arr, i) {\n return (\n _arrayWithHoles(arr) ||\n _iterableToArrayLimitLoose(arr, i) ||\n _nonIterableRest()\n );\n }\n\n function _toArray(arr) {\n return _arrayWithHoles(arr) || _iterableToArray(arr) || _nonIterableRest();\n }\n\n function _toConsumableArray(arr) {\n return (\n _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread()\n );\n }\n\n function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++)\n arr2[i] = arr[i];\n\n return arr2;\n }\n }\n\n function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n }\n\n function _iterableToArray(iter) {\n if (\n Symbol.iterator in Object(iter) ||\n Object.prototype.toString.call(iter) === '[object Arguments]'\n )\n return Array.from(iter);\n }\n\n function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (\n var _i = arr[Symbol.iterator](), _s;\n !(_n = (_s = _i.next()).done);\n _n = true\n ) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i['return'] != null) _i['return']();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n function _iterableToArrayLimitLoose(arr, i) {\n var _arr = [];\n\n for (\n var _iterator = arr[Symbol.iterator](), _step;\n !(_step = _iterator.next()).done;\n\n ) {\n _arr.push(_step.value);\n\n if (i && _arr.length === i) break;\n }\n\n return _arr;\n }\n\n function _nonIterableSpread() {\n throw new TypeError('Invalid attempt to spread non-iterable instance');\n }\n\n function _nonIterableRest() {\n throw new TypeError('Invalid attempt to destructure non-iterable instance');\n }\n\n function _skipFirstGeneratorNext(fn) {\n return function() {\n var it = fn.apply(this, arguments);\n it.next();\n return it;\n };\n }\n\n function _toPrimitive(input, hint) {\n if (typeof input !== 'object' || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n\n if (prim !== undefined) {\n var res = prim.call(input, hint || 'default');\n if (typeof res !== 'object') return res;\n throw new TypeError('@@toPrimitive must return a primitive value.');\n }\n\n return (hint === 'string' ? String : Number)(input);\n }\n\n function _toPropertyKey(arg) {\n var key = _toPrimitive(arg, 'string');\n\n return typeof key === 'symbol' ? key : String(key);\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error(\n 'Decorating class property failed. Please ensure that ' +\n 'proposal-class-properties is enabled and set to use loose mode. ' +\n 'To use proposal-class-properties in spec mode with decorators, wait for ' +\n 'the next major version of decorators in stage 2.'\n );\n }\n\n function _initializerDefineProperty(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer\n ? descriptor.initializer.call(context)\n : void 0\n });\n }\n\n function _applyDecoratedDescriptor(\n target,\n property,\n decorators,\n descriptor,\n context\n ) {\n var desc = {};\n Object.keys(descriptor).forEach(function(key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators\n .slice()\n .reverse()\n .reduce(function(desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object.defineProperty(target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n var id = 0;\n\n function _classPrivateFieldLooseKey(name) {\n return '__private_' + id++ + '_' + name;\n }\n\n function _classPrivateFieldLooseBase(receiver, privateKey) {\n if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {\n throw new TypeError('attempted to use private field on non-instance');\n }\n\n return receiver;\n }\n\n function _classPrivateFieldGet(receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError('attempted to get private field on non-instance');\n }\n\n var descriptor = privateMap.get(receiver);\n\n if (descriptor.get) {\n return descriptor.get.call(receiver);\n }\n\n return descriptor.value;\n }\n\n function _classPrivateFieldSet(receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError('attempted to set private field on non-instance');\n }\n\n var descriptor = privateMap.get(receiver);\n\n if (descriptor.set) {\n descriptor.set.call(receiver, value);\n } else {\n if (!descriptor.writable) {\n throw new TypeError('attempted to set read only private field');\n }\n\n descriptor.value = value;\n }\n\n return value;\n }\n\n function _classStaticPrivateFieldSpecGet(\n receiver,\n classConstructor,\n descriptor\n ) {\n if (receiver !== classConstructor) {\n throw new TypeError('Private static access of wrong provenance');\n }\n\n return descriptor.value;\n }\n\n function _classStaticPrivateFieldSpecSet(\n receiver,\n classConstructor,\n descriptor,\n value\n ) {\n if (receiver !== classConstructor) {\n throw new TypeError('Private static access of wrong provenance');\n }\n\n if (!descriptor.writable) {\n throw new TypeError('attempted to set read only private field');\n }\n\n descriptor.value = value;\n return value;\n }\n\n function _classStaticPrivateMethodGet(receiver, classConstructor, method) {\n if (receiver !== classConstructor) {\n throw new TypeError('Private static access of wrong provenance');\n }\n\n return method;\n }\n\n function _classStaticPrivateMethodSet() {\n throw new TypeError('attempted to set read only static private field');\n }\n\n function _decorate(decorators, factory, superClass, mixins) {\n var api = _getDecoratorsApi();\n\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n api = mixins[i](api);\n }\n }\n\n var r = factory(function initialize(O) {\n api.initializeInstanceElements(O, decorated.elements);\n }, superClass);\n var decorated = api.decorateClass(\n _coalesceClassElements(r.d.map(_createElementDescriptor)),\n decorators\n );\n api.initializeClassElements(r.F, decorated.elements);\n return api.runClassFinishers(r.F, decorated.finishers);\n }\n\n function _getDecoratorsApi() {\n _getDecoratorsApi = function() {\n return api;\n };\n\n var api = {\n elementsDefinitionOrder: [['method'], ['field']],\n initializeInstanceElements: function(O, elements) {\n ['method', 'field'].forEach(function(kind) {\n elements.forEach(function(element) {\n if (element.kind === kind && element.placement === 'own') {\n this.defineClassElement(O, element);\n }\n }, this);\n }, this);\n },\n initializeClassElements: function(F, elements) {\n var proto = F.prototype;\n ['method', 'field'].forEach(function(kind) {\n elements.forEach(function(element) {\n var placement = element.placement;\n\n if (\n element.kind === kind &&\n (placement === 'static' || placement === 'prototype')\n ) {\n var receiver = placement === 'static' ? F : proto;\n this.defineClassElement(receiver, element);\n }\n }, this);\n }, this);\n },\n defineClassElement: function(receiver, element) {\n var descriptor = element.descriptor;\n\n if (element.kind === 'field') {\n var initializer = element.initializer;\n descriptor = {\n enumerable: descriptor.enumerable,\n writable: descriptor.writable,\n configurable: descriptor.configurable,\n value: initializer === void 0 ? void 0 : initializer.call(receiver)\n };\n }\n\n Object.defineProperty(receiver, element.key, descriptor);\n },\n decorateClass: function(elements, decorators) {\n var newElements = [];\n var finishers = [];\n var placements = {\n static: [],\n prototype: [],\n own: []\n };\n elements.forEach(function(element) {\n this.addElementPlacement(element, placements);\n }, this);\n elements.forEach(function(element) {\n if (!_hasDecorators(element)) return newElements.push(element);\n var elementFinishersExtras = this.decorateElement(\n element,\n placements\n );\n newElements.push(elementFinishersExtras.element);\n newElements.push.apply(newElements, elementFinishersExtras.extras);\n finishers.push.apply(finishers, elementFinishersExtras.finishers);\n }, this);\n\n if (!decorators) {\n return {\n elements: newElements,\n finishers: finishers\n };\n }\n\n var result = this.decorateConstructor(newElements, decorators);\n finishers.push.apply(finishers, result.finishers);\n result.finishers = finishers;\n return result;\n },\n addElementPlacement: function(element, placements, silent) {\n var keys = placements[element.placement];\n\n if (!silent && keys.indexOf(element.key) !== -1) {\n throw new TypeError('Duplicated element (' + element.key + ')');\n }\n\n keys.push(element.key);\n },\n decorateElement: function(element, placements) {\n var extras = [];\n var finishers = [];\n\n for (\n var decorators = element.decorators, i = decorators.length - 1;\n i >= 0;\n i--\n ) {\n var keys = placements[element.placement];\n keys.splice(keys.indexOf(element.key), 1);\n var elementObject = this.fromElementDescriptor(element);\n var elementFinisherExtras = this.toElementFinisherExtras(\n (0, decorators[i])(elementObject) || elementObject\n );\n element = elementFinisherExtras.element;\n this.addElementPlacement(element, placements);\n\n if (elementFinisherExtras.finisher) {\n finishers.push(elementFinisherExtras.finisher);\n }\n\n var newExtras = elementFinisherExtras.extras;\n\n if (newExtras) {\n for (var j = 0; j < newExtras.length; j++) {\n this.addElementPlacement(newExtras[j], placements);\n }\n\n extras.push.apply(extras, newExtras);\n }\n }\n\n return {\n element: element,\n finishers: finishers,\n extras: extras\n };\n },\n decorateConstructor: function(elements, decorators) {\n var finishers = [];\n\n for (var i = decorators.length - 1; i >= 0; i--) {\n var obj = this.fromClassDescriptor(elements);\n var elementsAndFinisher = this.toClassDescriptor(\n (0, decorators[i])(obj) || obj\n );\n\n if (elementsAndFinisher.finisher !== undefined) {\n finishers.push(elementsAndFinisher.finisher);\n }\n\n if (elementsAndFinisher.elements !== undefined) {\n elements = elementsAndFinisher.elements;\n\n for (var j = 0; j < elements.length - 1; j++) {\n for (var k = j + 1; k < elements.length; k++) {\n if (\n elements[j].key === elements[k].key &&\n elements[j].placement === elements[k].placement\n ) {\n throw new TypeError(\n 'Duplicated element (' + elements[j].key + ')'\n );\n }\n }\n }\n }\n }\n\n return {\n elements: elements,\n finishers: finishers\n };\n },\n fromElementDescriptor: function(element) {\n var obj = {\n kind: element.kind,\n key: element.key,\n placement: element.placement,\n descriptor: element.descriptor\n };\n var desc = {\n value: 'Descriptor',\n configurable: true\n };\n Object.defineProperty(obj, Symbol.toStringTag, desc);\n if (element.kind === 'field') obj.initializer = element.initializer;\n return obj;\n },\n toElementDescriptors: function(elementObjects) {\n if (elementObjects === undefined) return;\n return _toArray(elementObjects).map(function(elementObject) {\n var element = this.toElementDescriptor(elementObject);\n this.disallowProperty(\n elementObject,\n 'finisher',\n 'An element descriptor'\n );\n this.disallowProperty(\n elementObject,\n 'extras',\n 'An element descriptor'\n );\n return element;\n }, this);\n },\n toElementDescriptor: function(elementObject) {\n var kind = String(elementObject.kind);\n\n if (kind !== 'method' && kind !== 'field') {\n throw new TypeError(\n 'An element descriptor\\'s .kind property must be either \"method\" or' +\n ' \"field\", but a decorator created an element descriptor with' +\n ' .kind \"' +\n kind +\n '\"'\n );\n }\n\n var key = _toPropertyKey(elementObject.key);\n\n var placement = String(elementObject.placement);\n\n if (\n placement !== 'static' &&\n placement !== 'prototype' &&\n placement !== 'own'\n ) {\n throw new TypeError(\n 'An element descriptor\\'s .placement property must be one of \"static\",' +\n ' \"prototype\" or \"own\", but a decorator created an element descriptor' +\n ' with .placement \"' +\n placement +\n '\"'\n );\n }\n\n var descriptor = elementObject.descriptor;\n this.disallowProperty(\n elementObject,\n 'elements',\n 'An element descriptor'\n );\n var element = {\n kind: kind,\n key: key,\n placement: placement,\n descriptor: Object.assign({}, descriptor)\n };\n\n if (kind !== 'field') {\n this.disallowProperty(\n elementObject,\n 'initializer',\n 'A method descriptor'\n );\n } else {\n this.disallowProperty(\n descriptor,\n 'get',\n 'The property descriptor of a field descriptor'\n );\n this.disallowProperty(\n descriptor,\n 'set',\n 'The property descriptor of a field descriptor'\n );\n this.disallowProperty(\n descriptor,\n 'value',\n 'The property descriptor of a field descriptor'\n );\n element.initializer = elementObject.initializer;\n }\n\n return element;\n },\n toElementFinisherExtras: function(elementObject) {\n var element = this.toElementDescriptor(elementObject);\n\n var finisher = _optionalCallableProperty(elementObject, 'finisher');\n\n var extras = this.toElementDescriptors(elementObject.extras);\n return {\n element: element,\n finisher: finisher,\n extras: extras\n };\n },\n fromClassDescriptor: function(elements) {\n var obj = {\n kind: 'class',\n elements: elements.map(this.fromElementDescriptor, this)\n };\n var desc = {\n value: 'Descriptor',\n configurable: true\n };\n Object.defineProperty(obj, Symbol.toStringTag, desc);\n return obj;\n },\n toClassDescriptor: function(obj) {\n var kind = String(obj.kind);\n\n if (kind !== 'class') {\n throw new TypeError(\n 'A class descriptor\\'s .kind property must be \"class\", but a decorator' +\n ' created a class descriptor with .kind \"' +\n kind +\n '\"'\n );\n }\n\n this.disallowProperty(obj, 'key', 'A class descriptor');\n this.disallowProperty(obj, 'placement', 'A class descriptor');\n this.disallowProperty(obj, 'descriptor', 'A class descriptor');\n this.disallowProperty(obj, 'initializer', 'A class descriptor');\n this.disallowProperty(obj, 'extras', 'A class descriptor');\n\n var finisher = _optionalCallableProperty(obj, 'finisher');\n\n var elements = this.toElementDescriptors(obj.elements);\n return {\n elements: elements,\n finisher: finisher\n };\n },\n runClassFinishers: function(constructor, finishers) {\n for (var i = 0; i < finishers.length; i++) {\n var newConstructor = (0, finishers[i])(constructor);\n\n if (newConstructor !== undefined) {\n if (typeof newConstructor !== 'function') {\n throw new TypeError('Finishers must return a constructor.');\n }\n\n constructor = newConstructor;\n }\n }\n\n return constructor;\n },\n disallowProperty: function(obj, name, objectType) {\n if (obj[name] !== undefined) {\n throw new TypeError(\n objectType + \" can't have a .\" + name + ' property.'\n );\n }\n }\n };\n return api;\n }\n\n function _createElementDescriptor(def) {\n var key = _toPropertyKey(def.key);\n\n var descriptor;\n\n if (def.kind === 'method') {\n descriptor = {\n value: def.value,\n writable: true,\n configurable: true,\n enumerable: false\n };\n } else if (def.kind === 'get') {\n descriptor = {\n get: def.value,\n configurable: true,\n enumerable: false\n };\n } else if (def.kind === 'set') {\n descriptor = {\n set: def.value,\n configurable: true,\n enumerable: false\n };\n } else if (def.kind === 'field') {\n descriptor = {\n configurable: true,\n writable: true,\n enumerable: true\n };\n }\n\n var element = {\n kind: def.kind === 'field' ? 'field' : 'method',\n key: key,\n placement: def.static\n ? 'static'\n : def.kind === 'field'\n ? 'own'\n : 'prototype',\n descriptor: descriptor\n };\n if (def.decorators) element.decorators = def.decorators;\n if (def.kind === 'field') element.initializer = def.value;\n return element;\n }\n\n function _coalesceGetterSetter(element, other) {\n if (element.descriptor.get !== undefined) {\n other.descriptor.get = element.descriptor.get;\n } else {\n other.descriptor.set = element.descriptor.set;\n }\n }\n\n function _coalesceClassElements(elements) {\n var newElements = [];\n\n var isSameElement = function(other) {\n return (\n other.kind === 'method' &&\n other.key === element.key &&\n other.placement === element.placement\n );\n };\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n var other;\n\n if (\n element.kind === 'method' &&\n (other = newElements.find(isSameElement))\n ) {\n if (\n _isDataDescriptor(element.descriptor) ||\n _isDataDescriptor(other.descriptor)\n ) {\n if (_hasDecorators(element) || _hasDecorators(other)) {\n throw new ReferenceError(\n 'Duplicated methods (' + element.key + \") can't be decorated.\"\n );\n }\n\n other.descriptor = element.descriptor;\n } else {\n if (_hasDecorators(element)) {\n if (_hasDecorators(other)) {\n throw new ReferenceError(\n \"Decorators can't be placed on different accessors with for \" +\n 'the same property (' +\n element.key +\n ').'\n );\n }\n\n other.decorators = element.decorators;\n }\n\n _coalesceGetterSetter(element, other);\n }\n } else {\n newElements.push(element);\n }\n }\n\n return newElements;\n }\n\n function _hasDecorators(element) {\n return element.decorators && element.decorators.length;\n }\n\n function _isDataDescriptor(desc) {\n return (\n desc !== undefined &&\n !(desc.value === undefined && desc.writable === undefined)\n );\n }\n\n function _optionalCallableProperty(obj, name) {\n var value = obj[name];\n\n if (value !== undefined && typeof value !== 'function') {\n throw new TypeError(\"Expected '\" + name + \"' to be a function\");\n }\n\n return value;\n }\n\n function _classPrivateMethodGet(receiver, privateSet, fn) {\n if (!privateSet.has(receiver)) {\n throw new TypeError('attempted to get private field on non-instance');\n }\n\n return fn;\n }\n\n function _classPrivateMethodSet() {\n throw new TypeError('attempted to reassign private method');\n }\n\n function _wrapRegExp(re, groups) {\n _wrapRegExp = function(re, groups) {\n return new BabelRegExp(re, groups);\n };\n\n var _RegExp = _wrapNativeSuper(RegExp);\n\n var _super = RegExp.prototype;\n\n var _groups = new WeakMap();\n\n function BabelRegExp(re, groups) {\n var _this = _RegExp.call(this, re);\n\n _groups.set(_this, groups);\n\n return _this;\n }\n\n _inherits(BabelRegExp, _RegExp);\n\n BabelRegExp.prototype.exec = function(str) {\n var result = _super.exec.call(this, str);\n\n if (result) result.groups = buildGroups(result, this);\n return result;\n };\n\n BabelRegExp.prototype[Symbol.replace] = function(str, substitution) {\n if (typeof substitution === 'string') {\n var groups = _groups.get(this);\n\n return _super[Symbol.replace].call(\n this,\n str,\n substitution.replace(/\\$<([^>]+)>/g, function(_, name) {\n return '$' + groups[name];\n })\n );\n } else if (typeof substitution === 'function') {\n var _this = this;\n\n return _super[Symbol.replace].call(this, str, function() {\n var args = [];\n args.push.apply(args, arguments);\n\n if (typeof args[args.length - 1] !== 'object') {\n args.push(buildGroups(args, _this));\n }\n\n return substitution.apply(this, args);\n });\n } else {\n return _super[Symbol.replace].call(this, str, substitution);\n }\n };\n\n function buildGroups(result, re) {\n var g = _groups.get(re);\n\n return Object.keys(g).reduce(function(groups, name) {\n groups[name] = result[g[name]];\n return groups;\n }, Object.create(null));\n }\n\n return _wrapRegExp.apply(this, arguments);\n }\n\n var vectorMultiply = function vectorMultiply(v, amount) {\n return createVector(v.x * amount, v.y * amount);\n };\n\n var vectorAdd = function vectorAdd(a, b) {\n return createVector(a.x + b.x, a.y + b.y);\n };\n\n var vectorNormalize = function vectorNormalize(v) {\n var l = Math.sqrt(v.x * v.x + v.y * v.y);\n if (l === 0) {\n return {\n x: 0,\n y: 0\n };\n }\n return createVector(v.x / l, v.y / l);\n };\n\n var vectorRotate = function vectorRotate(v, radians, origin) {\n var cos = Math.cos(radians);\n var sin = Math.sin(radians);\n var t = createVector(v.x - origin.x, v.y - origin.y);\n return createVector(\n origin.x + cos * t.x - sin * t.y,\n origin.y + sin * t.x + cos * t.y\n );\n };\n\n var createVector = function createVector() {\n var x =\n arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var y =\n arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n return { x: x, y: y };\n };\n\n var getMarkupValue = function getMarkupValue(value, size) {\n var scalar =\n arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var axis = arguments.length > 3 ? arguments[3] : undefined;\n if (typeof value === 'string') {\n return parseFloat(value) * scalar;\n }\n if (typeof value === 'number') {\n return value * (axis ? size[axis] : Math.min(size.width, size.height));\n }\n return;\n };\n\n var getMarkupStyles = function getMarkupStyles(markup, size, scale) {\n var lineStyle = markup.borderStyle || markup.lineStyle || 'solid';\n var fill = markup.backgroundColor || markup.fontColor || 'transparent';\n var stroke = markup.borderColor || markup.lineColor || 'transparent';\n var strokeWidth = getMarkupValue(\n markup.borderWidth || markup.lineWidth,\n size,\n scale\n );\n var lineCap = markup.lineCap || 'round';\n var lineJoin = markup.lineJoin || 'round';\n var dashes =\n typeof lineStyle === 'string'\n ? ''\n : lineStyle\n .map(function(v) {\n return getMarkupValue(v, size, scale);\n })\n .join(',');\n var opacity = markup.opacity || 1;\n return {\n 'stroke-linecap': lineCap,\n 'stroke-linejoin': lineJoin,\n 'stroke-width': strokeWidth || 0,\n 'stroke-dasharray': dashes,\n stroke: stroke,\n fill: fill,\n opacity: opacity\n };\n };\n\n var isDefined = function isDefined(value) {\n return value != null;\n };\n\n var getMarkupRect = function getMarkupRect(rect, size) {\n var scalar =\n arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n\n var left =\n getMarkupValue(rect.x, size, scalar, 'width') ||\n getMarkupValue(rect.left, size, scalar, 'width');\n var top =\n getMarkupValue(rect.y, size, scalar, 'height') ||\n getMarkupValue(rect.top, size, scalar, 'height');\n var width = getMarkupValue(rect.width, size, scalar, 'width');\n var height = getMarkupValue(rect.height, size, scalar, 'height');\n var right = getMarkupValue(rect.right, size, scalar, 'width');\n var bottom = getMarkupValue(rect.bottom, size, scalar, 'height');\n\n if (!isDefined(top)) {\n if (isDefined(height) && isDefined(bottom)) {\n top = size.height - height - bottom;\n } else {\n top = bottom;\n }\n }\n\n if (!isDefined(left)) {\n if (isDefined(width) && isDefined(right)) {\n left = size.width - width - right;\n } else {\n left = right;\n }\n }\n\n if (!isDefined(width)) {\n if (isDefined(left) && isDefined(right)) {\n width = size.width - left - right;\n } else {\n width = 0;\n }\n }\n\n if (!isDefined(height)) {\n if (isDefined(top) && isDefined(bottom)) {\n height = size.height - top - bottom;\n } else {\n height = 0;\n }\n }\n\n return {\n x: left || 0,\n y: top || 0,\n width: width || 0,\n height: height || 0\n };\n };\n\n var pointsToPathShape = function pointsToPathShape(points) {\n return points\n .map(function(point, index) {\n return ''\n .concat(index === 0 ? 'M' : 'L', ' ')\n .concat(point.x, ' ')\n .concat(point.y);\n })\n .join(' ');\n };\n\n var setAttributes = function setAttributes(element, attr) {\n return Object.keys(attr).forEach(function(key) {\n return element.setAttribute(key, attr[key]);\n });\n };\n\n var ns = 'http://www.w3.org/2000/svg';\n var svg = function svg(tag, attr) {\n var element = document.createElementNS(ns, tag);\n if (attr) {\n setAttributes(element, attr);\n }\n return element;\n };\n\n var updateRect = function updateRect(element) {\n return setAttributes(\n element,\n Object.assign({}, element.rect, element.styles)\n );\n };\n\n var updateEllipse = function updateEllipse(element) {\n var cx = element.rect.x + element.rect.width * 0.5;\n var cy = element.rect.y + element.rect.height * 0.5;\n var rx = element.rect.width * 0.5;\n var ry = element.rect.height * 0.5;\n return setAttributes(\n element,\n Object.assign(\n {\n cx: cx,\n cy: cy,\n rx: rx,\n ry: ry\n },\n element.styles\n )\n );\n };\n\n var IMAGE_FIT_STYLE = {\n contain: 'xMidYMid meet',\n cover: 'xMidYMid slice'\n };\n\n var updateImage = function updateImage(element, markup) {\n setAttributes(\n element,\n Object.assign({}, element.rect, element.styles, {\n preserveAspectRatio: IMAGE_FIT_STYLE[markup.fit] || 'none'\n })\n );\n };\n\n var TEXT_ANCHOR = {\n left: 'start',\n center: 'middle',\n right: 'end'\n };\n\n var updateText = function updateText(element, markup, size, scale) {\n var fontSize = getMarkupValue(markup.fontSize, size, scale);\n var fontFamily = markup.fontFamily || 'sans-serif';\n var fontWeight = markup.fontWeight || 'normal';\n var textAlign = TEXT_ANCHOR[markup.textAlign] || 'start';\n\n setAttributes(\n element,\n Object.assign({}, element.rect, element.styles, {\n 'stroke-width': 0,\n 'font-weight': fontWeight,\n 'font-size': fontSize,\n 'font-family': fontFamily,\n 'text-anchor': textAlign\n })\n );\n\n // update text\n if (element.text !== markup.text) {\n element.text = markup.text;\n element.textContent = markup.text.length ? markup.text : ' ';\n }\n };\n\n var updateLine = function updateLine(element, markup, size, scale) {\n setAttributes(\n element,\n Object.assign({}, element.rect, element.styles, {\n fill: 'none'\n })\n );\n\n var line = element.childNodes[0];\n var begin = element.childNodes[1];\n var end = element.childNodes[2];\n\n var origin = element.rect;\n\n var target = {\n x: element.rect.x + element.rect.width,\n y: element.rect.y + element.rect.height\n };\n\n setAttributes(line, {\n x1: origin.x,\n y1: origin.y,\n x2: target.x,\n y2: target.y\n });\n\n if (!markup.lineDecoration) return;\n\n begin.style.display = 'none';\n end.style.display = 'none';\n\n var v = vectorNormalize({\n x: target.x - origin.x,\n y: target.y - origin.y\n });\n\n var l = getMarkupValue(0.05, size, scale);\n\n if (markup.lineDecoration.indexOf('arrow-begin') !== -1) {\n var arrowBeginRotationPoint = vectorMultiply(v, l);\n var arrowBeginCenter = vectorAdd(origin, arrowBeginRotationPoint);\n var arrowBeginA = vectorRotate(origin, 2, arrowBeginCenter);\n var arrowBeginB = vectorRotate(origin, -2, arrowBeginCenter);\n\n setAttributes(begin, {\n style: 'display:block;',\n d: 'M'\n .concat(arrowBeginA.x, ',')\n .concat(arrowBeginA.y, ' L')\n .concat(origin.x, ',')\n .concat(origin.y, ' L')\n .concat(arrowBeginB.x, ',')\n .concat(arrowBeginB.y)\n });\n }\n\n if (markup.lineDecoration.indexOf('arrow-end') !== -1) {\n var arrowEndRotationPoint = vectorMultiply(v, -l);\n var arrowEndCenter = vectorAdd(target, arrowEndRotationPoint);\n var arrowEndA = vectorRotate(target, 2, arrowEndCenter);\n var arrowEndB = vectorRotate(target, -2, arrowEndCenter);\n\n setAttributes(end, {\n style: 'display:block;',\n d: 'M'\n .concat(arrowEndA.x, ',')\n .concat(arrowEndA.y, ' L')\n .concat(target.x, ',')\n .concat(target.y, ' L')\n .concat(arrowEndB.x, ',')\n .concat(arrowEndB.y)\n });\n }\n };\n\n var updatePath = function updatePath(element, markup, size, scale) {\n setAttributes(\n element,\n Object.assign({}, element.styles, {\n fill: 'none',\n d: pointsToPathShape(\n markup.points.map(function(point) {\n return {\n x: getMarkupValue(point.x, size, scale, 'width'),\n y: getMarkupValue(point.y, size, scale, 'height')\n };\n })\n )\n })\n );\n };\n\n var createShape = function createShape(node) {\n return function(markup) {\n return svg(node, { id: markup.id });\n };\n };\n\n var createImage = function createImage(markup) {\n var shape = svg('image', {\n id: markup.id,\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round',\n opacity: '0'\n });\n\n shape.onload = function() {\n shape.setAttribute('opacity', markup.opacity || 1);\n };\n shape.setAttributeNS(\n 'http://www.w3.org/1999/xlink',\n 'xlink:href',\n markup.src\n );\n return shape;\n };\n\n var createLine = function createLine(markup) {\n var shape = svg('g', {\n id: markup.id,\n 'stroke-linecap': 'round',\n 'stroke-linejoin': 'round'\n });\n\n var line = svg('line');\n shape.appendChild(line);\n\n var begin = svg('path');\n shape.appendChild(begin);\n\n var end = svg('path');\n shape.appendChild(end);\n\n return shape;\n };\n\n var CREATE_TYPE_ROUTES = {\n image: createImage,\n rect: createShape('rect'),\n ellipse: createShape('ellipse'),\n text: createShape('text'),\n path: createShape('path'),\n line: createLine\n };\n\n var UPDATE_TYPE_ROUTES = {\n rect: updateRect,\n ellipse: updateEllipse,\n image: updateImage,\n text: updateText,\n path: updatePath,\n line: updateLine\n };\n\n var createMarkupByType = function createMarkupByType(type, markup) {\n return CREATE_TYPE_ROUTES[type](markup);\n };\n\n var updateMarkupByType = function updateMarkupByType(\n element,\n type,\n markup,\n size,\n scale\n ) {\n if (type !== 'path') {\n element.rect = getMarkupRect(markup, size, scale);\n }\n element.styles = getMarkupStyles(markup, size, scale);\n UPDATE_TYPE_ROUTES[type](element, markup, size, scale);\n };\n\n var MARKUP_RECT = [\n 'x',\n 'y',\n 'left',\n 'top',\n 'right',\n 'bottom',\n 'width',\n 'height'\n ];\n\n var toOptionalFraction = function toOptionalFraction(value) {\n return typeof value === 'string' && /%/.test(value)\n ? parseFloat(value) / 100\n : value;\n };\n\n // adds default markup properties, clones markup\n var prepareMarkup = function prepareMarkup(markup) {\n var _markup = _slicedToArray(markup, 2),\n type = _markup[0],\n props = _markup[1];\n\n var rect = props.points\n ? {}\n : MARKUP_RECT.reduce(function(prev, curr) {\n prev[curr] = toOptionalFraction(props[curr]);\n return prev;\n }, {});\n\n return [\n type,\n Object.assign(\n {\n zIndex: 0\n },\n props,\n rect\n )\n ];\n };\n\n var sortMarkupByZIndex = function sortMarkupByZIndex(a, b) {\n if (a[1].zIndex > b[1].zIndex) {\n return 1;\n }\n if (a[1].zIndex < b[1].zIndex) {\n return -1;\n }\n return 0;\n };\n\n var createMarkupView = function createMarkupView(_) {\n return _.utils.createView({\n name: 'image-preview-markup',\n tag: 'svg',\n ignoreRect: true,\n mixins: {\n apis: ['width', 'height', 'crop', 'markup', 'resize', 'dirty']\n },\n\n write: function write(_ref) {\n var root = _ref.root,\n props = _ref.props;\n\n if (!props.dirty) return;\n var crop = props.crop,\n resize = props.resize,\n markup = props.markup;\n\n var viewWidth = props.width;\n var viewHeight = props.height;\n\n var cropWidth = crop.width;\n var cropHeight = crop.height;\n\n if (resize) {\n var _size = resize.size;\n\n var outputWidth = _size && _size.width;\n var outputHeight = _size && _size.height;\n var outputFit = resize.mode;\n var outputUpscale = resize.upscale;\n\n if (outputWidth && !outputHeight) outputHeight = outputWidth;\n if (outputHeight && !outputWidth) outputWidth = outputHeight;\n\n var shouldUpscale =\n cropWidth < outputWidth && cropHeight < outputHeight;\n\n if (!shouldUpscale || (shouldUpscale && outputUpscale)) {\n var scalarWidth = outputWidth / cropWidth;\n var scalarHeight = outputHeight / cropHeight;\n\n if (outputFit === 'force') {\n cropWidth = outputWidth;\n cropHeight = outputHeight;\n } else {\n var scalar;\n if (outputFit === 'cover') {\n scalar = Math.max(scalarWidth, scalarHeight);\n } else if (outputFit === 'contain') {\n scalar = Math.min(scalarWidth, scalarHeight);\n }\n cropWidth = cropWidth * scalar;\n cropHeight = cropHeight * scalar;\n }\n }\n }\n\n var size = {\n width: viewWidth,\n height: viewHeight\n };\n\n root.element.setAttribute('width', size.width);\n root.element.setAttribute('height', size.height);\n\n var scale = Math.min(viewWidth / cropWidth, viewHeight / cropHeight);\n\n // clear\n root.element.innerHTML = '';\n\n // get filter\n var markupFilter = root.query('GET_IMAGE_PREVIEW_MARKUP_FILTER');\n\n // draw new\n markup\n .filter(markupFilter)\n .map(prepareMarkup)\n .sort(sortMarkupByZIndex)\n .forEach(function(markup) {\n var _markup = _slicedToArray(markup, 2),\n type = _markup[0],\n settings = _markup[1];\n\n // create\n var element = createMarkupByType(type, settings);\n\n // update\n updateMarkupByType(element, type, settings, size, scale);\n\n // add\n root.element.appendChild(element);\n });\n }\n });\n };\n\n var createVector$1 = function createVector(x, y) {\n return { x: x, y: y };\n };\n\n var vectorDot = function vectorDot(a, b) {\n return a.x * b.x + a.y * b.y;\n };\n\n var vectorSubtract = function vectorSubtract(a, b) {\n return createVector$1(a.x - b.x, a.y - b.y);\n };\n\n var vectorDistanceSquared = function vectorDistanceSquared(a, b) {\n return vectorDot(vectorSubtract(a, b), vectorSubtract(a, b));\n };\n\n var vectorDistance = function vectorDistance(a, b) {\n return Math.sqrt(vectorDistanceSquared(a, b));\n };\n\n var getOffsetPointOnEdge = function getOffsetPointOnEdge(length, rotation) {\n var a = length;\n\n var A = 1.5707963267948966;\n var B = rotation;\n var C = 1.5707963267948966 - rotation;\n\n var sinA = Math.sin(A);\n var sinB = Math.sin(B);\n var sinC = Math.sin(C);\n var cosC = Math.cos(C);\n var ratio = a / sinA;\n var b = ratio * sinB;\n var c = ratio * sinC;\n\n return createVector$1(cosC * b, cosC * c);\n };\n\n var getRotatedRectSize = function getRotatedRectSize(rect, rotation) {\n var w = rect.width;\n var h = rect.height;\n\n var hor = getOffsetPointOnEdge(w, rotation);\n var ver = getOffsetPointOnEdge(h, rotation);\n\n var tl = createVector$1(rect.x + Math.abs(hor.x), rect.y - Math.abs(hor.y));\n\n var tr = createVector$1(\n rect.x + rect.width + Math.abs(ver.y),\n rect.y + Math.abs(ver.x)\n );\n\n var bl = createVector$1(\n rect.x - Math.abs(ver.y),\n rect.y + rect.height - Math.abs(ver.x)\n );\n\n return {\n width: vectorDistance(tl, tr),\n height: vectorDistance(tl, bl)\n };\n };\n\n var calculateCanvasSize = function calculateCanvasSize(\n image,\n canvasAspectRatio\n ) {\n var zoom =\n arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n\n var imageAspectRatio = image.height / image.width;\n\n // determine actual pixels on x and y axis\n var canvasWidth = 1;\n var canvasHeight = canvasAspectRatio;\n var imgWidth = 1;\n var imgHeight = imageAspectRatio;\n if (imgHeight > canvasHeight) {\n imgHeight = canvasHeight;\n imgWidth = imgHeight / imageAspectRatio;\n }\n\n var scalar = Math.max(canvasWidth / imgWidth, canvasHeight / imgHeight);\n var width = image.width / (zoom * scalar * imgWidth);\n var height = width * canvasAspectRatio;\n\n return {\n width: width,\n height: height\n };\n };\n\n var getImageRectZoomFactor = function getImageRectZoomFactor(\n imageRect,\n cropRect,\n rotation,\n center\n ) {\n // calculate available space round image center position\n var cx = center.x > 0.5 ? 1 - center.x : center.x;\n var cy = center.y > 0.5 ? 1 - center.y : center.y;\n var imageWidth = cx * 2 * imageRect.width;\n var imageHeight = cy * 2 * imageRect.height;\n\n // calculate rotated crop rectangle size\n var rotatedCropSize = getRotatedRectSize(cropRect, rotation);\n\n // calculate scalar required to fit image\n return Math.max(\n rotatedCropSize.width / imageWidth,\n rotatedCropSize.height / imageHeight\n );\n };\n\n var getCenteredCropRect = function getCenteredCropRect(\n container,\n aspectRatio\n ) {\n var width = container.width;\n var height = width * aspectRatio;\n if (height > container.height) {\n height = container.height;\n width = height / aspectRatio;\n }\n var x = (container.width - width) * 0.5;\n var y = (container.height - height) * 0.5;\n\n return {\n x: x,\n y: y,\n width: width,\n height: height\n };\n };\n\n var getCurrentCropSize = function getCurrentCropSize(imageSize) {\n var crop =\n arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var zoom = crop.zoom,\n rotation = crop.rotation,\n center = crop.center,\n aspectRatio = crop.aspectRatio;\n\n if (!aspectRatio) aspectRatio = imageSize.height / imageSize.width;\n\n var canvasSize = calculateCanvasSize(imageSize, aspectRatio, zoom);\n\n var canvasCenter = {\n x: canvasSize.width * 0.5,\n y: canvasSize.height * 0.5\n };\n\n var stage = {\n x: 0,\n y: 0,\n width: canvasSize.width,\n height: canvasSize.height,\n center: canvasCenter\n };\n\n var shouldLimit = typeof crop.scaleToFit === 'undefined' || crop.scaleToFit;\n\n var stageZoomFactor = getImageRectZoomFactor(\n imageSize,\n getCenteredCropRect(stage, aspectRatio),\n rotation,\n shouldLimit ? center : { x: 0.5, y: 0.5 }\n );\n\n var scale = zoom * stageZoomFactor;\n\n // start drawing\n return {\n widthFloat: canvasSize.width / scale,\n heightFloat: canvasSize.height / scale,\n width: Math.round(canvasSize.width / scale),\n height: Math.round(canvasSize.height / scale)\n };\n };\n\n var IMAGE_SCALE_SPRING_PROPS = {\n type: 'spring',\n stiffness: 0.5,\n damping: 0.45,\n mass: 10\n };\n\n // does horizontal and vertical flipping\n var createBitmapView = function createBitmapView(_) {\n return _.utils.createView({\n name: 'image-bitmap',\n ignoreRect: true,\n mixins: { styles: ['scaleX', 'scaleY'] },\n create: function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n root.appendChild(props.image);\n }\n });\n };\n\n // shifts and rotates image\n var createImageCanvasWrapper = function createImageCanvasWrapper(_) {\n return _.utils.createView({\n name: 'image-canvas-wrapper',\n tag: 'div',\n ignoreRect: true,\n mixins: {\n apis: ['crop', 'width', 'height'],\n\n styles: [\n 'originX',\n 'originY',\n 'translateX',\n 'translateY',\n 'scaleX',\n 'scaleY',\n 'rotateZ'\n ],\n\n animations: {\n originX: IMAGE_SCALE_SPRING_PROPS,\n originY: IMAGE_SCALE_SPRING_PROPS,\n scaleX: IMAGE_SCALE_SPRING_PROPS,\n scaleY: IMAGE_SCALE_SPRING_PROPS,\n translateX: IMAGE_SCALE_SPRING_PROPS,\n translateY: IMAGE_SCALE_SPRING_PROPS,\n rotateZ: IMAGE_SCALE_SPRING_PROPS\n }\n },\n\n create: function create(_ref2) {\n var root = _ref2.root,\n props = _ref2.props;\n props.width = props.image.width;\n props.height = props.image.height;\n root.ref.bitmap = root.appendChildView(\n root.createChildView(createBitmapView(_), { image: props.image })\n );\n },\n write: function write(_ref3) {\n var root = _ref3.root,\n props = _ref3.props;\n var flip = props.crop.flip;\n var bitmap = root.ref.bitmap;\n bitmap.scaleX = flip.horizontal ? -1 : 1;\n bitmap.scaleY = flip.vertical ? -1 : 1;\n }\n });\n };\n\n // clips canvas to correct aspect ratio\n var createClipView = function createClipView(_) {\n return _.utils.createView({\n name: 'image-clip',\n tag: 'div',\n ignoreRect: true,\n mixins: {\n apis: [\n 'crop',\n 'markup',\n 'resize',\n 'width',\n 'height',\n 'dirty',\n 'background'\n ],\n\n styles: ['width', 'height', 'opacity'],\n animations: {\n opacity: { type: 'tween', duration: 250 }\n }\n },\n\n didWriteView: function didWriteView(_ref4) {\n var root = _ref4.root,\n props = _ref4.props;\n if (!props.background) return;\n root.element.style.backgroundColor = props.background;\n },\n create: function create(_ref5) {\n var root = _ref5.root,\n props = _ref5.props;\n\n root.ref.image = root.appendChildView(\n root.createChildView(\n createImageCanvasWrapper(_),\n Object.assign({}, props)\n )\n );\n\n root.ref.createMarkup = function() {\n if (root.ref.markup) return;\n root.ref.markup = root.appendChildView(\n root.createChildView(createMarkupView(_), Object.assign({}, props))\n );\n };\n\n root.ref.destroyMarkup = function() {\n if (!root.ref.markup) return;\n root.removeChildView(root.ref.markup);\n root.ref.markup = null;\n };\n\n // set up transparency grid\n var transparencyIndicator = root.query(\n 'GET_IMAGE_PREVIEW_TRANSPARENCY_INDICATOR'\n );\n if (transparencyIndicator === null) return;\n\n // grid pattern\n if (transparencyIndicator === 'grid') {\n root.element.dataset.transparencyIndicator = transparencyIndicator;\n }\n // basic color\n else {\n root.element.dataset.transparencyIndicator = 'color';\n }\n },\n write: function write(_ref6) {\n var root = _ref6.root,\n props = _ref6.props,\n shouldOptimize = _ref6.shouldOptimize;\n var crop = props.crop,\n markup = props.markup,\n resize = props.resize,\n dirty = props.dirty,\n width = props.width,\n height = props.height;\n\n root.ref.image.crop = crop;\n\n var stage = {\n x: 0,\n y: 0,\n width: width,\n height: height,\n center: {\n x: width * 0.5,\n y: height * 0.5\n }\n };\n\n var image = {\n width: root.ref.image.width,\n height: root.ref.image.height\n };\n\n var origin = {\n x: crop.center.x * image.width,\n y: crop.center.y * image.height\n };\n\n var translation = {\n x: stage.center.x - image.width * crop.center.x,\n y: stage.center.y - image.height * crop.center.y\n };\n\n var rotation = Math.PI * 2 + (crop.rotation % (Math.PI * 2));\n\n var cropAspectRatio = crop.aspectRatio || image.height / image.width;\n\n var shouldLimit =\n typeof crop.scaleToFit === 'undefined' || crop.scaleToFit;\n\n var stageZoomFactor = getImageRectZoomFactor(\n image,\n getCenteredCropRect(stage, cropAspectRatio),\n\n rotation,\n shouldLimit ? crop.center : { x: 0.5, y: 0.5 }\n );\n\n var scale = crop.zoom * stageZoomFactor;\n\n // update markup view\n if (markup && markup.length) {\n root.ref.createMarkup();\n root.ref.markup.width = width;\n root.ref.markup.height = height;\n root.ref.markup.resize = resize;\n root.ref.markup.dirty = dirty;\n root.ref.markup.markup = markup;\n root.ref.markup.crop = getCurrentCropSize(image, crop);\n } else if (root.ref.markup) {\n root.ref.destroyMarkup();\n }\n\n // update image view\n var imageView = root.ref.image;\n\n // don't update clip layout\n if (shouldOptimize) {\n imageView.originX = null;\n imageView.originY = null;\n imageView.translateX = null;\n imageView.translateY = null;\n imageView.rotateZ = null;\n imageView.scaleX = null;\n imageView.scaleY = null;\n return;\n }\n\n imageView.originX = origin.x;\n imageView.originY = origin.y;\n imageView.translateX = translation.x;\n imageView.translateY = translation.y;\n imageView.rotateZ = rotation;\n imageView.scaleX = scale;\n imageView.scaleY = scale;\n }\n });\n };\n\n var createImageView = function createImageView(_) {\n return _.utils.createView({\n name: 'image-preview',\n tag: 'div',\n ignoreRect: true,\n mixins: {\n apis: ['image', 'crop', 'markup', 'resize', 'dirty', 'background'],\n\n styles: ['translateY', 'scaleX', 'scaleY', 'opacity'],\n\n animations: {\n scaleX: IMAGE_SCALE_SPRING_PROPS,\n scaleY: IMAGE_SCALE_SPRING_PROPS,\n translateY: IMAGE_SCALE_SPRING_PROPS,\n opacity: { type: 'tween', duration: 400 }\n }\n },\n\n create: function create(_ref7) {\n var root = _ref7.root,\n props = _ref7.props;\n root.ref.clip = root.appendChildView(\n root.createChildView(createClipView(_), {\n id: props.id,\n image: props.image,\n crop: props.crop,\n markup: props.markup,\n resize: props.resize,\n dirty: props.dirty,\n background: props.background\n })\n );\n },\n write: function write(_ref8) {\n var root = _ref8.root,\n props = _ref8.props,\n shouldOptimize = _ref8.shouldOptimize;\n var clip = root.ref.clip;\n var image = props.image,\n crop = props.crop,\n markup = props.markup,\n resize = props.resize,\n dirty = props.dirty;\n\n clip.crop = crop;\n clip.markup = markup;\n clip.resize = resize;\n clip.dirty = dirty;\n\n // don't update clip layout\n clip.opacity = shouldOptimize ? 0 : 1;\n\n // don't re-render if optimizing or hidden (width will be zero resulting in weird animations)\n if (shouldOptimize || root.rect.element.hidden) return;\n\n // calculate scaled preview image size\n var imageAspectRatio = image.height / image.width;\n var aspectRatio = crop.aspectRatio || imageAspectRatio;\n\n // calculate container size\n var containerWidth = root.rect.inner.width;\n var containerHeight = root.rect.inner.height;\n\n var fixedPreviewHeight = root.query('GET_IMAGE_PREVIEW_HEIGHT');\n var minPreviewHeight = root.query('GET_IMAGE_PREVIEW_MIN_HEIGHT');\n var maxPreviewHeight = root.query('GET_IMAGE_PREVIEW_MAX_HEIGHT');\n\n var panelAspectRatio = root.query('GET_PANEL_ASPECT_RATIO');\n var allowMultiple = root.query('GET_ALLOW_MULTIPLE');\n\n if (panelAspectRatio && !allowMultiple) {\n fixedPreviewHeight = containerWidth * panelAspectRatio;\n aspectRatio = panelAspectRatio;\n }\n\n // determine clip width and height\n var clipHeight =\n fixedPreviewHeight !== null\n ? fixedPreviewHeight\n : Math.max(\n minPreviewHeight,\n Math.min(containerWidth * aspectRatio, maxPreviewHeight)\n );\n\n var clipWidth = clipHeight / aspectRatio;\n if (clipWidth > containerWidth) {\n clipWidth = containerWidth;\n clipHeight = clipWidth * aspectRatio;\n }\n\n if (clipHeight > containerHeight) {\n clipHeight = containerHeight;\n clipWidth = containerHeight / aspectRatio;\n }\n\n clip.width = clipWidth;\n clip.height = clipHeight;\n }\n });\n };\n\n var SVG_MASK =\n '\\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n \\n';\n\n var SVGMaskUniqueId = 0;\n\n var createImageOverlayView = function createImageOverlayView(fpAPI) {\n return fpAPI.utils.createView({\n name: 'image-preview-overlay',\n tag: 'div',\n ignoreRect: true,\n create: function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n var mask = SVG_MASK;\n if (document.querySelector('base')) {\n var url = new URL(\n window.location.href.replace(window.location.hash, '')\n ).href;\n mask = mask.replace(/url\\(\\#/g, 'url(' + url + '#');\n }\n\n SVGMaskUniqueId++;\n root.element.classList.add(\n 'filepond--image-preview-overlay-'.concat(props.status)\n );\n\n root.element.innerHTML = mask.replace(/__UID__/g, SVGMaskUniqueId);\n },\n mixins: {\n styles: ['opacity'],\n animations: {\n opacity: { type: 'spring', mass: 25 }\n }\n }\n });\n };\n\n /**\n * Bitmap Worker\n */\n var BitmapWorker = function BitmapWorker() {\n self.onmessage = function(e) {\n createImageBitmap(e.data.message.file).then(function(bitmap) {\n self.postMessage({ id: e.data.id, message: bitmap }, [bitmap]);\n });\n };\n };\n\n /**\n * ColorMatrix Worker\n */\n var ColorMatrixWorker = function ColorMatrixWorker() {\n self.onmessage = function(e) {\n var imageData = e.data.message.imageData;\n var matrix = e.data.message.colorMatrix;\n\n var data = imageData.data;\n var l = data.length;\n\n var m11 = matrix[0];\n var m12 = matrix[1];\n var m13 = matrix[2];\n var m14 = matrix[3];\n var m15 = matrix[4];\n\n var m21 = matrix[5];\n var m22 = matrix[6];\n var m23 = matrix[7];\n var m24 = matrix[8];\n var m25 = matrix[9];\n\n var m31 = matrix[10];\n var m32 = matrix[11];\n var m33 = matrix[12];\n var m34 = matrix[13];\n var m35 = matrix[14];\n\n var m41 = matrix[15];\n var m42 = matrix[16];\n var m43 = matrix[17];\n var m44 = matrix[18];\n var m45 = matrix[19];\n\n var index = 0,\n r = 0.0,\n g = 0.0,\n b = 0.0,\n a = 0.0;\n\n for (; index < l; index += 4) {\n r = data[index] / 255;\n g = data[index + 1] / 255;\n b = data[index + 2] / 255;\n a = data[index + 3] / 255;\n data[index] = Math.max(\n 0,\n Math.min((r * m11 + g * m12 + b * m13 + a * m14 + m15) * 255, 255)\n );\n data[index + 1] = Math.max(\n 0,\n Math.min((r * m21 + g * m22 + b * m23 + a * m24 + m25) * 255, 255)\n );\n data[index + 2] = Math.max(\n 0,\n Math.min((r * m31 + g * m32 + b * m33 + a * m34 + m35) * 255, 255)\n );\n data[index + 3] = Math.max(\n 0,\n Math.min((r * m41 + g * m42 + b * m43 + a * m44 + m45) * 255, 255)\n );\n }\n\n self.postMessage({ id: e.data.id, message: imageData }, [\n imageData.data.buffer\n ]);\n };\n };\n\n var getImageSize = function getImageSize(url, cb) {\n var image = new Image();\n image.onload = function() {\n var width = image.naturalWidth;\n var height = image.naturalHeight;\n image = null;\n cb(width, height);\n };\n image.src = url;\n };\n\n var transforms = {\n 1: function _() {\n return [1, 0, 0, 1, 0, 0];\n },\n 2: function _(width) {\n return [-1, 0, 0, 1, width, 0];\n },\n 3: function _(width, height) {\n return [-1, 0, 0, -1, width, height];\n },\n 4: function _(width, height) {\n return [1, 0, 0, -1, 0, height];\n },\n 5: function _() {\n return [0, 1, 1, 0, 0, 0];\n },\n 6: function _(width, height) {\n return [0, 1, -1, 0, height, 0];\n },\n 7: function _(width, height) {\n return [0, -1, -1, 0, height, width];\n },\n 8: function _(width) {\n return [0, -1, 1, 0, 0, width];\n }\n };\n\n var fixImageOrientation = function fixImageOrientation(\n ctx,\n width,\n height,\n orientation\n ) {\n // no orientation supplied\n if (orientation === -1) {\n return;\n }\n\n ctx.transform.apply(ctx, transforms[orientation](width, height));\n };\n\n // draws the preview image to canvas\n var createPreviewImage = function createPreviewImage(\n data,\n width,\n height,\n orientation\n ) {\n // can't draw on half pixels\n width = Math.round(width);\n height = Math.round(height);\n\n // draw image\n var canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n var ctx = canvas.getContext('2d');\n\n // if is rotated incorrectly swap width and height\n if (orientation >= 5 && orientation <= 8) {\n var _ref = [height, width];\n width = _ref[0];\n height = _ref[1];\n }\n\n // correct image orientation\n fixImageOrientation(ctx, width, height, orientation);\n\n // draw the image\n ctx.drawImage(data, 0, 0, width, height);\n\n return canvas;\n };\n\n var isBitmap = function isBitmap(file) {\n return /^image/.test(file.type) && !/svg/.test(file.type);\n };\n\n var MAX_WIDTH = 10;\n var MAX_HEIGHT = 10;\n\n var calculateAverageColor = function calculateAverageColor(image) {\n var scalar = Math.min(MAX_WIDTH / image.width, MAX_HEIGHT / image.height);\n\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n var width = (canvas.width = Math.ceil(image.width * scalar));\n var height = (canvas.height = Math.ceil(image.height * scalar));\n ctx.drawImage(image, 0, 0, width, height);\n var data = null;\n try {\n data = ctx.getImageData(0, 0, width, height).data;\n } catch (e) {\n return null;\n }\n var l = data.length;\n\n var r = 0;\n var g = 0;\n var b = 0;\n var i = 0;\n\n for (; i < l; i += 4) {\n r += data[i] * data[i];\n g += data[i + 1] * data[i + 1];\n b += data[i + 2] * data[i + 2];\n }\n\n r = averageColor(r, l);\n g = averageColor(g, l);\n b = averageColor(b, l);\n\n return { r: r, g: g, b: b };\n };\n\n var averageColor = function averageColor(c, l) {\n return Math.floor(Math.sqrt(c / (l / 4)));\n };\n\n var cloneCanvas = function cloneCanvas(origin, target) {\n target = target || document.createElement('canvas');\n target.width = origin.width;\n target.height = origin.height;\n var ctx = target.getContext('2d');\n ctx.drawImage(origin, 0, 0);\n return target;\n };\n\n var cloneImageData = function cloneImageData(imageData) {\n var id;\n try {\n id = new ImageData(imageData.width, imageData.height);\n } catch (e) {\n var canvas = document.createElement('canvas');\n var ctx = canvas.getContext('2d');\n id = ctx.createImageData(imageData.width, imageData.height);\n }\n id.data.set(new Uint8ClampedArray(imageData.data));\n return id;\n };\n\n var loadImage = function loadImage(url) {\n return new Promise(function(resolve, reject) {\n var img = new Image();\n img.crossOrigin = 'Anonymous';\n img.onload = function() {\n resolve(img);\n };\n img.onerror = function(e) {\n reject(e);\n };\n img.src = url;\n });\n };\n\n var createImageWrapperView = function createImageWrapperView(_) {\n // create overlay view\n var OverlayView = createImageOverlayView(_);\n\n var ImageView = createImageView(_);\n var createWorker = _.utils.createWorker;\n\n var applyFilter = function applyFilter(root, filter, target) {\n return new Promise(function(resolve) {\n // will store image data for future filter updates\n if (!root.ref.imageData) {\n root.ref.imageData = target\n .getContext('2d')\n .getImageData(0, 0, target.width, target.height);\n }\n\n // get image data reference\n var imageData = cloneImageData(root.ref.imageData);\n\n if (!filter || filter.length !== 20) {\n target.getContext('2d').putImageData(imageData, 0, 0);\n return resolve();\n }\n\n var worker = createWorker(ColorMatrixWorker);\n worker.post(\n {\n imageData: imageData,\n colorMatrix: filter\n },\n\n function(response) {\n // apply filtered colors\n target.getContext('2d').putImageData(response, 0, 0);\n\n // stop worker\n worker.terminate();\n\n // done!\n resolve();\n },\n [imageData.data.buffer]\n );\n });\n };\n\n var removeImageView = function removeImageView(root, imageView) {\n root.removeChildView(imageView);\n imageView.image.width = 1;\n imageView.image.height = 1;\n imageView._destroy();\n };\n\n // remove an image\n var shiftImage = function shiftImage(_ref) {\n var root = _ref.root;\n var imageView = root.ref.images.shift();\n imageView.opacity = 0;\n imageView.translateY = -15;\n root.ref.imageViewBin.push(imageView);\n return imageView;\n };\n\n // add new image\n var pushImage = function pushImage(_ref2) {\n var root = _ref2.root,\n props = _ref2.props,\n image = _ref2.image;\n var id = props.id;\n var item = root.query('GET_ITEM', { id: id });\n if (!item) return;\n\n var crop = item.getMetadata('crop') || {\n center: {\n x: 0.5,\n y: 0.5\n },\n\n flip: {\n horizontal: false,\n vertical: false\n },\n\n zoom: 1,\n rotation: 0,\n aspectRatio: null\n };\n\n var background = root.query(\n 'GET_IMAGE_TRANSFORM_CANVAS_BACKGROUND_COLOR'\n );\n\n var markup;\n var resize;\n var dirty = false;\n if (root.query('GET_IMAGE_PREVIEW_MARKUP_SHOW')) {\n markup = item.getMetadata('markup') || [];\n resize = item.getMetadata('resize');\n dirty = true;\n }\n\n // append image presenter\n var imageView = root.appendChildView(\n root.createChildView(ImageView, {\n id: id,\n image: image,\n crop: crop,\n resize: resize,\n markup: markup,\n dirty: dirty,\n background: background,\n opacity: 0,\n scaleX: 1.15,\n scaleY: 1.15,\n translateY: 15\n }),\n\n root.childViews.length\n );\n\n root.ref.images.push(imageView);\n\n // reveal the preview image\n imageView.opacity = 1;\n imageView.scaleX = 1;\n imageView.scaleY = 1;\n imageView.translateY = 0;\n\n // the preview is now ready to be drawn\n setTimeout(function() {\n root.dispatch('DID_IMAGE_PREVIEW_SHOW', { id: id });\n }, 250);\n };\n\n var updateImage = function updateImage(_ref3) {\n var root = _ref3.root,\n props = _ref3.props;\n var item = root.query('GET_ITEM', { id: props.id });\n if (!item) return;\n var imageView = root.ref.images[root.ref.images.length - 1];\n imageView.crop = item.getMetadata('crop');\n imageView.background = root.query(\n 'GET_IMAGE_TRANSFORM_CANVAS_BACKGROUND_COLOR'\n );\n\n if (root.query('GET_IMAGE_PREVIEW_MARKUP_SHOW')) {\n imageView.dirty = true;\n imageView.resize = item.getMetadata('resize');\n imageView.markup = item.getMetadata('markup');\n }\n };\n\n // replace image preview\n var didUpdateItemMetadata = function didUpdateItemMetadata(_ref4) {\n var root = _ref4.root,\n props = _ref4.props,\n action = _ref4.action;\n // only filter and crop trigger redraw\n if (!/crop|filter|markup|resize/.test(action.change.key)) return;\n\n // no images to update, exit\n if (!root.ref.images.length) return;\n\n // no item found, exit\n var item = root.query('GET_ITEM', { id: props.id });\n if (!item) return;\n\n // for now, update existing image when filtering\n if (/filter/.test(action.change.key)) {\n var imageView = root.ref.images[root.ref.images.length - 1];\n applyFilter(root, action.change.value, imageView.image);\n return;\n }\n\n if (/crop|markup|resize/.test(action.change.key)) {\n var crop = item.getMetadata('crop');\n var image = root.ref.images[root.ref.images.length - 1];\n\n // if aspect ratio has changed, we need to create a new image\n if (\n crop &&\n crop.aspectRatio &&\n image.crop &&\n image.crop.aspectRatio &&\n Math.abs(crop.aspectRatio - image.crop.aspectRatio) > 0.00001\n ) {\n var _imageView = shiftImage({ root: root });\n pushImage({\n root: root,\n props: props,\n image: cloneCanvas(_imageView.image)\n });\n }\n // if not, we can update the current image\n else {\n updateImage({ root: root, props: props });\n }\n }\n };\n\n var canCreateImageBitmap = function canCreateImageBitmap(file) {\n // Firefox versions before 58 will freeze when running createImageBitmap\n // in a Web Worker so we detect those versions and return false for support\n var userAgent = window.navigator.userAgent;\n var isFirefox = userAgent.match(/Firefox\\/([0-9]+)\\./);\n var firefoxVersion = isFirefox ? parseInt(isFirefox[1]) : null;\n if (firefoxVersion <= 58) return false;\n\n return 'createImageBitmap' in window && isBitmap(file);\n };\n\n /**\n * Write handler for when preview container has been created\n */\n var didCreatePreviewContainer = function didCreatePreviewContainer(_ref5) {\n var root = _ref5.root,\n props = _ref5.props;\n var id = props.id;\n\n // we need to get the file data to determine the eventual image size\n var item = root.query('GET_ITEM', id);\n if (!item) return;\n\n // get url to file (we'll revoke it later on when done)\n var fileURL = URL.createObjectURL(item.file);\n\n // determine image size of this item\n getImageSize(fileURL, function(width, height) {\n // we can now scale the panel to the final size\n root.dispatch('DID_IMAGE_PREVIEW_CALCULATE_SIZE', {\n id: id,\n width: width,\n height: height\n });\n });\n };\n\n var drawPreview = function drawPreview(_ref6) {\n var root = _ref6.root,\n props = _ref6.props;\n var id = props.id;\n\n // we need to get the file data to determine the eventual image size\n var item = root.query('GET_ITEM', id);\n if (!item) return;\n\n // get url to file (we'll revoke it later on when done)\n var fileURL = URL.createObjectURL(item.file);\n\n // fallback\n var loadPreviewFallback = function loadPreviewFallback() {\n // let's scale the image in the main thread :(\n loadImage(fileURL).then(previewImageLoaded);\n };\n\n // image is now ready\n var previewImageLoaded = function previewImageLoaded(imageData) {\n // the file url is no longer needed\n URL.revokeObjectURL(fileURL);\n\n // draw the scaled down version here and use that as source so bitmapdata can be closed\n // orientation info\n var exif = item.getMetadata('exif') || {};\n var orientation = exif.orientation || -1;\n\n // get width and height from action, and swap if orientation is incorrect\n var width = imageData.width,\n height = imageData.height;\n\n // if no width or height, just return early.\n if (!width || !height) return;\n\n if (orientation >= 5 && orientation <= 8) {\n var _ref7 = [height, width];\n width = _ref7[0];\n height = _ref7[1];\n }\n\n // scale canvas based on pixel density\n // we multiply by .75 as that creates smaller but still clear images on screens with high res displays\n var pixelDensityFactor = Math.max(1, window.devicePixelRatio * 0.75);\n\n // we want as much pixels to work with as possible,\n // this multiplies the minimum image resolution,\n // so when zooming in it doesn't get too blurry\n var zoomFactor = root.query('GET_IMAGE_PREVIEW_ZOOM_FACTOR');\n\n // imaeg scale factor\n var scaleFactor = zoomFactor * pixelDensityFactor;\n\n // calculate scaled preview image size\n var previewImageRatio = height / width;\n\n // calculate image preview height and width\n var previewContainerWidth = root.rect.element.width;\n var previewContainerHeight = root.rect.element.height;\n\n var imageWidth = previewContainerWidth;\n var imageHeight = imageWidth * previewImageRatio;\n\n if (previewImageRatio > 1) {\n imageWidth = Math.min(width, previewContainerWidth * scaleFactor);\n imageHeight = imageWidth * previewImageRatio;\n } else {\n imageHeight = Math.min(height, previewContainerHeight * scaleFactor);\n imageWidth = imageHeight / previewImageRatio;\n }\n\n // transfer to image tag so no canvas memory wasted on iOS\n var previewImage = createPreviewImage(\n imageData,\n imageWidth,\n imageHeight,\n orientation\n );\n\n // done\n var done = function done() {\n // calculate average image color, disabled for now\n var averageColor = root.query(\n 'GET_IMAGE_PREVIEW_CALCULATE_AVERAGE_IMAGE_COLOR'\n )\n ? calculateAverageColor(data)\n : null;\n item.setMetadata('color', averageColor, true);\n\n // data has been transferred to canvas ( if was ImageBitmap )\n if ('close' in imageData) {\n imageData.close();\n }\n\n // show the overlay\n root.ref.overlayShadow.opacity = 1;\n\n // create the first image\n pushImage({ root: root, props: props, image: previewImage });\n };\n\n // apply filter\n var filter = item.getMetadata('filter');\n if (filter) {\n applyFilter(root, filter, previewImage).then(done);\n } else {\n done();\n }\n };\n\n // if we support scaling using createImageBitmap we use a worker\n if (canCreateImageBitmap(item.file)) {\n // let's scale the image in a worker\n var worker = createWorker(BitmapWorker);\n\n worker.post(\n {\n file: item.file\n },\n\n function(imageBitmap) {\n // destroy worker\n worker.terminate();\n\n // no bitmap returned, must be something wrong,\n // try the oldschool way\n if (!imageBitmap) {\n loadPreviewFallback();\n return;\n }\n\n // yay we got our bitmap, let's continue showing the preview\n previewImageLoaded(imageBitmap);\n }\n );\n } else {\n // create fallback preview\n loadPreviewFallback();\n }\n };\n\n /**\n * Write handler for when the preview image is ready to be animated\n */\n var didDrawPreview = function didDrawPreview(_ref8) {\n var root = _ref8.root;\n // get last added image\n var image = root.ref.images[root.ref.images.length - 1];\n image.translateY = 0;\n image.scaleX = 1.0;\n image.scaleY = 1.0;\n image.opacity = 1;\n };\n\n /**\n * Write handler for when the preview has been loaded\n */\n var restoreOverlay = function restoreOverlay(_ref9) {\n var root = _ref9.root;\n root.ref.overlayShadow.opacity = 1;\n root.ref.overlayError.opacity = 0;\n root.ref.overlaySuccess.opacity = 0;\n };\n\n var didThrowError = function didThrowError(_ref10) {\n var root = _ref10.root;\n root.ref.overlayShadow.opacity = 0.25;\n root.ref.overlayError.opacity = 1;\n };\n\n var didCompleteProcessing = function didCompleteProcessing(_ref11) {\n var root = _ref11.root;\n root.ref.overlayShadow.opacity = 0.25;\n root.ref.overlaySuccess.opacity = 1;\n };\n\n /**\n * Constructor\n */\n var create = function create(_ref12) {\n var root = _ref12.root;\n // image view\n root.ref.images = [];\n\n // the preview image data (we need this to filter the image)\n root.ref.imageData = null;\n\n // image bin\n root.ref.imageViewBin = [];\n\n // image overlays\n root.ref.overlayShadow = root.appendChildView(\n root.createChildView(OverlayView, {\n opacity: 0,\n status: 'idle'\n })\n );\n\n root.ref.overlaySuccess = root.appendChildView(\n root.createChildView(OverlayView, {\n opacity: 0,\n status: 'success'\n })\n );\n\n root.ref.overlayError = root.appendChildView(\n root.createChildView(OverlayView, {\n opacity: 0,\n status: 'failure'\n })\n );\n };\n\n return _.utils.createView({\n name: 'image-preview-wrapper',\n create: create,\n styles: ['height'],\n apis: ['height'],\n destroy: function destroy(_ref13) {\n var root = _ref13.root;\n // we resize the image so memory on iOS 12 is released more quickly (it seems)\n root.ref.images.forEach(function(imageView) {\n imageView.image.width = 1;\n imageView.image.height = 1;\n });\n },\n didWriteView: function didWriteView(_ref14) {\n var root = _ref14.root;\n root.ref.images.forEach(function(imageView) {\n imageView.dirty = false;\n });\n },\n write: _.utils.createRoute(\n {\n // image preview stated\n DID_IMAGE_PREVIEW_DRAW: didDrawPreview,\n DID_IMAGE_PREVIEW_CONTAINER_CREATE: didCreatePreviewContainer,\n DID_FINISH_CALCULATE_PREVIEWSIZE: drawPreview,\n DID_UPDATE_ITEM_METADATA: didUpdateItemMetadata,\n\n // file states\n DID_THROW_ITEM_LOAD_ERROR: didThrowError,\n DID_THROW_ITEM_PROCESSING_ERROR: didThrowError,\n DID_THROW_ITEM_INVALID: didThrowError,\n DID_COMPLETE_ITEM_PROCESSING: didCompleteProcessing,\n DID_START_ITEM_PROCESSING: restoreOverlay,\n DID_REVERT_ITEM_PROCESSING: restoreOverlay\n },\n\n function(_ref15) {\n var root = _ref15.root;\n // views on death row\n var viewsToRemove = root.ref.imageViewBin.filter(function(imageView) {\n return imageView.opacity === 0;\n });\n\n // views to retain\n root.ref.imageViewBin = root.ref.imageViewBin.filter(function(\n imageView\n ) {\n return imageView.opacity > 0;\n });\n\n // remove these views\n viewsToRemove.forEach(function(imageView) {\n return removeImageView(root, imageView);\n });\n viewsToRemove.length = 0;\n }\n )\n });\n };\n\n /**\n * Image Preview Plugin\n */\n var plugin = function plugin(fpAPI) {\n var addFilter = fpAPI.addFilter,\n utils = fpAPI.utils;\n var Type = utils.Type,\n createRoute = utils.createRoute,\n isFile = utils.isFile;\n\n // imagePreviewView\n var imagePreviewView = createImageWrapperView(fpAPI);\n\n // called for each view that is created right after the 'create' method\n addFilter('CREATE_VIEW', function(viewAPI) {\n // get reference to created view\n var is = viewAPI.is,\n view = viewAPI.view,\n query = viewAPI.query;\n\n // only hook up to item view and only if is enabled for this cropper\n if (!is('file') || !query('GET_ALLOW_IMAGE_PREVIEW')) return;\n\n // create the image preview plugin, but only do so if the item is an image\n var didLoadItem = function didLoadItem(_ref) {\n var root = _ref.root,\n props = _ref.props;\n var id = props.id;\n var item = query('GET_ITEM', id);\n\n // item could theoretically have been removed in the mean time\n if (!item || !isFile(item.file) || item.archived) return;\n\n // get the file object\n var file = item.file;\n\n // exit if this is not an image\n if (!isPreviewableImage(file)) return;\n\n // test if is filtered\n if (!query('GET_IMAGE_PREVIEW_FILTER_ITEM')(item)) return;\n\n // exit if image size is too high and no createImageBitmap support\n // this would simply bring the browser to its knees and that is not what we want\n var supportsCreateImageBitmap = 'createImageBitmap' in (window || {});\n var maxPreviewFileSize = query('GET_IMAGE_PREVIEW_MAX_FILE_SIZE');\n if (\n !supportsCreateImageBitmap &&\n maxPreviewFileSize &&\n file.size > maxPreviewFileSize\n )\n return;\n\n // set preview view\n root.ref.imagePreview = view.appendChildView(\n view.createChildView(imagePreviewView, { id: id })\n );\n\n // update height if is fixed\n var fixedPreviewHeight = root.query('GET_IMAGE_PREVIEW_HEIGHT');\n if (fixedPreviewHeight) {\n root.dispatch('DID_UPDATE_PANEL_HEIGHT', {\n id: item.id,\n height: fixedPreviewHeight\n });\n }\n\n // now ready\n var queue =\n !supportsCreateImageBitmap &&\n file.size > query('GET_IMAGE_PREVIEW_MAX_INSTANT_PREVIEW_FILE_SIZE');\n root.dispatch('DID_IMAGE_PREVIEW_CONTAINER_CREATE', { id: id }, queue);\n };\n\n var rescaleItem = function rescaleItem(root, props) {\n if (!root.ref.imagePreview) return;\n var id = props.id;\n\n // get item\n var item = root.query('GET_ITEM', { id: id });\n if (!item) return;\n\n // if is fixed height or panel has aspect ratio, exit here, height has already been defined\n var panelAspectRatio = root.query('GET_PANEL_ASPECT_RATIO');\n var itemPanelAspectRatio = root.query('GET_ITEM_PANEL_ASPECT_RATIO');\n var fixedHeight = root.query('GET_IMAGE_PREVIEW_HEIGHT');\n if (panelAspectRatio || itemPanelAspectRatio || fixedHeight) return;\n\n // no data!\n var _root$ref = root.ref,\n imageWidth = _root$ref.imageWidth,\n imageHeight = _root$ref.imageHeight;\n if (!imageWidth || !imageHeight) return;\n\n // get height min and max\n var minPreviewHeight = root.query('GET_IMAGE_PREVIEW_MIN_HEIGHT');\n var maxPreviewHeight = root.query('GET_IMAGE_PREVIEW_MAX_HEIGHT');\n\n // orientation info\n var exif = item.getMetadata('exif') || {};\n var orientation = exif.orientation || -1;\n\n // get width and height from action, and swap of orientation is incorrect\n if (orientation >= 5 && orientation <= 8) {\n var _ref2 = [imageHeight, imageWidth];\n imageWidth = _ref2[0];\n imageHeight = _ref2[1];\n }\n\n // scale up width and height when we're dealing with an SVG\n if (!isBitmap(item.file) || root.query('GET_IMAGE_PREVIEW_UPSCALE')) {\n var scalar = 2048 / imageWidth;\n imageWidth *= scalar;\n imageHeight *= scalar;\n }\n\n // image aspect ratio\n var imageAspectRatio = imageHeight / imageWidth;\n\n // we need the item to get to the crop size\n var previewAspectRatio =\n (item.getMetadata('crop') || {}).aspectRatio || imageAspectRatio;\n\n // preview height range\n var previewHeightMax = Math.max(\n minPreviewHeight,\n Math.min(imageHeight, maxPreviewHeight)\n );\n\n var itemWidth = root.rect.element.width;\n var previewHeight = Math.min(\n itemWidth * previewAspectRatio,\n previewHeightMax\n );\n\n // request update to panel height\n root.dispatch('DID_UPDATE_PANEL_HEIGHT', {\n id: item.id,\n height: previewHeight\n });\n };\n\n var didResizeView = function didResizeView(_ref3) {\n var root = _ref3.root;\n // actions in next write operation\n root.ref.shouldRescale = true;\n };\n\n var didUpdateItemMetadata = function didUpdateItemMetadata(_ref4) {\n var root = _ref4.root,\n action = _ref4.action;\n if (action.change.key !== 'crop') return;\n\n // actions in next write operation\n root.ref.shouldRescale = true;\n };\n\n var didCalculatePreviewSize = function didCalculatePreviewSize(_ref5) {\n var root = _ref5.root,\n action = _ref5.action;\n // remember dimensions\n root.ref.imageWidth = action.width;\n root.ref.imageHeight = action.height;\n\n // actions in next write operation\n root.ref.shouldRescale = true;\n root.ref.shouldDrawPreview = true;\n\n // as image load could take a while and fire when draw loop is resting we need to give it a kick\n root.dispatch('KICK');\n };\n\n // start writing\n view.registerWriter(\n createRoute(\n {\n DID_RESIZE_ROOT: didResizeView,\n DID_STOP_RESIZE: didResizeView,\n DID_LOAD_ITEM: didLoadItem,\n DID_IMAGE_PREVIEW_CALCULATE_SIZE: didCalculatePreviewSize,\n DID_UPDATE_ITEM_METADATA: didUpdateItemMetadata\n },\n\n function(_ref6) {\n var root = _ref6.root,\n props = _ref6.props;\n // no preview view attached\n if (!root.ref.imagePreview) return;\n\n // don't do anything while hidden\n if (root.rect.element.hidden) return;\n\n // resize the item panel\n if (root.ref.shouldRescale) {\n rescaleItem(root, props);\n root.ref.shouldRescale = false;\n }\n\n if (root.ref.shouldDrawPreview) {\n // queue till next frame so we're sure the height has been applied this forces the draw image call inside the wrapper view to use the correct height\n requestAnimationFrame(function() {\n // this requestAnimationFrame nesting is horrible but it fixes an issue with 100hz displays on Chrome\n // https://github.com/pqina/filepond-plugin-image-preview/issues/57\n requestAnimationFrame(function() {\n root.dispatch('DID_FINISH_CALCULATE_PREVIEWSIZE', {\n id: props.id\n });\n });\n });\n\n root.ref.shouldDrawPreview = false;\n }\n }\n )\n );\n });\n\n // expose plugin\n return {\n options: {\n // Enable or disable image preview\n allowImagePreview: [true, Type.BOOLEAN],\n\n // filters file items to determine which are shown as preview\n imagePreviewFilterItem: [\n function() {\n return true;\n },\n Type.FUNCTION\n ],\n\n // Fixed preview height\n imagePreviewHeight: [null, Type.INT],\n\n // Min image height\n imagePreviewMinHeight: [44, Type.INT],\n\n // Max image height\n imagePreviewMaxHeight: [256, Type.INT],\n\n // Max size of preview file for when createImageBitmap is not supported\n imagePreviewMaxFileSize: [null, Type.INT],\n\n // The amount of extra pixels added to the image preview to allow comfortable zooming\n imagePreviewZoomFactor: [2, Type.INT],\n\n // Should we upscale small images to fit the max bounding box of the preview area\n imagePreviewUpscale: [false, Type.BOOLEAN],\n\n // Max size of preview file that we allow to try to instant preview if createImageBitmap is not supported, else image is queued for loading\n imagePreviewMaxInstantPreviewFileSize: [1000000, Type.INT],\n\n // Style of the transparancy indicator used behind images\n imagePreviewTransparencyIndicator: [null, Type.STRING],\n\n // Enables or disables reading average image color\n imagePreviewCalculateAverageImageColor: [false, Type.BOOLEAN],\n\n // Enables or disables the previewing of markup\n imagePreviewMarkupShow: [true, Type.BOOLEAN],\n\n // Allows filtering of markup to only show certain shapes\n imagePreviewMarkupFilter: [\n function() {\n return true;\n },\n Type.FUNCTION\n ]\n }\n };\n };\n\n // fire pluginloaded event if running in browser, this allows registering the plugin when using async script tags\n var isBrowser =\n typeof window !== 'undefined' && typeof window.document !== 'undefined';\n if (isBrowser) {\n document.dispatchEvent(\n new CustomEvent('FilePond:pluginloaded', { detail: plugin })\n );\n }\n\n return plugin;\n});\n","/*!\n * FilePond 4.30.4\n * Licensed under MIT, https://opensource.org/licenses/MIT/\n * Please visit https://pqina.nl/filepond/ for details.\n */\n\n/* eslint-disable */\n\n(function(global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n ? factory(exports)\n : typeof define === 'function' && define.amd\n ? define(['exports'], factory)\n : ((global = global || self), factory((global.FilePond = {})));\n})(this, function(exports) {\n 'use strict';\n\n var isNode = function isNode(value) {\n return value instanceof HTMLElement;\n };\n\n var createStore = function createStore(initialState) {\n var queries = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var actions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n // internal state\n var state = Object.assign({}, initialState);\n\n // contains all actions for next frame, is clear when actions are requested\n var actionQueue = [];\n var dispatchQueue = [];\n\n // returns a duplicate of the current state\n var getState = function getState() {\n return Object.assign({}, state);\n };\n\n // returns a duplicate of the actions array and clears the actions array\n var processActionQueue = function processActionQueue() {\n // create copy of actions queue\n var queue = [].concat(actionQueue);\n\n // clear actions queue (we don't want no double actions)\n actionQueue.length = 0;\n\n return queue;\n };\n\n // processes actions that might block the main UI thread\n var processDispatchQueue = function processDispatchQueue() {\n // create copy of actions queue\n var queue = [].concat(dispatchQueue);\n\n // clear actions queue (we don't want no double actions)\n dispatchQueue.length = 0;\n\n // now dispatch these actions\n queue.forEach(function(_ref) {\n var type = _ref.type,\n data = _ref.data;\n dispatch(type, data);\n });\n };\n\n // adds a new action, calls its handler and\n var dispatch = function dispatch(type, data, isBlocking) {\n // is blocking action (should never block if document is hidden)\n if (isBlocking && !document.hidden) {\n dispatchQueue.push({ type: type, data: data });\n return;\n }\n\n // if this action has a handler, handle the action\n if (actionHandlers[type]) {\n actionHandlers[type](data);\n }\n\n // now add action\n actionQueue.push({\n type: type,\n data: data,\n });\n };\n\n var query = function query(str) {\n var _queryHandles;\n for (\n var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1;\n _key < _len;\n _key++\n ) {\n args[_key - 1] = arguments[_key];\n }\n return queryHandles[str]\n ? (_queryHandles = queryHandles)[str].apply(_queryHandles, args)\n : null;\n };\n\n var api = {\n getState: getState,\n processActionQueue: processActionQueue,\n processDispatchQueue: processDispatchQueue,\n dispatch: dispatch,\n query: query,\n };\n\n var queryHandles = {};\n queries.forEach(function(query) {\n queryHandles = Object.assign({}, query(state), {}, queryHandles);\n });\n\n var actionHandlers = {};\n actions.forEach(function(action) {\n actionHandlers = Object.assign({}, action(dispatch, query, state), {}, actionHandlers);\n });\n\n return api;\n };\n\n var defineProperty = function defineProperty(obj, property, definition) {\n if (typeof definition === 'function') {\n obj[property] = definition;\n return;\n }\n Object.defineProperty(obj, property, Object.assign({}, definition));\n };\n\n var forin = function forin(obj, cb) {\n for (var key in obj) {\n if (!obj.hasOwnProperty(key)) {\n continue;\n }\n\n cb(key, obj[key]);\n }\n };\n\n var createObject = function createObject(definition) {\n var obj = {};\n forin(definition, function(property) {\n defineProperty(obj, property, definition[property]);\n });\n return obj;\n };\n\n var attr = function attr(node, name) {\n var value = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n if (value === null) {\n return node.getAttribute(name) || node.hasAttribute(name);\n }\n node.setAttribute(name, value);\n };\n\n var ns = 'http://www.w3.org/2000/svg';\n var svgElements = ['svg', 'path']; // only svg elements used\n\n var isSVGElement = function isSVGElement(tag) {\n return svgElements.includes(tag);\n };\n\n var createElement = function createElement(tag, className) {\n var attributes = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (typeof className === 'object') {\n attributes = className;\n className = null;\n }\n var element = isSVGElement(tag)\n ? document.createElementNS(ns, tag)\n : document.createElement(tag);\n if (className) {\n if (isSVGElement(tag)) {\n attr(element, 'class', className);\n } else {\n element.className = className;\n }\n }\n forin(attributes, function(name, value) {\n attr(element, name, value);\n });\n return element;\n };\n\n var appendChild = function appendChild(parent) {\n return function(child, index) {\n if (typeof index !== 'undefined' && parent.children[index]) {\n parent.insertBefore(child, parent.children[index]);\n } else {\n parent.appendChild(child);\n }\n };\n };\n\n var appendChildView = function appendChildView(parent, childViews) {\n return function(view, index) {\n if (typeof index !== 'undefined') {\n childViews.splice(index, 0, view);\n } else {\n childViews.push(view);\n }\n\n return view;\n };\n };\n\n var removeChildView = function removeChildView(parent, childViews) {\n return function(view) {\n // remove from child views\n childViews.splice(childViews.indexOf(view), 1);\n\n // remove the element\n if (view.element.parentNode) {\n parent.removeChild(view.element);\n }\n\n return view;\n };\n };\n\n var IS_BROWSER = (function() {\n return typeof window !== 'undefined' && typeof window.document !== 'undefined';\n })();\n var isBrowser = function isBrowser() {\n return IS_BROWSER;\n };\n\n var testElement = isBrowser() ? createElement('svg') : {};\n var getChildCount =\n 'children' in testElement\n ? function(el) {\n return el.children.length;\n }\n : function(el) {\n return el.childNodes.length;\n };\n\n var getViewRect = function getViewRect(elementRect, childViews, offset, scale) {\n var left = offset[0] || elementRect.left;\n var top = offset[1] || elementRect.top;\n var right = left + elementRect.width;\n var bottom = top + elementRect.height * (scale[1] || 1);\n\n var rect = {\n // the rectangle of the element itself\n element: Object.assign({}, elementRect),\n\n // the rectangle of the element expanded to contain its children, does not include any margins\n inner: {\n left: elementRect.left,\n top: elementRect.top,\n right: elementRect.right,\n bottom: elementRect.bottom,\n },\n\n // the rectangle of the element expanded to contain its children including own margin and child margins\n // margins will be added after we've recalculated the size\n outer: {\n left: left,\n top: top,\n right: right,\n bottom: bottom,\n },\n };\n\n // expand rect to fit all child rectangles\n childViews\n .filter(function(childView) {\n return !childView.isRectIgnored();\n })\n .map(function(childView) {\n return childView.rect;\n })\n .forEach(function(childViewRect) {\n expandRect(rect.inner, Object.assign({}, childViewRect.inner));\n expandRect(rect.outer, Object.assign({}, childViewRect.outer));\n });\n\n // calculate inner width and height\n calculateRectSize(rect.inner);\n\n // append additional margin (top and left margins are included in top and left automatically)\n rect.outer.bottom += rect.element.marginBottom;\n rect.outer.right += rect.element.marginRight;\n\n // calculate outer width and height\n calculateRectSize(rect.outer);\n\n return rect;\n };\n\n var expandRect = function expandRect(parent, child) {\n // adjust for parent offset\n child.top += parent.top;\n child.right += parent.left;\n child.bottom += parent.top;\n child.left += parent.left;\n\n if (child.bottom > parent.bottom) {\n parent.bottom = child.bottom;\n }\n\n if (child.right > parent.right) {\n parent.right = child.right;\n }\n };\n\n var calculateRectSize = function calculateRectSize(rect) {\n rect.width = rect.right - rect.left;\n rect.height = rect.bottom - rect.top;\n };\n\n var isNumber = function isNumber(value) {\n return typeof value === 'number';\n };\n\n /**\n * Determines if position is at destination\n * @param position\n * @param destination\n * @param velocity\n * @param errorMargin\n * @returns {boolean}\n */\n var thereYet = function thereYet(position, destination, velocity) {\n var errorMargin = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0.001;\n return Math.abs(position - destination) < errorMargin && Math.abs(velocity) < errorMargin;\n };\n\n /**\n * Spring animation\n */\n var spring =\n // default options\n function spring() // method definition\n {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$stiffness = _ref.stiffness,\n stiffness = _ref$stiffness === void 0 ? 0.5 : _ref$stiffness,\n _ref$damping = _ref.damping,\n damping = _ref$damping === void 0 ? 0.75 : _ref$damping,\n _ref$mass = _ref.mass,\n mass = _ref$mass === void 0 ? 10 : _ref$mass;\n var target = null;\n var position = null;\n var velocity = 0;\n var resting = false;\n\n // updates spring state\n var interpolate = function interpolate(ts, skipToEndState) {\n // in rest, don't animate\n if (resting) return;\n\n // need at least a target or position to do springy things\n if (!(isNumber(target) && isNumber(position))) {\n resting = true;\n velocity = 0;\n return;\n }\n\n // calculate spring force\n var f = -(position - target) * stiffness;\n\n // update velocity by adding force based on mass\n velocity += f / mass;\n\n // update position by adding velocity\n position += velocity;\n\n // slow down based on amount of damping\n velocity *= damping;\n\n // we've arrived if we're near target and our velocity is near zero\n if (thereYet(position, target, velocity) || skipToEndState) {\n position = target;\n velocity = 0;\n resting = true;\n\n // we done\n api.onupdate(position);\n api.oncomplete(position);\n } else {\n // progress update\n api.onupdate(position);\n }\n };\n\n /**\n * Set new target value\n * @param value\n */\n var setTarget = function setTarget(value) {\n // if currently has no position, set target and position to this value\n if (isNumber(value) && !isNumber(position)) {\n position = value;\n }\n\n // next target value will not be animated to\n if (target === null) {\n target = value;\n position = value;\n }\n\n // let start moving to target\n target = value;\n\n // already at target\n if (position === target || typeof target === 'undefined') {\n // now resting as target is current position, stop moving\n resting = true;\n velocity = 0;\n\n // done!\n api.onupdate(position);\n api.oncomplete(position);\n\n return;\n }\n\n resting = false;\n };\n\n // need 'api' to call onupdate callback\n var api = createObject({\n interpolate: interpolate,\n target: {\n set: setTarget,\n get: function get() {\n return target;\n },\n },\n\n resting: {\n get: function get() {\n return resting;\n },\n },\n\n onupdate: function onupdate(value) {},\n oncomplete: function oncomplete(value) {},\n });\n\n return api;\n };\n\n var easeLinear = function easeLinear(t) {\n return t;\n };\n var easeInOutQuad = function easeInOutQuad(t) {\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\n };\n\n var tween =\n // default values\n function tween() // method definition\n {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$duration = _ref.duration,\n duration = _ref$duration === void 0 ? 500 : _ref$duration,\n _ref$easing = _ref.easing,\n easing = _ref$easing === void 0 ? easeInOutQuad : _ref$easing,\n _ref$delay = _ref.delay,\n delay = _ref$delay === void 0 ? 0 : _ref$delay;\n var start = null;\n var t;\n var p;\n var resting = true;\n var reverse = false;\n var target = null;\n\n var interpolate = function interpolate(ts, skipToEndState) {\n if (resting || target === null) return;\n\n if (start === null) {\n start = ts;\n }\n\n if (ts - start < delay) return;\n\n t = ts - start - delay;\n\n if (t >= duration || skipToEndState) {\n t = 1;\n p = reverse ? 0 : 1;\n api.onupdate(p * target);\n api.oncomplete(p * target);\n resting = true;\n } else {\n p = t / duration;\n api.onupdate((t >= 0 ? easing(reverse ? 1 - p : p) : 0) * target);\n }\n };\n\n // need 'api' to call onupdate callback\n var api = createObject({\n interpolate: interpolate,\n target: {\n get: function get() {\n return reverse ? 0 : target;\n },\n set: function set(value) {\n // is initial value\n if (target === null) {\n target = value;\n api.onupdate(value);\n api.oncomplete(value);\n return;\n }\n\n // want to tween to a smaller value and have a current value\n if (value < target) {\n target = 1;\n reverse = true;\n } else {\n // not tweening to a smaller value\n reverse = false;\n target = value;\n }\n\n // let's go!\n resting = false;\n start = null;\n },\n },\n\n resting: {\n get: function get() {\n return resting;\n },\n },\n\n onupdate: function onupdate(value) {},\n oncomplete: function oncomplete(value) {},\n });\n\n return api;\n };\n\n var animator = {\n spring: spring,\n tween: tween,\n };\n\n /*\n { type: 'spring', stiffness: .5, damping: .75, mass: 10 };\n { translation: { type: 'spring', ... }, ... }\n { translation: { x: { type: 'spring', ... } } }\n */\n var createAnimator = function createAnimator(definition, category, property) {\n // default is single definition\n // we check if transform is set, if so, we check if property is set\n var def =\n definition[category] && typeof definition[category][property] === 'object'\n ? definition[category][property]\n : definition[category] || definition;\n\n var type = typeof def === 'string' ? def : def.type;\n var props = typeof def === 'object' ? Object.assign({}, def) : {};\n\n return animator[type] ? animator[type](props) : null;\n };\n\n var addGetSet = function addGetSet(keys, obj, props) {\n var overwrite = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n obj = Array.isArray(obj) ? obj : [obj];\n obj.forEach(function(o) {\n keys.forEach(function(key) {\n var name = key;\n var getter = function getter() {\n return props[key];\n };\n var setter = function setter(value) {\n return (props[key] = value);\n };\n\n if (typeof key === 'object') {\n name = key.key;\n getter = key.getter || getter;\n setter = key.setter || setter;\n }\n\n if (o[name] && !overwrite) {\n return;\n }\n\n o[name] = {\n get: getter,\n set: setter,\n };\n });\n });\n };\n\n // add to state,\n // add getters and setters to internal and external api (if not set)\n // setup animators\n\n var animations = function animations(_ref) {\n var mixinConfig = _ref.mixinConfig,\n viewProps = _ref.viewProps,\n viewInternalAPI = _ref.viewInternalAPI,\n viewExternalAPI = _ref.viewExternalAPI;\n // initial properties\n var initialProps = Object.assign({}, viewProps);\n\n // list of all active animations\n var animations = [];\n\n // setup animators\n forin(mixinConfig, function(property, animation) {\n var animator = createAnimator(animation);\n if (!animator) {\n return;\n }\n\n // when the animator updates, update the view state value\n animator.onupdate = function(value) {\n viewProps[property] = value;\n };\n\n // set animator target\n animator.target = initialProps[property];\n\n // when value is set, set the animator target value\n var prop = {\n key: property,\n setter: function setter(value) {\n // if already at target, we done!\n if (animator.target === value) {\n return;\n }\n\n animator.target = value;\n },\n getter: function getter() {\n return viewProps[property];\n },\n };\n\n // add getters and setters\n addGetSet([prop], [viewInternalAPI, viewExternalAPI], viewProps, true);\n\n // add it to the list for easy updating from the _write method\n animations.push(animator);\n });\n\n // expose internal write api\n return {\n write: function write(ts) {\n var skipToEndState = document.hidden;\n var resting = true;\n animations.forEach(function(animation) {\n if (!animation.resting) resting = false;\n animation.interpolate(ts, skipToEndState);\n });\n return resting;\n },\n destroy: function destroy() {},\n };\n };\n\n var addEvent = function addEvent(element) {\n return function(type, fn) {\n element.addEventListener(type, fn);\n };\n };\n\n var removeEvent = function removeEvent(element) {\n return function(type, fn) {\n element.removeEventListener(type, fn);\n };\n };\n\n // mixin\n var listeners = function listeners(_ref) {\n var mixinConfig = _ref.mixinConfig,\n viewProps = _ref.viewProps,\n viewInternalAPI = _ref.viewInternalAPI,\n viewExternalAPI = _ref.viewExternalAPI,\n viewState = _ref.viewState,\n view = _ref.view;\n var events = [];\n\n var add = addEvent(view.element);\n var remove = removeEvent(view.element);\n\n viewExternalAPI.on = function(type, fn) {\n events.push({\n type: type,\n fn: fn,\n });\n\n add(type, fn);\n };\n\n viewExternalAPI.off = function(type, fn) {\n events.splice(\n events.findIndex(function(event) {\n return event.type === type && event.fn === fn;\n }),\n 1\n );\n\n remove(type, fn);\n };\n\n return {\n write: function write() {\n // not busy\n return true;\n },\n destroy: function destroy() {\n events.forEach(function(event) {\n remove(event.type, event.fn);\n });\n },\n };\n };\n\n // add to external api and link to props\n\n var apis = function apis(_ref) {\n var mixinConfig = _ref.mixinConfig,\n viewProps = _ref.viewProps,\n viewExternalAPI = _ref.viewExternalAPI;\n addGetSet(mixinConfig, viewExternalAPI, viewProps);\n };\n\n var isDefined = function isDefined(value) {\n return value != null;\n };\n\n // add to state,\n // add getters and setters to internal and external api (if not set)\n // set initial state based on props in viewProps\n // apply as transforms each frame\n\n var defaults = {\n opacity: 1,\n scaleX: 1,\n scaleY: 1,\n translateX: 0,\n translateY: 0,\n rotateX: 0,\n rotateY: 0,\n rotateZ: 0,\n originX: 0,\n originY: 0,\n };\n\n var styles = function styles(_ref) {\n var mixinConfig = _ref.mixinConfig,\n viewProps = _ref.viewProps,\n viewInternalAPI = _ref.viewInternalAPI,\n viewExternalAPI = _ref.viewExternalAPI,\n view = _ref.view;\n // initial props\n var initialProps = Object.assign({}, viewProps);\n\n // current props\n var currentProps = {};\n\n // we will add those properties to the external API and link them to the viewState\n addGetSet(mixinConfig, [viewInternalAPI, viewExternalAPI], viewProps);\n\n // override rect on internal and external rect getter so it takes in account transforms\n var getOffset = function getOffset() {\n return [viewProps['translateX'] || 0, viewProps['translateY'] || 0];\n };\n\n var getScale = function getScale() {\n return [viewProps['scaleX'] || 0, viewProps['scaleY'] || 0];\n };\n var getRect = function getRect() {\n return view.rect\n ? getViewRect(view.rect, view.childViews, getOffset(), getScale())\n : null;\n };\n viewInternalAPI.rect = { get: getRect };\n viewExternalAPI.rect = { get: getRect };\n\n // apply view props\n mixinConfig.forEach(function(key) {\n viewProps[key] =\n typeof initialProps[key] === 'undefined' ? defaults[key] : initialProps[key];\n });\n\n // expose api\n return {\n write: function write() {\n // see if props have changed\n if (!propsHaveChanged(currentProps, viewProps)) {\n return;\n }\n\n // moves element to correct position on screen\n applyStyles(view.element, viewProps);\n\n // store new transforms\n Object.assign(currentProps, Object.assign({}, viewProps));\n\n // no longer busy\n return true;\n },\n destroy: function destroy() {},\n };\n };\n\n var propsHaveChanged = function propsHaveChanged(currentProps, newProps) {\n // different amount of keys\n if (Object.keys(currentProps).length !== Object.keys(newProps).length) {\n return true;\n }\n\n // lets analyze the individual props\n for (var prop in newProps) {\n if (newProps[prop] !== currentProps[prop]) {\n return true;\n }\n }\n\n return false;\n };\n\n var applyStyles = function applyStyles(element, _ref2) {\n var opacity = _ref2.opacity,\n perspective = _ref2.perspective,\n translateX = _ref2.translateX,\n translateY = _ref2.translateY,\n scaleX = _ref2.scaleX,\n scaleY = _ref2.scaleY,\n rotateX = _ref2.rotateX,\n rotateY = _ref2.rotateY,\n rotateZ = _ref2.rotateZ,\n originX = _ref2.originX,\n originY = _ref2.originY,\n width = _ref2.width,\n height = _ref2.height;\n\n var transforms = '';\n var styles = '';\n\n // handle transform origin\n if (isDefined(originX) || isDefined(originY)) {\n styles += 'transform-origin: ' + (originX || 0) + 'px ' + (originY || 0) + 'px;';\n }\n\n // transform order is relevant\n // 0. perspective\n if (isDefined(perspective)) {\n transforms += 'perspective(' + perspective + 'px) ';\n }\n\n // 1. translate\n if (isDefined(translateX) || isDefined(translateY)) {\n transforms +=\n 'translate3d(' + (translateX || 0) + 'px, ' + (translateY || 0) + 'px, 0) ';\n }\n\n // 2. scale\n if (isDefined(scaleX) || isDefined(scaleY)) {\n transforms +=\n 'scale3d(' +\n (isDefined(scaleX) ? scaleX : 1) +\n ', ' +\n (isDefined(scaleY) ? scaleY : 1) +\n ', 1) ';\n }\n\n // 3. rotate\n if (isDefined(rotateZ)) {\n transforms += 'rotateZ(' + rotateZ + 'rad) ';\n }\n\n if (isDefined(rotateX)) {\n transforms += 'rotateX(' + rotateX + 'rad) ';\n }\n\n if (isDefined(rotateY)) {\n transforms += 'rotateY(' + rotateY + 'rad) ';\n }\n\n // add transforms\n if (transforms.length) {\n styles += 'transform:' + transforms + ';';\n }\n\n // add opacity\n if (isDefined(opacity)) {\n styles += 'opacity:' + opacity + ';';\n\n // if we reach zero, we make the element inaccessible\n if (opacity === 0) {\n styles += 'visibility:hidden;';\n }\n\n // if we're below 100% opacity this element can't be clicked\n if (opacity < 1) {\n styles += 'pointer-events:none;';\n }\n }\n\n // add height\n if (isDefined(height)) {\n styles += 'height:' + height + 'px;';\n }\n\n // add width\n if (isDefined(width)) {\n styles += 'width:' + width + 'px;';\n }\n\n // apply styles\n var elementCurrentStyle = element.elementCurrentStyle || '';\n\n // if new styles does not match current styles, lets update!\n if (styles.length !== elementCurrentStyle.length || styles !== elementCurrentStyle) {\n element.style.cssText = styles;\n // store current styles so we can compare them to new styles later on\n // _not_ getting the style value is faster\n element.elementCurrentStyle = styles;\n }\n };\n\n var Mixins = {\n styles: styles,\n listeners: listeners,\n animations: animations,\n apis: apis,\n };\n\n var updateRect = function updateRect() {\n var rect = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var element = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var style = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (!element.layoutCalculated) {\n rect.paddingTop = parseInt(style.paddingTop, 10) || 0;\n rect.marginTop = parseInt(style.marginTop, 10) || 0;\n rect.marginRight = parseInt(style.marginRight, 10) || 0;\n rect.marginBottom = parseInt(style.marginBottom, 10) || 0;\n rect.marginLeft = parseInt(style.marginLeft, 10) || 0;\n element.layoutCalculated = true;\n }\n\n rect.left = element.offsetLeft || 0;\n rect.top = element.offsetTop || 0;\n rect.width = element.offsetWidth || 0;\n rect.height = element.offsetHeight || 0;\n\n rect.right = rect.left + rect.width;\n rect.bottom = rect.top + rect.height;\n\n rect.scrollTop = element.scrollTop;\n\n rect.hidden = element.offsetParent === null;\n\n return rect;\n };\n\n var createView =\n // default view definition\n function createView() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$tag = _ref.tag,\n tag = _ref$tag === void 0 ? 'div' : _ref$tag,\n _ref$name = _ref.name,\n name = _ref$name === void 0 ? null : _ref$name,\n _ref$attributes = _ref.attributes,\n attributes = _ref$attributes === void 0 ? {} : _ref$attributes,\n _ref$read = _ref.read,\n read = _ref$read === void 0 ? function() {} : _ref$read,\n _ref$write = _ref.write,\n write = _ref$write === void 0 ? function() {} : _ref$write,\n _ref$create = _ref.create,\n create = _ref$create === void 0 ? function() {} : _ref$create,\n _ref$destroy = _ref.destroy,\n destroy = _ref$destroy === void 0 ? function() {} : _ref$destroy,\n _ref$filterFrameActio = _ref.filterFrameActionsForChild,\n filterFrameActionsForChild =\n _ref$filterFrameActio === void 0\n ? function(child, actions) {\n return actions;\n }\n : _ref$filterFrameActio,\n _ref$didCreateView = _ref.didCreateView,\n didCreateView = _ref$didCreateView === void 0 ? function() {} : _ref$didCreateView,\n _ref$didWriteView = _ref.didWriteView,\n didWriteView = _ref$didWriteView === void 0 ? function() {} : _ref$didWriteView,\n _ref$ignoreRect = _ref.ignoreRect,\n ignoreRect = _ref$ignoreRect === void 0 ? false : _ref$ignoreRect,\n _ref$ignoreRectUpdate = _ref.ignoreRectUpdate,\n ignoreRectUpdate = _ref$ignoreRectUpdate === void 0 ? false : _ref$ignoreRectUpdate,\n _ref$mixins = _ref.mixins,\n mixins = _ref$mixins === void 0 ? [] : _ref$mixins;\n return function(\n // each view requires reference to store\n store\n ) {\n var props = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // root element should not be changed\n var element = createElement(tag, 'filepond--' + name, attributes);\n\n // style reference should also not be changed\n var style = window.getComputedStyle(element, null);\n\n // element rectangle\n var rect = updateRect();\n var frameRect = null;\n\n // rest state\n var isResting = false;\n\n // pretty self explanatory\n var childViews = [];\n\n // loaded mixins\n var activeMixins = [];\n\n // references to created children\n var ref = {};\n\n // state used for each instance\n var state = {};\n\n // list of writers that will be called to update this view\n var writers = [\n write, // default writer\n ];\n\n var readers = [\n read, // default reader\n ];\n\n var destroyers = [\n destroy, // default destroy\n ];\n\n // core view methods\n var getElement = function getElement() {\n return element;\n };\n var getChildViews = function getChildViews() {\n return childViews.concat();\n };\n var getReference = function getReference() {\n return ref;\n };\n var createChildView = function createChildView(store) {\n return function(view, props) {\n return view(store, props);\n };\n };\n var getRect = function getRect() {\n if (frameRect) {\n return frameRect;\n }\n frameRect = getViewRect(rect, childViews, [0, 0], [1, 1]);\n return frameRect;\n };\n var getStyle = function getStyle() {\n return style;\n };\n\n /**\n * Read data from DOM\n * @private\n */\n var _read = function _read() {\n frameRect = null;\n\n // read child views\n childViews.forEach(function(child) {\n return child._read();\n });\n\n var shouldUpdate = !(ignoreRectUpdate && rect.width && rect.height);\n if (shouldUpdate) {\n updateRect(rect, element, style);\n }\n\n // readers\n var api = { root: internalAPI, props: props, rect: rect };\n readers.forEach(function(reader) {\n return reader(api);\n });\n };\n\n /**\n * Write data to DOM\n * @private\n */\n var _write = function _write(ts, frameActions, shouldOptimize) {\n // if no actions, we assume that the view is resting\n var resting = frameActions.length === 0;\n\n // writers\n writers.forEach(function(writer) {\n var writerResting = writer({\n props: props,\n root: internalAPI,\n actions: frameActions,\n timestamp: ts,\n shouldOptimize: shouldOptimize,\n });\n\n if (writerResting === false) {\n resting = false;\n }\n });\n\n // run mixins\n activeMixins.forEach(function(mixin) {\n // if one of the mixins is still busy after write operation, we are not resting\n var mixinResting = mixin.write(ts);\n if (mixinResting === false) {\n resting = false;\n }\n });\n\n // updates child views that are currently attached to the DOM\n childViews\n .filter(function(child) {\n return !!child.element.parentNode;\n })\n .forEach(function(child) {\n // if a child view is not resting, we are not resting\n var childResting = child._write(\n ts,\n filterFrameActionsForChild(child, frameActions),\n shouldOptimize\n );\n\n if (!childResting) {\n resting = false;\n }\n });\n\n // append new elements to DOM and update those\n childViews\n //.filter(child => !child.element.parentNode)\n .forEach(function(child, index) {\n // skip\n if (child.element.parentNode) {\n return;\n }\n\n // append to DOM\n internalAPI.appendChild(child.element, index);\n\n // call read (need to know the size of these elements)\n child._read();\n\n // re-call write\n child._write(\n ts,\n filterFrameActionsForChild(child, frameActions),\n shouldOptimize\n );\n\n // we just added somthing to the dom, no rest\n resting = false;\n });\n\n // update resting state\n isResting = resting;\n\n didWriteView({\n props: props,\n root: internalAPI,\n actions: frameActions,\n timestamp: ts,\n });\n\n // let parent know if we are resting\n return resting;\n };\n\n var _destroy = function _destroy() {\n activeMixins.forEach(function(mixin) {\n return mixin.destroy();\n });\n destroyers.forEach(function(destroyer) {\n destroyer({ root: internalAPI, props: props });\n });\n childViews.forEach(function(child) {\n return child._destroy();\n });\n };\n\n // sharedAPI\n var sharedAPIDefinition = {\n element: {\n get: getElement,\n },\n\n style: {\n get: getStyle,\n },\n\n childViews: {\n get: getChildViews,\n },\n };\n\n // private API definition\n var internalAPIDefinition = Object.assign({}, sharedAPIDefinition, {\n rect: {\n get: getRect,\n },\n\n // access to custom children references\n ref: {\n get: getReference,\n },\n\n // dom modifiers\n is: function is(needle) {\n return name === needle;\n },\n appendChild: appendChild(element),\n createChildView: createChildView(store),\n linkView: function linkView(view) {\n childViews.push(view);\n return view;\n },\n unlinkView: function unlinkView(view) {\n childViews.splice(childViews.indexOf(view), 1);\n },\n appendChildView: appendChildView(element, childViews),\n removeChildView: removeChildView(element, childViews),\n registerWriter: function registerWriter(writer) {\n return writers.push(writer);\n },\n registerReader: function registerReader(reader) {\n return readers.push(reader);\n },\n registerDestroyer: function registerDestroyer(destroyer) {\n return destroyers.push(destroyer);\n },\n invalidateLayout: function invalidateLayout() {\n return (element.layoutCalculated = false);\n },\n\n // access to data store\n dispatch: store.dispatch,\n query: store.query,\n });\n\n // public view API methods\n var externalAPIDefinition = {\n element: {\n get: getElement,\n },\n\n childViews: {\n get: getChildViews,\n },\n\n rect: {\n get: getRect,\n },\n\n resting: {\n get: function get() {\n return isResting;\n },\n },\n\n isRectIgnored: function isRectIgnored() {\n return ignoreRect;\n },\n _read: _read,\n _write: _write,\n _destroy: _destroy,\n };\n\n // mixin API methods\n var mixinAPIDefinition = Object.assign({}, sharedAPIDefinition, {\n rect: {\n get: function get() {\n return rect;\n },\n },\n });\n\n // add mixin functionality\n Object.keys(mixins)\n .sort(function(a, b) {\n // move styles to the back of the mixin list (so adjustments of other mixins are applied to the props correctly)\n if (a === 'styles') {\n return 1;\n } else if (b === 'styles') {\n return -1;\n }\n return 0;\n })\n .forEach(function(key) {\n var mixinAPI = Mixins[key]({\n mixinConfig: mixins[key],\n viewProps: props,\n viewState: state,\n viewInternalAPI: internalAPIDefinition,\n viewExternalAPI: externalAPIDefinition,\n view: createObject(mixinAPIDefinition),\n });\n\n if (mixinAPI) {\n activeMixins.push(mixinAPI);\n }\n });\n\n // construct private api\n var internalAPI = createObject(internalAPIDefinition);\n\n // create the view\n create({\n root: internalAPI,\n props: props,\n });\n\n // append created child views to root node\n var childCount = getChildCount(element); // need to know the current child count so appending happens in correct order\n childViews.forEach(function(child, index) {\n internalAPI.appendChild(child.element, childCount + index);\n });\n\n // call did create\n didCreateView(internalAPI);\n\n // expose public api\n return createObject(externalAPIDefinition);\n };\n };\n\n var createPainter = function createPainter(read, write) {\n var fps = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 60;\n\n var name = '__framePainter';\n\n // set global painter\n if (window[name]) {\n window[name].readers.push(read);\n window[name].writers.push(write);\n return;\n }\n\n window[name] = {\n readers: [read],\n writers: [write],\n };\n\n var painter = window[name];\n\n var interval = 1000 / fps;\n var last = null;\n var id = null;\n var requestTick = null;\n var cancelTick = null;\n\n var setTimerType = function setTimerType() {\n if (document.hidden) {\n requestTick = function requestTick() {\n return window.setTimeout(function() {\n return tick(performance.now());\n }, interval);\n };\n cancelTick = function cancelTick() {\n return window.clearTimeout(id);\n };\n } else {\n requestTick = function requestTick() {\n return window.requestAnimationFrame(tick);\n };\n cancelTick = function cancelTick() {\n return window.cancelAnimationFrame(id);\n };\n }\n };\n\n document.addEventListener('visibilitychange', function() {\n if (cancelTick) cancelTick();\n setTimerType();\n tick(performance.now());\n });\n\n var tick = function tick(ts) {\n // queue next tick\n id = requestTick(tick);\n\n // limit fps\n if (!last) {\n last = ts;\n }\n\n var delta = ts - last;\n\n if (delta <= interval) {\n // skip frame\n return;\n }\n\n // align next frame\n last = ts - (delta % interval);\n\n // update view\n painter.readers.forEach(function(read) {\n return read();\n });\n painter.writers.forEach(function(write) {\n return write(ts);\n });\n };\n\n setTimerType();\n tick(performance.now());\n\n return {\n pause: function pause() {\n cancelTick(id);\n },\n };\n };\n\n var createRoute = function createRoute(routes, fn) {\n return function(_ref) {\n var root = _ref.root,\n props = _ref.props,\n _ref$actions = _ref.actions,\n actions = _ref$actions === void 0 ? [] : _ref$actions,\n timestamp = _ref.timestamp,\n shouldOptimize = _ref.shouldOptimize;\n actions\n .filter(function(action) {\n return routes[action.type];\n })\n .forEach(function(action) {\n return routes[action.type]({\n root: root,\n props: props,\n action: action.data,\n timestamp: timestamp,\n shouldOptimize: shouldOptimize,\n });\n });\n\n if (fn) {\n fn({\n root: root,\n props: props,\n actions: actions,\n timestamp: timestamp,\n shouldOptimize: shouldOptimize,\n });\n }\n };\n };\n\n var insertBefore = function insertBefore(newNode, referenceNode) {\n return referenceNode.parentNode.insertBefore(newNode, referenceNode);\n };\n\n var insertAfter = function insertAfter(newNode, referenceNode) {\n return referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\n };\n\n var isArray = function isArray(value) {\n return Array.isArray(value);\n };\n\n var isEmpty = function isEmpty(value) {\n return value == null;\n };\n\n var trim = function trim(str) {\n return str.trim();\n };\n\n var toString = function toString(value) {\n return '' + value;\n };\n\n var toArray = function toArray(value) {\n var splitter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ',';\n if (isEmpty(value)) {\n return [];\n }\n if (isArray(value)) {\n return value;\n }\n return toString(value)\n .split(splitter)\n .map(trim)\n .filter(function(str) {\n return str.length;\n });\n };\n\n var isBoolean = function isBoolean(value) {\n return typeof value === 'boolean';\n };\n\n var toBoolean = function toBoolean(value) {\n return isBoolean(value) ? value : value === 'true';\n };\n\n var isString = function isString(value) {\n return typeof value === 'string';\n };\n\n var toNumber = function toNumber(value) {\n return isNumber(value)\n ? value\n : isString(value)\n ? toString(value).replace(/[a-z]+/gi, '')\n : 0;\n };\n\n var toInt = function toInt(value) {\n return parseInt(toNumber(value), 10);\n };\n\n var toFloat = function toFloat(value) {\n return parseFloat(toNumber(value));\n };\n\n var isInt = function isInt(value) {\n return isNumber(value) && isFinite(value) && Math.floor(value) === value;\n };\n\n var toBytes = function toBytes(value) {\n var base = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1000;\n // is in bytes\n if (isInt(value)) {\n return value;\n }\n\n // is natural file size\n var naturalFileSize = toString(value).trim();\n\n // if is value in megabytes\n if (/MB$/i.test(naturalFileSize)) {\n naturalFileSize = naturalFileSize.replace(/MB$i/, '').trim();\n return toInt(naturalFileSize) * base * base;\n }\n\n // if is value in kilobytes\n if (/KB/i.test(naturalFileSize)) {\n naturalFileSize = naturalFileSize.replace(/KB$i/, '').trim();\n return toInt(naturalFileSize) * base;\n }\n\n return toInt(naturalFileSize);\n };\n\n var isFunction = function isFunction(value) {\n return typeof value === 'function';\n };\n\n var toFunctionReference = function toFunctionReference(string) {\n var ref = self;\n var levels = string.split('.');\n var level = null;\n while ((level = levels.shift())) {\n ref = ref[level];\n if (!ref) {\n return null;\n }\n }\n return ref;\n };\n\n var methods = {\n process: 'POST',\n patch: 'PATCH',\n revert: 'DELETE',\n fetch: 'GET',\n restore: 'GET',\n load: 'GET',\n };\n\n var createServerAPI = function createServerAPI(outline) {\n var api = {};\n\n api.url = isString(outline) ? outline : outline.url || '';\n api.timeout = outline.timeout ? parseInt(outline.timeout, 10) : 0;\n api.headers = outline.headers ? outline.headers : {};\n\n forin(methods, function(key) {\n api[key] = createAction(key, outline[key], methods[key], api.timeout, api.headers);\n });\n\n // remove process if no url or process on outline\n api.process = outline.process || isString(outline) || outline.url ? api.process : null;\n\n // special treatment for remove\n api.remove = outline.remove || null;\n\n // remove generic headers from api object\n delete api.headers;\n\n return api;\n };\n\n var createAction = function createAction(name, outline, method, timeout, headers) {\n // is explicitely set to null so disable\n if (outline === null) {\n return null;\n }\n\n // if is custom function, done! Dev handles everything.\n if (typeof outline === 'function') {\n return outline;\n }\n\n // build action object\n var action = {\n url: method === 'GET' || method === 'PATCH' ? '?' + name + '=' : '',\n method: method,\n headers: headers,\n withCredentials: false,\n timeout: timeout,\n onload: null,\n ondata: null,\n onerror: null,\n };\n\n // is a single url\n if (isString(outline)) {\n action.url = outline;\n return action;\n }\n\n // overwrite\n Object.assign(action, outline);\n\n // see if should reformat headers;\n if (isString(action.headers)) {\n var parts = action.headers.split(/:(.+)/);\n action.headers = {\n header: parts[0],\n value: parts[1],\n };\n }\n\n // if is bool withCredentials\n action.withCredentials = toBoolean(action.withCredentials);\n\n return action;\n };\n\n var toServerAPI = function toServerAPI(value) {\n return createServerAPI(value);\n };\n\n var isNull = function isNull(value) {\n return value === null;\n };\n\n var isObject = function isObject(value) {\n return typeof value === 'object' && value !== null;\n };\n\n var isAPI = function isAPI(value) {\n return (\n isObject(value) &&\n isString(value.url) &&\n isObject(value.process) &&\n isObject(value.revert) &&\n isObject(value.restore) &&\n isObject(value.fetch)\n );\n };\n\n var getType = function getType(value) {\n if (isArray(value)) {\n return 'array';\n }\n\n if (isNull(value)) {\n return 'null';\n }\n\n if (isInt(value)) {\n return 'int';\n }\n\n if (/^[0-9]+ ?(?:GB|MB|KB)$/gi.test(value)) {\n return 'bytes';\n }\n\n if (isAPI(value)) {\n return 'api';\n }\n\n return typeof value;\n };\n\n var replaceSingleQuotes = function replaceSingleQuotes(str) {\n return str\n .replace(/{\\s*'/g, '{\"')\n .replace(/'\\s*}/g, '\"}')\n .replace(/'\\s*:/g, '\":')\n .replace(/:\\s*'/g, ':\"')\n .replace(/,\\s*'/g, ',\"')\n .replace(/'\\s*,/g, '\",');\n };\n\n var conversionTable = {\n array: toArray,\n boolean: toBoolean,\n int: function int(value) {\n return getType(value) === 'bytes' ? toBytes(value) : toInt(value);\n },\n number: toFloat,\n float: toFloat,\n bytes: toBytes,\n string: function string(value) {\n return isFunction(value) ? value : toString(value);\n },\n function: function _function(value) {\n return toFunctionReference(value);\n },\n serverapi: toServerAPI,\n object: function object(value) {\n try {\n return JSON.parse(replaceSingleQuotes(value));\n } catch (e) {\n return null;\n }\n },\n };\n\n var convertTo = function convertTo(value, type) {\n return conversionTable[type](value);\n };\n\n var getValueByType = function getValueByType(newValue, defaultValue, valueType) {\n // can always assign default value\n if (newValue === defaultValue) {\n return newValue;\n }\n\n // get the type of the new value\n var newValueType = getType(newValue);\n\n // is valid type?\n if (newValueType !== valueType) {\n // is string input, let's attempt to convert\n var convertedValue = convertTo(newValue, valueType);\n\n // what is the type now\n newValueType = getType(convertedValue);\n\n // no valid conversions found\n if (convertedValue === null) {\n throw 'Trying to assign value with incorrect type to \"' +\n option +\n '\", allowed type: \"' +\n valueType +\n '\"';\n } else {\n newValue = convertedValue;\n }\n }\n\n // assign new value\n return newValue;\n };\n\n var createOption = function createOption(defaultValue, valueType) {\n var currentValue = defaultValue;\n return {\n enumerable: true,\n get: function get() {\n return currentValue;\n },\n set: function set(newValue) {\n currentValue = getValueByType(newValue, defaultValue, valueType);\n },\n };\n };\n\n var createOptions = function createOptions(options) {\n var obj = {};\n forin(options, function(prop) {\n var optionDefinition = options[prop];\n obj[prop] = createOption(optionDefinition[0], optionDefinition[1]);\n });\n return createObject(obj);\n };\n\n var createInitialState = function createInitialState(options) {\n return {\n // model\n items: [],\n\n // timeout used for calling update items\n listUpdateTimeout: null,\n\n // timeout used for stacking metadata updates\n itemUpdateTimeout: null,\n\n // queue of items waiting to be processed\n processingQueue: [],\n\n // options\n options: createOptions(options),\n };\n };\n\n var fromCamels = function fromCamels(string) {\n var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '-';\n return string\n .split(/(?=[A-Z])/)\n .map(function(part) {\n return part.toLowerCase();\n })\n .join(separator);\n };\n\n var createOptionAPI = function createOptionAPI(store, options) {\n var obj = {};\n forin(options, function(key) {\n obj[key] = {\n get: function get() {\n return store.getState().options[key];\n },\n set: function set(value) {\n store.dispatch('SET_' + fromCamels(key, '_').toUpperCase(), {\n value: value,\n });\n },\n };\n });\n return obj;\n };\n\n var createOptionActions = function createOptionActions(options) {\n return function(dispatch, query, state) {\n var obj = {};\n forin(options, function(key) {\n var name = fromCamels(key, '_').toUpperCase();\n\n obj['SET_' + name] = function(action) {\n try {\n state.options[key] = action.value;\n } catch (e) {} // nope, failed\n\n // we successfully set the value of this option\n dispatch('DID_SET_' + name, { value: state.options[key] });\n };\n });\n return obj;\n };\n };\n\n var createOptionQueries = function createOptionQueries(options) {\n return function(state) {\n var obj = {};\n forin(options, function(key) {\n obj['GET_' + fromCamels(key, '_').toUpperCase()] = function(action) {\n return state.options[key];\n };\n });\n return obj;\n };\n };\n\n var InteractionMethod = {\n API: 1,\n DROP: 2,\n BROWSE: 3,\n PASTE: 4,\n NONE: 5,\n };\n\n var getUniqueId = function getUniqueId() {\n return Math.random()\n .toString(36)\n .substring(2, 11);\n };\n\n function _typeof(obj) {\n if (typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol') {\n _typeof = function(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function(obj) {\n return obj &&\n typeof Symbol === 'function' &&\n obj.constructor === Symbol &&\n obj !== Symbol.prototype\n ? 'symbol'\n : typeof obj;\n };\n }\n\n return _typeof(obj);\n }\n\n var REACT_ELEMENT_TYPE;\n\n function _jsx(type, props, key, children) {\n if (!REACT_ELEMENT_TYPE) {\n REACT_ELEMENT_TYPE =\n (typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element')) ||\n 0xeac7;\n }\n\n var defaultProps = type && type.defaultProps;\n var childrenLength = arguments.length - 3;\n\n if (!props && childrenLength !== 0) {\n props = {\n children: void 0,\n };\n }\n\n if (props && defaultProps) {\n for (var propName in defaultProps) {\n if (props[propName] === void 0) {\n props[propName] = defaultProps[propName];\n }\n }\n } else if (!props) {\n props = defaultProps || {};\n }\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = new Array(childrenLength);\n\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 3];\n }\n\n props.children = childArray;\n }\n\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key === undefined ? null : '' + key,\n ref: null,\n props: props,\n _owner: null,\n };\n }\n\n function _asyncIterator(iterable) {\n var method;\n\n if (typeof Symbol !== 'undefined') {\n if (Symbol.asyncIterator) {\n method = iterable[Symbol.asyncIterator];\n if (method != null) return method.call(iterable);\n }\n\n if (Symbol.iterator) {\n method = iterable[Symbol.iterator];\n if (method != null) return method.call(iterable);\n }\n }\n\n throw new TypeError('Object is not async iterable');\n }\n\n function _AwaitValue(value) {\n this.wrapped = value;\n }\n\n function _AsyncGenerator(gen) {\n var front, back;\n\n function send(key, arg) {\n return new Promise(function(resolve, reject) {\n var request = {\n key: key,\n arg: arg,\n resolve: resolve,\n reject: reject,\n next: null,\n };\n\n if (back) {\n back = back.next = request;\n } else {\n front = back = request;\n resume(key, arg);\n }\n });\n }\n\n function resume(key, arg) {\n try {\n var result = gen[key](arg);\n var value = result.value;\n var wrappedAwait = value instanceof _AwaitValue;\n Promise.resolve(wrappedAwait ? value.wrapped : value).then(\n function(arg) {\n if (wrappedAwait) {\n resume('next', arg);\n return;\n }\n\n settle(result.done ? 'return' : 'normal', arg);\n },\n function(err) {\n resume('throw', err);\n }\n );\n } catch (err) {\n settle('throw', err);\n }\n }\n\n function settle(type, value) {\n switch (type) {\n case 'return':\n front.resolve({\n value: value,\n done: true,\n });\n break;\n\n case 'throw':\n front.reject(value);\n break;\n\n default:\n front.resolve({\n value: value,\n done: false,\n });\n break;\n }\n\n front = front.next;\n\n if (front) {\n resume(front.key, front.arg);\n } else {\n back = null;\n }\n }\n\n this._invoke = send;\n\n if (typeof gen.return !== 'function') {\n this.return = undefined;\n }\n }\n\n if (typeof Symbol === 'function' && Symbol.asyncIterator) {\n _AsyncGenerator.prototype[Symbol.asyncIterator] = function() {\n return this;\n };\n }\n\n _AsyncGenerator.prototype.next = function(arg) {\n return this._invoke('next', arg);\n };\n\n _AsyncGenerator.prototype.throw = function(arg) {\n return this._invoke('throw', arg);\n };\n\n _AsyncGenerator.prototype.return = function(arg) {\n return this._invoke('return', arg);\n };\n\n function _wrapAsyncGenerator(fn) {\n return function() {\n return new _AsyncGenerator(fn.apply(this, arguments));\n };\n }\n\n function _awaitAsyncGenerator(value) {\n return new _AwaitValue(value);\n }\n\n function _asyncGeneratorDelegate(inner, awaitWrap) {\n var iter = {},\n waiting = false;\n\n function pump(key, value) {\n waiting = true;\n value = new Promise(function(resolve) {\n resolve(inner[key](value));\n });\n return {\n done: false,\n value: awaitWrap(value),\n };\n }\n\n if (typeof Symbol === 'function' && Symbol.iterator) {\n iter[Symbol.iterator] = function() {\n return this;\n };\n }\n\n iter.next = function(value) {\n if (waiting) {\n waiting = false;\n return value;\n }\n\n return pump('next', value);\n };\n\n if (typeof inner.throw === 'function') {\n iter.throw = function(value) {\n if (waiting) {\n waiting = false;\n throw value;\n }\n\n return pump('throw', value);\n };\n }\n\n if (typeof inner.return === 'function') {\n iter.return = function(value) {\n return pump('return', value);\n };\n }\n\n return iter;\n }\n\n function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n }\n\n function _asyncToGenerator(fn) {\n return function() {\n var self = this,\n args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, 'next', value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, 'throw', err);\n }\n\n _next(undefined);\n });\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError('Cannot call a class as a function');\n }\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if ('value' in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n function _defineEnumerableProperties(obj, descs) {\n for (var key in descs) {\n var desc = descs[key];\n desc.configurable = desc.enumerable = true;\n if ('value' in desc) desc.writable = true;\n Object.defineProperty(obj, key, desc);\n }\n\n if (Object.getOwnPropertySymbols) {\n var objectSymbols = Object.getOwnPropertySymbols(descs);\n\n for (var i = 0; i < objectSymbols.length; i++) {\n var sym = objectSymbols[i];\n var desc = descs[sym];\n desc.configurable = desc.enumerable = true;\n if ('value' in desc) desc.writable = true;\n Object.defineProperty(obj, sym, desc);\n }\n }\n\n return obj;\n }\n\n function _defaults(obj, defaults) {\n var keys = Object.getOwnPropertyNames(defaults);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = Object.getOwnPropertyDescriptor(defaults, key);\n\n if (value && value.configurable && obj[key] === undefined) {\n Object.defineProperty(obj, key, value);\n }\n }\n\n return obj;\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true,\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function _extends() {\n _extends =\n Object.assign ||\n function(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n }\n\n function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(\n Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n })\n );\n }\n\n ownKeys.forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n }\n\n function ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly)\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n }\n\n function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(source, true).forEach(function(key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(source).forEach(function(key) {\n Object.defineProperty(\n target,\n key,\n Object.getOwnPropertyDescriptor(source, key)\n );\n });\n }\n }\n\n return target;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== 'function' && superClass !== null) {\n throw new TypeError('Super expression must either be null or a function');\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true,\n },\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n }\n\n function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n }\n\n function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf\n ? Object.getPrototypeOf\n : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n }\n\n function _setPrototypeOf(o, p) {\n _setPrototypeOf =\n Object.setPrototypeOf ||\n function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n }\n\n function isNativeReflectConstruct() {\n if (typeof Reflect === 'undefined' || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === 'function') return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n return true;\n } catch (e) {\n return false;\n }\n }\n\n function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n }\n\n function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf('[native code]') !== -1;\n }\n\n function _wrapNativeSuper(Class) {\n var _cache = typeof Map === 'function' ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n\n if (typeof Class !== 'function') {\n throw new TypeError('Super expression must either be null or a function');\n }\n\n if (typeof _cache !== 'undefined') {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true,\n },\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n }\n\n function _instanceof(left, right) {\n if (right != null && typeof Symbol !== 'undefined' && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else {\n return left instanceof right;\n }\n }\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule\n ? obj\n : {\n default: obj,\n };\n }\n\n function _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n } else {\n var newObj = {};\n\n if (obj != null) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc =\n Object.defineProperty && Object.getOwnPropertyDescriptor\n ? Object.getOwnPropertyDescriptor(obj, key)\n : {};\n\n if (desc.get || desc.set) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n }\n\n newObj.default = obj;\n return newObj;\n }\n }\n\n function _newArrowCheck(innerThis, boundThis) {\n if (innerThis !== boundThis) {\n throw new TypeError('Cannot instantiate an arrow function');\n }\n }\n\n function _objectDestructuringEmpty(obj) {\n if (obj == null) throw new TypeError('Cannot destructure undefined');\n }\n\n function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n }\n\n function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n }\n\n function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n }\n\n function _possibleConstructorReturn(self, call) {\n if (call && (typeof call === 'object' || typeof call === 'function')) {\n return call;\n }\n\n return _assertThisInitialized(self);\n }\n\n function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n }\n\n function _get(target, property, receiver) {\n if (typeof Reflect !== 'undefined' && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n }\n\n function set(target, property, value, receiver) {\n if (typeof Reflect !== 'undefined' && Reflect.set) {\n set = Reflect.set;\n } else {\n set = function set(target, property, value, receiver) {\n var base = _superPropBase(target, property);\n\n var desc;\n\n if (base) {\n desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.set) {\n desc.set.call(receiver, value);\n return true;\n } else if (!desc.writable) {\n return false;\n }\n }\n\n desc = Object.getOwnPropertyDescriptor(receiver, property);\n\n if (desc) {\n if (!desc.writable) {\n return false;\n }\n\n desc.value = value;\n Object.defineProperty(receiver, property, desc);\n } else {\n _defineProperty(receiver, property, value);\n }\n\n return true;\n };\n }\n\n return set(target, property, value, receiver);\n }\n\n function _set(target, property, value, receiver, isStrict) {\n var s = set(target, property, value, receiver || target);\n\n if (!s && isStrict) {\n throw new Error('failed to set property');\n }\n\n return value;\n }\n\n function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n return Object.freeze(\n Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw),\n },\n })\n );\n }\n\n function _taggedTemplateLiteralLoose(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n strings.raw = raw;\n return strings;\n }\n\n function _temporalRef(val, name) {\n if (val === _temporalUndefined) {\n throw new ReferenceError(name + ' is not defined - temporal dead zone');\n } else {\n return val;\n }\n }\n\n function _readOnlyError(name) {\n throw new Error('\"' + name + '\" is read-only');\n }\n\n function _classNameTDZError(name) {\n throw new Error('Class \"' + name + '\" cannot be referenced in computed property keys.');\n }\n\n var _temporalUndefined = {};\n\n function _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n }\n\n function _slicedToArrayLoose(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimitLoose(arr, i) || _nonIterableRest();\n }\n\n function _toArray(arr) {\n return _arrayWithHoles(arr) || _iterableToArray(arr) || _nonIterableRest();\n }\n\n function _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n }\n\n function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n }\n\n function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n }\n\n function _iterableToArray(iter) {\n if (\n Symbol.iterator in Object(iter) ||\n Object.prototype.toString.call(iter) === '[object Arguments]'\n )\n return Array.from(iter);\n }\n\n function _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i['return'] != null) _i['return']();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n function _iterableToArrayLimitLoose(arr, i) {\n var _arr = [];\n\n for (var _iterator = arr[Symbol.iterator](), _step; !(_step = _iterator.next()).done; ) {\n _arr.push(_step.value);\n\n if (i && _arr.length === i) break;\n }\n\n return _arr;\n }\n\n function _nonIterableSpread() {\n throw new TypeError('Invalid attempt to spread non-iterable instance');\n }\n\n function _nonIterableRest() {\n throw new TypeError('Invalid attempt to destructure non-iterable instance');\n }\n\n function _skipFirstGeneratorNext(fn) {\n return function() {\n var it = fn.apply(this, arguments);\n it.next();\n return it;\n };\n }\n\n function _toPrimitive(input, hint) {\n if (typeof input !== 'object' || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n\n if (prim !== undefined) {\n var res = prim.call(input, hint || 'default');\n if (typeof res !== 'object') return res;\n throw new TypeError('@@toPrimitive must return a primitive value.');\n }\n\n return (hint === 'string' ? String : Number)(input);\n }\n\n function _toPropertyKey(arg) {\n var key = _toPrimitive(arg, 'string');\n\n return typeof key === 'symbol' ? key : String(key);\n }\n\n function _initializerWarningHelper(descriptor, context) {\n throw new Error(\n 'Decorating class property failed. Please ensure that ' +\n 'proposal-class-properties is enabled and set to use loose mode. ' +\n 'To use proposal-class-properties in spec mode with decorators, wait for ' +\n 'the next major version of decorators in stage 2.'\n );\n }\n\n function _initializerDefineProperty(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0,\n });\n }\n\n function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object.keys(descriptor).forEach(function(key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators\n .slice()\n .reverse()\n .reduce(function(desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object.defineProperty(target, property, desc);\n desc = null;\n }\n\n return desc;\n }\n\n var id = 0;\n\n function _classPrivateFieldLooseKey(name) {\n return '__private_' + id++ + '_' + name;\n }\n\n function _classPrivateFieldLooseBase(receiver, privateKey) {\n if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {\n throw new TypeError('attempted to use private field on non-instance');\n }\n\n return receiver;\n }\n\n function _classPrivateFieldGet(receiver, privateMap) {\n var descriptor = privateMap.get(receiver);\n\n if (!descriptor) {\n throw new TypeError('attempted to get private field on non-instance');\n }\n\n if (descriptor.get) {\n return descriptor.get.call(receiver);\n }\n\n return descriptor.value;\n }\n\n function _classPrivateFieldSet(receiver, privateMap, value) {\n var descriptor = privateMap.get(receiver);\n\n if (!descriptor) {\n throw new TypeError('attempted to set private field on non-instance');\n }\n\n if (descriptor.set) {\n descriptor.set.call(receiver, value);\n } else {\n if (!descriptor.writable) {\n throw new TypeError('attempted to set read only private field');\n }\n\n descriptor.value = value;\n }\n\n return value;\n }\n\n function _classPrivateFieldDestructureSet(receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError('attempted to set private field on non-instance');\n }\n\n var descriptor = privateMap.get(receiver);\n\n if (descriptor.set) {\n if (!('__destrObj' in descriptor)) {\n descriptor.__destrObj = {\n set value(v) {\n descriptor.set.call(receiver, v);\n },\n };\n }\n\n return descriptor.__destrObj;\n } else {\n if (!descriptor.writable) {\n throw new TypeError('attempted to set read only private field');\n }\n\n return descriptor;\n }\n }\n\n function _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) {\n if (receiver !== classConstructor) {\n throw new TypeError('Private static access of wrong provenance');\n }\n\n return descriptor.value;\n }\n\n function _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) {\n if (receiver !== classConstructor) {\n throw new TypeError('Private static access of wrong provenance');\n }\n\n if (!descriptor.writable) {\n throw new TypeError('attempted to set read only private field');\n }\n\n descriptor.value = value;\n return value;\n }\n\n function _classStaticPrivateMethodGet(receiver, classConstructor, method) {\n if (receiver !== classConstructor) {\n throw new TypeError('Private static access of wrong provenance');\n }\n\n return method;\n }\n\n function _classStaticPrivateMethodSet() {\n throw new TypeError('attempted to set read only static private field');\n }\n\n function _decorate(decorators, factory, superClass, mixins) {\n var api = _getDecoratorsApi();\n\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n api = mixins[i](api);\n }\n }\n\n var r = factory(function initialize(O) {\n api.initializeInstanceElements(O, decorated.elements);\n }, superClass);\n var decorated = api.decorateClass(\n _coalesceClassElements(r.d.map(_createElementDescriptor)),\n decorators\n );\n api.initializeClassElements(r.F, decorated.elements);\n return api.runClassFinishers(r.F, decorated.finishers);\n }\n\n function _getDecoratorsApi() {\n _getDecoratorsApi = function() {\n return api;\n };\n\n var api = {\n elementsDefinitionOrder: [['method'], ['field']],\n initializeInstanceElements: function(O, elements) {\n ['method', 'field'].forEach(function(kind) {\n elements.forEach(function(element) {\n if (element.kind === kind && element.placement === 'own') {\n this.defineClassElement(O, element);\n }\n }, this);\n }, this);\n },\n initializeClassElements: function(F, elements) {\n var proto = F.prototype;\n ['method', 'field'].forEach(function(kind) {\n elements.forEach(function(element) {\n var placement = element.placement;\n\n if (\n element.kind === kind &&\n (placement === 'static' || placement === 'prototype')\n ) {\n var receiver = placement === 'static' ? F : proto;\n this.defineClassElement(receiver, element);\n }\n }, this);\n }, this);\n },\n defineClassElement: function(receiver, element) {\n var descriptor = element.descriptor;\n\n if (element.kind === 'field') {\n var initializer = element.initializer;\n descriptor = {\n enumerable: descriptor.enumerable,\n writable: descriptor.writable,\n configurable: descriptor.configurable,\n value: initializer === void 0 ? void 0 : initializer.call(receiver),\n };\n }\n\n Object.defineProperty(receiver, element.key, descriptor);\n },\n decorateClass: function(elements, decorators) {\n var newElements = [];\n var finishers = [];\n var placements = {\n static: [],\n prototype: [],\n own: [],\n };\n elements.forEach(function(element) {\n this.addElementPlacement(element, placements);\n }, this);\n elements.forEach(function(element) {\n if (!_hasDecorators(element)) return newElements.push(element);\n var elementFinishersExtras = this.decorateElement(element, placements);\n newElements.push(elementFinishersExtras.element);\n newElements.push.apply(newElements, elementFinishersExtras.extras);\n finishers.push.apply(finishers, elementFinishersExtras.finishers);\n }, this);\n\n if (!decorators) {\n return {\n elements: newElements,\n finishers: finishers,\n };\n }\n\n var result = this.decorateConstructor(newElements, decorators);\n finishers.push.apply(finishers, result.finishers);\n result.finishers = finishers;\n return result;\n },\n addElementPlacement: function(element, placements, silent) {\n var keys = placements[element.placement];\n\n if (!silent && keys.indexOf(element.key) !== -1) {\n throw new TypeError('Duplicated element (' + element.key + ')');\n }\n\n keys.push(element.key);\n },\n decorateElement: function(element, placements) {\n var extras = [];\n var finishers = [];\n\n for (var decorators = element.decorators, i = decorators.length - 1; i >= 0; i--) {\n var keys = placements[element.placement];\n keys.splice(keys.indexOf(element.key), 1);\n var elementObject = this.fromElementDescriptor(element);\n var elementFinisherExtras = this.toElementFinisherExtras(\n (0, decorators[i])(elementObject) || elementObject\n );\n element = elementFinisherExtras.element;\n this.addElementPlacement(element, placements);\n\n if (elementFinisherExtras.finisher) {\n finishers.push(elementFinisherExtras.finisher);\n }\n\n var newExtras = elementFinisherExtras.extras;\n\n if (newExtras) {\n for (var j = 0; j < newExtras.length; j++) {\n this.addElementPlacement(newExtras[j], placements);\n }\n\n extras.push.apply(extras, newExtras);\n }\n }\n\n return {\n element: element,\n finishers: finishers,\n extras: extras,\n };\n },\n decorateConstructor: function(elements, decorators) {\n var finishers = [];\n\n for (var i = decorators.length - 1; i >= 0; i--) {\n var obj = this.fromClassDescriptor(elements);\n var elementsAndFinisher = this.toClassDescriptor(\n (0, decorators[i])(obj) || obj\n );\n\n if (elementsAndFinisher.finisher !== undefined) {\n finishers.push(elementsAndFinisher.finisher);\n }\n\n if (elementsAndFinisher.elements !== undefined) {\n elements = elementsAndFinisher.elements;\n\n for (var j = 0; j < elements.length - 1; j++) {\n for (var k = j + 1; k < elements.length; k++) {\n if (\n elements[j].key === elements[k].key &&\n elements[j].placement === elements[k].placement\n ) {\n throw new TypeError(\n 'Duplicated element (' + elements[j].key + ')'\n );\n }\n }\n }\n }\n }\n\n return {\n elements: elements,\n finishers: finishers,\n };\n },\n fromElementDescriptor: function(element) {\n var obj = {\n kind: element.kind,\n key: element.key,\n placement: element.placement,\n descriptor: element.descriptor,\n };\n var desc = {\n value: 'Descriptor',\n configurable: true,\n };\n Object.defineProperty(obj, Symbol.toStringTag, desc);\n if (element.kind === 'field') obj.initializer = element.initializer;\n return obj;\n },\n toElementDescriptors: function(elementObjects) {\n if (elementObjects === undefined) return;\n return _toArray(elementObjects).map(function(elementObject) {\n var element = this.toElementDescriptor(elementObject);\n this.disallowProperty(elementObject, 'finisher', 'An element descriptor');\n this.disallowProperty(elementObject, 'extras', 'An element descriptor');\n return element;\n }, this);\n },\n toElementDescriptor: function(elementObject) {\n var kind = String(elementObject.kind);\n\n if (kind !== 'method' && kind !== 'field') {\n throw new TypeError(\n 'An element descriptor\\'s .kind property must be either \"method\" or' +\n ' \"field\", but a decorator created an element descriptor with' +\n ' .kind \"' +\n kind +\n '\"'\n );\n }\n\n var key = _toPropertyKey(elementObject.key);\n\n var placement = String(elementObject.placement);\n\n if (placement !== 'static' && placement !== 'prototype' && placement !== 'own') {\n throw new TypeError(\n 'An element descriptor\\'s .placement property must be one of \"static\",' +\n ' \"prototype\" or \"own\", but a decorator created an element descriptor' +\n ' with .placement \"' +\n placement +\n '\"'\n );\n }\n\n var descriptor = elementObject.descriptor;\n this.disallowProperty(elementObject, 'elements', 'An element descriptor');\n var element = {\n kind: kind,\n key: key,\n placement: placement,\n descriptor: Object.assign({}, descriptor),\n };\n\n if (kind !== 'field') {\n this.disallowProperty(elementObject, 'initializer', 'A method descriptor');\n } else {\n this.disallowProperty(\n descriptor,\n 'get',\n 'The property descriptor of a field descriptor'\n );\n this.disallowProperty(\n descriptor,\n 'set',\n 'The property descriptor of a field descriptor'\n );\n this.disallowProperty(\n descriptor,\n 'value',\n 'The property descriptor of a field descriptor'\n );\n element.initializer = elementObject.initializer;\n }\n\n return element;\n },\n toElementFinisherExtras: function(elementObject) {\n var element = this.toElementDescriptor(elementObject);\n\n var finisher = _optionalCallableProperty(elementObject, 'finisher');\n\n var extras = this.toElementDescriptors(elementObject.extras);\n return {\n element: element,\n finisher: finisher,\n extras: extras,\n };\n },\n fromClassDescriptor: function(elements) {\n var obj = {\n kind: 'class',\n elements: elements.map(this.fromElementDescriptor, this),\n };\n var desc = {\n value: 'Descriptor',\n configurable: true,\n };\n Object.defineProperty(obj, Symbol.toStringTag, desc);\n return obj;\n },\n toClassDescriptor: function(obj) {\n var kind = String(obj.kind);\n\n if (kind !== 'class') {\n throw new TypeError(\n 'A class descriptor\\'s .kind property must be \"class\", but a decorator' +\n ' created a class descriptor with .kind \"' +\n kind +\n '\"'\n );\n }\n\n this.disallowProperty(obj, 'key', 'A class descriptor');\n this.disallowProperty(obj, 'placement', 'A class descriptor');\n this.disallowProperty(obj, 'descriptor', 'A class descriptor');\n this.disallowProperty(obj, 'initializer', 'A class descriptor');\n this.disallowProperty(obj, 'extras', 'A class descriptor');\n\n var finisher = _optionalCallableProperty(obj, 'finisher');\n\n var elements = this.toElementDescriptors(obj.elements);\n return {\n elements: elements,\n finisher: finisher,\n };\n },\n runClassFinishers: function(constructor, finishers) {\n for (var i = 0; i < finishers.length; i++) {\n var newConstructor = (0, finishers[i])(constructor);\n\n if (newConstructor !== undefined) {\n if (typeof newConstructor !== 'function') {\n throw new TypeError('Finishers must return a constructor.');\n }\n\n constructor = newConstructor;\n }\n }\n\n return constructor;\n },\n disallowProperty: function(obj, name, objectType) {\n if (obj[name] !== undefined) {\n throw new TypeError(objectType + \" can't have a .\" + name + ' property.');\n }\n },\n };\n return api;\n }\n\n function _createElementDescriptor(def) {\n var key = _toPropertyKey(def.key);\n\n var descriptor;\n\n if (def.kind === 'method') {\n descriptor = {\n value: def.value,\n writable: true,\n configurable: true,\n enumerable: false,\n };\n } else if (def.kind === 'get') {\n descriptor = {\n get: def.value,\n configurable: true,\n enumerable: false,\n };\n } else if (def.kind === 'set') {\n descriptor = {\n set: def.value,\n configurable: true,\n enumerable: false,\n };\n } else if (def.kind === 'field') {\n descriptor = {\n configurable: true,\n writable: true,\n enumerable: true,\n };\n }\n\n var element = {\n kind: def.kind === 'field' ? 'field' : 'method',\n key: key,\n placement: def.static ? 'static' : def.kind === 'field' ? 'own' : 'prototype',\n descriptor: descriptor,\n };\n if (def.decorators) element.decorators = def.decorators;\n if (def.kind === 'field') element.initializer = def.value;\n return element;\n }\n\n function _coalesceGetterSetter(element, other) {\n if (element.descriptor.get !== undefined) {\n other.descriptor.get = element.descriptor.get;\n } else {\n other.descriptor.set = element.descriptor.set;\n }\n }\n\n function _coalesceClassElements(elements) {\n var newElements = [];\n\n var isSameElement = function(other) {\n return (\n other.kind === 'method' &&\n other.key === element.key &&\n other.placement === element.placement\n );\n };\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n var other;\n\n if (element.kind === 'method' && (other = newElements.find(isSameElement))) {\n if (_isDataDescriptor(element.descriptor) || _isDataDescriptor(other.descriptor)) {\n if (_hasDecorators(element) || _hasDecorators(other)) {\n throw new ReferenceError(\n 'Duplicated methods (' + element.key + \") can't be decorated.\"\n );\n }\n\n other.descriptor = element.descriptor;\n } else {\n if (_hasDecorators(element)) {\n if (_hasDecorators(other)) {\n throw new ReferenceError(\n \"Decorators can't be placed on different accessors with for \" +\n 'the same property (' +\n element.key +\n ').'\n );\n }\n\n other.decorators = element.decorators;\n }\n\n _coalesceGetterSetter(element, other);\n }\n } else {\n newElements.push(element);\n }\n }\n\n return newElements;\n }\n\n function _hasDecorators(element) {\n return element.decorators && element.decorators.length;\n }\n\n function _isDataDescriptor(desc) {\n return desc !== undefined && !(desc.value === undefined && desc.writable === undefined);\n }\n\n function _optionalCallableProperty(obj, name) {\n var value = obj[name];\n\n if (value !== undefined && typeof value !== 'function') {\n throw new TypeError(\"Expected '\" + name + \"' to be a function\");\n }\n\n return value;\n }\n\n function _classPrivateMethodGet(receiver, privateSet, fn) {\n if (!privateSet.has(receiver)) {\n throw new TypeError('attempted to get private field on non-instance');\n }\n\n return fn;\n }\n\n function _classPrivateMethodSet() {\n throw new TypeError('attempted to reassign private method');\n }\n\n function _wrapRegExp(re, groups) {\n _wrapRegExp = function(re, groups) {\n return new BabelRegExp(re, groups);\n };\n\n var _RegExp = _wrapNativeSuper(RegExp);\n\n var _super = RegExp.prototype;\n\n var _groups = new WeakMap();\n\n function BabelRegExp(re, groups) {\n var _this = _RegExp.call(this, re);\n\n _groups.set(_this, groups);\n\n return _this;\n }\n\n _inherits(BabelRegExp, _RegExp);\n\n BabelRegExp.prototype.exec = function(str) {\n var result = _super.exec.call(this, str);\n\n if (result) result.groups = buildGroups(result, this);\n return result;\n };\n\n BabelRegExp.prototype[Symbol.replace] = function(str, substitution) {\n if (typeof substitution === 'string') {\n var groups = _groups.get(this);\n\n return _super[Symbol.replace].call(\n this,\n str,\n substitution.replace(/\\$<([^>]+)>/g, function(_, name) {\n return '$' + groups[name];\n })\n );\n } else if (typeof substitution === 'function') {\n var _this = this;\n\n return _super[Symbol.replace].call(this, str, function() {\n var args = [];\n args.push.apply(args, arguments);\n\n if (typeof args[args.length - 1] !== 'object') {\n args.push(buildGroups(args, _this));\n }\n\n return substitution.apply(this, args);\n });\n } else {\n return _super[Symbol.replace].call(this, str, substitution);\n }\n };\n\n function buildGroups(result, re) {\n var g = _groups.get(re);\n\n return Object.keys(g).reduce(function(groups, name) {\n groups[name] = result[g[name]];\n return groups;\n }, Object.create(null));\n }\n\n return _wrapRegExp.apply(this, arguments);\n }\n\n var arrayRemove = function arrayRemove(arr, index) {\n return arr.splice(index, 1);\n };\n\n var run = function run(cb, sync) {\n if (sync) {\n cb();\n } else if (document.hidden) {\n Promise.resolve(1).then(cb);\n } else {\n setTimeout(cb, 0);\n }\n };\n\n var on = function on() {\n var listeners = [];\n var off = function off(event, cb) {\n arrayRemove(\n listeners,\n listeners.findIndex(function(listener) {\n return listener.event === event && (listener.cb === cb || !cb);\n })\n );\n };\n var _fire = function fire(event, args, sync) {\n listeners\n .filter(function(listener) {\n return listener.event === event;\n })\n .map(function(listener) {\n return listener.cb;\n })\n .forEach(function(cb) {\n return run(function() {\n return cb.apply(void 0, _toConsumableArray(args));\n }, sync);\n });\n };\n return {\n fireSync: function fireSync(event) {\n for (\n var _len = arguments.length,\n args = new Array(_len > 1 ? _len - 1 : 0),\n _key = 1;\n _key < _len;\n _key++\n ) {\n args[_key - 1] = arguments[_key];\n }\n _fire(event, args, true);\n },\n fire: function fire(event) {\n for (\n var _len2 = arguments.length,\n args = new Array(_len2 > 1 ? _len2 - 1 : 0),\n _key2 = 1;\n _key2 < _len2;\n _key2++\n ) {\n args[_key2 - 1] = arguments[_key2];\n }\n _fire(event, args, false);\n },\n on: function on(event, cb) {\n listeners.push({ event: event, cb: cb });\n },\n onOnce: function onOnce(event, _cb) {\n listeners.push({\n event: event,\n cb: function cb() {\n off(event, _cb);\n _cb.apply(void 0, arguments);\n },\n });\n },\n off: off,\n };\n };\n\n var copyObjectPropertiesToObject = function copyObjectPropertiesToObject(\n src,\n target,\n excluded\n ) {\n Object.getOwnPropertyNames(src)\n .filter(function(property) {\n return !excluded.includes(property);\n })\n .forEach(function(key) {\n return Object.defineProperty(\n target,\n key,\n Object.getOwnPropertyDescriptor(src, key)\n );\n });\n };\n\n var PRIVATE = [\n 'fire',\n 'process',\n 'revert',\n 'load',\n 'on',\n 'off',\n 'onOnce',\n 'retryLoad',\n 'extend',\n 'archive',\n 'archived',\n 'release',\n 'released',\n 'requestProcessing',\n 'freeze',\n ];\n\n var createItemAPI = function createItemAPI(item) {\n var api = {};\n copyObjectPropertiesToObject(item, api, PRIVATE);\n return api;\n };\n\n var removeReleasedItems = function removeReleasedItems(items) {\n items.forEach(function(item, index) {\n if (item.released) {\n arrayRemove(items, index);\n }\n });\n };\n\n var ItemStatus = {\n INIT: 1,\n IDLE: 2,\n PROCESSING_QUEUED: 9,\n PROCESSING: 3,\n PROCESSING_COMPLETE: 5,\n PROCESSING_ERROR: 6,\n PROCESSING_REVERT_ERROR: 10,\n LOADING: 7,\n LOAD_ERROR: 8,\n };\n\n var FileOrigin = {\n INPUT: 1,\n LIMBO: 2,\n LOCAL: 3,\n };\n\n var getNonNumeric = function getNonNumeric(str) {\n return /[^0-9]+/.exec(str);\n };\n\n var getDecimalSeparator = function getDecimalSeparator() {\n return getNonNumeric((1.1).toLocaleString())[0];\n };\n\n var getThousandsSeparator = function getThousandsSeparator() {\n // Added for browsers that do not return the thousands separator (happend on native browser Android 4.4.4)\n // We check against the normal toString output and if they're the same return a comma when decimal separator is a dot\n var decimalSeparator = getDecimalSeparator();\n var thousandsStringWithSeparator = (1000.0).toLocaleString();\n var thousandsStringWithoutSeparator = (1000.0).toString();\n if (thousandsStringWithSeparator !== thousandsStringWithoutSeparator) {\n return getNonNumeric(thousandsStringWithSeparator)[0];\n }\n return decimalSeparator === '.' ? ',' : '.';\n };\n\n var Type = {\n BOOLEAN: 'boolean',\n INT: 'int',\n NUMBER: 'number',\n STRING: 'string',\n ARRAY: 'array',\n OBJECT: 'object',\n FUNCTION: 'function',\n ACTION: 'action',\n SERVER_API: 'serverapi',\n REGEX: 'regex',\n };\n\n // all registered filters\n var filters = [];\n\n // loops over matching filters and passes options to each filter, returning the mapped results\n var applyFilterChain = function applyFilterChain(key, value, utils) {\n return new Promise(function(resolve, reject) {\n // find matching filters for this key\n var matchingFilters = filters\n .filter(function(f) {\n return f.key === key;\n })\n .map(function(f) {\n return f.cb;\n });\n\n // resolve now\n if (matchingFilters.length === 0) {\n resolve(value);\n return;\n }\n\n // first filter to kick things of\n var initialFilter = matchingFilters.shift();\n\n // chain filters\n matchingFilters\n .reduce(\n // loop over promises passing value to next promise\n function(current, next) {\n return current.then(function(value) {\n return next(value, utils);\n });\n },\n\n // call initial filter, will return a promise\n initialFilter(value, utils)\n\n // all executed\n )\n .then(function(value) {\n return resolve(value);\n })\n .catch(function(error) {\n return reject(error);\n });\n });\n };\n\n var applyFilters = function applyFilters(key, value, utils) {\n return filters\n .filter(function(f) {\n return f.key === key;\n })\n .map(function(f) {\n return f.cb(value, utils);\n });\n };\n\n // adds a new filter to the list\n var addFilter = function addFilter(key, cb) {\n return filters.push({ key: key, cb: cb });\n };\n\n var extendDefaultOptions = function extendDefaultOptions(additionalOptions) {\n return Object.assign(defaultOptions, additionalOptions);\n };\n\n var getOptions = function getOptions() {\n return Object.assign({}, defaultOptions);\n };\n\n var setOptions = function setOptions(opts) {\n forin(opts, function(key, value) {\n // key does not exist, so this option cannot be set\n if (!defaultOptions[key]) {\n return;\n }\n defaultOptions[key][0] = getValueByType(\n value,\n defaultOptions[key][0],\n defaultOptions[key][1]\n );\n });\n };\n\n // default options on app\n var defaultOptions = {\n // the id to add to the root element\n id: [null, Type.STRING],\n\n // input field name to use\n name: ['filepond', Type.STRING],\n\n // disable the field\n disabled: [false, Type.BOOLEAN],\n\n // classname to put on wrapper\n className: [null, Type.STRING],\n\n // is the field required\n required: [false, Type.BOOLEAN],\n\n // Allow media capture when value is set\n captureMethod: [null, Type.STRING],\n // - \"camera\", \"microphone\" or \"camcorder\",\n // - Does not work with multiple on apple devices\n // - If set, acceptedFileTypes must be made to match with media wildcard \"image/*\", \"audio/*\" or \"video/*\"\n\n // sync `acceptedFileTypes` property with `accept` attribute\n allowSyncAcceptAttribute: [true, Type.BOOLEAN],\n\n // Feature toggles\n allowDrop: [true, Type.BOOLEAN], // Allow dropping of files\n allowBrowse: [true, Type.BOOLEAN], // Allow browsing the file system\n allowPaste: [true, Type.BOOLEAN], // Allow pasting files\n allowMultiple: [false, Type.BOOLEAN], // Allow multiple files (disabled by default, as multiple attribute is also required on input to allow multiple)\n allowReplace: [true, Type.BOOLEAN], // Allow dropping a file on other file to replace it (only works when multiple is set to false)\n allowRevert: [true, Type.BOOLEAN], // Allows user to revert file upload\n allowRemove: [true, Type.BOOLEAN], // Allow user to remove a file\n allowProcess: [true, Type.BOOLEAN], // Allows user to process a file, when set to false, this removes the file upload button\n allowReorder: [false, Type.BOOLEAN], // Allow reordering of files\n allowDirectoriesOnly: [false, Type.BOOLEAN], // Allow only selecting directories with browse (no support for filtering dnd at this point)\n\n // Try store file if `server` not set\n storeAsFile: [false, Type.BOOLEAN],\n\n // Revert mode\n forceRevert: [false, Type.BOOLEAN], // Set to 'force' to require the file to be reverted before removal\n\n // Input requirements\n maxFiles: [null, Type.INT], // Max number of files\n checkValidity: [false, Type.BOOLEAN], // Enables custom validity messages\n\n // Where to put file\n itemInsertLocationFreedom: [true, Type.BOOLEAN], // Set to false to always add items to begin or end of list\n itemInsertLocation: ['before', Type.STRING], // Default index in list to add items that have been dropped at the top of the list\n itemInsertInterval: [75, Type.INT],\n\n // Drag 'n Drop related\n dropOnPage: [false, Type.BOOLEAN], // Allow dropping of files anywhere on page (prevents browser from opening file if dropped outside of Up)\n dropOnElement: [true, Type.BOOLEAN], // Drop needs to happen on element (set to false to also load drops outside of Up)\n dropValidation: [false, Type.BOOLEAN], // Enable or disable validating files on drop\n ignoredFiles: [['.ds_store', 'thumbs.db', 'desktop.ini'], Type.ARRAY],\n\n // Upload related\n instantUpload: [true, Type.BOOLEAN], // Should upload files immediately on drop\n maxParallelUploads: [2, Type.INT], // Maximum files to upload in parallel\n allowMinimumUploadDuration: [true, Type.BOOLEAN], // if true uploads take at least 750 ms, this ensures the user sees the upload progress giving trust the upload actually happened\n\n // Chunks\n chunkUploads: [false, Type.BOOLEAN], // Enable chunked uploads\n chunkForce: [false, Type.BOOLEAN], // Force use of chunk uploads even for files smaller than chunk size\n chunkSize: [5000000, Type.INT], // Size of chunks (5MB default)\n chunkRetryDelays: [[500, 1000, 3000], Type.ARRAY], // Amount of times to retry upload of a chunk when it fails\n\n // The server api end points to use for uploading (see docs)\n server: [null, Type.SERVER_API],\n\n // File size calculations, can set to 1024, this is only used for display, properties use file size base 1000\n fileSizeBase: [1000, Type.INT],\n\n // Labels and status messages\n labelFileSizeBytes: ['bytes', Type.STRING],\n labelFileSizeKilobytes: ['KB', Type.STRING],\n labelFileSizeMegabytes: ['MB', Type.STRING],\n labelFileSizeGigabytes: ['GB', Type.STRING],\n\n labelDecimalSeparator: [getDecimalSeparator(), Type.STRING], // Default is locale separator\n labelThousandsSeparator: [getThousandsSeparator(), Type.STRING], // Default is locale separator\n\n labelIdle: [\n 'Drag & Drop your files or Browse',\n Type.STRING,\n ],\n\n labelInvalidField: ['Field contains invalid files', Type.STRING],\n labelFileWaitingForSize: ['Waiting for size', Type.STRING],\n labelFileSizeNotAvailable: ['Size not available', Type.STRING],\n labelFileCountSingular: ['file in list', Type.STRING],\n labelFileCountPlural: ['files in list', Type.STRING],\n labelFileLoading: ['Loading', Type.STRING],\n labelFileAdded: ['Added', Type.STRING], // assistive only\n labelFileLoadError: ['Error during load', Type.STRING],\n labelFileRemoved: ['Removed', Type.STRING], // assistive only\n labelFileRemoveError: ['Error during remove', Type.STRING],\n labelFileProcessing: ['Uploading', Type.STRING],\n labelFileProcessingComplete: ['Upload complete', Type.STRING],\n labelFileProcessingAborted: ['Upload cancelled', Type.STRING],\n labelFileProcessingError: ['Error during upload', Type.STRING],\n labelFileProcessingRevertError: ['Error during revert', Type.STRING],\n\n labelTapToCancel: ['tap to cancel', Type.STRING],\n labelTapToRetry: ['tap to retry', Type.STRING],\n labelTapToUndo: ['tap to undo', Type.STRING],\n\n labelButtonRemoveItem: ['Remove', Type.STRING],\n labelButtonAbortItemLoad: ['Abort', Type.STRING],\n labelButtonRetryItemLoad: ['Retry', Type.STRING],\n labelButtonAbortItemProcessing: ['Cancel', Type.STRING],\n labelButtonUndoItemProcessing: ['Undo', Type.STRING],\n labelButtonRetryItemProcessing: ['Retry', Type.STRING],\n labelButtonProcessItem: ['Upload', Type.STRING],\n\n // make sure width and height plus viewpox are even numbers so icons are nicely centered\n iconRemove: [\n '',\n Type.STRING,\n ],\n\n iconProcess: [\n '',\n Type.STRING,\n ],\n\n iconRetry: [\n '',\n Type.STRING,\n ],\n\n iconUndo: [\n '',\n Type.STRING,\n ],\n\n iconDone: [\n '',\n Type.STRING,\n ],\n\n // event handlers\n oninit: [null, Type.FUNCTION],\n onwarning: [null, Type.FUNCTION],\n onerror: [null, Type.FUNCTION],\n onactivatefile: [null, Type.FUNCTION],\n oninitfile: [null, Type.FUNCTION],\n onaddfilestart: [null, Type.FUNCTION],\n onaddfileprogress: [null, Type.FUNCTION],\n onaddfile: [null, Type.FUNCTION],\n onprocessfilestart: [null, Type.FUNCTION],\n onprocessfileprogress: [null, Type.FUNCTION],\n onprocessfileabort: [null, Type.FUNCTION],\n onprocessfilerevert: [null, Type.FUNCTION],\n onprocessfile: [null, Type.FUNCTION],\n onprocessfiles: [null, Type.FUNCTION],\n onremovefile: [null, Type.FUNCTION],\n onpreparefile: [null, Type.FUNCTION],\n onupdatefiles: [null, Type.FUNCTION],\n onreorderfiles: [null, Type.FUNCTION],\n\n // hooks\n beforeDropFile: [null, Type.FUNCTION],\n beforeAddFile: [null, Type.FUNCTION],\n beforeRemoveFile: [null, Type.FUNCTION],\n beforePrepareFile: [null, Type.FUNCTION],\n\n // styles\n stylePanelLayout: [null, Type.STRING], // null 'integrated', 'compact', 'circle'\n stylePanelAspectRatio: [null, Type.STRING], // null or '3:2' or 1\n styleItemPanelAspectRatio: [null, Type.STRING],\n styleButtonRemoveItemPosition: ['left', Type.STRING],\n styleButtonProcessItemPosition: ['right', Type.STRING],\n styleLoadIndicatorPosition: ['right', Type.STRING],\n styleProgressIndicatorPosition: ['right', Type.STRING],\n styleButtonRemoveItemAlign: [false, Type.BOOLEAN],\n\n // custom initial files array\n files: [[], Type.ARRAY],\n\n // show support by displaying credits\n credits: [['https://pqina.nl/', 'Powered by PQINA'], Type.ARRAY],\n };\n\n var getItemByQuery = function getItemByQuery(items, query) {\n // just return first index\n if (isEmpty(query)) {\n return items[0] || null;\n }\n\n // query is index\n if (isInt(query)) {\n return items[query] || null;\n }\n\n // if query is item, get the id\n if (typeof query === 'object') {\n query = query.id;\n }\n\n // assume query is a string and return item by id\n return (\n items.find(function(item) {\n return item.id === query;\n }) || null\n );\n };\n\n var getNumericAspectRatioFromString = function getNumericAspectRatioFromString(aspectRatio) {\n if (isEmpty(aspectRatio)) {\n return aspectRatio;\n }\n if (/:/.test(aspectRatio)) {\n var parts = aspectRatio.split(':');\n return parts[1] / parts[0];\n }\n return parseFloat(aspectRatio);\n };\n\n var getActiveItems = function getActiveItems(items) {\n return items.filter(function(item) {\n return !item.archived;\n });\n };\n\n var Status = {\n EMPTY: 0,\n IDLE: 1, // waiting\n ERROR: 2, // a file is in error state\n BUSY: 3, // busy processing or loading\n READY: 4, // all files uploaded\n };\n\n var res = null;\n var canUpdateFileInput = function canUpdateFileInput() {\n if (res === null) {\n try {\n var dataTransfer = new DataTransfer();\n dataTransfer.items.add(new File(['hello world'], 'This_Works.txt'));\n var el = document.createElement('input');\n el.setAttribute('type', 'file');\n el.files = dataTransfer.files;\n res = el.files.length === 1;\n } catch (err) {\n res = false;\n }\n }\n return res;\n };\n\n var ITEM_ERROR = [\n ItemStatus.LOAD_ERROR,\n ItemStatus.PROCESSING_ERROR,\n ItemStatus.PROCESSING_REVERT_ERROR,\n ];\n\n var ITEM_BUSY = [\n ItemStatus.LOADING,\n ItemStatus.PROCESSING,\n ItemStatus.PROCESSING_QUEUED,\n ItemStatus.INIT,\n ];\n\n var ITEM_READY = [ItemStatus.PROCESSING_COMPLETE];\n\n var isItemInErrorState = function isItemInErrorState(item) {\n return ITEM_ERROR.includes(item.status);\n };\n var isItemInBusyState = function isItemInBusyState(item) {\n return ITEM_BUSY.includes(item.status);\n };\n var isItemInReadyState = function isItemInReadyState(item) {\n return ITEM_READY.includes(item.status);\n };\n\n var isAsync = function isAsync(state) {\n return (\n isObject(state.options.server) &&\n (isObject(state.options.server.process) || isFunction(state.options.server.process))\n );\n };\n\n var queries = function queries(state) {\n return {\n GET_STATUS: function GET_STATUS() {\n var items = getActiveItems(state.items);\n var EMPTY = Status.EMPTY,\n ERROR = Status.ERROR,\n BUSY = Status.BUSY,\n IDLE = Status.IDLE,\n READY = Status.READY;\n\n if (items.length === 0) return EMPTY;\n\n if (items.some(isItemInErrorState)) return ERROR;\n\n if (items.some(isItemInBusyState)) return BUSY;\n\n if (items.some(isItemInReadyState)) return READY;\n\n return IDLE;\n },\n\n GET_ITEM: function GET_ITEM(query) {\n return getItemByQuery(state.items, query);\n },\n\n GET_ACTIVE_ITEM: function GET_ACTIVE_ITEM(query) {\n return getItemByQuery(getActiveItems(state.items), query);\n },\n\n GET_ACTIVE_ITEMS: function GET_ACTIVE_ITEMS() {\n return getActiveItems(state.items);\n },\n\n GET_ITEMS: function GET_ITEMS() {\n return state.items;\n },\n\n GET_ITEM_NAME: function GET_ITEM_NAME(query) {\n var item = getItemByQuery(state.items, query);\n return item ? item.filename : null;\n },\n\n GET_ITEM_SIZE: function GET_ITEM_SIZE(query) {\n var item = getItemByQuery(state.items, query);\n return item ? item.fileSize : null;\n },\n\n GET_STYLES: function GET_STYLES() {\n return Object.keys(state.options)\n .filter(function(key) {\n return /^style/.test(key);\n })\n .map(function(option) {\n return {\n name: option,\n value: state.options[option],\n };\n });\n },\n\n GET_PANEL_ASPECT_RATIO: function GET_PANEL_ASPECT_RATIO() {\n var isShapeCircle = /circle/.test(state.options.stylePanelLayout);\n var aspectRatio = isShapeCircle\n ? 1\n : getNumericAspectRatioFromString(state.options.stylePanelAspectRatio);\n return aspectRatio;\n },\n\n GET_ITEM_PANEL_ASPECT_RATIO: function GET_ITEM_PANEL_ASPECT_RATIO() {\n return state.options.styleItemPanelAspectRatio;\n },\n\n GET_ITEMS_BY_STATUS: function GET_ITEMS_BY_STATUS(status) {\n return getActiveItems(state.items).filter(function(item) {\n return item.status === status;\n });\n },\n\n GET_TOTAL_ITEMS: function GET_TOTAL_ITEMS() {\n return getActiveItems(state.items).length;\n },\n\n SHOULD_UPDATE_FILE_INPUT: function SHOULD_UPDATE_FILE_INPUT() {\n return state.options.storeAsFile && canUpdateFileInput() && !isAsync(state);\n },\n\n IS_ASYNC: function IS_ASYNC() {\n return isAsync(state);\n },\n\n GET_FILE_SIZE_LABELS: function GET_FILE_SIZE_LABELS(query) {\n return {\n labelBytes: query('GET_LABEL_FILE_SIZE_BYTES') || undefined,\n labelKilobytes: query('GET_LABEL_FILE_SIZE_KILOBYTES') || undefined,\n labelMegabytes: query('GET_LABEL_FILE_SIZE_MEGABYTES') || undefined,\n labelGigabytes: query('GET_LABEL_FILE_SIZE_GIGABYTES') || undefined,\n };\n },\n };\n };\n\n var hasRoomForItem = function hasRoomForItem(state) {\n var count = getActiveItems(state.items).length;\n\n // if cannot have multiple items, to add one item it should currently not contain items\n if (!state.options.allowMultiple) {\n return count === 0;\n }\n\n // if allows multiple items, we check if a max item count has been set, if not, there's no limit\n var maxFileCount = state.options.maxFiles;\n if (maxFileCount === null) {\n return true;\n }\n\n // we check if the current count is smaller than the max count, if so, another file can still be added\n if (count < maxFileCount) {\n return true;\n }\n\n // no more room for another file\n return false;\n };\n\n var limit = function limit(value, min, max) {\n return Math.max(Math.min(max, value), min);\n };\n\n var arrayInsert = function arrayInsert(arr, index, item) {\n return arr.splice(index, 0, item);\n };\n\n var insertItem = function insertItem(items, item, index) {\n if (isEmpty(item)) {\n return null;\n }\n\n // if index is undefined, append\n if (typeof index === 'undefined') {\n items.push(item);\n return item;\n }\n\n // limit the index to the size of the items array\n index = limit(index, 0, items.length);\n\n // add item to array\n arrayInsert(items, index, item);\n\n // expose\n return item;\n };\n\n var isBase64DataURI = function isBase64DataURI(str) {\n return /^\\s*data:([a-z]+\\/[a-z0-9-+.]+(;[a-z-]+=[a-z0-9-]+)?)?(;base64)?,([a-z0-9!$&',()*+;=\\-._~:@\\/?%\\s]*)\\s*$/i.test(\n str\n );\n };\n\n var getFilenameFromURL = function getFilenameFromURL(url) {\n return url\n .split('/')\n .pop()\n .split('?')\n .shift();\n };\n\n var getExtensionFromFilename = function getExtensionFromFilename(name) {\n return name.split('.').pop();\n };\n\n var guesstimateExtension = function guesstimateExtension(type) {\n // if no extension supplied, exit here\n if (typeof type !== 'string') {\n return '';\n }\n\n // get subtype\n var subtype = type.split('/').pop();\n\n // is svg subtype\n if (/svg/.test(subtype)) {\n return 'svg';\n }\n\n if (/zip|compressed/.test(subtype)) {\n return 'zip';\n }\n\n if (/plain/.test(subtype)) {\n return 'txt';\n }\n\n if (/msword/.test(subtype)) {\n return 'doc';\n }\n\n // if is valid subtype\n if (/[a-z]+/.test(subtype)) {\n // always use jpg extension\n if (subtype === 'jpeg') {\n return 'jpg';\n }\n\n // return subtype\n return subtype;\n }\n\n return '';\n };\n\n var leftPad = function leftPad(value) {\n var padding = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n return (padding + value).slice(-padding.length);\n };\n\n var getDateString = function getDateString() {\n var date = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Date();\n return (\n date.getFullYear() +\n '-' +\n leftPad(date.getMonth() + 1, '00') +\n '-' +\n leftPad(date.getDate(), '00') +\n '_' +\n leftPad(date.getHours(), '00') +\n '-' +\n leftPad(date.getMinutes(), '00') +\n '-' +\n leftPad(date.getSeconds(), '00')\n );\n };\n\n var getFileFromBlob = function getFileFromBlob(blob, filename) {\n var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n var extension = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n var file =\n typeof type === 'string'\n ? blob.slice(0, blob.size, type)\n : blob.slice(0, blob.size, blob.type);\n file.lastModifiedDate = new Date();\n\n // copy relative path\n if (blob._relativePath) file._relativePath = blob._relativePath;\n\n // if blob has name property, use as filename if no filename supplied\n if (!isString(filename)) {\n filename = getDateString();\n }\n\n // if filename supplied but no extension and filename has extension\n if (filename && extension === null && getExtensionFromFilename(filename)) {\n file.name = filename;\n } else {\n extension = extension || guesstimateExtension(file.type);\n file.name = filename + (extension ? '.' + extension : '');\n }\n\n return file;\n };\n\n var getBlobBuilder = function getBlobBuilder() {\n return (window.BlobBuilder =\n window.BlobBuilder ||\n window.WebKitBlobBuilder ||\n window.MozBlobBuilder ||\n window.MSBlobBuilder);\n };\n\n var createBlob = function createBlob(arrayBuffer, mimeType) {\n var BB = getBlobBuilder();\n\n if (BB) {\n var bb = new BB();\n bb.append(arrayBuffer);\n return bb.getBlob(mimeType);\n }\n\n return new Blob([arrayBuffer], {\n type: mimeType,\n });\n };\n\n var getBlobFromByteStringWithMimeType = function getBlobFromByteStringWithMimeType(\n byteString,\n mimeType\n ) {\n var ab = new ArrayBuffer(byteString.length);\n var ia = new Uint8Array(ab);\n\n for (var i = 0; i < byteString.length; i++) {\n ia[i] = byteString.charCodeAt(i);\n }\n\n return createBlob(ab, mimeType);\n };\n\n var getMimeTypeFromBase64DataURI = function getMimeTypeFromBase64DataURI(dataURI) {\n return (/^data:(.+);/.exec(dataURI) || [])[1] || null;\n };\n\n var getBase64DataFromBase64DataURI = function getBase64DataFromBase64DataURI(dataURI) {\n // get data part of string (remove data:image/jpeg...,)\n var data = dataURI.split(',')[1];\n\n // remove any whitespace as that causes InvalidCharacterError in IE\n return data.replace(/\\s/g, '');\n };\n\n var getByteStringFromBase64DataURI = function getByteStringFromBase64DataURI(dataURI) {\n return atob(getBase64DataFromBase64DataURI(dataURI));\n };\n\n var getBlobFromBase64DataURI = function getBlobFromBase64DataURI(dataURI) {\n var mimeType = getMimeTypeFromBase64DataURI(dataURI);\n var byteString = getByteStringFromBase64DataURI(dataURI);\n\n return getBlobFromByteStringWithMimeType(byteString, mimeType);\n };\n\n var getFileFromBase64DataURI = function getFileFromBase64DataURI(dataURI, filename, extension) {\n return getFileFromBlob(getBlobFromBase64DataURI(dataURI), filename, null, extension);\n };\n\n var getFileNameFromHeader = function getFileNameFromHeader(header) {\n // test if is content disposition header, if not exit\n if (!/^content-disposition:/i.test(header)) return null;\n\n // get filename parts\n var matches = header\n .split(/filename=|filename\\*=.+''/)\n .splice(1)\n .map(function(name) {\n return name.trim().replace(/^[\"']|[;\"']{0,2}$/g, '');\n })\n .filter(function(name) {\n return name.length;\n });\n\n return matches.length ? decodeURI(matches[matches.length - 1]) : null;\n };\n\n var getFileSizeFromHeader = function getFileSizeFromHeader(header) {\n if (/content-length:/i.test(header)) {\n var size = header.match(/[0-9]+/)[0];\n return size ? parseInt(size, 10) : null;\n }\n return null;\n };\n\n var getTranfserIdFromHeader = function getTranfserIdFromHeader(header) {\n if (/x-content-transfer-id:/i.test(header)) {\n var id = (header.split(':')[1] || '').trim();\n return id || null;\n }\n return null;\n };\n\n var getFileInfoFromHeaders = function getFileInfoFromHeaders(headers) {\n var info = {\n source: null,\n name: null,\n size: null,\n };\n\n var rows = headers.split('\\n');\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n try {\n for (\n var _iterator = rows[Symbol.iterator](), _step;\n !(_iteratorNormalCompletion = (_step = _iterator.next()).done);\n _iteratorNormalCompletion = true\n ) {\n var header = _step.value;\n\n var name = getFileNameFromHeader(header);\n if (name) {\n info.name = name;\n continue;\n }\n\n var size = getFileSizeFromHeader(header);\n if (size) {\n info.size = size;\n continue;\n }\n\n var source = getTranfserIdFromHeader(header);\n if (source) {\n info.source = source;\n continue;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return info;\n };\n\n var createFileLoader = function createFileLoader(fetchFn) {\n var state = {\n source: null,\n complete: false,\n progress: 0,\n size: null,\n timestamp: null,\n duration: 0,\n request: null,\n };\n\n var getProgress = function getProgress() {\n return state.progress;\n };\n var abort = function abort() {\n if (state.request && state.request.abort) {\n state.request.abort();\n }\n };\n\n // load source\n var load = function load() {\n // get quick reference\n var source = state.source;\n\n api.fire('init', source);\n\n // Load Files\n if (source instanceof File) {\n api.fire('load', source);\n } else if (source instanceof Blob) {\n // Load blobs, set default name to current date\n api.fire('load', getFileFromBlob(source, source.name));\n } else if (isBase64DataURI(source)) {\n // Load base 64, set default name to current date\n api.fire('load', getFileFromBase64DataURI(source));\n } else {\n // Deal as if is external URL, let's load it!\n loadURL(source);\n }\n };\n\n // loads a url\n var loadURL = function loadURL(url) {\n // is remote url and no fetch method supplied\n if (!fetchFn) {\n api.fire('error', {\n type: 'error',\n body: \"Can't load URL\",\n code: 400,\n });\n\n return;\n }\n\n // set request start\n state.timestamp = Date.now();\n\n // load file\n state.request = fetchFn(\n url,\n function(response) {\n // update duration\n state.duration = Date.now() - state.timestamp;\n\n // done!\n state.complete = true;\n\n // turn blob response into a file\n if (response instanceof Blob) {\n response = getFileFromBlob(\n response,\n response.name || getFilenameFromURL(url)\n );\n }\n\n api.fire(\n 'load',\n // if has received blob, we go with blob, if no response, we return null\n response instanceof Blob ? response : response ? response.body : null\n );\n },\n function(error) {\n api.fire(\n 'error',\n typeof error === 'string'\n ? {\n type: 'error',\n code: 0,\n body: error,\n }\n : error\n );\n },\n function(computable, current, total) {\n // collected some meta data already\n if (total) {\n state.size = total;\n }\n\n // update duration\n state.duration = Date.now() - state.timestamp;\n\n // if we can't compute progress, we're not going to fire progress events\n if (!computable) {\n state.progress = null;\n return;\n }\n\n // update progress percentage\n state.progress = current / total;\n\n // expose\n api.fire('progress', state.progress);\n },\n function() {\n api.fire('abort');\n },\n function(response) {\n var fileinfo = getFileInfoFromHeaders(\n typeof response === 'string' ? response : response.headers\n );\n api.fire('meta', {\n size: state.size || fileinfo.size,\n filename: fileinfo.name,\n source: fileinfo.source,\n });\n }\n );\n };\n\n var api = Object.assign({}, on(), {\n setSource: function setSource(source) {\n return (state.source = source);\n },\n getProgress: getProgress, // file load progress\n abort: abort, // abort file load\n load: load, // start load\n });\n\n return api;\n };\n\n var isGet = function isGet(method) {\n return /GET|HEAD/.test(method);\n };\n\n var sendRequest = function sendRequest(data, url, options) {\n var api = {\n onheaders: function onheaders() {},\n onprogress: function onprogress() {},\n onload: function onload() {},\n ontimeout: function ontimeout() {},\n onerror: function onerror() {},\n onabort: function onabort() {},\n abort: function abort() {\n aborted = true;\n xhr.abort();\n },\n };\n\n // timeout identifier, only used when timeout is defined\n var aborted = false;\n var headersReceived = false;\n\n // set default options\n options = Object.assign(\n {\n method: 'POST',\n headers: {},\n withCredentials: false,\n },\n options\n );\n\n // encode url\n url = encodeURI(url);\n\n // if method is GET, add any received data to url\n\n if (isGet(options.method) && data) {\n url =\n '' +\n url +\n encodeURIComponent(typeof data === 'string' ? data : JSON.stringify(data));\n }\n\n // create request\n var xhr = new XMLHttpRequest();\n\n // progress of load\n var process = isGet(options.method) ? xhr : xhr.upload;\n process.onprogress = function(e) {\n // no progress event when aborted ( onprogress is called once after abort() )\n if (aborted) {\n return;\n }\n\n api.onprogress(e.lengthComputable, e.loaded, e.total);\n };\n\n // tries to get header info to the app as fast as possible\n xhr.onreadystatechange = function() {\n // not interesting in these states ('unsent' and 'openend' as they don't give us any additional info)\n if (xhr.readyState < 2) {\n return;\n }\n\n // no server response\n if (xhr.readyState === 4 && xhr.status === 0) {\n return;\n }\n\n if (headersReceived) {\n return;\n }\n\n headersReceived = true;\n\n // we've probably received some useful data in response headers\n api.onheaders(xhr);\n };\n\n // load successful\n xhr.onload = function() {\n // is classified as valid response\n if (xhr.status >= 200 && xhr.status < 300) {\n api.onload(xhr);\n } else {\n api.onerror(xhr);\n }\n };\n\n // error during load\n xhr.onerror = function() {\n return api.onerror(xhr);\n };\n\n // request aborted\n xhr.onabort = function() {\n aborted = true;\n api.onabort();\n };\n\n // request timeout\n xhr.ontimeout = function() {\n return api.ontimeout(xhr);\n };\n\n // open up open up!\n xhr.open(options.method, url, true);\n\n // set timeout if defined (do it after open so IE11 plays ball)\n if (isInt(options.timeout)) {\n xhr.timeout = options.timeout;\n }\n\n // add headers\n Object.keys(options.headers).forEach(function(key) {\n var value = unescape(encodeURIComponent(options.headers[key]));\n xhr.setRequestHeader(key, value);\n });\n\n // set type of response\n if (options.responseType) {\n xhr.responseType = options.responseType;\n }\n\n // set credentials\n if (options.withCredentials) {\n xhr.withCredentials = true;\n }\n\n // let's send our data\n xhr.send(data);\n\n return api;\n };\n\n var createResponse = function createResponse(type, code, body, headers) {\n return {\n type: type,\n code: code,\n body: body,\n headers: headers,\n };\n };\n\n var createTimeoutResponse = function createTimeoutResponse(cb) {\n return function(xhr) {\n cb(createResponse('error', 0, 'Timeout', xhr.getAllResponseHeaders()));\n };\n };\n\n var hasQS = function hasQS(str) {\n return /\\?/.test(str);\n };\n var buildURL = function buildURL() {\n var url = '';\n for (var _len = arguments.length, parts = new Array(_len), _key = 0; _key < _len; _key++) {\n parts[_key] = arguments[_key];\n }\n parts.forEach(function(part) {\n url += hasQS(url) && hasQS(part) ? part.replace(/\\?/, '&') : part;\n });\n return url;\n };\n\n var createFetchFunction = function createFetchFunction() {\n var apiUrl = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var action = arguments.length > 1 ? arguments[1] : undefined;\n // custom handler (should also handle file, load, error, progress and abort)\n if (typeof action === 'function') {\n return action;\n }\n\n // no action supplied\n if (!action || !isString(action.url)) {\n return null;\n }\n\n // set onload hanlder\n var onload =\n action.onload ||\n function(res) {\n return res;\n };\n var onerror =\n action.onerror ||\n function(res) {\n return null;\n };\n\n // internal handler\n return function(url, load, error, progress, abort, headers) {\n // do local or remote request based on if the url is external\n var request = sendRequest(\n url,\n buildURL(apiUrl, action.url),\n Object.assign({}, action, {\n responseType: 'blob',\n })\n );\n\n request.onload = function(xhr) {\n // get headers\n var headers = xhr.getAllResponseHeaders();\n\n // get filename\n var filename = getFileInfoFromHeaders(headers).name || getFilenameFromURL(url);\n\n // create response\n load(\n createResponse(\n 'load',\n xhr.status,\n action.method === 'HEAD'\n ? null\n : getFileFromBlob(onload(xhr.response), filename),\n headers\n )\n );\n };\n\n request.onerror = function(xhr) {\n error(\n createResponse(\n 'error',\n xhr.status,\n onerror(xhr.response) || xhr.statusText,\n xhr.getAllResponseHeaders()\n )\n );\n };\n\n request.onheaders = function(xhr) {\n headers(createResponse('headers', xhr.status, null, xhr.getAllResponseHeaders()));\n };\n\n request.ontimeout = createTimeoutResponse(error);\n request.onprogress = progress;\n request.onabort = abort;\n\n // should return request\n return request;\n };\n };\n\n var ChunkStatus = {\n QUEUED: 0,\n COMPLETE: 1,\n PROCESSING: 2,\n ERROR: 3,\n WAITING: 4,\n };\n\n /*\n function signature:\n (file, metadata, load, error, progress, abort, transfer, options) => {\n return {\n abort:() => {}\n }\n }\n */\n\n // apiUrl, action, name, file, metadata, load, error, progress, abort, transfer, options\n var processFileChunked = function processFileChunked(\n apiUrl,\n action,\n name,\n file,\n metadata,\n load,\n error,\n progress,\n abort,\n transfer,\n options\n ) {\n // all chunks\n var chunks = [];\n var chunkTransferId = options.chunkTransferId,\n chunkServer = options.chunkServer,\n chunkSize = options.chunkSize,\n chunkRetryDelays = options.chunkRetryDelays;\n\n // default state\n var state = {\n serverId: chunkTransferId,\n aborted: false,\n };\n\n // set onload handlers\n var ondata =\n action.ondata ||\n function(fd) {\n return fd;\n };\n var onload =\n action.onload ||\n function(xhr, method) {\n return method === 'HEAD' ? xhr.getResponseHeader('Upload-Offset') : xhr.response;\n };\n var onerror =\n action.onerror ||\n function(res) {\n return null;\n };\n\n // create server hook\n var requestTransferId = function requestTransferId(cb) {\n var formData = new FormData();\n\n // add metadata under same name\n if (isObject(metadata)) formData.append(name, JSON.stringify(metadata));\n\n var headers =\n typeof action.headers === 'function'\n ? action.headers(file, metadata)\n : Object.assign({}, action.headers, {\n 'Upload-Length': file.size,\n });\n\n var requestParams = Object.assign({}, action, {\n headers: headers,\n });\n\n // send request object\n var request = sendRequest(\n ondata(formData),\n buildURL(apiUrl, action.url),\n requestParams\n );\n\n request.onload = function(xhr) {\n return cb(onload(xhr, requestParams.method));\n };\n\n request.onerror = function(xhr) {\n return error(\n createResponse(\n 'error',\n xhr.status,\n onerror(xhr.response) || xhr.statusText,\n xhr.getAllResponseHeaders()\n )\n );\n };\n\n request.ontimeout = createTimeoutResponse(error);\n };\n\n var requestTransferOffset = function requestTransferOffset(cb) {\n var requestUrl = buildURL(apiUrl, chunkServer.url, state.serverId);\n\n var headers =\n typeof action.headers === 'function'\n ? action.headers(state.serverId)\n : Object.assign({}, action.headers);\n\n var requestParams = {\n headers: headers,\n method: 'HEAD',\n };\n\n var request = sendRequest(null, requestUrl, requestParams);\n\n request.onload = function(xhr) {\n return cb(onload(xhr, requestParams.method));\n };\n\n request.onerror = function(xhr) {\n return error(\n createResponse(\n 'error',\n xhr.status,\n onerror(xhr.response) || xhr.statusText,\n xhr.getAllResponseHeaders()\n )\n );\n };\n\n request.ontimeout = createTimeoutResponse(error);\n };\n\n // create chunks\n var lastChunkIndex = Math.floor(file.size / chunkSize);\n for (var i = 0; i <= lastChunkIndex; i++) {\n var offset = i * chunkSize;\n var data = file.slice(offset, offset + chunkSize, 'application/offset+octet-stream');\n chunks[i] = {\n index: i,\n size: data.size,\n offset: offset,\n data: data,\n file: file,\n progress: 0,\n retries: _toConsumableArray(chunkRetryDelays),\n status: ChunkStatus.QUEUED,\n error: null,\n request: null,\n timeout: null,\n };\n }\n\n var completeProcessingChunks = function completeProcessingChunks() {\n return load(state.serverId);\n };\n\n var canProcessChunk = function canProcessChunk(chunk) {\n return chunk.status === ChunkStatus.QUEUED || chunk.status === ChunkStatus.ERROR;\n };\n\n var processChunk = function processChunk(chunk) {\n // processing is paused, wait here\n if (state.aborted) return;\n\n // get next chunk to process\n chunk = chunk || chunks.find(canProcessChunk);\n\n // no more chunks to process\n if (!chunk) {\n // all done?\n if (\n chunks.every(function(chunk) {\n return chunk.status === ChunkStatus.COMPLETE;\n })\n ) {\n completeProcessingChunks();\n }\n\n // no chunk to handle\n return;\n }\n\n // now processing this chunk\n chunk.status = ChunkStatus.PROCESSING;\n chunk.progress = null;\n\n // allow parsing of formdata\n var ondata =\n chunkServer.ondata ||\n function(fd) {\n return fd;\n };\n var onerror =\n chunkServer.onerror ||\n function(res) {\n return null;\n };\n\n // send request object\n var requestUrl = buildURL(apiUrl, chunkServer.url, state.serverId);\n\n var headers =\n typeof chunkServer.headers === 'function'\n ? chunkServer.headers(chunk)\n : Object.assign({}, chunkServer.headers, {\n 'Content-Type': 'application/offset+octet-stream',\n 'Upload-Offset': chunk.offset,\n 'Upload-Length': file.size,\n 'Upload-Name': file.name,\n });\n\n var request = (chunk.request = sendRequest(\n ondata(chunk.data),\n requestUrl,\n Object.assign({}, chunkServer, {\n headers: headers,\n })\n ));\n\n request.onload = function() {\n // done!\n chunk.status = ChunkStatus.COMPLETE;\n\n // remove request reference\n chunk.request = null;\n\n // start processing more chunks\n processChunks();\n };\n\n request.onprogress = function(lengthComputable, loaded, total) {\n chunk.progress = lengthComputable ? loaded : null;\n updateTotalProgress();\n };\n\n request.onerror = function(xhr) {\n chunk.status = ChunkStatus.ERROR;\n chunk.request = null;\n chunk.error = onerror(xhr.response) || xhr.statusText;\n if (!retryProcessChunk(chunk)) {\n error(\n createResponse(\n 'error',\n xhr.status,\n onerror(xhr.response) || xhr.statusText,\n xhr.getAllResponseHeaders()\n )\n );\n }\n };\n\n request.ontimeout = function(xhr) {\n chunk.status = ChunkStatus.ERROR;\n chunk.request = null;\n if (!retryProcessChunk(chunk)) {\n createTimeoutResponse(error)(xhr);\n }\n };\n\n request.onabort = function() {\n chunk.status = ChunkStatus.QUEUED;\n chunk.request = null;\n abort();\n };\n };\n\n var retryProcessChunk = function retryProcessChunk(chunk) {\n // no more retries left\n if (chunk.retries.length === 0) return false;\n\n // new retry\n chunk.status = ChunkStatus.WAITING;\n clearTimeout(chunk.timeout);\n chunk.timeout = setTimeout(function() {\n processChunk(chunk);\n }, chunk.retries.shift());\n\n // we're going to retry\n return true;\n };\n\n var updateTotalProgress = function updateTotalProgress() {\n // calculate total progress fraction\n var totalBytesTransfered = chunks.reduce(function(p, chunk) {\n if (p === null || chunk.progress === null) return null;\n return p + chunk.progress;\n }, 0);\n\n // can't compute progress\n if (totalBytesTransfered === null) return progress(false, 0, 0);\n\n // calculate progress values\n var totalSize = chunks.reduce(function(total, chunk) {\n return total + chunk.size;\n }, 0);\n\n // can update progress indicator\n progress(true, totalBytesTransfered, totalSize);\n };\n\n // process new chunks\n var processChunks = function processChunks() {\n var totalProcessing = chunks.filter(function(chunk) {\n return chunk.status === ChunkStatus.PROCESSING;\n }).length;\n if (totalProcessing >= 1) return;\n processChunk();\n };\n\n var abortChunks = function abortChunks() {\n chunks.forEach(function(chunk) {\n clearTimeout(chunk.timeout);\n if (chunk.request) {\n chunk.request.abort();\n }\n });\n };\n\n // let's go!\n if (!state.serverId) {\n requestTransferId(function(serverId) {\n // stop here if aborted, might have happened in between request and callback\n if (state.aborted) return;\n\n // pass back to item so we can use it if something goes wrong\n transfer(serverId);\n\n // store internally\n state.serverId = serverId;\n processChunks();\n });\n } else {\n requestTransferOffset(function(offset) {\n // stop here if aborted, might have happened in between request and callback\n if (state.aborted) return;\n\n // mark chunks with lower offset as complete\n chunks\n .filter(function(chunk) {\n return chunk.offset < offset;\n })\n .forEach(function(chunk) {\n chunk.status = ChunkStatus.COMPLETE;\n chunk.progress = chunk.size;\n });\n\n // continue processing\n processChunks();\n });\n }\n\n return {\n abort: function abort() {\n state.aborted = true;\n abortChunks();\n },\n };\n };\n\n /*\n function signature:\n (file, metadata, load, error, progress, abort) => {\n return {\n abort:() => {}\n }\n }\n */\n var createFileProcessorFunction = function createFileProcessorFunction(\n apiUrl,\n action,\n name,\n options\n ) {\n return function(file, metadata, load, error, progress, abort, transfer) {\n // no file received\n if (!file) return;\n\n // if was passed a file, and we can chunk it, exit here\n var canChunkUpload = options.chunkUploads;\n var shouldChunkUpload = canChunkUpload && file.size > options.chunkSize;\n var willChunkUpload = canChunkUpload && (shouldChunkUpload || options.chunkForce);\n if (file instanceof Blob && willChunkUpload)\n return processFileChunked(\n apiUrl,\n action,\n name,\n file,\n metadata,\n load,\n error,\n progress,\n abort,\n transfer,\n options\n );\n\n // set handlers\n var ondata =\n action.ondata ||\n function(fd) {\n return fd;\n };\n var onload =\n action.onload ||\n function(res) {\n return res;\n };\n var onerror =\n action.onerror ||\n function(res) {\n return null;\n };\n\n var headers =\n typeof action.headers === 'function'\n ? action.headers(file, metadata) || {}\n : Object.assign(\n {},\n\n action.headers\n );\n\n var requestParams = Object.assign({}, action, {\n headers: headers,\n });\n\n // create formdata object\n var formData = new FormData();\n\n // add metadata under same name\n if (isObject(metadata)) {\n formData.append(name, JSON.stringify(metadata));\n }\n\n // Turn into an array of objects so no matter what the input, we can handle it the same way\n (file instanceof Blob ? [{ name: null, file: file }] : file).forEach(function(item) {\n formData.append(\n name,\n item.file,\n item.name === null ? item.file.name : '' + item.name + item.file.name\n );\n });\n\n // send request object\n var request = sendRequest(\n ondata(formData),\n buildURL(apiUrl, action.url),\n requestParams\n );\n request.onload = function(xhr) {\n load(\n createResponse(\n 'load',\n xhr.status,\n onload(xhr.response),\n xhr.getAllResponseHeaders()\n )\n );\n };\n\n request.onerror = function(xhr) {\n error(\n createResponse(\n 'error',\n xhr.status,\n onerror(xhr.response) || xhr.statusText,\n xhr.getAllResponseHeaders()\n )\n );\n };\n\n request.ontimeout = createTimeoutResponse(error);\n request.onprogress = progress;\n request.onabort = abort;\n\n // should return request\n return request;\n };\n };\n\n var createProcessorFunction = function createProcessorFunction() {\n var apiUrl = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var action = arguments.length > 1 ? arguments[1] : undefined;\n var name = arguments.length > 2 ? arguments[2] : undefined;\n var options = arguments.length > 3 ? arguments[3] : undefined;\n\n // custom handler (should also handle file, load, error, progress and abort)\n if (typeof action === 'function')\n return function() {\n for (\n var _len = arguments.length, params = new Array(_len), _key = 0;\n _key < _len;\n _key++\n ) {\n params[_key] = arguments[_key];\n }\n return action.apply(void 0, [name].concat(params, [options]));\n };\n\n // no action supplied\n if (!action || !isString(action.url)) return null;\n\n // internal handler\n return createFileProcessorFunction(apiUrl, action, name, options);\n };\n\n /*\n function signature:\n (uniqueFileId, load, error) => { }\n */\n var createRevertFunction = function createRevertFunction() {\n var apiUrl = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n var action = arguments.length > 1 ? arguments[1] : undefined;\n // is custom implementation\n if (typeof action === 'function') {\n return action;\n }\n\n // no action supplied, return stub function, interface will work, but file won't be removed\n if (!action || !isString(action.url)) {\n return function(uniqueFileId, load) {\n return load();\n };\n }\n\n // set onload hanlder\n var onload =\n action.onload ||\n function(res) {\n return res;\n };\n var onerror =\n action.onerror ||\n function(res) {\n return null;\n };\n\n // internal implementation\n return function(uniqueFileId, load, error) {\n var request = sendRequest(\n uniqueFileId,\n apiUrl + action.url,\n action // contains method, headers and withCredentials properties\n );\n request.onload = function(xhr) {\n load(\n createResponse(\n 'load',\n xhr.status,\n onload(xhr.response),\n xhr.getAllResponseHeaders()\n )\n );\n };\n\n request.onerror = function(xhr) {\n error(\n createResponse(\n 'error',\n xhr.status,\n onerror(xhr.response) || xhr.statusText,\n xhr.getAllResponseHeaders()\n )\n );\n };\n\n request.ontimeout = createTimeoutResponse(error);\n\n return request;\n };\n };\n\n var getRandomNumber = function getRandomNumber() {\n var min = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var max = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n return min + Math.random() * (max - min);\n };\n\n var createPerceivedPerformanceUpdater = function createPerceivedPerformanceUpdater(cb) {\n var duration = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1000;\n var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var tickMin = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 25;\n var tickMax = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 250;\n var timeout = null;\n var start = Date.now();\n\n var tick = function tick() {\n var runtime = Date.now() - start;\n var delay = getRandomNumber(tickMin, tickMax);\n\n if (runtime + delay > duration) {\n delay = runtime + delay - duration;\n }\n\n var progress = runtime / duration;\n if (progress >= 1 || document.hidden) {\n cb(1);\n return;\n }\n\n cb(progress);\n\n timeout = setTimeout(tick, delay);\n };\n\n if (duration > 0) tick();\n\n return {\n clear: function clear() {\n clearTimeout(timeout);\n },\n };\n };\n\n var createFileProcessor = function createFileProcessor(processFn, options) {\n var state = {\n complete: false,\n perceivedProgress: 0,\n perceivedPerformanceUpdater: null,\n progress: null,\n timestamp: null,\n perceivedDuration: 0,\n duration: 0,\n request: null,\n response: null,\n };\n var allowMinimumUploadDuration = options.allowMinimumUploadDuration;\n\n var process = function process(file, metadata) {\n var progressFn = function progressFn() {\n // we've not yet started the real download, stop here\n // the request might not go through, for instance, there might be some server trouble\n // if state.progress is null, the server does not allow computing progress and we show the spinner instead\n if (state.duration === 0 || state.progress === null) return;\n\n // as we're now processing, fire the progress event\n api.fire('progress', api.getProgress());\n };\n\n var completeFn = function completeFn() {\n state.complete = true;\n api.fire('load-perceived', state.response.body);\n };\n\n // let's start processing\n api.fire('start');\n\n // set request start\n state.timestamp = Date.now();\n\n // create perceived performance progress indicator\n state.perceivedPerformanceUpdater = createPerceivedPerformanceUpdater(\n function(progress) {\n state.perceivedProgress = progress;\n state.perceivedDuration = Date.now() - state.timestamp;\n\n progressFn();\n\n // if fake progress is done, and a response has been received,\n // and we've not yet called the complete method\n if (state.response && state.perceivedProgress === 1 && !state.complete) {\n // we done!\n completeFn();\n }\n },\n // random delay as in a list of files you start noticing\n // files uploading at the exact same speed\n allowMinimumUploadDuration ? getRandomNumber(750, 1500) : 0\n );\n\n // remember request so we can abort it later\n state.request = processFn(\n // the file to process\n file,\n\n // the metadata to send along\n metadata,\n\n // callbacks (load, error, progress, abort, transfer)\n // load expects the body to be a server id if\n // you want to make use of revert\n function(response) {\n // we put the response in state so we can access\n // it outside of this method\n state.response = isObject(response)\n ? response\n : {\n type: 'load',\n code: 200,\n body: '' + response,\n headers: {},\n };\n\n // update duration\n state.duration = Date.now() - state.timestamp;\n\n // force progress to 1 as we're now done\n state.progress = 1;\n\n // actual load is done let's share results\n api.fire('load', state.response.body);\n\n // we are really done\n // if perceived progress is 1 ( wait for perceived progress to complete )\n // or if server does not support progress ( null )\n if (\n !allowMinimumUploadDuration ||\n (allowMinimumUploadDuration && state.perceivedProgress === 1)\n ) {\n completeFn();\n }\n },\n\n // error is expected to be an object with type, code, body\n function(error) {\n // cancel updater\n state.perceivedPerformanceUpdater.clear();\n\n // update others about this error\n api.fire(\n 'error',\n isObject(error)\n ? error\n : {\n type: 'error',\n code: 0,\n body: '' + error,\n }\n );\n },\n\n // actual processing progress\n function(computable, current, total) {\n // update actual duration\n state.duration = Date.now() - state.timestamp;\n\n // update actual progress\n state.progress = computable ? current / total : null;\n\n progressFn();\n },\n\n // abort does not expect a value\n function() {\n // stop updater\n state.perceivedPerformanceUpdater.clear();\n\n // fire the abort event so we can switch visuals\n api.fire('abort', state.response ? state.response.body : null);\n },\n\n // register the id for this transfer\n function(transferId) {\n api.fire('transfer', transferId);\n }\n );\n };\n\n var abort = function abort() {\n // no request running, can't abort\n if (!state.request) return;\n\n // stop updater\n state.perceivedPerformanceUpdater.clear();\n\n // abort actual request\n if (state.request.abort) state.request.abort();\n\n // if has response object, we've completed the request\n state.complete = true;\n };\n\n var reset = function reset() {\n abort();\n state.complete = false;\n state.perceivedProgress = 0;\n state.progress = 0;\n state.timestamp = null;\n state.perceivedDuration = 0;\n state.duration = 0;\n state.request = null;\n state.response = null;\n };\n\n var getProgress = allowMinimumUploadDuration\n ? function() {\n return state.progress ? Math.min(state.progress, state.perceivedProgress) : null;\n }\n : function() {\n return state.progress || null;\n };\n\n var getDuration = allowMinimumUploadDuration\n ? function() {\n return Math.min(state.duration, state.perceivedDuration);\n }\n : function() {\n return state.duration;\n };\n\n var api = Object.assign({}, on(), {\n process: process, // start processing file\n abort: abort, // abort active process request\n getProgress: getProgress,\n getDuration: getDuration,\n reset: reset,\n });\n\n return api;\n };\n\n var getFilenameWithoutExtension = function getFilenameWithoutExtension(name) {\n return name.substring(0, name.lastIndexOf('.')) || name;\n };\n\n var createFileStub = function createFileStub(source) {\n var data = [source.name, source.size, source.type];\n\n // is blob or base64, then we need to set the name\n if (source instanceof Blob || isBase64DataURI(source)) {\n data[0] = source.name || getDateString();\n } else if (isBase64DataURI(source)) {\n // if is base64 data uri we need to determine the average size and type\n data[1] = source.length;\n data[2] = getMimeTypeFromBase64DataURI(source);\n } else if (isString(source)) {\n // url\n data[0] = getFilenameFromURL(source);\n data[1] = 0;\n data[2] = 'application/octet-stream';\n }\n\n return {\n name: data[0],\n size: data[1],\n type: data[2],\n };\n };\n\n var isFile = function isFile(value) {\n return !!(value instanceof File || (value instanceof Blob && value.name));\n };\n\n var deepCloneObject = function deepCloneObject(src) {\n if (!isObject(src)) return src;\n var target = isArray(src) ? [] : {};\n for (var key in src) {\n if (!src.hasOwnProperty(key)) continue;\n var v = src[key];\n target[key] = v && isObject(v) ? deepCloneObject(v) : v;\n }\n return target;\n };\n\n var createItem = function createItem() {\n var origin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;\n var serverFileReference =\n arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n var file = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n // unique id for this item, is used to identify the item across views\n var id = getUniqueId();\n\n /**\n * Internal item state\n */\n var state = {\n // is archived\n archived: false,\n\n // if is frozen, no longer fires events\n frozen: false,\n\n // removed from view\n released: false,\n\n // original source\n source: null,\n\n // file model reference\n file: file,\n\n // id of file on server\n serverFileReference: serverFileReference,\n\n // id of file transfer on server\n transferId: null,\n\n // is aborted\n processingAborted: false,\n\n // current item status\n status: serverFileReference ? ItemStatus.PROCESSING_COMPLETE : ItemStatus.INIT,\n\n // active processes\n activeLoader: null,\n activeProcessor: null,\n };\n\n // callback used when abort processing is called to link back to the resolve method\n var abortProcessingRequestComplete = null;\n\n /**\n * Externally added item metadata\n */\n var metadata = {};\n\n // item data\n var setStatus = function setStatus(status) {\n return (state.status = status);\n };\n\n // fire event unless the item has been archived\n var fire = function fire(event) {\n if (state.released || state.frozen) return;\n for (\n var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1;\n _key < _len;\n _key++\n ) {\n params[_key - 1] = arguments[_key];\n }\n api.fire.apply(api, [event].concat(params));\n };\n\n // file data\n var getFileExtension = function getFileExtension() {\n return getExtensionFromFilename(state.file.name);\n };\n var getFileType = function getFileType() {\n return state.file.type;\n };\n var getFileSize = function getFileSize() {\n return state.file.size;\n };\n var getFile = function getFile() {\n return state.file;\n };\n\n //\n // logic to load a file\n //\n var load = function load(source, loader, onload) {\n // remember the original item source\n state.source = source;\n\n // source is known\n api.fireSync('init');\n\n // file stub is already there\n if (state.file) {\n api.fireSync('load-skip');\n return;\n }\n\n // set a stub file object while loading the actual data\n state.file = createFileStub(source);\n\n // starts loading\n loader.on('init', function() {\n fire('load-init');\n });\n\n // we'eve received a size indication, let's update the stub\n loader.on('meta', function(meta) {\n // set size of file stub\n state.file.size = meta.size;\n\n // set name of file stub\n state.file.filename = meta.filename;\n\n // if has received source, we done\n if (meta.source) {\n origin = FileOrigin.LIMBO;\n state.serverFileReference = meta.source;\n state.status = ItemStatus.PROCESSING_COMPLETE;\n }\n\n // size has been updated\n fire('load-meta');\n });\n\n // the file is now loading we need to update the progress indicators\n loader.on('progress', function(progress) {\n setStatus(ItemStatus.LOADING);\n\n fire('load-progress', progress);\n });\n\n // an error was thrown while loading the file, we need to switch to error state\n loader.on('error', function(error) {\n setStatus(ItemStatus.LOAD_ERROR);\n\n fire('load-request-error', error);\n });\n\n // user or another process aborted the file load (cannot retry)\n loader.on('abort', function() {\n setStatus(ItemStatus.INIT);\n fire('load-abort');\n });\n\n // done loading\n loader.on('load', function(file) {\n // as we've now loaded the file the loader is no longer required\n state.activeLoader = null;\n\n // called when file has loaded succesfully\n var success = function success(result) {\n // set (possibly) transformed file\n state.file = isFile(result) ? result : state.file;\n\n // file received\n if (origin === FileOrigin.LIMBO && state.serverFileReference) {\n setStatus(ItemStatus.PROCESSING_COMPLETE);\n } else {\n setStatus(ItemStatus.IDLE);\n }\n\n fire('load');\n };\n\n var error = function error(result) {\n // set original file\n state.file = file;\n fire('load-meta');\n\n setStatus(ItemStatus.LOAD_ERROR);\n fire('load-file-error', result);\n };\n\n // if we already have a server file reference, we don't need to call the onload method\n if (state.serverFileReference) {\n success(file);\n return;\n }\n\n // no server id, let's give this file the full treatment\n onload(file, success, error);\n });\n\n // set loader source data\n loader.setSource(source);\n\n // set as active loader\n state.activeLoader = loader;\n\n // load the source data\n loader.load();\n };\n\n var retryLoad = function retryLoad() {\n if (!state.activeLoader) {\n return;\n }\n state.activeLoader.load();\n };\n\n var abortLoad = function abortLoad() {\n if (state.activeLoader) {\n state.activeLoader.abort();\n return;\n }\n setStatus(ItemStatus.INIT);\n fire('load-abort');\n };\n\n //\n // logic to process a file\n //\n var process = function process(processor, onprocess) {\n // processing was aborted\n if (state.processingAborted) {\n state.processingAborted = false;\n return;\n }\n\n // now processing\n setStatus(ItemStatus.PROCESSING);\n\n // reset abort callback\n abortProcessingRequestComplete = null;\n\n // if no file loaded we'll wait for the load event\n if (!(state.file instanceof Blob)) {\n api.on('load', function() {\n process(processor, onprocess);\n });\n return;\n }\n\n // setup processor\n processor.on('load', function(serverFileReference) {\n // need this id to be able to revert the upload\n state.transferId = null;\n state.serverFileReference = serverFileReference;\n });\n\n // register transfer id\n processor.on('transfer', function(transferId) {\n // need this id to be able to revert the upload\n state.transferId = transferId;\n });\n\n processor.on('load-perceived', function(serverFileReference) {\n // no longer required\n state.activeProcessor = null;\n\n // need this id to be able to rever the upload\n state.transferId = null;\n state.serverFileReference = serverFileReference;\n\n setStatus(ItemStatus.PROCESSING_COMPLETE);\n fire('process-complete', serverFileReference);\n });\n\n processor.on('start', function() {\n fire('process-start');\n });\n\n processor.on('error', function(error) {\n state.activeProcessor = null;\n setStatus(ItemStatus.PROCESSING_ERROR);\n fire('process-error', error);\n });\n\n processor.on('abort', function(serverFileReference) {\n state.activeProcessor = null;\n\n // if file was uploaded but processing was cancelled during perceived processor time store file reference\n state.serverFileReference = serverFileReference;\n\n setStatus(ItemStatus.IDLE);\n fire('process-abort');\n\n // has timeout so doesn't interfere with remove action\n if (abortProcessingRequestComplete) {\n abortProcessingRequestComplete();\n }\n });\n\n processor.on('progress', function(progress) {\n fire('process-progress', progress);\n });\n\n // when successfully transformed\n var success = function success(file) {\n // if was archived in the mean time, don't process\n if (state.archived) return;\n\n // process file!\n processor.process(file, Object.assign({}, metadata));\n };\n\n // something went wrong during transform phase\n var error = console.error;\n\n // start processing the file\n onprocess(state.file, success, error);\n\n // set as active processor\n state.activeProcessor = processor;\n };\n\n var requestProcessing = function requestProcessing() {\n state.processingAborted = false;\n setStatus(ItemStatus.PROCESSING_QUEUED);\n };\n\n var abortProcessing = function abortProcessing() {\n return new Promise(function(resolve) {\n if (!state.activeProcessor) {\n state.processingAborted = true;\n\n setStatus(ItemStatus.IDLE);\n fire('process-abort');\n\n resolve();\n return;\n }\n\n abortProcessingRequestComplete = function abortProcessingRequestComplete() {\n resolve();\n };\n\n state.activeProcessor.abort();\n });\n };\n\n //\n // logic to revert a processed file\n //\n var revert = function revert(revertFileUpload, forceRevert) {\n return new Promise(function(resolve, reject) {\n // a completed upload will have a serverFileReference, a failed chunked upload where\n // getting a serverId succeeded but >=0 chunks have been uploaded will have transferId set\n var serverTransferId =\n state.serverFileReference !== null\n ? state.serverFileReference\n : state.transferId;\n\n // cannot revert without a server id for this process\n if (serverTransferId === null) {\n resolve();\n return;\n }\n\n // revert the upload (fire and forget)\n revertFileUpload(\n serverTransferId,\n function() {\n // reset file server id and transfer id as now it's not available on the server\n state.serverFileReference = null;\n state.transferId = null;\n resolve();\n },\n function(error) {\n // don't set error state when reverting is optional, it will always resolve\n if (!forceRevert) {\n resolve();\n return;\n }\n\n // oh no errors\n setStatus(ItemStatus.PROCESSING_REVERT_ERROR);\n fire('process-revert-error');\n reject(error);\n }\n );\n\n // fire event\n setStatus(ItemStatus.IDLE);\n fire('process-revert');\n });\n };\n\n // exposed methods\n var _setMetadata = function setMetadata(key, value, silent) {\n var keys = key.split('.');\n var root = keys[0];\n var last = keys.pop();\n var data = metadata;\n keys.forEach(function(key) {\n return (data = data[key]);\n });\n\n // compare old value against new value, if they're the same, we're not updating\n if (JSON.stringify(data[last]) === JSON.stringify(value)) return;\n\n // update value\n data[last] = value;\n\n // fire update\n fire('metadata-update', {\n key: root,\n value: metadata[root],\n silent: silent,\n });\n };\n\n var getMetadata = function getMetadata(key) {\n return deepCloneObject(key ? metadata[key] : metadata);\n };\n\n var api = Object.assign(\n {\n id: {\n get: function get() {\n return id;\n },\n },\n origin: {\n get: function get() {\n return origin;\n },\n set: function set(value) {\n return (origin = value);\n },\n },\n serverId: {\n get: function get() {\n return state.serverFileReference;\n },\n },\n transferId: {\n get: function get() {\n return state.transferId;\n },\n },\n status: {\n get: function get() {\n return state.status;\n },\n },\n filename: {\n get: function get() {\n return state.file.name;\n },\n },\n filenameWithoutExtension: {\n get: function get() {\n return getFilenameWithoutExtension(state.file.name);\n },\n },\n fileExtension: { get: getFileExtension },\n fileType: { get: getFileType },\n fileSize: { get: getFileSize },\n file: { get: getFile },\n relativePath: {\n get: function get() {\n return state.file._relativePath;\n },\n },\n\n source: {\n get: function get() {\n return state.source;\n },\n },\n\n getMetadata: getMetadata,\n setMetadata: function setMetadata(key, value, silent) {\n if (isObject(key)) {\n var data = key;\n Object.keys(data).forEach(function(key) {\n _setMetadata(key, data[key], value);\n });\n return key;\n }\n _setMetadata(key, value, silent);\n return value;\n },\n\n extend: function extend(name, handler) {\n return (itemAPI[name] = handler);\n },\n\n abortLoad: abortLoad,\n retryLoad: retryLoad,\n requestProcessing: requestProcessing,\n abortProcessing: abortProcessing,\n\n load: load,\n process: process,\n revert: revert,\n },\n\n on(),\n {\n freeze: function freeze() {\n return (state.frozen = true);\n },\n\n release: function release() {\n return (state.released = true);\n },\n released: {\n get: function get() {\n return state.released;\n },\n },\n\n archive: function archive() {\n return (state.archived = true);\n },\n archived: {\n get: function get() {\n return state.archived;\n },\n },\n }\n );\n\n // create it here instead of returning it instantly so we can extend it later\n var itemAPI = createObject(api);\n\n return itemAPI;\n };\n\n var getItemIndexByQuery = function getItemIndexByQuery(items, query) {\n // just return first index\n if (isEmpty(query)) {\n return 0;\n }\n\n // invalid queries\n if (!isString(query)) {\n return -1;\n }\n\n // return item by id (or -1 if not found)\n return items.findIndex(function(item) {\n return item.id === query;\n });\n };\n\n var getItemById = function getItemById(items, itemId) {\n var index = getItemIndexByQuery(items, itemId);\n if (index < 0) {\n return;\n }\n return items[index] || null;\n };\n\n var fetchBlob = function fetchBlob(url, load, error, progress, abort, headers) {\n var request = sendRequest(null, url, {\n method: 'GET',\n responseType: 'blob',\n });\n\n request.onload = function(xhr) {\n // get headers\n var headers = xhr.getAllResponseHeaders();\n\n // get filename\n var filename = getFileInfoFromHeaders(headers).name || getFilenameFromURL(url);\n\n // create response\n load(\n createResponse('load', xhr.status, getFileFromBlob(xhr.response, filename), headers)\n );\n };\n\n request.onerror = function(xhr) {\n error(createResponse('error', xhr.status, xhr.statusText, xhr.getAllResponseHeaders()));\n };\n\n request.onheaders = function(xhr) {\n headers(createResponse('headers', xhr.status, null, xhr.getAllResponseHeaders()));\n };\n\n request.ontimeout = createTimeoutResponse(error);\n request.onprogress = progress;\n request.onabort = abort;\n\n // should return request\n return request;\n };\n\n var getDomainFromURL = function getDomainFromURL(url) {\n if (url.indexOf('//') === 0) {\n url = location.protocol + url;\n }\n return url\n .toLowerCase()\n .replace('blob:', '')\n .replace(/([a-z])?:\\/\\//, '$1')\n .split('/')[0];\n };\n\n var isExternalURL = function isExternalURL(url) {\n return (\n (url.indexOf(':') > -1 || url.indexOf('//') > -1) &&\n getDomainFromURL(location.href) !== getDomainFromURL(url)\n );\n };\n\n var dynamicLabel = function dynamicLabel(label) {\n return function() {\n return isFunction(label) ? label.apply(void 0, arguments) : label;\n };\n };\n\n var isMockItem = function isMockItem(item) {\n return !isFile(item.file);\n };\n\n var listUpdated = function listUpdated(dispatch, state) {\n clearTimeout(state.listUpdateTimeout);\n state.listUpdateTimeout = setTimeout(function() {\n dispatch('DID_UPDATE_ITEMS', { items: getActiveItems(state.items) });\n }, 0);\n };\n\n var optionalPromise = function optionalPromise(fn) {\n for (\n var _len = arguments.length, params = new Array(_len > 1 ? _len - 1 : 0), _key = 1;\n _key < _len;\n _key++\n ) {\n params[_key - 1] = arguments[_key];\n }\n return new Promise(function(resolve) {\n if (!fn) {\n return resolve(true);\n }\n\n var result = fn.apply(void 0, params);\n\n if (result == null) {\n return resolve(true);\n }\n\n if (typeof result === 'boolean') {\n return resolve(result);\n }\n\n if (typeof result.then === 'function') {\n result.then(resolve);\n }\n });\n };\n\n var sortItems = function sortItems(state, compare) {\n state.items.sort(function(a, b) {\n return compare(createItemAPI(a), createItemAPI(b));\n });\n };\n\n // returns item based on state\n var getItemByQueryFromState = function getItemByQueryFromState(state, itemHandler) {\n return function() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var query = _ref.query,\n _ref$success = _ref.success,\n success = _ref$success === void 0 ? function() {} : _ref$success,\n _ref$failure = _ref.failure,\n failure = _ref$failure === void 0 ? function() {} : _ref$failure,\n options = _objectWithoutProperties(_ref, ['query', 'success', 'failure']);\n var item = getItemByQuery(state.items, query);\n if (!item) {\n failure({\n error: createResponse('error', 0, 'Item not found'),\n file: null,\n });\n\n return;\n }\n itemHandler(item, success, failure, options || {});\n };\n };\n\n var actions = function actions(dispatch, query, state) {\n return {\n /**\n * Aborts all ongoing processes\n */\n ABORT_ALL: function ABORT_ALL() {\n getActiveItems(state.items).forEach(function(item) {\n item.freeze();\n item.abortLoad();\n item.abortProcessing();\n });\n },\n\n /**\n * Sets initial files\n */\n DID_SET_FILES: function DID_SET_FILES(_ref2) {\n var _ref2$value = _ref2.value,\n value = _ref2$value === void 0 ? [] : _ref2$value;\n // map values to file objects\n var files = value.map(function(file) {\n return {\n source: file.source ? file.source : file,\n options: file.options,\n };\n });\n\n // loop over files, if file is in list, leave it be, if not, remove\n // test if items should be moved\n var activeItems = getActiveItems(state.items);\n\n activeItems.forEach(function(item) {\n // if item not is in new value, remove\n if (\n !files.find(function(file) {\n return file.source === item.source || file.source === item.file;\n })\n ) {\n dispatch('REMOVE_ITEM', { query: item, remove: false });\n }\n });\n\n // add new files\n activeItems = getActiveItems(state.items);\n files.forEach(function(file, index) {\n // if file is already in list\n if (\n activeItems.find(function(item) {\n return item.source === file.source || item.file === file.source;\n })\n )\n return;\n\n // not in list, add\n dispatch(\n 'ADD_ITEM',\n Object.assign({}, file, {\n interactionMethod: InteractionMethod.NONE,\n index: index,\n })\n );\n });\n },\n\n DID_UPDATE_ITEM_METADATA: function DID_UPDATE_ITEM_METADATA(_ref3) {\n var id = _ref3.id,\n action = _ref3.action,\n change = _ref3.change;\n // don't do anything\n if (change.silent) return;\n\n // if is called multiple times in close succession we combined all calls together to save resources\n clearTimeout(state.itemUpdateTimeout);\n state.itemUpdateTimeout = setTimeout(function() {\n var item = getItemById(state.items, id);\n\n // only revert and attempt to upload when we're uploading to a server\n if (!query('IS_ASYNC')) {\n // should we update the output data\n applyFilterChain('SHOULD_PREPARE_OUTPUT', false, {\n item: item,\n query: query,\n action: action,\n change: change,\n }).then(function(shouldPrepareOutput) {\n // plugins determined the output data should be prepared (or not), can be adjusted with beforePrepareOutput hook\n var beforePrepareFile = query('GET_BEFORE_PREPARE_FILE');\n if (beforePrepareFile)\n shouldPrepareOutput = beforePrepareFile(item, shouldPrepareOutput);\n\n if (!shouldPrepareOutput) return;\n\n dispatch(\n 'REQUEST_PREPARE_OUTPUT',\n {\n query: id,\n item: item,\n success: function success(file) {\n dispatch('DID_PREPARE_OUTPUT', { id: id, file: file });\n },\n },\n\n true\n );\n });\n\n return;\n }\n\n // if is local item we need to enable upload button so change can be propagated to server\n if (item.origin === FileOrigin.LOCAL) {\n dispatch('DID_LOAD_ITEM', {\n id: item.id,\n error: null,\n serverFileReference: item.source,\n });\n }\n\n // for async scenarios\n var upload = function upload() {\n // we push this forward a bit so the interface is updated correctly\n setTimeout(function() {\n dispatch('REQUEST_ITEM_PROCESSING', { query: id });\n }, 32);\n };\n\n var revert = function revert(doUpload) {\n item.revert(\n createRevertFunction(\n state.options.server.url,\n state.options.server.revert\n ),\n query('GET_FORCE_REVERT')\n )\n .then(doUpload ? upload : function() {})\n .catch(function() {});\n };\n\n var abort = function abort(doUpload) {\n item.abortProcessing().then(doUpload ? upload : function() {});\n };\n\n // if we should re-upload the file immediately\n if (item.status === ItemStatus.PROCESSING_COMPLETE) {\n return revert(state.options.instantUpload);\n }\n\n // if currently uploading, cancel upload\n if (item.status === ItemStatus.PROCESSING) {\n return abort(state.options.instantUpload);\n }\n\n if (state.options.instantUpload) {\n upload();\n }\n }, 0);\n },\n\n MOVE_ITEM: function MOVE_ITEM(_ref4) {\n var query = _ref4.query,\n index = _ref4.index;\n var item = getItemByQuery(state.items, query);\n if (!item) return;\n var currentIndex = state.items.indexOf(item);\n index = limit(index, 0, state.items.length - 1);\n if (currentIndex === index) return;\n state.items.splice(index, 0, state.items.splice(currentIndex, 1)[0]);\n },\n\n SORT: function SORT(_ref5) {\n var compare = _ref5.compare;\n sortItems(state, compare);\n dispatch('DID_SORT_ITEMS', {\n items: query('GET_ACTIVE_ITEMS'),\n });\n },\n\n ADD_ITEMS: function ADD_ITEMS(_ref6) {\n var items = _ref6.items,\n index = _ref6.index,\n interactionMethod = _ref6.interactionMethod,\n _ref6$success = _ref6.success,\n success = _ref6$success === void 0 ? function() {} : _ref6$success,\n _ref6$failure = _ref6.failure,\n failure = _ref6$failure === void 0 ? function() {} : _ref6$failure;\n var currentIndex = index;\n\n if (index === -1 || typeof index === 'undefined') {\n var insertLocation = query('GET_ITEM_INSERT_LOCATION');\n var totalItems = query('GET_TOTAL_ITEMS');\n currentIndex = insertLocation === 'before' ? 0 : totalItems;\n }\n\n var ignoredFiles = query('GET_IGNORED_FILES');\n var isValidFile = function isValidFile(source) {\n return isFile(source)\n ? !ignoredFiles.includes(source.name.toLowerCase())\n : !isEmpty(source);\n };\n var validItems = items.filter(isValidFile);\n\n var promises = validItems.map(function(source) {\n return new Promise(function(resolve, reject) {\n dispatch('ADD_ITEM', {\n interactionMethod: interactionMethod,\n source: source.source || source,\n success: resolve,\n failure: reject,\n index: currentIndex++,\n options: source.options || {},\n });\n });\n });\n\n Promise.all(promises)\n .then(success)\n .catch(failure);\n },\n\n /**\n * @param source\n * @param index\n * @param interactionMethod\n */\n ADD_ITEM: function ADD_ITEM(_ref7) {\n var source = _ref7.source,\n _ref7$index = _ref7.index,\n index = _ref7$index === void 0 ? -1 : _ref7$index,\n interactionMethod = _ref7.interactionMethod,\n _ref7$success = _ref7.success,\n success = _ref7$success === void 0 ? function() {} : _ref7$success,\n _ref7$failure = _ref7.failure,\n failure = _ref7$failure === void 0 ? function() {} : _ref7$failure,\n _ref7$options = _ref7.options,\n options = _ref7$options === void 0 ? {} : _ref7$options;\n // if no source supplied\n if (isEmpty(source)) {\n failure({\n error: createResponse('error', 0, 'No source'),\n file: null,\n });\n\n return;\n }\n\n // filter out invalid file items, used to filter dropped directory contents\n if (\n isFile(source) &&\n state.options.ignoredFiles.includes(source.name.toLowerCase())\n ) {\n // fail silently\n return;\n }\n\n // test if there's still room in the list of files\n if (!hasRoomForItem(state)) {\n // if multiple allowed, we can't replace\n // or if only a single item is allowed but we're not allowed to replace it we exit\n if (\n state.options.allowMultiple ||\n (!state.options.allowMultiple && !state.options.allowReplace)\n ) {\n var error = createResponse('warning', 0, 'Max files');\n\n dispatch('DID_THROW_MAX_FILES', {\n source: source,\n error: error,\n });\n\n failure({ error: error, file: null });\n\n return;\n }\n\n // let's replace the item\n // id of first item we're about to remove\n var _item = getActiveItems(state.items)[0];\n\n // if has been processed remove it from the server as well\n if (\n _item.status === ItemStatus.PROCESSING_COMPLETE ||\n _item.status === ItemStatus.PROCESSING_REVERT_ERROR\n ) {\n var forceRevert = query('GET_FORCE_REVERT');\n _item\n .revert(\n createRevertFunction(\n state.options.server.url,\n state.options.server.revert\n ),\n forceRevert\n )\n .then(function() {\n if (!forceRevert) return;\n\n // try to add now\n dispatch('ADD_ITEM', {\n source: source,\n index: index,\n interactionMethod: interactionMethod,\n success: success,\n failure: failure,\n options: options,\n });\n })\n .catch(function() {}); // no need to handle this catch state for now\n\n if (forceRevert) return;\n }\n\n // remove first item as it will be replaced by this item\n dispatch('REMOVE_ITEM', { query: _item.id });\n }\n\n // where did the file originate\n var origin =\n options.type === 'local'\n ? FileOrigin.LOCAL\n : options.type === 'limbo'\n ? FileOrigin.LIMBO\n : FileOrigin.INPUT;\n\n // create a new blank item\n var item = createItem(\n // where did this file come from\n origin,\n\n // an input file never has a server file reference\n origin === FileOrigin.INPUT ? null : source,\n\n // file mock data, if defined\n options.file\n );\n\n // set initial meta data\n Object.keys(options.metadata || {}).forEach(function(key) {\n item.setMetadata(key, options.metadata[key]);\n });\n\n // created the item, let plugins add methods\n applyFilters('DID_CREATE_ITEM', item, { query: query, dispatch: dispatch });\n\n // where to insert new items\n var itemInsertLocation = query('GET_ITEM_INSERT_LOCATION');\n\n // adjust index if is not allowed to pick location\n if (!state.options.itemInsertLocationFreedom) {\n index = itemInsertLocation === 'before' ? -1 : state.items.length;\n }\n\n // add item to list\n insertItem(state.items, item, index);\n\n // sort items in list\n if (isFunction(itemInsertLocation) && source) {\n sortItems(state, itemInsertLocation);\n }\n\n // get a quick reference to the item id\n var id = item.id;\n\n // observe item events\n item.on('init', function() {\n dispatch('DID_INIT_ITEM', { id: id });\n });\n\n item.on('load-init', function() {\n dispatch('DID_START_ITEM_LOAD', { id: id });\n });\n\n item.on('load-meta', function() {\n dispatch('DID_UPDATE_ITEM_META', { id: id });\n });\n\n item.on('load-progress', function(progress) {\n dispatch('DID_UPDATE_ITEM_LOAD_PROGRESS', { id: id, progress: progress });\n });\n\n item.on('load-request-error', function(error) {\n var mainStatus = dynamicLabel(state.options.labelFileLoadError)(error);\n\n // is client error, no way to recover\n if (error.code >= 400 && error.code < 500) {\n dispatch('DID_THROW_ITEM_INVALID', {\n id: id,\n error: error,\n status: {\n main: mainStatus,\n sub: error.code + ' (' + error.body + ')',\n },\n });\n\n // reject the file so can be dealt with through API\n failure({ error: error, file: createItemAPI(item) });\n return;\n }\n\n // is possible server error, so might be possible to retry\n dispatch('DID_THROW_ITEM_LOAD_ERROR', {\n id: id,\n error: error,\n status: {\n main: mainStatus,\n sub: state.options.labelTapToRetry,\n },\n });\n });\n\n item.on('load-file-error', function(error) {\n dispatch('DID_THROW_ITEM_INVALID', {\n id: id,\n error: error.status,\n status: error.status,\n });\n\n failure({ error: error.status, file: createItemAPI(item) });\n });\n\n item.on('load-abort', function() {\n dispatch('REMOVE_ITEM', { query: id });\n });\n\n item.on('load-skip', function() {\n dispatch('COMPLETE_LOAD_ITEM', {\n query: id,\n item: item,\n data: {\n source: source,\n success: success,\n },\n });\n });\n\n item.on('load', function() {\n var handleAdd = function handleAdd(shouldAdd) {\n // no should not add this file\n if (!shouldAdd) {\n dispatch('REMOVE_ITEM', {\n query: id,\n });\n\n return;\n }\n\n // now interested in metadata updates\n item.on('metadata-update', function(change) {\n dispatch('DID_UPDATE_ITEM_METADATA', { id: id, change: change });\n });\n\n // let plugins decide if the output data should be prepared at this point\n // means we'll do this and wait for idle state\n applyFilterChain('SHOULD_PREPARE_OUTPUT', false, {\n item: item,\n query: query,\n }).then(function(shouldPrepareOutput) {\n // plugins determined the output data should be prepared (or not), can be adjusted with beforePrepareOutput hook\n var beforePrepareFile = query('GET_BEFORE_PREPARE_FILE');\n if (beforePrepareFile)\n shouldPrepareOutput = beforePrepareFile(item, shouldPrepareOutput);\n\n var loadComplete = function loadComplete() {\n dispatch('COMPLETE_LOAD_ITEM', {\n query: id,\n item: item,\n data: {\n source: source,\n success: success,\n },\n });\n\n listUpdated(dispatch, state);\n };\n\n // exit\n if (shouldPrepareOutput) {\n // wait for idle state and then run PREPARE_OUTPUT\n dispatch(\n 'REQUEST_PREPARE_OUTPUT',\n {\n query: id,\n item: item,\n success: function success(file) {\n dispatch('DID_PREPARE_OUTPUT', { id: id, file: file });\n loadComplete();\n },\n },\n\n true\n );\n\n return;\n }\n\n loadComplete();\n });\n };\n\n // item loaded, allow plugins to\n // - read data (quickly)\n // - add metadata\n applyFilterChain('DID_LOAD_ITEM', item, { query: query, dispatch: dispatch })\n .then(function() {\n optionalPromise(query('GET_BEFORE_ADD_FILE'), createItemAPI(item)).then(\n handleAdd\n );\n })\n .catch(function(e) {\n if (!e || !e.error || !e.status) return handleAdd(false);\n dispatch('DID_THROW_ITEM_INVALID', {\n id: id,\n error: e.error,\n status: e.status,\n });\n });\n });\n\n item.on('process-start', function() {\n dispatch('DID_START_ITEM_PROCESSING', { id: id });\n });\n\n item.on('process-progress', function(progress) {\n dispatch('DID_UPDATE_ITEM_PROCESS_PROGRESS', { id: id, progress: progress });\n });\n\n item.on('process-error', function(error) {\n dispatch('DID_THROW_ITEM_PROCESSING_ERROR', {\n id: id,\n error: error,\n status: {\n main: dynamicLabel(state.options.labelFileProcessingError)(error),\n sub: state.options.labelTapToRetry,\n },\n });\n });\n\n item.on('process-revert-error', function(error) {\n dispatch('DID_THROW_ITEM_PROCESSING_REVERT_ERROR', {\n id: id,\n error: error,\n status: {\n main: dynamicLabel(state.options.labelFileProcessingRevertError)(error),\n sub: state.options.labelTapToRetry,\n },\n });\n });\n\n item.on('process-complete', function(serverFileReference) {\n dispatch('DID_COMPLETE_ITEM_PROCESSING', {\n id: id,\n error: null,\n serverFileReference: serverFileReference,\n });\n\n dispatch('DID_DEFINE_VALUE', { id: id, value: serverFileReference });\n });\n\n item.on('process-abort', function() {\n dispatch('DID_ABORT_ITEM_PROCESSING', { id: id });\n });\n\n item.on('process-revert', function() {\n dispatch('DID_REVERT_ITEM_PROCESSING', { id: id });\n dispatch('DID_DEFINE_VALUE', { id: id, value: null });\n });\n\n // let view know the item has been inserted\n dispatch('DID_ADD_ITEM', {\n id: id,\n index: index,\n interactionMethod: interactionMethod,\n });\n\n listUpdated(dispatch, state);\n\n // start loading the source\n var _ref8 = state.options.server || {},\n url = _ref8.url,\n load = _ref8.load,\n restore = _ref8.restore,\n fetch = _ref8.fetch;\n\n item.load(\n source,\n\n // this creates a function that loads the file based on the type of file (string, base64, blob, file) and location of file (local, remote, limbo)\n createFileLoader(\n origin === FileOrigin.INPUT\n ? // input, if is remote, see if should use custom fetch, else use default fetchBlob\n isString(source) && isExternalURL(source)\n ? fetch\n ? createFetchFunction(url, fetch)\n : fetchBlob // remote url\n : fetchBlob // try to fetch url\n : // limbo or local\n origin === FileOrigin.LIMBO\n ? createFetchFunction(url, restore) // limbo\n : createFetchFunction(url, load) // local\n ),\n\n // called when the file is loaded so it can be piped through the filters\n function(file, success, error) {\n // let's process the file\n applyFilterChain('LOAD_FILE', file, { query: query })\n .then(success)\n .catch(error);\n }\n );\n },\n\n REQUEST_PREPARE_OUTPUT: function REQUEST_PREPARE_OUTPUT(_ref9) {\n var item = _ref9.item,\n success = _ref9.success,\n _ref9$failure = _ref9.failure,\n failure = _ref9$failure === void 0 ? function() {} : _ref9$failure;\n // error response if item archived\n var err = {\n error: createResponse('error', 0, 'Item not found'),\n file: null,\n };\n\n // don't handle archived items, an item could have been archived (load aborted) while waiting to be prepared\n if (item.archived) return failure(err);\n\n // allow plugins to alter the file data\n applyFilterChain('PREPARE_OUTPUT', item.file, { query: query, item: item }).then(\n function(result) {\n applyFilterChain('COMPLETE_PREPARE_OUTPUT', result, {\n query: query,\n item: item,\n }).then(function(result) {\n // don't handle archived items, an item could have been archived (load aborted) while being prepared\n if (item.archived) return failure(err);\n\n // we done!\n success(result);\n });\n }\n );\n },\n\n COMPLETE_LOAD_ITEM: function COMPLETE_LOAD_ITEM(_ref10) {\n var item = _ref10.item,\n data = _ref10.data;\n var success = data.success,\n source = data.source;\n\n // sort items in list\n var itemInsertLocation = query('GET_ITEM_INSERT_LOCATION');\n if (isFunction(itemInsertLocation) && source) {\n sortItems(state, itemInsertLocation);\n }\n\n // let interface know the item has loaded\n dispatch('DID_LOAD_ITEM', {\n id: item.id,\n error: null,\n serverFileReference: item.origin === FileOrigin.INPUT ? null : source,\n });\n\n // item has been successfully loaded and added to the\n // list of items so can now be safely returned for use\n success(createItemAPI(item));\n\n // if this is a local server file we need to show a different state\n if (item.origin === FileOrigin.LOCAL) {\n dispatch('DID_LOAD_LOCAL_ITEM', { id: item.id });\n return;\n }\n\n // if is a temp server file we prevent async upload call here (as the file is already on the server)\n if (item.origin === FileOrigin.LIMBO) {\n dispatch('DID_COMPLETE_ITEM_PROCESSING', {\n id: item.id,\n error: null,\n serverFileReference: source,\n });\n\n dispatch('DID_DEFINE_VALUE', {\n id: item.id,\n value: item.serverId || source,\n });\n\n return;\n }\n\n // id we are allowed to upload the file immediately, lets do it\n if (query('IS_ASYNC') && state.options.instantUpload) {\n dispatch('REQUEST_ITEM_PROCESSING', { query: item.id });\n }\n },\n\n RETRY_ITEM_LOAD: getItemByQueryFromState(state, function(item) {\n // try loading the source one more time\n item.retryLoad();\n }),\n\n REQUEST_ITEM_PREPARE: getItemByQueryFromState(state, function(item, _success, failure) {\n dispatch(\n 'REQUEST_PREPARE_OUTPUT',\n {\n query: item.id,\n item: item,\n success: function success(file) {\n dispatch('DID_PREPARE_OUTPUT', { id: item.id, file: file });\n _success({\n file: item,\n output: file,\n });\n },\n failure: failure,\n },\n\n true\n );\n }),\n\n REQUEST_ITEM_PROCESSING: getItemByQueryFromState(state, function(\n item,\n success,\n failure\n ) {\n // cannot be queued (or is already queued)\n var itemCanBeQueuedForProcessing =\n // waiting for something\n item.status === ItemStatus.IDLE ||\n // processing went wrong earlier\n item.status === ItemStatus.PROCESSING_ERROR;\n\n // not ready to be processed\n if (!itemCanBeQueuedForProcessing) {\n var processNow = function processNow() {\n return dispatch('REQUEST_ITEM_PROCESSING', {\n query: item,\n success: success,\n failure: failure,\n });\n };\n\n var process = function process() {\n return document.hidden ? processNow() : setTimeout(processNow, 32);\n };\n\n // if already done processing or tried to revert but didn't work, try again\n if (\n item.status === ItemStatus.PROCESSING_COMPLETE ||\n item.status === ItemStatus.PROCESSING_REVERT_ERROR\n ) {\n item.revert(\n createRevertFunction(\n state.options.server.url,\n state.options.server.revert\n ),\n query('GET_FORCE_REVERT')\n )\n .then(process)\n .catch(function() {}); // don't continue with processing if something went wrong\n } else if (item.status === ItemStatus.PROCESSING) {\n item.abortProcessing().then(process);\n }\n\n return;\n }\n\n // already queued for processing\n if (item.status === ItemStatus.PROCESSING_QUEUED) return;\n\n item.requestProcessing();\n\n dispatch('DID_REQUEST_ITEM_PROCESSING', { id: item.id });\n\n dispatch('PROCESS_ITEM', { query: item, success: success, failure: failure }, true);\n }),\n\n PROCESS_ITEM: getItemByQueryFromState(state, function(item, success, failure) {\n var maxParallelUploads = query('GET_MAX_PARALLEL_UPLOADS');\n var totalCurrentUploads = query('GET_ITEMS_BY_STATUS', ItemStatus.PROCESSING)\n .length;\n\n // queue and wait till queue is freed up\n if (totalCurrentUploads === maxParallelUploads) {\n // queue for later processing\n state.processingQueue.push({\n id: item.id,\n success: success,\n failure: failure,\n });\n\n // stop it!\n return;\n }\n\n // if was not queued or is already processing exit here\n if (item.status === ItemStatus.PROCESSING) return;\n\n var processNext = function processNext() {\n // process queueud items\n var queueEntry = state.processingQueue.shift();\n\n // no items left\n if (!queueEntry) return;\n\n // get item reference\n var id = queueEntry.id,\n success = queueEntry.success,\n failure = queueEntry.failure;\n var itemReference = getItemByQuery(state.items, id);\n\n // if item was archived while in queue, jump to next\n if (!itemReference || itemReference.archived) {\n processNext();\n return;\n }\n\n // process queued item\n dispatch(\n 'PROCESS_ITEM',\n { query: id, success: success, failure: failure },\n true\n );\n };\n\n // we done function\n item.onOnce('process-complete', function() {\n success(createItemAPI(item));\n processNext();\n\n // if origin is local, and we're instant uploading, trigger remove of original\n // as revert will remove file from list\n var server = state.options.server;\n var instantUpload = state.options.instantUpload;\n if (\n instantUpload &&\n item.origin === FileOrigin.LOCAL &&\n isFunction(server.remove)\n ) {\n var noop = function noop() {};\n item.origin = FileOrigin.LIMBO;\n state.options.server.remove(item.source, noop, noop);\n }\n\n // All items processed? No errors?\n var allItemsProcessed =\n query('GET_ITEMS_BY_STATUS', ItemStatus.PROCESSING_COMPLETE).length ===\n state.items.length;\n if (allItemsProcessed) {\n dispatch('DID_COMPLETE_ITEM_PROCESSING_ALL');\n }\n });\n\n // we error function\n item.onOnce('process-error', function(error) {\n failure({ error: error, file: createItemAPI(item) });\n processNext();\n });\n\n // start file processing\n var options = state.options;\n item.process(\n createFileProcessor(\n createProcessorFunction(\n options.server.url,\n options.server.process,\n options.name,\n {\n chunkTransferId: item.transferId,\n chunkServer: options.server.patch,\n chunkUploads: options.chunkUploads,\n chunkForce: options.chunkForce,\n chunkSize: options.chunkSize,\n chunkRetryDelays: options.chunkRetryDelays,\n }\n ),\n\n {\n allowMinimumUploadDuration: query('GET_ALLOW_MINIMUM_UPLOAD_DURATION'),\n }\n ),\n\n // called when the file is about to be processed so it can be piped through the transform filters\n function(file, success, error) {\n // allow plugins to alter the file data\n applyFilterChain('PREPARE_OUTPUT', file, { query: query, item: item })\n .then(function(file) {\n dispatch('DID_PREPARE_OUTPUT', { id: item.id, file: file });\n\n success(file);\n })\n .catch(error);\n }\n );\n }),\n\n RETRY_ITEM_PROCESSING: getItemByQueryFromState(state, function(item) {\n dispatch('REQUEST_ITEM_PROCESSING', { query: item });\n }),\n\n REQUEST_REMOVE_ITEM: getItemByQueryFromState(state, function(item) {\n optionalPromise(query('GET_BEFORE_REMOVE_FILE'), createItemAPI(item)).then(function(\n shouldRemove\n ) {\n if (!shouldRemove) {\n return;\n }\n dispatch('REMOVE_ITEM', { query: item });\n });\n }),\n\n RELEASE_ITEM: getItemByQueryFromState(state, function(item) {\n item.release();\n }),\n\n REMOVE_ITEM: getItemByQueryFromState(state, function(item, success, failure, options) {\n var removeFromView = function removeFromView() {\n // get id reference\n var id = item.id;\n\n // archive the item, this does not remove it from the list\n getItemById(state.items, id).archive();\n\n // tell the view the item has been removed\n dispatch('DID_REMOVE_ITEM', { error: null, id: id, item: item });\n\n // now the list has been modified\n listUpdated(dispatch, state);\n\n // correctly removed\n success(createItemAPI(item));\n };\n\n // if this is a local file and the `server.remove` function has been configured,\n // send source there so dev can remove file from server\n var server = state.options.server;\n if (\n item.origin === FileOrigin.LOCAL &&\n server &&\n isFunction(server.remove) &&\n options.remove !== false\n ) {\n dispatch('DID_START_ITEM_REMOVE', { id: item.id });\n\n server.remove(\n item.source,\n function() {\n return removeFromView();\n },\n function(status) {\n dispatch('DID_THROW_ITEM_REMOVE_ERROR', {\n id: item.id,\n error: createResponse('error', 0, status, null),\n status: {\n main: dynamicLabel(state.options.labelFileRemoveError)(status),\n sub: state.options.labelTapToRetry,\n },\n });\n }\n );\n } else {\n // if is requesting revert and can revert need to call revert handler (not calling request_ because that would also trigger beforeRemoveHook)\n if (\n (options.revert &&\n item.origin !== FileOrigin.LOCAL &&\n item.serverId !== null) ||\n // if chunked uploads are enabled and we're uploading in chunks for this specific file\n // or if the file isn't big enough for chunked uploads but chunkForce is set then call\n // revert before removing from the view...\n (state.options.chunkUploads && item.file.size > state.options.chunkSize) ||\n (state.options.chunkUploads && state.options.chunkForce)\n ) {\n item.revert(\n createRevertFunction(\n state.options.server.url,\n state.options.server.revert\n ),\n query('GET_FORCE_REVERT')\n );\n }\n\n // can now safely remove from view\n removeFromView();\n }\n }),\n\n ABORT_ITEM_LOAD: getItemByQueryFromState(state, function(item) {\n item.abortLoad();\n }),\n\n ABORT_ITEM_PROCESSING: getItemByQueryFromState(state, function(item) {\n // test if is already processed\n if (item.serverId) {\n dispatch('REVERT_ITEM_PROCESSING', { id: item.id });\n return;\n }\n\n // abort\n item.abortProcessing().then(function() {\n var shouldRemove = state.options.instantUpload;\n if (shouldRemove) {\n dispatch('REMOVE_ITEM', { query: item.id });\n }\n });\n }),\n\n REQUEST_REVERT_ITEM_PROCESSING: getItemByQueryFromState(state, function(item) {\n // not instant uploading, revert immediately\n if (!state.options.instantUpload) {\n dispatch('REVERT_ITEM_PROCESSING', { query: item });\n return;\n }\n\n // if we're instant uploading the file will also be removed if we revert,\n // so if a before remove file hook is defined we need to run it now\n var handleRevert = function handleRevert(shouldRevert) {\n if (!shouldRevert) return;\n dispatch('REVERT_ITEM_PROCESSING', { query: item });\n };\n\n var fn = query('GET_BEFORE_REMOVE_FILE');\n if (!fn) {\n return handleRevert(true);\n }\n\n var requestRemoveResult = fn(createItemAPI(item));\n if (requestRemoveResult == null) {\n // undefined or null\n return handleRevert(true);\n }\n\n if (typeof requestRemoveResult === 'boolean') {\n return handleRevert(requestRemoveResult);\n }\n\n if (typeof requestRemoveResult.then === 'function') {\n requestRemoveResult.then(handleRevert);\n }\n }),\n\n REVERT_ITEM_PROCESSING: getItemByQueryFromState(state, function(item) {\n item.revert(\n createRevertFunction(state.options.server.url, state.options.server.revert),\n query('GET_FORCE_REVERT')\n )\n .then(function() {\n var shouldRemove = state.options.instantUpload || isMockItem(item);\n if (shouldRemove) {\n dispatch('REMOVE_ITEM', { query: item.id });\n }\n })\n .catch(function() {});\n }),\n\n SET_OPTIONS: function SET_OPTIONS(_ref11) {\n var options = _ref11.options;\n // get all keys passed\n var optionKeys = Object.keys(options);\n\n // get prioritized keyed to include (remove once not in options object)\n var prioritizedOptionKeys = PrioritizedOptions.filter(function(key) {\n return optionKeys.includes(key);\n });\n\n // order the keys, prioritized first, then rest\n var orderedOptionKeys = [].concat(\n _toConsumableArray(prioritizedOptionKeys),\n _toConsumableArray(\n Object.keys(options).filter(function(key) {\n return !prioritizedOptionKeys.includes(key);\n })\n )\n );\n\n // dispatch set event for each option\n orderedOptionKeys.forEach(function(key) {\n dispatch('SET_' + fromCamels(key, '_').toUpperCase(), {\n value: options[key],\n });\n });\n },\n };\n };\n\n var PrioritizedOptions = ['server'];\n\n var formatFilename = function formatFilename(name) {\n return name;\n };\n\n var createElement$1 = function createElement(tagName) {\n return document.createElement(tagName);\n };\n\n var text = function text(node, value) {\n var textNode = node.childNodes[0];\n if (!textNode) {\n textNode = document.createTextNode(value);\n node.appendChild(textNode);\n } else if (value !== textNode.nodeValue) {\n textNode.nodeValue = value;\n }\n };\n\n var polarToCartesian = function polarToCartesian(centerX, centerY, radius, angleInDegrees) {\n var angleInRadians = (((angleInDegrees % 360) - 90) * Math.PI) / 180.0;\n return {\n x: centerX + radius * Math.cos(angleInRadians),\n y: centerY + radius * Math.sin(angleInRadians),\n };\n };\n\n var describeArc = function describeArc(x, y, radius, startAngle, endAngle, arcSweep) {\n var start = polarToCartesian(x, y, radius, endAngle);\n var end = polarToCartesian(x, y, radius, startAngle);\n return ['M', start.x, start.y, 'A', radius, radius, 0, arcSweep, 0, end.x, end.y].join(' ');\n };\n\n var percentageArc = function percentageArc(x, y, radius, from, to) {\n var arcSweep = 1;\n if (to > from && to - from <= 0.5) {\n arcSweep = 0;\n }\n if (from > to && from - to >= 0.5) {\n arcSweep = 0;\n }\n return describeArc(\n x,\n y,\n radius,\n Math.min(0.9999, from) * 360,\n Math.min(0.9999, to) * 360,\n arcSweep\n );\n };\n\n var create = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n // start at 0\n props.spin = false;\n props.progress = 0;\n props.opacity = 0;\n\n // svg\n var svg = createElement('svg');\n root.ref.path = createElement('path', {\n 'stroke-width': 2,\n 'stroke-linecap': 'round',\n });\n\n svg.appendChild(root.ref.path);\n\n root.ref.svg = svg;\n\n root.appendChild(svg);\n };\n\n var write = function write(_ref2) {\n var root = _ref2.root,\n props = _ref2.props;\n if (props.opacity === 0) {\n return;\n }\n\n if (props.align) {\n root.element.dataset.align = props.align;\n }\n\n // get width of stroke\n var ringStrokeWidth = parseInt(attr(root.ref.path, 'stroke-width'), 10);\n\n // calculate size of ring\n var size = root.rect.element.width * 0.5;\n\n // ring state\n var ringFrom = 0;\n var ringTo = 0;\n\n // now in busy mode\n if (props.spin) {\n ringFrom = 0;\n ringTo = 0.5;\n } else {\n ringFrom = 0;\n ringTo = props.progress;\n }\n\n // get arc path\n var coordinates = percentageArc(size, size, size - ringStrokeWidth, ringFrom, ringTo);\n\n // update progress bar\n attr(root.ref.path, 'd', coordinates);\n\n // hide while contains 0 value\n attr(root.ref.path, 'stroke-opacity', props.spin || props.progress > 0 ? 1 : 0);\n };\n\n var progressIndicator = createView({\n tag: 'div',\n name: 'progress-indicator',\n ignoreRectUpdate: true,\n ignoreRect: true,\n create: create,\n write: write,\n mixins: {\n apis: ['progress', 'spin', 'align'],\n styles: ['opacity'],\n animations: {\n opacity: { type: 'tween', duration: 500 },\n progress: {\n type: 'spring',\n stiffness: 0.95,\n damping: 0.65,\n mass: 10,\n },\n },\n },\n });\n\n var create$1 = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n root.element.innerHTML = (props.icon || '') + ('' + props.label + '');\n\n props.isDisabled = false;\n };\n\n var write$1 = function write(_ref2) {\n var root = _ref2.root,\n props = _ref2.props;\n var isDisabled = props.isDisabled;\n var shouldDisable = root.query('GET_DISABLED') || props.opacity === 0;\n\n if (shouldDisable && !isDisabled) {\n props.isDisabled = true;\n attr(root.element, 'disabled', 'disabled');\n } else if (!shouldDisable && isDisabled) {\n props.isDisabled = false;\n root.element.removeAttribute('disabled');\n }\n };\n\n var fileActionButton = createView({\n tag: 'button',\n attributes: {\n type: 'button',\n },\n\n ignoreRect: true,\n ignoreRectUpdate: true,\n name: 'file-action-button',\n mixins: {\n apis: ['label'],\n styles: ['translateX', 'translateY', 'scaleX', 'scaleY', 'opacity'],\n animations: {\n scaleX: 'spring',\n scaleY: 'spring',\n translateX: 'spring',\n translateY: 'spring',\n opacity: { type: 'tween', duration: 250 },\n },\n\n listeners: true,\n },\n\n create: create$1,\n write: write$1,\n });\n\n var toNaturalFileSize = function toNaturalFileSize(bytes) {\n var decimalSeparator =\n arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '.';\n var base = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1000;\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var _options$labelBytes = options.labelBytes,\n labelBytes = _options$labelBytes === void 0 ? 'bytes' : _options$labelBytes,\n _options$labelKilobyt = options.labelKilobytes,\n labelKilobytes = _options$labelKilobyt === void 0 ? 'KB' : _options$labelKilobyt,\n _options$labelMegabyt = options.labelMegabytes,\n labelMegabytes = _options$labelMegabyt === void 0 ? 'MB' : _options$labelMegabyt,\n _options$labelGigabyt = options.labelGigabytes,\n labelGigabytes = _options$labelGigabyt === void 0 ? 'GB' : _options$labelGigabyt;\n\n // no negative byte sizes\n bytes = Math.round(Math.abs(bytes));\n\n var KB = base;\n var MB = base * base;\n var GB = base * base * base;\n\n // just bytes\n if (bytes < KB) {\n return bytes + ' ' + labelBytes;\n }\n\n // kilobytes\n if (bytes < MB) {\n return Math.floor(bytes / KB) + ' ' + labelKilobytes;\n }\n\n // megabytes\n if (bytes < GB) {\n return removeDecimalsWhenZero(bytes / MB, 1, decimalSeparator) + ' ' + labelMegabytes;\n }\n\n // gigabytes\n return removeDecimalsWhenZero(bytes / GB, 2, decimalSeparator) + ' ' + labelGigabytes;\n };\n\n var removeDecimalsWhenZero = function removeDecimalsWhenZero(value, decimalCount, separator) {\n return value\n .toFixed(decimalCount)\n .split('.')\n .filter(function(part) {\n return part !== '0';\n })\n .join(separator);\n };\n\n var create$2 = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n // filename\n var fileName = createElement$1('span');\n fileName.className = 'filepond--file-info-main';\n // hide for screenreaders\n // the file is contained in a fieldset with legend that contains the filename\n // no need to read it twice\n attr(fileName, 'aria-hidden', 'true');\n root.appendChild(fileName);\n root.ref.fileName = fileName;\n\n // filesize\n var fileSize = createElement$1('span');\n fileSize.className = 'filepond--file-info-sub';\n root.appendChild(fileSize);\n root.ref.fileSize = fileSize;\n\n // set initial values\n text(fileSize, root.query('GET_LABEL_FILE_WAITING_FOR_SIZE'));\n text(fileName, formatFilename(root.query('GET_ITEM_NAME', props.id)));\n };\n\n var updateFile = function updateFile(_ref2) {\n var root = _ref2.root,\n props = _ref2.props;\n text(\n root.ref.fileSize,\n toNaturalFileSize(\n root.query('GET_ITEM_SIZE', props.id),\n '.',\n root.query('GET_FILE_SIZE_BASE'),\n root.query('GET_FILE_SIZE_LABELS', root.query)\n )\n );\n\n text(root.ref.fileName, formatFilename(root.query('GET_ITEM_NAME', props.id)));\n };\n\n var updateFileSizeOnError = function updateFileSizeOnError(_ref3) {\n var root = _ref3.root,\n props = _ref3.props;\n // if size is available don't fallback to unknown size message\n if (isInt(root.query('GET_ITEM_SIZE', props.id))) {\n updateFile({ root: root, props: props });\n return;\n }\n\n text(root.ref.fileSize, root.query('GET_LABEL_FILE_SIZE_NOT_AVAILABLE'));\n };\n\n var fileInfo = createView({\n name: 'file-info',\n ignoreRect: true,\n ignoreRectUpdate: true,\n write: createRoute({\n DID_LOAD_ITEM: updateFile,\n DID_UPDATE_ITEM_META: updateFile,\n DID_THROW_ITEM_LOAD_ERROR: updateFileSizeOnError,\n DID_THROW_ITEM_INVALID: updateFileSizeOnError,\n }),\n\n didCreateView: function didCreateView(root) {\n applyFilters('CREATE_VIEW', Object.assign({}, root, { view: root }));\n },\n create: create$2,\n mixins: {\n styles: ['translateX', 'translateY'],\n animations: {\n translateX: 'spring',\n translateY: 'spring',\n },\n },\n });\n\n var toPercentage = function toPercentage(value) {\n return Math.round(value * 100);\n };\n\n var create$3 = function create(_ref) {\n var root = _ref.root;\n\n // main status\n var main = createElement$1('span');\n main.className = 'filepond--file-status-main';\n root.appendChild(main);\n root.ref.main = main;\n\n // sub status\n var sub = createElement$1('span');\n sub.className = 'filepond--file-status-sub';\n root.appendChild(sub);\n root.ref.sub = sub;\n\n didSetItemLoadProgress({ root: root, action: { progress: null } });\n };\n\n var didSetItemLoadProgress = function didSetItemLoadProgress(_ref2) {\n var root = _ref2.root,\n action = _ref2.action;\n var title =\n action.progress === null\n ? root.query('GET_LABEL_FILE_LOADING')\n : root.query('GET_LABEL_FILE_LOADING') + ' ' + toPercentage(action.progress) + '%';\n\n text(root.ref.main, title);\n text(root.ref.sub, root.query('GET_LABEL_TAP_TO_CANCEL'));\n };\n\n var didSetItemProcessProgress = function didSetItemProcessProgress(_ref3) {\n var root = _ref3.root,\n action = _ref3.action;\n var title =\n action.progress === null\n ? root.query('GET_LABEL_FILE_PROCESSING')\n : root.query('GET_LABEL_FILE_PROCESSING') +\n ' ' +\n toPercentage(action.progress) +\n '%';\n\n text(root.ref.main, title);\n text(root.ref.sub, root.query('GET_LABEL_TAP_TO_CANCEL'));\n };\n\n var didRequestItemProcessing = function didRequestItemProcessing(_ref4) {\n var root = _ref4.root;\n text(root.ref.main, root.query('GET_LABEL_FILE_PROCESSING'));\n text(root.ref.sub, root.query('GET_LABEL_TAP_TO_CANCEL'));\n };\n\n var didAbortItemProcessing = function didAbortItemProcessing(_ref5) {\n var root = _ref5.root;\n text(root.ref.main, root.query('GET_LABEL_FILE_PROCESSING_ABORTED'));\n text(root.ref.sub, root.query('GET_LABEL_TAP_TO_RETRY'));\n };\n\n var didCompleteItemProcessing = function didCompleteItemProcessing(_ref6) {\n var root = _ref6.root;\n text(root.ref.main, root.query('GET_LABEL_FILE_PROCESSING_COMPLETE'));\n text(root.ref.sub, root.query('GET_LABEL_TAP_TO_UNDO'));\n };\n\n var clear = function clear(_ref7) {\n var root = _ref7.root;\n text(root.ref.main, '');\n text(root.ref.sub, '');\n };\n\n var error = function error(_ref8) {\n var root = _ref8.root,\n action = _ref8.action;\n text(root.ref.main, action.status.main);\n text(root.ref.sub, action.status.sub);\n };\n\n var fileStatus = createView({\n name: 'file-status',\n ignoreRect: true,\n ignoreRectUpdate: true,\n write: createRoute({\n DID_LOAD_ITEM: clear,\n DID_REVERT_ITEM_PROCESSING: clear,\n DID_REQUEST_ITEM_PROCESSING: didRequestItemProcessing,\n DID_ABORT_ITEM_PROCESSING: didAbortItemProcessing,\n DID_COMPLETE_ITEM_PROCESSING: didCompleteItemProcessing,\n DID_UPDATE_ITEM_PROCESS_PROGRESS: didSetItemProcessProgress,\n DID_UPDATE_ITEM_LOAD_PROGRESS: didSetItemLoadProgress,\n DID_THROW_ITEM_LOAD_ERROR: error,\n DID_THROW_ITEM_INVALID: error,\n DID_THROW_ITEM_PROCESSING_ERROR: error,\n DID_THROW_ITEM_PROCESSING_REVERT_ERROR: error,\n DID_THROW_ITEM_REMOVE_ERROR: error,\n }),\n\n didCreateView: function didCreateView(root) {\n applyFilters('CREATE_VIEW', Object.assign({}, root, { view: root }));\n },\n create: create$3,\n mixins: {\n styles: ['translateX', 'translateY', 'opacity'],\n animations: {\n opacity: { type: 'tween', duration: 250 },\n translateX: 'spring',\n translateY: 'spring',\n },\n },\n });\n\n /**\n * Button definitions for the file view\n */\n\n var Buttons = {\n AbortItemLoad: {\n label: 'GET_LABEL_BUTTON_ABORT_ITEM_LOAD',\n action: 'ABORT_ITEM_LOAD',\n className: 'filepond--action-abort-item-load',\n align: 'LOAD_INDICATOR_POSITION', // right\n },\n RetryItemLoad: {\n label: 'GET_LABEL_BUTTON_RETRY_ITEM_LOAD',\n action: 'RETRY_ITEM_LOAD',\n icon: 'GET_ICON_RETRY',\n className: 'filepond--action-retry-item-load',\n align: 'BUTTON_PROCESS_ITEM_POSITION', // right\n },\n RemoveItem: {\n label: 'GET_LABEL_BUTTON_REMOVE_ITEM',\n action: 'REQUEST_REMOVE_ITEM',\n icon: 'GET_ICON_REMOVE',\n className: 'filepond--action-remove-item',\n align: 'BUTTON_REMOVE_ITEM_POSITION', // left\n },\n ProcessItem: {\n label: 'GET_LABEL_BUTTON_PROCESS_ITEM',\n action: 'REQUEST_ITEM_PROCESSING',\n icon: 'GET_ICON_PROCESS',\n className: 'filepond--action-process-item',\n align: 'BUTTON_PROCESS_ITEM_POSITION', // right\n },\n AbortItemProcessing: {\n label: 'GET_LABEL_BUTTON_ABORT_ITEM_PROCESSING',\n action: 'ABORT_ITEM_PROCESSING',\n className: 'filepond--action-abort-item-processing',\n align: 'BUTTON_PROCESS_ITEM_POSITION', // right\n },\n RetryItemProcessing: {\n label: 'GET_LABEL_BUTTON_RETRY_ITEM_PROCESSING',\n action: 'RETRY_ITEM_PROCESSING',\n icon: 'GET_ICON_RETRY',\n className: 'filepond--action-retry-item-processing',\n align: 'BUTTON_PROCESS_ITEM_POSITION', // right\n },\n RevertItemProcessing: {\n label: 'GET_LABEL_BUTTON_UNDO_ITEM_PROCESSING',\n action: 'REQUEST_REVERT_ITEM_PROCESSING',\n icon: 'GET_ICON_UNDO',\n className: 'filepond--action-revert-item-processing',\n align: 'BUTTON_PROCESS_ITEM_POSITION', // right\n },\n };\n\n // make a list of buttons, we can then remove buttons from this list if they're disabled\n var ButtonKeys = [];\n forin(Buttons, function(key) {\n ButtonKeys.push(key);\n });\n\n var calculateFileInfoOffset = function calculateFileInfoOffset(root) {\n if (getRemoveIndicatorAligment(root) === 'right') return 0;\n var buttonRect = root.ref.buttonRemoveItem.rect.element;\n return buttonRect.hidden ? null : buttonRect.width + buttonRect.left;\n };\n\n var calculateButtonWidth = function calculateButtonWidth(root) {\n var buttonRect = root.ref.buttonAbortItemLoad.rect.element;\n return buttonRect.width;\n };\n\n // Force on full pixels so text stays crips\n var calculateFileVerticalCenterOffset = function calculateFileVerticalCenterOffset(root) {\n return Math.floor(root.ref.buttonRemoveItem.rect.element.height / 4);\n };\n var calculateFileHorizontalCenterOffset = function calculateFileHorizontalCenterOffset(root) {\n return Math.floor(root.ref.buttonRemoveItem.rect.element.left / 2);\n };\n\n var getLoadIndicatorAlignment = function getLoadIndicatorAlignment(root) {\n return root.query('GET_STYLE_LOAD_INDICATOR_POSITION');\n };\n var getProcessIndicatorAlignment = function getProcessIndicatorAlignment(root) {\n return root.query('GET_STYLE_PROGRESS_INDICATOR_POSITION');\n };\n var getRemoveIndicatorAligment = function getRemoveIndicatorAligment(root) {\n return root.query('GET_STYLE_BUTTON_REMOVE_ITEM_POSITION');\n };\n\n var DefaultStyle = {\n buttonAbortItemLoad: { opacity: 0 },\n buttonRetryItemLoad: { opacity: 0 },\n buttonRemoveItem: { opacity: 0 },\n buttonProcessItem: { opacity: 0 },\n buttonAbortItemProcessing: { opacity: 0 },\n buttonRetryItemProcessing: { opacity: 0 },\n buttonRevertItemProcessing: { opacity: 0 },\n loadProgressIndicator: { opacity: 0, align: getLoadIndicatorAlignment },\n processProgressIndicator: { opacity: 0, align: getProcessIndicatorAlignment },\n processingCompleteIndicator: { opacity: 0, scaleX: 0.75, scaleY: 0.75 },\n info: { translateX: 0, translateY: 0, opacity: 0 },\n status: { translateX: 0, translateY: 0, opacity: 0 },\n };\n\n var IdleStyle = {\n buttonRemoveItem: { opacity: 1 },\n buttonProcessItem: { opacity: 1 },\n info: { translateX: calculateFileInfoOffset },\n status: { translateX: calculateFileInfoOffset },\n };\n\n var ProcessingStyle = {\n buttonAbortItemProcessing: { opacity: 1 },\n processProgressIndicator: { opacity: 1 },\n status: { opacity: 1 },\n };\n\n var StyleMap = {\n DID_THROW_ITEM_INVALID: {\n buttonRemoveItem: { opacity: 1 },\n info: { translateX: calculateFileInfoOffset },\n status: { translateX: calculateFileInfoOffset, opacity: 1 },\n },\n\n DID_START_ITEM_LOAD: {\n buttonAbortItemLoad: { opacity: 1 },\n loadProgressIndicator: { opacity: 1 },\n status: { opacity: 1 },\n },\n\n DID_THROW_ITEM_LOAD_ERROR: {\n buttonRetryItemLoad: { opacity: 1 },\n buttonRemoveItem: { opacity: 1 },\n info: { translateX: calculateFileInfoOffset },\n status: { opacity: 1 },\n },\n\n DID_START_ITEM_REMOVE: {\n processProgressIndicator: { opacity: 1, align: getRemoveIndicatorAligment },\n info: { translateX: calculateFileInfoOffset },\n status: { opacity: 0 },\n },\n\n DID_THROW_ITEM_REMOVE_ERROR: {\n processProgressIndicator: { opacity: 0, align: getRemoveIndicatorAligment },\n buttonRemoveItem: { opacity: 1 },\n info: { translateX: calculateFileInfoOffset },\n status: { opacity: 1, translateX: calculateFileInfoOffset },\n },\n\n DID_LOAD_ITEM: IdleStyle,\n DID_LOAD_LOCAL_ITEM: {\n buttonRemoveItem: { opacity: 1 },\n info: { translateX: calculateFileInfoOffset },\n status: { translateX: calculateFileInfoOffset },\n },\n\n DID_START_ITEM_PROCESSING: ProcessingStyle,\n DID_REQUEST_ITEM_PROCESSING: ProcessingStyle,\n DID_UPDATE_ITEM_PROCESS_PROGRESS: ProcessingStyle,\n DID_COMPLETE_ITEM_PROCESSING: {\n buttonRevertItemProcessing: { opacity: 1 },\n info: { opacity: 1 },\n status: { opacity: 1 },\n },\n\n DID_THROW_ITEM_PROCESSING_ERROR: {\n buttonRemoveItem: { opacity: 1 },\n buttonRetryItemProcessing: { opacity: 1 },\n status: { opacity: 1 },\n info: { translateX: calculateFileInfoOffset },\n },\n\n DID_THROW_ITEM_PROCESSING_REVERT_ERROR: {\n buttonRevertItemProcessing: { opacity: 1 },\n status: { opacity: 1 },\n info: { opacity: 1 },\n },\n\n DID_ABORT_ITEM_PROCESSING: {\n buttonRemoveItem: { opacity: 1 },\n buttonProcessItem: { opacity: 1 },\n info: { translateX: calculateFileInfoOffset },\n status: { opacity: 1 },\n },\n\n DID_REVERT_ITEM_PROCESSING: IdleStyle,\n };\n\n // complete indicator view\n var processingCompleteIndicatorView = createView({\n create: function create(_ref) {\n var root = _ref.root;\n root.element.innerHTML = root.query('GET_ICON_DONE');\n },\n name: 'processing-complete-indicator',\n ignoreRect: true,\n mixins: {\n styles: ['scaleX', 'scaleY', 'opacity'],\n animations: {\n scaleX: 'spring',\n scaleY: 'spring',\n opacity: { type: 'tween', duration: 250 },\n },\n },\n });\n\n /**\n * Creates the file view\n */\n var create$4 = function create(_ref2) {\n var root = _ref2.root,\n props = _ref2.props;\n // copy Buttons object\n var LocalButtons = Object.keys(Buttons).reduce(function(prev, curr) {\n prev[curr] = Object.assign({}, Buttons[curr]);\n return prev;\n }, {});\n var id = props.id;\n\n // allow reverting upload\n var allowRevert = root.query('GET_ALLOW_REVERT');\n\n // allow remove file\n var allowRemove = root.query('GET_ALLOW_REMOVE');\n\n // allow processing upload\n var allowProcess = root.query('GET_ALLOW_PROCESS');\n\n // is instant uploading, need this to determine the icon of the undo button\n var instantUpload = root.query('GET_INSTANT_UPLOAD');\n\n // is async set up\n var isAsync = root.query('IS_ASYNC');\n\n // should align remove item buttons\n var alignRemoveItemButton = root.query('GET_STYLE_BUTTON_REMOVE_ITEM_ALIGN');\n\n // enabled buttons array\n var buttonFilter;\n if (isAsync) {\n if (allowProcess && !allowRevert) {\n // only remove revert button\n buttonFilter = function buttonFilter(key) {\n return !/RevertItemProcessing/.test(key);\n };\n } else if (!allowProcess && allowRevert) {\n // only remove process button\n buttonFilter = function buttonFilter(key) {\n return !/ProcessItem|RetryItemProcessing|AbortItemProcessing/.test(key);\n };\n } else if (!allowProcess && !allowRevert) {\n // remove all process buttons\n buttonFilter = function buttonFilter(key) {\n return !/Process/.test(key);\n };\n }\n } else {\n // no process controls available\n buttonFilter = function buttonFilter(key) {\n return !/Process/.test(key);\n };\n }\n\n var enabledButtons = buttonFilter ? ButtonKeys.filter(buttonFilter) : ButtonKeys.concat();\n\n // update icon and label for revert button when instant uploading\n if (instantUpload && allowRevert) {\n LocalButtons['RevertItemProcessing'].label = 'GET_LABEL_BUTTON_REMOVE_ITEM';\n LocalButtons['RevertItemProcessing'].icon = 'GET_ICON_REMOVE';\n }\n\n // remove last button (revert) if not allowed\n if (isAsync && !allowRevert) {\n var map = StyleMap['DID_COMPLETE_ITEM_PROCESSING'];\n map.info.translateX = calculateFileHorizontalCenterOffset;\n map.info.translateY = calculateFileVerticalCenterOffset;\n map.status.translateY = calculateFileVerticalCenterOffset;\n map.processingCompleteIndicator = { opacity: 1, scaleX: 1, scaleY: 1 };\n }\n\n // should align center\n if (isAsync && !allowProcess) {\n [\n 'DID_START_ITEM_PROCESSING',\n 'DID_REQUEST_ITEM_PROCESSING',\n 'DID_UPDATE_ITEM_PROCESS_PROGRESS',\n 'DID_THROW_ITEM_PROCESSING_ERROR',\n ].forEach(function(key) {\n StyleMap[key].status.translateY = calculateFileVerticalCenterOffset;\n });\n StyleMap['DID_THROW_ITEM_PROCESSING_ERROR'].status.translateX = calculateButtonWidth;\n }\n\n // move remove button to right\n if (alignRemoveItemButton && allowRevert) {\n LocalButtons['RevertItemProcessing'].align = 'BUTTON_REMOVE_ITEM_POSITION';\n var _map = StyleMap['DID_COMPLETE_ITEM_PROCESSING'];\n _map.info.translateX = calculateFileInfoOffset;\n _map.status.translateY = calculateFileVerticalCenterOffset;\n _map.processingCompleteIndicator = { opacity: 1, scaleX: 1, scaleY: 1 };\n }\n\n // show/hide RemoveItem button\n if (!allowRemove) {\n LocalButtons['RemoveItem'].disabled = true;\n }\n\n // create the button views\n forin(LocalButtons, function(key, definition) {\n // create button\n var buttonView = root.createChildView(fileActionButton, {\n label: root.query(definition.label),\n icon: root.query(definition.icon),\n opacity: 0,\n });\n\n // should be appended?\n if (enabledButtons.includes(key)) {\n root.appendChildView(buttonView);\n }\n\n // toggle\n if (definition.disabled) {\n buttonView.element.setAttribute('disabled', 'disabled');\n buttonView.element.setAttribute('hidden', 'hidden');\n }\n\n // add position attribute\n buttonView.element.dataset.align = root.query('GET_STYLE_' + definition.align);\n\n // add class\n buttonView.element.classList.add(definition.className);\n\n // handle interactions\n buttonView.on('click', function(e) {\n e.stopPropagation();\n if (definition.disabled) return;\n root.dispatch(definition.action, { query: id });\n });\n\n // set reference\n root.ref['button' + key] = buttonView;\n });\n\n // checkmark\n root.ref.processingCompleteIndicator = root.appendChildView(\n root.createChildView(processingCompleteIndicatorView)\n );\n\n root.ref.processingCompleteIndicator.element.dataset.align = root.query(\n 'GET_STYLE_BUTTON_PROCESS_ITEM_POSITION'\n );\n\n // create file info view\n root.ref.info = root.appendChildView(root.createChildView(fileInfo, { id: id }));\n\n // create file status view\n root.ref.status = root.appendChildView(root.createChildView(fileStatus, { id: id }));\n\n // add progress indicators\n var loadIndicatorView = root.appendChildView(\n root.createChildView(progressIndicator, {\n opacity: 0,\n align: root.query('GET_STYLE_LOAD_INDICATOR_POSITION'),\n })\n );\n\n loadIndicatorView.element.classList.add('filepond--load-indicator');\n root.ref.loadProgressIndicator = loadIndicatorView;\n\n var progressIndicatorView = root.appendChildView(\n root.createChildView(progressIndicator, {\n opacity: 0,\n align: root.query('GET_STYLE_PROGRESS_INDICATOR_POSITION'),\n })\n );\n\n progressIndicatorView.element.classList.add('filepond--process-indicator');\n root.ref.processProgressIndicator = progressIndicatorView;\n\n // current active styles\n root.ref.activeStyles = [];\n };\n\n var write$2 = function write(_ref3) {\n var root = _ref3.root,\n actions = _ref3.actions,\n props = _ref3.props;\n // route actions\n route({ root: root, actions: actions, props: props });\n\n // select last state change action\n var action = actions\n .concat()\n .filter(function(action) {\n return /^DID_/.test(action.type);\n })\n .reverse()\n .find(function(action) {\n return StyleMap[action.type];\n });\n\n // a new action happened, let's get the matching styles\n if (action) {\n // define new active styles\n root.ref.activeStyles = [];\n\n var stylesToApply = StyleMap[action.type];\n forin(DefaultStyle, function(name, defaultStyles) {\n // get reference to control\n var control = root.ref[name];\n\n // loop over all styles for this control\n forin(defaultStyles, function(key, defaultValue) {\n var value =\n stylesToApply[name] && typeof stylesToApply[name][key] !== 'undefined'\n ? stylesToApply[name][key]\n : defaultValue;\n root.ref.activeStyles.push({ control: control, key: key, value: value });\n });\n });\n }\n\n // apply active styles to element\n root.ref.activeStyles.forEach(function(_ref4) {\n var control = _ref4.control,\n key = _ref4.key,\n value = _ref4.value;\n control[key] = typeof value === 'function' ? value(root) : value;\n });\n };\n\n var route = createRoute({\n DID_SET_LABEL_BUTTON_ABORT_ITEM_PROCESSING: function DID_SET_LABEL_BUTTON_ABORT_ITEM_PROCESSING(\n _ref5\n ) {\n var root = _ref5.root,\n action = _ref5.action;\n root.ref.buttonAbortItemProcessing.label = action.value;\n },\n DID_SET_LABEL_BUTTON_ABORT_ITEM_LOAD: function DID_SET_LABEL_BUTTON_ABORT_ITEM_LOAD(_ref6) {\n var root = _ref6.root,\n action = _ref6.action;\n root.ref.buttonAbortItemLoad.label = action.value;\n },\n DID_SET_LABEL_BUTTON_ABORT_ITEM_REMOVAL: function DID_SET_LABEL_BUTTON_ABORT_ITEM_REMOVAL(\n _ref7\n ) {\n var root = _ref7.root,\n action = _ref7.action;\n root.ref.buttonAbortItemRemoval.label = action.value;\n },\n DID_REQUEST_ITEM_PROCESSING: function DID_REQUEST_ITEM_PROCESSING(_ref8) {\n var root = _ref8.root;\n root.ref.processProgressIndicator.spin = true;\n root.ref.processProgressIndicator.progress = 0;\n },\n DID_START_ITEM_LOAD: function DID_START_ITEM_LOAD(_ref9) {\n var root = _ref9.root;\n root.ref.loadProgressIndicator.spin = true;\n root.ref.loadProgressIndicator.progress = 0;\n },\n DID_START_ITEM_REMOVE: function DID_START_ITEM_REMOVE(_ref10) {\n var root = _ref10.root;\n root.ref.processProgressIndicator.spin = true;\n root.ref.processProgressIndicator.progress = 0;\n },\n DID_UPDATE_ITEM_LOAD_PROGRESS: function DID_UPDATE_ITEM_LOAD_PROGRESS(_ref11) {\n var root = _ref11.root,\n action = _ref11.action;\n root.ref.loadProgressIndicator.spin = false;\n root.ref.loadProgressIndicator.progress = action.progress;\n },\n DID_UPDATE_ITEM_PROCESS_PROGRESS: function DID_UPDATE_ITEM_PROCESS_PROGRESS(_ref12) {\n var root = _ref12.root,\n action = _ref12.action;\n root.ref.processProgressIndicator.spin = false;\n root.ref.processProgressIndicator.progress = action.progress;\n },\n });\n\n var file = createView({\n create: create$4,\n write: write$2,\n didCreateView: function didCreateView(root) {\n applyFilters('CREATE_VIEW', Object.assign({}, root, { view: root }));\n },\n name: 'file',\n });\n\n /**\n * Creates the file view\n */\n var create$5 = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n\n // filename\n root.ref.fileName = createElement$1('legend');\n root.appendChild(root.ref.fileName);\n\n // file appended\n root.ref.file = root.appendChildView(root.createChildView(file, { id: props.id }));\n\n // data has moved to data.js\n root.ref.data = false;\n };\n\n /**\n * Data storage\n */\n var didLoadItem = function didLoadItem(_ref2) {\n var root = _ref2.root,\n props = _ref2.props;\n // updates the legend of the fieldset so screenreaders can better group buttons\n text(root.ref.fileName, formatFilename(root.query('GET_ITEM_NAME', props.id)));\n };\n\n var fileWrapper = createView({\n create: create$5,\n ignoreRect: true,\n write: createRoute({\n DID_LOAD_ITEM: didLoadItem,\n }),\n\n didCreateView: function didCreateView(root) {\n applyFilters('CREATE_VIEW', Object.assign({}, root, { view: root }));\n },\n tag: 'fieldset',\n name: 'file-wrapper',\n });\n\n var PANEL_SPRING_PROPS = { type: 'spring', damping: 0.6, mass: 7 };\n\n var create$6 = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n [\n {\n name: 'top',\n },\n\n {\n name: 'center',\n props: {\n translateY: null,\n scaleY: null,\n },\n\n mixins: {\n animations: {\n scaleY: PANEL_SPRING_PROPS,\n },\n\n styles: ['translateY', 'scaleY'],\n },\n },\n\n {\n name: 'bottom',\n props: {\n translateY: null,\n },\n\n mixins: {\n animations: {\n translateY: PANEL_SPRING_PROPS,\n },\n\n styles: ['translateY'],\n },\n },\n ].forEach(function(section) {\n createSection(root, section, props.name);\n });\n\n root.element.classList.add('filepond--' + props.name);\n\n root.ref.scalable = null;\n };\n\n var createSection = function createSection(root, section, className) {\n var viewConstructor = createView({\n name: 'panel-' + section.name + ' filepond--' + className,\n mixins: section.mixins,\n ignoreRectUpdate: true,\n });\n\n var view = root.createChildView(viewConstructor, section.props);\n\n root.ref[section.name] = root.appendChildView(view);\n };\n\n var write$3 = function write(_ref2) {\n var root = _ref2.root,\n props = _ref2.props;\n\n // update scalable state\n if (root.ref.scalable === null || props.scalable !== root.ref.scalable) {\n root.ref.scalable = isBoolean(props.scalable) ? props.scalable : true;\n root.element.dataset.scalable = root.ref.scalable;\n }\n\n // no height, can't set\n if (!props.height) return;\n\n // get child rects\n var topRect = root.ref.top.rect.element;\n var bottomRect = root.ref.bottom.rect.element;\n\n // make sure height never is smaller than bottom and top seciton heights combined (will probably never happen, but who knows)\n var height = Math.max(topRect.height + bottomRect.height, props.height);\n\n // offset center part\n root.ref.center.translateY = topRect.height;\n\n // scale center part\n // use math ceil to prevent transparent lines because of rounding errors\n root.ref.center.scaleY = (height - topRect.height - bottomRect.height) / 100;\n\n // offset bottom part\n root.ref.bottom.translateY = height - bottomRect.height;\n };\n\n var panel = createView({\n name: 'panel',\n read: function read(_ref3) {\n var root = _ref3.root,\n props = _ref3.props;\n return (props.heightCurrent = root.ref.bottom.translateY);\n },\n write: write$3,\n create: create$6,\n ignoreRect: true,\n mixins: {\n apis: ['height', 'heightCurrent', 'scalable'],\n },\n });\n\n var createDragHelper = function createDragHelper(items) {\n var itemIds = items.map(function(item) {\n return item.id;\n });\n var prevIndex = undefined;\n return {\n setIndex: function setIndex(index) {\n prevIndex = index;\n },\n getIndex: function getIndex() {\n return prevIndex;\n },\n getItemIndex: function getItemIndex(item) {\n return itemIds.indexOf(item.id);\n },\n };\n };\n\n var ITEM_TRANSLATE_SPRING = {\n type: 'spring',\n stiffness: 0.75,\n damping: 0.45,\n mass: 10,\n };\n\n var ITEM_SCALE_SPRING = 'spring';\n\n var StateMap = {\n DID_START_ITEM_LOAD: 'busy',\n DID_UPDATE_ITEM_LOAD_PROGRESS: 'loading',\n DID_THROW_ITEM_INVALID: 'load-invalid',\n DID_THROW_ITEM_LOAD_ERROR: 'load-error',\n DID_LOAD_ITEM: 'idle',\n DID_THROW_ITEM_REMOVE_ERROR: 'remove-error',\n DID_START_ITEM_REMOVE: 'busy',\n DID_START_ITEM_PROCESSING: 'busy processing',\n DID_REQUEST_ITEM_PROCESSING: 'busy processing',\n DID_UPDATE_ITEM_PROCESS_PROGRESS: 'processing',\n DID_COMPLETE_ITEM_PROCESSING: 'processing-complete',\n DID_THROW_ITEM_PROCESSING_ERROR: 'processing-error',\n DID_THROW_ITEM_PROCESSING_REVERT_ERROR: 'processing-revert-error',\n DID_ABORT_ITEM_PROCESSING: 'cancelled',\n DID_REVERT_ITEM_PROCESSING: 'idle',\n };\n\n /**\n * Creates the file view\n */\n var create$7 = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n\n // select\n root.ref.handleClick = function(e) {\n return root.dispatch('DID_ACTIVATE_ITEM', { id: props.id });\n };\n\n // set id\n root.element.id = 'filepond--item-' + props.id;\n root.element.addEventListener('click', root.ref.handleClick);\n\n // file view\n root.ref.container = root.appendChildView(\n root.createChildView(fileWrapper, { id: props.id })\n );\n\n // file panel\n root.ref.panel = root.appendChildView(root.createChildView(panel, { name: 'item-panel' }));\n\n // default start height\n root.ref.panel.height = null;\n\n // by default not marked for removal\n props.markedForRemoval = false;\n\n // if not allowed to reorder file items, exit here\n if (!root.query('GET_ALLOW_REORDER')) return;\n\n // set to idle so shows grab cursor\n root.element.dataset.dragState = 'idle';\n\n var grab = function grab(e) {\n if (!e.isPrimary) return;\n\n var removedActivateListener = false;\n\n var origin = {\n x: e.pageX,\n y: e.pageY,\n };\n\n props.dragOrigin = {\n x: root.translateX,\n y: root.translateY,\n };\n\n props.dragCenter = {\n x: e.offsetX,\n y: e.offsetY,\n };\n\n var dragState = createDragHelper(root.query('GET_ACTIVE_ITEMS'));\n\n root.dispatch('DID_GRAB_ITEM', { id: props.id, dragState: dragState });\n\n var drag = function drag(e) {\n if (!e.isPrimary) return;\n\n e.stopPropagation();\n e.preventDefault();\n\n props.dragOffset = {\n x: e.pageX - origin.x,\n y: e.pageY - origin.y,\n };\n\n // if dragged stop listening to clicks, will re-add when done dragging\n var dist =\n props.dragOffset.x * props.dragOffset.x +\n props.dragOffset.y * props.dragOffset.y;\n if (dist > 16 && !removedActivateListener) {\n removedActivateListener = true;\n root.element.removeEventListener('click', root.ref.handleClick);\n }\n\n root.dispatch('DID_DRAG_ITEM', { id: props.id, dragState: dragState });\n };\n\n var drop = function drop(e) {\n if (!e.isPrimary) return;\n\n document.removeEventListener('pointermove', drag);\n document.removeEventListener('pointerup', drop);\n\n props.dragOffset = {\n x: e.pageX - origin.x,\n y: e.pageY - origin.y,\n };\n\n root.dispatch('DID_DROP_ITEM', { id: props.id, dragState: dragState });\n\n // start listening to clicks again\n if (removedActivateListener) {\n setTimeout(function() {\n return root.element.addEventListener('click', root.ref.handleClick);\n }, 0);\n }\n };\n\n document.addEventListener('pointermove', drag);\n document.addEventListener('pointerup', drop);\n };\n\n root.element.addEventListener('pointerdown', grab);\n };\n\n var route$1 = createRoute({\n DID_UPDATE_PANEL_HEIGHT: function DID_UPDATE_PANEL_HEIGHT(_ref2) {\n var root = _ref2.root,\n action = _ref2.action;\n root.height = action.height;\n },\n });\n\n var write$4 = createRoute(\n {\n DID_GRAB_ITEM: function DID_GRAB_ITEM(_ref3) {\n var root = _ref3.root,\n props = _ref3.props;\n props.dragOrigin = {\n x: root.translateX,\n y: root.translateY,\n };\n },\n DID_DRAG_ITEM: function DID_DRAG_ITEM(_ref4) {\n var root = _ref4.root;\n root.element.dataset.dragState = 'drag';\n },\n DID_DROP_ITEM: function DID_DROP_ITEM(_ref5) {\n var root = _ref5.root,\n props = _ref5.props;\n props.dragOffset = null;\n props.dragOrigin = null;\n root.element.dataset.dragState = 'drop';\n },\n },\n function(_ref6) {\n var root = _ref6.root,\n actions = _ref6.actions,\n props = _ref6.props,\n shouldOptimize = _ref6.shouldOptimize;\n\n if (root.element.dataset.dragState === 'drop') {\n if (root.scaleX <= 1) {\n root.element.dataset.dragState = 'idle';\n }\n }\n\n // select last state change action\n var action = actions\n .concat()\n .filter(function(action) {\n return /^DID_/.test(action.type);\n })\n .reverse()\n .find(function(action) {\n return StateMap[action.type];\n });\n\n // no need to set same state twice\n if (action && action.type !== props.currentState) {\n // set current state\n props.currentState = action.type;\n\n // set state\n root.element.dataset.filepondItemState = StateMap[props.currentState] || '';\n }\n\n // route actions\n var aspectRatio =\n root.query('GET_ITEM_PANEL_ASPECT_RATIO') || root.query('GET_PANEL_ASPECT_RATIO');\n if (!aspectRatio) {\n route$1({ root: root, actions: actions, props: props });\n if (!root.height && root.ref.container.rect.element.height > 0) {\n root.height = root.ref.container.rect.element.height;\n }\n } else if (!shouldOptimize) {\n root.height = root.rect.element.width * aspectRatio;\n }\n\n // sync panel height with item height\n if (shouldOptimize) {\n root.ref.panel.height = null;\n }\n\n root.ref.panel.height = root.height;\n }\n );\n\n var item = createView({\n create: create$7,\n write: write$4,\n destroy: function destroy(_ref7) {\n var root = _ref7.root,\n props = _ref7.props;\n root.element.removeEventListener('click', root.ref.handleClick);\n root.dispatch('RELEASE_ITEM', { query: props.id });\n },\n tag: 'li',\n name: 'item',\n mixins: {\n apis: [\n 'id',\n 'interactionMethod',\n 'markedForRemoval',\n 'spawnDate',\n 'dragCenter',\n 'dragOrigin',\n 'dragOffset',\n ],\n styles: ['translateX', 'translateY', 'scaleX', 'scaleY', 'opacity', 'height'],\n\n animations: {\n scaleX: ITEM_SCALE_SPRING,\n scaleY: ITEM_SCALE_SPRING,\n translateX: ITEM_TRANSLATE_SPRING,\n translateY: ITEM_TRANSLATE_SPRING,\n opacity: { type: 'tween', duration: 150 },\n },\n },\n });\n\n var getItemsPerRow = function(horizontalSpace, itemWidth) {\n // add one pixel leeway, when using percentages for item width total items can be 1.99 per row\n\n return Math.max(1, Math.floor((horizontalSpace + 1) / itemWidth));\n };\n\n var getItemIndexByPosition = function getItemIndexByPosition(view, children, positionInView) {\n if (!positionInView) return;\n\n var horizontalSpace = view.rect.element.width;\n // const children = view.childViews;\n var l = children.length;\n var last = null;\n\n // -1, don't move items to accomodate (either add to top or bottom)\n if (l === 0 || positionInView.top < children[0].rect.element.top) return -1;\n\n // let's get the item width\n var item = children[0];\n var itemRect = item.rect.element;\n var itemHorizontalMargin = itemRect.marginLeft + itemRect.marginRight;\n var itemWidth = itemRect.width + itemHorizontalMargin;\n var itemsPerRow = getItemsPerRow(horizontalSpace, itemWidth);\n\n // stack\n if (itemsPerRow === 1) {\n for (var index = 0; index < l; index++) {\n var child = children[index];\n var childMid = child.rect.outer.top + child.rect.element.height * 0.5;\n if (positionInView.top < childMid) {\n return index;\n }\n }\n return l;\n }\n\n // grid\n var itemVerticalMargin = itemRect.marginTop + itemRect.marginBottom;\n var itemHeight = itemRect.height + itemVerticalMargin;\n for (var _index = 0; _index < l; _index++) {\n var indexX = _index % itemsPerRow;\n var indexY = Math.floor(_index / itemsPerRow);\n\n var offsetX = indexX * itemWidth;\n var offsetY = indexY * itemHeight;\n\n var itemTop = offsetY - itemRect.marginTop;\n var itemRight = offsetX + itemWidth;\n var itemBottom = offsetY + itemHeight + itemRect.marginBottom;\n\n if (positionInView.top < itemBottom && positionInView.top > itemTop) {\n if (positionInView.left < itemRight) {\n return _index;\n } else if (_index !== l - 1) {\n last = _index;\n } else {\n last = null;\n }\n }\n }\n\n if (last !== null) {\n return last;\n }\n\n return l;\n };\n\n var dropAreaDimensions = {\n height: 0,\n width: 0,\n get getHeight() {\n return this.height;\n },\n set setHeight(val) {\n if (this.height === 0 || val === 0) this.height = val;\n },\n get getWidth() {\n return this.width;\n },\n set setWidth(val) {\n if (this.width === 0 || val === 0) this.width = val;\n },\n setDimensions: function setDimensions(height, width) {\n if (this.height === 0 || height === 0) this.height = height;\n if (this.width === 0 || width === 0) this.width = width;\n },\n };\n\n var create$8 = function create(_ref) {\n var root = _ref.root;\n // need to set role to list as otherwise it won't be read as a list by VoiceOver\n attr(root.element, 'role', 'list');\n\n root.ref.lastItemSpanwDate = Date.now();\n };\n\n /**\n * Inserts a new item\n * @param root\n * @param action\n */\n var addItemView = function addItemView(_ref2) {\n var root = _ref2.root,\n action = _ref2.action;\n var id = action.id,\n index = action.index,\n interactionMethod = action.interactionMethod;\n\n root.ref.addIndex = index;\n\n var now = Date.now();\n var spawnDate = now;\n var opacity = 1;\n\n if (interactionMethod !== InteractionMethod.NONE) {\n opacity = 0;\n var cooldown = root.query('GET_ITEM_INSERT_INTERVAL');\n var dist = now - root.ref.lastItemSpanwDate;\n spawnDate = dist < cooldown ? now + (cooldown - dist) : now;\n }\n\n root.ref.lastItemSpanwDate = spawnDate;\n\n root.appendChildView(\n root.createChildView(\n // view type\n item,\n\n // props\n {\n spawnDate: spawnDate,\n id: id,\n opacity: opacity,\n interactionMethod: interactionMethod,\n }\n ),\n\n index\n );\n };\n\n var moveItem = function moveItem(item, x, y) {\n var vx = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var vy = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n // set to null to remove animation while dragging\n if (item.dragOffset) {\n item.translateX = null;\n item.translateY = null;\n item.translateX = item.dragOrigin.x + item.dragOffset.x;\n item.translateY = item.dragOrigin.y + item.dragOffset.y;\n item.scaleX = 1.025;\n item.scaleY = 1.025;\n } else {\n item.translateX = x;\n item.translateY = y;\n\n if (Date.now() > item.spawnDate) {\n // reveal element\n if (item.opacity === 0) {\n introItemView(item, x, y, vx, vy);\n }\n\n // make sure is default scale every frame\n item.scaleX = 1;\n item.scaleY = 1;\n item.opacity = 1;\n }\n }\n };\n\n var introItemView = function introItemView(item, x, y, vx, vy) {\n if (item.interactionMethod === InteractionMethod.NONE) {\n item.translateX = null;\n item.translateX = x;\n item.translateY = null;\n item.translateY = y;\n } else if (item.interactionMethod === InteractionMethod.DROP) {\n item.translateX = null;\n item.translateX = x - vx * 20;\n\n item.translateY = null;\n item.translateY = y - vy * 10;\n\n item.scaleX = 0.8;\n item.scaleY = 0.8;\n } else if (item.interactionMethod === InteractionMethod.BROWSE) {\n item.translateY = null;\n item.translateY = y - 30;\n } else if (item.interactionMethod === InteractionMethod.API) {\n item.translateX = null;\n item.translateX = x - 30;\n item.translateY = null;\n }\n };\n\n /**\n * Removes an existing item\n * @param root\n * @param action\n */\n var removeItemView = function removeItemView(_ref3) {\n var root = _ref3.root,\n action = _ref3.action;\n var id = action.id;\n\n // get the view matching the given id\n var view = root.childViews.find(function(child) {\n return child.id === id;\n });\n\n // if no view found, exit\n if (!view) {\n return;\n }\n\n // animate view out of view\n view.scaleX = 0.9;\n view.scaleY = 0.9;\n view.opacity = 0;\n\n // mark for removal\n view.markedForRemoval = true;\n };\n\n var getItemHeight = function getItemHeight(child) {\n return (\n child.rect.element.height +\n child.rect.element.marginBottom * 0.5 +\n child.rect.element.marginTop * 0.5\n );\n };\n var getItemWidth = function getItemWidth(child) {\n return (\n child.rect.element.width +\n child.rect.element.marginLeft * 0.5 +\n child.rect.element.marginRight * 0.5\n );\n };\n\n var dragItem = function dragItem(_ref4) {\n var root = _ref4.root,\n action = _ref4.action;\n var id = action.id,\n dragState = action.dragState;\n\n // reference to item\n var item = root.query('GET_ITEM', { id: id });\n\n // get the view matching the given id\n var view = root.childViews.find(function(child) {\n return child.id === id;\n });\n\n var numItems = root.childViews.length;\n var oldIndex = dragState.getItemIndex(item);\n\n // if no view found, exit\n if (!view) return;\n\n var dragPosition = {\n x: view.dragOrigin.x + view.dragOffset.x + view.dragCenter.x,\n y: view.dragOrigin.y + view.dragOffset.y + view.dragCenter.y,\n };\n\n // get drag area dimensions\n var dragHeight = getItemHeight(view);\n var dragWidth = getItemWidth(view);\n\n // get rows and columns (There will always be at least one row and one column if a file is present)\n var cols = Math.floor(root.rect.outer.width / dragWidth);\n if (cols > numItems) cols = numItems;\n\n // rows are used to find when we have left the preview area bounding box\n var rows = Math.floor(numItems / cols + 1);\n\n dropAreaDimensions.setHeight = dragHeight * rows;\n dropAreaDimensions.setWidth = dragWidth * cols;\n\n // get new index of dragged item\n var location = {\n y: Math.floor(dragPosition.y / dragHeight),\n x: Math.floor(dragPosition.x / dragWidth),\n getGridIndex: function getGridIndex() {\n if (\n dragPosition.y > dropAreaDimensions.getHeight ||\n dragPosition.y < 0 ||\n dragPosition.x > dropAreaDimensions.getWidth ||\n dragPosition.x < 0\n )\n return oldIndex;\n return this.y * cols + this.x;\n },\n getColIndex: function getColIndex() {\n var items = root.query('GET_ACTIVE_ITEMS');\n var visibleChildren = root.childViews.filter(function(child) {\n return child.rect.element.height;\n });\n var children = items.map(function(item) {\n return visibleChildren.find(function(childView) {\n return childView.id === item.id;\n });\n });\n\n var currentIndex = children.findIndex(function(child) {\n return child === view;\n });\n var dragHeight = getItemHeight(view);\n var l = children.length;\n var idx = l;\n var childHeight = 0;\n var childBottom = 0;\n var childTop = 0;\n for (var i = 0; i < l; i++) {\n childHeight = getItemHeight(children[i]);\n childTop = childBottom;\n childBottom = childTop + childHeight;\n if (dragPosition.y < childBottom) {\n if (currentIndex > i) {\n if (dragPosition.y < childTop + dragHeight) {\n idx = i;\n break;\n }\n continue;\n }\n idx = i;\n break;\n }\n }\n return idx;\n },\n };\n\n // get new index\n var index = cols > 1 ? location.getGridIndex() : location.getColIndex();\n root.dispatch('MOVE_ITEM', { query: view, index: index });\n\n // if the index of the item changed, dispatch reorder action\n var currentIndex = dragState.getIndex();\n\n if (currentIndex === undefined || currentIndex !== index) {\n dragState.setIndex(index);\n\n if (currentIndex === undefined) return;\n\n root.dispatch('DID_REORDER_ITEMS', {\n items: root.query('GET_ACTIVE_ITEMS'),\n origin: oldIndex,\n target: index,\n });\n }\n };\n\n /**\n * Setup action routes\n */\n var route$2 = createRoute({\n DID_ADD_ITEM: addItemView,\n DID_REMOVE_ITEM: removeItemView,\n DID_DRAG_ITEM: dragItem,\n });\n\n /**\n * Write to view\n * @param root\n * @param actions\n * @param props\n */\n var write$5 = function write(_ref5) {\n var root = _ref5.root,\n props = _ref5.props,\n actions = _ref5.actions,\n shouldOptimize = _ref5.shouldOptimize;\n // route actions\n route$2({ root: root, props: props, actions: actions });\n var dragCoordinates = props.dragCoordinates;\n\n // available space on horizontal axis\n var horizontalSpace = root.rect.element.width;\n\n // only draw children that have dimensions\n var visibleChildren = root.childViews.filter(function(child) {\n return child.rect.element.height;\n });\n\n // sort based on current active items\n var children = root\n .query('GET_ACTIVE_ITEMS')\n .map(function(item) {\n return visibleChildren.find(function(child) {\n return child.id === item.id;\n });\n })\n .filter(function(item) {\n return item;\n });\n\n // get index\n var dragIndex = dragCoordinates\n ? getItemIndexByPosition(root, children, dragCoordinates)\n : null;\n\n // add index is used to reserve the dropped/added item index till the actual item is rendered\n var addIndex = root.ref.addIndex || null;\n\n // add index no longer needed till possibly next draw\n root.ref.addIndex = null;\n\n var dragIndexOffset = 0;\n var removeIndexOffset = 0;\n var addIndexOffset = 0;\n\n if (children.length === 0) return;\n\n var childRect = children[0].rect.element;\n var itemVerticalMargin = childRect.marginTop + childRect.marginBottom;\n var itemHorizontalMargin = childRect.marginLeft + childRect.marginRight;\n var itemWidth = childRect.width + itemHorizontalMargin;\n var itemHeight = childRect.height + itemVerticalMargin;\n var itemsPerRow = getItemsPerRow(horizontalSpace, itemWidth);\n\n // stack\n if (itemsPerRow === 1) {\n var offsetY = 0;\n var dragOffset = 0;\n\n children.forEach(function(child, index) {\n if (dragIndex) {\n var dist = index - dragIndex;\n if (dist === -2) {\n dragOffset = -itemVerticalMargin * 0.25;\n } else if (dist === -1) {\n dragOffset = -itemVerticalMargin * 0.75;\n } else if (dist === 0) {\n dragOffset = itemVerticalMargin * 0.75;\n } else if (dist === 1) {\n dragOffset = itemVerticalMargin * 0.25;\n } else {\n dragOffset = 0;\n }\n }\n\n if (shouldOptimize) {\n child.translateX = null;\n child.translateY = null;\n }\n\n if (!child.markedForRemoval) {\n moveItem(child, 0, offsetY + dragOffset);\n }\n\n var itemHeight = child.rect.element.height + itemVerticalMargin;\n\n var visualHeight = itemHeight * (child.markedForRemoval ? child.opacity : 1);\n\n offsetY += visualHeight;\n });\n }\n // grid\n else {\n var prevX = 0;\n var prevY = 0;\n\n children.forEach(function(child, index) {\n if (index === dragIndex) {\n dragIndexOffset = 1;\n }\n\n if (index === addIndex) {\n addIndexOffset += 1;\n }\n\n if (child.markedForRemoval && child.opacity < 0.5) {\n removeIndexOffset -= 1;\n }\n\n var visualIndex = index + addIndexOffset + dragIndexOffset + removeIndexOffset;\n\n var indexX = visualIndex % itemsPerRow;\n var indexY = Math.floor(visualIndex / itemsPerRow);\n\n var offsetX = indexX * itemWidth;\n var offsetY = indexY * itemHeight;\n\n var vectorX = Math.sign(offsetX - prevX);\n var vectorY = Math.sign(offsetY - prevY);\n\n prevX = offsetX;\n prevY = offsetY;\n\n if (child.markedForRemoval) return;\n\n if (shouldOptimize) {\n child.translateX = null;\n child.translateY = null;\n }\n\n moveItem(child, offsetX, offsetY, vectorX, vectorY);\n });\n }\n };\n\n /**\n * Filters actions that are meant specifically for a certain child of the list\n * @param child\n * @param actions\n */\n var filterSetItemActions = function filterSetItemActions(child, actions) {\n return actions.filter(function(action) {\n // if action has an id, filter out actions that don't have this child id\n if (action.data && action.data.id) {\n return child.id === action.data.id;\n }\n\n // allow all other actions\n return true;\n });\n };\n\n var list = createView({\n create: create$8,\n write: write$5,\n tag: 'ul',\n name: 'list',\n didWriteView: function didWriteView(_ref6) {\n var root = _ref6.root;\n root.childViews\n .filter(function(view) {\n return view.markedForRemoval && view.opacity === 0 && view.resting;\n })\n .forEach(function(view) {\n view._destroy();\n root.removeChildView(view);\n });\n },\n filterFrameActionsForChild: filterSetItemActions,\n mixins: {\n apis: ['dragCoordinates'],\n },\n });\n\n var create$9 = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n root.ref.list = root.appendChildView(root.createChildView(list));\n props.dragCoordinates = null;\n props.overflowing = false;\n };\n\n var storeDragCoordinates = function storeDragCoordinates(_ref2) {\n var root = _ref2.root,\n props = _ref2.props,\n action = _ref2.action;\n if (!root.query('GET_ITEM_INSERT_LOCATION_FREEDOM')) return;\n props.dragCoordinates = {\n left: action.position.scopeLeft - root.ref.list.rect.element.left,\n top:\n action.position.scopeTop -\n (root.rect.outer.top + root.rect.element.marginTop + root.rect.element.scrollTop),\n };\n };\n\n var clearDragCoordinates = function clearDragCoordinates(_ref3) {\n var props = _ref3.props;\n props.dragCoordinates = null;\n };\n\n var route$3 = createRoute({\n DID_DRAG: storeDragCoordinates,\n DID_END_DRAG: clearDragCoordinates,\n });\n\n var write$6 = function write(_ref4) {\n var root = _ref4.root,\n props = _ref4.props,\n actions = _ref4.actions;\n\n // route actions\n route$3({ root: root, props: props, actions: actions });\n\n // current drag position\n root.ref.list.dragCoordinates = props.dragCoordinates;\n\n // if currently overflowing but no longer received overflow\n if (props.overflowing && !props.overflow) {\n props.overflowing = false;\n\n // reset overflow state\n root.element.dataset.state = '';\n root.height = null;\n }\n\n // if is not overflowing currently but does receive overflow value\n if (props.overflow) {\n var newHeight = Math.round(props.overflow);\n if (newHeight !== root.height) {\n props.overflowing = true;\n root.element.dataset.state = 'overflow';\n root.height = newHeight;\n }\n }\n };\n\n var listScroller = createView({\n create: create$9,\n write: write$6,\n name: 'list-scroller',\n mixins: {\n apis: ['overflow', 'dragCoordinates'],\n styles: ['height', 'translateY'],\n animations: {\n translateY: 'spring',\n },\n },\n });\n\n var attrToggle = function attrToggle(element, name, state) {\n var enabledValue = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '';\n if (state) {\n attr(element, name, enabledValue);\n } else {\n element.removeAttribute(name);\n }\n };\n\n var resetFileInput = function resetFileInput(input) {\n // no value, no need to reset\n if (!input || input.value === '') {\n return;\n }\n\n try {\n // for modern browsers\n input.value = '';\n } catch (err) {}\n\n // for IE10\n if (input.value) {\n // quickly append input to temp form and reset form\n var form = createElement$1('form');\n var parentNode = input.parentNode;\n var ref = input.nextSibling;\n form.appendChild(input);\n form.reset();\n\n // re-inject input where it originally was\n if (ref) {\n parentNode.insertBefore(input, ref);\n } else {\n parentNode.appendChild(input);\n }\n }\n };\n\n var create$a = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n\n // set id so can be referenced from outside labels\n root.element.id = 'filepond--browser-' + props.id;\n\n // set name of element (is removed when a value is set)\n attr(root.element, 'name', root.query('GET_NAME'));\n\n // we have to link this element to the status element\n attr(root.element, 'aria-controls', 'filepond--assistant-' + props.id);\n\n // set label, we use labelled by as otherwise the screenreader does not read the \"browse\" text in the label (as it has tabindex: 0)\n attr(root.element, 'aria-labelledby', 'filepond--drop-label-' + props.id);\n\n // set configurable props\n setAcceptedFileTypes({\n root: root,\n action: { value: root.query('GET_ACCEPTED_FILE_TYPES') },\n });\n toggleAllowMultiple({ root: root, action: { value: root.query('GET_ALLOW_MULTIPLE') } });\n toggleDirectoryFilter({\n root: root,\n action: { value: root.query('GET_ALLOW_DIRECTORIES_ONLY') },\n });\n toggleDisabled({ root: root });\n toggleRequired({ root: root, action: { value: root.query('GET_REQUIRED') } });\n setCaptureMethod({ root: root, action: { value: root.query('GET_CAPTURE_METHOD') } });\n\n // handle changes to the input field\n root.ref.handleChange = function(e) {\n if (!root.element.value) {\n return;\n }\n\n // extract files and move value of webkitRelativePath path to _relativePath\n var files = Array.from(root.element.files).map(function(file) {\n file._relativePath = file.webkitRelativePath;\n return file;\n });\n\n // we add a little delay so the OS file select window can move out of the way before we add our file\n setTimeout(function() {\n // load files\n props.onload(files);\n\n // reset input, it's just for exposing a method to drop files, should not retain any state\n resetFileInput(root.element);\n }, 250);\n };\n\n root.element.addEventListener('change', root.ref.handleChange);\n };\n\n var setAcceptedFileTypes = function setAcceptedFileTypes(_ref2) {\n var root = _ref2.root,\n action = _ref2.action;\n if (!root.query('GET_ALLOW_SYNC_ACCEPT_ATTRIBUTE')) return;\n attrToggle(\n root.element,\n 'accept',\n !!action.value,\n action.value ? action.value.join(',') : ''\n );\n };\n\n var toggleAllowMultiple = function toggleAllowMultiple(_ref3) {\n var root = _ref3.root,\n action = _ref3.action;\n attrToggle(root.element, 'multiple', action.value);\n };\n\n var toggleDirectoryFilter = function toggleDirectoryFilter(_ref4) {\n var root = _ref4.root,\n action = _ref4.action;\n attrToggle(root.element, 'webkitdirectory', action.value);\n };\n\n var toggleDisabled = function toggleDisabled(_ref5) {\n var root = _ref5.root;\n var isDisabled = root.query('GET_DISABLED');\n var doesAllowBrowse = root.query('GET_ALLOW_BROWSE');\n var disableField = isDisabled || !doesAllowBrowse;\n attrToggle(root.element, 'disabled', disableField);\n };\n\n var toggleRequired = function toggleRequired(_ref6) {\n var root = _ref6.root,\n action = _ref6.action;\n // want to remove required, always possible\n if (!action.value) {\n attrToggle(root.element, 'required', false);\n }\n // if want to make required, only possible when zero items\n else if (root.query('GET_TOTAL_ITEMS') === 0) {\n attrToggle(root.element, 'required', true);\n }\n };\n\n var setCaptureMethod = function setCaptureMethod(_ref7) {\n var root = _ref7.root,\n action = _ref7.action;\n attrToggle(\n root.element,\n 'capture',\n !!action.value,\n action.value === true ? '' : action.value\n );\n };\n\n var updateRequiredStatus = function updateRequiredStatus(_ref8) {\n var root = _ref8.root;\n var element = root.element;\n // always remove the required attribute when more than zero items\n if (root.query('GET_TOTAL_ITEMS') > 0) {\n attrToggle(element, 'required', false);\n attrToggle(element, 'name', false);\n } else {\n // add name attribute\n attrToggle(element, 'name', true, root.query('GET_NAME'));\n\n // remove any validation messages\n var shouldCheckValidity = root.query('GET_CHECK_VALIDITY');\n if (shouldCheckValidity) {\n element.setCustomValidity('');\n }\n\n // we only add required if the field has been deemed required\n if (root.query('GET_REQUIRED')) {\n attrToggle(element, 'required', true);\n }\n }\n };\n\n var updateFieldValidityStatus = function updateFieldValidityStatus(_ref9) {\n var root = _ref9.root;\n var shouldCheckValidity = root.query('GET_CHECK_VALIDITY');\n if (!shouldCheckValidity) return;\n root.element.setCustomValidity(root.query('GET_LABEL_INVALID_FIELD'));\n };\n\n var browser = createView({\n tag: 'input',\n name: 'browser',\n ignoreRect: true,\n ignoreRectUpdate: true,\n attributes: {\n type: 'file',\n },\n\n create: create$a,\n destroy: function destroy(_ref10) {\n var root = _ref10.root;\n root.element.removeEventListener('change', root.ref.handleChange);\n },\n write: createRoute({\n DID_LOAD_ITEM: updateRequiredStatus,\n DID_REMOVE_ITEM: updateRequiredStatus,\n DID_THROW_ITEM_INVALID: updateFieldValidityStatus,\n\n DID_SET_DISABLED: toggleDisabled,\n DID_SET_ALLOW_BROWSE: toggleDisabled,\n DID_SET_ALLOW_DIRECTORIES_ONLY: toggleDirectoryFilter,\n DID_SET_ALLOW_MULTIPLE: toggleAllowMultiple,\n DID_SET_ACCEPTED_FILE_TYPES: setAcceptedFileTypes,\n DID_SET_CAPTURE_METHOD: setCaptureMethod,\n DID_SET_REQUIRED: toggleRequired,\n }),\n });\n\n var Key = {\n ENTER: 13,\n SPACE: 32,\n };\n\n var create$b = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n\n // create the label and link it to the file browser\n var label = createElement$1('label');\n attr(label, 'for', 'filepond--browser-' + props.id);\n\n // use for labeling file input (aria-labelledby on file input)\n attr(label, 'id', 'filepond--drop-label-' + props.id);\n\n // hide the label for screenreaders, the input element will read the contents of the label when it's focussed. If we don't set aria-hidden the screenreader will also navigate the contents of the label separately from the input.\n attr(label, 'aria-hidden', 'true');\n\n // handle keys\n root.ref.handleKeyDown = function(e) {\n var isActivationKey = e.keyCode === Key.ENTER || e.keyCode === Key.SPACE;\n if (!isActivationKey) return;\n // stops from triggering the element a second time\n e.preventDefault();\n\n // click link (will then in turn activate file input)\n root.ref.label.click();\n };\n\n root.ref.handleClick = function(e) {\n var isLabelClick = e.target === label || label.contains(e.target);\n\n // don't want to click twice\n if (isLabelClick) return;\n\n // click link (will then in turn activate file input)\n root.ref.label.click();\n };\n\n // attach events\n label.addEventListener('keydown', root.ref.handleKeyDown);\n root.element.addEventListener('click', root.ref.handleClick);\n\n // update\n updateLabelValue(label, props.caption);\n\n // add!\n root.appendChild(label);\n root.ref.label = label;\n };\n\n var updateLabelValue = function updateLabelValue(label, value) {\n label.innerHTML = value;\n var clickable = label.querySelector('.filepond--label-action');\n if (clickable) {\n attr(clickable, 'tabindex', '0');\n }\n return value;\n };\n\n var dropLabel = createView({\n name: 'drop-label',\n ignoreRect: true,\n create: create$b,\n destroy: function destroy(_ref2) {\n var root = _ref2.root;\n root.ref.label.addEventListener('keydown', root.ref.handleKeyDown);\n root.element.removeEventListener('click', root.ref.handleClick);\n },\n write: createRoute({\n DID_SET_LABEL_IDLE: function DID_SET_LABEL_IDLE(_ref3) {\n var root = _ref3.root,\n action = _ref3.action;\n updateLabelValue(root.ref.label, action.value);\n },\n }),\n\n mixins: {\n styles: ['opacity', 'translateX', 'translateY'],\n animations: {\n opacity: { type: 'tween', duration: 150 },\n translateX: 'spring',\n translateY: 'spring',\n },\n },\n });\n\n var blob = createView({\n name: 'drip-blob',\n ignoreRect: true,\n mixins: {\n styles: ['translateX', 'translateY', 'scaleX', 'scaleY', 'opacity'],\n animations: {\n scaleX: 'spring',\n scaleY: 'spring',\n translateX: 'spring',\n translateY: 'spring',\n opacity: { type: 'tween', duration: 250 },\n },\n },\n });\n\n var addBlob = function addBlob(_ref) {\n var root = _ref.root;\n var centerX = root.rect.element.width * 0.5;\n var centerY = root.rect.element.height * 0.5;\n\n root.ref.blob = root.appendChildView(\n root.createChildView(blob, {\n opacity: 0,\n scaleX: 2.5,\n scaleY: 2.5,\n translateX: centerX,\n translateY: centerY,\n })\n );\n };\n\n var moveBlob = function moveBlob(_ref2) {\n var root = _ref2.root,\n action = _ref2.action;\n if (!root.ref.blob) {\n addBlob({ root: root });\n return;\n }\n\n root.ref.blob.translateX = action.position.scopeLeft;\n root.ref.blob.translateY = action.position.scopeTop;\n root.ref.blob.scaleX = 1;\n root.ref.blob.scaleY = 1;\n root.ref.blob.opacity = 1;\n };\n\n var hideBlob = function hideBlob(_ref3) {\n var root = _ref3.root;\n if (!root.ref.blob) {\n return;\n }\n root.ref.blob.opacity = 0;\n };\n\n var explodeBlob = function explodeBlob(_ref4) {\n var root = _ref4.root;\n if (!root.ref.blob) {\n return;\n }\n root.ref.blob.scaleX = 2.5;\n root.ref.blob.scaleY = 2.5;\n root.ref.blob.opacity = 0;\n };\n\n var write$7 = function write(_ref5) {\n var root = _ref5.root,\n props = _ref5.props,\n actions = _ref5.actions;\n route$4({ root: root, props: props, actions: actions });\n var blob = root.ref.blob;\n\n if (actions.length === 0 && blob && blob.opacity === 0) {\n root.removeChildView(blob);\n root.ref.blob = null;\n }\n };\n\n var route$4 = createRoute({\n DID_DRAG: moveBlob,\n DID_DROP: explodeBlob,\n DID_END_DRAG: hideBlob,\n });\n\n var drip = createView({\n ignoreRect: true,\n ignoreRectUpdate: true,\n name: 'drip',\n write: write$7,\n });\n\n var setInputFiles = function setInputFiles(element, files) {\n try {\n // Create a DataTransfer instance and add a newly created file\n var dataTransfer = new DataTransfer();\n files.forEach(function(file) {\n if (file instanceof File) {\n dataTransfer.items.add(file);\n } else {\n dataTransfer.items.add(\n new File([file], file.name, {\n type: file.type,\n })\n );\n }\n });\n\n // Assign the DataTransfer files list to the file input\n element.files = dataTransfer.files;\n } catch (err) {\n return false;\n }\n return true;\n };\n\n var create$c = function create(_ref) {\n var root = _ref.root;\n return (root.ref.fields = {});\n };\n\n var getField = function getField(root, id) {\n return root.ref.fields[id];\n };\n\n var syncFieldPositionsWithItems = function syncFieldPositionsWithItems(root) {\n root.query('GET_ACTIVE_ITEMS').forEach(function(item) {\n if (!root.ref.fields[item.id]) return;\n root.element.appendChild(root.ref.fields[item.id]);\n });\n };\n\n var didReorderItems = function didReorderItems(_ref2) {\n var root = _ref2.root;\n return syncFieldPositionsWithItems(root);\n };\n\n var didAddItem = function didAddItem(_ref3) {\n var root = _ref3.root,\n action = _ref3.action;\n var fileItem = root.query('GET_ITEM', action.id);\n var isLocalFile = fileItem.origin === FileOrigin.LOCAL;\n var shouldUseFileInput = !isLocalFile && root.query('SHOULD_UPDATE_FILE_INPUT');\n var dataContainer = createElement$1('input');\n dataContainer.type = shouldUseFileInput ? 'file' : 'hidden';\n dataContainer.name = root.query('GET_NAME');\n dataContainer.disabled = root.query('GET_DISABLED');\n root.ref.fields[action.id] = dataContainer;\n syncFieldPositionsWithItems(root);\n };\n\n var didLoadItem$1 = function didLoadItem(_ref4) {\n var root = _ref4.root,\n action = _ref4.action;\n var field = getField(root, action.id);\n if (!field) return;\n\n // store server ref in hidden input\n if (action.serverFileReference !== null) field.value = action.serverFileReference;\n\n // store file item in file input\n if (!root.query('SHOULD_UPDATE_FILE_INPUT')) return;\n\n var fileItem = root.query('GET_ITEM', action.id);\n setInputFiles(field, [fileItem.file]);\n };\n\n var didPrepareOutput = function didPrepareOutput(_ref5) {\n var root = _ref5.root,\n action = _ref5.action;\n // this timeout pushes the handler after 'load'\n if (!root.query('SHOULD_UPDATE_FILE_INPUT')) return;\n setTimeout(function() {\n var field = getField(root, action.id);\n if (!field) return;\n setInputFiles(field, [action.file]);\n }, 0);\n };\n\n var didSetDisabled = function didSetDisabled(_ref6) {\n var root = _ref6.root;\n root.element.disabled = root.query('GET_DISABLED');\n };\n\n var didRemoveItem = function didRemoveItem(_ref7) {\n var root = _ref7.root,\n action = _ref7.action;\n var field = getField(root, action.id);\n if (!field) return;\n if (field.parentNode) field.parentNode.removeChild(field);\n delete root.ref.fields[action.id];\n };\n\n // only runs for server files (so doesn't deal with file input)\n var didDefineValue = function didDefineValue(_ref8) {\n var root = _ref8.root,\n action = _ref8.action;\n var field = getField(root, action.id);\n if (!field) return;\n if (action.value === null) {\n // clear field value\n field.removeAttribute('value');\n } else {\n // set field value\n field.value = action.value;\n }\n syncFieldPositionsWithItems(root);\n };\n\n var write$8 = createRoute({\n DID_SET_DISABLED: didSetDisabled,\n DID_ADD_ITEM: didAddItem,\n DID_LOAD_ITEM: didLoadItem$1,\n DID_REMOVE_ITEM: didRemoveItem,\n DID_DEFINE_VALUE: didDefineValue,\n DID_PREPARE_OUTPUT: didPrepareOutput,\n DID_REORDER_ITEMS: didReorderItems,\n DID_SORT_ITEMS: didReorderItems,\n });\n\n var data = createView({\n tag: 'fieldset',\n name: 'data',\n create: create$c,\n write: write$8,\n ignoreRect: true,\n });\n\n var getRootNode = function getRootNode(element) {\n return 'getRootNode' in element ? element.getRootNode() : document;\n };\n\n var images = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'tiff'];\n var text$1 = ['css', 'csv', 'html', 'txt'];\n var map = {\n zip: 'zip|compressed',\n epub: 'application/epub+zip',\n };\n\n var guesstimateMimeType = function guesstimateMimeType() {\n var extension = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n extension = extension.toLowerCase();\n if (images.includes(extension)) {\n return (\n 'image/' +\n (extension === 'jpg' ? 'jpeg' : extension === 'svg' ? 'svg+xml' : extension)\n );\n }\n if (text$1.includes(extension)) {\n return 'text/' + extension;\n }\n\n return map[extension] || '';\n };\n\n var requestDataTransferItems = function requestDataTransferItems(dataTransfer) {\n return new Promise(function(resolve, reject) {\n // try to get links from transfer, if found we'll exit immediately (unless a file is in the dataTransfer as well, this is because Firefox could represent the file as a URL and a file object at the same time)\n var links = getLinks(dataTransfer);\n if (links.length && !hasFiles(dataTransfer)) {\n return resolve(links);\n }\n // try to get files from the transfer\n getFiles(dataTransfer).then(resolve);\n });\n };\n\n /**\n * Test if datatransfer has files\n */\n var hasFiles = function hasFiles(dataTransfer) {\n if (dataTransfer.files) return dataTransfer.files.length > 0;\n return false;\n };\n\n /**\n * Extracts files from a DataTransfer object\n */\n var getFiles = function getFiles(dataTransfer) {\n return new Promise(function(resolve, reject) {\n // get the transfer items as promises\n var promisedFiles = (dataTransfer.items ? Array.from(dataTransfer.items) : [])\n // only keep file system items (files and directories)\n .filter(function(item) {\n return isFileSystemItem(item);\n })\n\n // map each item to promise\n .map(function(item) {\n return getFilesFromItem(item);\n });\n\n // if is empty, see if we can extract some info from the files property as a fallback\n if (!promisedFiles.length) {\n // TODO: test for directories (should not be allowed)\n // Use FileReader, problem is that the files property gets lost in the process\n resolve(dataTransfer.files ? Array.from(dataTransfer.files) : []);\n return;\n }\n\n // done!\n Promise.all(promisedFiles)\n .then(function(returnedFileGroups) {\n // flatten groups\n var files = [];\n returnedFileGroups.forEach(function(group) {\n files.push.apply(files, group);\n });\n\n // done (filter out empty files)!\n resolve(\n files\n .filter(function(file) {\n return file;\n })\n .map(function(file) {\n if (!file._relativePath)\n file._relativePath = file.webkitRelativePath;\n return file;\n })\n );\n })\n .catch(console.error);\n });\n };\n\n var isFileSystemItem = function isFileSystemItem(item) {\n if (isEntry(item)) {\n var entry = getAsEntry(item);\n if (entry) {\n return entry.isFile || entry.isDirectory;\n }\n }\n return item.kind === 'file';\n };\n\n var getFilesFromItem = function getFilesFromItem(item) {\n return new Promise(function(resolve, reject) {\n if (isDirectoryEntry(item)) {\n getFilesInDirectory(getAsEntry(item))\n .then(resolve)\n .catch(reject);\n return;\n }\n\n resolve([item.getAsFile()]);\n });\n };\n\n var getFilesInDirectory = function getFilesInDirectory(entry) {\n return new Promise(function(resolve, reject) {\n var files = [];\n\n // the total entries to read\n var dirCounter = 0;\n var fileCounter = 0;\n\n var resolveIfDone = function resolveIfDone() {\n if (fileCounter === 0 && dirCounter === 0) {\n resolve(files);\n }\n };\n\n // the recursive function\n var readEntries = function readEntries(dirEntry) {\n dirCounter++;\n\n var directoryReader = dirEntry.createReader();\n\n // directories are returned in batches, we need to process all batches before we're done\n var readBatch = function readBatch() {\n directoryReader.readEntries(function(entries) {\n if (entries.length === 0) {\n dirCounter--;\n resolveIfDone();\n return;\n }\n\n entries.forEach(function(entry) {\n // recursively read more directories\n if (entry.isDirectory) {\n readEntries(entry);\n } else {\n // read as file\n fileCounter++;\n\n entry.file(function(file) {\n var correctedFile = correctMissingFileType(file);\n if (entry.fullPath)\n correctedFile._relativePath = entry.fullPath;\n files.push(correctedFile);\n fileCounter--;\n resolveIfDone();\n });\n }\n });\n\n // try to get next batch of files\n readBatch();\n }, reject);\n };\n\n // read first batch of files\n readBatch();\n };\n\n // go!\n readEntries(entry);\n });\n };\n\n var correctMissingFileType = function correctMissingFileType(file) {\n if (file.type.length) return file;\n var date = file.lastModifiedDate;\n var name = file.name;\n var type = guesstimateMimeType(getExtensionFromFilename(file.name));\n if (!type.length) return file;\n file = file.slice(0, file.size, type);\n file.name = name;\n file.lastModifiedDate = date;\n return file;\n };\n\n var isDirectoryEntry = function isDirectoryEntry(item) {\n return isEntry(item) && (getAsEntry(item) || {}).isDirectory;\n };\n\n var isEntry = function isEntry(item) {\n return 'webkitGetAsEntry' in item;\n };\n\n var getAsEntry = function getAsEntry(item) {\n return item.webkitGetAsEntry();\n };\n\n /**\n * Extracts links from a DataTransfer object\n */\n var getLinks = function getLinks(dataTransfer) {\n var links = [];\n try {\n // look in meta data property\n links = getLinksFromTransferMetaData(dataTransfer);\n if (links.length) {\n return links;\n }\n links = getLinksFromTransferURLData(dataTransfer);\n } catch (e) {\n // nope nope nope (probably IE trouble)\n }\n return links;\n };\n\n var getLinksFromTransferURLData = function getLinksFromTransferURLData(dataTransfer) {\n var data = dataTransfer.getData('url');\n if (typeof data === 'string' && data.length) {\n return [data];\n }\n return [];\n };\n\n var getLinksFromTransferMetaData = function getLinksFromTransferMetaData(dataTransfer) {\n var data = dataTransfer.getData('text/html');\n if (typeof data === 'string' && data.length) {\n var matches = data.match(/src\\s*=\\s*\"(.+?)\"/);\n if (matches) {\n return [matches[1]];\n }\n }\n return [];\n };\n\n var dragNDropObservers = [];\n\n var eventPosition = function eventPosition(e) {\n return {\n pageLeft: e.pageX,\n pageTop: e.pageY,\n scopeLeft: e.offsetX || e.layerX,\n scopeTop: e.offsetY || e.layerY,\n };\n };\n\n var createDragNDropClient = function createDragNDropClient(\n element,\n scopeToObserve,\n filterElement\n ) {\n var observer = getDragNDropObserver(scopeToObserve);\n\n var client = {\n element: element,\n filterElement: filterElement,\n state: null,\n ondrop: function ondrop() {},\n onenter: function onenter() {},\n ondrag: function ondrag() {},\n onexit: function onexit() {},\n onload: function onload() {},\n allowdrop: function allowdrop() {},\n };\n\n client.destroy = observer.addListener(client);\n\n return client;\n };\n\n var getDragNDropObserver = function getDragNDropObserver(element) {\n // see if already exists, if so, return\n var observer = dragNDropObservers.find(function(item) {\n return item.element === element;\n });\n if (observer) {\n return observer;\n }\n\n // create new observer, does not yet exist for this element\n var newObserver = createDragNDropObserver(element);\n dragNDropObservers.push(newObserver);\n return newObserver;\n };\n\n var createDragNDropObserver = function createDragNDropObserver(element) {\n var clients = [];\n\n var routes = {\n dragenter: dragenter,\n dragover: dragover,\n dragleave: dragleave,\n drop: drop,\n };\n\n var handlers = {};\n\n forin(routes, function(event, createHandler) {\n handlers[event] = createHandler(element, clients);\n element.addEventListener(event, handlers[event], false);\n });\n\n var observer = {\n element: element,\n addListener: function addListener(client) {\n // add as client\n clients.push(client);\n\n // return removeListener function\n return function() {\n // remove client\n clients.splice(clients.indexOf(client), 1);\n\n // if no more clients, clean up observer\n if (clients.length === 0) {\n dragNDropObservers.splice(dragNDropObservers.indexOf(observer), 1);\n\n forin(routes, function(event) {\n element.removeEventListener(event, handlers[event], false);\n });\n }\n };\n },\n };\n\n return observer;\n };\n\n var elementFromPoint = function elementFromPoint(root, point) {\n if (!('elementFromPoint' in root)) {\n root = document;\n }\n return root.elementFromPoint(point.x, point.y);\n };\n\n var isEventTarget = function isEventTarget(e, target) {\n // get root\n var root = getRootNode(target);\n\n // get element at position\n // if root is not actual shadow DOM and does not have elementFromPoint method, use the one on document\n var elementAtPosition = elementFromPoint(root, {\n x: e.pageX - window.pageXOffset,\n y: e.pageY - window.pageYOffset,\n });\n\n // test if target is the element or if one of its children is\n return elementAtPosition === target || target.contains(elementAtPosition);\n };\n\n var initialTarget = null;\n\n var setDropEffect = function setDropEffect(dataTransfer, effect) {\n // is in try catch as IE11 will throw error if not\n try {\n dataTransfer.dropEffect = effect;\n } catch (e) {}\n };\n\n var dragenter = function dragenter(root, clients) {\n return function(e) {\n e.preventDefault();\n\n initialTarget = e.target;\n\n clients.forEach(function(client) {\n var element = client.element,\n onenter = client.onenter;\n\n if (isEventTarget(e, element)) {\n client.state = 'enter';\n\n // fire enter event\n onenter(eventPosition(e));\n }\n });\n };\n };\n\n var dragover = function dragover(root, clients) {\n return function(e) {\n e.preventDefault();\n\n var dataTransfer = e.dataTransfer;\n\n requestDataTransferItems(dataTransfer).then(function(items) {\n var overDropTarget = false;\n\n clients.some(function(client) {\n var filterElement = client.filterElement,\n element = client.element,\n onenter = client.onenter,\n onexit = client.onexit,\n ondrag = client.ondrag,\n allowdrop = client.allowdrop;\n\n // by default we can drop\n setDropEffect(dataTransfer, 'copy');\n\n // allow transfer of these items\n var allowsTransfer = allowdrop(items);\n\n // only used when can be dropped on page\n if (!allowsTransfer) {\n setDropEffect(dataTransfer, 'none');\n return;\n }\n\n // targetting this client\n if (isEventTarget(e, element)) {\n overDropTarget = true;\n\n // had no previous state, means we are entering this client\n if (client.state === null) {\n client.state = 'enter';\n onenter(eventPosition(e));\n return;\n }\n\n // now over element (no matter if it allows the drop or not)\n client.state = 'over';\n\n // needs to allow transfer\n if (filterElement && !allowsTransfer) {\n setDropEffect(dataTransfer, 'none');\n return;\n }\n\n // dragging\n ondrag(eventPosition(e));\n } else {\n // should be over an element to drop\n if (filterElement && !overDropTarget) {\n setDropEffect(dataTransfer, 'none');\n }\n\n // might have just left this client?\n if (client.state) {\n client.state = null;\n onexit(eventPosition(e));\n }\n }\n });\n });\n };\n };\n\n var drop = function drop(root, clients) {\n return function(e) {\n e.preventDefault();\n\n var dataTransfer = e.dataTransfer;\n\n requestDataTransferItems(dataTransfer).then(function(items) {\n clients.forEach(function(client) {\n var filterElement = client.filterElement,\n element = client.element,\n ondrop = client.ondrop,\n onexit = client.onexit,\n allowdrop = client.allowdrop;\n\n client.state = null;\n\n // if we're filtering on element we need to be over the element to drop\n if (filterElement && !isEventTarget(e, element)) return;\n\n // no transfer for this client\n if (!allowdrop(items)) return onexit(eventPosition(e));\n\n // we can drop these items on this client\n ondrop(eventPosition(e), items);\n });\n });\n };\n };\n\n var dragleave = function dragleave(root, clients) {\n return function(e) {\n if (initialTarget !== e.target) {\n return;\n }\n\n clients.forEach(function(client) {\n var onexit = client.onexit;\n\n client.state = null;\n\n onexit(eventPosition(e));\n });\n };\n };\n\n var createHopper = function createHopper(scope, validateItems, options) {\n // is now hopper scope\n scope.classList.add('filepond--hopper');\n\n // shortcuts\n var catchesDropsOnPage = options.catchesDropsOnPage,\n requiresDropOnElement = options.requiresDropOnElement,\n _options$filterItems = options.filterItems,\n filterItems =\n _options$filterItems === void 0\n ? function(items) {\n return items;\n }\n : _options$filterItems;\n\n // create a dnd client\n var client = createDragNDropClient(\n scope,\n catchesDropsOnPage ? document.documentElement : scope,\n requiresDropOnElement\n );\n\n // current client state\n var lastState = '';\n var currentState = '';\n\n // determines if a file may be dropped\n client.allowdrop = function(items) {\n // TODO: if we can, throw error to indicate the items cannot by dropped\n\n return validateItems(filterItems(items));\n };\n\n client.ondrop = function(position, items) {\n var filteredItems = filterItems(items);\n\n if (!validateItems(filteredItems)) {\n api.ondragend(position);\n return;\n }\n\n currentState = 'drag-drop';\n\n api.onload(filteredItems, position);\n };\n\n client.ondrag = function(position) {\n api.ondrag(position);\n };\n\n client.onenter = function(position) {\n currentState = 'drag-over';\n\n api.ondragstart(position);\n };\n\n client.onexit = function(position) {\n currentState = 'drag-exit';\n\n api.ondragend(position);\n };\n\n var api = {\n updateHopperState: function updateHopperState() {\n if (lastState !== currentState) {\n scope.dataset.hopperState = currentState;\n lastState = currentState;\n }\n },\n onload: function onload() {},\n ondragstart: function ondragstart() {},\n ondrag: function ondrag() {},\n ondragend: function ondragend() {},\n destroy: function destroy() {\n // destroy client\n client.destroy();\n },\n };\n\n return api;\n };\n\n var listening = false;\n var listeners$1 = [];\n\n var handlePaste = function handlePaste(e) {\n // if is pasting in input or textarea and the target is outside of a filepond scope, ignore\n var activeEl = document.activeElement;\n if (activeEl && /textarea|input/i.test(activeEl.nodeName)) {\n // test textarea or input is contained in filepond root\n var inScope = false;\n var element = activeEl;\n while (element !== document.body) {\n if (element.classList.contains('filepond--root')) {\n inScope = true;\n break;\n }\n element = element.parentNode;\n }\n\n if (!inScope) return;\n }\n\n requestDataTransferItems(e.clipboardData).then(function(files) {\n // no files received\n if (!files.length) {\n return;\n }\n\n // notify listeners of received files\n listeners$1.forEach(function(listener) {\n return listener(files);\n });\n });\n };\n\n var listen = function listen(cb) {\n // can't add twice\n if (listeners$1.includes(cb)) {\n return;\n }\n\n // add initial listener\n listeners$1.push(cb);\n\n // setup paste listener for entire page\n if (listening) {\n return;\n }\n\n listening = true;\n document.addEventListener('paste', handlePaste);\n };\n\n var unlisten = function unlisten(listener) {\n arrayRemove(listeners$1, listeners$1.indexOf(listener));\n\n // clean up\n if (listeners$1.length === 0) {\n document.removeEventListener('paste', handlePaste);\n listening = false;\n }\n };\n\n var createPaster = function createPaster() {\n var cb = function cb(files) {\n api.onload(files);\n };\n\n var api = {\n destroy: function destroy() {\n unlisten(cb);\n },\n onload: function onload() {},\n };\n\n listen(cb);\n\n return api;\n };\n\n /**\n * Creates the file view\n */\n var create$d = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n root.element.id = 'filepond--assistant-' + props.id;\n attr(root.element, 'role', 'status');\n attr(root.element, 'aria-live', 'polite');\n attr(root.element, 'aria-relevant', 'additions');\n };\n\n var addFilesNotificationTimeout = null;\n var notificationClearTimeout = null;\n\n var filenames = [];\n\n var assist = function assist(root, message) {\n root.element.textContent = message;\n };\n\n var clear$1 = function clear(root) {\n root.element.textContent = '';\n };\n\n var listModified = function listModified(root, filename, label) {\n var total = root.query('GET_TOTAL_ITEMS');\n assist(\n root,\n label +\n ' ' +\n filename +\n ', ' +\n total +\n ' ' +\n (total === 1\n ? root.query('GET_LABEL_FILE_COUNT_SINGULAR')\n : root.query('GET_LABEL_FILE_COUNT_PLURAL'))\n );\n\n // clear group after set amount of time so the status is not read twice\n clearTimeout(notificationClearTimeout);\n notificationClearTimeout = setTimeout(function() {\n clear$1(root);\n }, 1500);\n };\n\n var isUsingFilePond = function isUsingFilePond(root) {\n return root.element.parentNode.contains(document.activeElement);\n };\n\n var itemAdded = function itemAdded(_ref2) {\n var root = _ref2.root,\n action = _ref2.action;\n if (!isUsingFilePond(root)) {\n return;\n }\n\n root.element.textContent = '';\n var item = root.query('GET_ITEM', action.id);\n filenames.push(item.filename);\n\n clearTimeout(addFilesNotificationTimeout);\n addFilesNotificationTimeout = setTimeout(function() {\n listModified(root, filenames.join(', '), root.query('GET_LABEL_FILE_ADDED'));\n\n filenames.length = 0;\n }, 750);\n };\n\n var itemRemoved = function itemRemoved(_ref3) {\n var root = _ref3.root,\n action = _ref3.action;\n if (!isUsingFilePond(root)) {\n return;\n }\n\n var item = action.item;\n listModified(root, item.filename, root.query('GET_LABEL_FILE_REMOVED'));\n };\n\n var itemProcessed = function itemProcessed(_ref4) {\n var root = _ref4.root,\n action = _ref4.action;\n // will also notify the user when FilePond is not being used, as the user might be occupied with other activities while uploading a file\n\n var item = root.query('GET_ITEM', action.id);\n var filename = item.filename;\n var label = root.query('GET_LABEL_FILE_PROCESSING_COMPLETE');\n\n assist(root, filename + ' ' + label);\n };\n\n var itemProcessedUndo = function itemProcessedUndo(_ref5) {\n var root = _ref5.root,\n action = _ref5.action;\n var item = root.query('GET_ITEM', action.id);\n var filename = item.filename;\n var label = root.query('GET_LABEL_FILE_PROCESSING_ABORTED');\n\n assist(root, filename + ' ' + label);\n };\n\n var itemError = function itemError(_ref6) {\n var root = _ref6.root,\n action = _ref6.action;\n var item = root.query('GET_ITEM', action.id);\n var filename = item.filename;\n\n // will also notify the user when FilePond is not being used, as the user might be occupied with other activities while uploading a file\n\n assist(root, action.status.main + ' ' + filename + ' ' + action.status.sub);\n };\n\n var assistant = createView({\n create: create$d,\n ignoreRect: true,\n ignoreRectUpdate: true,\n write: createRoute({\n DID_LOAD_ITEM: itemAdded,\n DID_REMOVE_ITEM: itemRemoved,\n DID_COMPLETE_ITEM_PROCESSING: itemProcessed,\n\n DID_ABORT_ITEM_PROCESSING: itemProcessedUndo,\n DID_REVERT_ITEM_PROCESSING: itemProcessedUndo,\n\n DID_THROW_ITEM_REMOVE_ERROR: itemError,\n DID_THROW_ITEM_LOAD_ERROR: itemError,\n DID_THROW_ITEM_INVALID: itemError,\n DID_THROW_ITEM_PROCESSING_ERROR: itemError,\n }),\n\n tag: 'span',\n name: 'assistant',\n });\n\n var toCamels = function toCamels(string) {\n var separator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '-';\n return string.replace(new RegExp(separator + '.', 'g'), function(sub) {\n return sub.charAt(1).toUpperCase();\n });\n };\n\n var debounce = function debounce(func) {\n var interval = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 16;\n var immidiateOnly =\n arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;\n var last = Date.now();\n var timeout = null;\n\n return function() {\n for (\n var _len = arguments.length, args = new Array(_len), _key = 0;\n _key < _len;\n _key++\n ) {\n args[_key] = arguments[_key];\n }\n clearTimeout(timeout);\n\n var dist = Date.now() - last;\n\n var fn = function fn() {\n last = Date.now();\n func.apply(void 0, args);\n };\n\n if (dist < interval) {\n // we need to delay by the difference between interval and dist\n // for example: if distance is 10 ms and interval is 16 ms,\n // we need to wait an additional 6ms before calling the function)\n if (!immidiateOnly) {\n timeout = setTimeout(fn, interval - dist);\n }\n } else {\n // go!\n fn();\n }\n };\n };\n\n var MAX_FILES_LIMIT = 1000000;\n\n var prevent = function prevent(e) {\n return e.preventDefault();\n };\n\n var create$e = function create(_ref) {\n var root = _ref.root,\n props = _ref.props;\n // Add id\n var id = root.query('GET_ID');\n if (id) {\n root.element.id = id;\n }\n\n // Add className\n var className = root.query('GET_CLASS_NAME');\n if (className) {\n className\n .split(' ')\n .filter(function(name) {\n return name.length;\n })\n .forEach(function(name) {\n root.element.classList.add(name);\n });\n }\n\n // Field label\n root.ref.label = root.appendChildView(\n root.createChildView(\n dropLabel,\n Object.assign({}, props, {\n translateY: null,\n caption: root.query('GET_LABEL_IDLE'),\n })\n )\n );\n\n // List of items\n root.ref.list = root.appendChildView(\n root.createChildView(listScroller, { translateY: null })\n );\n\n // Background panel\n root.ref.panel = root.appendChildView(root.createChildView(panel, { name: 'panel-root' }));\n\n // Assistant notifies assistive tech when content changes\n root.ref.assistant = root.appendChildView(\n root.createChildView(assistant, Object.assign({}, props))\n );\n\n // Data\n root.ref.data = root.appendChildView(root.createChildView(data, Object.assign({}, props)));\n\n // Measure (tests if fixed height was set)\n // DOCTYPE needs to be set for this to work\n root.ref.measure = createElement$1('div');\n root.ref.measure.style.height = '100%';\n root.element.appendChild(root.ref.measure);\n\n // information on the root height or fixed height status\n root.ref.bounds = null;\n\n // apply initial style properties\n root.query('GET_STYLES')\n .filter(function(style) {\n return !isEmpty(style.value);\n })\n .map(function(_ref2) {\n var name = _ref2.name,\n value = _ref2.value;\n root.element.dataset[name] = value;\n });\n\n // determine if width changed\n root.ref.widthPrevious = null;\n root.ref.widthUpdated = debounce(function() {\n root.ref.updateHistory = [];\n root.dispatch('DID_RESIZE_ROOT');\n }, 250);\n\n // history of updates\n root.ref.previousAspectRatio = null;\n root.ref.updateHistory = [];\n\n // prevent scrolling and zooming on iOS (only if supports pointer events, for then we can enable reorder)\n var canHover = window.matchMedia('(pointer: fine) and (hover: hover)').matches;\n var hasPointerEvents = 'PointerEvent' in window;\n if (root.query('GET_ALLOW_REORDER') && hasPointerEvents && !canHover) {\n root.element.addEventListener('touchmove', prevent, { passive: false });\n root.element.addEventListener('gesturestart', prevent);\n }\n\n // add credits\n var credits = root.query('GET_CREDITS');\n var hasCredits = credits.length === 2;\n if (hasCredits) {\n var frag = document.createElement('a');\n frag.className = 'filepond--credits';\n frag.setAttribute('aria-hidden', 'true');\n frag.href = credits[0];\n frag.tabindex = -1;\n frag.target = '_blank';\n frag.rel = 'noopener noreferrer';\n frag.textContent = credits[1];\n root.element.appendChild(frag);\n root.ref.credits = frag;\n }\n };\n\n var write$9 = function write(_ref3) {\n var root = _ref3.root,\n props = _ref3.props,\n actions = _ref3.actions;\n // route actions\n route$5({ root: root, props: props, actions: actions });\n\n // apply style properties\n actions\n .filter(function(action) {\n return /^DID_SET_STYLE_/.test(action.type);\n })\n .filter(function(action) {\n return !isEmpty(action.data.value);\n })\n .map(function(_ref4) {\n var type = _ref4.type,\n data = _ref4.data;\n var name = toCamels(type.substring(8).toLowerCase(), '_');\n root.element.dataset[name] = data.value;\n root.invalidateLayout();\n });\n\n if (root.rect.element.hidden) return;\n\n if (root.rect.element.width !== root.ref.widthPrevious) {\n root.ref.widthPrevious = root.rect.element.width;\n root.ref.widthUpdated();\n }\n\n // get box bounds, we do this only once\n var bounds = root.ref.bounds;\n if (!bounds) {\n bounds = root.ref.bounds = calculateRootBoundingBoxHeight(root);\n\n // destroy measure element\n root.element.removeChild(root.ref.measure);\n root.ref.measure = null;\n }\n\n // get quick references to various high level parts of the upload tool\n var _root$ref = root.ref,\n hopper = _root$ref.hopper,\n label = _root$ref.label,\n list = _root$ref.list,\n panel = _root$ref.panel;\n\n // sets correct state to hopper scope\n if (hopper) {\n hopper.updateHopperState();\n }\n\n // bool to indicate if we're full or not\n var aspectRatio = root.query('GET_PANEL_ASPECT_RATIO');\n var isMultiItem = root.query('GET_ALLOW_MULTIPLE');\n var totalItems = root.query('GET_TOTAL_ITEMS');\n var maxItems = isMultiItem ? root.query('GET_MAX_FILES') || MAX_FILES_LIMIT : 1;\n var atMaxCapacity = totalItems === maxItems;\n\n // action used to add item\n var addAction = actions.find(function(action) {\n return action.type === 'DID_ADD_ITEM';\n });\n\n // if reached max capacity and we've just reached it\n if (atMaxCapacity && addAction) {\n // get interaction type\n var interactionMethod = addAction.data.interactionMethod;\n\n // hide label\n label.opacity = 0;\n\n if (isMultiItem) {\n label.translateY = -40;\n } else {\n if (interactionMethod === InteractionMethod.API) {\n label.translateX = 40;\n } else if (interactionMethod === InteractionMethod.BROWSE) {\n label.translateY = 40;\n } else {\n label.translateY = 30;\n }\n }\n } else if (!atMaxCapacity) {\n label.opacity = 1;\n label.translateX = 0;\n label.translateY = 0;\n }\n\n var listItemMargin = calculateListItemMargin(root);\n\n var listHeight = calculateListHeight(root);\n\n var labelHeight = label.rect.element.height;\n var currentLabelHeight = !isMultiItem || atMaxCapacity ? 0 : labelHeight;\n\n var listMarginTop = atMaxCapacity ? list.rect.element.marginTop : 0;\n var listMarginBottom = totalItems === 0 ? 0 : list.rect.element.marginBottom;\n\n var visualHeight =\n currentLabelHeight + listMarginTop + listHeight.visual + listMarginBottom;\n var boundsHeight =\n currentLabelHeight + listMarginTop + listHeight.bounds + listMarginBottom;\n\n // link list to label bottom position\n list.translateY =\n Math.max(0, currentLabelHeight - list.rect.element.marginTop) - listItemMargin.top;\n\n if (aspectRatio) {\n // fixed aspect ratio\n\n // calculate height based on width\n var width = root.rect.element.width;\n var height = width * aspectRatio;\n\n // clear history if aspect ratio has changed\n if (aspectRatio !== root.ref.previousAspectRatio) {\n root.ref.previousAspectRatio = aspectRatio;\n root.ref.updateHistory = [];\n }\n\n // remember this width\n var history = root.ref.updateHistory;\n history.push(width);\n\n var MAX_BOUNCES = 2;\n if (history.length > MAX_BOUNCES * 2) {\n var l = history.length;\n var bottom = l - 10;\n var bounces = 0;\n for (var i = l; i >= bottom; i--) {\n if (history[i] === history[i - 2]) {\n bounces++;\n }\n\n if (bounces >= MAX_BOUNCES) {\n // dont adjust height\n return;\n }\n }\n }\n\n // fix height of panel so it adheres to aspect ratio\n panel.scalable = false;\n panel.height = height;\n\n // available height for list\n var listAvailableHeight =\n // the height of the panel minus the label height\n height -\n currentLabelHeight -\n // the room we leave open between the end of the list and the panel bottom\n (listMarginBottom - listItemMargin.bottom) -\n // if we're full we need to leave some room between the top of the panel and the list\n (atMaxCapacity ? listMarginTop : 0);\n\n if (listHeight.visual > listAvailableHeight) {\n list.overflow = listAvailableHeight;\n } else {\n list.overflow = null;\n }\n\n // set container bounds (so pushes siblings downwards)\n root.height = height;\n } else if (bounds.fixedHeight) {\n // fixed height\n\n // fix height of panel\n panel.scalable = false;\n\n // available height for list\n var _listAvailableHeight =\n // the height of the panel minus the label height\n bounds.fixedHeight -\n currentLabelHeight -\n // the room we leave open between the end of the list and the panel bottom\n (listMarginBottom - listItemMargin.bottom) -\n // if we're full we need to leave some room between the top of the panel and the list\n (atMaxCapacity ? listMarginTop : 0);\n\n // set list height\n if (listHeight.visual > _listAvailableHeight) {\n list.overflow = _listAvailableHeight;\n } else {\n list.overflow = null;\n }\n\n // no need to set container bounds as these are handles by CSS fixed height\n } else if (bounds.cappedHeight) {\n // max-height\n\n // not a fixed height panel\n var isCappedHeight = visualHeight >= bounds.cappedHeight;\n var panelHeight = Math.min(bounds.cappedHeight, visualHeight);\n panel.scalable = true;\n panel.height = isCappedHeight\n ? panelHeight\n : panelHeight - listItemMargin.top - listItemMargin.bottom;\n\n // available height for list\n var _listAvailableHeight2 =\n // the height of the panel minus the label height\n panelHeight -\n currentLabelHeight -\n // the room we leave open between the end of the list and the panel bottom\n (listMarginBottom - listItemMargin.bottom) -\n // if we're full we need to leave some room between the top of the panel and the list\n (atMaxCapacity ? listMarginTop : 0);\n\n // set list height (if is overflowing)\n if (visualHeight > bounds.cappedHeight && listHeight.visual > _listAvailableHeight2) {\n list.overflow = _listAvailableHeight2;\n } else {\n list.overflow = null;\n }\n\n // set container bounds (so pushes siblings downwards)\n root.height = Math.min(\n bounds.cappedHeight,\n boundsHeight - listItemMargin.top - listItemMargin.bottom\n );\n } else {\n // flexible height\n\n // not a fixed height panel\n var itemMargin = totalItems > 0 ? listItemMargin.top + listItemMargin.bottom : 0;\n panel.scalable = true;\n panel.height = Math.max(labelHeight, visualHeight - itemMargin);\n\n // set container bounds (so pushes siblings downwards)\n root.height = Math.max(labelHeight, boundsHeight - itemMargin);\n }\n\n // move credits to bottom\n if (root.ref.credits && panel.heightCurrent)\n root.ref.credits.style.transform = 'translateY(' + panel.heightCurrent + 'px)';\n };\n\n var calculateListItemMargin = function calculateListItemMargin(root) {\n var item = root.ref.list.childViews[0].childViews[0];\n return item\n ? {\n top: item.rect.element.marginTop,\n bottom: item.rect.element.marginBottom,\n }\n : {\n top: 0,\n bottom: 0,\n };\n };\n\n var calculateListHeight = function calculateListHeight(root) {\n var visual = 0;\n var bounds = 0;\n\n // get file list reference\n var scrollList = root.ref.list;\n var itemList = scrollList.childViews[0];\n var visibleChildren = itemList.childViews.filter(function(child) {\n return child.rect.element.height;\n });\n var children = root\n .query('GET_ACTIVE_ITEMS')\n .map(function(item) {\n return visibleChildren.find(function(child) {\n return child.id === item.id;\n });\n })\n .filter(function(item) {\n return item;\n });\n\n // no children, done!\n if (children.length === 0) return { visual: visual, bounds: bounds };\n\n var horizontalSpace = itemList.rect.element.width;\n var dragIndex = getItemIndexByPosition(itemList, children, scrollList.dragCoordinates);\n\n var childRect = children[0].rect.element;\n\n var itemVerticalMargin = childRect.marginTop + childRect.marginBottom;\n var itemHorizontalMargin = childRect.marginLeft + childRect.marginRight;\n\n var itemWidth = childRect.width + itemHorizontalMargin;\n var itemHeight = childRect.height + itemVerticalMargin;\n\n var newItem = typeof dragIndex !== 'undefined' && dragIndex >= 0 ? 1 : 0;\n var removedItem = children.find(function(child) {\n return child.markedForRemoval && child.opacity < 0.45;\n })\n ? -1\n : 0;\n var verticalItemCount = children.length + newItem + removedItem;\n var itemsPerRow = getItemsPerRow(horizontalSpace, itemWidth);\n\n // stack\n if (itemsPerRow === 1) {\n children.forEach(function(item) {\n var height = item.rect.element.height + itemVerticalMargin;\n bounds += height;\n visual += height * item.opacity;\n });\n }\n // grid\n else {\n bounds = Math.ceil(verticalItemCount / itemsPerRow) * itemHeight;\n visual = bounds;\n }\n\n return { visual: visual, bounds: bounds };\n };\n\n var calculateRootBoundingBoxHeight = function calculateRootBoundingBoxHeight(root) {\n var height = root.ref.measureHeight || null;\n var cappedHeight = parseInt(root.style.maxHeight, 10) || null;\n var fixedHeight = height === 0 ? null : height;\n\n return {\n cappedHeight: cappedHeight,\n fixedHeight: fixedHeight,\n };\n };\n\n var exceedsMaxFiles = function exceedsMaxFiles(root, items) {\n var allowReplace = root.query('GET_ALLOW_REPLACE');\n var allowMultiple = root.query('GET_ALLOW_MULTIPLE');\n var totalItems = root.query('GET_TOTAL_ITEMS');\n var maxItems = root.query('GET_MAX_FILES');\n\n // total amount of items being dragged\n var totalBrowseItems = items.length;\n\n // if does not allow multiple items and dragging more than one item\n if (!allowMultiple && totalBrowseItems > 1) {\n root.dispatch('DID_THROW_MAX_FILES', {\n source: items,\n error: createResponse('warning', 0, 'Max files'),\n });\n\n return true;\n }\n\n // limit max items to one if not allowed to drop multiple items\n maxItems = allowMultiple ? maxItems : 1;\n\n if (!allowMultiple && allowReplace) {\n // There is only one item, so there is room to replace or add an item\n return false;\n }\n\n // no more room?\n var hasMaxItems = isInt(maxItems);\n if (hasMaxItems && totalItems + totalBrowseItems > maxItems) {\n root.dispatch('DID_THROW_MAX_FILES', {\n source: items,\n error: createResponse('warning', 0, 'Max files'),\n });\n\n return true;\n }\n\n return false;\n };\n\n var getDragIndex = function getDragIndex(list, children, position) {\n var itemList = list.childViews[0];\n return getItemIndexByPosition(itemList, children, {\n left: position.scopeLeft - itemList.rect.element.left,\n top:\n position.scopeTop -\n (list.rect.outer.top + list.rect.element.marginTop + list.rect.element.scrollTop),\n });\n };\n\n /**\n * Enable or disable file drop functionality\n */\n var toggleDrop = function toggleDrop(root) {\n var isAllowed = root.query('GET_ALLOW_DROP');\n var isDisabled = root.query('GET_DISABLED');\n var enabled = isAllowed && !isDisabled;\n if (enabled && !root.ref.hopper) {\n var hopper = createHopper(\n root.element,\n function(items) {\n // allow quick validation of dropped items\n var beforeDropFile =\n root.query('GET_BEFORE_DROP_FILE') ||\n function() {\n return true;\n };\n\n // all items should be validated by all filters as valid\n var dropValidation = root.query('GET_DROP_VALIDATION');\n return dropValidation\n ? items.every(function(item) {\n return (\n applyFilters('ALLOW_HOPPER_ITEM', item, {\n query: root.query,\n }).every(function(result) {\n return result === true;\n }) && beforeDropFile(item)\n );\n })\n : true;\n },\n {\n filterItems: function filterItems(items) {\n var ignoredFiles = root.query('GET_IGNORED_FILES');\n return items.filter(function(item) {\n if (isFile(item)) {\n return !ignoredFiles.includes(item.name.toLowerCase());\n }\n return true;\n });\n },\n catchesDropsOnPage: root.query('GET_DROP_ON_PAGE'),\n requiresDropOnElement: root.query('GET_DROP_ON_ELEMENT'),\n }\n );\n\n hopper.onload = function(items, position) {\n // get item children elements and sort based on list sort\n var list = root.ref.list.childViews[0];\n var visibleChildren = list.childViews.filter(function(child) {\n return child.rect.element.height;\n });\n var children = root\n .query('GET_ACTIVE_ITEMS')\n .map(function(item) {\n return visibleChildren.find(function(child) {\n return child.id === item.id;\n });\n })\n .filter(function(item) {\n return item;\n });\n\n applyFilterChain('ADD_ITEMS', items, { dispatch: root.dispatch }).then(function(\n queue\n ) {\n // these files don't fit so stop here\n if (exceedsMaxFiles(root, queue)) return false;\n\n // go\n root.dispatch('ADD_ITEMS', {\n items: queue,\n index: getDragIndex(root.ref.list, children, position),\n interactionMethod: InteractionMethod.DROP,\n });\n });\n\n root.dispatch('DID_DROP', { position: position });\n\n root.dispatch('DID_END_DRAG', { position: position });\n };\n\n hopper.ondragstart = function(position) {\n root.dispatch('DID_START_DRAG', { position: position });\n };\n\n hopper.ondrag = debounce(function(position) {\n root.dispatch('DID_DRAG', { position: position });\n });\n\n hopper.ondragend = function(position) {\n root.dispatch('DID_END_DRAG', { position: position });\n };\n\n root.ref.hopper = hopper;\n\n root.ref.drip = root.appendChildView(root.createChildView(drip));\n } else if (!enabled && root.ref.hopper) {\n root.ref.hopper.destroy();\n root.ref.hopper = null;\n root.removeChildView(root.ref.drip);\n }\n };\n\n /**\n * Enable or disable browse functionality\n */\n var toggleBrowse = function toggleBrowse(root, props) {\n var isAllowed = root.query('GET_ALLOW_BROWSE');\n var isDisabled = root.query('GET_DISABLED');\n var enabled = isAllowed && !isDisabled;\n if (enabled && !root.ref.browser) {\n root.ref.browser = root.appendChildView(\n root.createChildView(\n browser,\n Object.assign({}, props, {\n onload: function onload(items) {\n applyFilterChain('ADD_ITEMS', items, {\n dispatch: root.dispatch,\n }).then(function(queue) {\n // these files don't fit so stop here\n if (exceedsMaxFiles(root, queue)) return false;\n\n // add items!\n root.dispatch('ADD_ITEMS', {\n items: queue,\n index: -1,\n interactionMethod: InteractionMethod.BROWSE,\n });\n });\n },\n })\n ),\n\n 0\n );\n } else if (!enabled && root.ref.browser) {\n root.removeChildView(root.ref.browser);\n root.ref.browser = null;\n }\n };\n\n /**\n * Enable or disable paste functionality\n */\n var togglePaste = function togglePaste(root) {\n var isAllowed = root.query('GET_ALLOW_PASTE');\n var isDisabled = root.query('GET_DISABLED');\n var enabled = isAllowed && !isDisabled;\n if (enabled && !root.ref.paster) {\n root.ref.paster = createPaster();\n root.ref.paster.onload = function(items) {\n applyFilterChain('ADD_ITEMS', items, { dispatch: root.dispatch }).then(function(\n queue\n ) {\n // these files don't fit so stop here\n if (exceedsMaxFiles(root, queue)) return false;\n\n // add items!\n root.dispatch('ADD_ITEMS', {\n items: queue,\n index: -1,\n interactionMethod: InteractionMethod.PASTE,\n });\n });\n };\n } else if (!enabled && root.ref.paster) {\n root.ref.paster.destroy();\n root.ref.paster = null;\n }\n };\n\n /**\n * Route actions\n */\n var route$5 = createRoute({\n DID_SET_ALLOW_BROWSE: function DID_SET_ALLOW_BROWSE(_ref5) {\n var root = _ref5.root,\n props = _ref5.props;\n toggleBrowse(root, props);\n },\n DID_SET_ALLOW_DROP: function DID_SET_ALLOW_DROP(_ref6) {\n var root = _ref6.root;\n toggleDrop(root);\n },\n DID_SET_ALLOW_PASTE: function DID_SET_ALLOW_PASTE(_ref7) {\n var root = _ref7.root;\n togglePaste(root);\n },\n DID_SET_DISABLED: function DID_SET_DISABLED(_ref8) {\n var root = _ref8.root,\n props = _ref8.props;\n toggleDrop(root);\n togglePaste(root);\n toggleBrowse(root, props);\n var isDisabled = root.query('GET_DISABLED');\n if (isDisabled) {\n root.element.dataset.disabled = 'disabled';\n } else {\n // delete root.element.dataset.disabled; <= this does not work on iOS 10\n root.element.removeAttribute('data-disabled');\n }\n },\n });\n\n var root = createView({\n name: 'root',\n read: function read(_ref9) {\n var root = _ref9.root;\n if (root.ref.measure) {\n root.ref.measureHeight = root.ref.measure.offsetHeight;\n }\n },\n create: create$e,\n write: write$9,\n destroy: function destroy(_ref10) {\n var root = _ref10.root;\n if (root.ref.paster) {\n root.ref.paster.destroy();\n }\n if (root.ref.hopper) {\n root.ref.hopper.destroy();\n }\n root.element.removeEventListener('touchmove', prevent);\n root.element.removeEventListener('gesturestart', prevent);\n },\n mixins: {\n styles: ['height'],\n },\n });\n\n // creates the app\n var createApp = function createApp() {\n var initialOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // let element\n var originalElement = null;\n\n // get default options\n var defaultOptions = getOptions();\n\n // create the data store, this will contain all our app info\n var store = createStore(\n // initial state (should be serializable)\n createInitialState(defaultOptions),\n\n // queries\n [queries, createOptionQueries(defaultOptions)],\n\n // action handlers\n [actions, createOptionActions(defaultOptions)]\n );\n\n // set initial options\n store.dispatch('SET_OPTIONS', { options: initialOptions });\n\n // kick thread if visibility changes\n var visibilityHandler = function visibilityHandler() {\n if (document.hidden) return;\n store.dispatch('KICK');\n };\n document.addEventListener('visibilitychange', visibilityHandler);\n\n // re-render on window resize start and finish\n var resizeDoneTimer = null;\n var isResizing = false;\n var isResizingHorizontally = false;\n var initialWindowWidth = null;\n var currentWindowWidth = null;\n var resizeHandler = function resizeHandler() {\n if (!isResizing) {\n isResizing = true;\n }\n clearTimeout(resizeDoneTimer);\n resizeDoneTimer = setTimeout(function() {\n isResizing = false;\n initialWindowWidth = null;\n currentWindowWidth = null;\n if (isResizingHorizontally) {\n isResizingHorizontally = false;\n store.dispatch('DID_STOP_RESIZE');\n }\n }, 500);\n };\n window.addEventListener('resize', resizeHandler);\n\n // render initial view\n var view = root(store, { id: getUniqueId() });\n\n //\n // PRIVATE API -------------------------------------------------------------------------------------\n //\n var isResting = false;\n var isHidden = false;\n\n var readWriteApi = {\n // necessary for update loop\n\n /**\n * Reads from dom (never call manually)\n * @private\n */\n _read: function _read() {\n // test if we're resizing horizontally\n // TODO: see if we can optimize this by measuring root rect\n if (isResizing) {\n currentWindowWidth = window.innerWidth;\n if (!initialWindowWidth) {\n initialWindowWidth = currentWindowWidth;\n }\n\n if (!isResizingHorizontally && currentWindowWidth !== initialWindowWidth) {\n store.dispatch('DID_START_RESIZE');\n isResizingHorizontally = true;\n }\n }\n\n if (isHidden && isResting) {\n // test if is no longer hidden\n isResting = view.element.offsetParent === null;\n }\n\n // if resting, no need to read as numbers will still all be correct\n if (isResting) return;\n\n // read view data\n view._read();\n\n // if is hidden we need to know so we exit rest mode when revealed\n isHidden = view.rect.element.hidden;\n },\n\n /**\n * Writes to dom (never call manually)\n * @private\n */\n _write: function _write(ts) {\n // get all actions from store\n var actions = store\n .processActionQueue()\n\n // filter out set actions (these will automatically trigger DID_SET)\n .filter(function(action) {\n return !/^SET_/.test(action.type);\n });\n\n // if was idling and no actions stop here\n if (isResting && !actions.length) return;\n\n // some actions might trigger events\n routeActionsToEvents(actions);\n\n // update the view\n isResting = view._write(ts, actions, isResizingHorizontally);\n\n // will clean up all archived items\n removeReleasedItems(store.query('GET_ITEMS'));\n\n // now idling\n if (isResting) {\n store.processDispatchQueue();\n }\n },\n };\n\n //\n // EXPOSE EVENTS -------------------------------------------------------------------------------------\n //\n var createEvent = function createEvent(name) {\n return function(data) {\n // create default event\n var event = {\n type: name,\n };\n\n // no data to add\n if (!data) {\n return event;\n }\n\n // copy relevant props\n if (data.hasOwnProperty('error')) {\n event.error = data.error ? Object.assign({}, data.error) : null;\n }\n\n if (data.status) {\n event.status = Object.assign({}, data.status);\n }\n\n if (data.file) {\n event.output = data.file;\n }\n\n // only source is available, else add item if possible\n if (data.source) {\n event.file = data.source;\n } else if (data.item || data.id) {\n var item = data.item ? data.item : store.query('GET_ITEM', data.id);\n event.file = item ? createItemAPI(item) : null;\n }\n\n // map all items in a possible items array\n if (data.items) {\n event.items = data.items.map(createItemAPI);\n }\n\n // if this is a progress event add the progress amount\n if (/progress/.test(name)) {\n event.progress = data.progress;\n }\n\n // copy relevant props\n if (data.hasOwnProperty('origin') && data.hasOwnProperty('target')) {\n event.origin = data.origin;\n event.target = data.target;\n }\n\n return event;\n };\n };\n\n var eventRoutes = {\n DID_DESTROY: createEvent('destroy'),\n\n DID_INIT: createEvent('init'),\n\n DID_THROW_MAX_FILES: createEvent('warning'),\n\n DID_INIT_ITEM: createEvent('initfile'),\n DID_START_ITEM_LOAD: createEvent('addfilestart'),\n DID_UPDATE_ITEM_LOAD_PROGRESS: createEvent('addfileprogress'),\n DID_LOAD_ITEM: createEvent('addfile'),\n\n DID_THROW_ITEM_INVALID: [createEvent('error'), createEvent('addfile')],\n\n DID_THROW_ITEM_LOAD_ERROR: [createEvent('error'), createEvent('addfile')],\n\n DID_THROW_ITEM_REMOVE_ERROR: [createEvent('error'), createEvent('removefile')],\n\n DID_PREPARE_OUTPUT: createEvent('preparefile'),\n\n DID_START_ITEM_PROCESSING: createEvent('processfilestart'),\n DID_UPDATE_ITEM_PROCESS_PROGRESS: createEvent('processfileprogress'),\n DID_ABORT_ITEM_PROCESSING: createEvent('processfileabort'),\n DID_COMPLETE_ITEM_PROCESSING: createEvent('processfile'),\n DID_COMPLETE_ITEM_PROCESSING_ALL: createEvent('processfiles'),\n DID_REVERT_ITEM_PROCESSING: createEvent('processfilerevert'),\n\n DID_THROW_ITEM_PROCESSING_ERROR: [createEvent('error'), createEvent('processfile')],\n\n DID_REMOVE_ITEM: createEvent('removefile'),\n\n DID_UPDATE_ITEMS: createEvent('updatefiles'),\n\n DID_ACTIVATE_ITEM: createEvent('activatefile'),\n\n DID_REORDER_ITEMS: createEvent('reorderfiles'),\n };\n\n var exposeEvent = function exposeEvent(event) {\n // create event object to be dispatched\n var detail = Object.assign({ pond: exports }, event);\n delete detail.type;\n view.element.dispatchEvent(\n new CustomEvent('FilePond:' + event.type, {\n // event info\n detail: detail,\n\n // event behaviour\n bubbles: true,\n cancelable: true,\n composed: true, // triggers listeners outside of shadow root\n })\n );\n\n // event object to params used for `on()` event handlers and callbacks `oninit()`\n var params = [];\n\n // if is possible error event, make it the first param\n if (event.hasOwnProperty('error')) {\n params.push(event.error);\n }\n\n // file is always section\n if (event.hasOwnProperty('file')) {\n params.push(event.file);\n }\n\n // append other props\n var filtered = ['type', 'error', 'file'];\n Object.keys(event)\n .filter(function(key) {\n return !filtered.includes(key);\n })\n .forEach(function(key) {\n return params.push(event[key]);\n });\n\n // on(type, () => { })\n exports.fire.apply(exports, [event.type].concat(params));\n\n // oninit = () => {}\n var handler = store.query('GET_ON' + event.type.toUpperCase());\n if (handler) {\n handler.apply(void 0, params);\n }\n };\n\n var routeActionsToEvents = function routeActionsToEvents(actions) {\n if (!actions.length) return;\n actions\n .filter(function(action) {\n return eventRoutes[action.type];\n })\n .forEach(function(action) {\n var routes = eventRoutes[action.type];\n (Array.isArray(routes) ? routes : [routes]).forEach(function(route) {\n // this isn't fantastic, but because of the stacking of settimeouts plugins can handle the did_load before the did_init\n if (action.type === 'DID_INIT_ITEM') {\n exposeEvent(route(action.data));\n } else {\n setTimeout(function() {\n exposeEvent(route(action.data));\n }, 0);\n }\n });\n });\n };\n\n //\n // PUBLIC API -------------------------------------------------------------------------------------\n //\n var setOptions = function setOptions(options) {\n return store.dispatch('SET_OPTIONS', { options: options });\n };\n\n var getFile = function getFile(query) {\n return store.query('GET_ACTIVE_ITEM', query);\n };\n\n var prepareFile = function prepareFile(query) {\n return new Promise(function(resolve, reject) {\n store.dispatch('REQUEST_ITEM_PREPARE', {\n query: query,\n success: function success(item) {\n resolve(item);\n },\n failure: function failure(error) {\n reject(error);\n },\n });\n });\n };\n\n var addFile = function addFile(source) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return new Promise(function(resolve, reject) {\n addFiles([{ source: source, options: options }], { index: options.index })\n .then(function(items) {\n return resolve(items && items[0]);\n })\n .catch(reject);\n });\n };\n\n var isFilePondFile = function isFilePondFile(obj) {\n return obj.file && obj.id;\n };\n\n var removeFile = function removeFile(query, options) {\n // if only passed options\n if (typeof query === 'object' && !isFilePondFile(query) && !options) {\n options = query;\n query = undefined;\n }\n\n // request item removal\n store.dispatch('REMOVE_ITEM', Object.assign({}, options, { query: query }));\n\n // see if item has been removed\n return store.query('GET_ACTIVE_ITEM', query) === null;\n };\n\n var addFiles = function addFiles() {\n for (\n var _len = arguments.length, args = new Array(_len), _key = 0;\n _key < _len;\n _key++\n ) {\n args[_key] = arguments[_key];\n }\n return new Promise(function(resolve, reject) {\n var sources = [];\n var options = {};\n\n // user passed a sources array\n if (isArray(args[0])) {\n sources.push.apply(sources, args[0]);\n Object.assign(options, args[1] || {});\n } else {\n // user passed sources as arguments, last one might be options object\n var lastArgument = args[args.length - 1];\n if (typeof lastArgument === 'object' && !(lastArgument instanceof Blob)) {\n Object.assign(options, args.pop());\n }\n\n // add rest to sources\n sources.push.apply(sources, args);\n }\n\n store.dispatch('ADD_ITEMS', {\n items: sources,\n index: options.index,\n interactionMethod: InteractionMethod.API,\n success: resolve,\n failure: reject,\n });\n });\n };\n\n var getFiles = function getFiles() {\n return store.query('GET_ACTIVE_ITEMS');\n };\n\n var processFile = function processFile(query) {\n return new Promise(function(resolve, reject) {\n store.dispatch('REQUEST_ITEM_PROCESSING', {\n query: query,\n success: function success(item) {\n resolve(item);\n },\n failure: function failure(error) {\n reject(error);\n },\n });\n });\n };\n\n var prepareFiles = function prepareFiles() {\n for (\n var _len2 = arguments.length, args = new Array(_len2), _key2 = 0;\n _key2 < _len2;\n _key2++\n ) {\n args[_key2] = arguments[_key2];\n }\n var queries = Array.isArray(args[0]) ? args[0] : args;\n var items = queries.length ? queries : getFiles();\n return Promise.all(items.map(prepareFile));\n };\n\n var processFiles = function processFiles() {\n for (\n var _len3 = arguments.length, args = new Array(_len3), _key3 = 0;\n _key3 < _len3;\n _key3++\n ) {\n args[_key3] = arguments[_key3];\n }\n var queries = Array.isArray(args[0]) ? args[0] : args;\n if (!queries.length) {\n var files = getFiles().filter(function(item) {\n return (\n !(item.status === ItemStatus.IDLE && item.origin === FileOrigin.LOCAL) &&\n item.status !== ItemStatus.PROCESSING &&\n item.status !== ItemStatus.PROCESSING_COMPLETE &&\n item.status !== ItemStatus.PROCESSING_REVERT_ERROR\n );\n });\n\n return Promise.all(files.map(processFile));\n }\n return Promise.all(queries.map(processFile));\n };\n\n var removeFiles = function removeFiles() {\n for (\n var _len4 = arguments.length, args = new Array(_len4), _key4 = 0;\n _key4 < _len4;\n _key4++\n ) {\n args[_key4] = arguments[_key4];\n }\n\n var queries = Array.isArray(args[0]) ? args[0] : args;\n\n var options;\n if (typeof queries[queries.length - 1] === 'object') {\n options = queries.pop();\n } else if (Array.isArray(args[0])) {\n options = args[1];\n }\n\n var files = getFiles();\n\n if (!queries.length)\n return Promise.all(\n files.map(function(file) {\n return removeFile(file, options);\n })\n );\n\n // when removing by index the indexes shift after each file removal so we need to convert indexes to ids\n var mappedQueries = queries\n .map(function(query) {\n return isNumber(query) ? (files[query] ? files[query].id : null) : query;\n })\n .filter(function(query) {\n return query;\n });\n\n return mappedQueries.map(function(q) {\n return removeFile(q, options);\n });\n };\n\n var exports = Object.assign(\n {},\n\n on(),\n {},\n\n readWriteApi,\n {},\n\n createOptionAPI(store, defaultOptions),\n {\n /**\n * Override options defined in options object\n * @param options\n */\n setOptions: setOptions,\n\n /**\n * Load the given file\n * @param source - the source of the file (either a File, base64 data uri or url)\n * @param options - object, { index: 0 }\n */\n addFile: addFile,\n\n /**\n * Load the given files\n * @param sources - the sources of the files to load\n * @param options - object, { index: 0 }\n */\n addFiles: addFiles,\n\n /**\n * Returns the file objects matching the given query\n * @param query { string, number, null }\n */\n getFile: getFile,\n\n /**\n * Upload file with given name\n * @param query { string, number, null }\n */\n processFile: processFile,\n\n /**\n * Request prepare output for file with given name\n * @param query { string, number, null }\n */\n prepareFile: prepareFile,\n\n /**\n * Removes a file by its name\n * @param query { string, number, null }\n */\n removeFile: removeFile,\n\n /**\n * Moves a file to a new location in the files list\n */\n moveFile: function moveFile(query, index) {\n return store.dispatch('MOVE_ITEM', { query: query, index: index });\n },\n\n /**\n * Returns all files (wrapped in public api)\n */\n getFiles: getFiles,\n\n /**\n * Starts uploading all files\n */\n processFiles: processFiles,\n\n /**\n * Clears all files from the files list\n */\n removeFiles: removeFiles,\n\n /**\n * Starts preparing output of all files\n */\n prepareFiles: prepareFiles,\n\n /**\n * Sort list of files\n */\n sort: function sort(compare) {\n return store.dispatch('SORT', { compare: compare });\n },\n\n /**\n * Browse the file system for a file\n */\n browse: function browse() {\n // needs to be trigger directly as user action needs to be traceable (is not traceable in requestAnimationFrame)\n var input = view.element.querySelector('input[type=file]');\n if (input) {\n input.click();\n }\n },\n\n /**\n * Destroys the app\n */\n destroy: function destroy() {\n // request destruction\n exports.fire('destroy', view.element);\n\n // stop active processes (file uploads, fetches, stuff like that)\n // loop over items and depending on states call abort for ongoing processes\n store.dispatch('ABORT_ALL');\n\n // destroy view\n view._destroy();\n\n // stop listening to resize\n window.removeEventListener('resize', resizeHandler);\n\n // stop listening to the visiblitychange event\n document.removeEventListener('visibilitychange', visibilityHandler);\n\n // dispatch destroy\n store.dispatch('DID_DESTROY');\n },\n\n /**\n * Inserts the plugin before the target element\n */\n insertBefore: function insertBefore$1(element) {\n return insertBefore(view.element, element);\n },\n\n /**\n * Inserts the plugin after the target element\n */\n insertAfter: function insertAfter$1(element) {\n return insertAfter(view.element, element);\n },\n\n /**\n * Appends the plugin to the target element\n */\n appendTo: function appendTo(element) {\n return element.appendChild(view.element);\n },\n\n /**\n * Replaces an element with the app\n */\n replaceElement: function replaceElement(element) {\n // insert the app before the element\n insertBefore(view.element, element);\n\n // remove the original element\n element.parentNode.removeChild(element);\n\n // remember original element\n originalElement = element;\n },\n\n /**\n * Restores the original element\n */\n restoreElement: function restoreElement() {\n if (!originalElement) {\n return; // no element to restore\n }\n\n // restore original element\n insertAfter(originalElement, view.element);\n\n // remove our element\n view.element.parentNode.removeChild(view.element);\n\n // remove reference\n originalElement = null;\n },\n\n /**\n * Returns true if the app root is attached to given element\n * @param element\n */\n isAttachedTo: function isAttachedTo(element) {\n return view.element === element || originalElement === element;\n },\n\n /**\n * Returns the root element\n */\n element: {\n get: function get() {\n return view.element;\n },\n },\n\n /**\n * Returns the current pond status\n */\n status: {\n get: function get() {\n return store.query('GET_STATUS');\n },\n },\n }\n );\n\n // Done!\n store.dispatch('DID_INIT');\n\n // create actual api object\n return createObject(exports);\n };\n\n var createAppObject = function createAppObject() {\n var customOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // default options\n var defaultOptions = {};\n forin(getOptions(), function(key, value) {\n defaultOptions[key] = value[0];\n });\n\n // set app options\n var app = createApp(\n Object.assign(\n {},\n\n defaultOptions,\n {},\n\n customOptions\n )\n );\n\n // return the plugin instance\n return app;\n };\n\n var lowerCaseFirstLetter = function lowerCaseFirstLetter(string) {\n return string.charAt(0).toLowerCase() + string.slice(1);\n };\n\n var attributeNameToPropertyName = function attributeNameToPropertyName(attributeName) {\n return toCamels(attributeName.replace(/^data-/, ''));\n };\n\n var mapObject = function mapObject(object, propertyMap) {\n // remove unwanted\n forin(propertyMap, function(selector, mapping) {\n forin(object, function(property, value) {\n // create regexp shortcut\n var selectorRegExp = new RegExp(selector);\n\n // tests if\n var matches = selectorRegExp.test(property);\n\n // no match, skip\n if (!matches) {\n return;\n }\n\n // if there's a mapping, the original property is always removed\n delete object[property];\n\n // should only remove, we done!\n if (mapping === false) {\n return;\n }\n\n // move value to new property\n if (isString(mapping)) {\n object[mapping] = value;\n return;\n }\n\n // move to group\n var group = mapping.group;\n if (isObject(mapping) && !object[group]) {\n object[group] = {};\n }\n\n object[group][lowerCaseFirstLetter(property.replace(selectorRegExp, ''))] = value;\n });\n\n // do submapping\n if (mapping.mapping) {\n mapObject(object[mapping.group], mapping.mapping);\n }\n });\n };\n\n var getAttributesAsObject = function getAttributesAsObject(node) {\n var attributeMapping =\n arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n // turn attributes into object\n var attributes = [];\n forin(node.attributes, function(index) {\n attributes.push(node.attributes[index]);\n });\n\n var output = attributes\n .filter(function(attribute) {\n return attribute.name;\n })\n .reduce(function(obj, attribute) {\n var value = attr(node, attribute.name);\n\n obj[attributeNameToPropertyName(attribute.name)] =\n value === attribute.name ? true : value;\n return obj;\n }, {});\n\n // do mapping of object properties\n mapObject(output, attributeMapping);\n\n return output;\n };\n\n var createAppAtElement = function createAppAtElement(element) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n // how attributes of the input element are mapped to the options for the plugin\n var attributeMapping = {\n // translate to other name\n '^class$': 'className',\n '^multiple$': 'allowMultiple',\n '^capture$': 'captureMethod',\n '^webkitdirectory$': 'allowDirectoriesOnly',\n\n // group under single property\n '^server': {\n group: 'server',\n mapping: {\n '^process': {\n group: 'process',\n },\n\n '^revert': {\n group: 'revert',\n },\n\n '^fetch': {\n group: 'fetch',\n },\n\n '^restore': {\n group: 'restore',\n },\n\n '^load': {\n group: 'load',\n },\n },\n },\n\n // don't include in object\n '^type$': false,\n '^files$': false,\n };\n\n // add additional option translators\n applyFilters('SET_ATTRIBUTE_TO_OPTION_MAP', attributeMapping);\n\n // create final options object by setting options object and then overriding options supplied on element\n var mergedOptions = Object.assign({}, options);\n\n var attributeOptions = getAttributesAsObject(\n element.nodeName === 'FIELDSET' ? element.querySelector('input[type=file]') : element,\n attributeMapping\n );\n\n // merge with options object\n Object.keys(attributeOptions).forEach(function(key) {\n if (isObject(attributeOptions[key])) {\n if (!isObject(mergedOptions[key])) {\n mergedOptions[key] = {};\n }\n Object.assign(mergedOptions[key], attributeOptions[key]);\n } else {\n mergedOptions[key] = attributeOptions[key];\n }\n });\n\n // if parent is a fieldset, get files from parent by selecting all input fields that are not file upload fields\n // these will then be automatically set to the initial files\n mergedOptions.files = (options.files || []).concat(\n Array.from(element.querySelectorAll('input:not([type=file])')).map(function(input) {\n return {\n source: input.value,\n options: {\n type: input.dataset.type,\n },\n };\n })\n );\n\n // build plugin\n var app = createAppObject(mergedOptions);\n\n // add already selected files\n if (element.files) {\n Array.from(element.files).forEach(function(file) {\n app.addFile(file);\n });\n }\n\n // replace the target element\n app.replaceElement(element);\n\n // expose\n return app;\n };\n\n // if an element is passed, we create the instance at that element, if not, we just create an up object\n var createApp$1 = function createApp() {\n return isNode(arguments.length <= 0 ? undefined : arguments[0])\n ? createAppAtElement.apply(void 0, arguments)\n : createAppObject.apply(void 0, arguments);\n };\n\n var PRIVATE_METHODS = ['fire', '_read', '_write'];\n\n var createAppAPI = function createAppAPI(app) {\n var api = {};\n\n copyObjectPropertiesToObject(app, api, PRIVATE_METHODS);\n\n return api;\n };\n\n /**\n * Replaces placeholders in given string with replacements\n * @param string - \"Foo {bar}\"\"\n * @param replacements - { \"bar\": 10 }\n */\n var replaceInString = function replaceInString(string, replacements) {\n return string.replace(/(?:{([a-zA-Z]+)})/g, function(match, group) {\n return replacements[group];\n });\n };\n\n var createWorker = function createWorker(fn) {\n var workerBlob = new Blob(['(', fn.toString(), ')()'], {\n type: 'application/javascript',\n });\n\n var workerURL = URL.createObjectURL(workerBlob);\n var worker = new Worker(workerURL);\n\n return {\n transfer: function transfer(message, cb) {},\n post: function post(message, cb, transferList) {\n var id = getUniqueId();\n\n worker.onmessage = function(e) {\n if (e.data.id === id) {\n cb(e.data.message);\n }\n };\n\n worker.postMessage(\n {\n id: id,\n message: message,\n },\n\n transferList\n );\n },\n terminate: function terminate() {\n worker.terminate();\n URL.revokeObjectURL(workerURL);\n },\n };\n };\n\n var loadImage = function loadImage(url) {\n return new Promise(function(resolve, reject) {\n var img = new Image();\n img.onload = function() {\n resolve(img);\n };\n img.onerror = function(e) {\n reject(e);\n };\n img.src = url;\n });\n };\n\n var renameFile = function renameFile(file, name) {\n var renamedFile = file.slice(0, file.size, file.type);\n renamedFile.lastModifiedDate = file.lastModifiedDate;\n renamedFile.name = name;\n return renamedFile;\n };\n\n var copyFile = function copyFile(file) {\n return renameFile(file, file.name);\n };\n\n // already registered plugins (can't register twice)\n var registeredPlugins = [];\n\n // pass utils to plugin\n var createAppPlugin = function createAppPlugin(plugin) {\n // already registered\n if (registeredPlugins.includes(plugin)) {\n return;\n }\n\n // remember this plugin\n registeredPlugins.push(plugin);\n\n // setup!\n var pluginOutline = plugin({\n addFilter: addFilter,\n utils: {\n Type: Type,\n forin: forin,\n isString: isString,\n isFile: isFile,\n toNaturalFileSize: toNaturalFileSize,\n replaceInString: replaceInString,\n getExtensionFromFilename: getExtensionFromFilename,\n getFilenameWithoutExtension: getFilenameWithoutExtension,\n guesstimateMimeType: guesstimateMimeType,\n getFileFromBlob: getFileFromBlob,\n getFilenameFromURL: getFilenameFromURL,\n createRoute: createRoute,\n createWorker: createWorker,\n createView: createView,\n createItemAPI: createItemAPI,\n loadImage: loadImage,\n copyFile: copyFile,\n renameFile: renameFile,\n createBlob: createBlob,\n applyFilterChain: applyFilterChain,\n text: text,\n getNumericAspectRatioFromString: getNumericAspectRatioFromString,\n },\n\n views: {\n fileActionButton: fileActionButton,\n },\n });\n\n // add plugin options to default options\n extendDefaultOptions(pluginOutline.options);\n };\n\n // feature detection used by supported() method\n var isOperaMini = function isOperaMini() {\n return Object.prototype.toString.call(window.operamini) === '[object OperaMini]';\n };\n var hasPromises = function hasPromises() {\n return 'Promise' in window;\n };\n var hasBlobSlice = function hasBlobSlice() {\n return 'slice' in Blob.prototype;\n };\n var hasCreateObjectURL = function hasCreateObjectURL() {\n return 'URL' in window && 'createObjectURL' in window.URL;\n };\n var hasVisibility = function hasVisibility() {\n return 'visibilityState' in document;\n };\n var hasTiming = function hasTiming() {\n return 'performance' in window;\n }; // iOS 8.x\n var hasCSSSupports = function hasCSSSupports() {\n return 'supports' in (window.CSS || {});\n }; // use to detect Safari 9+\n var isIE11 = function isIE11() {\n return /MSIE|Trident/.test(window.navigator.userAgent);\n };\n\n var supported = (function() {\n // Runs immediately and then remembers result for subsequent calls\n var isSupported =\n // Has to be a browser\n isBrowser() &&\n // Can't run on Opera Mini due to lack of everything\n !isOperaMini() &&\n // Require these APIs to feature detect a modern browser\n hasVisibility() &&\n hasPromises() &&\n hasBlobSlice() &&\n hasCreateObjectURL() &&\n hasTiming() &&\n // doesn't need CSSSupports but is a good way to detect Safari 9+ (we do want to support IE11 though)\n (hasCSSSupports() || isIE11());\n\n return function() {\n return isSupported;\n };\n })();\n\n /**\n * Plugin internal state (over all instances)\n */\n var state = {\n // active app instances, used to redraw the apps and to find the later\n apps: [],\n };\n\n // plugin name\n var name = 'filepond';\n\n /**\n * Public Plugin methods\n */\n var fn = function fn() {};\n exports.Status = {};\n exports.FileStatus = {};\n exports.FileOrigin = {};\n exports.OptionTypes = {};\n exports.create = fn;\n exports.destroy = fn;\n exports.parse = fn;\n exports.find = fn;\n exports.registerPlugin = fn;\n exports.getOptions = fn;\n exports.setOptions = fn;\n\n // if not supported, no API\n if (supported()) {\n // start painter and fire load event\n createPainter(\n function() {\n state.apps.forEach(function(app) {\n return app._read();\n });\n },\n function(ts) {\n state.apps.forEach(function(app) {\n return app._write(ts);\n });\n }\n );\n\n // fire loaded event so we know when FilePond is available\n var dispatch = function dispatch() {\n // let others know we have area ready\n document.dispatchEvent(\n new CustomEvent('FilePond:loaded', {\n detail: {\n supported: supported,\n create: exports.create,\n destroy: exports.destroy,\n parse: exports.parse,\n find: exports.find,\n registerPlugin: exports.registerPlugin,\n setOptions: exports.setOptions,\n },\n })\n );\n\n // clean up event\n document.removeEventListener('DOMContentLoaded', dispatch);\n };\n\n if (document.readyState !== 'loading') {\n // move to back of execution queue, FilePond should have been exported by then\n setTimeout(function() {\n return dispatch();\n }, 0);\n } else {\n document.addEventListener('DOMContentLoaded', dispatch);\n }\n\n // updates the OptionTypes object based on the current options\n var updateOptionTypes = function updateOptionTypes() {\n return forin(getOptions(), function(key, value) {\n exports.OptionTypes[key] = value[1];\n });\n };\n\n exports.Status = Object.assign({}, Status);\n exports.FileOrigin = Object.assign({}, FileOrigin);\n exports.FileStatus = Object.assign({}, ItemStatus);\n\n exports.OptionTypes = {};\n updateOptionTypes();\n\n // create method, creates apps and adds them to the app array\n exports.create = function create() {\n var app = createApp$1.apply(void 0, arguments);\n app.on('destroy', exports.destroy);\n state.apps.push(app);\n return createAppAPI(app);\n };\n\n // destroys apps and removes them from the app array\n exports.destroy = function destroy(hook) {\n // returns true if the app was destroyed successfully\n var indexToRemove = state.apps.findIndex(function(app) {\n return app.isAttachedTo(hook);\n });\n if (indexToRemove >= 0) {\n // remove from apps\n var app = state.apps.splice(indexToRemove, 1)[0];\n\n // restore original dom element\n app.restoreElement();\n\n return true;\n }\n\n return false;\n };\n\n // parses the given context for plugins (does not include the context element itself)\n exports.parse = function parse(context) {\n // get all possible hooks\n var matchedHooks = Array.from(context.querySelectorAll('.' + name));\n\n // filter out already active hooks\n var newHooks = matchedHooks.filter(function(newHook) {\n return !state.apps.find(function(app) {\n return app.isAttachedTo(newHook);\n });\n });\n\n // create new instance for each hook\n return newHooks.map(function(hook) {\n return exports.create(hook);\n });\n };\n\n // returns an app based on the given element hook\n exports.find = function find(hook) {\n var app = state.apps.find(function(app) {\n return app.isAttachedTo(hook);\n });\n if (!app) {\n return null;\n }\n return createAppAPI(app);\n };\n\n // adds a plugin extension\n exports.registerPlugin = function registerPlugin() {\n for (\n var _len = arguments.length, plugins = new Array(_len), _key = 0;\n _key < _len;\n _key++\n ) {\n plugins[_key] = arguments[_key];\n }\n\n // register plugins\n plugins.forEach(createAppPlugin);\n\n // update OptionTypes, each plugin might have extended the default options\n updateOptionTypes();\n };\n\n exports.getOptions = function getOptions$1() {\n var opts = {};\n forin(getOptions(), function(key, value) {\n opts[key] = value[0];\n });\n return opts;\n };\n\n exports.setOptions = function setOptions$1(opts) {\n if (isObject(opts)) {\n // update existing plugins\n state.apps.forEach(function(app) {\n app.setOptions(opts);\n });\n\n // override defaults\n setOptions(opts);\n }\n\n // return new options\n return exports.getOptions();\n };\n }\n\n exports.supported = supported;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n});\n","export var HOOKS = [\n \"onChange\",\n \"onClose\",\n \"onDayCreate\",\n \"onDestroy\",\n \"onKeyDown\",\n \"onMonthChange\",\n \"onOpen\",\n \"onParseConfig\",\n \"onReady\",\n \"onValueUpdate\",\n \"onYearChange\",\n \"onPreCalendarPosition\",\n];\nexport var defaults = {\n _disable: [],\n allowInput: false,\n allowInvalidPreload: false,\n altFormat: \"F j, Y\",\n altInput: false,\n altInputClass: \"form-control input\",\n animate: typeof window === \"object\" &&\n window.navigator.userAgent.indexOf(\"MSIE\") === -1,\n ariaDateFormat: \"F j, Y\",\n autoFillDefaultTime: true,\n clickOpens: true,\n closeOnSelect: true,\n conjunction: \", \",\n dateFormat: \"Y-m-d\",\n defaultHour: 12,\n defaultMinute: 0,\n defaultSeconds: 0,\n disable: [],\n disableMobile: false,\n enableSeconds: false,\n enableTime: false,\n errorHandler: function (err) {\n return typeof console !== \"undefined\" && console.warn(err);\n },\n getWeek: function (givenDate) {\n var date = new Date(givenDate.getTime());\n date.setHours(0, 0, 0, 0);\n date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));\n var week1 = new Date(date.getFullYear(), 0, 4);\n return (1 +\n Math.round(((date.getTime() - week1.getTime()) / 86400000 -\n 3 +\n ((week1.getDay() + 6) % 7)) /\n 7));\n },\n hourIncrement: 1,\n ignoredFocusElements: [],\n inline: false,\n locale: \"default\",\n minuteIncrement: 5,\n mode: \"single\",\n monthSelectorType: \"dropdown\",\n nextArrow: \"\",\n noCalendar: false,\n now: new Date(),\n onChange: [],\n onClose: [],\n onDayCreate: [],\n onDestroy: [],\n onKeyDown: [],\n onMonthChange: [],\n onOpen: [],\n onParseConfig: [],\n onReady: [],\n onValueUpdate: [],\n onYearChange: [],\n onPreCalendarPosition: [],\n plugins: [],\n position: \"auto\",\n positionElement: undefined,\n prevArrow: \"\",\n shorthandCurrentMonth: false,\n showMonths: 1,\n static: false,\n time_24hr: false,\n weekNumbers: false,\n wrap: false,\n};\n","export var english = {\n weekdays: {\n shorthand: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n longhand: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n },\n months: {\n shorthand: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n longhand: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n },\n daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],\n firstDayOfWeek: 0,\n ordinal: function (nth) {\n var s = nth % 100;\n if (s > 3 && s < 21)\n return \"th\";\n switch (s % 10) {\n case 1:\n return \"st\";\n case 2:\n return \"nd\";\n case 3:\n return \"rd\";\n default:\n return \"th\";\n }\n },\n rangeSeparator: \" to \",\n weekAbbreviation: \"Wk\",\n scrollTitle: \"Scroll to increment\",\n toggleTitle: \"Click to toggle\",\n amPM: [\"AM\", \"PM\"],\n yearAriaLabel: \"Year\",\n monthAriaLabel: \"Month\",\n hourAriaLabel: \"Hour\",\n minuteAriaLabel: \"Minute\",\n time_24hr: false,\n};\nexport default english;\n","export var pad = function (number, length) {\n if (length === void 0) { length = 2; }\n return (\"000\" + number).slice(length * -1);\n};\nexport var int = function (bool) { return (bool === true ? 1 : 0); };\nexport function debounce(fn, wait) {\n var t;\n return function () {\n var _this = this;\n var args = arguments;\n clearTimeout(t);\n t = setTimeout(function () { return fn.apply(_this, args); }, wait);\n };\n}\nexport var arrayify = function (obj) {\n return obj instanceof Array ? obj : [obj];\n};\n","export function toggleClass(elem, className, bool) {\n if (bool === true)\n return elem.classList.add(className);\n elem.classList.remove(className);\n}\nexport function createElement(tag, className, content) {\n var e = window.document.createElement(tag);\n className = className || \"\";\n content = content || \"\";\n e.className = className;\n if (content !== undefined)\n e.textContent = content;\n return e;\n}\nexport function clearNode(node) {\n while (node.firstChild)\n node.removeChild(node.firstChild);\n}\nexport function findParent(node, condition) {\n if (condition(node))\n return node;\n else if (node.parentNode)\n return findParent(node.parentNode, condition);\n return undefined;\n}\nexport function createNumberInput(inputClassName, opts) {\n var wrapper = createElement(\"div\", \"numInputWrapper\"), numInput = createElement(\"input\", \"numInput \" + inputClassName), arrowUp = createElement(\"span\", \"arrowUp\"), arrowDown = createElement(\"span\", \"arrowDown\");\n if (navigator.userAgent.indexOf(\"MSIE 9.0\") === -1) {\n numInput.type = \"number\";\n }\n else {\n numInput.type = \"text\";\n numInput.pattern = \"\\\\d*\";\n }\n if (opts !== undefined)\n for (var key in opts)\n numInput.setAttribute(key, opts[key]);\n wrapper.appendChild(numInput);\n wrapper.appendChild(arrowUp);\n wrapper.appendChild(arrowDown);\n return wrapper;\n}\nexport function getEventTarget(event) {\n try {\n if (typeof event.composedPath === \"function\") {\n var path = event.composedPath();\n return path[0];\n }\n return event.target;\n }\n catch (error) {\n return event.target;\n }\n}\n","import { int, pad } from \"../utils\";\nvar doNothing = function () { return undefined; };\nexport var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? \"shorthand\" : \"longhand\"][monthNumber]; };\nexport var revFormat = {\n D: doNothing,\n F: function (dateObj, monthName, locale) {\n dateObj.setMonth(locale.months.longhand.indexOf(monthName));\n },\n G: function (dateObj, hour) {\n dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n },\n H: function (dateObj, hour) {\n dateObj.setHours(parseFloat(hour));\n },\n J: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n K: function (dateObj, amPM, locale) {\n dateObj.setHours((dateObj.getHours() % 12) +\n 12 * int(new RegExp(locale.amPM[1], \"i\").test(amPM)));\n },\n M: function (dateObj, shortMonth, locale) {\n dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));\n },\n S: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n U: function (_, unixSeconds) { return new Date(parseFloat(unixSeconds) * 1000); },\n W: function (dateObj, weekNum, locale) {\n var weekNumber = parseInt(weekNum);\n var date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);\n date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);\n return date;\n },\n Y: function (dateObj, year) {\n dateObj.setFullYear(parseFloat(year));\n },\n Z: function (_, ISODate) { return new Date(ISODate); },\n d: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n h: function (dateObj, hour) {\n dateObj.setHours((dateObj.getHours() >= 12 ? 12 : 0) + parseFloat(hour));\n },\n i: function (dateObj, minutes) {\n dateObj.setMinutes(parseFloat(minutes));\n },\n j: function (dateObj, day) {\n dateObj.setDate(parseFloat(day));\n },\n l: doNothing,\n m: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n n: function (dateObj, month) {\n dateObj.setMonth(parseFloat(month) - 1);\n },\n s: function (dateObj, seconds) {\n dateObj.setSeconds(parseFloat(seconds));\n },\n u: function (_, unixMillSeconds) {\n return new Date(parseFloat(unixMillSeconds));\n },\n w: doNothing,\n y: function (dateObj, year) {\n dateObj.setFullYear(2000 + parseFloat(year));\n },\n};\nexport var tokenRegex = {\n D: \"\",\n F: \"\",\n G: \"(\\\\d\\\\d|\\\\d)\",\n H: \"(\\\\d\\\\d|\\\\d)\",\n J: \"(\\\\d\\\\d|\\\\d)\\\\w+\",\n K: \"\",\n M: \"\",\n S: \"(\\\\d\\\\d|\\\\d)\",\n U: \"(.+)\",\n W: \"(\\\\d\\\\d|\\\\d)\",\n Y: \"(\\\\d{4})\",\n Z: \"(.+)\",\n d: \"(\\\\d\\\\d|\\\\d)\",\n h: \"(\\\\d\\\\d|\\\\d)\",\n i: \"(\\\\d\\\\d|\\\\d)\",\n j: \"(\\\\d\\\\d|\\\\d)\",\n l: \"\",\n m: \"(\\\\d\\\\d|\\\\d)\",\n n: \"(\\\\d\\\\d|\\\\d)\",\n s: \"(\\\\d\\\\d|\\\\d)\",\n u: \"(.+)\",\n w: \"(\\\\d\\\\d|\\\\d)\",\n y: \"(\\\\d{2})\",\n};\nexport var formats = {\n Z: function (date) { return date.toISOString(); },\n D: function (date, locale, options) {\n return locale.weekdays.shorthand[formats.w(date, locale, options)];\n },\n F: function (date, locale, options) {\n return monthToStr(formats.n(date, locale, options) - 1, false, locale);\n },\n G: function (date, locale, options) {\n return pad(formats.h(date, locale, options));\n },\n H: function (date) { return pad(date.getHours()); },\n J: function (date, locale) {\n return locale.ordinal !== undefined\n ? date.getDate() + locale.ordinal(date.getDate())\n : date.getDate();\n },\n K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },\n M: function (date, locale) {\n return monthToStr(date.getMonth(), true, locale);\n },\n S: function (date) { return pad(date.getSeconds()); },\n U: function (date) { return date.getTime() / 1000; },\n W: function (date, _, options) {\n return options.getWeek(date);\n },\n Y: function (date) { return pad(date.getFullYear(), 4); },\n d: function (date) { return pad(date.getDate()); },\n h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },\n i: function (date) { return pad(date.getMinutes()); },\n j: function (date) { return date.getDate(); },\n l: function (date, locale) {\n return locale.weekdays.longhand[date.getDay()];\n },\n m: function (date) { return pad(date.getMonth() + 1); },\n n: function (date) { return date.getMonth() + 1; },\n s: function (date) { return date.getSeconds(); },\n u: function (date) { return date.getTime(); },\n w: function (date) { return date.getDay(); },\n y: function (date) { return String(date.getFullYear()).substring(2); },\n};\n","import { tokenRegex, revFormat, formats, } from \"./formatting\";\nimport { defaults } from \"../types/options\";\nimport { english } from \"../l10n/default\";\nexport var createDateFormatter = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c, _d = _a.isMobile, isMobile = _d === void 0 ? false : _d;\n return function (dateObj, frmt, overrideLocale) {\n var locale = overrideLocale || l10n;\n if (config.formatDate !== undefined && !isMobile) {\n return config.formatDate(dateObj, frmt, locale);\n }\n return frmt\n .split(\"\")\n .map(function (c, i, arr) {\n return formats[c] && arr[i - 1] !== \"\\\\\"\n ? formats[c](dateObj, locale, config)\n : c !== \"\\\\\"\n ? c\n : \"\";\n })\n .join(\"\");\n };\n};\nexport var createDateParser = function (_a) {\n var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;\n return function (date, givenFormat, timeless, customLocale) {\n if (date !== 0 && !date)\n return undefined;\n var locale = customLocale || l10n;\n var parsedDate;\n var dateOrig = date;\n if (date instanceof Date)\n parsedDate = new Date(date.getTime());\n else if (typeof date !== \"string\" &&\n date.toFixed !== undefined)\n parsedDate = new Date(date);\n else if (typeof date === \"string\") {\n var format = givenFormat || (config || defaults).dateFormat;\n var datestr = String(date).trim();\n if (datestr === \"today\") {\n parsedDate = new Date();\n timeless = true;\n }\n else if (config && config.parseDate) {\n parsedDate = config.parseDate(date, format);\n }\n else if (/Z$/.test(datestr) ||\n /GMT$/.test(datestr)) {\n parsedDate = new Date(date);\n }\n else {\n var matched = void 0, ops = [];\n for (var i = 0, matchIndex = 0, regexStr = \"\"; i < format.length; i++) {\n var token = format[i];\n var isBackSlash = token === \"\\\\\";\n var escaped = format[i - 1] === \"\\\\\" || isBackSlash;\n if (tokenRegex[token] && !escaped) {\n regexStr += tokenRegex[token];\n var match = new RegExp(regexStr).exec(date);\n if (match && (matched = true)) {\n ops[token !== \"Y\" ? \"push\" : \"unshift\"]({\n fn: revFormat[token],\n val: match[++matchIndex],\n });\n }\n }\n else if (!isBackSlash)\n regexStr += \".\";\n }\n parsedDate =\n !config || !config.noCalendar\n ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)\n : new Date(new Date().setHours(0, 0, 0, 0));\n ops.forEach(function (_a) {\n var fn = _a.fn, val = _a.val;\n return (parsedDate = fn(parsedDate, val, locale) || parsedDate);\n });\n parsedDate = matched ? parsedDate : undefined;\n }\n }\n if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {\n config.errorHandler(new Error(\"Invalid date provided: \" + dateOrig));\n return undefined;\n }\n if (timeless === true)\n parsedDate.setHours(0, 0, 0, 0);\n return parsedDate;\n };\n};\nexport function compareDates(date1, date2, timeless) {\n if (timeless === void 0) { timeless = true; }\n if (timeless !== false) {\n return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -\n new Date(date2.getTime()).setHours(0, 0, 0, 0));\n }\n return date1.getTime() - date2.getTime();\n}\nexport function compareTimes(date1, date2) {\n return (3600 * (date1.getHours() - date2.getHours()) +\n 60 * (date1.getMinutes() - date2.getMinutes()) +\n date1.getSeconds() -\n date2.getSeconds());\n}\nexport var isBetween = function (ts, ts1, ts2) {\n return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);\n};\nexport var calculateSecondsSinceMidnight = function (hours, minutes, seconds) {\n return hours * 3600 + minutes * 60 + seconds;\n};\nexport var parseSeconds = function (secondsSinceMidnight) {\n var hours = Math.floor(secondsSinceMidnight / 3600), minutes = (secondsSinceMidnight - hours * 3600) / 60;\n return [hours, minutes, secondsSinceMidnight - hours * 3600 - minutes * 60];\n};\nexport var duration = {\n DAY: 86400000,\n};\nexport function getDefaultHours(config) {\n var hours = config.defaultHour;\n var minutes = config.defaultMinute;\n var seconds = config.defaultSeconds;\n if (config.minDate !== undefined) {\n var minHour = config.minDate.getHours();\n var minMinutes = config.minDate.getMinutes();\n var minSeconds = config.minDate.getSeconds();\n if (hours < minHour) {\n hours = minHour;\n }\n if (hours === minHour && minutes < minMinutes) {\n minutes = minMinutes;\n }\n if (hours === minHour && minutes === minMinutes && seconds < minSeconds)\n seconds = config.minDate.getSeconds();\n }\n if (config.maxDate !== undefined) {\n var maxHr = config.maxDate.getHours();\n var maxMinutes = config.maxDate.getMinutes();\n hours = Math.min(hours, maxHr);\n if (hours === maxHr)\n minutes = Math.min(maxMinutes, minutes);\n if (hours === maxHr && minutes === maxMinutes)\n seconds = config.maxDate.getSeconds();\n }\n return { hours: hours, minutes: minutes, seconds: seconds };\n}\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nimport { defaults as defaultOptions, HOOKS, } from \"./types/options\";\nimport English from \"./l10n/default\";\nimport { arrayify, debounce, int, pad } from \"./utils\";\nimport { clearNode, createElement, createNumberInput, findParent, toggleClass, getEventTarget, } from \"./utils/dom\";\nimport { compareDates, createDateParser, createDateFormatter, duration, isBetween, getDefaultHours, calculateSecondsSinceMidnight, parseSeconds, } from \"./utils/dates\";\nimport { tokenRegex, monthToStr } from \"./utils/formatting\";\nimport \"./utils/polyfills\";\nvar DEBOUNCED_CHANGE_MS = 300;\nfunction FlatpickrInstance(element, instanceConfig) {\n var self = {\n config: __assign(__assign({}, defaultOptions), flatpickr.defaultConfig),\n l10n: English,\n };\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n self._handlers = [];\n self.pluginElements = [];\n self.loadedPlugins = [];\n self._bind = bind;\n self._setHoursFromDate = setHoursFromDate;\n self._positionCalendar = positionCalendar;\n self.changeMonth = changeMonth;\n self.changeYear = changeYear;\n self.clear = clear;\n self.close = close;\n self.onMouseOver = onMouseOver;\n self._createElement = createElement;\n self.createDay = createDay;\n self.destroy = destroy;\n self.isEnabled = isEnabled;\n self.jumpToDate = jumpToDate;\n self.updateValue = updateValue;\n self.open = open;\n self.redraw = redraw;\n self.set = set;\n self.setDate = setDate;\n self.toggle = toggle;\n function setupHelperFunctions() {\n self.utils = {\n getDaysInMonth: function (month, yr) {\n if (month === void 0) { month = self.currentMonth; }\n if (yr === void 0) { yr = self.currentYear; }\n if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))\n return 29;\n return self.l10n.daysInMonth[month];\n },\n };\n }\n function init() {\n self.element = self.input = element;\n self.isOpen = false;\n parseConfig();\n setupLocale();\n setupInputs();\n setupDates();\n setupHelperFunctions();\n if (!self.isMobile)\n build();\n bindEvents();\n if (self.selectedDates.length || self.config.noCalendar) {\n if (self.config.enableTime) {\n setHoursFromDate(self.config.noCalendar ? self.latestSelectedDateObj : undefined);\n }\n updateValue(false);\n }\n setCalendarWidth();\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n if (!self.isMobile && isSafari) {\n positionCalendar();\n }\n triggerEvent(\"onReady\");\n }\n function getClosestActiveElement() {\n var _a;\n return (((_a = self.calendarContainer) === null || _a === void 0 ? void 0 : _a.getRootNode())\n .activeElement || document.activeElement);\n }\n function bindToInstance(fn) {\n return fn.bind(self);\n }\n function setCalendarWidth() {\n var config = self.config;\n if (config.weekNumbers === false && config.showMonths === 1) {\n return;\n }\n else if (config.noCalendar !== true) {\n window.requestAnimationFrame(function () {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.style.visibility = \"hidden\";\n self.calendarContainer.style.display = \"block\";\n }\n if (self.daysContainer !== undefined) {\n var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;\n self.daysContainer.style.width = daysWidth + \"px\";\n self.calendarContainer.style.width =\n daysWidth +\n (self.weekWrapper !== undefined\n ? self.weekWrapper.offsetWidth\n : 0) +\n \"px\";\n self.calendarContainer.style.removeProperty(\"visibility\");\n self.calendarContainer.style.removeProperty(\"display\");\n }\n });\n }\n }\n function updateTime(e) {\n if (self.selectedDates.length === 0) {\n var defaultDate = self.config.minDate === undefined ||\n compareDates(new Date(), self.config.minDate) >= 0\n ? new Date()\n : new Date(self.config.minDate.getTime());\n var defaults = getDefaultHours(self.config);\n defaultDate.setHours(defaults.hours, defaults.minutes, defaults.seconds, defaultDate.getMilliseconds());\n self.selectedDates = [defaultDate];\n self.latestSelectedDateObj = defaultDate;\n }\n if (e !== undefined && e.type !== \"blur\") {\n timeWrapper(e);\n }\n var prevValue = self._input.value;\n setHoursFromInputs();\n updateValue();\n if (self._input.value !== prevValue) {\n self._debouncedChange();\n }\n }\n function ampm2military(hour, amPM) {\n return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);\n }\n function military2ampm(hour) {\n switch (hour % 24) {\n case 0:\n case 12:\n return 12;\n default:\n return hour % 12;\n }\n }\n function setHoursFromInputs() {\n if (self.hourElement === undefined || self.minuteElement === undefined)\n return;\n var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined\n ? (parseInt(self.secondElement.value, 10) || 0) % 60\n : 0;\n if (self.amPM !== undefined) {\n hours = ampm2military(hours, self.amPM.textContent);\n }\n var limitMinHours = self.config.minTime !== undefined ||\n (self.config.minDate &&\n self.minDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===\n 0);\n var limitMaxHours = self.config.maxTime !== undefined ||\n (self.config.maxDate &&\n self.maxDateHasTime &&\n self.latestSelectedDateObj &&\n compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===\n 0);\n if (self.config.maxTime !== undefined &&\n self.config.minTime !== undefined &&\n self.config.minTime > self.config.maxTime) {\n var minBound = calculateSecondsSinceMidnight(self.config.minTime.getHours(), self.config.minTime.getMinutes(), self.config.minTime.getSeconds());\n var maxBound = calculateSecondsSinceMidnight(self.config.maxTime.getHours(), self.config.maxTime.getMinutes(), self.config.maxTime.getSeconds());\n var currentTime = calculateSecondsSinceMidnight(hours, minutes, seconds);\n if (currentTime > maxBound && currentTime < minBound) {\n var result = parseSeconds(minBound);\n hours = result[0];\n minutes = result[1];\n seconds = result[2];\n }\n }\n else {\n if (limitMaxHours) {\n var maxTime = self.config.maxTime !== undefined\n ? self.config.maxTime\n : self.config.maxDate;\n hours = Math.min(hours, maxTime.getHours());\n if (hours === maxTime.getHours())\n minutes = Math.min(minutes, maxTime.getMinutes());\n if (minutes === maxTime.getMinutes())\n seconds = Math.min(seconds, maxTime.getSeconds());\n }\n if (limitMinHours) {\n var minTime = self.config.minTime !== undefined\n ? self.config.minTime\n : self.config.minDate;\n hours = Math.max(hours, minTime.getHours());\n if (hours === minTime.getHours() && minutes < minTime.getMinutes())\n minutes = minTime.getMinutes();\n if (minutes === minTime.getMinutes())\n seconds = Math.max(seconds, minTime.getSeconds());\n }\n }\n setHours(hours, minutes, seconds);\n }\n function setHoursFromDate(dateObj) {\n var date = dateObj || self.latestSelectedDateObj;\n if (date && date instanceof Date) {\n setHours(date.getHours(), date.getMinutes(), date.getSeconds());\n }\n }\n function setHours(hours, minutes, seconds) {\n if (self.latestSelectedDateObj !== undefined) {\n self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);\n }\n if (!self.hourElement || !self.minuteElement || self.isMobile)\n return;\n self.hourElement.value = pad(!self.config.time_24hr\n ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)\n : hours);\n self.minuteElement.value = pad(minutes);\n if (self.amPM !== undefined)\n self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];\n if (self.secondElement !== undefined)\n self.secondElement.value = pad(seconds);\n }\n function onYearInput(event) {\n var eventTarget = getEventTarget(event);\n var year = parseInt(eventTarget.value) + (event.delta || 0);\n if (year / 1000 > 1 ||\n (event.key === \"Enter\" && !/[^\\d]/.test(year.toString()))) {\n changeYear(year);\n }\n }\n function bind(element, event, handler, options) {\n if (event instanceof Array)\n return event.forEach(function (ev) { return bind(element, ev, handler, options); });\n if (element instanceof Array)\n return element.forEach(function (el) { return bind(el, event, handler, options); });\n element.addEventListener(event, handler, options);\n self._handlers.push({\n remove: function () { return element.removeEventListener(event, handler, options); },\n });\n }\n function triggerChange() {\n triggerEvent(\"onChange\");\n }\n function bindEvents() {\n if (self.config.wrap) {\n [\"open\", \"close\", \"toggle\", \"clear\"].forEach(function (evt) {\n Array.prototype.forEach.call(self.element.querySelectorAll(\"[data-\" + evt + \"]\"), function (el) {\n return bind(el, \"click\", self[evt]);\n });\n });\n }\n if (self.isMobile) {\n setupMobile();\n return;\n }\n var debouncedResize = debounce(onResize, 50);\n self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);\n if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))\n bind(self.daysContainer, \"mouseover\", function (e) {\n if (self.config.mode === \"range\")\n onMouseOver(getEventTarget(e));\n });\n bind(self._input, \"keydown\", onKeyDown);\n if (self.calendarContainer !== undefined) {\n bind(self.calendarContainer, \"keydown\", onKeyDown);\n }\n if (!self.config.inline && !self.config.static)\n bind(window, \"resize\", debouncedResize);\n if (window.ontouchstart !== undefined)\n bind(window.document, \"touchstart\", documentClick);\n else\n bind(window.document, \"mousedown\", documentClick);\n bind(window.document, \"focus\", documentClick, { capture: true });\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n if (self.daysContainer !== undefined) {\n bind(self.monthNav, \"click\", onMonthNavClick);\n bind(self.monthNav, [\"keyup\", \"increment\"], onYearInput);\n bind(self.daysContainer, \"click\", selectDate);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined) {\n var selText = function (e) {\n return getEventTarget(e).select();\n };\n bind(self.timeContainer, [\"increment\"], updateTime);\n bind(self.timeContainer, \"blur\", updateTime, { capture: true });\n bind(self.timeContainer, \"click\", timeIncrement);\n bind([self.hourElement, self.minuteElement], [\"focus\", \"click\"], selText);\n if (self.secondElement !== undefined)\n bind(self.secondElement, \"focus\", function () { return self.secondElement && self.secondElement.select(); });\n if (self.amPM !== undefined) {\n bind(self.amPM, \"click\", function (e) {\n updateTime(e);\n });\n }\n }\n if (self.config.allowInput) {\n bind(self._input, \"blur\", onBlur);\n }\n }\n function jumpToDate(jumpDate, triggerChange) {\n var jumpTo = jumpDate !== undefined\n ? self.parseDate(jumpDate)\n : self.latestSelectedDateObj ||\n (self.config.minDate && self.config.minDate > self.now\n ? self.config.minDate\n : self.config.maxDate && self.config.maxDate < self.now\n ? self.config.maxDate\n : self.now);\n var oldYear = self.currentYear;\n var oldMonth = self.currentMonth;\n try {\n if (jumpTo !== undefined) {\n self.currentYear = jumpTo.getFullYear();\n self.currentMonth = jumpTo.getMonth();\n }\n }\n catch (e) {\n e.message = \"Invalid date supplied: \" + jumpTo;\n self.config.errorHandler(e);\n }\n if (triggerChange && self.currentYear !== oldYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n if (triggerChange &&\n (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {\n triggerEvent(\"onMonthChange\");\n }\n self.redraw();\n }\n function timeIncrement(e) {\n var eventTarget = getEventTarget(e);\n if (~eventTarget.className.indexOf(\"arrow\"))\n incrementNumInput(e, eventTarget.classList.contains(\"arrowUp\") ? 1 : -1);\n }\n function incrementNumInput(e, delta, inputElem) {\n var target = e && getEventTarget(e);\n var input = inputElem ||\n (target && target.parentNode && target.parentNode.firstChild);\n var event = createEvent(\"increment\");\n event.delta = delta;\n input && input.dispatchEvent(event);\n }\n function build() {\n var fragment = window.document.createDocumentFragment();\n self.calendarContainer = createElement(\"div\", \"flatpickr-calendar\");\n self.calendarContainer.tabIndex = -1;\n if (!self.config.noCalendar) {\n fragment.appendChild(buildMonthNav());\n self.innerContainer = createElement(\"div\", \"flatpickr-innerContainer\");\n if (self.config.weekNumbers) {\n var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;\n self.innerContainer.appendChild(weekWrapper);\n self.weekNumbers = weekNumbers;\n self.weekWrapper = weekWrapper;\n }\n self.rContainer = createElement(\"div\", \"flatpickr-rContainer\");\n self.rContainer.appendChild(buildWeekdays());\n if (!self.daysContainer) {\n self.daysContainer = createElement(\"div\", \"flatpickr-days\");\n self.daysContainer.tabIndex = -1;\n }\n buildDays();\n self.rContainer.appendChild(self.daysContainer);\n self.innerContainer.appendChild(self.rContainer);\n fragment.appendChild(self.innerContainer);\n }\n if (self.config.enableTime) {\n fragment.appendChild(buildTime());\n }\n toggleClass(self.calendarContainer, \"rangeMode\", self.config.mode === \"range\");\n toggleClass(self.calendarContainer, \"animate\", self.config.animate === true);\n toggleClass(self.calendarContainer, \"multiMonth\", self.config.showMonths > 1);\n self.calendarContainer.appendChild(fragment);\n var customAppend = self.config.appendTo !== undefined &&\n self.config.appendTo.nodeType !== undefined;\n if (self.config.inline || self.config.static) {\n self.calendarContainer.classList.add(self.config.inline ? \"inline\" : \"static\");\n if (self.config.inline) {\n if (!customAppend && self.element.parentNode)\n self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);\n else if (self.config.appendTo !== undefined)\n self.config.appendTo.appendChild(self.calendarContainer);\n }\n if (self.config.static) {\n var wrapper = createElement(\"div\", \"flatpickr-wrapper\");\n if (self.element.parentNode)\n self.element.parentNode.insertBefore(wrapper, self.element);\n wrapper.appendChild(self.element);\n if (self.altInput)\n wrapper.appendChild(self.altInput);\n wrapper.appendChild(self.calendarContainer);\n }\n }\n if (!self.config.static && !self.config.inline)\n (self.config.appendTo !== undefined\n ? self.config.appendTo\n : window.document.body).appendChild(self.calendarContainer);\n }\n function createDay(className, date, _dayNumber, i) {\n var dateIsEnabled = isEnabled(date, true), dayElement = createElement(\"span\", className, date.getDate().toString());\n dayElement.dateObj = date;\n dayElement.$i = i;\n dayElement.setAttribute(\"aria-label\", self.formatDate(date, self.config.ariaDateFormat));\n if (className.indexOf(\"hidden\") === -1 &&\n compareDates(date, self.now) === 0) {\n self.todayDateElem = dayElement;\n dayElement.classList.add(\"today\");\n dayElement.setAttribute(\"aria-current\", \"date\");\n }\n if (dateIsEnabled) {\n dayElement.tabIndex = -1;\n if (isDateSelected(date)) {\n dayElement.classList.add(\"selected\");\n self.selectedDateElem = dayElement;\n if (self.config.mode === \"range\") {\n toggleClass(dayElement, \"startRange\", self.selectedDates[0] &&\n compareDates(date, self.selectedDates[0], true) === 0);\n toggleClass(dayElement, \"endRange\", self.selectedDates[1] &&\n compareDates(date, self.selectedDates[1], true) === 0);\n if (className === \"nextMonthDay\")\n dayElement.classList.add(\"inRange\");\n }\n }\n }\n else {\n dayElement.classList.add(\"flatpickr-disabled\");\n }\n if (self.config.mode === \"range\") {\n if (isDateInRange(date) && !isDateSelected(date))\n dayElement.classList.add(\"inRange\");\n }\n if (self.weekNumbers &&\n self.config.showMonths === 1 &&\n className !== \"prevMonthDay\" &&\n i % 7 === 6) {\n self.weekNumbers.insertAdjacentHTML(\"beforeend\", \"\" + self.config.getWeek(date) + \"\");\n }\n triggerEvent(\"onDayCreate\", dayElement);\n return dayElement;\n }\n function focusOnDayElem(targetNode) {\n targetNode.focus();\n if (self.config.mode === \"range\")\n onMouseOver(targetNode);\n }\n function getFirstAvailableDay(delta) {\n var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n for (var m = startMonth; m != endMonth; m += delta) {\n var month = self.daysContainer.children[m];\n var startIndex = delta > 0 ? 0 : month.children.length - 1;\n var endIndex = delta > 0 ? month.children.length : -1;\n for (var i = startIndex; i != endIndex; i += delta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 && isEnabled(c.dateObj))\n return c;\n }\n }\n return undefined;\n }\n function getNextAvailableDay(current, delta) {\n var givenMonth = current.className.indexOf(\"Month\") === -1\n ? current.dateObj.getMonth()\n : self.currentMonth;\n var endMonth = delta > 0 ? self.config.showMonths : -1;\n var loopDelta = delta > 0 ? 1 : -1;\n for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {\n var month = self.daysContainer.children[m];\n var startIndex = givenMonth - self.currentMonth === m\n ? current.$i + delta\n : delta < 0\n ? month.children.length - 1\n : 0;\n var numMonthDays = month.children.length;\n for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {\n var c = month.children[i];\n if (c.className.indexOf(\"hidden\") === -1 &&\n isEnabled(c.dateObj) &&\n Math.abs(current.$i - i) >= Math.abs(delta))\n return focusOnDayElem(c);\n }\n }\n self.changeMonth(loopDelta);\n focusOnDay(getFirstAvailableDay(loopDelta), 0);\n return undefined;\n }\n function focusOnDay(current, offset) {\n var activeElement = getClosestActiveElement();\n var dayFocused = isInView(activeElement || document.body);\n var startElem = current !== undefined\n ? current\n : dayFocused\n ? activeElement\n : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)\n ? self.selectedDateElem\n : self.todayDateElem !== undefined && isInView(self.todayDateElem)\n ? self.todayDateElem\n : getFirstAvailableDay(offset > 0 ? 1 : -1);\n if (startElem === undefined) {\n self._input.focus();\n }\n else if (!dayFocused) {\n focusOnDayElem(startElem);\n }\n else {\n getNextAvailableDay(startElem, offset);\n }\n }\n function buildMonthDays(year, month) {\n var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;\n var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12, year);\n var daysInMonth = self.utils.getDaysInMonth(month, year), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? \"prevMonthDay hidden\" : \"prevMonthDay\", nextMonthDayClass = isMultiMonth ? \"nextMonthDay hidden\" : \"nextMonthDay\";\n var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;\n for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day \" + prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));\n }\n for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day\", new Date(year, month, dayNumber), dayNumber, dayIndex));\n }\n for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&\n (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {\n days.appendChild(createDay(\"flatpickr-day \" + nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));\n }\n var dayContainer = createElement(\"div\", \"dayContainer\");\n dayContainer.appendChild(days);\n return dayContainer;\n }\n function buildDays() {\n if (self.daysContainer === undefined) {\n return;\n }\n clearNode(self.daysContainer);\n if (self.weekNumbers)\n clearNode(self.weekNumbers);\n var frag = document.createDocumentFragment();\n for (var i = 0; i < self.config.showMonths; i++) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));\n }\n self.daysContainer.appendChild(frag);\n self.days = self.daysContainer.firstChild;\n if (self.config.mode === \"range\" && self.selectedDates.length === 1) {\n onMouseOver();\n }\n }\n function buildMonthSwitch() {\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType !== \"dropdown\")\n return;\n var shouldBuildMonth = function (month) {\n if (self.config.minDate !== undefined &&\n self.currentYear === self.config.minDate.getFullYear() &&\n month < self.config.minDate.getMonth()) {\n return false;\n }\n return !(self.config.maxDate !== undefined &&\n self.currentYear === self.config.maxDate.getFullYear() &&\n month > self.config.maxDate.getMonth());\n };\n self.monthsDropdownContainer.tabIndex = -1;\n self.monthsDropdownContainer.innerHTML = \"\";\n for (var i = 0; i < 12; i++) {\n if (!shouldBuildMonth(i))\n continue;\n var month = createElement(\"option\", \"flatpickr-monthDropdown-month\");\n month.value = new Date(self.currentYear, i).getMonth().toString();\n month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);\n month.tabIndex = -1;\n if (self.currentMonth === i) {\n month.selected = true;\n }\n self.monthsDropdownContainer.appendChild(month);\n }\n }\n function buildMonth() {\n var container = createElement(\"div\", \"flatpickr-month\");\n var monthNavFragment = window.document.createDocumentFragment();\n var monthElement;\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n monthElement = createElement(\"span\", \"cur-month\");\n }\n else {\n self.monthsDropdownContainer = createElement(\"select\", \"flatpickr-monthDropdown-months\");\n self.monthsDropdownContainer.setAttribute(\"aria-label\", self.l10n.monthAriaLabel);\n bind(self.monthsDropdownContainer, \"change\", function (e) {\n var target = getEventTarget(e);\n var selectedMonth = parseInt(target.value, 10);\n self.changeMonth(selectedMonth - self.currentMonth);\n triggerEvent(\"onMonthChange\");\n });\n buildMonthSwitch();\n monthElement = self.monthsDropdownContainer;\n }\n var yearInput = createNumberInput(\"cur-year\", { tabindex: \"-1\" });\n var yearElement = yearInput.getElementsByTagName(\"input\")[0];\n yearElement.setAttribute(\"aria-label\", self.l10n.yearAriaLabel);\n if (self.config.minDate) {\n yearElement.setAttribute(\"min\", self.config.minDate.getFullYear().toString());\n }\n if (self.config.maxDate) {\n yearElement.setAttribute(\"max\", self.config.maxDate.getFullYear().toString());\n yearElement.disabled =\n !!self.config.minDate &&\n self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();\n }\n var currentMonth = createElement(\"div\", \"flatpickr-current-month\");\n currentMonth.appendChild(monthElement);\n currentMonth.appendChild(yearInput);\n monthNavFragment.appendChild(currentMonth);\n container.appendChild(monthNavFragment);\n return {\n container: container,\n yearElement: yearElement,\n monthElement: monthElement,\n };\n }\n function buildMonths() {\n clearNode(self.monthNav);\n self.monthNav.appendChild(self.prevMonthNav);\n if (self.config.showMonths) {\n self.yearElements = [];\n self.monthElements = [];\n }\n for (var m = self.config.showMonths; m--;) {\n var month = buildMonth();\n self.yearElements.push(month.yearElement);\n self.monthElements.push(month.monthElement);\n self.monthNav.appendChild(month.container);\n }\n self.monthNav.appendChild(self.nextMonthNav);\n }\n function buildMonthNav() {\n self.monthNav = createElement(\"div\", \"flatpickr-months\");\n self.yearElements = [];\n self.monthElements = [];\n self.prevMonthNav = createElement(\"span\", \"flatpickr-prev-month\");\n self.prevMonthNav.innerHTML = self.config.prevArrow;\n self.nextMonthNav = createElement(\"span\", \"flatpickr-next-month\");\n self.nextMonthNav.innerHTML = self.config.nextArrow;\n buildMonths();\n Object.defineProperty(self, \"_hidePrevMonthArrow\", {\n get: function () { return self.__hidePrevMonthArrow; },\n set: function (bool) {\n if (self.__hidePrevMonthArrow !== bool) {\n toggleClass(self.prevMonthNav, \"flatpickr-disabled\", bool);\n self.__hidePrevMonthArrow = bool;\n }\n },\n });\n Object.defineProperty(self, \"_hideNextMonthArrow\", {\n get: function () { return self.__hideNextMonthArrow; },\n set: function (bool) {\n if (self.__hideNextMonthArrow !== bool) {\n toggleClass(self.nextMonthNav, \"flatpickr-disabled\", bool);\n self.__hideNextMonthArrow = bool;\n }\n },\n });\n self.currentYearElement = self.yearElements[0];\n updateNavigationCurrentMonth();\n return self.monthNav;\n }\n function buildTime() {\n self.calendarContainer.classList.add(\"hasTime\");\n if (self.config.noCalendar)\n self.calendarContainer.classList.add(\"noCalendar\");\n var defaults = getDefaultHours(self.config);\n self.timeContainer = createElement(\"div\", \"flatpickr-time\");\n self.timeContainer.tabIndex = -1;\n var separator = createElement(\"span\", \"flatpickr-time-separator\", \":\");\n var hourInput = createNumberInput(\"flatpickr-hour\", {\n \"aria-label\": self.l10n.hourAriaLabel,\n });\n self.hourElement = hourInput.getElementsByTagName(\"input\")[0];\n var minuteInput = createNumberInput(\"flatpickr-minute\", {\n \"aria-label\": self.l10n.minuteAriaLabel,\n });\n self.minuteElement = minuteInput.getElementsByTagName(\"input\")[0];\n self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;\n self.hourElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getHours()\n : self.config.time_24hr\n ? defaults.hours\n : military2ampm(defaults.hours));\n self.minuteElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getMinutes()\n : defaults.minutes);\n self.hourElement.setAttribute(\"step\", self.config.hourIncrement.toString());\n self.minuteElement.setAttribute(\"step\", self.config.minuteIncrement.toString());\n self.hourElement.setAttribute(\"min\", self.config.time_24hr ? \"0\" : \"1\");\n self.hourElement.setAttribute(\"max\", self.config.time_24hr ? \"23\" : \"12\");\n self.hourElement.setAttribute(\"maxlength\", \"2\");\n self.minuteElement.setAttribute(\"min\", \"0\");\n self.minuteElement.setAttribute(\"max\", \"59\");\n self.minuteElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(hourInput);\n self.timeContainer.appendChild(separator);\n self.timeContainer.appendChild(minuteInput);\n if (self.config.time_24hr)\n self.timeContainer.classList.add(\"time24hr\");\n if (self.config.enableSeconds) {\n self.timeContainer.classList.add(\"hasSeconds\");\n var secondInput = createNumberInput(\"flatpickr-second\");\n self.secondElement = secondInput.getElementsByTagName(\"input\")[0];\n self.secondElement.value = pad(self.latestSelectedDateObj\n ? self.latestSelectedDateObj.getSeconds()\n : defaults.seconds);\n self.secondElement.setAttribute(\"step\", self.minuteElement.getAttribute(\"step\"));\n self.secondElement.setAttribute(\"min\", \"0\");\n self.secondElement.setAttribute(\"max\", \"59\");\n self.secondElement.setAttribute(\"maxlength\", \"2\");\n self.timeContainer.appendChild(createElement(\"span\", \"flatpickr-time-separator\", \":\"));\n self.timeContainer.appendChild(secondInput);\n }\n if (!self.config.time_24hr) {\n self.amPM = createElement(\"span\", \"flatpickr-am-pm\", self.l10n.amPM[int((self.latestSelectedDateObj\n ? self.hourElement.value\n : self.config.defaultHour) > 11)]);\n self.amPM.title = self.l10n.toggleTitle;\n self.amPM.tabIndex = -1;\n self.timeContainer.appendChild(self.amPM);\n }\n return self.timeContainer;\n }\n function buildWeekdays() {\n if (!self.weekdayContainer)\n self.weekdayContainer = createElement(\"div\", \"flatpickr-weekdays\");\n else\n clearNode(self.weekdayContainer);\n for (var i = self.config.showMonths; i--;) {\n var container = createElement(\"div\", \"flatpickr-weekdaycontainer\");\n self.weekdayContainer.appendChild(container);\n }\n updateWeekdays();\n return self.weekdayContainer;\n }\n function updateWeekdays() {\n if (!self.weekdayContainer) {\n return;\n }\n var firstDayOfWeek = self.l10n.firstDayOfWeek;\n var weekdays = __spreadArrays(self.l10n.weekdays.shorthand);\n if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {\n weekdays = __spreadArrays(weekdays.splice(firstDayOfWeek, weekdays.length), weekdays.splice(0, firstDayOfWeek));\n }\n for (var i = self.config.showMonths; i--;) {\n self.weekdayContainer.children[i].innerHTML = \"\\n \\n \" + weekdays.join(\"\") + \"\\n \\n \";\n }\n }\n function buildWeeks() {\n self.calendarContainer.classList.add(\"hasWeeks\");\n var weekWrapper = createElement(\"div\", \"flatpickr-weekwrapper\");\n weekWrapper.appendChild(createElement(\"span\", \"flatpickr-weekday\", self.l10n.weekAbbreviation));\n var weekNumbers = createElement(\"div\", \"flatpickr-weeks\");\n weekWrapper.appendChild(weekNumbers);\n return {\n weekWrapper: weekWrapper,\n weekNumbers: weekNumbers,\n };\n }\n function changeMonth(value, isOffset) {\n if (isOffset === void 0) { isOffset = true; }\n var delta = isOffset ? value : value - self.currentMonth;\n if ((delta < 0 && self._hidePrevMonthArrow === true) ||\n (delta > 0 && self._hideNextMonthArrow === true))\n return;\n self.currentMonth += delta;\n if (self.currentMonth < 0 || self.currentMonth > 11) {\n self.currentYear += self.currentMonth > 11 ? 1 : -1;\n self.currentMonth = (self.currentMonth + 12) % 12;\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n buildDays();\n triggerEvent(\"onMonthChange\");\n updateNavigationCurrentMonth();\n }\n function clear(triggerChangeEvent, toInitial) {\n if (triggerChangeEvent === void 0) { triggerChangeEvent = true; }\n if (toInitial === void 0) { toInitial = true; }\n self.input.value = \"\";\n if (self.altInput !== undefined)\n self.altInput.value = \"\";\n if (self.mobileInput !== undefined)\n self.mobileInput.value = \"\";\n self.selectedDates = [];\n self.latestSelectedDateObj = undefined;\n if (toInitial === true) {\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n }\n if (self.config.enableTime === true) {\n var _a = getDefaultHours(self.config), hours = _a.hours, minutes = _a.minutes, seconds = _a.seconds;\n setHours(hours, minutes, seconds);\n }\n self.redraw();\n if (triggerChangeEvent)\n triggerEvent(\"onChange\");\n }\n function close() {\n self.isOpen = false;\n if (!self.isMobile) {\n if (self.calendarContainer !== undefined) {\n self.calendarContainer.classList.remove(\"open\");\n }\n if (self._input !== undefined) {\n self._input.classList.remove(\"active\");\n }\n }\n triggerEvent(\"onClose\");\n }\n function destroy() {\n if (self.config !== undefined)\n triggerEvent(\"onDestroy\");\n for (var i = self._handlers.length; i--;) {\n self._handlers[i].remove();\n }\n self._handlers = [];\n if (self.mobileInput) {\n if (self.mobileInput.parentNode)\n self.mobileInput.parentNode.removeChild(self.mobileInput);\n self.mobileInput = undefined;\n }\n else if (self.calendarContainer && self.calendarContainer.parentNode) {\n if (self.config.static && self.calendarContainer.parentNode) {\n var wrapper = self.calendarContainer.parentNode;\n wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);\n if (wrapper.parentNode) {\n while (wrapper.firstChild)\n wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);\n wrapper.parentNode.removeChild(wrapper);\n }\n }\n else\n self.calendarContainer.parentNode.removeChild(self.calendarContainer);\n }\n if (self.altInput) {\n self.input.type = \"text\";\n if (self.altInput.parentNode)\n self.altInput.parentNode.removeChild(self.altInput);\n delete self.altInput;\n }\n if (self.input) {\n self.input.type = self.input._type;\n self.input.classList.remove(\"flatpickr-input\");\n self.input.removeAttribute(\"readonly\");\n }\n [\n \"_showTimeInput\",\n \"latestSelectedDateObj\",\n \"_hideNextMonthArrow\",\n \"_hidePrevMonthArrow\",\n \"__hideNextMonthArrow\",\n \"__hidePrevMonthArrow\",\n \"isMobile\",\n \"isOpen\",\n \"selectedDateElem\",\n \"minDateHasTime\",\n \"maxDateHasTime\",\n \"days\",\n \"daysContainer\",\n \"_input\",\n \"_positionElement\",\n \"innerContainer\",\n \"rContainer\",\n \"monthNav\",\n \"todayDateElem\",\n \"calendarContainer\",\n \"weekdayContainer\",\n \"prevMonthNav\",\n \"nextMonthNav\",\n \"monthsDropdownContainer\",\n \"currentMonthElement\",\n \"currentYearElement\",\n \"navigationCurrentMonth\",\n \"selectedDateElem\",\n \"config\",\n ].forEach(function (k) {\n try {\n delete self[k];\n }\n catch (_) { }\n });\n }\n function isCalendarElem(elem) {\n return self.calendarContainer.contains(elem);\n }\n function documentClick(e) {\n if (self.isOpen && !self.config.inline) {\n var eventTarget_1 = getEventTarget(e);\n var isCalendarElement = isCalendarElem(eventTarget_1);\n var isInput = eventTarget_1 === self.input ||\n eventTarget_1 === self.altInput ||\n self.element.contains(eventTarget_1) ||\n (e.path &&\n e.path.indexOf &&\n (~e.path.indexOf(self.input) ||\n ~e.path.indexOf(self.altInput)));\n var lostFocus = !isInput &&\n !isCalendarElement &&\n !isCalendarElem(e.relatedTarget);\n var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {\n return elem.contains(eventTarget_1);\n });\n if (lostFocus && isIgnored) {\n if (self.config.allowInput) {\n self.setDate(self._input.value, false, self.config.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n if (self.timeContainer !== undefined &&\n self.minuteElement !== undefined &&\n self.hourElement !== undefined &&\n self.input.value !== \"\" &&\n self.input.value !== undefined) {\n updateTime();\n }\n self.close();\n if (self.config &&\n self.config.mode === \"range\" &&\n self.selectedDates.length === 1)\n self.clear(false);\n }\n }\n }\n function changeYear(newYear) {\n if (!newYear ||\n (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||\n (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))\n return;\n var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;\n self.currentYear = newYearNum || self.currentYear;\n if (self.config.maxDate &&\n self.currentYear === self.config.maxDate.getFullYear()) {\n self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);\n }\n else if (self.config.minDate &&\n self.currentYear === self.config.minDate.getFullYear()) {\n self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);\n }\n if (isNewYear) {\n self.redraw();\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n }\n function isEnabled(date, timeless) {\n var _a;\n if (timeless === void 0) { timeless = true; }\n var dateToCheck = self.parseDate(date, undefined, timeless);\n if ((self.config.minDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||\n (self.config.maxDate &&\n dateToCheck &&\n compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))\n return false;\n if (!self.config.enable && self.config.disable.length === 0)\n return true;\n if (dateToCheck === undefined)\n return false;\n var bool = !!self.config.enable, array = (_a = self.config.enable) !== null && _a !== void 0 ? _a : self.config.disable;\n for (var i = 0, d = void 0; i < array.length; i++) {\n d = array[i];\n if (typeof d === \"function\" &&\n d(dateToCheck))\n return bool;\n else if (d instanceof Date &&\n dateToCheck !== undefined &&\n d.getTime() === dateToCheck.getTime())\n return bool;\n else if (typeof d === \"string\") {\n var parsed = self.parseDate(d, undefined, true);\n return parsed && parsed.getTime() === dateToCheck.getTime()\n ? bool\n : !bool;\n }\n else if (typeof d === \"object\" &&\n dateToCheck !== undefined &&\n d.from &&\n d.to &&\n dateToCheck.getTime() >= d.from.getTime() &&\n dateToCheck.getTime() <= d.to.getTime())\n return bool;\n }\n return !bool;\n }\n function isInView(elem) {\n if (self.daysContainer !== undefined)\n return (elem.className.indexOf(\"hidden\") === -1 &&\n elem.className.indexOf(\"flatpickr-disabled\") === -1 &&\n self.daysContainer.contains(elem));\n return false;\n }\n function onBlur(e) {\n var isInput = e.target === self._input;\n var valueChanged = self._input.value.trimEnd() !== getDateStr();\n if (isInput &&\n valueChanged &&\n !(e.relatedTarget && isCalendarElem(e.relatedTarget))) {\n self.setDate(self._input.value, true, e.target === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n }\n }\n function onKeyDown(e) {\n var eventTarget = getEventTarget(e);\n var isInput = self.config.wrap\n ? element.contains(eventTarget)\n : eventTarget === self._input;\n var allowInput = self.config.allowInput;\n var allowKeydown = self.isOpen && (!allowInput || !isInput);\n var allowInlineKeydown = self.config.inline && isInput && !allowInput;\n if (e.keyCode === 13 && isInput) {\n if (allowInput) {\n self.setDate(self._input.value, true, eventTarget === self.altInput\n ? self.config.altFormat\n : self.config.dateFormat);\n self.close();\n return eventTarget.blur();\n }\n else {\n self.open();\n }\n }\n else if (isCalendarElem(eventTarget) ||\n allowKeydown ||\n allowInlineKeydown) {\n var isTimeObj = !!self.timeContainer &&\n self.timeContainer.contains(eventTarget);\n switch (e.keyCode) {\n case 13:\n if (isTimeObj) {\n e.preventDefault();\n updateTime();\n focusAndClose();\n }\n else\n selectDate(e);\n break;\n case 27:\n e.preventDefault();\n focusAndClose();\n break;\n case 8:\n case 46:\n if (isInput && !self.config.allowInput) {\n e.preventDefault();\n self.clear();\n }\n break;\n case 37:\n case 39:\n if (!isTimeObj && !isInput) {\n e.preventDefault();\n var activeElement = getClosestActiveElement();\n if (self.daysContainer !== undefined &&\n (allowInput === false ||\n (activeElement && isInView(activeElement)))) {\n var delta_1 = e.keyCode === 39 ? 1 : -1;\n if (!e.ctrlKey)\n focusOnDay(undefined, delta_1);\n else {\n e.stopPropagation();\n changeMonth(delta_1);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n }\n }\n else if (self.hourElement)\n self.hourElement.focus();\n break;\n case 38:\n case 40:\n e.preventDefault();\n var delta = e.keyCode === 40 ? 1 : -1;\n if ((self.daysContainer &&\n eventTarget.$i !== undefined) ||\n eventTarget === self.input ||\n eventTarget === self.altInput) {\n if (e.ctrlKey) {\n e.stopPropagation();\n changeYear(self.currentYear - delta);\n focusOnDay(getFirstAvailableDay(1), 0);\n }\n else if (!isTimeObj)\n focusOnDay(undefined, delta * 7);\n }\n else if (eventTarget === self.currentYearElement) {\n changeYear(self.currentYear - delta);\n }\n else if (self.config.enableTime) {\n if (!isTimeObj && self.hourElement)\n self.hourElement.focus();\n updateTime(e);\n self._debouncedChange();\n }\n break;\n case 9:\n if (isTimeObj) {\n var elems = [\n self.hourElement,\n self.minuteElement,\n self.secondElement,\n self.amPM,\n ]\n .concat(self.pluginElements)\n .filter(function (x) { return x; });\n var i = elems.indexOf(eventTarget);\n if (i !== -1) {\n var target = elems[i + (e.shiftKey ? -1 : 1)];\n e.preventDefault();\n (target || self._input).focus();\n }\n }\n else if (!self.config.noCalendar &&\n self.daysContainer &&\n self.daysContainer.contains(eventTarget) &&\n e.shiftKey) {\n e.preventDefault();\n self._input.focus();\n }\n break;\n default:\n break;\n }\n }\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n switch (e.key) {\n case self.l10n.amPM[0].charAt(0):\n case self.l10n.amPM[0].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[0];\n setHoursFromInputs();\n updateValue();\n break;\n case self.l10n.amPM[1].charAt(0):\n case self.l10n.amPM[1].charAt(0).toLowerCase():\n self.amPM.textContent = self.l10n.amPM[1];\n setHoursFromInputs();\n updateValue();\n break;\n }\n }\n if (isInput || isCalendarElem(eventTarget)) {\n triggerEvent(\"onKeyDown\", e);\n }\n }\n function onMouseOver(elem, cellClass) {\n if (cellClass === void 0) { cellClass = \"flatpickr-day\"; }\n if (self.selectedDates.length !== 1 ||\n (elem &&\n (!elem.classList.contains(cellClass) ||\n elem.classList.contains(\"flatpickr-disabled\"))))\n return;\n var hoverDate = elem\n ? elem.dateObj.getTime()\n : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());\n var containsDisabled = false;\n var minRange = 0, maxRange = 0;\n for (var t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {\n if (!isEnabled(new Date(t), true)) {\n containsDisabled =\n containsDisabled || (t > rangeStartDate && t < rangeEndDate);\n if (t < initialDate && (!minRange || t > minRange))\n minRange = t;\n else if (t > initialDate && (!maxRange || t < maxRange))\n maxRange = t;\n }\n }\n var hoverableCells = Array.from(self.rContainer.querySelectorAll(\"*:nth-child(-n+\" + self.config.showMonths + \") > .\" + cellClass));\n hoverableCells.forEach(function (dayElem) {\n var date = dayElem.dateObj;\n var timestamp = date.getTime();\n var outOfRange = (minRange > 0 && timestamp < minRange) ||\n (maxRange > 0 && timestamp > maxRange);\n if (outOfRange) {\n dayElem.classList.add(\"notAllowed\");\n [\"inRange\", \"startRange\", \"endRange\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n return;\n }\n else if (containsDisabled && !outOfRange)\n return;\n [\"startRange\", \"inRange\", \"endRange\", \"notAllowed\"].forEach(function (c) {\n dayElem.classList.remove(c);\n });\n if (elem !== undefined) {\n elem.classList.add(hoverDate <= self.selectedDates[0].getTime()\n ? \"startRange\"\n : \"endRange\");\n if (initialDate < hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"startRange\");\n else if (initialDate > hoverDate && timestamp === initialDate)\n dayElem.classList.add(\"endRange\");\n if (timestamp >= minRange &&\n (maxRange === 0 || timestamp <= maxRange) &&\n isBetween(timestamp, initialDate, hoverDate))\n dayElem.classList.add(\"inRange\");\n }\n });\n }\n function onResize() {\n if (self.isOpen && !self.config.static && !self.config.inline)\n positionCalendar();\n }\n function open(e, positionElement) {\n if (positionElement === void 0) { positionElement = self._positionElement; }\n if (self.isMobile === true) {\n if (e) {\n e.preventDefault();\n var eventTarget = getEventTarget(e);\n if (eventTarget) {\n eventTarget.blur();\n }\n }\n if (self.mobileInput !== undefined) {\n self.mobileInput.focus();\n self.mobileInput.click();\n }\n triggerEvent(\"onOpen\");\n return;\n }\n else if (self._input.disabled || self.config.inline) {\n return;\n }\n var wasOpen = self.isOpen;\n self.isOpen = true;\n if (!wasOpen) {\n self.calendarContainer.classList.add(\"open\");\n self._input.classList.add(\"active\");\n triggerEvent(\"onOpen\");\n positionCalendar(positionElement);\n }\n if (self.config.enableTime === true && self.config.noCalendar === true) {\n if (self.config.allowInput === false &&\n (e === undefined ||\n !self.timeContainer.contains(e.relatedTarget))) {\n setTimeout(function () { return self.hourElement.select(); }, 50);\n }\n }\n }\n function minMaxDateSetter(type) {\n return function (date) {\n var dateObj = (self.config[\"_\" + type + \"Date\"] = self.parseDate(date, self.config.dateFormat));\n var inverseDateObj = self.config[\"_\" + (type === \"min\" ? \"max\" : \"min\") + \"Date\"];\n if (dateObj !== undefined) {\n self[type === \"min\" ? \"minDateHasTime\" : \"maxDateHasTime\"] =\n dateObj.getHours() > 0 ||\n dateObj.getMinutes() > 0 ||\n dateObj.getSeconds() > 0;\n }\n if (self.selectedDates) {\n self.selectedDates = self.selectedDates.filter(function (d) { return isEnabled(d); });\n if (!self.selectedDates.length && type === \"min\")\n setHoursFromDate(dateObj);\n updateValue();\n }\n if (self.daysContainer) {\n redraw();\n if (dateObj !== undefined)\n self.currentYearElement[type] = dateObj.getFullYear().toString();\n else\n self.currentYearElement.removeAttribute(type);\n self.currentYearElement.disabled =\n !!inverseDateObj &&\n dateObj !== undefined &&\n inverseDateObj.getFullYear() === dateObj.getFullYear();\n }\n };\n }\n function parseConfig() {\n var boolOpts = [\n \"wrap\",\n \"weekNumbers\",\n \"allowInput\",\n \"allowInvalidPreload\",\n \"clickOpens\",\n \"time_24hr\",\n \"enableTime\",\n \"noCalendar\",\n \"altInput\",\n \"shorthandCurrentMonth\",\n \"inline\",\n \"static\",\n \"enableSeconds\",\n \"disableMobile\",\n ];\n var userConfig = __assign(__assign({}, JSON.parse(JSON.stringify(element.dataset || {}))), instanceConfig);\n var formats = {};\n self.config.parseDate = userConfig.parseDate;\n self.config.formatDate = userConfig.formatDate;\n Object.defineProperty(self.config, \"enable\", {\n get: function () { return self.config._enable; },\n set: function (dates) {\n self.config._enable = parseDateRules(dates);\n },\n });\n Object.defineProperty(self.config, \"disable\", {\n get: function () { return self.config._disable; },\n set: function (dates) {\n self.config._disable = parseDateRules(dates);\n },\n });\n var timeMode = userConfig.mode === \"time\";\n if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {\n var defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaultOptions.dateFormat;\n formats.dateFormat =\n userConfig.noCalendar || timeMode\n ? \"H:i\" + (userConfig.enableSeconds ? \":S\" : \"\")\n : defaultDateFormat + \" H:i\" + (userConfig.enableSeconds ? \":S\" : \"\");\n }\n if (userConfig.altInput &&\n (userConfig.enableTime || timeMode) &&\n !userConfig.altFormat) {\n var defaultAltFormat = flatpickr.defaultConfig.altFormat || defaultOptions.altFormat;\n formats.altFormat =\n userConfig.noCalendar || timeMode\n ? \"h:i\" + (userConfig.enableSeconds ? \":S K\" : \" K\")\n : defaultAltFormat + (\" h:i\" + (userConfig.enableSeconds ? \":S\" : \"\") + \" K\");\n }\n Object.defineProperty(self.config, \"minDate\", {\n get: function () { return self.config._minDate; },\n set: minMaxDateSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxDate\", {\n get: function () { return self.config._maxDate; },\n set: minMaxDateSetter(\"max\"),\n });\n var minMaxTimeSetter = function (type) { return function (val) {\n self.config[type === \"min\" ? \"_minTime\" : \"_maxTime\"] = self.parseDate(val, \"H:i:S\");\n }; };\n Object.defineProperty(self.config, \"minTime\", {\n get: function () { return self.config._minTime; },\n set: minMaxTimeSetter(\"min\"),\n });\n Object.defineProperty(self.config, \"maxTime\", {\n get: function () { return self.config._maxTime; },\n set: minMaxTimeSetter(\"max\"),\n });\n if (userConfig.mode === \"time\") {\n self.config.noCalendar = true;\n self.config.enableTime = true;\n }\n Object.assign(self.config, formats, userConfig);\n for (var i = 0; i < boolOpts.length; i++)\n self.config[boolOpts[i]] =\n self.config[boolOpts[i]] === true ||\n self.config[boolOpts[i]] === \"true\";\n HOOKS.filter(function (hook) { return self.config[hook] !== undefined; }).forEach(function (hook) {\n self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);\n });\n self.isMobile =\n !self.config.disableMobile &&\n !self.config.inline &&\n self.config.mode === \"single\" &&\n !self.config.disable.length &&\n !self.config.enable &&\n !self.config.weekNumbers &&\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n for (var i = 0; i < self.config.plugins.length; i++) {\n var pluginConf = self.config.plugins[i](self) || {};\n for (var key in pluginConf) {\n if (HOOKS.indexOf(key) > -1) {\n self.config[key] = arrayify(pluginConf[key])\n .map(bindToInstance)\n .concat(self.config[key]);\n }\n else if (typeof userConfig[key] === \"undefined\")\n self.config[key] = pluginConf[key];\n }\n }\n if (!userConfig.altInputClass) {\n self.config.altInputClass =\n getInputElem().className + \" \" + self.config.altInputClass;\n }\n triggerEvent(\"onParseConfig\");\n }\n function getInputElem() {\n return self.config.wrap\n ? element.querySelector(\"[data-input]\")\n : element;\n }\n function setupLocale() {\n if (typeof self.config.locale !== \"object\" &&\n typeof flatpickr.l10ns[self.config.locale] === \"undefined\")\n self.config.errorHandler(new Error(\"flatpickr: invalid locale \" + self.config.locale));\n self.l10n = __assign(__assign({}, flatpickr.l10ns.default), (typeof self.config.locale === \"object\"\n ? self.config.locale\n : self.config.locale !== \"default\"\n ? flatpickr.l10ns[self.config.locale]\n : undefined));\n tokenRegex.D = \"(\" + self.l10n.weekdays.shorthand.join(\"|\") + \")\";\n tokenRegex.l = \"(\" + self.l10n.weekdays.longhand.join(\"|\") + \")\";\n tokenRegex.M = \"(\" + self.l10n.months.shorthand.join(\"|\") + \")\";\n tokenRegex.F = \"(\" + self.l10n.months.longhand.join(\"|\") + \")\";\n tokenRegex.K = \"(\" + self.l10n.amPM[0] + \"|\" + self.l10n.amPM[1] + \"|\" + self.l10n.amPM[0].toLowerCase() + \"|\" + self.l10n.amPM[1].toLowerCase() + \")\";\n var userConfig = __assign(__assign({}, instanceConfig), JSON.parse(JSON.stringify(element.dataset || {})));\n if (userConfig.time_24hr === undefined &&\n flatpickr.defaultConfig.time_24hr === undefined) {\n self.config.time_24hr = self.l10n.time_24hr;\n }\n self.formatDate = createDateFormatter(self);\n self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });\n }\n function positionCalendar(customPositionElement) {\n if (typeof self.config.position === \"function\") {\n return void self.config.position(self, customPositionElement);\n }\n if (self.calendarContainer === undefined)\n return;\n triggerEvent(\"onPreCalendarPosition\");\n var positionElement = customPositionElement || self._positionElement;\n var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (function (acc, child) { return acc + child.offsetHeight; }), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(\" \"), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === \"above\" ||\n (configPosVertical !== \"below\" &&\n distanceFromBottom < calendarHeight &&\n inputBounds.top > calendarHeight);\n var top = window.pageYOffset +\n inputBounds.top +\n (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);\n toggleClass(self.calendarContainer, \"arrowTop\", !showOnTop);\n toggleClass(self.calendarContainer, \"arrowBottom\", showOnTop);\n if (self.config.inline)\n return;\n var left = window.pageXOffset + inputBounds.left;\n var isCenter = false;\n var isRight = false;\n if (configPosHorizontal === \"center\") {\n left -= (calendarWidth - inputBounds.width) / 2;\n isCenter = true;\n }\n else if (configPosHorizontal === \"right\") {\n left -= calendarWidth - inputBounds.width;\n isRight = true;\n }\n toggleClass(self.calendarContainer, \"arrowLeft\", !isCenter && !isRight);\n toggleClass(self.calendarContainer, \"arrowCenter\", isCenter);\n toggleClass(self.calendarContainer, \"arrowRight\", isRight);\n var right = window.document.body.offsetWidth -\n (window.pageXOffset + inputBounds.right);\n var rightMost = left + calendarWidth > window.document.body.offsetWidth;\n var centerMost = right + calendarWidth > window.document.body.offsetWidth;\n toggleClass(self.calendarContainer, \"rightMost\", rightMost);\n if (self.config.static)\n return;\n self.calendarContainer.style.top = top + \"px\";\n if (!rightMost) {\n self.calendarContainer.style.left = left + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n else if (!centerMost) {\n self.calendarContainer.style.left = \"auto\";\n self.calendarContainer.style.right = right + \"px\";\n }\n else {\n var doc = getDocumentStyleSheet();\n if (doc === undefined)\n return;\n var bodyWidth = window.document.body.offsetWidth;\n var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);\n var centerBefore = \".flatpickr-calendar.centerMost:before\";\n var centerAfter = \".flatpickr-calendar.centerMost:after\";\n var centerIndex = doc.cssRules.length;\n var centerStyle = \"{left:\" + inputBounds.left + \"px;right:auto;}\";\n toggleClass(self.calendarContainer, \"rightMost\", false);\n toggleClass(self.calendarContainer, \"centerMost\", true);\n doc.insertRule(centerBefore + \",\" + centerAfter + centerStyle, centerIndex);\n self.calendarContainer.style.left = centerLeft + \"px\";\n self.calendarContainer.style.right = \"auto\";\n }\n }\n function getDocumentStyleSheet() {\n var editableSheet = null;\n for (var i = 0; i < document.styleSheets.length; i++) {\n var sheet = document.styleSheets[i];\n if (!sheet.cssRules)\n continue;\n try {\n sheet.cssRules;\n }\n catch (err) {\n continue;\n }\n editableSheet = sheet;\n break;\n }\n return editableSheet != null ? editableSheet : createStyleSheet();\n }\n function createStyleSheet() {\n var style = document.createElement(\"style\");\n document.head.appendChild(style);\n return style.sheet;\n }\n function redraw() {\n if (self.config.noCalendar || self.isMobile)\n return;\n buildMonthSwitch();\n updateNavigationCurrentMonth();\n buildDays();\n }\n function focusAndClose() {\n self._input.focus();\n if (window.navigator.userAgent.indexOf(\"MSIE\") !== -1 ||\n navigator.msMaxTouchPoints !== undefined) {\n setTimeout(self.close, 0);\n }\n else {\n self.close();\n }\n }\n function selectDate(e) {\n e.preventDefault();\n e.stopPropagation();\n var isSelectable = function (day) {\n return day.classList &&\n day.classList.contains(\"flatpickr-day\") &&\n !day.classList.contains(\"flatpickr-disabled\") &&\n !day.classList.contains(\"notAllowed\");\n };\n var t = findParent(getEventTarget(e), isSelectable);\n if (t === undefined)\n return;\n var target = t;\n var selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));\n var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||\n selectedDate.getMonth() >\n self.currentMonth + self.config.showMonths - 1) &&\n self.config.mode !== \"range\";\n self.selectedDateElem = target;\n if (self.config.mode === \"single\")\n self.selectedDates = [selectedDate];\n else if (self.config.mode === \"multiple\") {\n var selectedIndex = isDateSelected(selectedDate);\n if (selectedIndex)\n self.selectedDates.splice(parseInt(selectedIndex), 1);\n else\n self.selectedDates.push(selectedDate);\n }\n else if (self.config.mode === \"range\") {\n if (self.selectedDates.length === 2) {\n self.clear(false, false);\n }\n self.latestSelectedDateObj = selectedDate;\n self.selectedDates.push(selectedDate);\n if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n setHoursFromInputs();\n if (shouldChangeMonth) {\n var isNewYear = self.currentYear !== selectedDate.getFullYear();\n self.currentYear = selectedDate.getFullYear();\n self.currentMonth = selectedDate.getMonth();\n if (isNewYear) {\n triggerEvent(\"onYearChange\");\n buildMonthSwitch();\n }\n triggerEvent(\"onMonthChange\");\n }\n updateNavigationCurrentMonth();\n buildDays();\n updateValue();\n if (!shouldChangeMonth &&\n self.config.mode !== \"range\" &&\n self.config.showMonths === 1)\n focusOnDayElem(target);\n else if (self.selectedDateElem !== undefined &&\n self.hourElement === undefined) {\n self.selectedDateElem && self.selectedDateElem.focus();\n }\n if (self.hourElement !== undefined)\n self.hourElement !== undefined && self.hourElement.focus();\n if (self.config.closeOnSelect) {\n var single = self.config.mode === \"single\" && !self.config.enableTime;\n var range = self.config.mode === \"range\" &&\n self.selectedDates.length === 2 &&\n !self.config.enableTime;\n if (single || range) {\n focusAndClose();\n }\n }\n triggerChange();\n }\n var CALLBACKS = {\n locale: [setupLocale, updateWeekdays],\n showMonths: [buildMonths, setCalendarWidth, buildWeekdays],\n minDate: [jumpToDate],\n maxDate: [jumpToDate],\n positionElement: [updatePositionElement],\n clickOpens: [\n function () {\n if (self.config.clickOpens === true) {\n bind(self._input, \"focus\", self.open);\n bind(self._input, \"click\", self.open);\n }\n else {\n self._input.removeEventListener(\"focus\", self.open);\n self._input.removeEventListener(\"click\", self.open);\n }\n },\n ],\n };\n function set(option, value) {\n if (option !== null && typeof option === \"object\") {\n Object.assign(self.config, option);\n for (var key in option) {\n if (CALLBACKS[key] !== undefined)\n CALLBACKS[key].forEach(function (x) { return x(); });\n }\n }\n else {\n self.config[option] = value;\n if (CALLBACKS[option] !== undefined)\n CALLBACKS[option].forEach(function (x) { return x(); });\n else if (HOOKS.indexOf(option) > -1)\n self.config[option] = arrayify(value);\n }\n self.redraw();\n updateValue(true);\n }\n function setSelectedDate(inputDate, format) {\n var dates = [];\n if (inputDate instanceof Array)\n dates = inputDate.map(function (d) { return self.parseDate(d, format); });\n else if (inputDate instanceof Date || typeof inputDate === \"number\")\n dates = [self.parseDate(inputDate, format)];\n else if (typeof inputDate === \"string\") {\n switch (self.config.mode) {\n case \"single\":\n case \"time\":\n dates = [self.parseDate(inputDate, format)];\n break;\n case \"multiple\":\n dates = inputDate\n .split(self.config.conjunction)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n case \"range\":\n dates = inputDate\n .split(self.l10n.rangeSeparator)\n .map(function (date) { return self.parseDate(date, format); });\n break;\n default:\n break;\n }\n }\n else\n self.config.errorHandler(new Error(\"Invalid date supplied: \" + JSON.stringify(inputDate)));\n self.selectedDates = (self.config.allowInvalidPreload\n ? dates\n : dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); }));\n if (self.config.mode === \"range\")\n self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n function setDate(date, triggerChange, format) {\n if (triggerChange === void 0) { triggerChange = false; }\n if (format === void 0) { format = self.config.dateFormat; }\n if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))\n return self.clear(triggerChange);\n setSelectedDate(date, format);\n self.latestSelectedDateObj =\n self.selectedDates[self.selectedDates.length - 1];\n self.redraw();\n jumpToDate(undefined, triggerChange);\n setHoursFromDate();\n if (self.selectedDates.length === 0) {\n self.clear(false);\n }\n updateValue(triggerChange);\n if (triggerChange)\n triggerEvent(\"onChange\");\n }\n function parseDateRules(arr) {\n return arr\n .slice()\n .map(function (rule) {\n if (typeof rule === \"string\" ||\n typeof rule === \"number\" ||\n rule instanceof Date) {\n return self.parseDate(rule, undefined, true);\n }\n else if (rule &&\n typeof rule === \"object\" &&\n rule.from &&\n rule.to)\n return {\n from: self.parseDate(rule.from, undefined),\n to: self.parseDate(rule.to, undefined),\n };\n return rule;\n })\n .filter(function (x) { return x; });\n }\n function setupDates() {\n self.selectedDates = [];\n self.now = self.parseDate(self.config.now) || new Date();\n var preloadedDate = self.config.defaultDate ||\n ((self.input.nodeName === \"INPUT\" ||\n self.input.nodeName === \"TEXTAREA\") &&\n self.input.placeholder &&\n self.input.value === self.input.placeholder\n ? null\n : self.input.value);\n if (preloadedDate)\n setSelectedDate(preloadedDate, self.config.dateFormat);\n self._initialDate =\n self.selectedDates.length > 0\n ? self.selectedDates[0]\n : self.config.minDate &&\n self.config.minDate.getTime() > self.now.getTime()\n ? self.config.minDate\n : self.config.maxDate &&\n self.config.maxDate.getTime() < self.now.getTime()\n ? self.config.maxDate\n : self.now;\n self.currentYear = self._initialDate.getFullYear();\n self.currentMonth = self._initialDate.getMonth();\n if (self.selectedDates.length > 0)\n self.latestSelectedDateObj = self.selectedDates[0];\n if (self.config.minTime !== undefined)\n self.config.minTime = self.parseDate(self.config.minTime, \"H:i\");\n if (self.config.maxTime !== undefined)\n self.config.maxTime = self.parseDate(self.config.maxTime, \"H:i\");\n self.minDateHasTime =\n !!self.config.minDate &&\n (self.config.minDate.getHours() > 0 ||\n self.config.minDate.getMinutes() > 0 ||\n self.config.minDate.getSeconds() > 0);\n self.maxDateHasTime =\n !!self.config.maxDate &&\n (self.config.maxDate.getHours() > 0 ||\n self.config.maxDate.getMinutes() > 0 ||\n self.config.maxDate.getSeconds() > 0);\n }\n function setupInputs() {\n self.input = getInputElem();\n if (!self.input) {\n self.config.errorHandler(new Error(\"Invalid input element specified\"));\n return;\n }\n self.input._type = self.input.type;\n self.input.type = \"text\";\n self.input.classList.add(\"flatpickr-input\");\n self._input = self.input;\n if (self.config.altInput) {\n self.altInput = createElement(self.input.nodeName, self.config.altInputClass);\n self._input = self.altInput;\n self.altInput.placeholder = self.input.placeholder;\n self.altInput.disabled = self.input.disabled;\n self.altInput.required = self.input.required;\n self.altInput.tabIndex = self.input.tabIndex;\n self.altInput.type = \"text\";\n self.input.setAttribute(\"type\", \"hidden\");\n if (!self.config.static && self.input.parentNode)\n self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);\n }\n if (!self.config.allowInput)\n self._input.setAttribute(\"readonly\", \"readonly\");\n updatePositionElement();\n }\n function updatePositionElement() {\n self._positionElement = self.config.positionElement || self._input;\n }\n function setupMobile() {\n var inputType = self.config.enableTime\n ? self.config.noCalendar\n ? \"time\"\n : \"datetime-local\"\n : \"date\";\n self.mobileInput = createElement(\"input\", self.input.className + \" flatpickr-mobile\");\n self.mobileInput.tabIndex = 1;\n self.mobileInput.type = inputType;\n self.mobileInput.disabled = self.input.disabled;\n self.mobileInput.required = self.input.required;\n self.mobileInput.placeholder = self.input.placeholder;\n self.mobileFormatStr =\n inputType === \"datetime-local\"\n ? \"Y-m-d\\\\TH:i:S\"\n : inputType === \"date\"\n ? \"Y-m-d\"\n : \"H:i:S\";\n if (self.selectedDates.length > 0) {\n self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);\n }\n if (self.config.minDate)\n self.mobileInput.min = self.formatDate(self.config.minDate, \"Y-m-d\");\n if (self.config.maxDate)\n self.mobileInput.max = self.formatDate(self.config.maxDate, \"Y-m-d\");\n if (self.input.getAttribute(\"step\"))\n self.mobileInput.step = String(self.input.getAttribute(\"step\"));\n self.input.type = \"hidden\";\n if (self.altInput !== undefined)\n self.altInput.type = \"hidden\";\n try {\n if (self.input.parentNode)\n self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);\n }\n catch (_a) { }\n bind(self.mobileInput, \"change\", function (e) {\n self.setDate(getEventTarget(e).value, false, self.mobileFormatStr);\n triggerEvent(\"onChange\");\n triggerEvent(\"onClose\");\n });\n }\n function toggle(e) {\n if (self.isOpen === true)\n return self.close();\n self.open(e);\n }\n function triggerEvent(event, data) {\n if (self.config === undefined)\n return;\n var hooks = self.config[event];\n if (hooks !== undefined && hooks.length > 0) {\n for (var i = 0; hooks[i] && i < hooks.length; i++)\n hooks[i](self.selectedDates, self.input.value, self, data);\n }\n if (event === \"onChange\") {\n self.input.dispatchEvent(createEvent(\"change\"));\n self.input.dispatchEvent(createEvent(\"input\"));\n }\n }\n function createEvent(name) {\n var e = document.createEvent(\"Event\");\n e.initEvent(name, true, true);\n return e;\n }\n function isDateSelected(date) {\n for (var i = 0; i < self.selectedDates.length; i++) {\n var selectedDate = self.selectedDates[i];\n if (selectedDate instanceof Date &&\n compareDates(selectedDate, date) === 0)\n return \"\" + i;\n }\n return false;\n }\n function isDateInRange(date) {\n if (self.config.mode !== \"range\" || self.selectedDates.length < 2)\n return false;\n return (compareDates(date, self.selectedDates[0]) >= 0 &&\n compareDates(date, self.selectedDates[1]) <= 0);\n }\n function updateNavigationCurrentMonth() {\n if (self.config.noCalendar || self.isMobile || !self.monthNav)\n return;\n self.yearElements.forEach(function (yearElement, i) {\n var d = new Date(self.currentYear, self.currentMonth, 1);\n d.setMonth(self.currentMonth + i);\n if (self.config.showMonths > 1 ||\n self.config.monthSelectorType === \"static\") {\n self.monthElements[i].textContent =\n monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + \" \";\n }\n else {\n self.monthsDropdownContainer.value = d.getMonth().toString();\n }\n yearElement.value = d.getFullYear().toString();\n });\n self._hidePrevMonthArrow =\n self.config.minDate !== undefined &&\n (self.currentYear === self.config.minDate.getFullYear()\n ? self.currentMonth <= self.config.minDate.getMonth()\n : self.currentYear < self.config.minDate.getFullYear());\n self._hideNextMonthArrow =\n self.config.maxDate !== undefined &&\n (self.currentYear === self.config.maxDate.getFullYear()\n ? self.currentMonth + 1 > self.config.maxDate.getMonth()\n : self.currentYear > self.config.maxDate.getFullYear());\n }\n function getDateStr(specificFormat) {\n var format = specificFormat ||\n (self.config.altInput ? self.config.altFormat : self.config.dateFormat);\n return self.selectedDates\n .map(function (dObj) { return self.formatDate(dObj, format); })\n .filter(function (d, i, arr) {\n return self.config.mode !== \"range\" ||\n self.config.enableTime ||\n arr.indexOf(d) === i;\n })\n .join(self.config.mode !== \"range\"\n ? self.config.conjunction\n : self.l10n.rangeSeparator);\n }\n function updateValue(triggerChange) {\n if (triggerChange === void 0) { triggerChange = true; }\n if (self.mobileInput !== undefined && self.mobileFormatStr) {\n self.mobileInput.value =\n self.latestSelectedDateObj !== undefined\n ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)\n : \"\";\n }\n self.input.value = getDateStr(self.config.dateFormat);\n if (self.altInput !== undefined) {\n self.altInput.value = getDateStr(self.config.altFormat);\n }\n if (triggerChange !== false)\n triggerEvent(\"onValueUpdate\");\n }\n function onMonthNavClick(e) {\n var eventTarget = getEventTarget(e);\n var isPrevMonth = self.prevMonthNav.contains(eventTarget);\n var isNextMonth = self.nextMonthNav.contains(eventTarget);\n if (isPrevMonth || isNextMonth) {\n changeMonth(isPrevMonth ? -1 : 1);\n }\n else if (self.yearElements.indexOf(eventTarget) >= 0) {\n eventTarget.select();\n }\n else if (eventTarget.classList.contains(\"arrowUp\")) {\n self.changeYear(self.currentYear + 1);\n }\n else if (eventTarget.classList.contains(\"arrowDown\")) {\n self.changeYear(self.currentYear - 1);\n }\n }\n function timeWrapper(e) {\n e.preventDefault();\n var isKeyDown = e.type === \"keydown\", eventTarget = getEventTarget(e), input = eventTarget;\n if (self.amPM !== undefined && eventTarget === self.amPM) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n var min = parseFloat(input.getAttribute(\"min\")), max = parseFloat(input.getAttribute(\"max\")), step = parseFloat(input.getAttribute(\"step\")), curValue = parseInt(input.value, 10), delta = e.delta ||\n (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);\n var newValue = curValue + step * delta;\n if (typeof input.value !== \"undefined\" && input.value.length === 2) {\n var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;\n if (newValue < min) {\n newValue =\n max +\n newValue +\n int(!isHourElem) +\n (int(isHourElem) && int(!self.amPM));\n if (isMinuteElem)\n incrementNumInput(undefined, -1, self.hourElement);\n }\n else if (newValue > max) {\n newValue =\n input === self.hourElement ? newValue - max - int(!self.amPM) : min;\n if (isMinuteElem)\n incrementNumInput(undefined, 1, self.hourElement);\n }\n if (self.amPM &&\n isHourElem &&\n (step === 1\n ? newValue + curValue === 23\n : Math.abs(newValue - curValue) > step)) {\n self.amPM.textContent =\n self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];\n }\n input.value = pad(newValue);\n }\n }\n init();\n return self;\n}\nfunction _flatpickr(nodeList, config) {\n var nodes = Array.prototype.slice\n .call(nodeList)\n .filter(function (x) { return x instanceof HTMLElement; });\n var instances = [];\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i];\n try {\n if (node.getAttribute(\"data-fp-omit\") !== null)\n continue;\n if (node._flatpickr !== undefined) {\n node._flatpickr.destroy();\n node._flatpickr = undefined;\n }\n node._flatpickr = FlatpickrInstance(node, config || {});\n instances.push(node._flatpickr);\n }\n catch (e) {\n console.error(e);\n }\n }\n return instances.length === 1 ? instances[0] : instances;\n}\nif (typeof HTMLElement !== \"undefined\" &&\n typeof HTMLCollection !== \"undefined\" &&\n typeof NodeList !== \"undefined\") {\n HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n HTMLElement.prototype.flatpickr = function (config) {\n return _flatpickr([this], config);\n };\n}\nvar flatpickr = function (selector, config) {\n if (typeof selector === \"string\") {\n return _flatpickr(window.document.querySelectorAll(selector), config);\n }\n else if (selector instanceof Node) {\n return _flatpickr([selector], config);\n }\n else {\n return _flatpickr(selector, config);\n }\n};\nflatpickr.defaultConfig = {};\nflatpickr.l10ns = {\n en: __assign({}, English),\n default: __assign({}, English),\n};\nflatpickr.localize = function (l10n) {\n flatpickr.l10ns.default = __assign(__assign({}, flatpickr.l10ns.default), l10n);\n};\nflatpickr.setDefaults = function (config) {\n flatpickr.defaultConfig = __assign(__assign({}, flatpickr.defaultConfig), config);\n};\nflatpickr.parseDate = createDateParser({});\nflatpickr.formatDate = createDateFormatter({});\nflatpickr.compareDates = compareDates;\nif (typeof jQuery !== \"undefined\" && typeof jQuery.fn !== \"undefined\") {\n jQuery.fn.flatpickr = function (config) {\n return _flatpickr(this, config);\n };\n}\nDate.prototype.fp_incr = function (days) {\n return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === \"string\" ? parseInt(days, 10) : days));\n};\nif (typeof window !== \"undefined\") {\n window.flatpickr = flatpickr;\n}\nexport default flatpickr;\n","\"use strict\";\nif (typeof Object.assign !== \"function\") {\n Object.assign = function (target) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n if (!target) {\n throw TypeError(\"Cannot convert undefined or null to object\");\n }\n var _loop_1 = function (source) {\n if (source) {\n Object.keys(source).forEach(function (key) { return (target[key] = source[key]); });\n }\n };\n for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {\n var source = args_1[_a];\n _loop_1(source);\n }\n return target;\n };\n}\n","//! moment.js locale configuration\n//! locale : Afrikaans [af]\n//! author : Werner Mollentze : https://github.com/wernerm\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var af = moment.defineLocale('af', {\n months: 'Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag'.split(\n '_'\n ),\n weekdaysShort: 'Son_Maa_Din_Woe_Don_Vry_Sat'.split('_'),\n weekdaysMin: 'So_Ma_Di_Wo_Do_Vr_Sa'.split('_'),\n meridiemParse: /vm|nm/i,\n isPM: function (input) {\n return /^nm$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'vm' : 'VM';\n } else {\n return isLower ? 'nm' : 'NM';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Vandag om] LT',\n nextDay: '[Môre om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[Gister om] LT',\n lastWeek: '[Laas] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oor %s',\n past: '%s gelede',\n s: \"'n paar sekondes\",\n ss: '%d sekondes',\n m: \"'n minuut\",\n mm: '%d minute',\n h: \"'n uur\",\n hh: '%d ure',\n d: \"'n dag\",\n dd: '%d dae',\n M: \"'n maand\",\n MM: '%d maande',\n y: \"'n jaar\",\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n ); // Thanks to Joris Röling : https://github.com/jjupiter\n },\n week: {\n dow: 1, // Maandag is die eerste dag van die week.\n doy: 4, // Die week wat die 4de Januarie bevat is die eerste week van die jaar.\n },\n });\n\n return af;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Algeria) [ar-dz]\n//! author : Amine Roukh: https://github.com/Amine27\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n//! author : Noureddine LOUAHEDJ : https://github.com/noureddinem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'جانفي',\n 'فيفري',\n 'مارس',\n 'أفريل',\n 'ماي',\n 'جوان',\n 'جويلية',\n 'أوت',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arDz = moment.defineLocale('ar-dz', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arDz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Kuwait) [ar-kw]\n//! author : Nusret Parlak: https://github.com/nusretparlak\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arKw = moment.defineLocale('ar-kw', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإتنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اتنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arKw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Libya) [ar-ly]\n//! author : Ali Hmer: https://github.com/kikoanis\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '1',\n 2: '2',\n 3: '3',\n 4: '4',\n 5: '5',\n 6: '6',\n 7: '7',\n 8: '8',\n 9: '9',\n 0: '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var arLy = moment.defineLocale('ar-ly', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return arLy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Morocco) [ar-ma]\n//! author : ElFadili Yassine : https://github.com/ElFadiliY\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arMa = moment.defineLocale('ar-ma', {\n months: 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_ماي_يونيو_يوليوز_غشت_شتنبر_أكتوبر_نونبر_دجنبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'احد_اثنين_ثلاثاء_اربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arMa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Saudi Arabia) [ar-sa]\n//! author : Suhail Alkowaileet : https://github.com/xsoh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n };\n\n var arSa = moment.defineLocale('ar-sa', {\n months: 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort:\n 'يناير_فبراير_مارس_أبريل_مايو_يونيو_يوليو_أغسطس_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return arSa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic (Tunisia) [ar-tn]\n//! author : Nader Toukabri : https://github.com/naderio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var arTn = moment.defineLocale('ar-tn', {\n months: 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n monthsShort:\n 'جانفي_فيفري_مارس_أفريل_ماي_جوان_جويلية_أوت_سبتمبر_أكتوبر_نوفمبر_ديسمبر'.split(\n '_'\n ),\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[اليوم على الساعة] LT',\n nextDay: '[غدا على الساعة] LT',\n nextWeek: 'dddd [على الساعة] LT',\n lastDay: '[أمس على الساعة] LT',\n lastWeek: 'dddd [على الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'في %s',\n past: 'منذ %s',\n s: 'ثوان',\n ss: '%d ثانية',\n m: 'دقيقة',\n mm: '%d دقائق',\n h: 'ساعة',\n hh: '%d ساعات',\n d: 'يوم',\n dd: '%d أيام',\n M: 'شهر',\n MM: '%d أشهر',\n y: 'سنة',\n yy: '%d سنوات',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return arTn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Arabic [ar]\n//! author : Abdel Said: https://github.com/abdelsaid\n//! author : Ahmed Elkhatib\n//! author : forabi https://github.com/forabi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n pluralForm = function (n) {\n return n === 0\n ? 0\n : n === 1\n ? 1\n : n === 2\n ? 2\n : n % 100 >= 3 && n % 100 <= 10\n ? 3\n : n % 100 >= 11\n ? 4\n : 5;\n },\n plurals = {\n s: [\n 'أقل من ثانية',\n 'ثانية واحدة',\n ['ثانيتان', 'ثانيتين'],\n '%d ثوان',\n '%d ثانية',\n '%d ثانية',\n ],\n m: [\n 'أقل من دقيقة',\n 'دقيقة واحدة',\n ['دقيقتان', 'دقيقتين'],\n '%d دقائق',\n '%d دقيقة',\n '%d دقيقة',\n ],\n h: [\n 'أقل من ساعة',\n 'ساعة واحدة',\n ['ساعتان', 'ساعتين'],\n '%d ساعات',\n '%d ساعة',\n '%d ساعة',\n ],\n d: [\n 'أقل من يوم',\n 'يوم واحد',\n ['يومان', 'يومين'],\n '%d أيام',\n '%d يومًا',\n '%d يوم',\n ],\n M: [\n 'أقل من شهر',\n 'شهر واحد',\n ['شهران', 'شهرين'],\n '%d أشهر',\n '%d شهرا',\n '%d شهر',\n ],\n y: [\n 'أقل من عام',\n 'عام واحد',\n ['عامان', 'عامين'],\n '%d أعوام',\n '%d عامًا',\n '%d عام',\n ],\n },\n pluralize = function (u) {\n return function (number, withoutSuffix, string, isFuture) {\n var f = pluralForm(number),\n str = plurals[u][pluralForm(number)];\n if (f === 2) {\n str = str[withoutSuffix ? 0 : 1];\n }\n return str.replace(/%d/i, number);\n };\n },\n months = [\n 'يناير',\n 'فبراير',\n 'مارس',\n 'أبريل',\n 'مايو',\n 'يونيو',\n 'يوليو',\n 'أغسطس',\n 'سبتمبر',\n 'أكتوبر',\n 'نوفمبر',\n 'ديسمبر',\n ];\n\n var ar = moment.defineLocale('ar', {\n months: months,\n monthsShort: months,\n weekdays: 'الأحد_الإثنين_الثلاثاء_الأربعاء_الخميس_الجمعة_السبت'.split('_'),\n weekdaysShort: 'أحد_إثنين_ثلاثاء_أربعاء_خميس_جمعة_سبت'.split('_'),\n weekdaysMin: 'ح_ن_ث_ر_خ_ج_س'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/\\u200FM/\\u200FYYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ص|م/,\n isPM: function (input) {\n return 'م' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ص';\n } else {\n return 'م';\n }\n },\n calendar: {\n sameDay: '[اليوم عند الساعة] LT',\n nextDay: '[غدًا عند الساعة] LT',\n nextWeek: 'dddd [عند الساعة] LT',\n lastDay: '[أمس عند الساعة] LT',\n lastWeek: 'dddd [عند الساعة] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'بعد %s',\n past: 'منذ %s',\n s: pluralize('s'),\n ss: pluralize('s'),\n m: pluralize('m'),\n mm: pluralize('m'),\n h: pluralize('h'),\n hh: pluralize('h'),\n d: pluralize('d'),\n dd: pluralize('d'),\n M: pluralize('M'),\n MM: pluralize('M'),\n y: pluralize('y'),\n yy: pluralize('y'),\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ar;\n\n})));\n","//! moment.js locale configuration\n//! locale : Azerbaijani [az]\n//! author : topchiyev : https://github.com/topchiyev\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: '-inci',\n 5: '-inci',\n 8: '-inci',\n 70: '-inci',\n 80: '-inci',\n 2: '-nci',\n 7: '-nci',\n 20: '-nci',\n 50: '-nci',\n 3: '-üncü',\n 4: '-üncü',\n 100: '-üncü',\n 6: '-ncı',\n 9: '-uncu',\n 10: '-uncu',\n 30: '-uncu',\n 60: '-ıncı',\n 90: '-ıncı',\n };\n\n var az = moment.defineLocale('az', {\n months: 'yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr'.split(\n '_'\n ),\n monthsShort: 'yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek'.split('_'),\n weekdays:\n 'Bazar_Bazar ertəsi_Çərşənbə axşamı_Çərşənbə_Cümə axşamı_Cümə_Şənbə'.split(\n '_'\n ),\n weekdaysShort: 'Baz_BzE_ÇAx_Çər_CAx_Cüm_Şən'.split('_'),\n weekdaysMin: 'Bz_BE_ÇA_Çə_CA_Cü_Şə'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[sabah saat] LT',\n nextWeek: '[gələn həftə] dddd [saat] LT',\n lastDay: '[dünən] LT',\n lastWeek: '[keçən həftə] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s əvvəl',\n s: 'bir neçə saniyə',\n ss: '%d saniyə',\n m: 'bir dəqiqə',\n mm: '%d dəqiqə',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir il',\n yy: '%d il',\n },\n meridiemParse: /gecə|səhər|gündüz|axşam/,\n isPM: function (input) {\n return /^(gündüz|axşam)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'gecə';\n } else if (hour < 12) {\n return 'səhər';\n } else if (hour < 17) {\n return 'gündüz';\n } else {\n return 'axşam';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ıncı|inci|nci|üncü|ncı|uncu)/,\n ordinal: function (number) {\n if (number === 0) {\n // special case for zero\n return number + '-ıncı';\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return az;\n\n})));\n","//! moment.js locale configuration\n//! locale : Belarusian [be]\n//! author : Dmitry Demidov : https://github.com/demidov91\n//! author: Praleska: http://praleska.pro/\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'хвіліна_хвіліны_хвілін' : 'хвіліну_хвіліны_хвілін',\n hh: withoutSuffix ? 'гадзіна_гадзіны_гадзін' : 'гадзіну_гадзіны_гадзін',\n dd: 'дзень_дні_дзён',\n MM: 'месяц_месяцы_месяцаў',\n yy: 'год_гады_гадоў',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвіліна' : 'хвіліну';\n } else if (key === 'h') {\n return withoutSuffix ? 'гадзіна' : 'гадзіну';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n\n var be = moment.defineLocale('be', {\n months: {\n format: 'студзеня_лютага_сакавіка_красавіка_траўня_чэрвеня_ліпеня_жніўня_верасня_кастрычніка_лістапада_снежня'.split(\n '_'\n ),\n standalone:\n 'студзень_люты_сакавік_красавік_травень_чэрвень_ліпень_жнівень_верасень_кастрычнік_лістапад_снежань'.split(\n '_'\n ),\n },\n monthsShort:\n 'студ_лют_сак_крас_трав_чэрв_ліп_жнів_вер_каст_ліст_снеж'.split('_'),\n weekdays: {\n format: 'нядзелю_панядзелак_аўторак_сераду_чацвер_пятніцу_суботу'.split(\n '_'\n ),\n standalone:\n 'нядзеля_панядзелак_аўторак_серада_чацвер_пятніца_субота'.split(\n '_'\n ),\n isFormat: /\\[ ?[Ууў] ?(?:мінулую|наступную)? ?\\] ?dddd/,\n },\n weekdaysShort: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_ат_ср_чц_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., HH:mm',\n LLLL: 'dddd, D MMMM YYYY г., HH:mm',\n },\n calendar: {\n sameDay: '[Сёння ў] LT',\n nextDay: '[Заўтра ў] LT',\n lastDay: '[Учора ў] LT',\n nextWeek: function () {\n return '[У] dddd [ў] LT';\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return '[У мінулую] dddd [ў] LT';\n case 1:\n case 2:\n case 4:\n return '[У мінулы] dddd [ў] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'праз %s',\n past: '%s таму',\n s: 'некалькі секунд',\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithPlural,\n hh: relativeTimeWithPlural,\n d: 'дзень',\n dd: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночы|раніцы|дня|вечара/,\n isPM: function (input) {\n return /^(дня|вечара)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночы';\n } else if (hour < 12) {\n return 'раніцы';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечара';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(і|ы|га)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return (number % 10 === 2 || number % 10 === 3) &&\n number % 100 !== 12 &&\n number % 100 !== 13\n ? number + '-і'\n : number + '-ы';\n case 'D':\n return number + '-га';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return be;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bulgarian [bg]\n//! author : Krasen Borisov : https://github.com/kraz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bg = moment.defineLocale('bg', {\n months: 'януари_февруари_март_април_май_юни_юли_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'яну_фев_мар_апр_май_юни_юли_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'неделя_понеделник_вторник_сряда_четвъртък_петък_събота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сря_чет_пет_съб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Днес в] LT',\n nextDay: '[Утре в] LT',\n nextWeek: 'dddd [в] LT',\n lastDay: '[Вчера в] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Миналата] dddd [в] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Миналия] dddd [в] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'след %s',\n past: 'преди %s',\n s: 'няколко секунди',\n ss: '%d секунди',\n m: 'минута',\n mm: '%d минути',\n h: 'час',\n hh: '%d часа',\n d: 'ден',\n dd: '%d дена',\n w: 'седмица',\n ww: '%d седмици',\n M: 'месец',\n MM: '%d месеца',\n y: 'година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bambara [bm]\n//! author : Estelle Comment : https://github.com/estellecomment\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var bm = moment.defineLocale('bm', {\n months: 'Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_Mɛkalo_Zuwɛnkalo_Zuluyekalo_Utikalo_Sɛtanburukalo_ɔkutɔburukalo_Nowanburukalo_Desanburukalo'.split(\n '_'\n ),\n monthsShort: 'Zan_Few_Mar_Awi_Mɛ_Zuw_Zul_Uti_Sɛt_ɔku_Now_Des'.split('_'),\n weekdays: 'Kari_Ntɛnɛn_Tarata_Araba_Alamisa_Juma_Sibiri'.split('_'),\n weekdaysShort: 'Kar_Ntɛ_Tar_Ara_Ala_Jum_Sib'.split('_'),\n weekdaysMin: 'Ka_Nt_Ta_Ar_Al_Ju_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'MMMM [tile] D [san] YYYY',\n LLL: 'MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n LLLL: 'dddd MMMM [tile] D [san] YYYY [lɛrɛ] HH:mm',\n },\n calendar: {\n sameDay: '[Bi lɛrɛ] LT',\n nextDay: '[Sini lɛrɛ] LT',\n nextWeek: 'dddd [don lɛrɛ] LT',\n lastDay: '[Kunu lɛrɛ] LT',\n lastWeek: 'dddd [tɛmɛnen lɛrɛ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s kɔnɔ',\n past: 'a bɛ %s bɔ',\n s: 'sanga dama dama',\n ss: 'sekondi %d',\n m: 'miniti kelen',\n mm: 'miniti %d',\n h: 'lɛrɛ kelen',\n hh: 'lɛrɛ %d',\n d: 'tile kelen',\n dd: 'tile %d',\n M: 'kalo kelen',\n MM: 'kalo %d',\n y: 'san kelen',\n yy: 'san %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return bm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali (Bangladesh) [bn-bd]\n//! author : Asraf Hossain Patoary : https://github.com/ashwoolford\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bnBd = moment.defineLocale('bn-bd', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort:\n 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n\n meridiemParse: /রাত|ভোর|সকাল|দুপুর|বিকাল|সন্ধ্যা|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'রাত') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ভোর') {\n return hour;\n } else if (meridiem === 'সকাল') {\n return hour;\n } else if (meridiem === 'দুপুর') {\n return hour >= 3 ? hour : hour + 12;\n } else if (meridiem === 'বিকাল') {\n return hour + 12;\n } else if (meridiem === 'সন্ধ্যা') {\n return hour + 12;\n }\n },\n\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 6) {\n return 'ভোর';\n } else if (hour < 12) {\n return 'সকাল';\n } else if (hour < 15) {\n return 'দুপুর';\n } else if (hour < 18) {\n return 'বিকাল';\n } else if (hour < 20) {\n return 'সন্ধ্যা';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bnBd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bengali [bn]\n//! author : Kaushik Gandhi : https://github.com/kaushikgandhi\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '১',\n 2: '২',\n 3: '৩',\n 4: '৪',\n 5: '৫',\n 6: '৬',\n 7: '৭',\n 8: '৮',\n 9: '৯',\n 0: '০',\n },\n numberMap = {\n '১': '1',\n '২': '2',\n '৩': '3',\n '৪': '4',\n '৫': '5',\n '৬': '6',\n '৭': '7',\n '৮': '8',\n '৯': '9',\n '০': '0',\n };\n\n var bn = moment.defineLocale('bn', {\n months: 'জানুয়ারি_ফেব্রুয়ারি_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্টেম্বর_অক্টোবর_নভেম্বর_ডিসেম্বর'.split(\n '_'\n ),\n monthsShort:\n 'জানু_ফেব্রু_মার্চ_এপ্রিল_মে_জুন_জুলাই_আগস্ট_সেপ্ট_অক্টো_নভে_ডিসে'.split(\n '_'\n ),\n weekdays: 'রবিবার_সোমবার_মঙ্গলবার_বুধবার_বৃহস্পতিবার_শুক্রবার_শনিবার'.split(\n '_'\n ),\n weekdaysShort: 'রবি_সোম_মঙ্গল_বুধ_বৃহস্পতি_শুক্র_শনি'.split('_'),\n weekdaysMin: 'রবি_সোম_মঙ্গল_বুধ_বৃহ_শুক্র_শনি'.split('_'),\n longDateFormat: {\n LT: 'A h:mm সময়',\n LTS: 'A h:mm:ss সময়',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm সময়',\n LLLL: 'dddd, D MMMM YYYY, A h:mm সময়',\n },\n calendar: {\n sameDay: '[আজ] LT',\n nextDay: '[আগামীকাল] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[গতকাল] LT',\n lastWeek: '[গত] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s পরে',\n past: '%s আগে',\n s: 'কয়েক সেকেন্ড',\n ss: '%d সেকেন্ড',\n m: 'এক মিনিট',\n mm: '%d মিনিট',\n h: 'এক ঘন্টা',\n hh: '%d ঘন্টা',\n d: 'এক দিন',\n dd: '%d দিন',\n M: 'এক মাস',\n MM: '%d মাস',\n y: 'এক বছর',\n yy: '%d বছর',\n },\n preparse: function (string) {\n return string.replace(/[১২৩৪৫৬৭৮৯০]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /রাত|সকাল|দুপুর|বিকাল|রাত/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'রাত' && hour >= 4) ||\n (meridiem === 'দুপুর' && hour < 5) ||\n meridiem === 'বিকাল'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'রাত';\n } else if (hour < 10) {\n return 'সকাল';\n } else if (hour < 17) {\n return 'দুপুর';\n } else if (hour < 20) {\n return 'বিকাল';\n } else {\n return 'রাত';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tibetan [bo]\n//! author : Thupten N. Chakrishar : https://github.com/vajradog\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '༡',\n 2: '༢',\n 3: '༣',\n 4: '༤',\n 5: '༥',\n 6: '༦',\n 7: '༧',\n 8: '༨',\n 9: '༩',\n 0: '༠',\n },\n numberMap = {\n '༡': '1',\n '༢': '2',\n '༣': '3',\n '༤': '4',\n '༥': '5',\n '༦': '6',\n '༧': '7',\n '༨': '8',\n '༩': '9',\n '༠': '0',\n };\n\n var bo = moment.defineLocale('bo', {\n months: 'ཟླ་བ་དང་པོ_ཟླ་བ་གཉིས་པ_ཟླ་བ་གསུམ་པ_ཟླ་བ་བཞི་པ_ཟླ་བ་ལྔ་པ_ཟླ་བ་དྲུག་པ_ཟླ་བ་བདུན་པ_ཟླ་བ་བརྒྱད་པ_ཟླ་བ་དགུ་པ_ཟླ་བ་བཅུ་པ_ཟླ་བ་བཅུ་གཅིག་པ_ཟླ་བ་བཅུ་གཉིས་པ'.split(\n '_'\n ),\n monthsShort:\n 'ཟླ་1_ཟླ་2_ཟླ་3_ཟླ་4_ཟླ་5_ཟླ་6_ཟླ་7_ཟླ་8_ཟླ་9_ཟླ་10_ཟླ་11_ཟླ་12'.split(\n '_'\n ),\n monthsShortRegex: /^(ཟླ་\\d{1,2})/,\n monthsParseExact: true,\n weekdays:\n 'གཟའ་ཉི་མ་_གཟའ་ཟླ་བ་_གཟའ་མིག་དམར་_གཟའ་ལྷག་པ་_གཟའ་ཕུར་བུ_གཟའ་པ་སངས་_གཟའ་སྤེན་པ་'.split(\n '_'\n ),\n weekdaysShort: 'ཉི་མ་_ཟླ་བ་_མིག་དམར་_ལྷག་པ་_ཕུར་བུ_པ་སངས་_སྤེན་པ་'.split(\n '_'\n ),\n weekdaysMin: 'ཉི_ཟླ_མིག_ལྷག_ཕུར_སངས_སྤེན'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[དི་རིང] LT',\n nextDay: '[སང་ཉིན] LT',\n nextWeek: '[བདུན་ཕྲག་རྗེས་མ], LT',\n lastDay: '[ཁ་སང] LT',\n lastWeek: '[བདུན་ཕྲག་མཐའ་མ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ལ་',\n past: '%s སྔན་ལ',\n s: 'ལམ་སང',\n ss: '%d སྐར་ཆ།',\n m: 'སྐར་མ་གཅིག',\n mm: '%d སྐར་མ',\n h: 'ཆུ་ཚོད་གཅིག',\n hh: '%d ཆུ་ཚོད',\n d: 'ཉིན་གཅིག',\n dd: '%d ཉིན་',\n M: 'ཟླ་བ་གཅིག',\n MM: '%d ཟླ་བ',\n y: 'ལོ་གཅིག',\n yy: '%d ལོ',\n },\n preparse: function (string) {\n return string.replace(/[༡༢༣༤༥༦༧༨༩༠]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /མཚན་མོ|ཞོགས་ཀས|ཉིན་གུང|དགོང་དག|མཚན་མོ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'མཚན་མོ' && hour >= 4) ||\n (meridiem === 'ཉིན་གུང' && hour < 5) ||\n meridiem === 'དགོང་དག'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'མཚན་མོ';\n } else if (hour < 10) {\n return 'ཞོགས་ཀས';\n } else if (hour < 17) {\n return 'ཉིན་གུང';\n } else if (hour < 20) {\n return 'དགོང་དག';\n } else {\n return 'མཚན་མོ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return bo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Breton [br]\n//! author : Jean-Baptiste Le Duigou : https://github.com/jbleduigou\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithMutation(number, withoutSuffix, key) {\n var format = {\n mm: 'munutenn',\n MM: 'miz',\n dd: 'devezh',\n };\n return number + ' ' + mutation(format[key], number);\n }\n function specialMutationForYears(number) {\n switch (lastNumber(number)) {\n case 1:\n case 3:\n case 4:\n case 5:\n case 9:\n return number + ' bloaz';\n default:\n return number + ' vloaz';\n }\n }\n function lastNumber(number) {\n if (number > 9) {\n return lastNumber(number % 10);\n }\n return number;\n }\n function mutation(text, number) {\n if (number === 2) {\n return softMutation(text);\n }\n return text;\n }\n function softMutation(text) {\n var mutationTable = {\n m: 'v',\n b: 'v',\n d: 'z',\n };\n if (mutationTable[text.charAt(0)] === undefined) {\n return text;\n }\n return mutationTable[text.charAt(0)] + text.substring(1);\n }\n\n var monthsParse = [\n /^gen/i,\n /^c[ʼ\\']hwe/i,\n /^meu/i,\n /^ebr/i,\n /^mae/i,\n /^(mez|eve)/i,\n /^gou/i,\n /^eos/i,\n /^gwe/i,\n /^her/i,\n /^du/i,\n /^ker/i,\n ],\n monthsRegex =\n /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu|gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n monthsStrictRegex =\n /^(genver|c[ʼ\\']hwevrer|meurzh|ebrel|mae|mezheven|gouere|eost|gwengolo|here|du|kerzu)/i,\n monthsShortStrictRegex =\n /^(gen|c[ʼ\\']hwe|meu|ebr|mae|eve|gou|eos|gwe|her|du|ker)/i,\n fullWeekdaysParse = [\n /^sul/i,\n /^lun/i,\n /^meurzh/i,\n /^merc[ʼ\\']her/i,\n /^yaou/i,\n /^gwener/i,\n /^sadorn/i,\n ],\n shortWeekdaysParse = [\n /^Sul/i,\n /^Lun/i,\n /^Meu/i,\n /^Mer/i,\n /^Yao/i,\n /^Gwe/i,\n /^Sad/i,\n ],\n minWeekdaysParse = [\n /^Su/i,\n /^Lu/i,\n /^Me([^r]|$)/i,\n /^Mer/i,\n /^Ya/i,\n /^Gw/i,\n /^Sa/i,\n ];\n\n var br = moment.defineLocale('br', {\n months: 'Genver_Cʼhwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu'.split(\n '_'\n ),\n monthsShort: 'Gen_Cʼhwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker'.split('_'),\n weekdays: 'Sul_Lun_Meurzh_Mercʼher_Yaou_Gwener_Sadorn'.split('_'),\n weekdaysShort: 'Sul_Lun_Meu_Mer_Yao_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Lu_Me_Mer_Ya_Gw_Sa'.split('_'),\n weekdaysParse: minWeekdaysParse,\n fullWeekdaysParse: fullWeekdaysParse,\n shortWeekdaysParse: shortWeekdaysParse,\n minWeekdaysParse: minWeekdaysParse,\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [a viz] MMMM YYYY',\n LLL: 'D [a viz] MMMM YYYY HH:mm',\n LLLL: 'dddd, D [a viz] MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hiziv da] LT',\n nextDay: '[Warcʼhoazh da] LT',\n nextWeek: 'dddd [da] LT',\n lastDay: '[Decʼh da] LT',\n lastWeek: 'dddd [paset da] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'a-benn %s',\n past: '%s ʼzo',\n s: 'un nebeud segondennoù',\n ss: '%d eilenn',\n m: 'ur vunutenn',\n mm: relativeTimeWithMutation,\n h: 'un eur',\n hh: '%d eur',\n d: 'un devezh',\n dd: relativeTimeWithMutation,\n M: 'ur miz',\n MM: relativeTimeWithMutation,\n y: 'ur bloaz',\n yy: specialMutationForYears,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(añ|vet)/,\n ordinal: function (number) {\n var output = number === 1 ? 'añ' : 'vet';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n meridiemParse: /a.m.|g.m./, // goude merenn | a-raok merenn\n isPM: function (token) {\n return token === 'g.m.';\n },\n meridiem: function (hour, minute, isLower) {\n return hour < 12 ? 'a.m.' : 'g.m.';\n },\n });\n\n return br;\n\n})));\n","//! moment.js locale configuration\n//! locale : Bosnian [bs]\n//! author : Nedim Cholich : https://github.com/frontyard\n//! based on (hr) translation by Bojan Marković\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var bs = moment.defineLocale('bs', {\n months: 'januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n return '[prošlu] dddd [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return bs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Catalan [ca]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ca = moment.defineLocale('ca', {\n months: {\n standalone:\n 'gener_febrer_març_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre'.split(\n '_'\n ),\n format: \"de gener_de febrer_de març_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort:\n 'gen._febr._març_abr._maig_juny_jul._ag._set._oct._nov._des.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dt._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dt_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a les] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a les] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[avui a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextDay: function () {\n return '[demà a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastDay: function () {\n return '[ahir a ' + (this.hours() !== 1 ? 'les' : 'la') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [passat a ' +\n (this.hours() !== 1 ? 'les' : 'la') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'uns segons',\n ss: '%d segons',\n m: 'un minut',\n mm: '%d minuts',\n h: 'una hora',\n hh: '%d hores',\n d: 'un dia',\n dd: '%d dies',\n M: 'un mes',\n MM: '%d mesos',\n y: 'un any',\n yy: '%d anys',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ca;\n\n})));\n","//! moment.js locale configuration\n//! locale : Czech [cs]\n//! author : petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = {\n format: 'leden_únor_březen_duben_květen_červen_červenec_srpen_září_říjen_listopad_prosinec'.split(\n '_'\n ),\n standalone:\n 'ledna_února_března_dubna_května_června_července_srpna_září_října_listopadu_prosince'.split(\n '_'\n ),\n },\n monthsShort = 'led_úno_bře_dub_kvě_čvn_čvc_srp_zář_říj_lis_pro'.split('_'),\n monthsParse = [\n /^led/i,\n /^úno/i,\n /^bře/i,\n /^dub/i,\n /^kvě/i,\n /^(čvn|červen$|června)/i,\n /^(čvc|červenec|července)/i,\n /^srp/i,\n /^zář/i,\n /^říj/i,\n /^lis/i,\n /^pro/i,\n ],\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsRegex =\n /^(leden|únor|březen|duben|květen|červenec|července|červen|června|srpen|září|říjen|listopad|prosinec|led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i;\n\n function plural(n) {\n return n > 1 && n < 5 && ~~(n / 10) !== 1;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekund' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekund');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minuta' : isFuture ? 'minutu' : 'minutou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minuty' : 'minut');\n } else {\n return result + 'minutami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodin');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'den' : 'dnem';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dny' : 'dní');\n } else {\n return result + 'dny';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'měsíc' : 'měsícem';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'měsíce' : 'měsíců');\n } else {\n return result + 'měsíci';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokem';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'let');\n } else {\n return result + 'lety';\n }\n }\n }\n\n var cs = moment.defineLocale('cs', {\n months: months,\n monthsShort: monthsShort,\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n // NOTE: 'červen' is substring of 'červenec'; therefore 'červenec' must precede 'červen' in the regex to be fully matched.\n // Otherwise parser matches '1. červenec' as '1. červen' + 'ec'.\n monthsStrictRegex:\n /^(leden|ledna|února|únor|březen|března|duben|dubna|květen|května|červenec|července|červen|června|srpen|srpna|září|říjen|října|listopadu|listopad|prosinec|prosince)/i,\n monthsShortStrictRegex:\n /^(led|úno|bře|dub|kvě|čvn|čvc|srp|zář|říj|lis|pro)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'neděle_pondělí_úterý_středa_čtvrtek_pátek_sobota'.split('_'),\n weekdaysShort: 'ne_po_út_st_čt_pá_so'.split('_'),\n weekdaysMin: 'ne_po_út_st_čt_pá_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n l: 'D. M. YYYY',\n },\n calendar: {\n sameDay: '[dnes v] LT',\n nextDay: '[zítra v] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v neděli v] LT';\n case 1:\n case 2:\n return '[v] dddd [v] LT';\n case 3:\n return '[ve středu v] LT';\n case 4:\n return '[ve čtvrtek v] LT';\n case 5:\n return '[v pátek v] LT';\n case 6:\n return '[v sobotu v] LT';\n }\n },\n lastDay: '[včera v] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulou neděli v] LT';\n case 1:\n case 2:\n return '[minulé] dddd [v] LT';\n case 3:\n return '[minulou středu v] LT';\n case 4:\n case 5:\n return '[minulý] dddd [v] LT';\n case 6:\n return '[minulou sobotu v] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'před %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chuvash [cv]\n//! author : Anatoly Mironov : https://github.com/mirontoli\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cv = moment.defineLocale('cv', {\n months: 'кӑрлач_нарӑс_пуш_ака_май_ҫӗртме_утӑ_ҫурла_авӑн_юпа_чӳк_раштав'.split(\n '_'\n ),\n monthsShort: 'кӑр_нар_пуш_ака_май_ҫӗр_утӑ_ҫур_авн_юпа_чӳк_раш'.split('_'),\n weekdays:\n 'вырсарникун_тунтикун_ытларикун_юнкун_кӗҫнерникун_эрнекун_шӑматкун'.split(\n '_'\n ),\n weekdaysShort: 'выр_тун_ытл_юн_кӗҫ_эрн_шӑм'.split('_'),\n weekdaysMin: 'вр_тн_ыт_юн_кҫ_эр_шм'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ]',\n LLL: 'YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n LLLL: 'dddd, YYYY [ҫулхи] MMMM [уйӑхӗн] D[-мӗшӗ], HH:mm',\n },\n calendar: {\n sameDay: '[Паян] LT [сехетре]',\n nextDay: '[Ыран] LT [сехетре]',\n lastDay: '[Ӗнер] LT [сехетре]',\n nextWeek: '[Ҫитес] dddd LT [сехетре]',\n lastWeek: '[Иртнӗ] dddd LT [сехетре]',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (output) {\n var affix = /сехет$/i.exec(output)\n ? 'рен'\n : /ҫул$/i.exec(output)\n ? 'тан'\n : 'ран';\n return output + affix;\n },\n past: '%s каялла',\n s: 'пӗр-ик ҫеккунт',\n ss: '%d ҫеккунт',\n m: 'пӗр минут',\n mm: '%d минут',\n h: 'пӗр сехет',\n hh: '%d сехет',\n d: 'пӗр кун',\n dd: '%d кун',\n M: 'пӗр уйӑх',\n MM: '%d уйӑх',\n y: 'пӗр ҫул',\n yy: '%d ҫул',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-мӗш/,\n ordinal: '%d-мӗш',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return cv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Welsh [cy]\n//! author : Robert Allen : https://github.com/robgallen\n//! author : https://github.com/ryangreaves\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var cy = moment.defineLocale('cy', {\n months: 'Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr'.split(\n '_'\n ),\n monthsShort: 'Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag'.split(\n '_'\n ),\n weekdays:\n 'Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn'.split(\n '_'\n ),\n weekdaysShort: 'Sul_Llun_Maw_Mer_Iau_Gwe_Sad'.split('_'),\n weekdaysMin: 'Su_Ll_Ma_Me_Ia_Gw_Sa'.split('_'),\n weekdaysParseExact: true,\n // time formats are the same as en-gb\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Heddiw am] LT',\n nextDay: '[Yfory am] LT',\n nextWeek: 'dddd [am] LT',\n lastDay: '[Ddoe am] LT',\n lastWeek: 'dddd [diwethaf am] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'mewn %s',\n past: '%s yn ôl',\n s: 'ychydig eiliadau',\n ss: '%d eiliad',\n m: 'munud',\n mm: '%d munud',\n h: 'awr',\n hh: '%d awr',\n d: 'diwrnod',\n dd: '%d diwrnod',\n M: 'mis',\n MM: '%d mis',\n y: 'blwyddyn',\n yy: '%d flynedd',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,\n // traditional ordinal numbers above 31 are not commonly used in colloquial Welsh\n ordinal: function (number) {\n var b = number,\n output = '',\n lookup = [\n '',\n 'af',\n 'il',\n 'ydd',\n 'ydd',\n 'ed',\n 'ed',\n 'ed',\n 'fed',\n 'fed',\n 'fed', // 1af to 10fed\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'eg',\n 'fed',\n 'eg',\n 'fed', // 11eg to 20fed\n ];\n if (b > 20) {\n if (b === 40 || b === 50 || b === 60 || b === 80 || b === 100) {\n output = 'fed'; // not 30ain, 70ain or 90ain\n } else {\n output = 'ain';\n }\n } else if (b > 0) {\n output = lookup[b];\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return cy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Danish [da]\n//! author : Ulrik Nielsen : https://github.com/mrbase\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var da = moment.defineLocale('da', {\n months: 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'søn_man_tir_ons_tor_fre_lør'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd [d.] D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'på dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[i] dddd[s kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'få sekunder',\n ss: '%d sekunder',\n m: 'et minut',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dage',\n M: 'en måned',\n MM: '%d måneder',\n y: 'et år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return da;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Austria) [de-at]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Martin Groller : https://github.com/MadMG\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deAt = moment.defineLocale('de-at', {\n months: 'Jänner_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jän._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deAt;\n\n})));\n","//! moment.js locale configuration\n//! locale : German (Switzerland) [de-ch]\n//! author : sschueller : https://github.com/sschueller\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var deCh = moment.defineLocale('de-ch', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return deCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return de;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maldivian [dv]\n//! author : Jawish Hameed : https://github.com/jawish\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'ޖެނުއަރީ',\n 'ފެބްރުއަރީ',\n 'މާރިޗު',\n 'އޭޕްރީލު',\n 'މޭ',\n 'ޖޫން',\n 'ޖުލައި',\n 'އޯގަސްޓު',\n 'ސެޕްޓެމްބަރު',\n 'އޮކްޓޯބަރު',\n 'ނޮވެމްބަރު',\n 'ޑިސެމްބަރު',\n ],\n weekdays = [\n 'އާދިއްތަ',\n 'ހޯމަ',\n 'އަންގާރަ',\n 'ބުދަ',\n 'ބުރާސްފަތި',\n 'ހުކުރު',\n 'ހޮނިހިރު',\n ];\n\n var dv = moment.defineLocale('dv', {\n months: months,\n monthsShort: months,\n weekdays: weekdays,\n weekdaysShort: weekdays,\n weekdaysMin: 'އާދި_ހޯމަ_އަން_ބުދަ_ބުރާ_ހުކު_ހޮނި'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'D/M/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /މކ|މފ/,\n isPM: function (input) {\n return 'މފ' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'މކ';\n } else {\n return 'މފ';\n }\n },\n calendar: {\n sameDay: '[މިއަދު] LT',\n nextDay: '[މާދަމާ] LT',\n nextWeek: 'dddd LT',\n lastDay: '[އިއްޔެ] LT',\n lastWeek: '[ފާއިތުވި] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ތެރޭގައި %s',\n past: 'ކުރިން %s',\n s: 'ސިކުންތުކޮޅެއް',\n ss: 'd% ސިކުންތު',\n m: 'މިނިޓެއް',\n mm: 'މިނިޓު %d',\n h: 'ގަޑިއިރެއް',\n hh: 'ގަޑިއިރު %d',\n d: 'ދުވަހެއް',\n dd: 'ދުވަސް %d',\n M: 'މަހެއް',\n MM: 'މަސް %d',\n y: 'އަހަރެއް',\n yy: 'އަހަރު %d',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 7, // Sunday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return dv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Greek [el]\n//! author : Aggelos Karalias : https://github.com/mehiel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n var el = moment.defineLocale('el', {\n monthsNominativeEl:\n 'Ιανουάριος_Φεβρουάριος_Μάρτιος_Απρίλιος_Μάιος_Ιούνιος_Ιούλιος_Αύγουστος_Σεπτέμβριος_Οκτώβριος_Νοέμβριος_Δεκέμβριος'.split(\n '_'\n ),\n monthsGenitiveEl:\n 'Ιανουαρίου_Φεβρουαρίου_Μαρτίου_Απριλίου_Μαΐου_Ιουνίου_Ιουλίου_Αυγούστου_Σεπτεμβρίου_Οκτωβρίου_Νοεμβρίου_Δεκεμβρίου'.split(\n '_'\n ),\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return this._monthsNominativeEl;\n } else if (\n typeof format === 'string' &&\n /D/.test(format.substring(0, format.indexOf('MMMM')))\n ) {\n // if there is a day number before 'MMMM'\n return this._monthsGenitiveEl[momentToFormat.month()];\n } else {\n return this._monthsNominativeEl[momentToFormat.month()];\n }\n },\n monthsShort: 'Ιαν_Φεβ_Μαρ_Απρ_Μαϊ_Ιουν_Ιουλ_Αυγ_Σεπ_Οκτ_Νοε_Δεκ'.split('_'),\n weekdays: 'Κυριακή_Δευτέρα_Τρίτη_Τετάρτη_Πέμπτη_Παρασκευή_Σάββατο'.split(\n '_'\n ),\n weekdaysShort: 'Κυρ_Δευ_Τρι_Τετ_Πεμ_Παρ_Σαβ'.split('_'),\n weekdaysMin: 'Κυ_Δε_Τρ_Τε_Πε_Πα_Σα'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'μμ' : 'ΜΜ';\n } else {\n return isLower ? 'πμ' : 'ΠΜ';\n }\n },\n isPM: function (input) {\n return (input + '').toLowerCase()[0] === 'μ';\n },\n meridiemParse: /[ΠΜ]\\.?Μ?\\.?/i,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendarEl: {\n sameDay: '[Σήμερα {}] LT',\n nextDay: '[Αύριο {}] LT',\n nextWeek: 'dddd [{}] LT',\n lastDay: '[Χθες {}] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 6:\n return '[το προηγούμενο] dddd [{}] LT';\n default:\n return '[την προηγούμενη] dddd [{}] LT';\n }\n },\n sameElse: 'L',\n },\n calendar: function (key, mom) {\n var output = this._calendarEl[key],\n hours = mom && mom.hours();\n if (isFunction(output)) {\n output = output.apply(mom);\n }\n return output.replace('{}', hours % 12 === 1 ? 'στη' : 'στις');\n },\n relativeTime: {\n future: 'σε %s',\n past: '%s πριν',\n s: 'λίγα δευτερόλεπτα',\n ss: '%d δευτερόλεπτα',\n m: 'ένα λεπτό',\n mm: '%d λεπτά',\n h: 'μία ώρα',\n hh: '%d ώρες',\n d: 'μία μέρα',\n dd: '%d μέρες',\n M: 'ένας μήνας',\n MM: '%d μήνες',\n y: 'ένας χρόνος',\n yy: '%d χρόνια',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}η/,\n ordinal: '%dη',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4st is the first week of the year.\n },\n });\n\n return el;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Australia) [en-au]\n//! author : Jared Morse : https://github.com/jarcoal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enAu = moment.defineLocale('en-au', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enAu;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Canada) [en-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enCa = moment.defineLocale('en-ca', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'YYYY-MM-DD',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (United Kingdom) [en-gb]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enGb = moment.defineLocale('en-gb', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enGb;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Ireland) [en-ie]\n//! author : Chris Cartlidge : https://github.com/chriscartlidge\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIe = moment.defineLocale('en-ie', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enIe;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Israel) [en-il]\n//! author : Chris Gedrim : https://github.com/chrisgedrim\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIl = moment.defineLocale('en-il', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n return enIl;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (India) [en-in]\n//! author : Jatin Agrawal : https://github.com/jatinag22\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enIn = moment.defineLocale('en-in', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return enIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (New Zealand) [en-nz]\n//! author : Luke McGregor : https://github.com/lukemcgregor\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enNz = moment.defineLocale('en-nz', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enNz;\n\n})));\n","//! moment.js locale configuration\n//! locale : English (Singapore) [en-sg]\n//! author : Matthew Castrillon-Madrigal : https://github.com/techdimension\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var enSg = moment.defineLocale('en-sg', {\n months: 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n weekdays: 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split(\n '_'\n ),\n weekdaysShort: 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n weekdaysMin: 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return enSg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Esperanto [eo]\n//! author : Colin Dean : https://github.com/colindean\n//! author : Mia Nordentoft Imperatori : https://github.com/miestasmia\n//! comment : miestasmia corrected the translation by colindean\n//! comment : Vivakvo corrected the translation by colindean and miestasmia\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eo = moment.defineLocale('eo', {\n months: 'januaro_februaro_marto_aprilo_majo_junio_julio_aŭgusto_septembro_oktobro_novembro_decembro'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mart_apr_maj_jun_jul_aŭg_sept_okt_nov_dec'.split('_'),\n weekdays: 'dimanĉo_lundo_mardo_merkredo_ĵaŭdo_vendredo_sabato'.split('_'),\n weekdaysShort: 'dim_lun_mard_merk_ĵaŭ_ven_sab'.split('_'),\n weekdaysMin: 'di_lu_ma_me_ĵa_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: '[la] D[-an de] MMMM, YYYY',\n LLL: '[la] D[-an de] MMMM, YYYY HH:mm',\n LLLL: 'dddd[n], [la] D[-an de] MMMM, YYYY HH:mm',\n llll: 'ddd, [la] D[-an de] MMM, YYYY HH:mm',\n },\n meridiemParse: /[ap]\\.t\\.m/i,\n isPM: function (input) {\n return input.charAt(0).toLowerCase() === 'p';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'p.t.m.' : 'P.T.M.';\n } else {\n return isLower ? 'a.t.m.' : 'A.T.M.';\n }\n },\n calendar: {\n sameDay: '[Hodiaŭ je] LT',\n nextDay: '[Morgaŭ je] LT',\n nextWeek: 'dddd[n je] LT',\n lastDay: '[Hieraŭ je] LT',\n lastWeek: '[pasintan] dddd[n je] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'post %s',\n past: 'antaŭ %s',\n s: 'kelkaj sekundoj',\n ss: '%d sekundoj',\n m: 'unu minuto',\n mm: '%d minutoj',\n h: 'unu horo',\n hh: '%d horoj',\n d: 'unu tago', //ne 'diurno', ĉar estas uzita por proksimumo\n dd: '%d tagoj',\n M: 'unu monato',\n MM: '%d monatoj',\n y: 'unu jaro',\n yy: '%d jaroj',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}a/,\n ordinal: '%da',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Dominican Republic) [es-do]\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esDo = moment.defineLocale('es-do', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return esDo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (Mexico) [es-mx]\n//! author : JC Franco : https://github.com/jcfranco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esMx = moment.defineLocale('es-mx', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return esMx;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish (United States) [es-us]\n//! author : bustta : https://github.com/bustta\n//! author : chrisrodz : https://github.com/chrisrodz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var esUs = moment.defineLocale('es-us', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'MM/DD/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY h:mm A',\n LLLL: 'dddd, D [de] MMMM [de] YYYY h:mm A',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return esUs;\n\n})));\n","//! moment.js locale configuration\n//! locale : Spanish [es]\n//! author : Julio Napurí : https://github.com/julionc\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortDot =\n 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split(\n '_'\n ),\n monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_'),\n monthsParse = [\n /^ene/i,\n /^feb/i,\n /^mar/i,\n /^abr/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^ago/i,\n /^sep/i,\n /^oct/i,\n /^nov/i,\n /^dic/i,\n ],\n monthsRegex =\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i;\n\n var es = moment.defineLocale('es', {\n months: 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortDot;\n } else if (/-MMM-/.test(format)) {\n return monthsShort[m.month()];\n } else {\n return monthsShortDot[m.month()];\n }\n },\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,\n monthsShortStrictRegex:\n /^(ene\\.?|feb\\.?|mar\\.?|abr\\.?|may\\.?|jun\\.?|jul\\.?|ago\\.?|sep\\.?|oct\\.?|nov\\.?|dic\\.?)/i,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mi_ju_vi_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoy a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextDay: function () {\n return '[mañana a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastDay: function () {\n return '[ayer a la' + (this.hours() !== 1 ? 's' : '') + '] LT';\n },\n lastWeek: function () {\n return (\n '[el] dddd [pasado a la' +\n (this.hours() !== 1 ? 's' : '') +\n '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'en %s',\n past: 'hace %s',\n s: 'unos segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'una hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n w: 'una semana',\n ww: '%d semanas',\n M: 'un mes',\n MM: '%d meses',\n y: 'un año',\n yy: '%d años',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n invalidDate: 'Fecha inválida',\n });\n\n return es;\n\n})));\n","//! moment.js locale configuration\n//! locale : Estonian [et]\n//! author : Henry Kehlmann : https://github.com/madhenry\n//! improvements : Illimar Tambek : https://github.com/ragulka\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['mõne sekundi', 'mõni sekund', 'paar sekundit'],\n ss: [number + 'sekundi', number + 'sekundit'],\n m: ['ühe minuti', 'üks minut'],\n mm: [number + ' minuti', number + ' minutit'],\n h: ['ühe tunni', 'tund aega', 'üks tund'],\n hh: [number + ' tunni', number + ' tundi'],\n d: ['ühe päeva', 'üks päev'],\n M: ['kuu aja', 'kuu aega', 'üks kuu'],\n MM: [number + ' kuu', number + ' kuud'],\n y: ['ühe aasta', 'aasta', 'üks aasta'],\n yy: [number + ' aasta', number + ' aastat'],\n };\n if (withoutSuffix) {\n return format[key][2] ? format[key][2] : format[key][1];\n }\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var et = moment.defineLocale('et', {\n months: 'jaanuar_veebruar_märts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember'.split(\n '_'\n ),\n monthsShort:\n 'jaan_veebr_märts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets'.split('_'),\n weekdays:\n 'pühapäev_esmaspäev_teisipäev_kolmapäev_neljapäev_reede_laupäev'.split(\n '_'\n ),\n weekdaysShort: 'P_E_T_K_N_R_L'.split('_'),\n weekdaysMin: 'P_E_T_K_N_R_L'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Täna,] LT',\n nextDay: '[Homme,] LT',\n nextWeek: '[Järgmine] dddd LT',\n lastDay: '[Eile,] LT',\n lastWeek: '[Eelmine] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s pärast',\n past: '%s tagasi',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: '%d päeva',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return et;\n\n})));\n","//! moment.js locale configuration\n//! locale : Basque [eu]\n//! author : Eneko Illarramendi : https://github.com/eillarra\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var eu = moment.defineLocale('eu', {\n months: 'urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua'.split(\n '_'\n ),\n monthsShort:\n 'urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata'.split(\n '_'\n ),\n weekdaysShort: 'ig._al._ar._az._og._ol._lr.'.split('_'),\n weekdaysMin: 'ig_al_ar_az_og_ol_lr'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY[ko] MMMM[ren] D[a]',\n LLL: 'YYYY[ko] MMMM[ren] D[a] HH:mm',\n LLLL: 'dddd, YYYY[ko] MMMM[ren] D[a] HH:mm',\n l: 'YYYY-M-D',\n ll: 'YYYY[ko] MMM D[a]',\n lll: 'YYYY[ko] MMM D[a] HH:mm',\n llll: 'ddd, YYYY[ko] MMM D[a] HH:mm',\n },\n calendar: {\n sameDay: '[gaur] LT[etan]',\n nextDay: '[bihar] LT[etan]',\n nextWeek: 'dddd LT[etan]',\n lastDay: '[atzo] LT[etan]',\n lastWeek: '[aurreko] dddd LT[etan]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s barru',\n past: 'duela %s',\n s: 'segundo batzuk',\n ss: '%d segundo',\n m: 'minutu bat',\n mm: '%d minutu',\n h: 'ordu bat',\n hh: '%d ordu',\n d: 'egun bat',\n dd: '%d egun',\n M: 'hilabete bat',\n MM: '%d hilabete',\n y: 'urte bat',\n yy: '%d urte',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return eu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Persian [fa]\n//! author : Ebrahim Byagowi : https://github.com/ebraminio\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '۱',\n 2: '۲',\n 3: '۳',\n 4: '۴',\n 5: '۵',\n 6: '۶',\n 7: '۷',\n 8: '۸',\n 9: '۹',\n 0: '۰',\n },\n numberMap = {\n '۱': '1',\n '۲': '2',\n '۳': '3',\n '۴': '4',\n '۵': '5',\n '۶': '6',\n '۷': '7',\n '۸': '8',\n '۹': '9',\n '۰': '0',\n };\n\n var fa = moment.defineLocale('fa', {\n months: 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n monthsShort:\n 'ژانویه_فوریه_مارس_آوریل_مه_ژوئن_ژوئیه_اوت_سپتامبر_اکتبر_نوامبر_دسامبر'.split(\n '_'\n ),\n weekdays:\n 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysShort:\n 'یک\\u200cشنبه_دوشنبه_سه\\u200cشنبه_چهارشنبه_پنج\\u200cشنبه_جمعه_شنبه'.split(\n '_'\n ),\n weekdaysMin: 'ی_د_س_چ_پ_ج_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /قبل از ظهر|بعد از ظهر/,\n isPM: function (input) {\n return /بعد از ظهر/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'قبل از ظهر';\n } else {\n return 'بعد از ظهر';\n }\n },\n calendar: {\n sameDay: '[امروز ساعت] LT',\n nextDay: '[فردا ساعت] LT',\n nextWeek: 'dddd [ساعت] LT',\n lastDay: '[دیروز ساعت] LT',\n lastWeek: 'dddd [پیش] [ساعت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'در %s',\n past: '%s پیش',\n s: 'چند ثانیه',\n ss: '%d ثانیه',\n m: 'یک دقیقه',\n mm: '%d دقیقه',\n h: 'یک ساعت',\n hh: '%d ساعت',\n d: 'یک روز',\n dd: '%d روز',\n M: 'یک ماه',\n MM: '%d ماه',\n y: 'یک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string\n .replace(/[۰-۹]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n dayOfMonthOrdinalParse: /\\d{1,2}م/,\n ordinal: '%dم',\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return fa;\n\n})));\n","//! moment.js locale configuration\n//! locale : Finnish [fi]\n//! author : Tarmo Aidantausta : https://github.com/bleadof\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersPast =\n 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(\n ' '\n ),\n numbersFuture = [\n 'nolla',\n 'yhden',\n 'kahden',\n 'kolmen',\n 'neljän',\n 'viiden',\n 'kuuden',\n numbersPast[7],\n numbersPast[8],\n numbersPast[9],\n ];\n function translate(number, withoutSuffix, key, isFuture) {\n var result = '';\n switch (key) {\n case 's':\n return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';\n case 'ss':\n result = isFuture ? 'sekunnin' : 'sekuntia';\n break;\n case 'm':\n return isFuture ? 'minuutin' : 'minuutti';\n case 'mm':\n result = isFuture ? 'minuutin' : 'minuuttia';\n break;\n case 'h':\n return isFuture ? 'tunnin' : 'tunti';\n case 'hh':\n result = isFuture ? 'tunnin' : 'tuntia';\n break;\n case 'd':\n return isFuture ? 'päivän' : 'päivä';\n case 'dd':\n result = isFuture ? 'päivän' : 'päivää';\n break;\n case 'M':\n return isFuture ? 'kuukauden' : 'kuukausi';\n case 'MM':\n result = isFuture ? 'kuukauden' : 'kuukautta';\n break;\n case 'y':\n return isFuture ? 'vuoden' : 'vuosi';\n case 'yy':\n result = isFuture ? 'vuoden' : 'vuotta';\n break;\n }\n result = verbalNumber(number, isFuture) + ' ' + result;\n return result;\n }\n function verbalNumber(number, isFuture) {\n return number < 10\n ? isFuture\n ? numbersFuture[number]\n : numbersPast[number]\n : number;\n }\n\n var fi = moment.defineLocale('fi', {\n months: 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split(\n '_'\n ),\n monthsShort:\n 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split(\n '_'\n ),\n weekdays:\n 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split(\n '_'\n ),\n weekdaysShort: 'su_ma_ti_ke_to_pe_la'.split('_'),\n weekdaysMin: 'su_ma_ti_ke_to_pe_la'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM[ta] YYYY',\n LLL: 'Do MMMM[ta] YYYY, [klo] HH.mm',\n LLLL: 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',\n l: 'D.M.YYYY',\n ll: 'Do MMM YYYY',\n lll: 'Do MMM YYYY, [klo] HH.mm',\n llll: 'ddd, Do MMM YYYY, [klo] HH.mm',\n },\n calendar: {\n sameDay: '[tänään] [klo] LT',\n nextDay: '[huomenna] [klo] LT',\n nextWeek: 'dddd [klo] LT',\n lastDay: '[eilen] [klo] LT',\n lastWeek: '[viime] dddd[na] [klo] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s päästä',\n past: '%s sitten',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Filipino [fil]\n//! author : Dan Hagman : https://github.com/hagmandan\n//! author : Matthew Co : https://github.com/matthewdeeco\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fil = moment.defineLocale('fil', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fil;\n\n})));\n","//! moment.js locale configuration\n//! locale : Faroese [fo]\n//! author : Ragnar Johannesen : https://github.com/ragnar123\n//! author : Kristian Sakarisson : https://github.com/sakarisson\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var fo = moment.defineLocale('fo', {\n months: 'januar_februar_mars_apríl_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),\n weekdays:\n 'sunnudagur_mánadagur_týsdagur_mikudagur_hósdagur_fríggjadagur_leygardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_týs_mik_hós_frí_ley'.split('_'),\n weekdaysMin: 'su_má_tý_mi_hó_fr_le'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D. MMMM, YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Í dag kl.] LT',\n nextDay: '[Í morgin kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[Í gjár kl.] LT',\n lastWeek: '[síðstu] dddd [kl] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'um %s',\n past: '%s síðani',\n s: 'fá sekund',\n ss: '%d sekundir',\n m: 'ein minuttur',\n mm: '%d minuttir',\n h: 'ein tími',\n hh: '%d tímar',\n d: 'ein dagur',\n dd: '%d dagar',\n M: 'ein mánaður',\n MM: '%d mánaðir',\n y: 'eitt ár',\n yy: '%d ár',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fo;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Canada) [fr-ca]\n//! author : Jonathan Abourbih : https://github.com/jonbca\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCa = moment.defineLocale('fr-ca', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n });\n\n return frCa;\n\n})));\n","//! moment.js locale configuration\n//! locale : French (Switzerland) [fr-ch]\n//! author : Gaspard Bucher : https://github.com/gaspard\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var frCh = moment.defineLocale('fr-ch', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|e)/,\n ordinal: function (number, period) {\n switch (period) {\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'D':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return frCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsStrictRegex =\n /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsShortStrictRegex =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n monthsRegex =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsParse = [\n /^janv/i,\n /^févr/i,\n /^mars/i,\n /^avr/i,\n /^mai/i,\n /^juin/i,\n /^juil/i,\n /^août/i,\n /^sept/i,\n /^oct/i,\n /^nov/i,\n /^déc/i,\n ];\n\n var fr = moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n w: 'une semaine',\n ww: '%d semaines',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Frisian [fy]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_');\n\n var fy = moment.defineLocale('fy', {\n months: 'jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n monthsParseExact: true,\n weekdays: 'snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon'.split(\n '_'\n ),\n weekdaysShort: 'si._mo._ti._wo._to._fr._so.'.split('_'),\n weekdaysMin: 'Si_Mo_Ti_Wo_To_Fr_So'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[hjoed om] LT',\n nextDay: '[moarn om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[juster om] LT',\n lastWeek: '[ôfrûne] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'oer %s',\n past: '%s lyn',\n s: 'in pear sekonden',\n ss: '%d sekonden',\n m: 'ien minút',\n mm: '%d minuten',\n h: 'ien oere',\n hh: '%d oeren',\n d: 'ien dei',\n dd: '%d dagen',\n M: 'ien moanne',\n MM: '%d moannen',\n y: 'ien jier',\n yy: '%d jierren',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Irish or Irish Gaelic [ga]\n//! author : André Silva : https://github.com/askpt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Eanáir',\n 'Feabhra',\n 'Márta',\n 'Aibreán',\n 'Bealtaine',\n 'Meitheamh',\n 'Iúil',\n 'Lúnasa',\n 'Meán Fómhair',\n 'Deireadh Fómhair',\n 'Samhain',\n 'Nollaig',\n ],\n monthsShort = [\n 'Ean',\n 'Feabh',\n 'Márt',\n 'Aib',\n 'Beal',\n 'Meith',\n 'Iúil',\n 'Lún',\n 'M.F.',\n 'D.F.',\n 'Samh',\n 'Noll',\n ],\n weekdays = [\n 'Dé Domhnaigh',\n 'Dé Luain',\n 'Dé Máirt',\n 'Dé Céadaoin',\n 'Déardaoin',\n 'Dé hAoine',\n 'Dé Sathairn',\n ],\n weekdaysShort = ['Domh', 'Luan', 'Máirt', 'Céad', 'Déar', 'Aoine', 'Sath'],\n weekdaysMin = ['Do', 'Lu', 'Má', 'Cé', 'Dé', 'A', 'Sa'];\n\n var ga = moment.defineLocale('ga', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Inniu ag] LT',\n nextDay: '[Amárach ag] LT',\n nextWeek: 'dddd [ag] LT',\n lastDay: '[Inné ag] LT',\n lastWeek: 'dddd [seo caite] [ag] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i %s',\n past: '%s ó shin',\n s: 'cúpla soicind',\n ss: '%d soicind',\n m: 'nóiméad',\n mm: '%d nóiméad',\n h: 'uair an chloig',\n hh: '%d uair an chloig',\n d: 'lá',\n dd: '%d lá',\n M: 'mí',\n MM: '%d míonna',\n y: 'bliain',\n yy: '%d bliain',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ga;\n\n})));\n","//! moment.js locale configuration\n//! locale : Scottish Gaelic [gd]\n//! author : Jon Ashdown : https://github.com/jonashdown\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'Am Faoilleach',\n 'An Gearran',\n 'Am Màrt',\n 'An Giblean',\n 'An Cèitean',\n 'An t-Ògmhios',\n 'An t-Iuchar',\n 'An Lùnastal',\n 'An t-Sultain',\n 'An Dàmhair',\n 'An t-Samhain',\n 'An Dùbhlachd',\n ],\n monthsShort = [\n 'Faoi',\n 'Gear',\n 'Màrt',\n 'Gibl',\n 'Cèit',\n 'Ògmh',\n 'Iuch',\n 'Lùn',\n 'Sult',\n 'Dàmh',\n 'Samh',\n 'Dùbh',\n ],\n weekdays = [\n 'Didòmhnaich',\n 'Diluain',\n 'Dimàirt',\n 'Diciadain',\n 'Diardaoin',\n 'Dihaoine',\n 'Disathairne',\n ],\n weekdaysShort = ['Did', 'Dil', 'Dim', 'Dic', 'Dia', 'Dih', 'Dis'],\n weekdaysMin = ['Dò', 'Lu', 'Mà', 'Ci', 'Ar', 'Ha', 'Sa'];\n\n var gd = moment.defineLocale('gd', {\n months: months,\n monthsShort: monthsShort,\n monthsParseExact: true,\n weekdays: weekdays,\n weekdaysShort: weekdaysShort,\n weekdaysMin: weekdaysMin,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[An-diugh aig] LT',\n nextDay: '[A-màireach aig] LT',\n nextWeek: 'dddd [aig] LT',\n lastDay: '[An-dè aig] LT',\n lastWeek: 'dddd [seo chaidh] [aig] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ann an %s',\n past: 'bho chionn %s',\n s: 'beagan diogan',\n ss: '%d diogan',\n m: 'mionaid',\n mm: '%d mionaidean',\n h: 'uair',\n hh: '%d uairean',\n d: 'latha',\n dd: '%d latha',\n M: 'mìos',\n MM: '%d mìosan',\n y: 'bliadhna',\n yy: '%d bliadhna',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(d|na|mh)/,\n ordinal: function (number) {\n var output = number === 1 ? 'd' : number % 10 === 2 ? 'na' : 'mh';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Galician [gl]\n//! author : Juan G. Hurtado : https://github.com/juanghurtado\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var gl = moment.defineLocale('gl', {\n months: 'xaneiro_febreiro_marzo_abril_maio_xuño_xullo_agosto_setembro_outubro_novembro_decembro'.split(\n '_'\n ),\n monthsShort:\n 'xan._feb._mar._abr._mai._xuñ._xul._ago._set._out._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'domingo_luns_martes_mércores_xoves_venres_sábado'.split('_'),\n weekdaysShort: 'dom._lun._mar._mér._xov._ven._sáb.'.split('_'),\n weekdaysMin: 'do_lu_ma_mé_xo_ve_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY H:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY H:mm',\n },\n calendar: {\n sameDay: function () {\n return '[hoxe ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextDay: function () {\n return '[mañá ' + (this.hours() !== 1 ? 'ás' : 'á') + '] LT';\n },\n nextWeek: function () {\n return 'dddd [' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT';\n },\n lastDay: function () {\n return '[onte ' + (this.hours() !== 1 ? 'á' : 'a') + '] LT';\n },\n lastWeek: function () {\n return (\n '[o] dddd [pasado ' + (this.hours() !== 1 ? 'ás' : 'a') + '] LT'\n );\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (str) {\n if (str.indexOf('un') === 0) {\n return 'n' + str;\n }\n return 'en ' + str;\n },\n past: 'hai %s',\n s: 'uns segundos',\n ss: '%d segundos',\n m: 'un minuto',\n mm: '%d minutos',\n h: 'unha hora',\n hh: '%d horas',\n d: 'un día',\n dd: '%d días',\n M: 'un mes',\n MM: '%d meses',\n y: 'un ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return gl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Devanagari script [gom-deva]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['थोडया सॅकंडांनी', 'थोडे सॅकंड'],\n ss: [number + ' सॅकंडांनी', number + ' सॅकंड'],\n m: ['एका मिणटान', 'एक मिनूट'],\n mm: [number + ' मिणटांनी', number + ' मिणटां'],\n h: ['एका वरान', 'एक वर'],\n hh: [number + ' वरांनी', number + ' वरां'],\n d: ['एका दिसान', 'एक दीस'],\n dd: [number + ' दिसांनी', number + ' दीस'],\n M: ['एका म्हयन्यान', 'एक म्हयनो'],\n MM: [number + ' म्हयन्यानी', number + ' म्हयने'],\n y: ['एका वर्सान', 'एक वर्स'],\n yy: [number + ' वर्सांनी', number + ' वर्सां'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomDeva = moment.defineLocale('gom-deva', {\n months: {\n standalone:\n 'जानेवारी_फेब्रुवारी_मार्च_एप्रील_मे_जून_जुलय_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n format: 'जानेवारीच्या_फेब्रुवारीच्या_मार्चाच्या_एप्रीलाच्या_मेयाच्या_जूनाच्या_जुलयाच्या_ऑगस्टाच्या_सप्टेंबराच्या_ऑक्टोबराच्या_नोव्हेंबराच्या_डिसेंबराच्या'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort:\n 'जाने._फेब्रु._मार्च_एप्री._मे_जून_जुल._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आयतार_सोमार_मंगळार_बुधवार_बिरेस्तार_सुक्रार_शेनवार'.split('_'),\n weekdaysShort: 'आयत._सोम._मंगळ._बुध._ब्रेस्त._सुक्र._शेन.'.split('_'),\n weekdaysMin: 'आ_सो_मं_बु_ब्रे_सु_शे'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [वाजतां]',\n LTS: 'A h:mm:ss [वाजतां]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [वाजतां]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [वाजतां]',\n llll: 'ddd, D MMM YYYY, A h:mm [वाजतां]',\n },\n calendar: {\n sameDay: '[आयज] LT',\n nextDay: '[फाल्यां] LT',\n nextWeek: '[फुडलो] dddd[,] LT',\n lastDay: '[काल] LT',\n lastWeek: '[फाटलो] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s आदीं',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(वेर)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'वेर' only applies to day of the month\n case 'D':\n return number + 'वेर';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /राती|सकाळीं|दनपारां|सांजे/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राती') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सकाळीं') {\n return hour;\n } else if (meridiem === 'दनपारां') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'सांजे') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'राती';\n } else if (hour < 12) {\n return 'सकाळीं';\n } else if (hour < 16) {\n return 'दनपारां';\n } else if (hour < 20) {\n return 'सांजे';\n } else {\n return 'राती';\n }\n },\n });\n\n return gomDeva;\n\n})));\n","//! moment.js locale configuration\n//! locale : Konkani Latin script [gom-latn]\n//! author : The Discoverer : https://github.com/WikiDiscoverer\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['thoddea sekondamni', 'thodde sekond'],\n ss: [number + ' sekondamni', number + ' sekond'],\n m: ['eka mintan', 'ek minut'],\n mm: [number + ' mintamni', number + ' mintam'],\n h: ['eka voran', 'ek vor'],\n hh: [number + ' voramni', number + ' voram'],\n d: ['eka disan', 'ek dis'],\n dd: [number + ' disamni', number + ' dis'],\n M: ['eka mhoinean', 'ek mhoino'],\n MM: [number + ' mhoineamni', number + ' mhoine'],\n y: ['eka vorsan', 'ek voros'],\n yy: [number + ' vorsamni', number + ' vorsam'],\n };\n return isFuture ? format[key][0] : format[key][1];\n }\n\n var gomLatn = moment.defineLocale('gom-latn', {\n months: {\n standalone:\n 'Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr'.split(\n '_'\n ),\n format: 'Janerachea_Febrerachea_Marsachea_Abrilachea_Maiachea_Junachea_Julaiachea_Agostachea_Setembrachea_Otubrachea_Novembrachea_Dezembrachea'.split(\n '_'\n ),\n isFormat: /MMMM(\\s)+D[oD]?/,\n },\n monthsShort:\n 'Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays: \"Aitar_Somar_Mongllar_Budhvar_Birestar_Sukrar_Son'var\".split('_'),\n weekdaysShort: 'Ait._Som._Mon._Bud._Bre._Suk._Son.'.split('_'),\n weekdaysMin: 'Ai_Sm_Mo_Bu_Br_Su_Sn'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'A h:mm [vazta]',\n LTS: 'A h:mm:ss [vazta]',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY A h:mm [vazta]',\n LLLL: 'dddd, MMMM Do, YYYY, A h:mm [vazta]',\n llll: 'ddd, D MMM YYYY, A h:mm [vazta]',\n },\n calendar: {\n sameDay: '[Aiz] LT',\n nextDay: '[Faleam] LT',\n nextWeek: '[Fuddlo] dddd[,] LT',\n lastDay: '[Kal] LT',\n lastWeek: '[Fattlo] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s',\n past: '%s adim',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er)/,\n ordinal: function (number, period) {\n switch (period) {\n // the ordinal 'er' only applies to day of the month\n case 'D':\n return number + 'er';\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n case 'w':\n case 'W':\n return number;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week\n doy: 3, // The week that contains Jan 4th is the first week of the year (7 + 0 - 4)\n },\n meridiemParse: /rati|sokallim|donparam|sanje/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'rati') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'sokallim') {\n return hour;\n } else if (meridiem === 'donparam') {\n return hour > 12 ? hour : hour + 12;\n } else if (meridiem === 'sanje') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'rati';\n } else if (hour < 12) {\n return 'sokallim';\n } else if (hour < 16) {\n return 'donparam';\n } else if (hour < 20) {\n return 'sanje';\n } else {\n return 'rati';\n }\n },\n });\n\n return gomLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Gujarati [gu]\n//! author : Kaushik Thanki : https://github.com/Kaushik1987\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '૧',\n 2: '૨',\n 3: '૩',\n 4: '૪',\n 5: '૫',\n 6: '૬',\n 7: '૭',\n 8: '૮',\n 9: '૯',\n 0: '૦',\n },\n numberMap = {\n '૧': '1',\n '૨': '2',\n '૩': '3',\n '૪': '4',\n '૫': '5',\n '૬': '6',\n '૭': '7',\n '૮': '8',\n '૯': '9',\n '૦': '0',\n };\n\n var gu = moment.defineLocale('gu', {\n months: 'જાન્યુઆરી_ફેબ્રુઆરી_માર્ચ_એપ્રિલ_મે_જૂન_જુલાઈ_ઑગસ્ટ_સપ્ટેમ્બર_ઑક્ટ્બર_નવેમ્બર_ડિસેમ્બર'.split(\n '_'\n ),\n monthsShort:\n 'જાન્યુ._ફેબ્રુ._માર્ચ_એપ્રિ._મે_જૂન_જુલા._ઑગ._સપ્ટે._ઑક્ટ્._નવે._ડિસે.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'રવિવાર_સોમવાર_મંગળવાર_બુધ્વાર_ગુરુવાર_શુક્રવાર_શનિવાર'.split(\n '_'\n ),\n weekdaysShort: 'રવિ_સોમ_મંગળ_બુધ્_ગુરુ_શુક્ર_શનિ'.split('_'),\n weekdaysMin: 'ર_સો_મં_બુ_ગુ_શુ_શ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm વાગ્યે',\n LTS: 'A h:mm:ss વાગ્યે',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm વાગ્યે',\n LLLL: 'dddd, D MMMM YYYY, A h:mm વાગ્યે',\n },\n calendar: {\n sameDay: '[આજ] LT',\n nextDay: '[કાલે] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ગઇકાલે] LT',\n lastWeek: '[પાછલા] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s મા',\n past: '%s પહેલા',\n s: 'અમુક પળો',\n ss: '%d સેકંડ',\n m: 'એક મિનિટ',\n mm: '%d મિનિટ',\n h: 'એક કલાક',\n hh: '%d કલાક',\n d: 'એક દિવસ',\n dd: '%d દિવસ',\n M: 'એક મહિનો',\n MM: '%d મહિનો',\n y: 'એક વર્ષ',\n yy: '%d વર્ષ',\n },\n preparse: function (string) {\n return string.replace(/[૧૨૩૪૫૬૭૮૯૦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Gujarati notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Gujarati.\n meridiemParse: /રાત|બપોર|સવાર|સાંજ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'રાત') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'સવાર') {\n return hour;\n } else if (meridiem === 'બપોર') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'સાંજ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'રાત';\n } else if (hour < 10) {\n return 'સવાર';\n } else if (hour < 17) {\n return 'બપોર';\n } else if (hour < 20) {\n return 'સાંજ';\n } else {\n return 'રાત';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return gu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hebrew [he]\n//! author : Tomer Cohen : https://github.com/tomer\n//! author : Moshe Simantov : https://github.com/DevelopmentIL\n//! author : Tal Ater : https://github.com/TalAter\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var he = moment.defineLocale('he', {\n months: 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split(\n '_'\n ),\n monthsShort:\n 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),\n weekdays: 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),\n weekdaysShort: 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),\n weekdaysMin: 'א_ב_ג_ד_ה_ו_ש'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [ב]MMMM YYYY',\n LLL: 'D [ב]MMMM YYYY HH:mm',\n LLLL: 'dddd, D [ב]MMMM YYYY HH:mm',\n l: 'D/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[היום ב־]LT',\n nextDay: '[מחר ב־]LT',\n nextWeek: 'dddd [בשעה] LT',\n lastDay: '[אתמול ב־]LT',\n lastWeek: '[ביום] dddd [האחרון בשעה] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'בעוד %s',\n past: 'לפני %s',\n s: 'מספר שניות',\n ss: '%d שניות',\n m: 'דקה',\n mm: '%d דקות',\n h: 'שעה',\n hh: function (number) {\n if (number === 2) {\n return 'שעתיים';\n }\n return number + ' שעות';\n },\n d: 'יום',\n dd: function (number) {\n if (number === 2) {\n return 'יומיים';\n }\n return number + ' ימים';\n },\n M: 'חודש',\n MM: function (number) {\n if (number === 2) {\n return 'חודשיים';\n }\n return number + ' חודשים';\n },\n y: 'שנה',\n yy: function (number) {\n if (number === 2) {\n return 'שנתיים';\n } else if (number % 10 === 0 && number !== 10) {\n return number + ' שנה';\n }\n return number + ' שנים';\n },\n },\n meridiemParse:\n /אחה\"צ|לפנה\"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,\n isPM: function (input) {\n return /^(אחה\"צ|אחרי הצהריים|בערב)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 5) {\n return 'לפנות בוקר';\n } else if (hour < 10) {\n return 'בבוקר';\n } else if (hour < 12) {\n return isLower ? 'לפנה\"צ' : 'לפני הצהריים';\n } else if (hour < 18) {\n return isLower ? 'אחה\"צ' : 'אחרי הצהריים';\n } else {\n return 'בערב';\n }\n },\n });\n\n return he;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hindi [hi]\n//! author : Mayank Singhal : https://github.com/mayanksinghal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n },\n monthsParse = [\n /^जन/i,\n /^फ़र|फर/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सितं|सित/i,\n /^अक्टू/i,\n /^नव|नवं/i,\n /^दिसं|दिस/i,\n ],\n shortMonthsParse = [\n /^जन/i,\n /^फ़र/i,\n /^मार्च/i,\n /^अप्रै/i,\n /^मई/i,\n /^जून/i,\n /^जुल/i,\n /^अग/i,\n /^सित/i,\n /^अक्टू/i,\n /^नव/i,\n /^दिस/i,\n ];\n\n var hi = moment.defineLocale('hi', {\n months: {\n format: 'जनवरी_फ़रवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितम्बर_अक्टूबर_नवम्बर_दिसम्बर'.split(\n '_'\n ),\n standalone:\n 'जनवरी_फरवरी_मार्च_अप्रैल_मई_जून_जुलाई_अगस्त_सितंबर_अक्टूबर_नवंबर_दिसंबर'.split(\n '_'\n ),\n },\n monthsShort:\n 'जन._फ़र._मार्च_अप्रै._मई_जून_जुल._अग._सित._अक्टू._नव._दिस.'.split('_'),\n weekdays: 'रविवार_सोमवार_मंगलवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगल_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm बजे',\n LTS: 'A h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, A h:mm बजे',\n },\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: shortMonthsParse,\n\n monthsRegex:\n /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsShortRegex:\n /^(जनवरी|जन\\.?|फ़रवरी|फरवरी|फ़र\\.?|मार्च?|अप्रैल|अप्रै\\.?|मई?|जून?|जुलाई|जुल\\.?|अगस्त|अग\\.?|सितम्बर|सितंबर|सित\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर|नव\\.?|दिसम्बर|दिसंबर|दिस\\.?)/i,\n\n monthsStrictRegex:\n /^(जनवरी?|फ़रवरी|फरवरी?|मार्च?|अप्रैल?|मई?|जून?|जुलाई?|अगस्त?|सितम्बर|सितंबर|सित?\\.?|अक्टूबर|अक्टू\\.?|नवम्बर|नवंबर?|दिसम्बर|दिसंबर?)/i,\n\n monthsShortStrictRegex:\n /^(जन\\.?|फ़र\\.?|मार्च?|अप्रै\\.?|मई?|जून?|जुल\\.?|अग\\.?|सित\\.?|अक्टू\\.?|नव\\.?|दिस\\.?)/i,\n\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[कल] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[कल] LT',\n lastWeek: '[पिछले] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s में',\n past: '%s पहले',\n s: 'कुछ ही क्षण',\n ss: '%d सेकंड',\n m: 'एक मिनट',\n mm: '%d मिनट',\n h: 'एक घंटा',\n hh: '%d घंटे',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महीने',\n MM: '%d महीने',\n y: 'एक वर्ष',\n yy: '%d वर्ष',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Hindi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Hindi.\n meridiemParse: /रात|सुबह|दोपहर|शाम/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'रात') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'सुबह') {\n return hour;\n } else if (meridiem === 'दोपहर') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'शाम') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'रात';\n } else if (hour < 10) {\n return 'सुबह';\n } else if (hour < 17) {\n return 'दोपहर';\n } else if (hour < 20) {\n return 'शाम';\n } else {\n return 'रात';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return hi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Croatian [hr]\n//! author : Bojan Marković : https://github.com/bmarkovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n if (number === 1) {\n result += 'sekunda';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sekunde';\n } else {\n result += 'sekundi';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'jedna minuta' : 'jedne minute';\n case 'mm':\n if (number === 1) {\n result += 'minuta';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'minute';\n } else {\n result += 'minuta';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'jedan sat' : 'jednog sata';\n case 'hh':\n if (number === 1) {\n result += 'sat';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'sata';\n } else {\n result += 'sati';\n }\n return result;\n case 'dd':\n if (number === 1) {\n result += 'dan';\n } else {\n result += 'dana';\n }\n return result;\n case 'MM':\n if (number === 1) {\n result += 'mjesec';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'mjeseca';\n } else {\n result += 'mjeseci';\n }\n return result;\n case 'yy':\n if (number === 1) {\n result += 'godina';\n } else if (number === 2 || number === 3 || number === 4) {\n result += 'godine';\n } else {\n result += 'godina';\n }\n return result;\n }\n }\n\n var hr = moment.defineLocale('hr', {\n months: {\n format: 'siječnja_veljače_ožujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca'.split(\n '_'\n ),\n standalone:\n 'siječanj_veljača_ožujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac'.split(\n '_'\n ),\n },\n monthsShort:\n 'sij._velj._ožu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'Do MMMM YYYY',\n LLL: 'Do MMMM YYYY H:mm',\n LLLL: 'dddd, Do MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[jučer u] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prošlu] [nedjelju] [u] LT';\n case 3:\n return '[prošlu] [srijedu] [u] LT';\n case 6:\n return '[prošle] [subote] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prošli] dddd [u] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'par sekundi',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: 'dan',\n dd: translate,\n M: 'mjesec',\n MM: translate,\n y: 'godinu',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Hungarian [hu]\n//! author : Adam Brunner : https://github.com/adambrunner\n//! author : Peter Viszt : https://github.com/passatgt\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var weekEndings =\n 'vasárnap hétfőn kedden szerdán csütörtökön pénteken szombaton'.split(' ');\n function translate(number, withoutSuffix, key, isFuture) {\n var num = number;\n switch (key) {\n case 's':\n return isFuture || withoutSuffix\n ? 'néhány másodperc'\n : 'néhány másodperce';\n case 'ss':\n return num + (isFuture || withoutSuffix)\n ? ' másodperc'\n : ' másodperce';\n case 'm':\n return 'egy' + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'mm':\n return num + (isFuture || withoutSuffix ? ' perc' : ' perce');\n case 'h':\n return 'egy' + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'hh':\n return num + (isFuture || withoutSuffix ? ' óra' : ' órája');\n case 'd':\n return 'egy' + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'dd':\n return num + (isFuture || withoutSuffix ? ' nap' : ' napja');\n case 'M':\n return 'egy' + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'MM':\n return num + (isFuture || withoutSuffix ? ' hónap' : ' hónapja');\n case 'y':\n return 'egy' + (isFuture || withoutSuffix ? ' év' : ' éve');\n case 'yy':\n return num + (isFuture || withoutSuffix ? ' év' : ' éve');\n }\n return '';\n }\n function week(isFuture) {\n return (\n (isFuture ? '' : '[múlt] ') +\n '[' +\n weekEndings[this.day()] +\n '] LT[-kor]'\n );\n }\n\n var hu = moment.defineLocale('hu', {\n months: 'január_február_március_április_május_június_július_augusztus_szeptember_október_november_december'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._márc._ápr._máj._jún._júl._aug._szept._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'vasárnap_hétfő_kedd_szerda_csütörtök_péntek_szombat'.split('_'),\n weekdaysShort: 'vas_hét_kedd_sze_csüt_pén_szo'.split('_'),\n weekdaysMin: 'v_h_k_sze_cs_p_szo'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY. MMMM D.',\n LLL: 'YYYY. MMMM D. H:mm',\n LLLL: 'YYYY. MMMM D., dddd H:mm',\n },\n meridiemParse: /de|du/i,\n isPM: function (input) {\n return input.charAt(1).toLowerCase() === 'u';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower === true ? 'de' : 'DE';\n } else {\n return isLower === true ? 'du' : 'DU';\n }\n },\n calendar: {\n sameDay: '[ma] LT[-kor]',\n nextDay: '[holnap] LT[-kor]',\n nextWeek: function () {\n return week.call(this, true);\n },\n lastDay: '[tegnap] LT[-kor]',\n lastWeek: function () {\n return week.call(this, false);\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s múlva',\n past: '%s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return hu;\n\n})));\n","//! moment.js locale configuration\n//! locale : Armenian [hy-am]\n//! author : Armendarabyan : https://github.com/armendarabyan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var hyAm = moment.defineLocale('hy-am', {\n months: {\n format: 'հունվարի_փետրվարի_մարտի_ապրիլի_մայիսի_հունիսի_հուլիսի_օգոստոսի_սեպտեմբերի_հոկտեմբերի_նոյեմբերի_դեկտեմբերի'.split(\n '_'\n ),\n standalone:\n 'հունվար_փետրվար_մարտ_ապրիլ_մայիս_հունիս_հուլիս_օգոստոս_սեպտեմբեր_հոկտեմբեր_նոյեմբեր_դեկտեմբեր'.split(\n '_'\n ),\n },\n monthsShort: 'հնվ_փտր_մրտ_ապր_մյս_հնս_հլս_օգս_սպտ_հկտ_նմբ_դկտ'.split('_'),\n weekdays:\n 'կիրակի_երկուշաբթի_երեքշաբթի_չորեքշաբթի_հինգշաբթի_ուրբաթ_շաբաթ'.split(\n '_'\n ),\n weekdaysShort: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n weekdaysMin: 'կրկ_երկ_երք_չրք_հնգ_ուրբ_շբթ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY թ.',\n LLL: 'D MMMM YYYY թ., HH:mm',\n LLLL: 'dddd, D MMMM YYYY թ., HH:mm',\n },\n calendar: {\n sameDay: '[այսօր] LT',\n nextDay: '[վաղը] LT',\n lastDay: '[երեկ] LT',\n nextWeek: function () {\n return 'dddd [օրը ժամը] LT';\n },\n lastWeek: function () {\n return '[անցած] dddd [օրը ժամը] LT';\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s հետո',\n past: '%s առաջ',\n s: 'մի քանի վայրկյան',\n ss: '%d վայրկյան',\n m: 'րոպե',\n mm: '%d րոպե',\n h: 'ժամ',\n hh: '%d ժամ',\n d: 'օր',\n dd: '%d օր',\n M: 'ամիս',\n MM: '%d ամիս',\n y: 'տարի',\n yy: '%d տարի',\n },\n meridiemParse: /գիշերվա|առավոտվա|ցերեկվա|երեկոյան/,\n isPM: function (input) {\n return /^(ցերեկվա|երեկոյան)$/.test(input);\n },\n meridiem: function (hour) {\n if (hour < 4) {\n return 'գիշերվա';\n } else if (hour < 12) {\n return 'առավոտվա';\n } else if (hour < 17) {\n return 'ցերեկվա';\n } else {\n return 'երեկոյան';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}|\\d{1,2}-(ին|րդ)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'DDD':\n case 'w':\n case 'W':\n case 'DDDo':\n if (number === 1) {\n return number + '-ին';\n }\n return number + '-րդ';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return hyAm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Indonesian [id]\n//! author : Mohammad Satrio Utomo : https://github.com/tyok\n//! reference: http://id.wikisource.org/wiki/Pedoman_Umum_Ejaan_Bahasa_Indonesia_yang_Disempurnakan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var id = moment.defineLocale('id', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des'.split('_'),\n weekdays: 'Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Rab_Kam_Jum_Sab'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|siang|sore|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'siang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sore' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'siang';\n } else if (hours < 19) {\n return 'sore';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Besok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kemarin pukul] LT',\n lastWeek: 'dddd [lalu pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lalu',\n s: 'beberapa detik',\n ss: '%d detik',\n m: 'semenit',\n mm: '%d menit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return id;\n\n})));\n","//! moment.js locale configuration\n//! locale : Icelandic [is]\n//! author : Hinrik Örn Sigurðsson : https://github.com/hinrik\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(n) {\n if (n % 100 === 11) {\n return true;\n } else if (n % 10 === 1) {\n return false;\n }\n return true;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nokkrar sekúndur'\n : 'nokkrum sekúndum';\n case 'ss':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture ? 'sekúndur' : 'sekúndum')\n );\n }\n return result + 'sekúnda';\n case 'm':\n return withoutSuffix ? 'mínúta' : 'mínútu';\n case 'mm':\n if (plural(number)) {\n return (\n result + (withoutSuffix || isFuture ? 'mínútur' : 'mínútum')\n );\n } else if (withoutSuffix) {\n return result + 'mínúta';\n }\n return result + 'mínútu';\n case 'hh':\n if (plural(number)) {\n return (\n result +\n (withoutSuffix || isFuture\n ? 'klukkustundir'\n : 'klukkustundum')\n );\n }\n return result + 'klukkustund';\n case 'd':\n if (withoutSuffix) {\n return 'dagur';\n }\n return isFuture ? 'dag' : 'degi';\n case 'dd':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'dagar';\n }\n return result + (isFuture ? 'daga' : 'dögum');\n } else if (withoutSuffix) {\n return result + 'dagur';\n }\n return result + (isFuture ? 'dag' : 'degi');\n case 'M':\n if (withoutSuffix) {\n return 'mánuður';\n }\n return isFuture ? 'mánuð' : 'mánuði';\n case 'MM':\n if (plural(number)) {\n if (withoutSuffix) {\n return result + 'mánuðir';\n }\n return result + (isFuture ? 'mánuði' : 'mánuðum');\n } else if (withoutSuffix) {\n return result + 'mánuður';\n }\n return result + (isFuture ? 'mánuð' : 'mánuði');\n case 'y':\n return withoutSuffix || isFuture ? 'ár' : 'ári';\n case 'yy':\n if (plural(number)) {\n return result + (withoutSuffix || isFuture ? 'ár' : 'árum');\n }\n return result + (withoutSuffix || isFuture ? 'ár' : 'ári');\n }\n }\n\n var is = moment.defineLocale('is', {\n months: 'janúar_febrúar_mars_apríl_maí_júní_júlí_ágúst_september_október_nóvember_desember'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maí_jún_júl_ágú_sep_okt_nóv_des'.split('_'),\n weekdays:\n 'sunnudagur_mánudagur_þriðjudagur_miðvikudagur_fimmtudagur_föstudagur_laugardagur'.split(\n '_'\n ),\n weekdaysShort: 'sun_mán_þri_mið_fim_fös_lau'.split('_'),\n weekdaysMin: 'Su_Má_Þr_Mi_Fi_Fö_La'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd, D. MMMM YYYY [kl.] H:mm',\n },\n calendar: {\n sameDay: '[í dag kl.] LT',\n nextDay: '[á morgun kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[í gær kl.] LT',\n lastWeek: '[síðasta] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'eftir %s',\n past: 'fyrir %s síðan',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: 'klukkustund',\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return is;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian (Switzerland) [it-ch]\n//! author : xfh : https://github.com/xfh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var itCh = moment.defineLocale('it-ch', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Oggi alle] LT',\n nextDay: '[Domani alle] LT',\n nextWeek: 'dddd [alle] LT',\n lastDay: '[Ieri alle] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[la scorsa] dddd [alle] LT';\n default:\n return '[lo scorso] dddd [alle] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return (/^[0-9].+$/.test(s) ? 'tra' : 'in') + ' ' + s;\n },\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return itCh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: function () {\n return (\n '[Oggi a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextDay: function () {\n return (\n '[Domani a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextWeek: function () {\n return (\n 'dddd [a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastDay: function () {\n return (\n '[Ieri a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return (\n '[La scorsa] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n default:\n return (\n '[Lo scorso] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'tra %s',\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n w: 'una settimana',\n ww: '%d settimane',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return it;\n\n})));\n","//! moment.js locale configuration\n//! locale : Japanese [ja]\n//! author : LI Long : https://github.com/baryon\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ja = moment.defineLocale('ja', {\n eras: [\n {\n since: '2019-05-01',\n offset: 1,\n name: '令和',\n narrow: '㋿',\n abbr: 'R',\n },\n {\n since: '1989-01-08',\n until: '2019-04-30',\n offset: 1,\n name: '平成',\n narrow: '㍻',\n abbr: 'H',\n },\n {\n since: '1926-12-25',\n until: '1989-01-07',\n offset: 1,\n name: '昭和',\n narrow: '㍼',\n abbr: 'S',\n },\n {\n since: '1912-07-30',\n until: '1926-12-24',\n offset: 1,\n name: '大正',\n narrow: '㍽',\n abbr: 'T',\n },\n {\n since: '1873-01-01',\n until: '1912-07-29',\n offset: 6,\n name: '明治',\n narrow: '㍾',\n abbr: 'M',\n },\n {\n since: '0001-01-01',\n until: '1873-12-31',\n offset: 1,\n name: '西暦',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: '紀元前',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n eraYearOrdinalRegex: /(元|\\d+)年/,\n eraYearOrdinalParse: function (input, match) {\n return match[1] === '元' ? 1 : parseInt(match[1] || input, 10);\n },\n months: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '日曜日_月曜日_火曜日_水曜日_木曜日_金曜日_土曜日'.split('_'),\n weekdaysShort: '日_月_火_水_木_金_土'.split('_'),\n weekdaysMin: '日_月_火_水_木_金_土'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日 dddd HH:mm',\n l: 'YYYY/MM/DD',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日(ddd) HH:mm',\n },\n meridiemParse: /午前|午後/i,\n isPM: function (input) {\n return input === '午後';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return '午前';\n } else {\n return '午後';\n }\n },\n calendar: {\n sameDay: '[今日] LT',\n nextDay: '[明日] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[来週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n lastDay: '[昨日] LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[先週]dddd LT';\n } else {\n return 'dddd LT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}日/,\n ordinal: function (number, period) {\n switch (period) {\n case 'y':\n return number === 1 ? '元年' : number + '年';\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '数秒',\n ss: '%d秒',\n m: '1分',\n mm: '%d分',\n h: '1時間',\n hh: '%d時間',\n d: '1日',\n dd: '%d日',\n M: '1ヶ月',\n MM: '%dヶ月',\n y: '1年',\n yy: '%d年',\n },\n });\n\n return ja;\n\n})));\n","//! moment.js locale configuration\n//! locale : Javanese [jv]\n//! author : Rony Lantip : https://github.com/lantip\n//! reference: http://jv.wikipedia.org/wiki/Basa_Jawa\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var jv = moment.defineLocale('jv', {\n months: 'Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des'.split('_'),\n weekdays: 'Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu'.split('_'),\n weekdaysShort: 'Min_Sen_Sel_Reb_Kem_Jem_Sep'.split('_'),\n weekdaysMin: 'Mg_Sn_Sl_Rb_Km_Jm_Sp'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /enjing|siyang|sonten|ndalu/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'enjing') {\n return hour;\n } else if (meridiem === 'siyang') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'sonten' || meridiem === 'ndalu') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'enjing';\n } else if (hours < 15) {\n return 'siyang';\n } else if (hours < 19) {\n return 'sonten';\n } else {\n return 'ndalu';\n }\n },\n calendar: {\n sameDay: '[Dinten puniko pukul] LT',\n nextDay: '[Mbenjang pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kala wingi pukul] LT',\n lastWeek: 'dddd [kepengker pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'wonten ing %s',\n past: '%s ingkang kepengker',\n s: 'sawetawis detik',\n ss: '%d detik',\n m: 'setunggal menit',\n mm: '%d menit',\n h: 'setunggal jam',\n hh: '%d jam',\n d: 'sedinten',\n dd: '%d dinten',\n M: 'sewulan',\n MM: '%d wulan',\n y: 'setaun',\n yy: '%d taun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return jv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Georgian [ka]\n//! author : Irakli Janiashvili : https://github.com/IrakliJani\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ka = moment.defineLocale('ka', {\n months: 'იანვარი_თებერვალი_მარტი_აპრილი_მაისი_ივნისი_ივლისი_აგვისტო_სექტემბერი_ოქტომბერი_ნოემბერი_დეკემბერი'.split(\n '_'\n ),\n monthsShort: 'იან_თებ_მარ_აპრ_მაი_ივნ_ივლ_აგვ_სექ_ოქტ_ნოე_დეკ'.split('_'),\n weekdays: {\n standalone:\n 'კვირა_ორშაბათი_სამშაბათი_ოთხშაბათი_ხუთშაბათი_პარასკევი_შაბათი'.split(\n '_'\n ),\n format: 'კვირას_ორშაბათს_სამშაბათს_ოთხშაბათს_ხუთშაბათს_პარასკევს_შაბათს'.split(\n '_'\n ),\n isFormat: /(წინა|შემდეგ)/,\n },\n weekdaysShort: 'კვი_ორშ_სამ_ოთხ_ხუთ_პარ_შაბ'.split('_'),\n weekdaysMin: 'კვ_ორ_სა_ოთ_ხუ_პა_შა'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[დღეს] LT[-ზე]',\n nextDay: '[ხვალ] LT[-ზე]',\n lastDay: '[გუშინ] LT[-ზე]',\n nextWeek: '[შემდეგ] dddd LT[-ზე]',\n lastWeek: '[წინა] dddd LT-ზე',\n sameElse: 'L',\n },\n relativeTime: {\n future: function (s) {\n return s.replace(\n /(წამ|წუთ|საათ|წელ|დღ|თვ)(ი|ე)/,\n function ($0, $1, $2) {\n return $2 === 'ი' ? $1 + 'ში' : $1 + $2 + 'ში';\n }\n );\n },\n past: function (s) {\n if (/(წამი|წუთი|საათი|დღე|თვე)/.test(s)) {\n return s.replace(/(ი|ე)$/, 'ის წინ');\n }\n if (/წელი/.test(s)) {\n return s.replace(/წელი$/, 'წლის წინ');\n }\n return s;\n },\n s: 'რამდენიმე წამი',\n ss: '%d წამი',\n m: 'წუთი',\n mm: '%d წუთი',\n h: 'საათი',\n hh: '%d საათი',\n d: 'დღე',\n dd: '%d დღე',\n M: 'თვე',\n MM: '%d თვე',\n y: 'წელი',\n yy: '%d წელი',\n },\n dayOfMonthOrdinalParse: /0|1-ლი|მე-\\d{1,2}|\\d{1,2}-ე/,\n ordinal: function (number) {\n if (number === 0) {\n return number;\n }\n if (number === 1) {\n return number + '-ლი';\n }\n if (\n number < 20 ||\n (number <= 100 && number % 20 === 0) ||\n number % 100 === 0\n ) {\n return 'მე-' + number;\n }\n return number + '-ე';\n },\n week: {\n dow: 1,\n doy: 7,\n },\n });\n\n return ka;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kazakh [kk]\n//! authors : Nurlan Rakhimzhanov : https://github.com/nurlan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ші',\n 1: '-ші',\n 2: '-ші',\n 3: '-ші',\n 4: '-ші',\n 5: '-ші',\n 6: '-шы',\n 7: '-ші',\n 8: '-ші',\n 9: '-шы',\n 10: '-шы',\n 20: '-шы',\n 30: '-шы',\n 40: '-шы',\n 50: '-ші',\n 60: '-шы',\n 70: '-ші',\n 80: '-ші',\n 90: '-шы',\n 100: '-ші',\n };\n\n var kk = moment.defineLocale('kk', {\n months: 'қаңтар_ақпан_наурыз_сәуір_мамыр_маусым_шілде_тамыз_қыркүйек_қазан_қараша_желтоқсан'.split(\n '_'\n ),\n monthsShort: 'қаң_ақп_нау_сәу_мам_мау_шіл_там_қыр_қаз_қар_жел'.split('_'),\n weekdays: 'жексенбі_дүйсенбі_сейсенбі_сәрсенбі_бейсенбі_жұма_сенбі'.split(\n '_'\n ),\n weekdaysShort: 'жек_дүй_сей_сәр_бей_жұм_сен'.split('_'),\n weekdaysMin: 'жк_дй_сй_ср_бй_жм_сн'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгін сағат] LT',\n nextDay: '[Ертең сағат] LT',\n nextWeek: 'dddd [сағат] LT',\n lastDay: '[Кеше сағат] LT',\n lastWeek: '[Өткен аптаның] dddd [сағат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ішінде',\n past: '%s бұрын',\n s: 'бірнеше секунд',\n ss: '%d секунд',\n m: 'бір минут',\n mm: '%d минут',\n h: 'бір сағат',\n hh: '%d сағат',\n d: 'бір күн',\n dd: '%d күн',\n M: 'бір ай',\n MM: '%d ай',\n y: 'бір жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ші|шы)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return kk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Cambodian [km]\n//! author : Kruy Vanna : https://github.com/kruyvanna\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '១',\n 2: '២',\n 3: '៣',\n 4: '៤',\n 5: '៥',\n 6: '៦',\n 7: '៧',\n 8: '៨',\n 9: '៩',\n 0: '០',\n },\n numberMap = {\n '១': '1',\n '២': '2',\n '៣': '3',\n '៤': '4',\n '៥': '5',\n '៦': '6',\n '៧': '7',\n '៨': '8',\n '៩': '9',\n '០': '0',\n };\n\n var km = moment.defineLocale('km', {\n months: 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n monthsShort:\n 'មករា_កុម្ភៈ_មីនា_មេសា_ឧសភា_មិថុនា_កក្កដា_សីហា_កញ្ញា_តុលា_វិច្ឆិកា_ធ្នូ'.split(\n '_'\n ),\n weekdays: 'អាទិត្យ_ច័ន្ទ_អង្គារ_ពុធ_ព្រហស្បតិ៍_សុក្រ_សៅរ៍'.split('_'),\n weekdaysShort: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysMin: 'អា_ច_អ_ព_ព្រ_សុ_ស'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ព្រឹក|ល្ងាច/,\n isPM: function (input) {\n return input === 'ល្ងាច';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ព្រឹក';\n } else {\n return 'ល្ងាច';\n }\n },\n calendar: {\n sameDay: '[ថ្ងៃនេះ ម៉ោង] LT',\n nextDay: '[ស្អែក ម៉ោង] LT',\n nextWeek: 'dddd [ម៉ោង] LT',\n lastDay: '[ម្សិលមិញ ម៉ោង] LT',\n lastWeek: 'dddd [សប្តាហ៍មុន] [ម៉ោង] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sទៀត',\n past: '%sមុន',\n s: 'ប៉ុន្មានវិនាទី',\n ss: '%d វិនាទី',\n m: 'មួយនាទី',\n mm: '%d នាទី',\n h: 'មួយម៉ោង',\n hh: '%d ម៉ោង',\n d: 'មួយថ្ងៃ',\n dd: '%d ថ្ងៃ',\n M: 'មួយខែ',\n MM: '%d ខែ',\n y: 'មួយឆ្នាំ',\n yy: '%d ឆ្នាំ',\n },\n dayOfMonthOrdinalParse: /ទី\\d{1,2}/,\n ordinal: 'ទី%d',\n preparse: function (string) {\n return string.replace(/[១២៣៤៥៦៧៨៩០]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return km;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kannada [kn]\n//! author : Rajeev Naik : https://github.com/rajeevnaikte\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '೧',\n 2: '೨',\n 3: '೩',\n 4: '೪',\n 5: '೫',\n 6: '೬',\n 7: '೭',\n 8: '೮',\n 9: '೯',\n 0: '೦',\n },\n numberMap = {\n '೧': '1',\n '೨': '2',\n '೩': '3',\n '೪': '4',\n '೫': '5',\n '೬': '6',\n '೭': '7',\n '೮': '8',\n '೯': '9',\n '೦': '0',\n };\n\n var kn = moment.defineLocale('kn', {\n months: 'ಜನವರಿ_ಫೆಬ್ರವರಿ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂಬರ್_ಅಕ್ಟೋಬರ್_ನವೆಂಬರ್_ಡಿಸೆಂಬರ್'.split(\n '_'\n ),\n monthsShort:\n 'ಜನ_ಫೆಬ್ರ_ಮಾರ್ಚ್_ಏಪ್ರಿಲ್_ಮೇ_ಜೂನ್_ಜುಲೈ_ಆಗಸ್ಟ್_ಸೆಪ್ಟೆಂ_ಅಕ್ಟೋ_ನವೆಂ_ಡಿಸೆಂ'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'ಭಾನುವಾರ_ಸೋಮವಾರ_ಮಂಗಳವಾರ_ಬುಧವಾರ_ಗುರುವಾರ_ಶುಕ್ರವಾರ_ಶನಿವಾರ'.split(\n '_'\n ),\n weekdaysShort: 'ಭಾನು_ಸೋಮ_ಮಂಗಳ_ಬುಧ_ಗುರು_ಶುಕ್ರ_ಶನಿ'.split('_'),\n weekdaysMin: 'ಭಾ_ಸೋ_ಮಂ_ಬು_ಗು_ಶು_ಶ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[ಇಂದು] LT',\n nextDay: '[ನಾಳೆ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ನಿನ್ನೆ] LT',\n lastWeek: '[ಕೊನೆಯ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ನಂತರ',\n past: '%s ಹಿಂದೆ',\n s: 'ಕೆಲವು ಕ್ಷಣಗಳು',\n ss: '%d ಸೆಕೆಂಡುಗಳು',\n m: 'ಒಂದು ನಿಮಿಷ',\n mm: '%d ನಿಮಿಷ',\n h: 'ಒಂದು ಗಂಟೆ',\n hh: '%d ಗಂಟೆ',\n d: 'ಒಂದು ದಿನ',\n dd: '%d ದಿನ',\n M: 'ಒಂದು ತಿಂಗಳು',\n MM: '%d ತಿಂಗಳು',\n y: 'ಒಂದು ವರ್ಷ',\n yy: '%d ವರ್ಷ',\n },\n preparse: function (string) {\n return string.replace(/[೧೨೩೪೫೬೭೮೯೦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /ರಾತ್ರಿ|ಬೆಳಿಗ್ಗೆ|ಮಧ್ಯಾಹ್ನ|ಸಂಜೆ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ರಾತ್ರಿ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ಬೆಳಿಗ್ಗೆ') {\n return hour;\n } else if (meridiem === 'ಮಧ್ಯಾಹ್ನ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ಸಂಜೆ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ರಾತ್ರಿ';\n } else if (hour < 10) {\n return 'ಬೆಳಿಗ್ಗೆ';\n } else if (hour < 17) {\n return 'ಮಧ್ಯಾಹ್ನ';\n } else if (hour < 20) {\n return 'ಸಂಜೆ';\n } else {\n return 'ರಾತ್ರಿ';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ನೇ)/,\n ordinal: function (number) {\n return number + 'ನೇ';\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return kn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Korean [ko]\n//! author : Kyungwook, Park : https://github.com/kyungw00k\n//! author : Jeeeyul Lee \n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ko = moment.defineLocale('ko', {\n months: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split('_'),\n monthsShort: '1월_2월_3월_4월_5월_6월_7월_8월_9월_10월_11월_12월'.split(\n '_'\n ),\n weekdays: '일요일_월요일_화요일_수요일_목요일_금요일_토요일'.split('_'),\n weekdaysShort: '일_월_화_수_목_금_토'.split('_'),\n weekdaysMin: '일_월_화_수_목_금_토'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'YYYY.MM.DD.',\n LL: 'YYYY년 MMMM D일',\n LLL: 'YYYY년 MMMM D일 A h:mm',\n LLLL: 'YYYY년 MMMM D일 dddd A h:mm',\n l: 'YYYY.MM.DD.',\n ll: 'YYYY년 MMMM D일',\n lll: 'YYYY년 MMMM D일 A h:mm',\n llll: 'YYYY년 MMMM D일 dddd A h:mm',\n },\n calendar: {\n sameDay: '오늘 LT',\n nextDay: '내일 LT',\n nextWeek: 'dddd LT',\n lastDay: '어제 LT',\n lastWeek: '지난주 dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s 후',\n past: '%s 전',\n s: '몇 초',\n ss: '%d초',\n m: '1분',\n mm: '%d분',\n h: '한 시간',\n hh: '%d시간',\n d: '하루',\n dd: '%d일',\n M: '한 달',\n MM: '%d달',\n y: '일 년',\n yy: '%d년',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(일|월|주)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '일';\n case 'M':\n return number + '월';\n case 'w':\n case 'W':\n return number + '주';\n default:\n return number;\n }\n },\n meridiemParse: /오전|오후/,\n isPM: function (token) {\n return token === '오후';\n },\n meridiem: function (hour, minute, isUpper) {\n return hour < 12 ? '오전' : '오후';\n },\n });\n\n return ko;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kurdish [ku]\n//! author : Shahram Mebashar : https://github.com/ShahramMebashar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '١',\n 2: '٢',\n 3: '٣',\n 4: '٤',\n 5: '٥',\n 6: '٦',\n 7: '٧',\n 8: '٨',\n 9: '٩',\n 0: '٠',\n },\n numberMap = {\n '١': '1',\n '٢': '2',\n '٣': '3',\n '٤': '4',\n '٥': '5',\n '٦': '6',\n '٧': '7',\n '٨': '8',\n '٩': '9',\n '٠': '0',\n },\n months = [\n 'کانونی دووەم',\n 'شوبات',\n 'ئازار',\n 'نیسان',\n 'ئایار',\n 'حوزەیران',\n 'تەمموز',\n 'ئاب',\n 'ئەیلوول',\n 'تشرینی یەكەم',\n 'تشرینی دووەم',\n 'كانونی یەکەم',\n ];\n\n var ku = moment.defineLocale('ku', {\n months: months,\n monthsShort: months,\n weekdays:\n 'یه‌كشه‌ممه‌_دووشه‌ممه‌_سێشه‌ممه‌_چوارشه‌ممه‌_پێنجشه‌ممه‌_هه‌ینی_شه‌ممه‌'.split(\n '_'\n ),\n weekdaysShort:\n 'یه‌كشه‌م_دووشه‌م_سێشه‌م_چوارشه‌م_پێنجشه‌م_هه‌ینی_شه‌ممه‌'.split('_'),\n weekdaysMin: 'ی_د_س_چ_پ_ه_ش'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n meridiemParse: /ئێواره‌|به‌یانی/,\n isPM: function (input) {\n return /ئێواره‌/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'به‌یانی';\n } else {\n return 'ئێواره‌';\n }\n },\n calendar: {\n sameDay: '[ئه‌مرۆ كاتژمێر] LT',\n nextDay: '[به‌یانی كاتژمێر] LT',\n nextWeek: 'dddd [كاتژمێر] LT',\n lastDay: '[دوێنێ كاتژمێر] LT',\n lastWeek: 'dddd [كاتژمێر] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'له‌ %s',\n past: '%s',\n s: 'چه‌ند چركه‌یه‌ك',\n ss: 'چركه‌ %d',\n m: 'یه‌ك خوله‌ك',\n mm: '%d خوله‌ك',\n h: 'یه‌ك كاتژمێر',\n hh: '%d كاتژمێر',\n d: 'یه‌ك ڕۆژ',\n dd: '%d ڕۆژ',\n M: 'یه‌ك مانگ',\n MM: '%d مانگ',\n y: 'یه‌ك ساڵ',\n yy: '%d ساڵ',\n },\n preparse: function (string) {\n return string\n .replace(/[١٢٣٤٥٦٧٨٩٠]/g, function (match) {\n return numberMap[match];\n })\n .replace(/،/g, ',');\n },\n postformat: function (string) {\n return string\n .replace(/\\d/g, function (match) {\n return symbolMap[match];\n })\n .replace(/,/g, '،');\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return ku;\n\n})));\n","//! moment.js locale configuration\n//! locale : Kyrgyz [ky]\n//! author : Chyngyz Arystan uulu : https://github.com/chyngyz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-чү',\n 1: '-чи',\n 2: '-чи',\n 3: '-чү',\n 4: '-чү',\n 5: '-чи',\n 6: '-чы',\n 7: '-чи',\n 8: '-чи',\n 9: '-чу',\n 10: '-чу',\n 20: '-чы',\n 30: '-чу',\n 40: '-чы',\n 50: '-чү',\n 60: '-чы',\n 70: '-чи',\n 80: '-чи',\n 90: '-чу',\n 100: '-чү',\n };\n\n var ky = moment.defineLocale('ky', {\n months: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n monthsShort: 'янв_фев_март_апр_май_июнь_июль_авг_сен_окт_ноя_дек'.split(\n '_'\n ),\n weekdays: 'Жекшемби_Дүйшөмбү_Шейшемби_Шаршемби_Бейшемби_Жума_Ишемби'.split(\n '_'\n ),\n weekdaysShort: 'Жек_Дүй_Шей_Шар_Бей_Жум_Ише'.split('_'),\n weekdaysMin: 'Жк_Дй_Шй_Шр_Бй_Жм_Иш'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Бүгүн саат] LT',\n nextDay: '[Эртең саат] LT',\n nextWeek: 'dddd [саат] LT',\n lastDay: '[Кечээ саат] LT',\n lastWeek: '[Өткөн аптанын] dddd [күнү] [саат] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ичинде',\n past: '%s мурун',\n s: 'бирнече секунд',\n ss: '%d секунд',\n m: 'бир мүнөт',\n mm: '%d мүнөт',\n h: 'бир саат',\n hh: '%d саат',\n d: 'бир күн',\n dd: '%d күн',\n M: 'бир ай',\n MM: '%d ай',\n y: 'бир жыл',\n yy: '%d жыл',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(чи|чы|чү|чу)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ky;\n\n})));\n","//! moment.js locale configuration\n//! locale : Luxembourgish [lb]\n//! author : mweimerskirch : https://github.com/mweimerskirch\n//! author : David Raison : https://github.com/kwisatz\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eng Minutt', 'enger Minutt'],\n h: ['eng Stonn', 'enger Stonn'],\n d: ['een Dag', 'engem Dag'],\n M: ['ee Mount', 'engem Mount'],\n y: ['ee Joer', 'engem Joer'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n function processFutureTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'a ' + string;\n }\n return 'an ' + string;\n }\n function processPastTime(string) {\n var number = string.substr(0, string.indexOf(' '));\n if (eifelerRegelAppliesToNumber(number)) {\n return 'viru ' + string;\n }\n return 'virun ' + string;\n }\n /**\n * Returns true if the word before the given number loses the '-n' ending.\n * e.g. 'an 10 Deeg' but 'a 5 Deeg'\n *\n * @param number {integer}\n * @returns {boolean}\n */\n function eifelerRegelAppliesToNumber(number) {\n number = parseInt(number, 10);\n if (isNaN(number)) {\n return false;\n }\n if (number < 0) {\n // Negative Number --> always true\n return true;\n } else if (number < 10) {\n // Only 1 digit\n if (4 <= number && number <= 7) {\n return true;\n }\n return false;\n } else if (number < 100) {\n // 2 digits\n var lastDigit = number % 10,\n firstDigit = number / 10;\n if (lastDigit === 0) {\n return eifelerRegelAppliesToNumber(firstDigit);\n }\n return eifelerRegelAppliesToNumber(lastDigit);\n } else if (number < 10000) {\n // 3 or 4 digits --> recursively check first digit\n while (number >= 10) {\n number = number / 10;\n }\n return eifelerRegelAppliesToNumber(number);\n } else {\n // Anything larger than 4 digits: recursively check first n-3 digits\n number = number / 1000;\n return eifelerRegelAppliesToNumber(number);\n }\n }\n\n var lb = moment.defineLocale('lb', {\n months: 'Januar_Februar_Mäerz_Abrëll_Mee_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'Sonndeg_Méindeg_Dënschdeg_Mëttwoch_Donneschdeg_Freideg_Samschdeg'.split(\n '_'\n ),\n weekdaysShort: 'So._Mé._Dë._Më._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mé_Dë_Më_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm [Auer]',\n LTS: 'H:mm:ss [Auer]',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm [Auer]',\n LLLL: 'dddd, D. MMMM YYYY H:mm [Auer]',\n },\n calendar: {\n sameDay: '[Haut um] LT',\n sameElse: 'L',\n nextDay: '[Muer um] LT',\n nextWeek: 'dddd [um] LT',\n lastDay: '[Gëschter um] LT',\n lastWeek: function () {\n // Different date string for 'Dënschdeg' (Tuesday) and 'Donneschdeg' (Thursday) due to phonological rule\n switch (this.day()) {\n case 2:\n case 4:\n return '[Leschten] dddd [um] LT';\n default:\n return '[Leschte] dddd [um] LT';\n }\n },\n },\n relativeTime: {\n future: processFutureTime,\n past: processPastTime,\n s: 'e puer Sekonnen',\n ss: '%d Sekonnen',\n m: processRelativeTime,\n mm: '%d Minutten',\n h: processRelativeTime,\n hh: '%d Stonnen',\n d: processRelativeTime,\n dd: '%d Deeg',\n M: processRelativeTime,\n MM: '%d Méint',\n y: processRelativeTime,\n yy: '%d Joer',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lao [lo]\n//! author : Ryan Hart : https://github.com/ryanhart2\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var lo = moment.defineLocale('lo', {\n months: 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n monthsShort:\n 'ມັງກອນ_ກຸມພາ_ມີນາ_ເມສາ_ພຶດສະພາ_ມິຖຸນາ_ກໍລະກົດ_ສິງຫາ_ກັນຍາ_ຕຸລາ_ພະຈິກ_ທັນວາ'.split(\n '_'\n ),\n weekdays: 'ອາທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysShort: 'ທິດ_ຈັນ_ອັງຄານ_ພຸດ_ພະຫັດ_ສຸກ_ເສົາ'.split('_'),\n weekdaysMin: 'ທ_ຈ_ອຄ_ພ_ພຫ_ສກ_ສ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'ວັນdddd D MMMM YYYY HH:mm',\n },\n meridiemParse: /ຕອນເຊົ້າ|ຕອນແລງ/,\n isPM: function (input) {\n return input === 'ຕອນແລງ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ຕອນເຊົ້າ';\n } else {\n return 'ຕອນແລງ';\n }\n },\n calendar: {\n sameDay: '[ມື້ນີ້ເວລາ] LT',\n nextDay: '[ມື້ອື່ນເວລາ] LT',\n nextWeek: '[ວັນ]dddd[ໜ້າເວລາ] LT',\n lastDay: '[ມື້ວານນີ້ເວລາ] LT',\n lastWeek: '[ວັນ]dddd[ແລ້ວນີ້ເວລາ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ອີກ %s',\n past: '%sຜ່ານມາ',\n s: 'ບໍ່ເທົ່າໃດວິນາທີ',\n ss: '%d ວິນາທີ',\n m: '1 ນາທີ',\n mm: '%d ນາທີ',\n h: '1 ຊົ່ວໂມງ',\n hh: '%d ຊົ່ວໂມງ',\n d: '1 ມື້',\n dd: '%d ມື້',\n M: '1 ເດືອນ',\n MM: '%d ເດືອນ',\n y: '1 ປີ',\n yy: '%d ປີ',\n },\n dayOfMonthOrdinalParse: /(ທີ່)\\d{1,2}/,\n ordinal: function (number) {\n return 'ທີ່' + number;\n },\n });\n\n return lo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Lithuanian [lt]\n//! author : Mindaugas Mozūras : https://github.com/mmozuras\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundė_sekundžių_sekundes',\n m: 'minutė_minutės_minutę',\n mm: 'minutės_minučių_minutes',\n h: 'valanda_valandos_valandą',\n hh: 'valandos_valandų_valandas',\n d: 'diena_dienos_dieną',\n dd: 'dienos_dienų_dienas',\n M: 'mėnuo_mėnesio_mėnesį',\n MM: 'mėnesiai_mėnesių_mėnesius',\n y: 'metai_metų_metus',\n yy: 'metai_metų_metus',\n };\n function translateSeconds(number, withoutSuffix, key, isFuture) {\n if (withoutSuffix) {\n return 'kelios sekundės';\n } else {\n return isFuture ? 'kelių sekundžių' : 'kelias sekundes';\n }\n }\n function translateSingular(number, withoutSuffix, key, isFuture) {\n return withoutSuffix\n ? forms(key)[0]\n : isFuture\n ? forms(key)[1]\n : forms(key)[2];\n }\n function special(number) {\n return number % 10 === 0 || (number > 10 && number < 20);\n }\n function forms(key) {\n return units[key].split('_');\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n if (number === 1) {\n return (\n result + translateSingular(number, withoutSuffix, key[0], isFuture)\n );\n } else if (withoutSuffix) {\n return result + (special(number) ? forms(key)[1] : forms(key)[0]);\n } else {\n if (isFuture) {\n return result + forms(key)[1];\n } else {\n return result + (special(number) ? forms(key)[1] : forms(key)[2]);\n }\n }\n }\n var lt = moment.defineLocale('lt', {\n months: {\n format: 'sausio_vasario_kovo_balandžio_gegužės_birželio_liepos_rugpjūčio_rugsėjo_spalio_lapkričio_gruodžio'.split(\n '_'\n ),\n standalone:\n 'sausis_vasaris_kovas_balandis_gegužė_birželis_liepa_rugpjūtis_rugsėjis_spalis_lapkritis_gruodis'.split(\n '_'\n ),\n isFormat: /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?|MMMM?(\\[[^\\[\\]]*\\]|\\s)+D[oD]?/,\n },\n monthsShort: 'sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd'.split('_'),\n weekdays: {\n format: 'sekmadienį_pirmadienį_antradienį_trečiadienį_ketvirtadienį_penktadienį_šeštadienį'.split(\n '_'\n ),\n standalone:\n 'sekmadienis_pirmadienis_antradienis_trečiadienis_ketvirtadienis_penktadienis_šeštadienis'.split(\n '_'\n ),\n isFormat: /dddd HH:mm/,\n },\n weekdaysShort: 'Sek_Pir_Ant_Tre_Ket_Pen_Šeš'.split('_'),\n weekdaysMin: 'S_P_A_T_K_Pn_Š'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY [m.] MMMM D [d.]',\n LLL: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n LLLL: 'YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]',\n l: 'YYYY-MM-DD',\n ll: 'YYYY [m.] MMMM D [d.]',\n lll: 'YYYY [m.] MMMM D [d.], HH:mm [val.]',\n llll: 'YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]',\n },\n calendar: {\n sameDay: '[Šiandien] LT',\n nextDay: '[Rytoj] LT',\n nextWeek: 'dddd LT',\n lastDay: '[Vakar] LT',\n lastWeek: '[Praėjusį] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'po %s',\n past: 'prieš %s',\n s: translateSeconds,\n ss: translate,\n m: translateSingular,\n mm: translate,\n h: translateSingular,\n hh: translate,\n d: translateSingular,\n dd: translate,\n M: translateSingular,\n MM: translate,\n y: translateSingular,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-oji/,\n ordinal: function (number) {\n return number + '-oji';\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Latvian [lv]\n//! author : Kristaps Karlsons : https://github.com/skakri\n//! author : Jānis Elmeris : https://github.com/JanisE\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var units = {\n ss: 'sekundes_sekundēm_sekunde_sekundes'.split('_'),\n m: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n mm: 'minūtes_minūtēm_minūte_minūtes'.split('_'),\n h: 'stundas_stundām_stunda_stundas'.split('_'),\n hh: 'stundas_stundām_stunda_stundas'.split('_'),\n d: 'dienas_dienām_diena_dienas'.split('_'),\n dd: 'dienas_dienām_diena_dienas'.split('_'),\n M: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n MM: 'mēneša_mēnešiem_mēnesis_mēneši'.split('_'),\n y: 'gada_gadiem_gads_gadi'.split('_'),\n yy: 'gada_gadiem_gads_gadi'.split('_'),\n };\n /**\n * @param withoutSuffix boolean true = a length of time; false = before/after a period of time.\n */\n function format(forms, number, withoutSuffix) {\n if (withoutSuffix) {\n // E.g. \"21 minūte\", \"3 minūtes\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[2] : forms[3];\n } else {\n // E.g. \"21 minūtes\" as in \"pēc 21 minūtes\".\n // E.g. \"3 minūtēm\" as in \"pēc 3 minūtēm\".\n return number % 10 === 1 && number % 100 !== 11 ? forms[0] : forms[1];\n }\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n return number + ' ' + format(units[key], number, withoutSuffix);\n }\n function relativeTimeWithSingular(number, withoutSuffix, key) {\n return format(units[key], number, withoutSuffix);\n }\n function relativeSeconds(number, withoutSuffix) {\n return withoutSuffix ? 'dažas sekundes' : 'dažām sekundēm';\n }\n\n var lv = moment.defineLocale('lv', {\n months: 'janvāris_februāris_marts_aprīlis_maijs_jūnijs_jūlijs_augusts_septembris_oktobris_novembris_decembris'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_mai_jūn_jūl_aug_sep_okt_nov_dec'.split('_'),\n weekdays:\n 'svētdiena_pirmdiena_otrdiena_trešdiena_ceturtdiena_piektdiena_sestdiena'.split(\n '_'\n ),\n weekdaysShort: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysMin: 'Sv_P_O_T_C_Pk_S'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY.',\n LL: 'YYYY. [gada] D. MMMM',\n LLL: 'YYYY. [gada] D. MMMM, HH:mm',\n LLLL: 'YYYY. [gada] D. MMMM, dddd, HH:mm',\n },\n calendar: {\n sameDay: '[Šodien pulksten] LT',\n nextDay: '[Rīt pulksten] LT',\n nextWeek: 'dddd [pulksten] LT',\n lastDay: '[Vakar pulksten] LT',\n lastWeek: '[Pagājušā] dddd [pulksten] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'pēc %s',\n past: 'pirms %s',\n s: relativeSeconds,\n ss: relativeTimeWithPlural,\n m: relativeTimeWithSingular,\n mm: relativeTimeWithPlural,\n h: relativeTimeWithSingular,\n hh: relativeTimeWithPlural,\n d: relativeTimeWithSingular,\n dd: relativeTimeWithPlural,\n M: relativeTimeWithSingular,\n MM: relativeTimeWithPlural,\n y: relativeTimeWithSingular,\n yy: relativeTimeWithPlural,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return lv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Montenegrin [me]\n//! author : Miodrag Nikač : https://github.com/miodragnikac\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekund', 'sekunda', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n dd: ['dan', 'dana', 'dana'],\n MM: ['mjesec', 'mjeseca', 'mjeseci'],\n yy: ['godina', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n return number === 1\n ? wordKey[0]\n : number >= 2 && number <= 4\n ? wordKey[1]\n : wordKey[2];\n },\n translate: function (number, withoutSuffix, key) {\n var wordKey = translator.words[key];\n if (key.length === 1) {\n return withoutSuffix ? wordKey[0] : wordKey[1];\n } else {\n return (\n number +\n ' ' +\n translator.correctGrammaticalCase(number, wordKey)\n );\n }\n },\n };\n\n var me = moment.defineLocale('me', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedjelja_ponedjeljak_utorak_srijeda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sri._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sjutra u] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedjelju] [u] LT';\n case 3:\n return '[u] [srijedu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedjelje] [u] LT',\n '[prošlog] [ponedjeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srijede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'prije %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: 'dan',\n dd: translator.translate,\n M: 'mjesec',\n MM: translator.translate,\n y: 'godinu',\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return me;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maori [mi]\n//! author : John Corrigan : https://github.com/johnideal\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mi = moment.defineLocale('mi', {\n months: 'Kohi-tāte_Hui-tanguru_Poutū-te-rangi_Paenga-whāwhā_Haratua_Pipiri_Hōngoingoi_Here-turi-kōkā_Mahuru_Whiringa-ā-nuku_Whiringa-ā-rangi_Hakihea'.split(\n '_'\n ),\n monthsShort:\n 'Kohi_Hui_Pou_Pae_Hara_Pipi_Hōngoi_Here_Mahu_Whi-nu_Whi-ra_Haki'.split(\n '_'\n ),\n monthsRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,3}/i,\n monthsShortStrictRegex: /(?:['a-z\\u0101\\u014D\\u016B]+\\-?){1,2}/i,\n weekdays: 'Rātapu_Mane_Tūrei_Wenerei_Tāite_Paraire_Hātarei'.split('_'),\n weekdaysShort: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n weekdaysMin: 'Ta_Ma_Tū_We_Tāi_Pa_Hā'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [i] HH:mm',\n LLLL: 'dddd, D MMMM YYYY [i] HH:mm',\n },\n calendar: {\n sameDay: '[i teie mahana, i] LT',\n nextDay: '[apopo i] LT',\n nextWeek: 'dddd [i] LT',\n lastDay: '[inanahi i] LT',\n lastWeek: 'dddd [whakamutunga i] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'i roto i %s',\n past: '%s i mua',\n s: 'te hēkona ruarua',\n ss: '%d hēkona',\n m: 'he meneti',\n mm: '%d meneti',\n h: 'te haora',\n hh: '%d haora',\n d: 'he ra',\n dd: '%d ra',\n M: 'he marama',\n MM: '%d marama',\n y: 'he tau',\n yy: '%d tau',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Macedonian [mk]\n//! author : Borislav Mickov : https://github.com/B0k0\n//! author : Sashko Todorov : https://github.com/bkyceh\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mk = moment.defineLocale('mk', {\n months: 'јануари_февруари_март_април_мај_јуни_јули_август_септември_октомври_ноември_декември'.split(\n '_'\n ),\n monthsShort: 'јан_фев_мар_апр_мај_јун_јул_авг_сеп_окт_ное_дек'.split('_'),\n weekdays: 'недела_понеделник_вторник_среда_четврток_петок_сабота'.split(\n '_'\n ),\n weekdaysShort: 'нед_пон_вто_сре_чет_пет_саб'.split('_'),\n weekdaysMin: 'нe_пo_вт_ср_че_пе_сa'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[Денес во] LT',\n nextDay: '[Утре во] LT',\n nextWeek: '[Во] dddd [во] LT',\n lastDay: '[Вчера во] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 6:\n return '[Изминатата] dddd [во] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[Изминатиот] dddd [во] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пред %s',\n s: 'неколку секунди',\n ss: '%d секунди',\n m: 'една минута',\n mm: '%d минути',\n h: 'еден час',\n hh: '%d часа',\n d: 'еден ден',\n dd: '%d дена',\n M: 'еден месец',\n MM: '%d месеци',\n y: 'една година',\n yy: '%d години',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ев|ен|ти|ви|ри|ми)/,\n ordinal: function (number) {\n var lastDigit = number % 10,\n last2Digits = number % 100;\n if (number === 0) {\n return number + '-ев';\n } else if (last2Digits === 0) {\n return number + '-ен';\n } else if (last2Digits > 10 && last2Digits < 20) {\n return number + '-ти';\n } else if (lastDigit === 1) {\n return number + '-ви';\n } else if (lastDigit === 2) {\n return number + '-ри';\n } else if (lastDigit === 7 || lastDigit === 8) {\n return number + '-ми';\n } else {\n return number + '-ти';\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return mk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malayalam [ml]\n//! author : Floyd Pink : https://github.com/floydpink\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ml = moment.defineLocale('ml', {\n months: 'ജനുവരി_ഫെബ്രുവരി_മാർച്ച്_ഏപ്രിൽ_മേയ്_ജൂൺ_ജൂലൈ_ഓഗസ്റ്റ്_സെപ്റ്റംബർ_ഒക്ടോബർ_നവംബർ_ഡിസംബർ'.split(\n '_'\n ),\n monthsShort:\n 'ജനു._ഫെബ്രു._മാർ._ഏപ്രി._മേയ്_ജൂൺ_ജൂലൈ._ഓഗ._സെപ്റ്റ._ഒക്ടോ._നവം._ഡിസം.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'ഞായറാഴ്ച_തിങ്കളാഴ്ച_ചൊവ്വാഴ്ച_ബുധനാഴ്ച_വ്യാഴാഴ്ച_വെള്ളിയാഴ്ച_ശനിയാഴ്ച'.split(\n '_'\n ),\n weekdaysShort: 'ഞായർ_തിങ്കൾ_ചൊവ്വ_ബുധൻ_വ്യാഴം_വെള്ളി_ശനി'.split('_'),\n weekdaysMin: 'ഞാ_തി_ചൊ_ബു_വ്യാ_വെ_ശ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm -നു',\n LTS: 'A h:mm:ss -നു',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm -നു',\n LLLL: 'dddd, D MMMM YYYY, A h:mm -നു',\n },\n calendar: {\n sameDay: '[ഇന്ന്] LT',\n nextDay: '[നാളെ] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[ഇന്നലെ] LT',\n lastWeek: '[കഴിഞ്ഞ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s കഴിഞ്ഞ്',\n past: '%s മുൻപ്',\n s: 'അൽപ നിമിഷങ്ങൾ',\n ss: '%d സെക്കൻഡ്',\n m: 'ഒരു മിനിറ്റ്',\n mm: '%d മിനിറ്റ്',\n h: 'ഒരു മണിക്കൂർ',\n hh: '%d മണിക്കൂർ',\n d: 'ഒരു ദിവസം',\n dd: '%d ദിവസം',\n M: 'ഒരു മാസം',\n MM: '%d മാസം',\n y: 'ഒരു വർഷം',\n yy: '%d വർഷം',\n },\n meridiemParse: /രാത്രി|രാവിലെ|ഉച്ച കഴിഞ്ഞ്|വൈകുന്നേരം|രാത്രി/i,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n (meridiem === 'രാത്രി' && hour >= 4) ||\n meridiem === 'ഉച്ച കഴിഞ്ഞ്' ||\n meridiem === 'വൈകുന്നേരം'\n ) {\n return hour + 12;\n } else {\n return hour;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'രാത്രി';\n } else if (hour < 12) {\n return 'രാവിലെ';\n } else if (hour < 17) {\n return 'ഉച്ച കഴിഞ്ഞ്';\n } else if (hour < 20) {\n return 'വൈകുന്നേരം';\n } else {\n return 'രാത്രി';\n }\n },\n });\n\n return ml;\n\n})));\n","//! moment.js locale configuration\n//! locale : Mongolian [mn]\n//! author : Javkhlantugs Nyamdorj : https://github.com/javkhaanj7\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function translate(number, withoutSuffix, key, isFuture) {\n switch (key) {\n case 's':\n return withoutSuffix ? 'хэдхэн секунд' : 'хэдхэн секундын';\n case 'ss':\n return number + (withoutSuffix ? ' секунд' : ' секундын');\n case 'm':\n case 'mm':\n return number + (withoutSuffix ? ' минут' : ' минутын');\n case 'h':\n case 'hh':\n return number + (withoutSuffix ? ' цаг' : ' цагийн');\n case 'd':\n case 'dd':\n return number + (withoutSuffix ? ' өдөр' : ' өдрийн');\n case 'M':\n case 'MM':\n return number + (withoutSuffix ? ' сар' : ' сарын');\n case 'y':\n case 'yy':\n return number + (withoutSuffix ? ' жил' : ' жилийн');\n default:\n return number;\n }\n }\n\n var mn = moment.defineLocale('mn', {\n months: 'Нэгдүгээр сар_Хоёрдугаар сар_Гуравдугаар сар_Дөрөвдүгээр сар_Тавдугаар сар_Зургадугаар сар_Долдугаар сар_Наймдугаар сар_Есдүгээр сар_Аравдугаар сар_Арван нэгдүгээр сар_Арван хоёрдугаар сар'.split(\n '_'\n ),\n monthsShort:\n '1 сар_2 сар_3 сар_4 сар_5 сар_6 сар_7 сар_8 сар_9 сар_10 сар_11 сар_12 сар'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'Ням_Даваа_Мягмар_Лхагва_Пүрэв_Баасан_Бямба'.split('_'),\n weekdaysShort: 'Ням_Дав_Мяг_Лха_Пүр_Баа_Бям'.split('_'),\n weekdaysMin: 'Ня_Да_Мя_Лх_Пү_Ба_Бя'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY оны MMMMын D',\n LLL: 'YYYY оны MMMMын D HH:mm',\n LLLL: 'dddd, YYYY оны MMMMын D HH:mm',\n },\n meridiemParse: /ҮӨ|ҮХ/i,\n isPM: function (input) {\n return input === 'ҮХ';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ҮӨ';\n } else {\n return 'ҮХ';\n }\n },\n calendar: {\n sameDay: '[Өнөөдөр] LT',\n nextDay: '[Маргааш] LT',\n nextWeek: '[Ирэх] dddd LT',\n lastDay: '[Өчигдөр] LT',\n lastWeek: '[Өнгөрсөн] dddd LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s дараа',\n past: '%s өмнө',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2} өдөр/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + ' өдөр';\n default:\n return number;\n }\n },\n });\n\n return mn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Marathi [mr]\n//! author : Harshad Kale : https://github.com/kalehv\n//! author : Vivek Athalye : https://github.com/vnathalye\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n function relativeTimeMr(number, withoutSuffix, string, isFuture) {\n var output = '';\n if (withoutSuffix) {\n switch (string) {\n case 's':\n output = 'काही सेकंद';\n break;\n case 'ss':\n output = '%d सेकंद';\n break;\n case 'm':\n output = 'एक मिनिट';\n break;\n case 'mm':\n output = '%d मिनिटे';\n break;\n case 'h':\n output = 'एक तास';\n break;\n case 'hh':\n output = '%d तास';\n break;\n case 'd':\n output = 'एक दिवस';\n break;\n case 'dd':\n output = '%d दिवस';\n break;\n case 'M':\n output = 'एक महिना';\n break;\n case 'MM':\n output = '%d महिने';\n break;\n case 'y':\n output = 'एक वर्ष';\n break;\n case 'yy':\n output = '%d वर्षे';\n break;\n }\n } else {\n switch (string) {\n case 's':\n output = 'काही सेकंदां';\n break;\n case 'ss':\n output = '%d सेकंदां';\n break;\n case 'm':\n output = 'एका मिनिटा';\n break;\n case 'mm':\n output = '%d मिनिटां';\n break;\n case 'h':\n output = 'एका तासा';\n break;\n case 'hh':\n output = '%d तासां';\n break;\n case 'd':\n output = 'एका दिवसा';\n break;\n case 'dd':\n output = '%d दिवसां';\n break;\n case 'M':\n output = 'एका महिन्या';\n break;\n case 'MM':\n output = '%d महिन्यां';\n break;\n case 'y':\n output = 'एका वर्षा';\n break;\n case 'yy':\n output = '%d वर्षां';\n break;\n }\n }\n return output.replace(/%d/i, number);\n }\n\n var mr = moment.defineLocale('mr', {\n months: 'जानेवारी_फेब्रुवारी_मार्च_एप्रिल_मे_जून_जुलै_ऑगस्ट_सप्टेंबर_ऑक्टोबर_नोव्हेंबर_डिसेंबर'.split(\n '_'\n ),\n monthsShort:\n 'जाने._फेब्रु._मार्च._एप्रि._मे._जून._जुलै._ऑग._सप्टें._ऑक्टो._नोव्हें._डिसें.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'रविवार_सोमवार_मंगळवार_बुधवार_गुरूवार_शुक्रवार_शनिवार'.split('_'),\n weekdaysShort: 'रवि_सोम_मंगळ_बुध_गुरू_शुक्र_शनि'.split('_'),\n weekdaysMin: 'र_सो_मं_बु_गु_शु_श'.split('_'),\n longDateFormat: {\n LT: 'A h:mm वाजता',\n LTS: 'A h:mm:ss वाजता',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm वाजता',\n LLLL: 'dddd, D MMMM YYYY, A h:mm वाजता',\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[उद्या] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[काल] LT',\n lastWeek: '[मागील] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमध्ये',\n past: '%sपूर्वी',\n s: relativeTimeMr,\n ss: relativeTimeMr,\n m: relativeTimeMr,\n mm: relativeTimeMr,\n h: relativeTimeMr,\n hh: relativeTimeMr,\n d: relativeTimeMr,\n dd: relativeTimeMr,\n M: relativeTimeMr,\n MM: relativeTimeMr,\n y: relativeTimeMr,\n yy: relativeTimeMr,\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /पहाटे|सकाळी|दुपारी|सायंकाळी|रात्री/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'पहाटे' || meridiem === 'सकाळी') {\n return hour;\n } else if (\n meridiem === 'दुपारी' ||\n meridiem === 'सायंकाळी' ||\n meridiem === 'रात्री'\n ) {\n return hour >= 12 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour >= 0 && hour < 6) {\n return 'पहाटे';\n } else if (hour < 12) {\n return 'सकाळी';\n } else if (hour < 17) {\n return 'दुपारी';\n } else if (hour < 20) {\n return 'सायंकाळी';\n } else {\n return 'रात्री';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return mr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms-my]\n//! note : DEPRECATED, the correct one is [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var msMy = moment.defineLocale('ms-my', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return msMy;\n\n})));\n","//! moment.js locale configuration\n//! locale : Malay [ms]\n//! author : Weldan Jamili : https://github.com/weldan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ms = moment.defineLocale('ms', {\n months: 'Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis'.split('_'),\n weekdays: 'Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu'.split('_'),\n weekdaysShort: 'Ahd_Isn_Sel_Rab_Kha_Jum_Sab'.split('_'),\n weekdaysMin: 'Ah_Is_Sl_Rb_Km_Jm_Sb'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [pukul] HH.mm',\n LLLL: 'dddd, D MMMM YYYY [pukul] HH.mm',\n },\n meridiemParse: /pagi|tengahari|petang|malam/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'pagi') {\n return hour;\n } else if (meridiem === 'tengahari') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'petang' || meridiem === 'malam') {\n return hour + 12;\n }\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'pagi';\n } else if (hours < 15) {\n return 'tengahari';\n } else if (hours < 19) {\n return 'petang';\n } else {\n return 'malam';\n }\n },\n calendar: {\n sameDay: '[Hari ini pukul] LT',\n nextDay: '[Esok pukul] LT',\n nextWeek: 'dddd [pukul] LT',\n lastDay: '[Kelmarin pukul] LT',\n lastWeek: 'dddd [lepas pukul] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dalam %s',\n past: '%s yang lepas',\n s: 'beberapa saat',\n ss: '%d saat',\n m: 'seminit',\n mm: '%d minit',\n h: 'sejam',\n hh: '%d jam',\n d: 'sehari',\n dd: '%d hari',\n M: 'sebulan',\n MM: '%d bulan',\n y: 'setahun',\n yy: '%d tahun',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ms;\n\n})));\n","//! moment.js locale configuration\n//! locale : Maltese (Malta) [mt]\n//! author : Alessandro Maruccia : https://github.com/alesma\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var mt = moment.defineLocale('mt', {\n months: 'Jannar_Frar_Marzu_April_Mejju_Ġunju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Diċembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fra_Mar_Apr_Mej_Ġun_Lul_Aww_Set_Ott_Nov_Diċ'.split('_'),\n weekdays:\n 'Il-Ħadd_It-Tnejn_It-Tlieta_L-Erbgħa_Il-Ħamis_Il-Ġimgħa_Is-Sibt'.split(\n '_'\n ),\n weekdaysShort: 'Ħad_Tne_Tli_Erb_Ħam_Ġim_Sib'.split('_'),\n weekdaysMin: 'Ħa_Tn_Tl_Er_Ħa_Ġi_Si'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Illum fil-]LT',\n nextDay: '[Għada fil-]LT',\n nextWeek: 'dddd [fil-]LT',\n lastDay: '[Il-bieraħ fil-]LT',\n lastWeek: 'dddd [li għadda] [fil-]LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'f’ %s',\n past: '%s ilu',\n s: 'ftit sekondi',\n ss: '%d sekondi',\n m: 'minuta',\n mm: '%d minuti',\n h: 'siegħa',\n hh: '%d siegħat',\n d: 'ġurnata',\n dd: '%d ġranet',\n M: 'xahar',\n MM: '%d xhur',\n y: 'sena',\n yy: '%d sni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return mt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Burmese [my]\n//! author : Squar team, mysquar.com\n//! author : David Rossellat : https://github.com/gholadr\n//! author : Tin Aung Lin : https://github.com/thanyawzinmin\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '၁',\n 2: '၂',\n 3: '၃',\n 4: '၄',\n 5: '၅',\n 6: '၆',\n 7: '၇',\n 8: '၈',\n 9: '၉',\n 0: '၀',\n },\n numberMap = {\n '၁': '1',\n '၂': '2',\n '၃': '3',\n '၄': '4',\n '၅': '5',\n '၆': '6',\n '၇': '7',\n '၈': '8',\n '၉': '9',\n '၀': '0',\n };\n\n var my = moment.defineLocale('my', {\n months: 'ဇန်နဝါရီ_ဖေဖော်ဝါရီ_မတ်_ဧပြီ_မေ_ဇွန်_ဇူလိုင်_သြဂုတ်_စက်တင်ဘာ_အောက်တိုဘာ_နိုဝင်ဘာ_ဒီဇင်ဘာ'.split(\n '_'\n ),\n monthsShort: 'ဇန်_ဖေ_မတ်_ပြီ_မေ_ဇွန်_လိုင်_သြ_စက်_အောက်_နို_ဒီ'.split('_'),\n weekdays: 'တနင်္ဂနွေ_တနင်္လာ_အင်္ဂါ_ဗုဒ္ဓဟူး_ကြာသပတေး_သောကြာ_စနေ'.split(\n '_'\n ),\n weekdaysShort: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n weekdaysMin: 'နွေ_လာ_ဂါ_ဟူး_ကြာ_သော_နေ'.split('_'),\n\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ယနေ.] LT [မှာ]',\n nextDay: '[မနက်ဖြန်] LT [မှာ]',\n nextWeek: 'dddd LT [မှာ]',\n lastDay: '[မနေ.က] LT [မှာ]',\n lastWeek: '[ပြီးခဲ့သော] dddd LT [မှာ]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'လာမည့် %s မှာ',\n past: 'လွန်ခဲ့သော %s က',\n s: 'စက္ကန်.အနည်းငယ်',\n ss: '%d စက္ကန့်',\n m: 'တစ်မိနစ်',\n mm: '%d မိနစ်',\n h: 'တစ်နာရီ',\n hh: '%d နာရီ',\n d: 'တစ်ရက်',\n dd: '%d ရက်',\n M: 'တစ်လ',\n MM: '%d လ',\n y: 'တစ်နှစ်',\n yy: '%d နှစ်',\n },\n preparse: function (string) {\n return string.replace(/[၁၂၃၄၅၆၇၈၉၀]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return my;\n\n})));\n","//! moment.js locale configuration\n//! locale : Norwegian Bokmål [nb]\n//! authors : Espen Hovlandsdal : https://github.com/rexxars\n//! Sigurd Gartmann : https://github.com/sigurdga\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nb = moment.defineLocale('nb', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),\n weekdaysShort: 'sø._ma._ti._on._to._fr._lø.'.split('_'),\n weekdaysMin: 'sø_ma_ti_on_to_fr_lø'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[i dag kl.] LT',\n nextDay: '[i morgen kl.] LT',\n nextWeek: 'dddd [kl.] LT',\n lastDay: '[i går kl.] LT',\n lastWeek: '[forrige] dddd [kl.] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s siden',\n s: 'noen sekunder',\n ss: '%d sekunder',\n m: 'ett minutt',\n mm: '%d minutter',\n h: 'en time',\n hh: '%d timer',\n d: 'en dag',\n dd: '%d dager',\n w: 'en uke',\n ww: '%d uker',\n M: 'en måned',\n MM: '%d måneder',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nb;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nepalese [ne]\n//! author : suvash : https://github.com/suvash\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '१',\n 2: '२',\n 3: '३',\n 4: '४',\n 5: '५',\n 6: '६',\n 7: '७',\n 8: '८',\n 9: '९',\n 0: '०',\n },\n numberMap = {\n '१': '1',\n '२': '2',\n '३': '3',\n '४': '4',\n '५': '5',\n '६': '6',\n '७': '7',\n '८': '8',\n '९': '9',\n '०': '0',\n };\n\n var ne = moment.defineLocale('ne', {\n months: 'जनवरी_फेब्रुवरी_मार्च_अप्रिल_मई_जुन_जुलाई_अगष्ट_सेप्टेम्बर_अक्टोबर_नोभेम्बर_डिसेम्बर'.split(\n '_'\n ),\n monthsShort:\n 'जन._फेब्रु._मार्च_अप्रि._मई_जुन_जुलाई._अग._सेप्ट._अक्टो._नोभे._डिसे.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'आइतबार_सोमबार_मङ्गलबार_बुधबार_बिहिबार_शुक्रबार_शनिबार'.split(\n '_'\n ),\n weekdaysShort: 'आइत._सोम._मङ्गल._बुध._बिहि._शुक्र._शनि.'.split('_'),\n weekdaysMin: 'आ._सो._मं._बु._बि._शु._श.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'Aको h:mm बजे',\n LTS: 'Aको h:mm:ss बजे',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, Aको h:mm बजे',\n LLLL: 'dddd, D MMMM YYYY, Aको h:mm बजे',\n },\n preparse: function (string) {\n return string.replace(/[१२३४५६७८९०]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n meridiemParse: /राति|बिहान|दिउँसो|साँझ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'राति') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'बिहान') {\n return hour;\n } else if (meridiem === 'दिउँसो') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'साँझ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 3) {\n return 'राति';\n } else if (hour < 12) {\n return 'बिहान';\n } else if (hour < 16) {\n return 'दिउँसो';\n } else if (hour < 20) {\n return 'साँझ';\n } else {\n return 'राति';\n }\n },\n calendar: {\n sameDay: '[आज] LT',\n nextDay: '[भोलि] LT',\n nextWeek: '[आउँदो] dddd[,] LT',\n lastDay: '[हिजो] LT',\n lastWeek: '[गएको] dddd[,] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sमा',\n past: '%s अगाडि',\n s: 'केही क्षण',\n ss: '%d सेकेण्ड',\n m: 'एक मिनेट',\n mm: '%d मिनेट',\n h: 'एक घण्टा',\n hh: '%d घण्टा',\n d: 'एक दिन',\n dd: '%d दिन',\n M: 'एक महिना',\n MM: '%d महिना',\n y: 'एक बर्ष',\n yy: '%d बर्ष',\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ne;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch (Belgium) [nl-be]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex =\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nlBe = moment.defineLocale('nl-be', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex:\n /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays:\n 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nlBe;\n\n})));\n","//! moment.js locale configuration\n//! locale : Dutch [nl]\n//! author : Joris Röling : https://github.com/jorisroling\n//! author : Jacob Middag : https://github.com/middagj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsShortWithDots =\n 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),\n monthsShortWithoutDots =\n 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n monthsParse = [\n /^jan/i,\n /^feb/i,\n /^maart|mrt.?$/i,\n /^apr/i,\n /^mei$/i,\n /^jun[i.]?$/i,\n /^jul[i.]?$/i,\n /^aug/i,\n /^sep/i,\n /^okt/i,\n /^nov/i,\n /^dec/i,\n ],\n monthsRegex =\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\\.?|feb\\.?|mrt\\.?|apr\\.?|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i;\n\n var nl = moment.defineLocale('nl', {\n months: 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: function (m, format) {\n if (!m) {\n return monthsShortWithDots;\n } else if (/-MMM-/.test(format)) {\n return monthsShortWithoutDots[m.month()];\n } else {\n return monthsShortWithDots[m.month()];\n }\n },\n\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex:\n /^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,\n monthsShortStrictRegex:\n /^(jan\\.?|feb\\.?|mrt\\.?|apr\\.?|mei|ju[nl]\\.?|aug\\.?|sep\\.?|okt\\.?|nov\\.?|dec\\.?)/i,\n\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n weekdays:\n 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),\n weekdaysShort: 'zo._ma._di._wo._do._vr._za.'.split('_'),\n weekdaysMin: 'zo_ma_di_wo_do_vr_za'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD-MM-YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[vandaag om] LT',\n nextDay: '[morgen om] LT',\n nextWeek: 'dddd [om] LT',\n lastDay: '[gisteren om] LT',\n lastWeek: '[afgelopen] dddd [om] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'over %s',\n past: '%s geleden',\n s: 'een paar seconden',\n ss: '%d seconden',\n m: 'één minuut',\n mm: '%d minuten',\n h: 'één uur',\n hh: '%d uur',\n d: 'één dag',\n dd: '%d dagen',\n w: 'één week',\n ww: '%d weken',\n M: 'één maand',\n MM: '%d maanden',\n y: 'één jaar',\n yy: '%d jaar',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(ste|de)/,\n ordinal: function (number) {\n return (\n number +\n (number === 1 || number === 8 || number >= 20 ? 'ste' : 'de')\n );\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Nynorsk [nn]\n//! authors : https://github.com/mechuwind\n//! Stephen Ramthun : https://github.com/stephenramthun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var nn = moment.defineLocale('nn', {\n months: 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mars_apr._mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),\n monthsParseExact: true,\n weekdays: 'sundag_måndag_tysdag_onsdag_torsdag_fredag_laurdag'.split('_'),\n weekdaysShort: 'su._må._ty._on._to._fr._lau.'.split('_'),\n weekdaysMin: 'su_må_ty_on_to_fr_la'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY [kl.] H:mm',\n LLLL: 'dddd D. MMMM YYYY [kl.] HH:mm',\n },\n calendar: {\n sameDay: '[I dag klokka] LT',\n nextDay: '[I morgon klokka] LT',\n nextWeek: 'dddd [klokka] LT',\n lastDay: '[I går klokka] LT',\n lastWeek: '[Føregåande] dddd [klokka] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: '%s sidan',\n s: 'nokre sekund',\n ss: '%d sekund',\n m: 'eit minutt',\n mm: '%d minutt',\n h: 'ein time',\n hh: '%d timar',\n d: 'ein dag',\n dd: '%d dagar',\n w: 'ei veke',\n ww: '%d veker',\n M: 'ein månad',\n MM: '%d månader',\n y: 'eit år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return nn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Occitan, lengadocian dialecte [oc-lnc]\n//! author : Quentin PAGÈS : https://github.com/Quenty31\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ocLnc = moment.defineLocale('oc-lnc', {\n months: {\n standalone:\n 'genièr_febrièr_març_abril_mai_junh_julhet_agost_setembre_octòbre_novembre_decembre'.split(\n '_'\n ),\n format: \"de genièr_de febrièr_de març_d'abril_de mai_de junh_de julhet_d'agost_de setembre_d'octòbre_de novembre_de decembre\".split(\n '_'\n ),\n isFormat: /D[oD]?(\\s)+MMMM/,\n },\n monthsShort:\n 'gen._febr._març_abr._mai_junh_julh._ago._set._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'dimenge_diluns_dimars_dimècres_dijòus_divendres_dissabte'.split(\n '_'\n ),\n weekdaysShort: 'dg._dl._dm._dc._dj._dv._ds.'.split('_'),\n weekdaysMin: 'dg_dl_dm_dc_dj_dv_ds'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [de] YYYY',\n ll: 'D MMM YYYY',\n LLL: 'D MMMM [de] YYYY [a] H:mm',\n lll: 'D MMM YYYY, H:mm',\n LLLL: 'dddd D MMMM [de] YYYY [a] H:mm',\n llll: 'ddd D MMM YYYY, H:mm',\n },\n calendar: {\n sameDay: '[uèi a] LT',\n nextDay: '[deman a] LT',\n nextWeek: 'dddd [a] LT',\n lastDay: '[ièr a] LT',\n lastWeek: 'dddd [passat a] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: \"d'aquí %s\",\n past: 'fa %s',\n s: 'unas segondas',\n ss: '%d segondas',\n m: 'una minuta',\n mm: '%d minutas',\n h: 'una ora',\n hh: '%d oras',\n d: 'un jorn',\n dd: '%d jorns',\n M: 'un mes',\n MM: '%d meses',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(r|n|t|è|a)/,\n ordinal: function (number, period) {\n var output =\n number === 1\n ? 'r'\n : number === 2\n ? 'n'\n : number === 3\n ? 'r'\n : number === 4\n ? 't'\n : 'è';\n if (period === 'w' || period === 'W') {\n output = 'a';\n }\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4,\n },\n });\n\n return ocLnc;\n\n})));\n","//! moment.js locale configuration\n//! locale : Punjabi (India) [pa-in]\n//! author : Harpreet Singh : https://github.com/harpreetkhalsagtbit\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '੧',\n 2: '੨',\n 3: '੩',\n 4: '੪',\n 5: '੫',\n 6: '੬',\n 7: '੭',\n 8: '੮',\n 9: '੯',\n 0: '੦',\n },\n numberMap = {\n '੧': '1',\n '੨': '2',\n '੩': '3',\n '੪': '4',\n '੫': '5',\n '੬': '6',\n '੭': '7',\n '੮': '8',\n '੯': '9',\n '੦': '0',\n };\n\n var paIn = moment.defineLocale('pa-in', {\n // There are months name as per Nanakshahi Calendar but they are not used as rigidly in modern Punjabi.\n months: 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n monthsShort:\n 'ਜਨਵਰੀ_ਫ਼ਰਵਰੀ_ਮਾਰਚ_ਅਪ੍ਰੈਲ_ਮਈ_ਜੂਨ_ਜੁਲਾਈ_ਅਗਸਤ_ਸਤੰਬਰ_ਅਕਤੂਬਰ_ਨਵੰਬਰ_ਦਸੰਬਰ'.split(\n '_'\n ),\n weekdays: 'ਐਤਵਾਰ_ਸੋਮਵਾਰ_ਮੰਗਲਵਾਰ_ਬੁਧਵਾਰ_ਵੀਰਵਾਰ_ਸ਼ੁੱਕਰਵਾਰ_ਸ਼ਨੀਚਰਵਾਰ'.split(\n '_'\n ),\n weekdaysShort: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n weekdaysMin: 'ਐਤ_ਸੋਮ_ਮੰਗਲ_ਬੁਧ_ਵੀਰ_ਸ਼ੁਕਰ_ਸ਼ਨੀ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm ਵਜੇ',\n LTS: 'A h:mm:ss ਵਜੇ',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm ਵਜੇ',\n LLLL: 'dddd, D MMMM YYYY, A h:mm ਵਜੇ',\n },\n calendar: {\n sameDay: '[ਅਜ] LT',\n nextDay: '[ਕਲ] LT',\n nextWeek: '[ਅਗਲਾ] dddd, LT',\n lastDay: '[ਕਲ] LT',\n lastWeek: '[ਪਿਛਲੇ] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s ਵਿੱਚ',\n past: '%s ਪਿਛਲੇ',\n s: 'ਕੁਝ ਸਕਿੰਟ',\n ss: '%d ਸਕਿੰਟ',\n m: 'ਇਕ ਮਿੰਟ',\n mm: '%d ਮਿੰਟ',\n h: 'ਇੱਕ ਘੰਟਾ',\n hh: '%d ਘੰਟੇ',\n d: 'ਇੱਕ ਦਿਨ',\n dd: '%d ਦਿਨ',\n M: 'ਇੱਕ ਮਹੀਨਾ',\n MM: '%d ਮਹੀਨੇ',\n y: 'ਇੱਕ ਸਾਲ',\n yy: '%d ਸਾਲ',\n },\n preparse: function (string) {\n return string.replace(/[੧੨੩੪੫੬੭੮੯੦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // Punjabi notation for meridiems are quite fuzzy in practice. While there exists\n // a rigid notion of a 'Pahar' it is not used as rigidly in modern Punjabi.\n meridiemParse: /ਰਾਤ|ਸਵੇਰ|ਦੁਪਹਿਰ|ਸ਼ਾਮ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ਰਾਤ') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ਸਵੇਰ') {\n return hour;\n } else if (meridiem === 'ਦੁਪਹਿਰ') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'ਸ਼ਾਮ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ਰਾਤ';\n } else if (hour < 10) {\n return 'ਸਵੇਰ';\n } else if (hour < 17) {\n return 'ਦੁਪਹਿਰ';\n } else if (hour < 20) {\n return 'ਸ਼ਾਮ';\n } else {\n return 'ਰਾਤ';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return paIn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Polish [pl]\n//! author : Rafal Hirsz : https://github.com/evoL\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsNominative =\n 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split(\n '_'\n ),\n monthsSubjective =\n 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split(\n '_'\n ),\n monthsParse = [\n /^sty/i,\n /^lut/i,\n /^mar/i,\n /^kwi/i,\n /^maj/i,\n /^cze/i,\n /^lip/i,\n /^sie/i,\n /^wrz/i,\n /^paź/i,\n /^lis/i,\n /^gru/i,\n ];\n function plural(n) {\n return n % 10 < 5 && n % 10 > 1 && ~~(n / 10) % 10 !== 1;\n }\n function translate(number, withoutSuffix, key) {\n var result = number + ' ';\n switch (key) {\n case 'ss':\n return result + (plural(number) ? 'sekundy' : 'sekund');\n case 'm':\n return withoutSuffix ? 'minuta' : 'minutę';\n case 'mm':\n return result + (plural(number) ? 'minuty' : 'minut');\n case 'h':\n return withoutSuffix ? 'godzina' : 'godzinę';\n case 'hh':\n return result + (plural(number) ? 'godziny' : 'godzin');\n case 'ww':\n return result + (plural(number) ? 'tygodnie' : 'tygodni');\n case 'MM':\n return result + (plural(number) ? 'miesiące' : 'miesięcy');\n case 'yy':\n return result + (plural(number) ? 'lata' : 'lat');\n }\n }\n\n var pl = moment.defineLocale('pl', {\n months: function (momentToFormat, format) {\n if (!momentToFormat) {\n return monthsNominative;\n } else if (/D MMMM/.test(format)) {\n return monthsSubjective[momentToFormat.month()];\n } else {\n return monthsNominative[momentToFormat.month()];\n }\n },\n monthsShort: 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays:\n 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),\n weekdaysShort: 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),\n weekdaysMin: 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Dziś o] LT',\n nextDay: '[Jutro o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W niedzielę o] LT';\n\n case 2:\n return '[We wtorek o] LT';\n\n case 3:\n return '[W środę o] LT';\n\n case 6:\n return '[W sobotę o] LT';\n\n default:\n return '[W] dddd [o] LT';\n }\n },\n lastDay: '[Wczoraj o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[W zeszłą niedzielę o] LT';\n case 3:\n return '[W zeszłą środę o] LT';\n case 6:\n return '[W zeszłą sobotę o] LT';\n default:\n return '[W zeszły] dddd [o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: '%s temu',\n s: 'kilka sekund',\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: '1 dzień',\n dd: '%d dni',\n w: 'tydzień',\n ww: translate,\n M: 'miesiąc',\n MM: translate,\n y: 'rok',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese (Brazil) [pt-br]\n//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ptBr = moment.defineLocale('pt-br', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays:\n 'domingo_segunda-feira_terça-feira_quarta-feira_quinta-feira_sexta-feira_sábado'.split(\n '_'\n ),\n weekdaysShort: 'dom_seg_ter_qua_qui_sex_sáb'.split('_'),\n weekdaysMin: 'do_2ª_3ª_4ª_5ª_6ª_sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY [às] HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY [às] HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'poucos segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n invalidDate: 'Data inválida',\n });\n\n return ptBr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Portuguese [pt]\n//! author : Jefferson : https://github.com/jalex79\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var pt = moment.defineLocale('pt', {\n months: 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split(\n '_'\n ),\n monthsShort: 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),\n weekdays:\n 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split(\n '_'\n ),\n weekdaysShort: 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),\n weekdaysMin: 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D [de] MMMM [de] YYYY',\n LLL: 'D [de] MMMM [de] YYYY HH:mm',\n LLLL: 'dddd, D [de] MMMM [de] YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hoje às] LT',\n nextDay: '[Amanhã às] LT',\n nextWeek: 'dddd [às] LT',\n lastDay: '[Ontem às] LT',\n lastWeek: function () {\n return this.day() === 0 || this.day() === 6\n ? '[Último] dddd [às] LT' // Saturday + Sunday\n : '[Última] dddd [às] LT'; // Monday - Friday\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'em %s',\n past: 'há %s',\n s: 'segundos',\n ss: '%d segundos',\n m: 'um minuto',\n mm: '%d minutos',\n h: 'uma hora',\n hh: '%d horas',\n d: 'um dia',\n dd: '%d dias',\n w: 'uma semana',\n ww: '%d semanas',\n M: 'um mês',\n MM: '%d meses',\n y: 'um ano',\n yy: '%d anos',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return pt;\n\n})));\n","//! moment.js locale configuration\n//! locale : Romanian [ro]\n//! author : Vlad Gurdiga : https://github.com/gurdiga\n//! author : Valentin Agachi : https://github.com/avaly\n//! author : Emanuel Cepoi : https://github.com/cepem\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: 'secunde',\n mm: 'minute',\n hh: 'ore',\n dd: 'zile',\n ww: 'săptămâni',\n MM: 'luni',\n yy: 'ani',\n },\n separator = ' ';\n if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {\n separator = ' de ';\n }\n return number + separator + format[key];\n }\n\n var ro = moment.defineLocale('ro', {\n months: 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split(\n '_'\n ),\n monthsShort:\n 'ian._feb._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),\n weekdaysShort: 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),\n weekdaysMin: 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY H:mm',\n LLLL: 'dddd, D MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[azi la] LT',\n nextDay: '[mâine la] LT',\n nextWeek: 'dddd [la] LT',\n lastDay: '[ieri la] LT',\n lastWeek: '[fosta] dddd [la] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'peste %s',\n past: '%s în urmă',\n s: 'câteva secunde',\n ss: relativeTimeWithPlural,\n m: 'un minut',\n mm: relativeTimeWithPlural,\n h: 'o oră',\n hh: relativeTimeWithPlural,\n d: 'o zi',\n dd: relativeTimeWithPlural,\n w: 'o săptămână',\n ww: relativeTimeWithPlural,\n M: 'o lună',\n MM: relativeTimeWithPlural,\n y: 'un an',\n yy: relativeTimeWithPlural,\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return ro;\n\n})));\n","//! moment.js locale configuration\n//! locale : Russian [ru]\n//! author : Viktorminator : https://github.com/Viktorminator\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Коренберг Марк : https://github.com/socketpair\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунды_секунд' : 'секунду_секунды_секунд',\n mm: withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',\n hh: 'час_часа_часов',\n dd: 'день_дня_дней',\n ww: 'неделя_недели_недель',\n MM: 'месяц_месяца_месяцев',\n yy: 'год_года_лет',\n };\n if (key === 'm') {\n return withoutSuffix ? 'минута' : 'минуту';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n var monthsParse = [\n /^янв/i,\n /^фев/i,\n /^мар/i,\n /^апр/i,\n /^ма[йя]/i,\n /^июн/i,\n /^июл/i,\n /^авг/i,\n /^сен/i,\n /^окт/i,\n /^ноя/i,\n /^дек/i,\n ];\n\n // http://new.gramota.ru/spravka/rules/139-prop : § 103\n // Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637\n // CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753\n var ru = moment.defineLocale('ru', {\n months: {\n format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split(\n '_'\n ),\n standalone:\n 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split(\n '_'\n ),\n },\n monthsShort: {\n // по CLDR именно \"июл.\" и \"июн.\", но какой смысл менять букву на точку?\n format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n standalone:\n 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split(\n '_'\n ),\n },\n weekdays: {\n standalone:\n 'воскресенье_понедельник_вторник_среда_четверг_пятница_суббота'.split(\n '_'\n ),\n format: 'воскресенье_понедельник_вторник_среду_четверг_пятницу_субботу'.split(\n '_'\n ),\n isFormat: /\\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?] ?dddd/,\n },\n weekdaysShort: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'вс_пн_вт_ср_чт_пт_сб'.split('_'),\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n\n // полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки\n monthsRegex:\n /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // копия предыдущего\n monthsShortRegex:\n /^(январ[ья]|янв\\.?|феврал[ья]|февр?\\.?|марта?|мар\\.?|апрел[ья]|апр\\.?|ма[йя]|июн[ья]|июн\\.?|июл[ья]|июл\\.?|августа?|авг\\.?|сентябр[ья]|сент?\\.?|октябр[ья]|окт\\.?|ноябр[ья]|нояб?\\.?|декабр[ья]|дек\\.?)/i,\n\n // полные названия с падежами\n monthsStrictRegex:\n /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,\n\n // Выражение, которое соответствует только сокращённым формам\n monthsShortStrictRegex:\n /^(янв\\.|февр?\\.|мар[т.]|апр\\.|ма[яй]|июн[ья.]|июл[ья.]|авг\\.|сент?\\.|окт\\.|нояб?\\.|дек\\.)/i,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY г.',\n LLL: 'D MMMM YYYY г., H:mm',\n LLLL: 'dddd, D MMMM YYYY г., H:mm',\n },\n calendar: {\n sameDay: '[Сегодня, в] LT',\n nextDay: '[Завтра, в] LT',\n lastDay: '[Вчера, в] LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В следующее] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В следующий] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В следующую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n lastWeek: function (now) {\n if (now.week() !== this.week()) {\n switch (this.day()) {\n case 0:\n return '[В прошлое] dddd, [в] LT';\n case 1:\n case 2:\n case 4:\n return '[В прошлый] dddd, [в] LT';\n case 3:\n case 5:\n case 6:\n return '[В прошлую] dddd, [в] LT';\n }\n } else {\n if (this.day() === 2) {\n return '[Во] dddd, [в] LT';\n } else {\n return '[В] dddd, [в] LT';\n }\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'через %s',\n past: '%s назад',\n s: 'несколько секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'час',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n w: 'неделя',\n ww: relativeTimeWithPlural,\n M: 'месяц',\n MM: relativeTimeWithPlural,\n y: 'год',\n yy: relativeTimeWithPlural,\n },\n meridiemParse: /ночи|утра|дня|вечера/i,\n isPM: function (input) {\n return /^(дня|вечера)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночи';\n } else if (hour < 12) {\n return 'утра';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечера';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го|я)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n return number + '-й';\n case 'D':\n return number + '-го';\n case 'w':\n case 'W':\n return number + '-я';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ru;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sindhi [sd]\n//! author : Narain Sagar : https://github.com/narainsagar\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوري',\n 'فيبروري',\n 'مارچ',\n 'اپريل',\n 'مئي',\n 'جون',\n 'جولاءِ',\n 'آگسٽ',\n 'سيپٽمبر',\n 'آڪٽوبر',\n 'نومبر',\n 'ڊسمبر',\n ],\n days = ['آچر', 'سومر', 'اڱارو', 'اربع', 'خميس', 'جمع', 'ڇنڇر'];\n\n var sd = moment.defineLocale('sd', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[اڄ] LT',\n nextDay: '[سڀاڻي] LT',\n nextWeek: 'dddd [اڳين هفتي تي] LT',\n lastDay: '[ڪالهه] LT',\n lastWeek: '[گزريل هفتي] dddd [تي] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s پوء',\n past: '%s اڳ',\n s: 'چند سيڪنڊ',\n ss: '%d سيڪنڊ',\n m: 'هڪ منٽ',\n mm: '%d منٽ',\n h: 'هڪ ڪلاڪ',\n hh: '%d ڪلاڪ',\n d: 'هڪ ڏينهن',\n dd: '%d ڏينهن',\n M: 'هڪ مهينو',\n MM: '%d مهينا',\n y: 'هڪ سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sd;\n\n})));\n","//! moment.js locale configuration\n//! locale : Northern Sami [se]\n//! authors : Bård Rolstad Henriksen : https://github.com/karamell\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var se = moment.defineLocale('se', {\n months: 'ođđajagemánnu_guovvamánnu_njukčamánnu_cuoŋománnu_miessemánnu_geassemánnu_suoidnemánnu_borgemánnu_čakčamánnu_golggotmánnu_skábmamánnu_juovlamánnu'.split(\n '_'\n ),\n monthsShort:\n 'ođđj_guov_njuk_cuo_mies_geas_suoi_borg_čakč_golg_skáb_juov'.split('_'),\n weekdays:\n 'sotnabeaivi_vuossárga_maŋŋebárga_gaskavahkku_duorastat_bearjadat_lávvardat'.split(\n '_'\n ),\n weekdaysShort: 'sotn_vuos_maŋ_gask_duor_bear_láv'.split('_'),\n weekdaysMin: 's_v_m_g_d_b_L'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'MMMM D. [b.] YYYY',\n LLL: 'MMMM D. [b.] YYYY [ti.] HH:mm',\n LLLL: 'dddd, MMMM D. [b.] YYYY [ti.] HH:mm',\n },\n calendar: {\n sameDay: '[otne ti] LT',\n nextDay: '[ihttin ti] LT',\n nextWeek: 'dddd [ti] LT',\n lastDay: '[ikte ti] LT',\n lastWeek: '[ovddit] dddd [ti] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s geažes',\n past: 'maŋit %s',\n s: 'moadde sekunddat',\n ss: '%d sekunddat',\n m: 'okta minuhta',\n mm: '%d minuhtat',\n h: 'okta diimmu',\n hh: '%d diimmut',\n d: 'okta beaivi',\n dd: '%d beaivvit',\n M: 'okta mánnu',\n MM: '%d mánut',\n y: 'okta jahki',\n yy: '%d jagit',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return se;\n\n})));\n","//! moment.js locale configuration\n//! locale : Sinhalese [si]\n//! author : Sampath Sitinamaluwa : https://github.com/sampathsris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n /*jshint -W100*/\n var si = moment.defineLocale('si', {\n months: 'ජනවාරි_පෙබරවාරි_මාර්තු_අප්‍රේල්_මැයි_ජූනි_ජූලි_අගෝස්තු_සැප්තැම්බර්_ඔක්තෝබර්_නොවැම්බර්_දෙසැම්බර්'.split(\n '_'\n ),\n monthsShort: 'ජන_පෙබ_මාර්_අප්_මැයි_ජූනි_ජූලි_අගෝ_සැප්_ඔක්_නොවැ_දෙසැ'.split(\n '_'\n ),\n weekdays:\n 'ඉරිදා_සඳුදා_අඟහරුවාදා_බදාදා_බ්‍රහස්පතින්දා_සිකුරාදා_සෙනසුරාදා'.split(\n '_'\n ),\n weekdaysShort: 'ඉරි_සඳු_අඟ_බදා_බ්‍රහ_සිකු_සෙන'.split('_'),\n weekdaysMin: 'ඉ_ස_අ_බ_බ්‍ර_සි_සෙ'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'a h:mm',\n LTS: 'a h:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY MMMM D',\n LLL: 'YYYY MMMM D, a h:mm',\n LLLL: 'YYYY MMMM D [වැනි] dddd, a h:mm:ss',\n },\n calendar: {\n sameDay: '[අද] LT[ට]',\n nextDay: '[හෙට] LT[ට]',\n nextWeek: 'dddd LT[ට]',\n lastDay: '[ඊයේ] LT[ට]',\n lastWeek: '[පසුගිය] dddd LT[ට]',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%sකින්',\n past: '%sකට පෙර',\n s: 'තත්පර කිහිපය',\n ss: 'තත්පර %d',\n m: 'මිනිත්තුව',\n mm: 'මිනිත්තු %d',\n h: 'පැය',\n hh: 'පැය %d',\n d: 'දිනය',\n dd: 'දින %d',\n M: 'මාසය',\n MM: 'මාස %d',\n y: 'වසර',\n yy: 'වසර %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2} වැනි/,\n ordinal: function (number) {\n return number + ' වැනි';\n },\n meridiemParse: /පෙර වරු|පස් වරු|පෙ.ව|ප.ව./,\n isPM: function (input) {\n return input === 'ප.ව.' || input === 'පස් වරු';\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'ප.ව.' : 'පස් වරු';\n } else {\n return isLower ? 'පෙ.ව.' : 'පෙර වරු';\n }\n },\n });\n\n return si;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovak [sk]\n//! author : Martin Minka : https://github.com/k2s\n//! based on work of petrbela : https://github.com/petrbela\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months =\n 'január_február_marec_apríl_máj_jún_júl_august_september_október_november_december'.split(\n '_'\n ),\n monthsShort = 'jan_feb_mar_apr_máj_jún_júl_aug_sep_okt_nov_dec'.split('_');\n function plural(n) {\n return n > 1 && n < 5;\n }\n function translate(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's': // a few seconds / in a few seconds / a few seconds ago\n return withoutSuffix || isFuture ? 'pár sekúnd' : 'pár sekundami';\n case 'ss': // 9 seconds / in 9 seconds / 9 seconds ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'sekundy' : 'sekúnd');\n } else {\n return result + 'sekundami';\n }\n case 'm': // a minute / in a minute / a minute ago\n return withoutSuffix ? 'minúta' : isFuture ? 'minútu' : 'minútou';\n case 'mm': // 9 minutes / in 9 minutes / 9 minutes ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'minúty' : 'minút');\n } else {\n return result + 'minútami';\n }\n case 'h': // an hour / in an hour / an hour ago\n return withoutSuffix ? 'hodina' : isFuture ? 'hodinu' : 'hodinou';\n case 'hh': // 9 hours / in 9 hours / 9 hours ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'hodiny' : 'hodín');\n } else {\n return result + 'hodinami';\n }\n case 'd': // a day / in a day / a day ago\n return withoutSuffix || isFuture ? 'deň' : 'dňom';\n case 'dd': // 9 days / in 9 days / 9 days ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'dni' : 'dní');\n } else {\n return result + 'dňami';\n }\n case 'M': // a month / in a month / a month ago\n return withoutSuffix || isFuture ? 'mesiac' : 'mesiacom';\n case 'MM': // 9 months / in 9 months / 9 months ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'mesiace' : 'mesiacov');\n } else {\n return result + 'mesiacmi';\n }\n case 'y': // a year / in a year / a year ago\n return withoutSuffix || isFuture ? 'rok' : 'rokom';\n case 'yy': // 9 years / in 9 years / 9 years ago\n if (withoutSuffix || isFuture) {\n return result + (plural(number) ? 'roky' : 'rokov');\n } else {\n return result + 'rokmi';\n }\n }\n }\n\n var sk = moment.defineLocale('sk', {\n months: months,\n monthsShort: monthsShort,\n weekdays: 'nedeľa_pondelok_utorok_streda_štvrtok_piatok_sobota'.split('_'),\n weekdaysShort: 'ne_po_ut_st_št_pi_so'.split('_'),\n weekdaysMin: 'ne_po_ut_st_št_pi_so'.split('_'),\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[dnes o] LT',\n nextDay: '[zajtra o] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v nedeľu o] LT';\n case 1:\n case 2:\n return '[v] dddd [o] LT';\n case 3:\n return '[v stredu o] LT';\n case 4:\n return '[vo štvrtok o] LT';\n case 5:\n return '[v piatok o] LT';\n case 6:\n return '[v sobotu o] LT';\n }\n },\n lastDay: '[včera o] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[minulú nedeľu o] LT';\n case 1:\n case 2:\n return '[minulý] dddd [o] LT';\n case 3:\n return '[minulú stredu o] LT';\n case 4:\n case 5:\n return '[minulý] dddd [o] LT';\n case 6:\n return '[minulú sobotu o] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pred %s',\n s: translate,\n ss: translate,\n m: translate,\n mm: translate,\n h: translate,\n hh: translate,\n d: translate,\n dd: translate,\n M: translate,\n MM: translate,\n y: translate,\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Slovenian [sl]\n//! author : Robert Sedovšek : https://github.com/sedovsek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var result = number + ' ';\n switch (key) {\n case 's':\n return withoutSuffix || isFuture\n ? 'nekaj sekund'\n : 'nekaj sekundami';\n case 'ss':\n if (number === 1) {\n result += withoutSuffix ? 'sekundo' : 'sekundi';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'sekundi' : 'sekundah';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'sekunde' : 'sekundah';\n } else {\n result += 'sekund';\n }\n return result;\n case 'm':\n return withoutSuffix ? 'ena minuta' : 'eno minuto';\n case 'mm':\n if (number === 1) {\n result += withoutSuffix ? 'minuta' : 'minuto';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'minuti' : 'minutama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'minute' : 'minutami';\n } else {\n result += withoutSuffix || isFuture ? 'minut' : 'minutami';\n }\n return result;\n case 'h':\n return withoutSuffix ? 'ena ura' : 'eno uro';\n case 'hh':\n if (number === 1) {\n result += withoutSuffix ? 'ura' : 'uro';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'uri' : 'urama';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'ure' : 'urami';\n } else {\n result += withoutSuffix || isFuture ? 'ur' : 'urami';\n }\n return result;\n case 'd':\n return withoutSuffix || isFuture ? 'en dan' : 'enim dnem';\n case 'dd':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'dan' : 'dnem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevoma';\n } else {\n result += withoutSuffix || isFuture ? 'dni' : 'dnevi';\n }\n return result;\n case 'M':\n return withoutSuffix || isFuture ? 'en mesec' : 'enim mesecem';\n case 'MM':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'mesec' : 'mesecem';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'meseca' : 'mesecema';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'mesece' : 'meseci';\n } else {\n result += withoutSuffix || isFuture ? 'mesecev' : 'meseci';\n }\n return result;\n case 'y':\n return withoutSuffix || isFuture ? 'eno leto' : 'enim letom';\n case 'yy':\n if (number === 1) {\n result += withoutSuffix || isFuture ? 'leto' : 'letom';\n } else if (number === 2) {\n result += withoutSuffix || isFuture ? 'leti' : 'letoma';\n } else if (number < 5) {\n result += withoutSuffix || isFuture ? 'leta' : 'leti';\n } else {\n result += withoutSuffix || isFuture ? 'let' : 'leti';\n }\n return result;\n }\n }\n\n var sl = moment.defineLocale('sl', {\n months: 'januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljek_torek_sreda_četrtek_petek_sobota'.split('_'),\n weekdaysShort: 'ned._pon._tor._sre._čet._pet._sob.'.split('_'),\n weekdaysMin: 'ne_po_to_sr_če_pe_so'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD. MM. YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY H:mm',\n LLLL: 'dddd, D. MMMM YYYY H:mm',\n },\n calendar: {\n sameDay: '[danes ob] LT',\n nextDay: '[jutri ob] LT',\n\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[v] [nedeljo] [ob] LT';\n case 3:\n return '[v] [sredo] [ob] LT';\n case 6:\n return '[v] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[v] dddd [ob] LT';\n }\n },\n lastDay: '[včeraj ob] LT',\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return '[prejšnjo] [nedeljo] [ob] LT';\n case 3:\n return '[prejšnjo] [sredo] [ob] LT';\n case 6:\n return '[prejšnjo] [soboto] [ob] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[prejšnji] dddd [ob] LT';\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'čez %s',\n past: 'pred %s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Albanian [sq]\n//! author : Flakërim Ismani : https://github.com/flakerimi\n//! author : Menelion Elensúle : https://github.com/Oire\n//! author : Oerd Cukalla : https://github.com/oerd\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sq = moment.defineLocale('sq', {\n months: 'Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_Nëntor_Dhjetor'.split(\n '_'\n ),\n monthsShort: 'Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_Nën_Dhj'.split('_'),\n weekdays: 'E Diel_E Hënë_E Martë_E Mërkurë_E Enjte_E Premte_E Shtunë'.split(\n '_'\n ),\n weekdaysShort: 'Die_Hën_Mar_Mër_Enj_Pre_Sht'.split('_'),\n weekdaysMin: 'D_H_Ma_Më_E_P_Sh'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /PD|MD/,\n isPM: function (input) {\n return input.charAt(0) === 'M';\n },\n meridiem: function (hours, minutes, isLower) {\n return hours < 12 ? 'PD' : 'MD';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Sot në] LT',\n nextDay: '[Nesër në] LT',\n nextWeek: 'dddd [në] LT',\n lastDay: '[Dje në] LT',\n lastWeek: 'dddd [e kaluar në] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'në %s',\n past: '%s më parë',\n s: 'disa sekonda',\n ss: '%d sekonda',\n m: 'një minutë',\n mm: '%d minuta',\n h: 'një orë',\n hh: '%d orë',\n d: 'një ditë',\n dd: '%d ditë',\n M: 'një muaj',\n MM: '%d muaj',\n y: 'një vit',\n yy: '%d vite',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sq;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian Cyrillic [sr-cyrl]\n//! author : Milan Janačković : https://github.com/milan-j\n//! author : Stefan Crnjaković : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['секунда', 'секунде', 'секунди'],\n m: ['један минут', 'једног минута'],\n mm: ['минут', 'минута', 'минута'],\n h: ['један сат', 'једног сата'],\n hh: ['сат', 'сата', 'сати'],\n d: ['један дан', 'једног дана'],\n dd: ['дан', 'дана', 'дана'],\n M: ['један месец', 'једног месеца'],\n MM: ['месец', 'месеца', 'месеци'],\n y: ['једну годину', 'једне године'],\n yy: ['годину', 'године', 'година'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n if (\n number % 10 >= 1 &&\n number % 10 <= 4 &&\n (number % 100 < 10 || number % 100 >= 20)\n ) {\n return number % 10 === 1 ? wordKey[0] : wordKey[1];\n }\n return wordKey[2];\n },\n translate: function (number, withoutSuffix, key, isFuture) {\n var wordKey = translator.words[key],\n word;\n\n if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'једна година';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n\n word = translator.correctGrammaticalCase(number, wordKey);\n // Nominativ\n if (key === 'yy' && withoutSuffix && word === 'годину') {\n return number + ' година';\n }\n\n return number + ' ' + word;\n },\n };\n\n var srCyrl = moment.defineLocale('sr-cyrl', {\n months: 'јануар_фебруар_март_април_мај_јун_јул_август_септембар_октобар_новембар_децембар'.split(\n '_'\n ),\n monthsShort:\n 'јан._феб._мар._апр._мај_јун_јул_авг._сеп._окт._нов._дец.'.split('_'),\n monthsParseExact: true,\n weekdays: 'недеља_понедељак_уторак_среда_четвртак_петак_субота'.split('_'),\n weekdaysShort: 'нед._пон._уто._сре._чет._пет._суб.'.split('_'),\n weekdaysMin: 'не_по_ут_ср_че_пе_су'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[данас у] LT',\n nextDay: '[сутра у] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[у] [недељу] [у] LT';\n case 3:\n return '[у] [среду] [у] LT';\n case 6:\n return '[у] [суботу] [у] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[у] dddd [у] LT';\n }\n },\n lastDay: '[јуче у] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[прошле] [недеље] [у] LT',\n '[прошлог] [понедељка] [у] LT',\n '[прошлог] [уторка] [у] LT',\n '[прошле] [среде] [у] LT',\n '[прошлог] [четвртка] [у] LT',\n '[прошлог] [петка] [у] LT',\n '[прошле] [суботе] [у] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: 'пре %s',\n s: 'неколико секунди',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: translator.translate,\n dd: translator.translate,\n M: translator.translate,\n MM: translator.translate,\n y: translator.translate,\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return srCyrl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Serbian [sr]\n//! author : Milan Janačković : https://github.com/milan-j\n//! author : Stefan Crnjaković : https://github.com/crnjakovic\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var translator = {\n words: {\n //Different grammatical cases\n ss: ['sekunda', 'sekunde', 'sekundi'],\n m: ['jedan minut', 'jednog minuta'],\n mm: ['minut', 'minuta', 'minuta'],\n h: ['jedan sat', 'jednog sata'],\n hh: ['sat', 'sata', 'sati'],\n d: ['jedan dan', 'jednog dana'],\n dd: ['dan', 'dana', 'dana'],\n M: ['jedan mesec', 'jednog meseca'],\n MM: ['mesec', 'meseca', 'meseci'],\n y: ['jednu godinu', 'jedne godine'],\n yy: ['godinu', 'godine', 'godina'],\n },\n correctGrammaticalCase: function (number, wordKey) {\n if (\n number % 10 >= 1 &&\n number % 10 <= 4 &&\n (number % 100 < 10 || number % 100 >= 20)\n ) {\n return number % 10 === 1 ? wordKey[0] : wordKey[1];\n }\n return wordKey[2];\n },\n translate: function (number, withoutSuffix, key, isFuture) {\n var wordKey = translator.words[key],\n word;\n\n if (key.length === 1) {\n // Nominativ\n if (key === 'y' && withoutSuffix) return 'jedna godina';\n return isFuture || withoutSuffix ? wordKey[0] : wordKey[1];\n }\n\n word = translator.correctGrammaticalCase(number, wordKey);\n // Nominativ\n if (key === 'yy' && withoutSuffix && word === 'godinu') {\n return number + ' godina';\n }\n\n return number + ' ' + word;\n },\n };\n\n var sr = moment.defineLocale('sr', {\n months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split(\n '_'\n ),\n monthsShort:\n 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),\n monthsParseExact: true,\n weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split(\n '_'\n ),\n weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),\n weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'D. M. YYYY.',\n LL: 'D. MMMM YYYY.',\n LLL: 'D. MMMM YYYY. H:mm',\n LLLL: 'dddd, D. MMMM YYYY. H:mm',\n },\n calendar: {\n sameDay: '[danas u] LT',\n nextDay: '[sutra u] LT',\n nextWeek: function () {\n switch (this.day()) {\n case 0:\n return '[u] [nedelju] [u] LT';\n case 3:\n return '[u] [sredu] [u] LT';\n case 6:\n return '[u] [subotu] [u] LT';\n case 1:\n case 2:\n case 4:\n case 5:\n return '[u] dddd [u] LT';\n }\n },\n lastDay: '[juče u] LT',\n lastWeek: function () {\n var lastWeekDays = [\n '[prošle] [nedelje] [u] LT',\n '[prošlog] [ponedeljka] [u] LT',\n '[prošlog] [utorka] [u] LT',\n '[prošle] [srede] [u] LT',\n '[prošlog] [četvrtka] [u] LT',\n '[prošlog] [petka] [u] LT',\n '[prošle] [subote] [u] LT',\n ];\n return lastWeekDays[this.day()];\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'za %s',\n past: 'pre %s',\n s: 'nekoliko sekundi',\n ss: translator.translate,\n m: translator.translate,\n mm: translator.translate,\n h: translator.translate,\n hh: translator.translate,\n d: translator.translate,\n dd: translator.translate,\n M: translator.translate,\n MM: translator.translate,\n y: translator.translate,\n yy: translator.translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sr;\n\n})));\n","//! moment.js locale configuration\n//! locale : siSwati [ss]\n//! author : Nicolai Davies : https://github.com/nicolaidavies\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ss = moment.defineLocale('ss', {\n months: \"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni\".split(\n '_'\n ),\n monthsShort: 'Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo'.split('_'),\n weekdays:\n 'Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo'.split(\n '_'\n ),\n weekdaysShort: 'Lis_Umb_Lsb_Les_Lsi_Lsh_Umg'.split('_'),\n weekdaysMin: 'Li_Us_Lb_Lt_Ls_Lh_Ug'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Namuhla nga] LT',\n nextDay: '[Kusasa nga] LT',\n nextWeek: 'dddd [nga] LT',\n lastDay: '[Itolo nga] LT',\n lastWeek: 'dddd [leliphelile] [nga] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'nga %s',\n past: 'wenteka nga %s',\n s: 'emizuzwana lomcane',\n ss: '%d mzuzwana',\n m: 'umzuzu',\n mm: '%d emizuzu',\n h: 'lihora',\n hh: '%d emahora',\n d: 'lilanga',\n dd: '%d emalanga',\n M: 'inyanga',\n MM: '%d tinyanga',\n y: 'umnyaka',\n yy: '%d iminyaka',\n },\n meridiemParse: /ekuseni|emini|entsambama|ebusuku/,\n meridiem: function (hours, minutes, isLower) {\n if (hours < 11) {\n return 'ekuseni';\n } else if (hours < 15) {\n return 'emini';\n } else if (hours < 19) {\n return 'entsambama';\n } else {\n return 'ebusuku';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'ekuseni') {\n return hour;\n } else if (meridiem === 'emini') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'entsambama' || meridiem === 'ebusuku') {\n if (hour === 0) {\n return 0;\n }\n return hour + 12;\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: '%d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ss;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swedish [sv]\n//! author : Jens Alm : https://github.com/ulmus\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sv = moment.defineLocale('sv', {\n months: 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split(\n '_'\n ),\n monthsShort: 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),\n weekdays: 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),\n weekdaysShort: 'sön_mån_tis_ons_tor_fre_lör'.split('_'),\n weekdaysMin: 'sö_må_ti_on_to_fr_lö'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY [kl.] HH:mm',\n LLLL: 'dddd D MMMM YYYY [kl.] HH:mm',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Idag] LT',\n nextDay: '[Imorgon] LT',\n lastDay: '[Igår] LT',\n nextWeek: '[På] dddd LT',\n lastWeek: '[I] dddd[s] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'om %s',\n past: 'för %s sedan',\n s: 'några sekunder',\n ss: '%d sekunder',\n m: 'en minut',\n mm: '%d minuter',\n h: 'en timme',\n hh: '%d timmar',\n d: 'en dag',\n dd: '%d dagar',\n M: 'en månad',\n MM: '%d månader',\n y: 'ett år',\n yy: '%d år',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(\\:e|\\:a)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? ':e'\n : b === 1\n ? ':a'\n : b === 2\n ? ':a'\n : b === 3\n ? ':e'\n : ':e';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return sv;\n\n})));\n","//! moment.js locale configuration\n//! locale : Swahili [sw]\n//! author : Fahad Kassim : https://github.com/fadsel\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var sw = moment.defineLocale('sw', {\n months: 'Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba'.split(\n '_'\n ),\n monthsShort: 'Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des'.split('_'),\n weekdays:\n 'Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi'.split(\n '_'\n ),\n weekdaysShort: 'Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos'.split('_'),\n weekdaysMin: 'J2_J3_J4_J5_Al_Ij_J1'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'hh:mm A',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[leo saa] LT',\n nextDay: '[kesho saa] LT',\n nextWeek: '[wiki ijayo] dddd [saat] LT',\n lastDay: '[jana] LT',\n lastWeek: '[wiki iliyopita] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s baadaye',\n past: 'tokea %s',\n s: 'hivi punde',\n ss: 'sekunde %d',\n m: 'dakika moja',\n mm: 'dakika %d',\n h: 'saa limoja',\n hh: 'masaa %d',\n d: 'siku moja',\n dd: 'siku %d',\n M: 'mwezi mmoja',\n MM: 'miezi %d',\n y: 'mwaka mmoja',\n yy: 'miaka %d',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return sw;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tamil [ta]\n//! author : Arjunkumar Krishnamoorthy : https://github.com/tk120404\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var symbolMap = {\n 1: '௧',\n 2: '௨',\n 3: '௩',\n 4: '௪',\n 5: '௫',\n 6: '௬',\n 7: '௭',\n 8: '௮',\n 9: '௯',\n 0: '௦',\n },\n numberMap = {\n '௧': '1',\n '௨': '2',\n '௩': '3',\n '௪': '4',\n '௫': '5',\n '௬': '6',\n '௭': '7',\n '௮': '8',\n '௯': '9',\n '௦': '0',\n };\n\n var ta = moment.defineLocale('ta', {\n months: 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n monthsShort:\n 'ஜனவரி_பிப்ரவரி_மார்ச்_ஏப்ரல்_மே_ஜூன்_ஜூலை_ஆகஸ்ட்_செப்டெம்பர்_அக்டோபர்_நவம்பர்_டிசம்பர்'.split(\n '_'\n ),\n weekdays:\n 'ஞாயிற்றுக்கிழமை_திங்கட்கிழமை_செவ்வாய்கிழமை_புதன்கிழமை_வியாழக்கிழமை_வெள்ளிக்கிழமை_சனிக்கிழமை'.split(\n '_'\n ),\n weekdaysShort: 'ஞாயிறு_திங்கள்_செவ்வாய்_புதன்_வியாழன்_வெள்ளி_சனி'.split(\n '_'\n ),\n weekdaysMin: 'ஞா_தி_செ_பு_வி_வெ_ச'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, HH:mm',\n LLLL: 'dddd, D MMMM YYYY, HH:mm',\n },\n calendar: {\n sameDay: '[இன்று] LT',\n nextDay: '[நாளை] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[நேற்று] LT',\n lastWeek: '[கடந்த வாரம்] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s இல்',\n past: '%s முன்',\n s: 'ஒரு சில விநாடிகள்',\n ss: '%d விநாடிகள்',\n m: 'ஒரு நிமிடம்',\n mm: '%d நிமிடங்கள்',\n h: 'ஒரு மணி நேரம்',\n hh: '%d மணி நேரம்',\n d: 'ஒரு நாள்',\n dd: '%d நாட்கள்',\n M: 'ஒரு மாதம்',\n MM: '%d மாதங்கள்',\n y: 'ஒரு வருடம்',\n yy: '%d ஆண்டுகள்',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}வது/,\n ordinal: function (number) {\n return number + 'வது';\n },\n preparse: function (string) {\n return string.replace(/[௧௨௩௪௫௬௭௮௯௦]/g, function (match) {\n return numberMap[match];\n });\n },\n postformat: function (string) {\n return string.replace(/\\d/g, function (match) {\n return symbolMap[match];\n });\n },\n // refer http://ta.wikipedia.org/s/1er1\n meridiemParse: /யாமம்|வைகறை|காலை|நண்பகல்|எற்பாடு|மாலை/,\n meridiem: function (hour, minute, isLower) {\n if (hour < 2) {\n return ' யாமம்';\n } else if (hour < 6) {\n return ' வைகறை'; // வைகறை\n } else if (hour < 10) {\n return ' காலை'; // காலை\n } else if (hour < 14) {\n return ' நண்பகல்'; // நண்பகல்\n } else if (hour < 18) {\n return ' எற்பாடு'; // எற்பாடு\n } else if (hour < 22) {\n return ' மாலை'; // மாலை\n } else {\n return ' யாமம்';\n }\n },\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'யாமம்') {\n return hour < 2 ? hour : hour + 12;\n } else if (meridiem === 'வைகறை' || meridiem === 'காலை') {\n return hour;\n } else if (meridiem === 'நண்பகல்') {\n return hour >= 10 ? hour : hour + 12;\n } else {\n return hour + 12;\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return ta;\n\n})));\n","//! moment.js locale configuration\n//! locale : Telugu [te]\n//! author : Krishna Chaitanya Thota : https://github.com/kcthota\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var te = moment.defineLocale('te', {\n months: 'జనవరి_ఫిబ్రవరి_మార్చి_ఏప్రిల్_మే_జూన్_జులై_ఆగస్టు_సెప్టెంబర్_అక్టోబర్_నవంబర్_డిసెంబర్'.split(\n '_'\n ),\n monthsShort:\n 'జన._ఫిబ్ర._మార్చి_ఏప్రి._మే_జూన్_జులై_ఆగ._సెప్._అక్టో._నవ._డిసె.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'ఆదివారం_సోమవారం_మంగళవారం_బుధవారం_గురువారం_శుక్రవారం_శనివారం'.split(\n '_'\n ),\n weekdaysShort: 'ఆది_సోమ_మంగళ_బుధ_గురు_శుక్ర_శని'.split('_'),\n weekdaysMin: 'ఆ_సో_మం_బు_గు_శు_శ'.split('_'),\n longDateFormat: {\n LT: 'A h:mm',\n LTS: 'A h:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY, A h:mm',\n LLLL: 'dddd, D MMMM YYYY, A h:mm',\n },\n calendar: {\n sameDay: '[నేడు] LT',\n nextDay: '[రేపు] LT',\n nextWeek: 'dddd, LT',\n lastDay: '[నిన్న] LT',\n lastWeek: '[గత] dddd, LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s లో',\n past: '%s క్రితం',\n s: 'కొన్ని క్షణాలు',\n ss: '%d సెకన్లు',\n m: 'ఒక నిమిషం',\n mm: '%d నిమిషాలు',\n h: 'ఒక గంట',\n hh: '%d గంటలు',\n d: 'ఒక రోజు',\n dd: '%d రోజులు',\n M: 'ఒక నెల',\n MM: '%d నెలలు',\n y: 'ఒక సంవత్సరం',\n yy: '%d సంవత్సరాలు',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}వ/,\n ordinal: '%dవ',\n meridiemParse: /రాత్రి|ఉదయం|మధ్యాహ్నం|సాయంత్రం/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'రాత్రి') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'ఉదయం') {\n return hour;\n } else if (meridiem === 'మధ్యాహ్నం') {\n return hour >= 10 ? hour : hour + 12;\n } else if (meridiem === 'సాయంత్రం') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'రాత్రి';\n } else if (hour < 10) {\n return 'ఉదయం';\n } else if (hour < 17) {\n return 'మధ్యాహ్నం';\n } else if (hour < 20) {\n return 'సాయంత్రం';\n } else {\n return 'రాత్రి';\n }\n },\n week: {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n },\n });\n\n return te;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tetun Dili (East Timor) [tet]\n//! author : Joshua Brooks : https://github.com/joshbrooks\n//! author : Onorio De J. Afonso : https://github.com/marobo\n//! author : Sonia Simoes : https://github.com/soniasimoes\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tet = moment.defineLocale('tet', {\n months: 'Janeiru_Fevereiru_Marsu_Abril_Maiu_Juñu_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),\n weekdays: 'Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu'.split('_'),\n weekdaysShort: 'Dom_Seg_Ters_Kua_Kint_Sest_Sab'.split('_'),\n weekdaysMin: 'Do_Seg_Te_Ku_Ki_Ses_Sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Ohin iha] LT',\n nextDay: '[Aban iha] LT',\n nextWeek: 'dddd [iha] LT',\n lastDay: '[Horiseik iha] LT',\n lastWeek: 'dddd [semana kotuk] [iha] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'iha %s',\n past: '%s liuba',\n s: 'segundu balun',\n ss: 'segundu %d',\n m: 'minutu ida',\n mm: 'minutu %d',\n h: 'oras ida',\n hh: 'oras %d',\n d: 'loron ida',\n dd: 'loron %d',\n M: 'fulan ida',\n MM: 'fulan %d',\n y: 'tinan ida',\n yy: 'tinan %d',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(st|nd|rd|th)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tet;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tajik [tg]\n//! author : Orif N. Jr. : https://github.com/orif-jr\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 0: '-ум',\n 1: '-ум',\n 2: '-юм',\n 3: '-юм',\n 4: '-ум',\n 5: '-ум',\n 6: '-ум',\n 7: '-ум',\n 8: '-ум',\n 9: '-ум',\n 10: '-ум',\n 12: '-ум',\n 13: '-ум',\n 20: '-ум',\n 30: '-юм',\n 40: '-ум',\n 50: '-ум',\n 60: '-ум',\n 70: '-ум',\n 80: '-ум',\n 90: '-ум',\n 100: '-ум',\n };\n\n var tg = moment.defineLocale('tg', {\n months: {\n format: 'январи_феврали_марти_апрели_майи_июни_июли_августи_сентябри_октябри_ноябри_декабри'.split(\n '_'\n ),\n standalone:\n 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n },\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'якшанбе_душанбе_сешанбе_чоршанбе_панҷшанбе_ҷумъа_шанбе'.split(\n '_'\n ),\n weekdaysShort: 'яшб_дшб_сшб_чшб_пшб_ҷум_шнб'.split('_'),\n weekdaysMin: 'яш_дш_сш_чш_пш_ҷм_шб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Имрӯз соати] LT',\n nextDay: '[Фардо соати] LT',\n lastDay: '[Дирӯз соати] LT',\n nextWeek: 'dddd[и] [ҳафтаи оянда соати] LT',\n lastWeek: 'dddd[и] [ҳафтаи гузашта соати] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'баъди %s',\n past: '%s пеш',\n s: 'якчанд сония',\n m: 'як дақиқа',\n mm: '%d дақиқа',\n h: 'як соат',\n hh: '%d соат',\n d: 'як рӯз',\n dd: '%d рӯз',\n M: 'як моҳ',\n MM: '%d моҳ',\n y: 'як сол',\n yy: '%d сол',\n },\n meridiemParse: /шаб|субҳ|рӯз|бегоҳ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === 'шаб') {\n return hour < 4 ? hour : hour + 12;\n } else if (meridiem === 'субҳ') {\n return hour;\n } else if (meridiem === 'рӯз') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === 'бегоҳ') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'шаб';\n } else if (hour < 11) {\n return 'субҳ';\n } else if (hour < 16) {\n return 'рӯз';\n } else if (hour < 19) {\n return 'бегоҳ';\n } else {\n return 'шаб';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(ум|юм)/,\n ordinal: function (number) {\n var a = number % 10,\n b = number >= 100 ? 100 : null;\n return number + (suffixes[number] || suffixes[a] || suffixes[b]);\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1th is the first week of the year.\n },\n });\n\n return tg;\n\n})));\n","//! moment.js locale configuration\n//! locale : Thai [th]\n//! author : Kridsada Thanabulpong : https://github.com/sirn\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var th = moment.defineLocale('th', {\n months: 'มกราคม_กุมภาพันธ์_มีนาคม_เมษายน_พฤษภาคม_มิถุนายน_กรกฎาคม_สิงหาคม_กันยายน_ตุลาคม_พฤศจิกายน_ธันวาคม'.split(\n '_'\n ),\n monthsShort:\n 'ม.ค._ก.พ._มี.ค._เม.ย._พ.ค._มิ.ย._ก.ค._ส.ค._ก.ย._ต.ค._พ.ย._ธ.ค.'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัสบดี_ศุกร์_เสาร์'.split('_'),\n weekdaysShort: 'อาทิตย์_จันทร์_อังคาร_พุธ_พฤหัส_ศุกร์_เสาร์'.split('_'), // yes, three characters difference\n weekdaysMin: 'อา._จ._อ._พ._พฤ._ศ._ส.'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'H:mm',\n LTS: 'H:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY เวลา H:mm',\n LLLL: 'วันddddที่ D MMMM YYYY เวลา H:mm',\n },\n meridiemParse: /ก่อนเที่ยง|หลังเที่ยง/,\n isPM: function (input) {\n return input === 'หลังเที่ยง';\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'ก่อนเที่ยง';\n } else {\n return 'หลังเที่ยง';\n }\n },\n calendar: {\n sameDay: '[วันนี้ เวลา] LT',\n nextDay: '[พรุ่งนี้ เวลา] LT',\n nextWeek: 'dddd[หน้า เวลา] LT',\n lastDay: '[เมื่อวานนี้ เวลา] LT',\n lastWeek: '[วัน]dddd[ที่แล้ว เวลา] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'อีก %s',\n past: '%sที่แล้ว',\n s: 'ไม่กี่วินาที',\n ss: '%d วินาที',\n m: '1 นาที',\n mm: '%d นาที',\n h: '1 ชั่วโมง',\n hh: '%d ชั่วโมง',\n d: '1 วัน',\n dd: '%d วัน',\n w: '1 สัปดาห์',\n ww: '%d สัปดาห์',\n M: '1 เดือน',\n MM: '%d เดือน',\n y: '1 ปี',\n yy: '%d ปี',\n },\n });\n\n return th;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkmen [tk]\n//! author : Atamyrat Abdyrahmanov : https://github.com/atamyratabdy\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inji\",\n 5: \"'inji\",\n 8: \"'inji\",\n 70: \"'inji\",\n 80: \"'inji\",\n 2: \"'nji\",\n 7: \"'nji\",\n 20: \"'nji\",\n 50: \"'nji\",\n 3: \"'ünji\",\n 4: \"'ünji\",\n 100: \"'ünji\",\n 6: \"'njy\",\n 9: \"'unjy\",\n 10: \"'unjy\",\n 30: \"'unjy\",\n 60: \"'ynjy\",\n 90: \"'ynjy\",\n };\n\n var tk = moment.defineLocale('tk', {\n months: 'Ýanwar_Fewral_Mart_Aprel_Maý_Iýun_Iýul_Awgust_Sentýabr_Oktýabr_Noýabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Ýan_Few_Mar_Apr_Maý_Iýn_Iýl_Awg_Sen_Okt_Noý_Dek'.split('_'),\n weekdays: 'Ýekşenbe_Duşenbe_Sişenbe_Çarşenbe_Penşenbe_Anna_Şenbe'.split(\n '_'\n ),\n weekdaysShort: 'Ýek_Duş_Siş_Çar_Pen_Ann_Şen'.split('_'),\n weekdaysMin: 'Ýk_Dş_Sş_Çr_Pn_An_Şn'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün sagat] LT',\n nextDay: '[ertir sagat] LT',\n nextWeek: '[indiki] dddd [sagat] LT',\n lastDay: '[düýn] LT',\n lastWeek: '[geçen] dddd [sagat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s soň',\n past: '%s öň',\n s: 'birnäçe sekunt',\n m: 'bir minut',\n mm: '%d minut',\n h: 'bir sagat',\n hh: '%d sagat',\n d: 'bir gün',\n dd: '%d gün',\n M: 'bir aý',\n MM: '%d aý',\n y: 'bir ýyl',\n yy: '%d ýyl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'unjy\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Tagalog (Philippines) [tl-ph]\n//! author : Dan Hagman : https://github.com/hagmandan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tlPh = moment.defineLocale('tl-ph', {\n months: 'Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre'.split(\n '_'\n ),\n monthsShort: 'Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis'.split('_'),\n weekdays: 'Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado'.split(\n '_'\n ),\n weekdaysShort: 'Lin_Lun_Mar_Miy_Huw_Biy_Sab'.split('_'),\n weekdaysMin: 'Li_Lu_Ma_Mi_Hu_Bi_Sab'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'MM/D/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY HH:mm',\n LLLL: 'dddd, MMMM DD, YYYY HH:mm',\n },\n calendar: {\n sameDay: 'LT [ngayong araw]',\n nextDay: '[Bukas ng] LT',\n nextWeek: 'LT [sa susunod na] dddd',\n lastDay: 'LT [kahapon]',\n lastWeek: 'LT [noong nakaraang] dddd',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'sa loob ng %s',\n past: '%s ang nakalipas',\n s: 'ilang segundo',\n ss: '%d segundo',\n m: 'isang minuto',\n mm: '%d minuto',\n h: 'isang oras',\n hh: '%d oras',\n d: 'isang araw',\n dd: '%d araw',\n M: 'isang buwan',\n MM: '%d buwan',\n y: 'isang taon',\n yy: '%d taon',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlPh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Klingon [tlh]\n//! author : Dominika Kruk : https://github.com/amaranthrose\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var numbersNouns = 'pagh_wa’_cha’_wej_loS_vagh_jav_Soch_chorgh_Hut'.split('_');\n\n function translateFuture(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'leS'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'waQ'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'nem'\n : time + ' pIq';\n return time;\n }\n\n function translatePast(output) {\n var time = output;\n time =\n output.indexOf('jaj') !== -1\n ? time.slice(0, -3) + 'Hu’'\n : output.indexOf('jar') !== -1\n ? time.slice(0, -3) + 'wen'\n : output.indexOf('DIS') !== -1\n ? time.slice(0, -3) + 'ben'\n : time + ' ret';\n return time;\n }\n\n function translate(number, withoutSuffix, string, isFuture) {\n var numberNoun = numberAsNoun(number);\n switch (string) {\n case 'ss':\n return numberNoun + ' lup';\n case 'mm':\n return numberNoun + ' tup';\n case 'hh':\n return numberNoun + ' rep';\n case 'dd':\n return numberNoun + ' jaj';\n case 'MM':\n return numberNoun + ' jar';\n case 'yy':\n return numberNoun + ' DIS';\n }\n }\n\n function numberAsNoun(number) {\n var hundred = Math.floor((number % 1000) / 100),\n ten = Math.floor((number % 100) / 10),\n one = number % 10,\n word = '';\n if (hundred > 0) {\n word += numbersNouns[hundred] + 'vatlh';\n }\n if (ten > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[ten] + 'maH';\n }\n if (one > 0) {\n word += (word !== '' ? ' ' : '') + numbersNouns[one];\n }\n return word === '' ? 'pagh' : word;\n }\n\n var tlh = moment.defineLocale('tlh', {\n months: 'tera’ jar wa’_tera’ jar cha’_tera’ jar wej_tera’ jar loS_tera’ jar vagh_tera’ jar jav_tera’ jar Soch_tera’ jar chorgh_tera’ jar Hut_tera’ jar wa’maH_tera’ jar wa’maH wa’_tera’ jar wa’maH cha’'.split(\n '_'\n ),\n monthsShort:\n 'jar wa’_jar cha’_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa’maH_jar wa’maH wa’_jar wa’maH cha’'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split(\n '_'\n ),\n weekdaysShort:\n 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n weekdaysMin:\n 'lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[DaHjaj] LT',\n nextDay: '[wa’leS] LT',\n nextWeek: 'LLL',\n lastDay: '[wa’Hu’] LT',\n lastWeek: 'LLL',\n sameElse: 'L',\n },\n relativeTime: {\n future: translateFuture,\n past: translatePast,\n s: 'puS lup',\n ss: translate,\n m: 'wa’ tup',\n mm: translate,\n h: 'wa’ rep',\n hh: translate,\n d: 'wa’ jaj',\n dd: translate,\n M: 'wa’ jar',\n MM: translate,\n y: 'wa’ DIS',\n yy: translate,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return tlh;\n\n})));\n","//! moment.js locale configuration\n//! locale : Turkish [tr]\n//! authors : Erhan Gundogan : https://github.com/erhangundogan,\n//! Burak Yiğit Kaya: https://github.com/BYK\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var suffixes = {\n 1: \"'inci\",\n 5: \"'inci\",\n 8: \"'inci\",\n 70: \"'inci\",\n 80: \"'inci\",\n 2: \"'nci\",\n 7: \"'nci\",\n 20: \"'nci\",\n 50: \"'nci\",\n 3: \"'üncü\",\n 4: \"'üncü\",\n 100: \"'üncü\",\n 6: \"'ncı\",\n 9: \"'uncu\",\n 10: \"'uncu\",\n 30: \"'uncu\",\n 60: \"'ıncı\",\n 90: \"'ıncı\",\n };\n\n var tr = moment.defineLocale('tr', {\n months: 'Ocak_Şubat_Mart_Nisan_Mayıs_Haziran_Temmuz_Ağustos_Eylül_Ekim_Kasım_Aralık'.split(\n '_'\n ),\n monthsShort: 'Oca_Şub_Mar_Nis_May_Haz_Tem_Ağu_Eyl_Eki_Kas_Ara'.split('_'),\n weekdays: 'Pazar_Pazartesi_Salı_Çarşamba_Perşembe_Cuma_Cumartesi'.split(\n '_'\n ),\n weekdaysShort: 'Paz_Pzt_Sal_Çar_Per_Cum_Cmt'.split('_'),\n weekdaysMin: 'Pz_Pt_Sa_Ça_Pe_Cu_Ct'.split('_'),\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'öö' : 'ÖÖ';\n } else {\n return isLower ? 'ös' : 'ÖS';\n }\n },\n meridiemParse: /öö|ÖÖ|ös|ÖS/,\n isPM: function (input) {\n return input === 'ös' || input === 'ÖS';\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[bugün saat] LT',\n nextDay: '[yarın saat] LT',\n nextWeek: '[gelecek] dddd [saat] LT',\n lastDay: '[dün] LT',\n lastWeek: '[geçen] dddd [saat] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s sonra',\n past: '%s önce',\n s: 'birkaç saniye',\n ss: '%d saniye',\n m: 'bir dakika',\n mm: '%d dakika',\n h: 'bir saat',\n hh: '%d saat',\n d: 'bir gün',\n dd: '%d gün',\n w: 'bir hafta',\n ww: '%d hafta',\n M: 'bir ay',\n MM: '%d ay',\n y: 'bir yıl',\n yy: '%d yıl',\n },\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'Do':\n case 'DD':\n return number;\n default:\n if (number === 0) {\n // special case for zero\n return number + \"'ıncı\";\n }\n var a = number % 10,\n b = (number % 100) - a,\n c = number >= 100 ? 100 : null;\n return number + (suffixes[a] || suffixes[b] || suffixes[c]);\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return tr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Talossan [tzl]\n//! author : Robin van der Vliet : https://github.com/robin0van0der0v\n//! author : Iustì Canun\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n // After the year there should be a slash and the amount of years since December 26, 1979 in Roman numerals.\n // This is currently too difficult (maybe even impossible) to add.\n var tzl = moment.defineLocale('tzl', {\n months: 'Januar_Fevraglh_Març_Avrïu_Mai_Gün_Julia_Guscht_Setemvar_Listopäts_Noemvar_Zecemvar'.split(\n '_'\n ),\n monthsShort: 'Jan_Fev_Mar_Avr_Mai_Gün_Jul_Gus_Set_Lis_Noe_Zec'.split('_'),\n weekdays: 'Súladi_Lúneçi_Maitzi_Márcuri_Xhúadi_Viénerçi_Sáturi'.split('_'),\n weekdaysShort: 'Súl_Lún_Mai_Már_Xhú_Vié_Sát'.split('_'),\n weekdaysMin: 'Sú_Lú_Ma_Má_Xh_Vi_Sá'.split('_'),\n longDateFormat: {\n LT: 'HH.mm',\n LTS: 'HH.mm.ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM [dallas] YYYY',\n LLL: 'D. MMMM [dallas] YYYY HH.mm',\n LLLL: 'dddd, [li] D. MMMM [dallas] YYYY HH.mm',\n },\n meridiemParse: /d\\'o|d\\'a/i,\n isPM: function (input) {\n return \"d'o\" === input.toLowerCase();\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? \"d'o\" : \"D'O\";\n } else {\n return isLower ? \"d'a\" : \"D'A\";\n }\n },\n calendar: {\n sameDay: '[oxhi à] LT',\n nextDay: '[demà à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[ieiri à] LT',\n lastWeek: '[sür el] dddd [lasteu à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'osprei %s',\n past: 'ja%s',\n s: processRelativeTime,\n ss: processRelativeTime,\n m: processRelativeTime,\n mm: processRelativeTime,\n h: processRelativeTime,\n hh: processRelativeTime,\n d: processRelativeTime,\n dd: processRelativeTime,\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n s: ['viensas secunds', \"'iensas secunds\"],\n ss: [number + ' secunds', '' + number + ' secunds'],\n m: [\"'n míut\", \"'iens míut\"],\n mm: [number + ' míuts', '' + number + ' míuts'],\n h: [\"'n þora\", \"'iensa þora\"],\n hh: [number + ' þoras', '' + number + ' þoras'],\n d: [\"'n ziua\", \"'iensa ziua\"],\n dd: [number + ' ziuas', '' + number + ' ziuas'],\n M: [\"'n mes\", \"'iens mes\"],\n MM: [number + ' mesen', '' + number + ' mesen'],\n y: [\"'n ar\", \"'iens ar\"],\n yy: [number + ' ars', '' + number + ' ars'],\n };\n return isFuture\n ? format[key][0]\n : withoutSuffix\n ? format[key][0]\n : format[key][1];\n }\n\n return tzl;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight Latin [tzm-latn]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzmLatn = moment.defineLocale('tzm-latn', {\n months: 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n monthsShort:\n 'innayr_brˤayrˤ_marˤsˤ_ibrir_mayyw_ywnyw_ywlywz_ɣwšt_šwtanbir_ktˤwbrˤ_nwwanbir_dwjnbir'.split(\n '_'\n ),\n weekdays: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysShort: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n weekdaysMin: 'asamas_aynas_asinas_akras_akwas_asimwas_asiḍyas'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[asdkh g] LT',\n nextDay: '[aska g] LT',\n nextWeek: 'dddd [g] LT',\n lastDay: '[assant g] LT',\n lastWeek: 'dddd [g] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dadkh s yan %s',\n past: 'yan %s',\n s: 'imik',\n ss: '%d imik',\n m: 'minuḍ',\n mm: '%d minuḍ',\n h: 'saɛa',\n hh: '%d tassaɛin',\n d: 'ass',\n dd: '%d ossan',\n M: 'ayowr',\n MM: '%d iyyirn',\n y: 'asgas',\n yy: '%d isgasn',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzmLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Central Atlas Tamazight [tzm]\n//! author : Abdel Said : https://github.com/abdelsaid\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var tzm = moment.defineLocale('tzm', {\n months: 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n monthsShort:\n 'ⵉⵏⵏⴰⵢⵔ_ⴱⵕⴰⵢⵕ_ⵎⴰⵕⵚ_ⵉⴱⵔⵉⵔ_ⵎⴰⵢⵢⵓ_ⵢⵓⵏⵢⵓ_ⵢⵓⵍⵢⵓⵣ_ⵖⵓⵛⵜ_ⵛⵓⵜⴰⵏⴱⵉⵔ_ⴽⵟⵓⴱⵕ_ⵏⵓⵡⴰⵏⴱⵉⵔ_ⴷⵓⵊⵏⴱⵉⵔ'.split(\n '_'\n ),\n weekdays: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysShort: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n weekdaysMin: 'ⴰⵙⴰⵎⴰⵙ_ⴰⵢⵏⴰⵙ_ⴰⵙⵉⵏⴰⵙ_ⴰⴽⵔⴰⵙ_ⴰⴽⵡⴰⵙ_ⴰⵙⵉⵎⵡⴰⵙ_ⴰⵙⵉⴹⵢⴰⵙ'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[ⴰⵙⴷⵅ ⴴ] LT',\n nextDay: '[ⴰⵙⴽⴰ ⴴ] LT',\n nextWeek: 'dddd [ⴴ] LT',\n lastDay: '[ⴰⵚⴰⵏⵜ ⴴ] LT',\n lastWeek: 'dddd [ⴴ] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ⴷⴰⴷⵅ ⵙ ⵢⴰⵏ %s',\n past: 'ⵢⴰⵏ %s',\n s: 'ⵉⵎⵉⴽ',\n ss: '%d ⵉⵎⵉⴽ',\n m: 'ⵎⵉⵏⵓⴺ',\n mm: '%d ⵎⵉⵏⵓⴺ',\n h: 'ⵙⴰⵄⴰ',\n hh: '%d ⵜⴰⵙⵙⴰⵄⵉⵏ',\n d: 'ⴰⵙⵙ',\n dd: '%d oⵙⵙⴰⵏ',\n M: 'ⴰⵢoⵓⵔ',\n MM: '%d ⵉⵢⵢⵉⵔⵏ',\n y: 'ⴰⵙⴳⴰⵙ',\n yy: '%d ⵉⵙⴳⴰⵙⵏ',\n },\n week: {\n dow: 6, // Saturday is the first day of the week.\n doy: 12, // The week that contains Jan 12th is the first week of the year.\n },\n });\n\n return tzm;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uyghur (China) [ug-cn]\n//! author: boyaq : https://github.com/boyaq\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var ugCn = moment.defineLocale('ug-cn', {\n months: 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n monthsShort:\n 'يانۋار_فېۋرال_مارت_ئاپرېل_ماي_ئىيۇن_ئىيۇل_ئاۋغۇست_سېنتەبىر_ئۆكتەبىر_نويابىر_دېكابىر'.split(\n '_'\n ),\n weekdays: 'يەكشەنبە_دۈشەنبە_سەيشەنبە_چارشەنبە_پەيشەنبە_جۈمە_شەنبە'.split(\n '_'\n ),\n weekdaysShort: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n weekdaysMin: 'يە_دۈ_سە_چا_پە_جۈ_شە'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY-MM-DD',\n LL: 'YYYY-يىلىM-ئاينىڭD-كۈنى',\n LLL: 'YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n LLLL: 'dddd، YYYY-يىلىM-ئاينىڭD-كۈنى، HH:mm',\n },\n meridiemParse: /يېرىم كېچە|سەھەر|چۈشتىن بۇرۇن|چۈش|چۈشتىن كېيىن|كەچ/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (\n meridiem === 'يېرىم كېچە' ||\n meridiem === 'سەھەر' ||\n meridiem === 'چۈشتىن بۇرۇن'\n ) {\n return hour;\n } else if (meridiem === 'چۈشتىن كېيىن' || meridiem === 'كەچ') {\n return hour + 12;\n } else {\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return 'يېرىم كېچە';\n } else if (hm < 900) {\n return 'سەھەر';\n } else if (hm < 1130) {\n return 'چۈشتىن بۇرۇن';\n } else if (hm < 1230) {\n return 'چۈش';\n } else if (hm < 1800) {\n return 'چۈشتىن كېيىن';\n } else {\n return 'كەچ';\n }\n },\n calendar: {\n sameDay: '[بۈگۈن سائەت] LT',\n nextDay: '[ئەتە سائەت] LT',\n nextWeek: '[كېلەركى] dddd [سائەت] LT',\n lastDay: '[تۆنۈگۈن] LT',\n lastWeek: '[ئالدىنقى] dddd [سائەت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s كېيىن',\n past: '%s بۇرۇن',\n s: 'نەچچە سېكونت',\n ss: '%d سېكونت',\n m: 'بىر مىنۇت',\n mm: '%d مىنۇت',\n h: 'بىر سائەت',\n hh: '%d سائەت',\n d: 'بىر كۈن',\n dd: '%d كۈن',\n M: 'بىر ئاي',\n MM: '%d ئاي',\n y: 'بىر يىل',\n yy: '%d يىل',\n },\n\n dayOfMonthOrdinalParse: /\\d{1,2}(-كۈنى|-ئاي|-ھەپتە)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '-كۈنى';\n case 'w':\n case 'W':\n return number + '-ھەپتە';\n default:\n return number;\n }\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 1st is the first week of the year.\n },\n });\n\n return ugCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Ukrainian [uk]\n//! author : zemlanin : https://github.com/zemlanin\n//! Author : Menelion Elensúle : https://github.com/Oire\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function plural(word, num) {\n var forms = word.split('_');\n return num % 10 === 1 && num % 100 !== 11\n ? forms[0]\n : num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20)\n ? forms[1]\n : forms[2];\n }\n function relativeTimeWithPlural(number, withoutSuffix, key) {\n var format = {\n ss: withoutSuffix ? 'секунда_секунди_секунд' : 'секунду_секунди_секунд',\n mm: withoutSuffix ? 'хвилина_хвилини_хвилин' : 'хвилину_хвилини_хвилин',\n hh: withoutSuffix ? 'година_години_годин' : 'годину_години_годин',\n dd: 'день_дні_днів',\n MM: 'місяць_місяці_місяців',\n yy: 'рік_роки_років',\n };\n if (key === 'm') {\n return withoutSuffix ? 'хвилина' : 'хвилину';\n } else if (key === 'h') {\n return withoutSuffix ? 'година' : 'годину';\n } else {\n return number + ' ' + plural(format[key], +number);\n }\n }\n function weekdaysCaseReplace(m, format) {\n var weekdays = {\n nominative:\n 'неділя_понеділок_вівторок_середа_четвер_п’ятниця_субота'.split(\n '_'\n ),\n accusative:\n 'неділю_понеділок_вівторок_середу_четвер_п’ятницю_суботу'.split(\n '_'\n ),\n genitive:\n 'неділі_понеділка_вівторка_середи_четверга_п’ятниці_суботи'.split(\n '_'\n ),\n },\n nounCase;\n\n if (m === true) {\n return weekdays['nominative']\n .slice(1, 7)\n .concat(weekdays['nominative'].slice(0, 1));\n }\n if (!m) {\n return weekdays['nominative'];\n }\n\n nounCase = /(\\[[ВвУу]\\]) ?dddd/.test(format)\n ? 'accusative'\n : /\\[?(?:минулої|наступної)? ?\\] ?dddd/.test(format)\n ? 'genitive'\n : 'nominative';\n return weekdays[nounCase][m.day()];\n }\n function processHoursFunction(str) {\n return function () {\n return str + 'о' + (this.hours() === 11 ? 'б' : '') + '] LT';\n };\n }\n\n var uk = moment.defineLocale('uk', {\n months: {\n format: 'січня_лютого_березня_квітня_травня_червня_липня_серпня_вересня_жовтня_листопада_грудня'.split(\n '_'\n ),\n standalone:\n 'січень_лютий_березень_квітень_травень_червень_липень_серпень_вересень_жовтень_листопад_грудень'.split(\n '_'\n ),\n },\n monthsShort: 'січ_лют_бер_квіт_трав_черв_лип_серп_вер_жовт_лист_груд'.split(\n '_'\n ),\n weekdays: weekdaysCaseReplace,\n weekdaysShort: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n weekdaysMin: 'нд_пн_вт_ср_чт_пт_сб'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D MMMM YYYY р.',\n LLL: 'D MMMM YYYY р., HH:mm',\n LLLL: 'dddd, D MMMM YYYY р., HH:mm',\n },\n calendar: {\n sameDay: processHoursFunction('[Сьогодні '),\n nextDay: processHoursFunction('[Завтра '),\n lastDay: processHoursFunction('[Вчора '),\n nextWeek: processHoursFunction('[У] dddd ['),\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n case 3:\n case 5:\n case 6:\n return processHoursFunction('[Минулої] dddd [').call(this);\n case 1:\n case 2:\n case 4:\n return processHoursFunction('[Минулого] dddd [').call(this);\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'за %s',\n past: '%s тому',\n s: 'декілька секунд',\n ss: relativeTimeWithPlural,\n m: relativeTimeWithPlural,\n mm: relativeTimeWithPlural,\n h: 'годину',\n hh: relativeTimeWithPlural,\n d: 'день',\n dd: relativeTimeWithPlural,\n M: 'місяць',\n MM: relativeTimeWithPlural,\n y: 'рік',\n yy: relativeTimeWithPlural,\n },\n // M. E.: those two are virtually unused but a user might want to implement them for his/her website for some reason\n meridiemParse: /ночі|ранку|дня|вечора/,\n isPM: function (input) {\n return /^(дня|вечора)$/.test(input);\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 4) {\n return 'ночі';\n } else if (hour < 12) {\n return 'ранку';\n } else if (hour < 17) {\n return 'дня';\n } else {\n return 'вечора';\n }\n },\n dayOfMonthOrdinalParse: /\\d{1,2}-(й|го)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'M':\n case 'd':\n case 'DDD':\n case 'w':\n case 'W':\n return number + '-й';\n case 'D':\n return number + '-го';\n default:\n return number;\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Urdu [ur]\n//! author : Sawood Alam : https://github.com/ibnesayeed\n//! author : Zack : https://github.com/ZackVision\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var months = [\n 'جنوری',\n 'فروری',\n 'مارچ',\n 'اپریل',\n 'مئی',\n 'جون',\n 'جولائی',\n 'اگست',\n 'ستمبر',\n 'اکتوبر',\n 'نومبر',\n 'دسمبر',\n ],\n days = ['اتوار', 'پیر', 'منگل', 'بدھ', 'جمعرات', 'جمعہ', 'ہفتہ'];\n\n var ur = moment.defineLocale('ur', {\n months: months,\n monthsShort: months,\n weekdays: days,\n weekdaysShort: days,\n weekdaysMin: days,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd، D MMMM YYYY HH:mm',\n },\n meridiemParse: /صبح|شام/,\n isPM: function (input) {\n return 'شام' === input;\n },\n meridiem: function (hour, minute, isLower) {\n if (hour < 12) {\n return 'صبح';\n }\n return 'شام';\n },\n calendar: {\n sameDay: '[آج بوقت] LT',\n nextDay: '[کل بوقت] LT',\n nextWeek: 'dddd [بوقت] LT',\n lastDay: '[گذشتہ روز بوقت] LT',\n lastWeek: '[گذشتہ] dddd [بوقت] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s بعد',\n past: '%s قبل',\n s: 'چند سیکنڈ',\n ss: '%d سیکنڈ',\n m: 'ایک منٹ',\n mm: '%d منٹ',\n h: 'ایک گھنٹہ',\n hh: '%d گھنٹے',\n d: 'ایک دن',\n dd: '%d دن',\n M: 'ایک ماہ',\n MM: '%d ماہ',\n y: 'ایک سال',\n yy: '%d سال',\n },\n preparse: function (string) {\n return string.replace(/،/g, ',');\n },\n postformat: function (string) {\n return string.replace(/,/g, '،');\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return ur;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek Latin [uz-latn]\n//! author : Rasulbek Mirzayev : github.com/Rasulbeeek\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uzLatn = moment.defineLocale('uz-latn', {\n months: 'Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr'.split(\n '_'\n ),\n monthsShort: 'Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek'.split('_'),\n weekdays:\n 'Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba'.split(\n '_'\n ),\n weekdaysShort: 'Yak_Dush_Sesh_Chor_Pay_Jum_Shan'.split('_'),\n weekdaysMin: 'Ya_Du_Se_Cho_Pa_Ju_Sha'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Bugun soat] LT [da]',\n nextDay: '[Ertaga] LT [da]',\n nextWeek: 'dddd [kuni soat] LT [da]',\n lastDay: '[Kecha soat] LT [da]',\n lastWeek: \"[O'tgan] dddd [kuni soat] LT [da]\",\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Yaqin %s ichida',\n past: 'Bir necha %s oldin',\n s: 'soniya',\n ss: '%d soniya',\n m: 'bir daqiqa',\n mm: '%d daqiqa',\n h: 'bir soat',\n hh: '%d soat',\n d: 'bir kun',\n dd: '%d kun',\n M: 'bir oy',\n MM: '%d oy',\n y: 'bir yil',\n yy: '%d yil',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 7th is the first week of the year.\n },\n });\n\n return uzLatn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Uzbek [uz]\n//! author : Sardor Muminov : https://github.com/muminoff\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var uz = moment.defineLocale('uz', {\n months: 'январ_феврал_март_апрел_май_июн_июл_август_сентябр_октябр_ноябр_декабр'.split(\n '_'\n ),\n monthsShort: 'янв_фев_мар_апр_май_июн_июл_авг_сен_окт_ноя_дек'.split('_'),\n weekdays: 'Якшанба_Душанба_Сешанба_Чоршанба_Пайшанба_Жума_Шанба'.split('_'),\n weekdaysShort: 'Якш_Душ_Сеш_Чор_Пай_Жум_Шан'.split('_'),\n weekdaysMin: 'Як_Ду_Се_Чо_Па_Жу_Ша'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'D MMMM YYYY, dddd HH:mm',\n },\n calendar: {\n sameDay: '[Бугун соат] LT [да]',\n nextDay: '[Эртага] LT [да]',\n nextWeek: 'dddd [куни соат] LT [да]',\n lastDay: '[Кеча соат] LT [да]',\n lastWeek: '[Утган] dddd [куни соат] LT [да]',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'Якин %s ичида',\n past: 'Бир неча %s олдин',\n s: 'фурсат',\n ss: '%d фурсат',\n m: 'бир дакика',\n mm: '%d дакика',\n h: 'бир соат',\n hh: '%d соат',\n d: 'бир кун',\n dd: '%d кун',\n M: 'бир ой',\n MM: '%d ой',\n y: 'бир йил',\n yy: '%d йил',\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 7, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return uz;\n\n})));\n","//! moment.js locale configuration\n//! locale : Vietnamese [vi]\n//! author : Bang Nguyen : https://github.com/bangnk\n//! author : Chien Kira : https://github.com/chienkira\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var vi = moment.defineLocale('vi', {\n months: 'tháng 1_tháng 2_tháng 3_tháng 4_tháng 5_tháng 6_tháng 7_tháng 8_tháng 9_tháng 10_tháng 11_tháng 12'.split(\n '_'\n ),\n monthsShort:\n 'Thg 01_Thg 02_Thg 03_Thg 04_Thg 05_Thg 06_Thg 07_Thg 08_Thg 09_Thg 10_Thg 11_Thg 12'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays: 'chủ nhật_thứ hai_thứ ba_thứ tư_thứ năm_thứ sáu_thứ bảy'.split(\n '_'\n ),\n weekdaysShort: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysMin: 'CN_T2_T3_T4_T5_T6_T7'.split('_'),\n weekdaysParseExact: true,\n meridiemParse: /sa|ch/i,\n isPM: function (input) {\n return /^ch$/i.test(input);\n },\n meridiem: function (hours, minutes, isLower) {\n if (hours < 12) {\n return isLower ? 'sa' : 'SA';\n } else {\n return isLower ? 'ch' : 'CH';\n }\n },\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM [năm] YYYY',\n LLL: 'D MMMM [năm] YYYY HH:mm',\n LLLL: 'dddd, D MMMM [năm] YYYY HH:mm',\n l: 'DD/M/YYYY',\n ll: 'D MMM YYYY',\n lll: 'D MMM YYYY HH:mm',\n llll: 'ddd, D MMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Hôm nay lúc] LT',\n nextDay: '[Ngày mai lúc] LT',\n nextWeek: 'dddd [tuần tới lúc] LT',\n lastDay: '[Hôm qua lúc] LT',\n lastWeek: 'dddd [tuần trước lúc] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: '%s tới',\n past: '%s trước',\n s: 'vài giây',\n ss: '%d giây',\n m: 'một phút',\n mm: '%d phút',\n h: 'một giờ',\n hh: '%d giờ',\n d: 'một ngày',\n dd: '%d ngày',\n w: 'một tuần',\n ww: '%d tuần',\n M: 'một tháng',\n MM: '%d tháng',\n y: 'một năm',\n yy: '%d năm',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}/,\n ordinal: function (number) {\n return number;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return vi;\n\n})));\n","//! moment.js locale configuration\n//! locale : Pseudo [x-pseudo]\n//! author : Andrew Hood : https://github.com/andrewhood125\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var xPseudo = moment.defineLocale('x-pseudo', {\n months: 'J~áñúá~rý_F~ébrú~árý_~Márc~h_Áp~ríl_~Máý_~Júñé~_Júl~ý_Áú~gúst~_Sép~témb~ér_Ó~ctób~ér_Ñ~óvém~bér_~Décé~mbér'.split(\n '_'\n ),\n monthsShort:\n 'J~áñ_~Féb_~Már_~Ápr_~Máý_~Júñ_~Júl_~Áúg_~Sép_~Óct_~Ñóv_~Déc'.split(\n '_'\n ),\n monthsParseExact: true,\n weekdays:\n 'S~úñdá~ý_Mó~ñdáý~_Túé~sdáý~_Wéd~ñésd~áý_T~húrs~dáý_~Fríd~áý_S~átúr~dáý'.split(\n '_'\n ),\n weekdaysShort: 'S~úñ_~Móñ_~Túé_~Wéd_~Thú_~Frí_~Sát'.split('_'),\n weekdaysMin: 'S~ú_Mó~_Tú_~Wé_T~h_Fr~_Sá'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd, D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[T~ódá~ý át] LT',\n nextDay: '[T~ómó~rró~w át] LT',\n nextWeek: 'dddd [át] LT',\n lastDay: '[Ý~ést~érdá~ý át] LT',\n lastWeek: '[L~ást] dddd [át] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'í~ñ %s',\n past: '%s á~gó',\n s: 'á ~féw ~sécó~ñds',\n ss: '%d s~écóñ~ds',\n m: 'á ~míñ~úté',\n mm: '%d m~íñú~tés',\n h: 'á~ñ hó~úr',\n hh: '%d h~óúrs',\n d: 'á ~dáý',\n dd: '%d d~áýs',\n M: 'á ~móñ~th',\n MM: '%d m~óñt~hs',\n y: 'á ~ýéár',\n yy: '%d ý~éárs',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n ~~((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return xPseudo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Yoruba Nigeria [yo]\n//! author : Atolagbe Abisoye : https://github.com/andela-batolagbe\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var yo = moment.defineLocale('yo', {\n months: 'Sẹ́rẹ́_Èrèlè_Ẹrẹ̀nà_Ìgbé_Èbibi_Òkùdu_Agẹmo_Ògún_Owewe_Ọ̀wàrà_Bélú_Ọ̀pẹ̀̀'.split(\n '_'\n ),\n monthsShort: 'Sẹ́r_Èrl_Ẹrn_Ìgb_Èbi_Òkù_Agẹ_Ògú_Owe_Ọ̀wà_Bél_Ọ̀pẹ̀̀'.split('_'),\n weekdays: 'Àìkú_Ajé_Ìsẹ́gun_Ọjọ́rú_Ọjọ́bọ_Ẹtì_Àbámẹ́ta'.split('_'),\n weekdaysShort: 'Àìk_Ajé_Ìsẹ́_Ọjr_Ọjb_Ẹtì_Àbá'.split('_'),\n weekdaysMin: 'Àì_Aj_Ìs_Ọr_Ọb_Ẹt_Àb'.split('_'),\n longDateFormat: {\n LT: 'h:mm A',\n LTS: 'h:mm:ss A',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY h:mm A',\n LLLL: 'dddd, D MMMM YYYY h:mm A',\n },\n calendar: {\n sameDay: '[Ònì ni] LT',\n nextDay: '[Ọ̀la ni] LT',\n nextWeek: \"dddd [Ọsẹ̀ tón'bọ] [ni] LT\",\n lastDay: '[Àna ni] LT',\n lastWeek: 'dddd [Ọsẹ̀ tólọ́] [ni] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'ní %s',\n past: '%s kọjá',\n s: 'ìsẹjú aayá die',\n ss: 'aayá %d',\n m: 'ìsẹjú kan',\n mm: 'ìsẹjú %d',\n h: 'wákati kan',\n hh: 'wákati %d',\n d: 'ọjọ́ kan',\n dd: 'ọjọ́ %d',\n M: 'osù kan',\n MM: 'osù %d',\n y: 'ọdún kan',\n yy: 'ọdún %d',\n },\n dayOfMonthOrdinalParse: /ọjọ́\\s\\d{1,2}/,\n ordinal: 'ọjọ́ %d',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return yo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (China) [zh-cn]\n//! author : suupic : https://github.com/suupic\n//! author : Zeno Zeng : https://github.com/zenozeng\n//! author : uu109 : https://github.com/uu109\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhCn = moment.defineLocale('zh-cn', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日Ah点mm分',\n LLLL: 'YYYY年M月D日ddddAh点mm分',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n } else {\n // '中午'\n return hour >= 11 ? hour : hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: function (now) {\n if (now.week() !== this.week()) {\n return '[下]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n lastDay: '[昨天]LT',\n lastWeek: function (now) {\n if (this.week() !== now.week()) {\n return '[上]dddLT';\n } else {\n return '[本]dddLT';\n }\n },\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|周)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '周';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s后',\n past: '%s前',\n s: '几秒',\n ss: '%d 秒',\n m: '1 分钟',\n mm: '%d 分钟',\n h: '1 小时',\n hh: '%d 小时',\n d: '1 天',\n dd: '%d 天',\n w: '1 周',\n ww: '%d 周',\n M: '1 个月',\n MM: '%d 个月',\n y: '1 年',\n yy: '%d 年',\n },\n week: {\n // GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return zhCn;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Hong Kong) [zh-hk]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Konstantin : https://github.com/skfd\n//! author : Anthony : https://github.com/anthonylau\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhHk = moment.defineLocale('zh-hk', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1200) {\n return '上午';\n } else if (hm === 1200) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天]LT',\n nextDay: '[明天]LT',\n nextWeek: '[下]ddddLT',\n lastDay: '[昨天]LT',\n lastWeek: '[上]ddddLT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhHk;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Macau) [zh-mo]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n//! author : Tan Yuanhong : https://github.com/le0tan\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhMo = moment.defineLocale('zh-mo', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'D/M/YYYY',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s內',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhMo;\n\n})));\n","//! moment.js locale configuration\n//! locale : Chinese (Taiwan) [zh-tw]\n//! author : Ben : https://github.com/ben-lin\n//! author : Chris Lam : https://github.com/hehachris\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var zhTw = moment.defineLocale('zh-tw', {\n months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split(\n '_'\n ),\n monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split(\n '_'\n ),\n weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),\n weekdaysShort: '週日_週一_週二_週三_週四_週五_週六'.split('_'),\n weekdaysMin: '日_一_二_三_四_五_六'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'YYYY/MM/DD',\n LL: 'YYYY年M月D日',\n LLL: 'YYYY年M月D日 HH:mm',\n LLLL: 'YYYY年M月D日dddd HH:mm',\n l: 'YYYY/M/D',\n ll: 'YYYY年M月D日',\n lll: 'YYYY年M月D日 HH:mm',\n llll: 'YYYY年M月D日dddd HH:mm',\n },\n meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,\n meridiemHour: function (hour, meridiem) {\n if (hour === 12) {\n hour = 0;\n }\n if (meridiem === '凌晨' || meridiem === '早上' || meridiem === '上午') {\n return hour;\n } else if (meridiem === '中午') {\n return hour >= 11 ? hour : hour + 12;\n } else if (meridiem === '下午' || meridiem === '晚上') {\n return hour + 12;\n }\n },\n meridiem: function (hour, minute, isLower) {\n var hm = hour * 100 + minute;\n if (hm < 600) {\n return '凌晨';\n } else if (hm < 900) {\n return '早上';\n } else if (hm < 1130) {\n return '上午';\n } else if (hm < 1230) {\n return '中午';\n } else if (hm < 1800) {\n return '下午';\n } else {\n return '晚上';\n }\n },\n calendar: {\n sameDay: '[今天] LT',\n nextDay: '[明天] LT',\n nextWeek: '[下]dddd LT',\n lastDay: '[昨天] LT',\n lastWeek: '[上]dddd LT',\n sameElse: 'L',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(日|月|週)/,\n ordinal: function (number, period) {\n switch (period) {\n case 'd':\n case 'D':\n case 'DDD':\n return number + '日';\n case 'M':\n return number + '月';\n case 'w':\n case 'W':\n return number + '週';\n default:\n return number;\n }\n },\n relativeTime: {\n future: '%s後',\n past: '%s前',\n s: '幾秒',\n ss: '%d 秒',\n m: '1 分鐘',\n mm: '%d 分鐘',\n h: '1 小時',\n hh: '%d 小時',\n d: '1 天',\n dd: '%d 天',\n M: '1 個月',\n MM: '%d 個月',\n y: '1 年',\n yy: '%d 年',\n },\n });\n\n return zhTw;\n\n})));\n","var map = {\n\t\"./af\": \"../node_modules/moment/locale/af.js\",\n\t\"./af.js\": \"../node_modules/moment/locale/af.js\",\n\t\"./ar\": \"../node_modules/moment/locale/ar.js\",\n\t\"./ar-dz\": \"../node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-dz.js\": \"../node_modules/moment/locale/ar-dz.js\",\n\t\"./ar-kw\": \"../node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-kw.js\": \"../node_modules/moment/locale/ar-kw.js\",\n\t\"./ar-ly\": \"../node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ly.js\": \"../node_modules/moment/locale/ar-ly.js\",\n\t\"./ar-ma\": \"../node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-ma.js\": \"../node_modules/moment/locale/ar-ma.js\",\n\t\"./ar-sa\": \"../node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-sa.js\": \"../node_modules/moment/locale/ar-sa.js\",\n\t\"./ar-tn\": \"../node_modules/moment/locale/ar-tn.js\",\n\t\"./ar-tn.js\": \"../node_modules/moment/locale/ar-tn.js\",\n\t\"./ar.js\": \"../node_modules/moment/locale/ar.js\",\n\t\"./az\": \"../node_modules/moment/locale/az.js\",\n\t\"./az.js\": \"../node_modules/moment/locale/az.js\",\n\t\"./be\": \"../node_modules/moment/locale/be.js\",\n\t\"./be.js\": \"../node_modules/moment/locale/be.js\",\n\t\"./bg\": \"../node_modules/moment/locale/bg.js\",\n\t\"./bg.js\": \"../node_modules/moment/locale/bg.js\",\n\t\"./bm\": \"../node_modules/moment/locale/bm.js\",\n\t\"./bm.js\": \"../node_modules/moment/locale/bm.js\",\n\t\"./bn\": \"../node_modules/moment/locale/bn.js\",\n\t\"./bn-bd\": \"../node_modules/moment/locale/bn-bd.js\",\n\t\"./bn-bd.js\": \"../node_modules/moment/locale/bn-bd.js\",\n\t\"./bn.js\": \"../node_modules/moment/locale/bn.js\",\n\t\"./bo\": \"../node_modules/moment/locale/bo.js\",\n\t\"./bo.js\": \"../node_modules/moment/locale/bo.js\",\n\t\"./br\": \"../node_modules/moment/locale/br.js\",\n\t\"./br.js\": \"../node_modules/moment/locale/br.js\",\n\t\"./bs\": \"../node_modules/moment/locale/bs.js\",\n\t\"./bs.js\": \"../node_modules/moment/locale/bs.js\",\n\t\"./ca\": \"../node_modules/moment/locale/ca.js\",\n\t\"./ca.js\": \"../node_modules/moment/locale/ca.js\",\n\t\"./cs\": \"../node_modules/moment/locale/cs.js\",\n\t\"./cs.js\": \"../node_modules/moment/locale/cs.js\",\n\t\"./cv\": \"../node_modules/moment/locale/cv.js\",\n\t\"./cv.js\": \"../node_modules/moment/locale/cv.js\",\n\t\"./cy\": \"../node_modules/moment/locale/cy.js\",\n\t\"./cy.js\": \"../node_modules/moment/locale/cy.js\",\n\t\"./da\": \"../node_modules/moment/locale/da.js\",\n\t\"./da.js\": \"../node_modules/moment/locale/da.js\",\n\t\"./de\": \"../node_modules/moment/locale/de.js\",\n\t\"./de-at\": \"../node_modules/moment/locale/de-at.js\",\n\t\"./de-at.js\": \"../node_modules/moment/locale/de-at.js\",\n\t\"./de-ch\": \"../node_modules/moment/locale/de-ch.js\",\n\t\"./de-ch.js\": \"../node_modules/moment/locale/de-ch.js\",\n\t\"./de.js\": \"../node_modules/moment/locale/de.js\",\n\t\"./dv\": \"../node_modules/moment/locale/dv.js\",\n\t\"./dv.js\": \"../node_modules/moment/locale/dv.js\",\n\t\"./el\": \"../node_modules/moment/locale/el.js\",\n\t\"./el.js\": \"../node_modules/moment/locale/el.js\",\n\t\"./en-au\": \"../node_modules/moment/locale/en-au.js\",\n\t\"./en-au.js\": \"../node_modules/moment/locale/en-au.js\",\n\t\"./en-ca\": \"../node_modules/moment/locale/en-ca.js\",\n\t\"./en-ca.js\": \"../node_modules/moment/locale/en-ca.js\",\n\t\"./en-gb\": \"../node_modules/moment/locale/en-gb.js\",\n\t\"./en-gb.js\": \"../node_modules/moment/locale/en-gb.js\",\n\t\"./en-ie\": \"../node_modules/moment/locale/en-ie.js\",\n\t\"./en-ie.js\": \"../node_modules/moment/locale/en-ie.js\",\n\t\"./en-il\": \"../node_modules/moment/locale/en-il.js\",\n\t\"./en-il.js\": \"../node_modules/moment/locale/en-il.js\",\n\t\"./en-in\": \"../node_modules/moment/locale/en-in.js\",\n\t\"./en-in.js\": \"../node_modules/moment/locale/en-in.js\",\n\t\"./en-nz\": \"../node_modules/moment/locale/en-nz.js\",\n\t\"./en-nz.js\": \"../node_modules/moment/locale/en-nz.js\",\n\t\"./en-sg\": \"../node_modules/moment/locale/en-sg.js\",\n\t\"./en-sg.js\": \"../node_modules/moment/locale/en-sg.js\",\n\t\"./eo\": \"../node_modules/moment/locale/eo.js\",\n\t\"./eo.js\": \"../node_modules/moment/locale/eo.js\",\n\t\"./es\": \"../node_modules/moment/locale/es.js\",\n\t\"./es-do\": \"../node_modules/moment/locale/es-do.js\",\n\t\"./es-do.js\": \"../node_modules/moment/locale/es-do.js\",\n\t\"./es-mx\": \"../node_modules/moment/locale/es-mx.js\",\n\t\"./es-mx.js\": \"../node_modules/moment/locale/es-mx.js\",\n\t\"./es-us\": \"../node_modules/moment/locale/es-us.js\",\n\t\"./es-us.js\": \"../node_modules/moment/locale/es-us.js\",\n\t\"./es.js\": \"../node_modules/moment/locale/es.js\",\n\t\"./et\": \"../node_modules/moment/locale/et.js\",\n\t\"./et.js\": \"../node_modules/moment/locale/et.js\",\n\t\"./eu\": \"../node_modules/moment/locale/eu.js\",\n\t\"./eu.js\": \"../node_modules/moment/locale/eu.js\",\n\t\"./fa\": \"../node_modules/moment/locale/fa.js\",\n\t\"./fa.js\": \"../node_modules/moment/locale/fa.js\",\n\t\"./fi\": \"../node_modules/moment/locale/fi.js\",\n\t\"./fi.js\": \"../node_modules/moment/locale/fi.js\",\n\t\"./fil\": \"../node_modules/moment/locale/fil.js\",\n\t\"./fil.js\": \"../node_modules/moment/locale/fil.js\",\n\t\"./fo\": \"../node_modules/moment/locale/fo.js\",\n\t\"./fo.js\": \"../node_modules/moment/locale/fo.js\",\n\t\"./fr\": \"../node_modules/moment/locale/fr.js\",\n\t\"./fr-ca\": \"../node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ca.js\": \"../node_modules/moment/locale/fr-ca.js\",\n\t\"./fr-ch\": \"../node_modules/moment/locale/fr-ch.js\",\n\t\"./fr-ch.js\": \"../node_modules/moment/locale/fr-ch.js\",\n\t\"./fr.js\": \"../node_modules/moment/locale/fr.js\",\n\t\"./fy\": \"../node_modules/moment/locale/fy.js\",\n\t\"./fy.js\": \"../node_modules/moment/locale/fy.js\",\n\t\"./ga\": \"../node_modules/moment/locale/ga.js\",\n\t\"./ga.js\": \"../node_modules/moment/locale/ga.js\",\n\t\"./gd\": \"../node_modules/moment/locale/gd.js\",\n\t\"./gd.js\": \"../node_modules/moment/locale/gd.js\",\n\t\"./gl\": \"../node_modules/moment/locale/gl.js\",\n\t\"./gl.js\": \"../node_modules/moment/locale/gl.js\",\n\t\"./gom-deva\": \"../node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-deva.js\": \"../node_modules/moment/locale/gom-deva.js\",\n\t\"./gom-latn\": \"../node_modules/moment/locale/gom-latn.js\",\n\t\"./gom-latn.js\": \"../node_modules/moment/locale/gom-latn.js\",\n\t\"./gu\": \"../node_modules/moment/locale/gu.js\",\n\t\"./gu.js\": \"../node_modules/moment/locale/gu.js\",\n\t\"./he\": \"../node_modules/moment/locale/he.js\",\n\t\"./he.js\": \"../node_modules/moment/locale/he.js\",\n\t\"./hi\": \"../node_modules/moment/locale/hi.js\",\n\t\"./hi.js\": \"../node_modules/moment/locale/hi.js\",\n\t\"./hr\": \"../node_modules/moment/locale/hr.js\",\n\t\"./hr.js\": \"../node_modules/moment/locale/hr.js\",\n\t\"./hu\": \"../node_modules/moment/locale/hu.js\",\n\t\"./hu.js\": \"../node_modules/moment/locale/hu.js\",\n\t\"./hy-am\": \"../node_modules/moment/locale/hy-am.js\",\n\t\"./hy-am.js\": \"../node_modules/moment/locale/hy-am.js\",\n\t\"./id\": \"../node_modules/moment/locale/id.js\",\n\t\"./id.js\": \"../node_modules/moment/locale/id.js\",\n\t\"./is\": \"../node_modules/moment/locale/is.js\",\n\t\"./is.js\": \"../node_modules/moment/locale/is.js\",\n\t\"./it\": \"../node_modules/moment/locale/it.js\",\n\t\"./it-ch\": \"../node_modules/moment/locale/it-ch.js\",\n\t\"./it-ch.js\": \"../node_modules/moment/locale/it-ch.js\",\n\t\"./it.js\": \"../node_modules/moment/locale/it.js\",\n\t\"./ja\": \"../node_modules/moment/locale/ja.js\",\n\t\"./ja.js\": \"../node_modules/moment/locale/ja.js\",\n\t\"./jv\": \"../node_modules/moment/locale/jv.js\",\n\t\"./jv.js\": \"../node_modules/moment/locale/jv.js\",\n\t\"./ka\": \"../node_modules/moment/locale/ka.js\",\n\t\"./ka.js\": \"../node_modules/moment/locale/ka.js\",\n\t\"./kk\": \"../node_modules/moment/locale/kk.js\",\n\t\"./kk.js\": \"../node_modules/moment/locale/kk.js\",\n\t\"./km\": \"../node_modules/moment/locale/km.js\",\n\t\"./km.js\": \"../node_modules/moment/locale/km.js\",\n\t\"./kn\": \"../node_modules/moment/locale/kn.js\",\n\t\"./kn.js\": \"../node_modules/moment/locale/kn.js\",\n\t\"./ko\": \"../node_modules/moment/locale/ko.js\",\n\t\"./ko.js\": \"../node_modules/moment/locale/ko.js\",\n\t\"./ku\": \"../node_modules/moment/locale/ku.js\",\n\t\"./ku.js\": \"../node_modules/moment/locale/ku.js\",\n\t\"./ky\": \"../node_modules/moment/locale/ky.js\",\n\t\"./ky.js\": \"../node_modules/moment/locale/ky.js\",\n\t\"./lb\": \"../node_modules/moment/locale/lb.js\",\n\t\"./lb.js\": \"../node_modules/moment/locale/lb.js\",\n\t\"./lo\": \"../node_modules/moment/locale/lo.js\",\n\t\"./lo.js\": \"../node_modules/moment/locale/lo.js\",\n\t\"./lt\": \"../node_modules/moment/locale/lt.js\",\n\t\"./lt.js\": \"../node_modules/moment/locale/lt.js\",\n\t\"./lv\": \"../node_modules/moment/locale/lv.js\",\n\t\"./lv.js\": \"../node_modules/moment/locale/lv.js\",\n\t\"./me\": \"../node_modules/moment/locale/me.js\",\n\t\"./me.js\": \"../node_modules/moment/locale/me.js\",\n\t\"./mi\": \"../node_modules/moment/locale/mi.js\",\n\t\"./mi.js\": \"../node_modules/moment/locale/mi.js\",\n\t\"./mk\": \"../node_modules/moment/locale/mk.js\",\n\t\"./mk.js\": \"../node_modules/moment/locale/mk.js\",\n\t\"./ml\": \"../node_modules/moment/locale/ml.js\",\n\t\"./ml.js\": \"../node_modules/moment/locale/ml.js\",\n\t\"./mn\": \"../node_modules/moment/locale/mn.js\",\n\t\"./mn.js\": \"../node_modules/moment/locale/mn.js\",\n\t\"./mr\": \"../node_modules/moment/locale/mr.js\",\n\t\"./mr.js\": \"../node_modules/moment/locale/mr.js\",\n\t\"./ms\": \"../node_modules/moment/locale/ms.js\",\n\t\"./ms-my\": \"../node_modules/moment/locale/ms-my.js\",\n\t\"./ms-my.js\": \"../node_modules/moment/locale/ms-my.js\",\n\t\"./ms.js\": \"../node_modules/moment/locale/ms.js\",\n\t\"./mt\": \"../node_modules/moment/locale/mt.js\",\n\t\"./mt.js\": \"../node_modules/moment/locale/mt.js\",\n\t\"./my\": \"../node_modules/moment/locale/my.js\",\n\t\"./my.js\": \"../node_modules/moment/locale/my.js\",\n\t\"./nb\": \"../node_modules/moment/locale/nb.js\",\n\t\"./nb.js\": \"../node_modules/moment/locale/nb.js\",\n\t\"./ne\": \"../node_modules/moment/locale/ne.js\",\n\t\"./ne.js\": \"../node_modules/moment/locale/ne.js\",\n\t\"./nl\": \"../node_modules/moment/locale/nl.js\",\n\t\"./nl-be\": \"../node_modules/moment/locale/nl-be.js\",\n\t\"./nl-be.js\": \"../node_modules/moment/locale/nl-be.js\",\n\t\"./nl.js\": \"../node_modules/moment/locale/nl.js\",\n\t\"./nn\": \"../node_modules/moment/locale/nn.js\",\n\t\"./nn.js\": \"../node_modules/moment/locale/nn.js\",\n\t\"./oc-lnc\": \"../node_modules/moment/locale/oc-lnc.js\",\n\t\"./oc-lnc.js\": \"../node_modules/moment/locale/oc-lnc.js\",\n\t\"./pa-in\": \"../node_modules/moment/locale/pa-in.js\",\n\t\"./pa-in.js\": \"../node_modules/moment/locale/pa-in.js\",\n\t\"./pl\": \"../node_modules/moment/locale/pl.js\",\n\t\"./pl.js\": \"../node_modules/moment/locale/pl.js\",\n\t\"./pt\": \"../node_modules/moment/locale/pt.js\",\n\t\"./pt-br\": \"../node_modules/moment/locale/pt-br.js\",\n\t\"./pt-br.js\": \"../node_modules/moment/locale/pt-br.js\",\n\t\"./pt.js\": \"../node_modules/moment/locale/pt.js\",\n\t\"./ro\": \"../node_modules/moment/locale/ro.js\",\n\t\"./ro.js\": \"../node_modules/moment/locale/ro.js\",\n\t\"./ru\": \"../node_modules/moment/locale/ru.js\",\n\t\"./ru.js\": \"../node_modules/moment/locale/ru.js\",\n\t\"./sd\": \"../node_modules/moment/locale/sd.js\",\n\t\"./sd.js\": \"../node_modules/moment/locale/sd.js\",\n\t\"./se\": \"../node_modules/moment/locale/se.js\",\n\t\"./se.js\": \"../node_modules/moment/locale/se.js\",\n\t\"./si\": \"../node_modules/moment/locale/si.js\",\n\t\"./si.js\": \"../node_modules/moment/locale/si.js\",\n\t\"./sk\": \"../node_modules/moment/locale/sk.js\",\n\t\"./sk.js\": \"../node_modules/moment/locale/sk.js\",\n\t\"./sl\": \"../node_modules/moment/locale/sl.js\",\n\t\"./sl.js\": \"../node_modules/moment/locale/sl.js\",\n\t\"./sq\": \"../node_modules/moment/locale/sq.js\",\n\t\"./sq.js\": \"../node_modules/moment/locale/sq.js\",\n\t\"./sr\": \"../node_modules/moment/locale/sr.js\",\n\t\"./sr-cyrl\": \"../node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr-cyrl.js\": \"../node_modules/moment/locale/sr-cyrl.js\",\n\t\"./sr.js\": \"../node_modules/moment/locale/sr.js\",\n\t\"./ss\": \"../node_modules/moment/locale/ss.js\",\n\t\"./ss.js\": \"../node_modules/moment/locale/ss.js\",\n\t\"./sv\": \"../node_modules/moment/locale/sv.js\",\n\t\"./sv.js\": \"../node_modules/moment/locale/sv.js\",\n\t\"./sw\": \"../node_modules/moment/locale/sw.js\",\n\t\"./sw.js\": \"../node_modules/moment/locale/sw.js\",\n\t\"./ta\": \"../node_modules/moment/locale/ta.js\",\n\t\"./ta.js\": \"../node_modules/moment/locale/ta.js\",\n\t\"./te\": \"../node_modules/moment/locale/te.js\",\n\t\"./te.js\": \"../node_modules/moment/locale/te.js\",\n\t\"./tet\": \"../node_modules/moment/locale/tet.js\",\n\t\"./tet.js\": \"../node_modules/moment/locale/tet.js\",\n\t\"./tg\": \"../node_modules/moment/locale/tg.js\",\n\t\"./tg.js\": \"../node_modules/moment/locale/tg.js\",\n\t\"./th\": \"../node_modules/moment/locale/th.js\",\n\t\"./th.js\": \"../node_modules/moment/locale/th.js\",\n\t\"./tk\": \"../node_modules/moment/locale/tk.js\",\n\t\"./tk.js\": \"../node_modules/moment/locale/tk.js\",\n\t\"./tl-ph\": \"../node_modules/moment/locale/tl-ph.js\",\n\t\"./tl-ph.js\": \"../node_modules/moment/locale/tl-ph.js\",\n\t\"./tlh\": \"../node_modules/moment/locale/tlh.js\",\n\t\"./tlh.js\": \"../node_modules/moment/locale/tlh.js\",\n\t\"./tr\": \"../node_modules/moment/locale/tr.js\",\n\t\"./tr.js\": \"../node_modules/moment/locale/tr.js\",\n\t\"./tzl\": \"../node_modules/moment/locale/tzl.js\",\n\t\"./tzl.js\": \"../node_modules/moment/locale/tzl.js\",\n\t\"./tzm\": \"../node_modules/moment/locale/tzm.js\",\n\t\"./tzm-latn\": \"../node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm-latn.js\": \"../node_modules/moment/locale/tzm-latn.js\",\n\t\"./tzm.js\": \"../node_modules/moment/locale/tzm.js\",\n\t\"./ug-cn\": \"../node_modules/moment/locale/ug-cn.js\",\n\t\"./ug-cn.js\": \"../node_modules/moment/locale/ug-cn.js\",\n\t\"./uk\": \"../node_modules/moment/locale/uk.js\",\n\t\"./uk.js\": \"../node_modules/moment/locale/uk.js\",\n\t\"./ur\": \"../node_modules/moment/locale/ur.js\",\n\t\"./ur.js\": \"../node_modules/moment/locale/ur.js\",\n\t\"./uz\": \"../node_modules/moment/locale/uz.js\",\n\t\"./uz-latn\": \"../node_modules/moment/locale/uz-latn.js\",\n\t\"./uz-latn.js\": \"../node_modules/moment/locale/uz-latn.js\",\n\t\"./uz.js\": \"../node_modules/moment/locale/uz.js\",\n\t\"./vi\": \"../node_modules/moment/locale/vi.js\",\n\t\"./vi.js\": \"../node_modules/moment/locale/vi.js\",\n\t\"./x-pseudo\": \"../node_modules/moment/locale/x-pseudo.js\",\n\t\"./x-pseudo.js\": \"../node_modules/moment/locale/x-pseudo.js\",\n\t\"./yo\": \"../node_modules/moment/locale/yo.js\",\n\t\"./yo.js\": \"../node_modules/moment/locale/yo.js\",\n\t\"./zh-cn\": \"../node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-cn.js\": \"../node_modules/moment/locale/zh-cn.js\",\n\t\"./zh-hk\": \"../node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-hk.js\": \"../node_modules/moment/locale/zh-hk.js\",\n\t\"./zh-mo\": \"../node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-mo.js\": \"../node_modules/moment/locale/zh-mo.js\",\n\t\"./zh-tw\": \"../node_modules/moment/locale/zh-tw.js\",\n\t\"./zh-tw.js\": \"../node_modules/moment/locale/zh-tw.js\"\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = \"../node_modules/moment/locale sync recursive ^\\\\.\\\\/.*$\";","//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n if (m._isValid == null) {\n var flags = getParsingFlags(m),\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n }),\n isNowValid =\n !isNaN(m._d.getTime()) &&\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {};\n\n function addUnitAlias(unit, shorthand) {\n var lowerCase = unit.toLowerCase();\n aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n }\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {};\n\n function addUnitPriority(unit, priority) {\n priorities[unit] = priority;\n }\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n return mom.isValid()\n ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n : NaN;\n }\n\n function set$1(mom, unit, value) {\n if (mom.isValid() && !isNaN(value)) {\n if (\n unit === 'FullYear' &&\n isLeapYear(mom.year()) &&\n mom.month() === 1 &&\n mom.date() === 29\n ) {\n value = toInt(value);\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n value,\n mom.month(),\n daysInMonth(value, mom.month())\n );\n } else {\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n }\n }\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // ALIASES\n\n addUnitAlias('month', 'M');\n\n // PRIORITY\n\n addUnitPriority('month', 8);\n\n // PARSING\n\n addRegexToken('M', match1to2);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n var dayOfMonth;\n\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortPieces.push(this.monthsShort(mom, ''));\n longPieces.push(this.months(mom, ''));\n mixedPieces.push(this.months(mom, ''));\n mixedPieces.push(this.monthsShort(mom, ''));\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n for (i = 0; i < 12; i++) {\n shortPieces[i] = regexEscape(shortPieces[i]);\n longPieces[i] = regexEscape(longPieces[i]);\n }\n for (i = 0; i < 24; i++) {\n mixedPieces[i] = regexEscape(mixedPieces[i]);\n }\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // ALIASES\n\n addUnitAlias('year', 'y');\n\n // PRIORITIES\n\n addUnitPriority('year', 1);\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // ALIASES\n\n addUnitAlias('week', 'w');\n addUnitAlias('isoWeek', 'W');\n\n // PRIORITIES\n\n addUnitPriority('week', 5);\n addUnitPriority('isoWeek', 5);\n\n // PARSING\n\n addRegexToken('w', match1to2);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // ALIASES\n\n addUnitAlias('day', 'd');\n addUnitAlias('weekday', 'e');\n addUnitAlias('isoWeekday', 'E');\n\n // PRIORITY\n addUnitPriority('day', 11);\n addUnitPriority('weekday', 11);\n addUnitPriority('isoWeekday', 11);\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // ALIASES\n\n addUnitAlias('hour', 'h');\n\n // PRIORITY\n addUnitPriority('hour', 13);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2);\n addRegexToken('h', match1to2);\n addRegexToken('k', match1to2);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n return name.match('^[^/\\\\\\\\]*$') != null;\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n namePieces.push(regexEscape(eras[i].name));\n abbrPieces.push(regexEscape(eras[i].abbr));\n narrowPieces.push(regexEscape(eras[i].narrow));\n\n mixedPieces.push(regexEscape(eras[i].name));\n mixedPieces.push(regexEscape(eras[i].abbr));\n mixedPieces.push(regexEscape(eras[i].narrow));\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n addUnitAlias('weekYear', 'gg');\n addUnitAlias('isoWeekYear', 'GG');\n\n // PRIORITY\n\n addUnitPriority('weekYear', 1);\n addUnitPriority('isoWeekYear', 1);\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday(),\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // ALIASES\n\n addUnitAlias('quarter', 'Q');\n\n // PRIORITY\n\n addUnitPriority('quarter', 7);\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // ALIASES\n\n addUnitAlias('date', 'D');\n\n // PRIORITY\n addUnitPriority('date', 9);\n\n // PARSING\n\n addRegexToken('D', match1to2);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // ALIASES\n\n addUnitAlias('dayOfYear', 'DDD');\n\n // PRIORITY\n addUnitPriority('dayOfYear', 4);\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // ALIASES\n\n addUnitAlias('minute', 'm');\n\n // PRIORITY\n\n addUnitPriority('minute', 14);\n\n // PARSING\n\n addRegexToken('m', match1to2);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // ALIASES\n\n addUnitAlias('second', 's');\n\n // PRIORITY\n\n addUnitPriority('second', 15);\n\n // PARSING\n\n addRegexToken('s', match1to2);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // ALIASES\n\n addUnitAlias('millisecond', 'ms');\n\n // PRIORITY\n\n addUnitPriority('millisecond', 16);\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n // TODO: Use this.as('ms')?\n function valueOf$1() {\n if (!this.isValid()) {\n return NaN;\n }\n return (\n this._milliseconds +\n this._days * 864e5 +\n (this._months % 12) * 2592e6 +\n toInt(this._months / 12) * 31536e6\n );\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y');\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.29.4';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","/**\n * Check is item is object\n * @return {Boolean}\n */\nexport const isObject = val => Object.prototype.toString.call(val) === \"[object Object]\"\n\n/**\n * Check for valid JSON string\n * @param {String} str\n * @return {Boolean|Array|Object}\n */\nexport const isJson = str => {\n let t = !1\n try {\n t = JSON.parse(str)\n } catch (e) {\n return !1\n }\n return !(null === t || (!Array.isArray(t) && !isObject(t))) && t\n}\n\n/**\n * Create DOM element node\n * @param {String} nodeName nodeName\n * @param {Object} attrs properties and attributes\n * @return {Object}\n */\nexport const createElement = (nodeName, attrs) => {\n const dom = document.createElement(nodeName)\n if (attrs && \"object\" == typeof attrs) {\n for (const attr in attrs) {\n if (\"html\" === attr) {\n dom.innerHTML = attrs[attr]\n } else {\n dom.setAttribute(attr, attrs[attr])\n }\n }\n }\n return dom\n}\n\nexport const flush = el => {\n if (el instanceof NodeList) {\n el.forEach(e => flush(e))\n } else {\n el.innerHTML = \"\"\n }\n}\n\n/**\n * Create button helper\n * @param {String} class\n * @param {Number} page\n * @param {String} text\n * @return {Object}\n */\nexport const button = (className, page, text) => createElement(\n \"li\",\n {\n class: className,\n html: `${text}`\n }\n)\n\n/**\n * Bubble sort algorithm\n */\nexport const sortItems = (a, b) => {\n let c\n let d\n if (1 === b) {\n c = 0\n d = a.length\n } else {\n if (b === -1) {\n c = a.length - 1\n d = -1\n }\n }\n for (let e = !0; e;) {\n e = !1\n for (let f = c; f != d; f += b) {\n if (a[f + b] && a[f].value > a[f + b].value) {\n const g = a[f]\n const h = a[f + b]\n const i = g\n a[f] = h\n a[f + b] = i\n e = !0\n }\n }\n }\n return a\n}\n\n/**\n * Pager truncation algorithm\n */\nexport const truncate = (a, b, c, d, ellipsis) => {\n d = d || 2\n let j\n const e = 2 * d\n let f = b - d\n let g = b + d\n const h = []\n const i = []\n if (b < 4 - d + e) {\n g = 3 + e\n } else if (b > c - (3 - d + e)) {\n f = c - (2 + e)\n }\n for (let k = 1; k <= c; k++) {\n if (1 == k || k == c || (k >= f && k <= g)) {\n const l = a[k - 1]\n l.classList.remove(\"active\")\n h.push(l)\n }\n }\n h.forEach(c => {\n const d = c.children[0].getAttribute(\"data-page\")\n if (j) {\n const e = j.children[0].getAttribute(\"data-page\")\n if (d - e == 2) i.push(a[e])\n else if (d - e != 1) {\n const f = createElement(\"li\", {\n class: \"ellipsis\",\n html: `${ellipsis}`\n })\n i.push(f)\n }\n }\n i.push(c)\n j = c\n })\n\n return i\n}\n","import {createElement} from \"./helpers\"\n/**\n * Rows API\n * @param {Object} instance DataTable instance\n * @param {Array} rows\n */\nexport class Rows {\n constructor(dt, rows) {\n this.dt = dt\n this.rows = rows\n\n return this\n }\n\n /**\n * Build a new row\n * @param {Array} row\n * @return {HTMLElement}\n */\n build(row) {\n const tr = createElement(\"tr\")\n\n let headings = this.dt.headings\n\n if (!headings.length) {\n headings = row.map(() => \"\")\n }\n\n headings.forEach((h, i) => {\n const td = createElement(\"td\")\n\n // Fixes #29\n if (!row[i] || !row[i].length) {\n row[i] = \"\"\n }\n\n td.innerHTML = row[i]\n\n td.data = row[i]\n\n tr.appendChild(td)\n })\n\n return tr\n }\n\n render(row) {\n return row\n }\n\n /**\n * Add new row\n * @param {Array} select\n */\n add(data) {\n if (Array.isArray(data)) {\n const dt = this.dt\n // Check for multiple rows\n if (Array.isArray(data[0])) {\n data.forEach(row => {\n dt.data.push(this.build(row))\n })\n } else {\n dt.data.push(this.build(data))\n }\n\n // We may have added data to an empty table\n if ( dt.data.length ) {\n dt.hasRows = true\n }\n\n\n this.update()\n\n dt.columns().rebuild()\n }\n\n }\n\n /**\n * Remove row(s)\n * @param {Array|Number} select\n * @return {Void}\n */\n remove(select) {\n const dt = this.dt\n\n if (Array.isArray(select)) {\n // Remove in reverse otherwise the indexes will be incorrect\n select.sort((a, b) => b - a)\n\n select.forEach(row => {\n dt.data.splice(row, 1)\n })\n } else if (select == \"all\") {\n dt.data = [];\n } else {\n dt.data.splice(select, 1)\n }\n\n // We may have emptied the table\n if ( !dt.data.length ) {\n dt.hasRows = false\n }\n\n this.update()\n dt.columns().rebuild()\n }\n\n /**\n * Update row indexes\n * @return {Void}\n */\n update() {\n this.dt.data.forEach((row, i) => {\n row.dataIndex = i\n })\n }\n\n /**\n * Find index of row by searching for a value in a column\n * @param {Number} columnIndex\n * @param {String} value\n * @return {Number}\n */\n findRowIndex(columnIndex, value) {\n // returns row index of first case-insensitive string match\n // inside the td innerText at specific column index\n return this.dt.data.findIndex(\n tr => tr.children[columnIndex].innerText.toLowerCase().includes(String(value).toLowerCase())\n )\n }\n\n /**\n * Find index, row, and column data by searching for a value in a column\n * @param {Number} columnIndex\n * @param {String} value\n * @return {Object}\n */\n findRow(columnIndex, value) {\n // get the row index\n const index = this.findRowIndex(columnIndex, value)\n // exit if not found\n if (index < 0) {\n return {\n index: -1,\n row: null,\n cols: []\n }\n }\n // get the row from data\n const row = this.dt.data[index]\n // return innerHTML of each td\n const cols = [...row.cells].map(r => r.innerHTML)\n // return everything\n return {\n index,\n row,\n cols\n }\n }\n\n /**\n * Update a row with new data\n * @param {Number} select\n * @param {Array} data\n * @return {Void}\n */\n updateRow(select, data) {\n const row = this.build(data)\n this.dt.data.splice(select, 1, row)\n this.update()\n this.dt.columns().rebuild()\n }\n}\n","import {sortItems} from \"./helpers\"\n\n/**\n * Columns API\n * @param {Object} instance DataTable instance\n * @param {Mixed} columns Column index or array of column indexes\n */\nexport class Columns {\n constructor(dt) {\n this.dt = dt\n return this\n }\n\n /**\n * Swap two columns\n * @return {Void}\n */\n swap(columns) {\n if (columns.length && columns.length === 2) {\n const cols = []\n\n // Get the current column indexes\n this.dt.headings.forEach((h, i) => {\n cols.push(i)\n })\n\n const x = columns[0]\n const y = columns[1]\n const b = cols[y]\n cols[y] = cols[x]\n cols[x] = b\n\n this.order(cols)\n }\n }\n\n /**\n * Reorder the columns\n * @return {Array} columns Array of ordered column indexes\n */\n order(columns) {\n let a\n let b\n let c\n let d\n let h\n let s\n let cell\n\n const temp = [\n [],\n [],\n [],\n []\n ]\n\n const dt = this.dt\n\n // Order the headings\n columns.forEach((column, x) => {\n h = dt.headings[column]\n s = h.getAttribute(\"data-sortable\") !== \"false\"\n a = h.cloneNode(true)\n a.originalCellIndex = x\n a.sortable = s\n\n temp[0].push(a)\n\n if (!dt.hiddenColumns.includes(column)) {\n b = h.cloneNode(true)\n b.originalCellIndex = x\n b.sortable = s\n\n temp[1].push(b)\n }\n })\n\n // Order the row cells\n dt.data.forEach((row, i) => {\n c = row.cloneNode(false)\n d = row.cloneNode(false)\n\n c.dataIndex = d.dataIndex = i\n\n if (row.searchIndex !== null && row.searchIndex !== undefined) {\n c.searchIndex = d.searchIndex = row.searchIndex\n }\n\n // Append the cell to the fragment in the correct order\n columns.forEach(column => {\n cell = row.cells[column].cloneNode(true)\n cell.data = row.cells[column].data\n c.appendChild(cell)\n\n if (!dt.hiddenColumns.includes(column)) {\n cell = row.cells[column].cloneNode(true)\n cell.data = row.cells[column].data\n d.appendChild(cell)\n }\n })\n\n temp[2].push(c)\n temp[3].push(d)\n })\n\n dt.headings = temp[0]\n dt.activeHeadings = temp[1]\n\n dt.data = temp[2]\n dt.activeRows = temp[3]\n\n // Update\n dt.update()\n }\n\n /**\n * Hide columns\n * @return {Void}\n */\n hide(columns) {\n if (columns.length) {\n const dt = this.dt\n\n columns.forEach(column => {\n if (!dt.hiddenColumns.includes(column)) {\n dt.hiddenColumns.push(column)\n }\n })\n\n this.rebuild()\n }\n }\n\n /**\n * Show columns\n * @return {Void}\n */\n show(columns) {\n if (columns.length) {\n let index\n const dt = this.dt\n\n columns.forEach(column => {\n index = dt.hiddenColumns.indexOf(column)\n if (index > -1) {\n dt.hiddenColumns.splice(index, 1)\n }\n })\n\n this.rebuild()\n }\n }\n\n /**\n * Check column(s) visibility\n * @return {Boolean}\n */\n visible(columns) {\n let cols\n const dt = this.dt\n\n columns = columns || dt.headings.map(th => th.originalCellIndex)\n\n if (!isNaN(columns)) {\n cols = !dt.hiddenColumns.includes(columns)\n } else if (Array.isArray(columns)) {\n cols = []\n columns.forEach(column => {\n cols.push(!dt.hiddenColumns.includes(column))\n })\n }\n\n return cols\n }\n\n /**\n * Add a new column\n * @param {Object} data\n */\n add(data) {\n let td\n const th = document.createElement(\"th\")\n\n if (!this.dt.headings.length) {\n this.dt.insert({\n headings: [data.heading],\n data: data.data.map(i => [i])\n })\n this.rebuild()\n return\n }\n\n if (!this.dt.hiddenHeader) {\n if (data.heading.nodeName) {\n th.appendChild(data.heading)\n } else {\n th.innerHTML = data.heading\n }\n } else {\n th.innerHTML = \"\"\n }\n\n this.dt.headings.push(th)\n\n this.dt.data.forEach((row, i) => {\n if (data.data[i]) {\n td = document.createElement(\"td\")\n\n if (data.data[i].nodeName) {\n td.appendChild(data.data[i])\n } else {\n td.innerHTML = data.data[i]\n }\n\n td.data = td.innerHTML\n\n if (data.render) {\n td.innerHTML = data.render.call(this, td.data, td, row)\n }\n\n row.appendChild(td)\n }\n })\n\n if (data.type) {\n th.setAttribute(\"data-type\", data.type)\n }\n if (data.format) {\n th.setAttribute(\"data-format\", data.format)\n }\n\n if (data.hasOwnProperty(\"sortable\")) {\n th.sortable = data.sortable\n th.setAttribute(\"data-sortable\", data.sortable === true ? \"true\" : \"false\")\n }\n\n this.rebuild()\n\n this.dt.renderHeader()\n }\n\n /**\n * Remove column(s)\n * @param {Array|Number} select\n * @return {Void}\n */\n remove(select) {\n if (Array.isArray(select)) {\n // Remove in reverse otherwise the indexes will be incorrect\n select.sort((a, b) => b - a)\n select.forEach(column => this.remove(column))\n } else {\n this.dt.headings.splice(select, 1)\n\n this.dt.data.forEach(row => {\n row.removeChild(row.cells[select])\n })\n }\n\n this.rebuild()\n }\n\n /**\n * Filter by column\n * @param {int} column - The column no.\n * @param {string} dir - asc or desc\n * @filter {array} filter - optional parameter with a list of strings\n * @return {void}\n */\n filter(column, dir, init, terms) {\n const dt = this.dt\n\n // Creates a internal state that manages filters if there are none\n if ( !dt.filterState ) {\n dt.filterState = {\n originalData: dt.data\n }\n }\n\n // If that column is was not filtered yet, we need to create its state\n if ( !dt.filterState[column] ) {\n\n // append a filter that selects all rows, 'resetting' the filter\n const filters = [...terms, () => true]\n\n dt.filterState[column] = (\n function() {\n let i = 0;\n return () => filters[i++ % (filters.length)]\n }()\n )\n }\n\n // Apply the filter and rebuild table\n const rowFilter = dt.filterState[column]() // fetches next filter\n const filteredRows = Array.from(dt.filterState.originalData).filter(tr => {\n const cell = tr.cells[column]\n const content = cell.hasAttribute(\"data-content\") ? cell.getAttribute(\"data-content\") : cell.innerText\n\n // If the filter is a function, call it, if it is a string, compare it\n return (typeof rowFilter) === \"function\" ? rowFilter(content) : content === rowFilter;\n })\n\n dt.data = filteredRows\n\n if (!dt.data.length) {\n dt.clear()\n dt.hasRows = false\n dt.setMessage(dt.options.labels.noRows)\n } else {\n this.rebuild()\n dt.update()\n }\n\n if (!init) {\n dt.emit(\"datatable.sort\", column, dir)\n }\n }\n\n /**\n * Sort by column\n * @param {int} column - The column no.\n * @param {string} dir - asc or desc\n * @return {void}\n */\n sort(column, dir, init) {\n const dt = this.dt\n\n // Check column is present\n if (dt.hasHeadings && (column < 0 || column > dt.headings.length)) {\n return false\n }\n\n //If there is a filter for this column, apply it instead of sorting\n const filterTerms = dt.options.filters &&\n dt.options.filters[dt.headings[column].textContent]\n if ( filterTerms && filterTerms.length !== 0 ) {\n this.filter(column, dir, init, filterTerms)\n return;\n }\n\n dt.sorting = true\n\n if (!init) {\n dt.emit(\"datatable.sorting\", column, dir)\n }\n\n let rows = dt.data\n const alpha = []\n const numeric = []\n let a = 0\n let n = 0\n const th = dt.headings[column]\n\n const waitFor = []\n\n // Check for date format\n if (th.getAttribute(\"data-type\") === \"date\") {\n let format = false\n const formatted = th.hasAttribute(\"data-format\")\n\n if (formatted) {\n format = th.getAttribute(\"data-format\")\n }\n waitFor.push(import(\"./date\").then(({parseDate}) => date => parseDate(date, format)))\n }\n\n Promise.all(waitFor).then(importedFunctions => {\n const parseFunction = importedFunctions[0] // only defined if date\n Array.from(rows).forEach(tr => {\n const cell = tr.cells[column]\n const content = cell.hasAttribute(\"data-content\") ? cell.getAttribute(\"data-content\") : cell.innerText\n let num\n if (parseFunction) {\n num = parseFunction(content)\n } else if (typeof content===\"string\") {\n num = content.replace(/(\\$|,|\\s|%)/g, \"\")\n } else {\n num = content\n }\n\n if (parseFloat(num) == num) {\n numeric[n++] = {\n value: Number(num),\n row: tr\n }\n } else {\n alpha[a++] = {\n value: typeof content===\"string\" ? content.toLowerCase() : content,\n row: tr\n }\n }\n })\n\n /* Sort according to direction (ascending or descending) */\n if (!dir) {\n if (th.classList.contains(\"asc\")) {\n dir = \"desc\"\n } else {\n dir = \"asc\"\n }\n }\n let top\n let btm\n if (dir == \"desc\") {\n top = sortItems(alpha, -1)\n btm = sortItems(numeric, -1)\n th.classList.remove(\"asc\")\n th.classList.add(\"desc\")\n } else {\n top = sortItems(numeric, 1)\n btm = sortItems(alpha, 1)\n th.classList.remove(\"desc\")\n th.classList.add(\"asc\")\n }\n\n /* Clear asc/desc class names from the last sorted column's th if it isn't the same as the one that was just clicked */\n if (dt.lastTh && th != dt.lastTh) {\n dt.lastTh.classList.remove(\"desc\")\n dt.lastTh.classList.remove(\"asc\")\n }\n\n dt.lastTh = th\n\n /* Reorder the table */\n rows = top.concat(btm)\n\n dt.data = []\n const indexes = []\n\n rows.forEach((v, i) => {\n dt.data.push(v.row)\n\n if (v.row.searchIndex !== null && v.row.searchIndex !== undefined) {\n indexes.push(i)\n }\n })\n\n dt.searchData = indexes\n\n this.rebuild()\n\n dt.update()\n\n if (!init) {\n dt.emit(\"datatable.sort\", column, dir)\n }\n })\n }\n\n /**\n * Rebuild the columns\n * @return {Void}\n */\n rebuild() {\n let a\n let b\n let c\n let d\n const dt = this.dt\n const temp = []\n\n dt.activeRows = []\n dt.activeHeadings = []\n\n dt.headings.forEach((th, i) => {\n th.originalCellIndex = i\n th.sortable = th.getAttribute(\"data-sortable\") !== \"false\"\n if (!dt.hiddenColumns.includes(i)) {\n dt.activeHeadings.push(th)\n }\n })\n\n // Loop over the rows and reorder the cells\n dt.data.forEach((row, i) => {\n a = row.cloneNode(false)\n b = row.cloneNode(false)\n\n a.dataIndex = b.dataIndex = i\n\n if (row.searchIndex !== null && row.searchIndex !== undefined) {\n a.searchIndex = b.searchIndex = row.searchIndex\n }\n\n // Append the cell to the fragment in the correct order\n Array.from(row.cells).forEach(cell => {\n c = cell.cloneNode(true)\n c.data = cell.data\n a.appendChild(c)\n\n if (!dt.hiddenColumns.includes(c.cellIndex)) {\n d = c.cloneNode(true)\n d.data = c.data\n b.appendChild(d)\n }\n })\n\n // Append the fragment with the ordered cells\n temp.push(a)\n dt.activeRows.push(b)\n })\n\n dt.data = temp\n\n dt.update()\n }\n}\n","import {createElement} from \"./helpers\"\n\n/**\n * Parse data to HTML table\n */\nexport const dataToTable = function (data) {\n let thead = false\n let tbody = false\n\n data = data || this.options.data\n\n if (data.headings) {\n thead = createElement(\"thead\")\n const tr = createElement(\"tr\")\n data.headings.forEach(col => {\n const td = createElement(\"th\", {\n html: col\n })\n tr.appendChild(td)\n })\n\n thead.appendChild(tr)\n }\n\n if (data.data && data.data.length) {\n tbody = createElement(\"tbody\")\n data.data.forEach(rows => {\n if (data.headings) {\n if (data.headings.length !== rows.length) {\n throw new Error(\n \"The number of rows do not match the number of headings.\"\n )\n }\n }\n const tr = createElement(\"tr\")\n rows.forEach(value => {\n const td = createElement(\"td\", {\n html: value\n })\n tr.appendChild(td)\n })\n tbody.appendChild(tr)\n })\n }\n\n if (thead) {\n if (this.dom.tHead !== null) {\n this.dom.removeChild(this.dom.tHead)\n }\n this.dom.appendChild(thead)\n }\n\n if (tbody) {\n if (this.dom.tBodies.length) {\n this.dom.removeChild(this.dom.tBodies[0])\n }\n this.dom.appendChild(tbody)\n }\n}\n","/**\n * Default configuration\n * @typ {Object}\n */\nexport const defaultConfig = {\n sortable: true,\n searchable: true,\n\n // Pagination\n paging: true,\n perPage: 10,\n perPageSelect: [5, 10, 15, 20, 25],\n nextPrev: true,\n firstLast: false,\n prevText: \"‹\",\n nextText: \"›\",\n firstText: \"«\",\n lastText: \"»\",\n ellipsisText: \"…\",\n ascText: \"▴\",\n descText: \"▾\",\n truncatePager: true,\n pagerDelta: 2,\n\n scrollY: \"\",\n\n fixedColumns: true,\n fixedHeight: false,\n\n header: true,\n hiddenHeader: false,\n footer: false,\n\n // Customise the display text\n labels: {\n placeholder: \"Search...\", // The search input placeholder\n perPage: \"{select} entries per page\", // per-page dropdown label\n noRows: \"No entries found\", // Message shown when there are no records to show\n noResults: \"No results match your search query\", // Message shown when there are no search results\n info: \"Showing {start} to {end} of {rows} entries\" //\n },\n\n // Customise the layout\n layout: {\n top: \"{select}{search}\",\n bottom: \"{info}{pager}\"\n }\n}\n","import {Rows} from \"./rows\"\nimport {Columns} from \"./columns\"\nimport {dataToTable} from \"./table\"\nimport {defaultConfig} from \"./config\"\nimport {\n isObject,\n isJson,\n createElement,\n flush,\n button,\n truncate\n} from \"./helpers\"\n\n\nexport class DataTable {\n constructor(table, options = {}) {\n\n const dom = typeof table === \"string\" ? document.querySelector(table) : table\n\n // user options\n this.options = {\n ...defaultConfig,\n ...options,\n layout: {\n ...defaultConfig.layout,\n ...options.layout\n },\n labels: {\n ...defaultConfig.labels,\n ...options.labels\n }\n }\n\n this.initialized = false\n\n this.initialLayout = dom.innerHTML\n this.initialSortable = this.options.sortable\n\n // Disable manual sorting if no header is present (#4)\n if (!this.options.header) {\n this.options.sortable = false\n }\n\n if (dom.tHead === null) {\n if (!this.options.data ||\n (this.options.data && !this.options.data.headings)\n ) {\n this.options.sortable = false\n }\n }\n\n if (dom.tBodies.length && !dom.tBodies[0].rows.length) {\n if (this.options.data) {\n if (!this.options.data.data) {\n throw new Error(\n \"You seem to be using the data option, but you've not defined any rows.\"\n )\n }\n }\n }\n\n this.dom = dom\n\n this.table = this.dom // For compatibility. Remove in version 4\n\n this.listeners = {\n onResize: event => this.onResize(event)\n }\n\n this.init()\n }\n\n /**\n * Add custom property or method to extend DataTable\n * @param {String} prop - Method name or property\n * @param {Mixed} val - Function or property value\n * @return {Void}\n */\n static extend(prop, val) {\n if (typeof val === \"function\") {\n DataTable.prototype[prop] = val\n } else {\n DataTable[prop] = val\n }\n }\n\n /**\n * Initialize the instance\n * @param {Object} options\n * @return {Void}\n */\n init(options) {\n if (this.initialized || this.dom.classList.contains(\"dataTable-table\")) {\n return false\n }\n\n Object.assign(this.options, options || {})\n\n this.currentPage = 1\n this.onFirstPage = true\n\n this.hiddenColumns = []\n this.columnRenderers = []\n this.selectedColumns = []\n\n this.render()\n\n setTimeout(() => {\n this.emit(\"datatable.init\")\n this.initialized = true\n\n if (this.options.plugins) {\n Object.entries(this.options.plugins).forEach(([plugin, options]) => {\n if (this[plugin] && typeof this[plugin] === \"function\") {\n this[plugin] = this[plugin](options, {createElement})\n\n // Init plugin\n if (options.enabled && this[plugin].init && typeof this[plugin].init === \"function\") {\n this[plugin].init()\n }\n }\n })\n }\n }, 10)\n }\n\n /**\n * Render the instance\n * @param {String} type\n * @return {Void}\n */\n render(type) {\n if (type) {\n switch (type) {\n case \"page\":\n this.renderPage()\n break\n case \"pager\":\n this.renderPager()\n break\n case \"header\":\n this.renderHeader()\n break\n }\n\n return false\n }\n\n const options = this.options\n let template = \"\"\n\n // Convert data to HTML\n if (options.data) {\n dataToTable.call(this)\n }\n\n // Store references\n this.body = this.dom.tBodies[0]\n this.head = this.dom.tHead\n this.foot = this.dom.tFoot\n\n if (!this.body) {\n this.body = createElement(\"tbody\")\n\n this.dom.appendChild(this.body)\n }\n\n this.hasRows = this.body.rows.length > 0\n\n // Make a tHead if there isn't one (fixes #8)\n if (!this.head) {\n const h = createElement(\"thead\")\n const t = createElement(\"tr\")\n\n if (this.hasRows) {\n Array.from(this.body.rows[0].cells).forEach(() => {\n t.appendChild(createElement(\"th\"))\n })\n\n h.appendChild(t)\n }\n\n this.head = h\n\n this.dom.insertBefore(this.head, this.body)\n\n this.hiddenHeader = options.hiddenHeader\n }\n\n this.headings = []\n this.hasHeadings = this.head.rows.length > 0\n\n if (this.hasHeadings) {\n this.header = this.head.rows[0]\n this.headings = [].slice.call(this.header.cells)\n }\n\n // Header\n if (!options.header) {\n if (this.head) {\n this.dom.removeChild(this.dom.tHead)\n }\n }\n\n // Footer\n if (options.footer) {\n if (this.head && !this.foot) {\n this.foot = createElement(\"tfoot\", {\n html: this.head.innerHTML\n })\n this.dom.appendChild(this.foot)\n }\n } else {\n if (this.foot) {\n this.dom.removeChild(this.dom.tFoot)\n }\n }\n\n // Build\n this.wrapper = createElement(\"div\", {\n class: \"dataTable-wrapper dataTable-loading\"\n })\n\n // Template for custom layouts\n template += \"
    \"\n template += options.layout.top\n template += \"
    \"\n if (options.scrollY.length) {\n template += `
    `\n } else {\n template += \"
    \"\n }\n template += \"
    \"\n template += options.layout.bottom\n template += \"
    \"\n\n // Info placement\n template = template.replace(\"{info}\", options.paging ? \"
    \" : \"\")\n\n // Per Page Select\n if (options.paging && options.perPageSelect) {\n let wrap = \"
    \"\n\n // Create the select\n const select = createElement(\"select\", {\n class: \"dataTable-selector\"\n })\n\n // Create the options\n options.perPageSelect.forEach(val => {\n const selected = val === options.perPage\n const option = new Option(val, val, selected, selected)\n select.add(option)\n })\n\n // Custom label\n wrap = wrap.replace(\"{select}\", select.outerHTML)\n\n // Selector placement\n template = template.replace(\"{select}\", wrap)\n } else {\n template = template.replace(\"{select}\", \"\")\n }\n\n // Searchable\n if (options.searchable) {\n const form =\n ``\n\n // Search input placement\n template = template.replace(\"{search}\", form)\n } else {\n template = template.replace(\"{search}\", \"\")\n }\n\n if (this.hasHeadings) {\n // Sortable\n this.render(\"header\")\n }\n\n // Add table class\n this.dom.classList.add(\"dataTable-table\")\n\n // Paginator\n const paginatorWrapper = createElement(\"nav\", {\n class: \"dataTable-pagination\"\n })\n const paginator = createElement(\"ul\", {\n class: \"dataTable-pagination-list\"\n })\n paginatorWrapper.appendChild(paginator)\n\n // Pager(s) placement\n template = template.replace(/\\{pager\\}/g, paginatorWrapper.outerHTML)\n this.wrapper.innerHTML = template\n\n this.container = this.wrapper.querySelector(\".dataTable-container\")\n\n this.pagers = this.wrapper.querySelectorAll(\".dataTable-pagination-list\")\n\n this.label = this.wrapper.querySelector(\".dataTable-info\")\n\n // Insert in to DOM tree\n this.dom.parentNode.replaceChild(this.wrapper, this.dom)\n this.container.appendChild(this.dom)\n\n // Store the table dimensions\n this.rect = this.dom.getBoundingClientRect()\n\n // Convert rows to array for processing\n this.data = Array.from(this.body.rows)\n this.activeRows = this.data.slice()\n this.activeHeadings = this.headings.slice()\n\n // Update\n this.update()\n\n\n this.setColumns()\n\n\n // Fix height\n this.fixHeight()\n\n // Fix columns\n this.fixColumns()\n\n // Class names\n if (!options.header) {\n this.wrapper.classList.add(\"no-header\")\n }\n\n if (!options.footer) {\n this.wrapper.classList.add(\"no-footer\")\n }\n\n if (options.sortable) {\n this.wrapper.classList.add(\"sortable\")\n }\n\n if (options.searchable) {\n this.wrapper.classList.add(\"searchable\")\n }\n\n if (options.fixedHeight) {\n this.wrapper.classList.add(\"fixed-height\")\n }\n\n if (options.fixedColumns) {\n this.wrapper.classList.add(\"fixed-columns\")\n }\n\n this.bindEvents()\n }\n\n /**\n * Render the page\n * @return {Void}\n */\n renderPage() {\n if (this.hasHeadings) {\n flush(this.header)\n\n this.activeHeadings.forEach(th => this.header.appendChild(th))\n }\n\n\n if (this.hasRows && this.totalPages) {\n if (this.currentPage > this.totalPages) {\n this.currentPage = 1\n }\n\n // Use a fragment to limit touching the DOM\n const index = this.currentPage - 1\n\n const frag = document.createDocumentFragment()\n this.pages[index].forEach(row => frag.appendChild(this.rows().render(row)))\n\n this.clear(frag)\n\n this.onFirstPage = this.currentPage === 1\n this.onLastPage = this.currentPage === this.lastPage\n } else {\n this.setMessage(this.options.labels.noRows)\n }\n\n // Update the info\n let current = 0\n\n let f = 0\n let t = 0\n let items\n\n if (this.totalPages) {\n current = this.currentPage - 1\n f = current * this.options.perPage\n t = f + this.pages[current].length\n f = f + 1\n items = this.searching ? this.searchData.length : this.data.length\n }\n\n if (this.label && this.options.labels.info.length) {\n // CUSTOM LABELS\n const string = this.options.labels.info\n .replace(\"{start}\", f)\n .replace(\"{end}\", t)\n .replace(\"{page}\", this.currentPage)\n .replace(\"{pages}\", this.totalPages)\n .replace(\"{rows}\", items)\n\n this.label.innerHTML = items ? string : \"\"\n }\n\n if (this.currentPage == 1) {\n this.fixHeight()\n }\n }\n\n /**\n * Render the pager(s)\n * @return {Void}\n */\n renderPager() {\n flush(this.pagers)\n\n if (this.totalPages > 1) {\n const c = \"pager\"\n const frag = document.createDocumentFragment()\n const prev = this.onFirstPage ? 1 : this.currentPage - 1\n const next = this.onLastPage ? this.totalPages : this.currentPage + 1\n\n // first button\n if (this.options.firstLast) {\n frag.appendChild(button(c, 1, this.options.firstText))\n }\n\n // prev button\n if (this.options.nextPrev && !this.onFirstPage) {\n frag.appendChild(button(c, prev, this.options.prevText))\n }\n\n let pager = this.links\n\n // truncate the links\n if (this.options.truncatePager) {\n pager = truncate(\n this.links,\n this.currentPage,\n this.pages.length,\n this.options.pagerDelta,\n this.options.ellipsisText\n )\n }\n\n // active page link\n this.links[this.currentPage - 1].classList.add(\"active\")\n\n // append the links\n pager.forEach(p => {\n p.classList.remove(\"active\")\n frag.appendChild(p)\n })\n\n this.links[this.currentPage - 1].classList.add(\"active\")\n\n // next button\n if (this.options.nextPrev && !this.onLastPage) {\n frag.appendChild(button(c, next, this.options.nextText))\n }\n\n // first button\n if (this.options.firstLast) {\n frag.appendChild(button(c, this.totalPages, this.options.lastText))\n }\n\n // We may have more than one pager\n this.pagers.forEach(pager => {\n pager.appendChild(frag.cloneNode(true))\n })\n }\n }\n\n /**\n * Render the header\n * @return {Void}\n */\n renderHeader() {\n this.labels = []\n\n if (this.headings && this.headings.length) {\n this.headings.forEach((th, i) => {\n\n this.labels[i] = th.textContent\n\n if (th.firstElementChild && th.firstElementChild.classList.contains(\"dataTable-sorter\")) {\n th.innerHTML = th.firstElementChild.innerHTML\n }\n\n th.sortable = th.getAttribute(\"data-sortable\") !== \"false\"\n\n th.originalCellIndex = i\n if (this.options.sortable && th.sortable) {\n const link = createElement(\"a\", {\n href: \"#\",\n class: \"dataTable-sorter\",\n html: th.innerHTML\n })\n\n th.innerHTML = \"\"\n th.setAttribute(\"data-sortable\", \"\")\n th.appendChild(link)\n }\n })\n }\n\n this.fixColumns()\n }\n\n /**\n * Bind event listeners\n * @return {[type]} [description]\n */\n bindEvents() {\n const options = this.options\n // Per page selector\n if (options.perPageSelect) {\n const selector = this.wrapper.querySelector(\".dataTable-selector\")\n if (selector) {\n // Change per page\n selector.addEventListener(\"change\", () => {\n options.perPage = parseInt(selector.value, 10)\n this.update()\n\n this.fixHeight()\n\n this.emit(\"datatable.perpage\", options.perPage)\n }, false)\n }\n }\n\n // Search input\n if (options.searchable) {\n this.input = this.wrapper.querySelector(\".dataTable-input\")\n if (this.input) {\n this.input.addEventListener(\"keyup\", () => this.search(this.input.value), false)\n }\n }\n\n // Pager(s) / sorting\n this.wrapper.addEventListener(\"click\", e => {\n const t = e.target.closest(\"a\")\n if (t && (t.nodeName.toLowerCase() === \"a\")) {\n if (t.hasAttribute(\"data-page\")) {\n this.page(t.getAttribute(\"data-page\"))\n e.preventDefault()\n } else if (\n options.sortable &&\n t.classList.contains(\"dataTable-sorter\") &&\n t.parentNode.getAttribute(\"data-sortable\") != \"false\"\n ) {\n this.columns().sort(this.headings.indexOf(t.parentNode))\n e.preventDefault()\n }\n }\n }, false)\n\n window.addEventListener(\"resize\", this.listeners.onResize)\n }\n\n /**\n * execute on resize\n */\n onResize() {\n this.rect = this.container.getBoundingClientRect()\n if (!this.rect.width) {\n // No longer shown, likely no longer part of DOM. Give up.\n return\n }\n this.fixColumns()\n }\n\n /**\n * Set up columns\n * @return {[type]} [description]\n */\n setColumns(ajax) {\n\n if (!ajax) {\n this.data.forEach(row => {\n Array.from(row.cells).forEach(cell => {\n cell.data = cell.innerHTML\n })\n })\n }\n\n // Check for the columns option\n if (this.options.columns && this.headings.length) {\n\n this.options.columns.forEach(data => {\n\n // convert single column selection to array\n if (!Array.isArray(data.select)) {\n data.select = [data.select]\n }\n\n if (data.hasOwnProperty(\"render\") && typeof data.render === \"function\") {\n this.selectedColumns = this.selectedColumns.concat(data.select)\n\n this.columnRenderers.push({\n columns: data.select,\n renderer: data.render\n })\n }\n\n // Add the data attributes to the th elements\n data.select.forEach(column => {\n const th = this.headings[column]\n if (!th) {\n return\n }\n if (data.type) {\n th.setAttribute(\"data-type\", data.type)\n }\n if (data.format) {\n th.setAttribute(\"data-format\", data.format)\n }\n if (data.hasOwnProperty(\"sortable\")) {\n th.setAttribute(\"data-sortable\", data.sortable)\n }\n\n if (data.hasOwnProperty(\"hidden\")) {\n if (data.hidden !== false) {\n this.columns().hide([column])\n }\n }\n\n if (data.hasOwnProperty(\"sort\") && data.select.length === 1) {\n this.columns().sort(data.select[0], data.sort, true)\n }\n })\n })\n }\n\n if (this.hasRows) {\n this.data.forEach((row, i) => {\n row.dataIndex = i\n Array.from(row.cells).forEach(cell => {\n cell.data = cell.innerHTML\n })\n })\n\n if (this.selectedColumns.length) {\n this.data.forEach(row => {\n Array.from(row.cells).forEach((cell, i) => {\n if (this.selectedColumns.includes(i)) {\n this.columnRenderers.forEach(options => {\n if (options.columns.includes(i)) {\n cell.innerHTML = options.renderer.call(this, cell.data, cell, row)\n }\n })\n }\n })\n })\n }\n\n this.columns().rebuild()\n }\n\n this.render(\"header\")\n }\n\n /**\n * Destroy the instance\n * @return {void}\n */\n destroy() {\n this.dom.innerHTML = this.initialLayout\n\n // Remove the className\n this.dom.classList.remove(\"dataTable-table\")\n\n // Remove the containers\n this.wrapper.parentNode.replaceChild(this.dom, this.wrapper)\n\n this.initialized = false\n\n window.removeEventListener(\"resize\", this.listeners.onResize)\n }\n\n /**\n * Update the instance\n * @return {Void}\n */\n update() {\n this.wrapper.classList.remove(\"dataTable-empty\")\n\n this.paginate(this)\n this.render(\"page\")\n\n this.links = []\n\n let i = this.pages.length\n while (i--) {\n const num = i + 1\n this.links[i] = button(i === 0 ? \"active\" : \"\", num, num)\n }\n\n this.sorting = false\n\n this.render(\"pager\")\n\n this.rows().update()\n\n this.emit(\"datatable.update\")\n }\n\n /**\n * Sort rows into pages\n * @return {Number}\n */\n paginate() {\n const perPage = this.options.perPage\n let rows = this.activeRows\n\n if (this.searching) {\n rows = []\n\n this.searchData.forEach(index => rows.push(this.activeRows[index]))\n }\n\n if (this.options.paging) {\n // Check for hidden columns\n this.pages = rows\n .map((tr, i) => i % perPage === 0 ? rows.slice(i, i + perPage) : null)\n .filter(page => page)\n } else {\n this.pages = [rows]\n }\n\n this.totalPages = this.lastPage = this.pages.length\n\n return this.totalPages\n }\n\n /**\n * Fix column widths\n * @return {Void}\n */\n fixColumns() {\n\n if ((this.options.scrollY.length || this.options.fixedColumns) && this.activeHeadings && this.activeHeadings.length) {\n let cells\n let hd = false\n this.columnWidths = []\n\n // If we have headings we need only set the widths on them\n // otherwise we need a temp header and the widths need applying to all cells\n if (this.dom.tHead) {\n\n if (this.options.scrollY.length) {\n hd = createElement(\"thead\")\n hd.appendChild(createElement(\"tr\"))\n hd.style.height = \"0px\"\n if (this.headerTable) {\n // move real header back into place\n this.dom.tHead = this.headerTable.tHead\n }\n }\n\n // Reset widths\n this.activeHeadings.forEach(cell => {\n cell.style.width = \"\"\n })\n\n const totalOffsetWidth = this.activeHeadings.reduce(\n (total, cell) => total + cell.offsetWidth,\n 0\n )\n\n this.activeHeadings.forEach((cell, i) => {\n const ow = cell.offsetWidth\n const w = ow / totalOffsetWidth * 100\n cell.style.width = `${w}%`\n this.columnWidths[i] = ow\n if (this.options.scrollY.length) {\n const th = createElement(\"th\")\n hd.firstElementChild.appendChild(th)\n th.style.width = `${w}%`\n th.style.paddingTop = \"0\"\n th.style.paddingBottom = \"0\"\n th.style.border = \"0\"\n }\n })\n\n if (this.options.scrollY.length) {\n const container = this.dom.parentElement\n if (!this.headerTable) {\n this.headerTable = createElement(\"table\", {\n class: \"dataTable-table\"\n })\n const headercontainer = createElement(\"div\", {\n class: \"dataTable-headercontainer\"\n })\n headercontainer.appendChild(this.headerTable)\n container.parentElement.insertBefore(headercontainer, container)\n }\n const thd = this.dom.tHead\n this.dom.replaceChild(hd, thd)\n this.headerTable.tHead = thd\n\n // Compensate for scrollbars.\n this.headerTable.parentElement.style.paddingRight = `${\n this.headerTable.clientWidth -\n this.dom.clientWidth +\n parseInt(\n this.headerTable.parentElement.style.paddingRight ||\n \"0\",\n 10\n )\n }px`\n\n if (container.scrollHeight > container.clientHeight) {\n // scrollbars on one page means scrollbars on all pages.\n container.style.overflowY = \"scroll\"\n }\n }\n\n } else {\n cells = []\n\n // Make temperary headings\n hd = createElement(\"thead\")\n const r = createElement(\"tr\")\n Array.from(this.dom.tBodies[0].rows[0].cells).forEach(() => {\n const th = createElement(\"th\")\n r.appendChild(th)\n cells.push(th)\n })\n\n hd.appendChild(r)\n this.dom.insertBefore(hd, this.body)\n\n const widths = []\n cells.forEach((cell, i) => {\n const ow = cell.offsetWidth\n const w = ow / this.rect.width * 100\n widths.push(w)\n this.columnWidths[i] = ow\n })\n\n this.data.forEach(row => {\n Array.from(row.cells).forEach((cell, i) => {\n if (this.columns(cell.cellIndex).visible())\n cell.style.width = `${widths[i]}%`\n })\n })\n\n // Discard the temp header\n this.dom.removeChild(hd)\n }\n }\n }\n\n /**\n * Fix the container height\n * @return {Void}\n */\n fixHeight() {\n if (this.options.fixedHeight) {\n this.container.style.height = null\n this.rect = this.container.getBoundingClientRect()\n this.container.style.height = `${this.rect.height}px`\n }\n }\n\n /**\n * Perform a search of the data set\n * @param {string} query\n * @return {void}\n */\n search(query) {\n if (!this.hasRows) return false\n\n query = query.toLowerCase()\n\n this.currentPage = 1\n this.searching = true\n this.searchData = []\n\n if (!query.length) {\n this.searching = false\n this.update()\n this.emit(\"datatable.search\", query, this.searchData)\n this.wrapper.classList.remove(\"search-results\")\n return false\n }\n\n this.clear()\n\n this.data.forEach((row, idx) => {\n const inArray = this.searchData.includes(row)\n\n // https://github.com/Mobius1/Vanilla-DataTables/issues/12\n const doesQueryMatch = query.split(\" \").reduce((bool, word) => {\n let includes = false\n let cell = null\n let content = null\n\n for (let x = 0; x < row.cells.length; x++) {\n cell = row.cells[x]\n content = cell.hasAttribute(\"data-content\") ? cell.getAttribute(\"data-content\") : cell.textContent\n\n if (\n content.toLowerCase().includes(word) &&\n this.columns(cell.cellIndex).visible()\n ) {\n includes = true\n break\n }\n }\n\n return bool && includes\n }, true)\n\n if (doesQueryMatch && !inArray) {\n row.searchIndex = idx\n this.searchData.push(idx)\n } else {\n row.searchIndex = null\n }\n })\n\n this.wrapper.classList.add(\"search-results\")\n\n if (!this.searchData.length) {\n this.wrapper.classList.remove(\"search-results\")\n\n this.setMessage(this.options.labels.noResults)\n } else {\n this.update()\n }\n\n this.emit(\"datatable.search\", query, this.searchData)\n }\n\n /**\n * Change page\n * @param {int} page\n * @return {void}\n */\n page(page) {\n // We don't want to load the current page again.\n if (page == this.currentPage) {\n return false\n }\n\n if (!isNaN(page)) {\n this.currentPage = parseInt(page, 10)\n }\n\n if (page > this.pages.length || page < 0) {\n return false\n }\n\n this.render(\"page\")\n this.render(\"pager\")\n\n this.emit(\"datatable.page\", page)\n }\n\n /**\n * Sort by column\n * @param {int} column - The column no.\n * @param {string} direction - asc or desc\n * @return {void}\n */\n sortColumn(column, direction) {\n // Use columns API until sortColumn method is removed\n this.columns().sort(column, direction)\n }\n\n /**\n * Add new row data\n * @param {object} data\n */\n insert(data) {\n let rows = []\n if (isObject(data)) {\n if (data.headings) {\n if (!this.hasHeadings && !this.hasRows) {\n const tr = createElement(\"tr\")\n data.headings.forEach(heading => {\n const th = createElement(\"th\", {\n html: heading\n })\n\n tr.appendChild(th)\n })\n this.head.appendChild(tr)\n\n this.header = tr\n this.headings = [].slice.call(tr.cells)\n this.hasHeadings = true\n\n // Re-enable sorting if it was disabled due\n // to missing header\n this.options.sortable = this.initialSortable\n\n // Allow sorting on new header\n this.render(\"header\")\n\n // Activate newly added headings\n this.activeHeadings = this.headings.slice()\n }\n }\n\n if (data.data && Array.isArray(data.data)) {\n rows = data.data\n }\n } else if (Array.isArray(data)) {\n data.forEach(row => {\n const r = []\n Object.entries(row).forEach(([heading, cell]) => {\n\n const index = this.labels.indexOf(heading)\n\n if (index > -1) {\n r[index] = cell\n }\n })\n rows.push(r)\n })\n }\n\n if (rows.length) {\n this.rows().add(rows)\n\n this.hasRows = true\n }\n\n this.update()\n this.setColumns()\n this.fixColumns()\n }\n\n /**\n * Refresh the instance\n * @return {void}\n */\n refresh() {\n if (this.options.searchable) {\n this.input.value = \"\"\n this.searching = false\n }\n this.currentPage = 1\n this.onFirstPage = true\n this.update()\n\n this.emit(\"datatable.refresh\")\n }\n\n /**\n * Truncate the table\n * @param {mixes} html - HTML string or HTMLElement\n * @return {void}\n */\n clear(html) {\n if (this.body) {\n flush(this.body)\n }\n\n let parent = this.body\n if (!this.body) {\n parent = this.dom\n }\n\n if (html) {\n if (typeof html === \"string\") {\n const frag = document.createDocumentFragment()\n frag.innerHTML = html\n }\n\n parent.appendChild(html)\n }\n }\n\n /**\n * Export table to various formats (csv, txt or sql)\n * @param {Object} userOptions User options\n * @return {Boolean}\n */\n export(userOptions) {\n if (!this.hasHeadings && !this.hasRows) return false\n\n const headers = this.activeHeadings\n let rows = []\n const arr = []\n let i\n let x\n let str\n let link\n\n const defaults = {\n download: true,\n skipColumn: [],\n\n // csv\n lineDelimiter: \"\\n\",\n columnDelimiter: \",\",\n\n // sql\n tableName: \"myTable\",\n\n // json\n replacer: null,\n space: 4\n }\n\n // Check for the options object\n if (!isObject(userOptions)) {\n return false\n }\n\n const options = {\n ...defaults,\n ...userOptions\n }\n\n if (options.type) {\n if (options.type === \"txt\" || options.type === \"csv\") {\n // Include headings\n rows[0] = this.header\n }\n\n // Selection or whole table\n if (options.selection) {\n // Page number\n if (!isNaN(options.selection)) {\n rows = rows.concat(this.pages[options.selection - 1])\n } else if (Array.isArray(options.selection)) {\n // Array of page numbers\n for (i = 0; i < options.selection.length; i++) {\n rows = rows.concat(this.pages[options.selection[i] - 1])\n }\n }\n } else {\n rows = rows.concat(this.activeRows)\n }\n\n // Only proceed if we have data\n if (rows.length) {\n if (options.type === \"txt\" || options.type === \"csv\") {\n str = \"\"\n\n for (i = 0; i < rows.length; i++) {\n for (x = 0; x < rows[i].cells.length; x++) {\n // Check for column skip and visibility\n if (\n !options.skipColumn.includes(headers[x].originalCellIndex) &&\n this.columns(headers[x].originalCellIndex).visible()\n ) {\n let text = rows[i].cells[x].textContent\n text = text.trim()\n text = text.replace(/\\s{2,}/g, \" \")\n text = text.replace(/\\n/g, \" \")\n text = text.replace(/\"/g, \"\\\"\\\"\")\n //have to manually encode \"#\" as encodeURI leaves it as is.\n text = text.replace(/#/g, \"%23\")\n if (text.includes(\",\"))\n text = `\"${text}\"`\n\n\n str += text + options.columnDelimiter\n }\n }\n // Remove trailing column delimiter\n str = str.trim().substring(0, str.length - 1)\n\n // Apply line delimiter\n str += options.lineDelimiter\n }\n\n // Remove trailing line delimiter\n str = str.trim().substring(0, str.length - 1)\n\n if (options.download) {\n str = `data:text/csv;charset=utf-8,${str}`\n }\n } else if (options.type === \"sql\") {\n // Begin INSERT statement\n str = `INSERT INTO \\`${options.tableName}\\` (`\n\n // Convert table headings to column names\n for (i = 0; i < headers.length; i++) {\n // Check for column skip and column visibility\n if (\n !options.skipColumn.includes(headers[i].originalCellIndex) &&\n this.columns(headers[i].originalCellIndex).visible()\n ) {\n str += `\\`${headers[i].textContent}\\`,`\n }\n }\n\n // Remove trailing comma\n str = str.trim().substring(0, str.length - 1)\n\n // Begin VALUES\n str += \") VALUES \"\n\n // Iterate rows and convert cell data to column values\n for (i = 0; i < rows.length; i++) {\n str += \"(\"\n\n for (x = 0; x < rows[i].cells.length; x++) {\n // Check for column skip and column visibility\n if (\n !options.skipColumn.includes(headers[x].originalCellIndex) &&\n this.columns(headers[x].originalCellIndex).visible()\n ) {\n str += `\"${rows[i].cells[x].textContent}\",`\n }\n }\n\n // Remove trailing comma\n str = str.trim().substring(0, str.length - 1)\n\n // end VALUES\n str += \"),\"\n }\n\n // Remove trailing comma\n str = str.trim().substring(0, str.length - 1)\n\n // Add trailing colon\n str += \";\"\n\n if (options.download) {\n str = `data:application/sql;charset=utf-8,${str}`\n }\n } else if (options.type === \"json\") {\n // Iterate rows\n for (x = 0; x < rows.length; x++) {\n arr[x] = arr[x] || {}\n // Iterate columns\n for (i = 0; i < headers.length; i++) {\n // Check for column skip and column visibility\n if (\n !options.skipColumn.includes(headers[i].originalCellIndex) &&\n this.columns(headers[i].originalCellIndex).visible()\n ) {\n arr[x][headers[i].textContent] = rows[x].cells[i].textContent\n }\n }\n }\n\n // Convert the array of objects to JSON string\n str = JSON.stringify(arr, options.replacer, options.space)\n\n if (options.download) {\n str = `data:application/json;charset=utf-8,${str}`\n }\n }\n\n // Download\n if (options.download) {\n // Filename\n options.filename = options.filename || \"datatable_export\"\n options.filename += `.${options.type}`\n\n str = encodeURI(str)\n\n // Create a link to trigger the download\n link = document.createElement(\"a\")\n link.href = str\n link.download = options.filename\n\n // Append the link\n document.body.appendChild(link)\n\n // Trigger the download\n link.click()\n\n // Remove the link\n document.body.removeChild(link)\n }\n\n return str\n }\n }\n\n return false\n }\n\n /**\n * Import data to the table\n * @param {Object} userOptions User options\n * @return {Boolean}\n */\n import(userOptions) {\n let obj = false\n const defaults = {\n // csv\n lineDelimiter: \"\\n\",\n columnDelimiter: \",\",\n removeDoubleQuotes: false\n }\n\n // Check for the options object\n if (!isObject(userOptions)) {\n return false\n }\n\n const options = {\n ...defaults,\n ...userOptions\n }\n\n if (options.data.length || isObject(options.data)) {\n // Import CSV\n if (options.type === \"csv\") {\n obj = {\n data: []\n }\n\n // Split the string into rows\n const rows = options.data.split(options.lineDelimiter)\n\n if (rows.length) {\n\n if (options.headings) {\n obj.headings = rows[0].split(options.columnDelimiter)\n if (options.removeDoubleQuotes) {\n obj.headings = obj.headings.map(e => e.trim().replace(/(^\"|\"$)/g, \"\"))\n }\n rows.shift()\n }\n\n rows.forEach((row, i) => {\n obj.data[i] = []\n\n // Split the rows into values\n const values = row.split(options.columnDelimiter)\n\n if (values.length) {\n values.forEach(value => {\n if (options.removeDoubleQuotes) {\n value = value.trim().replace(/(^\"|\"$)/g, \"\")\n }\n obj.data[i].push(value)\n })\n }\n })\n }\n } else if (options.type === \"json\") {\n const json = isJson(options.data)\n\n // Valid JSON string\n if (json) {\n obj = {\n headings: [],\n data: []\n }\n\n json.forEach((data, i) => {\n obj.data[i] = []\n Object.entries(data).forEach(([column, value]) => {\n if (!obj.headings.includes(column)) {\n obj.headings.push(column)\n }\n\n obj.data[i].push(value)\n })\n })\n } else {\n // console.warn(\"That's not valid JSON!\")\n }\n }\n\n if (isObject(options.data)) {\n obj = options.data\n }\n\n if (obj) {\n // Add the rows\n this.insert(obj)\n }\n }\n\n return false\n }\n\n /**\n * Print the table\n * @return {void}\n */\n print() {\n const headings = this.activeHeadings\n const rows = this.activeRows\n const table = createElement(\"table\")\n const thead = createElement(\"thead\")\n const tbody = createElement(\"tbody\")\n\n const tr = createElement(\"tr\")\n headings.forEach(th => {\n tr.appendChild(\n createElement(\"th\", {\n html: th.textContent\n })\n )\n })\n\n thead.appendChild(tr)\n\n rows.forEach(row => {\n const tr = createElement(\"tr\")\n Array.from(row.cells).forEach(cell => {\n tr.appendChild(\n createElement(\"td\", {\n html: cell.textContent\n })\n )\n })\n tbody.appendChild(tr)\n })\n\n table.appendChild(thead)\n table.appendChild(tbody)\n\n // Open new window\n const w = window.open()\n\n // Append the table to the body\n w.document.body.appendChild(table)\n\n // Print\n w.print()\n }\n\n /**\n * Show a message in the table\n * @param {string} message\n */\n setMessage(message) {\n let colspan = 1\n\n if (this.hasRows) {\n colspan = this.data[0].cells.length\n } else if (this.activeHeadings.length) {\n colspan = this.activeHeadings.length\n }\n\n this.wrapper.classList.add(\"dataTable-empty\")\n\n if (this.label) {\n this.label.innerHTML = \"\"\n }\n this.totalPages = 0\n this.render(\"pager\")\n\n this.clear(\n createElement(\"tr\", {\n html: `${message}`\n })\n )\n }\n\n /**\n * Columns API access\n * @return {Object} new Columns instance\n */\n columns(columns) {\n return new Columns(this, columns)\n }\n\n /**\n * Rows API access\n * @return {Object} new Rows instance\n */\n rows(rows) {\n return new Rows(this, rows)\n }\n\n /**\n * Add custom event listener\n * @param {String} event\n * @param {Function} callback\n * @return {Void}\n */\n on(event, callback) {\n this.events = this.events || {}\n this.events[event] = this.events[event] || []\n this.events[event].push(callback)\n }\n\n /**\n * Remove custom event listener\n * @param {String} event\n * @param {Function} callback\n * @return {Void}\n */\n off(event, callback) {\n this.events = this.events || {}\n if (event in this.events === false) return\n this.events[event].splice(this.events[event].indexOf(callback), 1)\n }\n\n /**\n * Fire custom event\n * @param {String} event\n * @return {Void}\n */\n emit(event) {\n this.events = this.events || {}\n if (event in this.events === false) return\n for (let i = 0; i < this.events[event].length; i++) {\n this.events[event][i].apply(this, Array.prototype.slice.call(arguments, 1))\n }\n }\n}\n","/*!\n* sweetalert2 v11.4.37\n* Released under the MIT License.\n*/\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.Sweetalert2 = factory());\n}(this, function () { 'use strict';\n\n /**\n * This module contains `WeakMap`s for each effectively-\"private property\" that a `Swal` has.\n * For example, to set the private property \"foo\" of `this` to \"bar\", you can `privateProps.foo.set(this, 'bar')`\n * This is the approach that Babel will probably take to implement private methods/fields\n * https://github.com/tc39/proposal-private-methods\n * https://github.com/babel/babel/pull/7555\n * Once we have the changes from that PR in Babel, and our core class fits reasonable in *one module*\n * then we can use that language feature.\n */\n var privateProps = {\n awaitingPromise: new WeakMap(),\n promise: new WeakMap(),\n innerParams: new WeakMap(),\n domCache: new WeakMap()\n };\n\n const swalPrefix = 'swal2-';\n /**\n * @param {string[]} items\n * @returns {object}\n */\n\n const prefix = items => {\n const result = {};\n\n for (const i in items) {\n result[items[i]] = swalPrefix + items[i];\n }\n\n return result;\n };\n const swalClasses = prefix(['container', 'shown', 'height-auto', 'iosfix', 'popup', 'modal', 'no-backdrop', 'no-transition', 'toast', 'toast-shown', 'show', 'hide', 'close', 'title', 'html-container', 'actions', 'confirm', 'deny', 'cancel', 'default-outline', 'footer', 'icon', 'icon-content', 'image', 'input', 'file', 'range', 'select', 'radio', 'checkbox', 'label', 'textarea', 'inputerror', 'input-label', 'validation-message', 'progress-steps', 'active-progress-step', 'progress-step', 'progress-step-line', 'loader', 'loading', 'styled', 'top', 'top-start', 'top-end', 'top-left', 'top-right', 'center', 'center-start', 'center-end', 'center-left', 'center-right', 'bottom', 'bottom-start', 'bottom-end', 'bottom-left', 'bottom-right', 'grow-row', 'grow-column', 'grow-fullscreen', 'rtl', 'timer-progress-bar', 'timer-progress-bar-container', 'scrollbar-measure', 'icon-success', 'icon-warning', 'icon-info', 'icon-question', 'icon-error', 'no-war']);\n const iconTypes = prefix(['success', 'warning', 'info', 'question', 'error']);\n\n const consolePrefix = 'SweetAlert2:';\n /**\n * Filter the unique values into a new array\n *\n * @param {Array} arr\n * @returns {Array}\n */\n\n const uniqueArray = arr => {\n const result = [];\n\n for (let i = 0; i < arr.length; i++) {\n if (result.indexOf(arr[i]) === -1) {\n result.push(arr[i]);\n }\n }\n\n return result;\n };\n /**\n * Capitalize the first letter of a string\n *\n * @param {string} str\n * @returns {string}\n */\n\n const capitalizeFirstLetter = str => str.charAt(0).toUpperCase() + str.slice(1);\n /**\n * Standardize console warnings\n *\n * @param {string | Array} message\n */\n\n const warn = message => {\n console.warn(\"\".concat(consolePrefix, \" \").concat(typeof message === 'object' ? message.join(' ') : message));\n };\n /**\n * Standardize console errors\n *\n * @param {string} message\n */\n\n const error = message => {\n console.error(\"\".concat(consolePrefix, \" \").concat(message));\n };\n /**\n * Private global state for `warnOnce`\n *\n * @type {Array}\n * @private\n */\n\n const previousWarnOnceMessages = [];\n /**\n * Show a console warning, but only if it hasn't already been shown\n *\n * @param {string} message\n */\n\n const warnOnce = message => {\n if (!previousWarnOnceMessages.includes(message)) {\n previousWarnOnceMessages.push(message);\n warn(message);\n }\n };\n /**\n * Show a one-time console warning about deprecated params/methods\n *\n * @param {string} deprecatedParam\n * @param {string} useInstead\n */\n\n const warnAboutDeprecation = (deprecatedParam, useInstead) => {\n warnOnce(\"\\\"\".concat(deprecatedParam, \"\\\" is deprecated and will be removed in the next major release. Please use \\\"\").concat(useInstead, \"\\\" instead.\"));\n };\n /**\n * If `arg` is a function, call it (with no arguments or context) and return the result.\n * Otherwise, just pass the value through\n *\n * @param {Function | any} arg\n * @returns {any}\n */\n\n const callIfFunction = arg => typeof arg === 'function' ? arg() : arg;\n /**\n * @param {any} arg\n * @returns {boolean}\n */\n\n const hasToPromiseFn = arg => arg && typeof arg.toPromise === 'function';\n /**\n * @param {any} arg\n * @returns {Promise}\n */\n\n const asPromise = arg => hasToPromiseFn(arg) ? arg.toPromise() : Promise.resolve(arg);\n /**\n * @param {any} arg\n * @returns {boolean}\n */\n\n const isPromise = arg => arg && Promise.resolve(arg) === arg;\n /**\n * @param {Array} arr\n * @returns {any}\n */\n\n const getRandomElement = arr => arr[Math.floor(Math.random() * arr.length)];\n\n /**\n * Gets the popup container which contains the backdrop and the popup itself.\n *\n * @returns {HTMLElement | null}\n */\n\n const getContainer = () => document.body.querySelector(\".\".concat(swalClasses.container));\n /**\n * @param {string} selectorString\n * @returns {HTMLElement | null}\n */\n\n const elementBySelector = selectorString => {\n const container = getContainer();\n return container ? container.querySelector(selectorString) : null;\n };\n /**\n * @param {string} className\n * @returns {HTMLElement | null}\n */\n\n const elementByClass = className => {\n return elementBySelector(\".\".concat(className));\n };\n /**\n * @returns {HTMLElement | null}\n */\n\n\n const getPopup = () => elementByClass(swalClasses.popup);\n /**\n * @returns {HTMLElement | null}\n */\n\n const getIcon = () => elementByClass(swalClasses.icon);\n /**\n * @returns {HTMLElement | null}\n */\n\n const getTitle = () => elementByClass(swalClasses.title);\n /**\n * @returns {HTMLElement | null}\n */\n\n const getHtmlContainer = () => elementByClass(swalClasses['html-container']);\n /**\n * @returns {HTMLElement | null}\n */\n\n const getImage = () => elementByClass(swalClasses.image);\n /**\n * @returns {HTMLElement | null}\n */\n\n const getProgressSteps = () => elementByClass(swalClasses['progress-steps']);\n /**\n * @returns {HTMLElement | null}\n */\n\n const getValidationMessage = () => elementByClass(swalClasses['validation-message']);\n /**\n * @returns {HTMLElement | null}\n */\n\n const getConfirmButton = () => elementBySelector(\".\".concat(swalClasses.actions, \" .\").concat(swalClasses.confirm));\n /**\n * @returns {HTMLElement | null}\n */\n\n const getDenyButton = () => elementBySelector(\".\".concat(swalClasses.actions, \" .\").concat(swalClasses.deny));\n /**\n * @returns {HTMLElement | null}\n */\n\n const getInputLabel = () => elementByClass(swalClasses['input-label']);\n /**\n * @returns {HTMLElement | null}\n */\n\n const getLoader = () => elementBySelector(\".\".concat(swalClasses.loader));\n /**\n * @returns {HTMLElement | null}\n */\n\n const getCancelButton = () => elementBySelector(\".\".concat(swalClasses.actions, \" .\").concat(swalClasses.cancel));\n /**\n * @returns {HTMLElement | null}\n */\n\n const getActions = () => elementByClass(swalClasses.actions);\n /**\n * @returns {HTMLElement | null}\n */\n\n const getFooter = () => elementByClass(swalClasses.footer);\n /**\n * @returns {HTMLElement | null}\n */\n\n const getTimerProgressBar = () => elementByClass(swalClasses['timer-progress-bar']);\n /**\n * @returns {HTMLElement | null}\n */\n\n const getCloseButton = () => elementByClass(swalClasses.close); // https://github.com/jkup/focusable/blob/master/index.js\n\n const focusable = \"\\n a[href],\\n area[href],\\n input:not([disabled]),\\n select:not([disabled]),\\n textarea:not([disabled]),\\n button:not([disabled]),\\n iframe,\\n object,\\n embed,\\n [tabindex=\\\"0\\\"],\\n [contenteditable],\\n audio[controls],\\n video[controls],\\n summary\\n\";\n /**\n * @returns {HTMLElement[]}\n */\n\n const getFocusableElements = () => {\n const focusableElementsWithTabindex = Array.from(getPopup().querySelectorAll('[tabindex]:not([tabindex=\"-1\"]):not([tabindex=\"0\"])')) // sort according to tabindex\n .sort((a, b) => {\n const tabindexA = parseInt(a.getAttribute('tabindex'));\n const tabindexB = parseInt(b.getAttribute('tabindex'));\n\n if (tabindexA > tabindexB) {\n return 1;\n } else if (tabindexA < tabindexB) {\n return -1;\n }\n\n return 0;\n });\n const otherFocusableElements = Array.from(getPopup().querySelectorAll(focusable)).filter(el => el.getAttribute('tabindex') !== '-1');\n return uniqueArray(focusableElementsWithTabindex.concat(otherFocusableElements)).filter(el => isVisible(el));\n };\n /**\n * @returns {boolean}\n */\n\n const isModal = () => {\n return hasClass(document.body, swalClasses.shown) && !hasClass(document.body, swalClasses['toast-shown']) && !hasClass(document.body, swalClasses['no-backdrop']);\n };\n /**\n * @returns {boolean}\n */\n\n const isToast = () => {\n return getPopup() && hasClass(getPopup(), swalClasses.toast);\n };\n /**\n * @returns {boolean}\n */\n\n const isLoading = () => {\n return getPopup().hasAttribute('data-loading');\n };\n\n const states = {\n previousBodyPadding: null\n };\n /**\n * Securely set innerHTML of an element\n * https://github.com/sweetalert2/sweetalert2/issues/1926\n *\n * @param {HTMLElement} elem\n * @param {string} html\n */\n\n const setInnerHtml = (elem, html) => {\n elem.textContent = '';\n\n if (html) {\n const parser = new DOMParser();\n const parsed = parser.parseFromString(html, \"text/html\");\n Array.from(parsed.querySelector('head').childNodes).forEach(child => {\n elem.appendChild(child);\n });\n Array.from(parsed.querySelector('body').childNodes).forEach(child => {\n if (child instanceof HTMLVideoElement || child instanceof HTMLAudioElement) {\n elem.appendChild(child.cloneNode(true)); // https://github.com/sweetalert2/sweetalert2/issues/2507\n } else {\n elem.appendChild(child);\n }\n });\n }\n };\n /**\n * @param {HTMLElement} elem\n * @param {string} className\n * @returns {boolean}\n */\n\n const hasClass = (elem, className) => {\n if (!className) {\n return false;\n }\n\n const classList = className.split(/\\s+/);\n\n for (let i = 0; i < classList.length; i++) {\n if (!elem.classList.contains(classList[i])) {\n return false;\n }\n }\n\n return true;\n };\n /**\n * @param {HTMLElement} elem\n * @param {SweetAlertOptions} params\n */\n\n const removeCustomClasses = (elem, params) => {\n Array.from(elem.classList).forEach(className => {\n if (!Object.values(swalClasses).includes(className) && !Object.values(iconTypes).includes(className) && !Object.values(params.showClass).includes(className)) {\n elem.classList.remove(className);\n }\n });\n };\n /**\n * @param {HTMLElement} elem\n * @param {SweetAlertOptions} params\n * @param {string} className\n */\n\n\n const applyCustomClass = (elem, params, className) => {\n removeCustomClasses(elem, params);\n\n if (params.customClass && params.customClass[className]) {\n if (typeof params.customClass[className] !== 'string' && !params.customClass[className].forEach) {\n return warn(\"Invalid type of customClass.\".concat(className, \"! Expected string or iterable object, got \\\"\").concat(typeof params.customClass[className], \"\\\"\"));\n }\n\n addClass(elem, params.customClass[className]);\n }\n };\n /**\n * @param {HTMLElement} popup\n * @param {import('./renderers/renderInput').InputClass} inputClass\n * @returns {HTMLInputElement | null}\n */\n\n const getInput = (popup, inputClass) => {\n if (!inputClass) {\n return null;\n }\n\n switch (inputClass) {\n case 'select':\n case 'textarea':\n case 'file':\n return popup.querySelector(\".\".concat(swalClasses.popup, \" > .\").concat(swalClasses[inputClass]));\n\n case 'checkbox':\n return popup.querySelector(\".\".concat(swalClasses.popup, \" > .\").concat(swalClasses.checkbox, \" input\"));\n\n case 'radio':\n return popup.querySelector(\".\".concat(swalClasses.popup, \" > .\").concat(swalClasses.radio, \" input:checked\")) || popup.querySelector(\".\".concat(swalClasses.popup, \" > .\").concat(swalClasses.radio, \" input:first-child\"));\n\n case 'range':\n return popup.querySelector(\".\".concat(swalClasses.popup, \" > .\").concat(swalClasses.range, \" input\"));\n\n default:\n return popup.querySelector(\".\".concat(swalClasses.popup, \" > .\").concat(swalClasses.input));\n }\n };\n /**\n * @param {HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement} input\n */\n\n const focusInput = input => {\n input.focus(); // place cursor at end of text in text input\n\n if (input.type !== 'file') {\n // http://stackoverflow.com/a/2345915\n const val = input.value;\n input.value = '';\n input.value = val;\n }\n };\n /**\n * @param {HTMLElement | HTMLElement[] | null} target\n * @param {string | string[] | readonly string[]} classList\n * @param {boolean} condition\n */\n\n const toggleClass = (target, classList, condition) => {\n if (!target || !classList) {\n return;\n }\n\n if (typeof classList === 'string') {\n classList = classList.split(/\\s+/).filter(Boolean);\n }\n\n classList.forEach(className => {\n if (Array.isArray(target)) {\n target.forEach(elem => {\n condition ? elem.classList.add(className) : elem.classList.remove(className);\n });\n } else {\n condition ? target.classList.add(className) : target.classList.remove(className);\n }\n });\n };\n /**\n * @param {HTMLElement | HTMLElement[] | null} target\n * @param {string | string[] | readonly string[]} classList\n */\n\n const addClass = (target, classList) => {\n toggleClass(target, classList, true);\n };\n /**\n * @param {HTMLElement | HTMLElement[] | null} target\n * @param {string | string[] | readonly string[]} classList\n */\n\n const removeClass = (target, classList) => {\n toggleClass(target, classList, false);\n };\n /**\n * Get direct child of an element by class name\n *\n * @param {HTMLElement} elem\n * @param {string} className\n * @returns {HTMLElement | null}\n */\n\n const getDirectChildByClass = (elem, className) => {\n const children = Array.from(elem.children);\n\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n\n if (child instanceof HTMLElement && hasClass(child, className)) {\n return child;\n }\n }\n };\n /**\n * @param {HTMLElement} elem\n * @param {string} property\n * @param {*} value\n */\n\n const applyNumericalStyle = (elem, property, value) => {\n if (value === \"\".concat(parseInt(value))) {\n value = parseInt(value);\n }\n\n if (value || parseInt(value) === 0) {\n elem.style[property] = typeof value === 'number' ? \"\".concat(value, \"px\") : value;\n } else {\n elem.style.removeProperty(property);\n }\n };\n /**\n * @param {HTMLElement} elem\n * @param {string} display\n */\n\n const show = function (elem) {\n let display = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'flex';\n elem.style.display = display;\n };\n /**\n * @param {HTMLElement} elem\n */\n\n const hide = elem => {\n elem.style.display = 'none';\n };\n /**\n * @param {HTMLElement} parent\n * @param {string} selector\n * @param {string} property\n * @param {string} value\n */\n\n const setStyle = (parent, selector, property, value) => {\n /** @type {HTMLElement} */\n const el = parent.querySelector(selector);\n\n if (el) {\n el.style[property] = value;\n }\n };\n /**\n * @param {HTMLElement} elem\n * @param {any} condition\n * @param {string} display\n */\n\n const toggle = function (elem, condition) {\n let display = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'flex';\n condition ? show(elem, display) : hide(elem);\n };\n /**\n * borrowed from jquery $(elem).is(':visible') implementation\n *\n * @param {HTMLElement} elem\n * @returns {boolean}\n */\n\n const isVisible = elem => !!(elem && (elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length));\n /**\n * @returns {boolean}\n */\n\n const allButtonsAreHidden = () => !isVisible(getConfirmButton()) && !isVisible(getDenyButton()) && !isVisible(getCancelButton());\n /**\n * @returns {boolean}\n */\n\n const isScrollable = elem => !!(elem.scrollHeight > elem.clientHeight);\n /**\n * borrowed from https://stackoverflow.com/a/46352119\n *\n * @param {HTMLElement} elem\n * @returns {boolean}\n */\n\n const hasCssAnimation = elem => {\n const style = window.getComputedStyle(elem);\n const animDuration = parseFloat(style.getPropertyValue('animation-duration') || '0');\n const transDuration = parseFloat(style.getPropertyValue('transition-duration') || '0');\n return animDuration > 0 || transDuration > 0;\n };\n /**\n * @param {number} timer\n * @param {boolean} reset\n */\n\n const animateTimerProgressBar = function (timer) {\n let reset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n const timerProgressBar = getTimerProgressBar();\n\n if (isVisible(timerProgressBar)) {\n if (reset) {\n timerProgressBar.style.transition = 'none';\n timerProgressBar.style.width = '100%';\n }\n\n setTimeout(() => {\n timerProgressBar.style.transition = \"width \".concat(timer / 1000, \"s linear\");\n timerProgressBar.style.width = '0%';\n }, 10);\n }\n };\n const stopTimerProgressBar = () => {\n const timerProgressBar = getTimerProgressBar();\n const timerProgressBarWidth = parseInt(window.getComputedStyle(timerProgressBar).width);\n timerProgressBar.style.removeProperty('transition');\n timerProgressBar.style.width = '100%';\n const timerProgressBarFullWidth = parseInt(window.getComputedStyle(timerProgressBar).width);\n const timerProgressBarPercent = timerProgressBarWidth / timerProgressBarFullWidth * 100;\n timerProgressBar.style.removeProperty('transition');\n timerProgressBar.style.width = \"\".concat(timerProgressBarPercent, \"%\");\n };\n\n const RESTORE_FOCUS_TIMEOUT = 100;\n\n /** @type {GlobalState} */\n\n const globalState = {};\n\n const focusPreviousActiveElement = () => {\n if (globalState.previousActiveElement instanceof HTMLElement) {\n globalState.previousActiveElement.focus();\n globalState.previousActiveElement = null;\n } else if (document.body) {\n document.body.focus();\n }\n };\n /**\n * Restore previous active (focused) element\n *\n * @param {boolean} returnFocus\n * @returns {Promise}\n */\n\n\n const restoreActiveElement = returnFocus => {\n return new Promise(resolve => {\n if (!returnFocus) {\n return resolve();\n }\n\n const x = window.scrollX;\n const y = window.scrollY;\n globalState.restoreFocusTimeout = setTimeout(() => {\n focusPreviousActiveElement();\n resolve();\n }, RESTORE_FOCUS_TIMEOUT); // issues/900\n\n window.scrollTo(x, y);\n });\n };\n\n /**\n * Detect Node env\n *\n * @returns {boolean}\n */\n const isNodeEnv = () => typeof window === 'undefined' || typeof document === 'undefined';\n\n const sweetHTML = \"\\n
    \\n \\n
      \\n
      \\n \\n

      \\n
      \\n \\n \\n
      \\n \\n \\n
      \\n \\n
      \\n \\n \\n
      \\n
      \\n
      \\n \\n \\n \\n
      \\n
      \\n
      \\n
      \\n
      \\n
      \\n\").replace(/(^|\\n)\\s*/g, '');\n /**\n * @returns {boolean}\n */\n\n const resetOldContainer = () => {\n const oldContainer = getContainer();\n\n if (!oldContainer) {\n return false;\n }\n\n oldContainer.remove();\n removeClass([document.documentElement, document.body], [swalClasses['no-backdrop'], swalClasses['toast-shown'], swalClasses['has-column']]);\n return true;\n };\n\n const resetValidationMessage = () => {\n globalState.currentInstance.resetValidationMessage();\n };\n\n const addInputChangeListeners = () => {\n const popup = getPopup();\n const input = getDirectChildByClass(popup, swalClasses.input);\n const file = getDirectChildByClass(popup, swalClasses.file);\n /** @type {HTMLInputElement} */\n\n const range = popup.querySelector(\".\".concat(swalClasses.range, \" input\"));\n /** @type {HTMLOutputElement} */\n\n const rangeOutput = popup.querySelector(\".\".concat(swalClasses.range, \" output\"));\n const select = getDirectChildByClass(popup, swalClasses.select);\n /** @type {HTMLInputElement} */\n\n const checkbox = popup.querySelector(\".\".concat(swalClasses.checkbox, \" input\"));\n const textarea = getDirectChildByClass(popup, swalClasses.textarea);\n input.oninput = resetValidationMessage;\n file.onchange = resetValidationMessage;\n select.onchange = resetValidationMessage;\n checkbox.onchange = resetValidationMessage;\n textarea.oninput = resetValidationMessage;\n\n range.oninput = () => {\n resetValidationMessage();\n rangeOutput.value = range.value;\n };\n\n range.onchange = () => {\n resetValidationMessage();\n rangeOutput.value = range.value;\n };\n };\n /**\n * @param {string | HTMLElement} target\n * @returns {HTMLElement}\n */\n\n\n const getTarget = target => typeof target === 'string' ? document.querySelector(target) : target;\n /**\n * @param {SweetAlertOptions} params\n */\n\n\n const setupAccessibility = params => {\n const popup = getPopup();\n popup.setAttribute('role', params.toast ? 'alert' : 'dialog');\n popup.setAttribute('aria-live', params.toast ? 'polite' : 'assertive');\n\n if (!params.toast) {\n popup.setAttribute('aria-modal', 'true');\n }\n };\n /**\n * @param {HTMLElement} targetElement\n */\n\n\n const setupRTL = targetElement => {\n if (window.getComputedStyle(targetElement).direction === 'rtl') {\n addClass(getContainer(), swalClasses.rtl);\n }\n };\n /**\n * Add modal + backdrop + no-war message for Russians to DOM\n *\n * @param {SweetAlertOptions} params\n */\n\n\n const init = params => {\n // Clean up the old popup container if it exists\n const oldContainerExisted = resetOldContainer();\n /* istanbul ignore if */\n\n if (isNodeEnv()) {\n error('SweetAlert2 requires document to initialize');\n return;\n }\n\n const container = document.createElement('div');\n container.className = swalClasses.container;\n\n if (oldContainerExisted) {\n addClass(container, swalClasses['no-transition']);\n }\n\n setInnerHtml(container, sweetHTML);\n const targetElement = getTarget(params.target);\n targetElement.appendChild(container);\n setupAccessibility(params);\n setupRTL(targetElement);\n addInputChangeListeners();\n };\n\n /**\n * @param {HTMLElement | object | string} param\n * @param {HTMLElement} target\n */\n\n const parseHtmlToContainer = (param, target) => {\n // DOM element\n if (param instanceof HTMLElement) {\n target.appendChild(param);\n } // Object\n else if (typeof param === 'object') {\n handleObject(param, target);\n } // Plain string\n else if (param) {\n setInnerHtml(target, param);\n }\n };\n /**\n * @param {object} param\n * @param {HTMLElement} target\n */\n\n const handleObject = (param, target) => {\n // JQuery element(s)\n if (param.jquery) {\n handleJqueryElem(target, param);\n } // For other objects use their string representation\n else {\n setInnerHtml(target, param.toString());\n }\n };\n /**\n * @param {HTMLElement} target\n * @param {HTMLElement} elem\n */\n\n\n const handleJqueryElem = (target, elem) => {\n target.textContent = '';\n\n if (0 in elem) {\n for (let i = 0; (i in elem); i++) {\n target.appendChild(elem[i].cloneNode(true));\n }\n } else {\n target.appendChild(elem.cloneNode(true));\n }\n };\n\n /**\n * @returns {'webkitAnimationEnd' | 'animationend' | false}\n */\n\n const animationEndEvent = (() => {\n // Prevent run in Node env\n\n /* istanbul ignore if */\n if (isNodeEnv()) {\n return false;\n }\n\n const testEl = document.createElement('div');\n const transEndEventNames = {\n WebkitAnimation: 'webkitAnimationEnd',\n // Chrome, Safari and Opera\n animation: 'animationend' // Standard syntax\n\n };\n\n for (const i in transEndEventNames) {\n if (Object.prototype.hasOwnProperty.call(transEndEventNames, i) && typeof testEl.style[i] !== 'undefined') {\n return transEndEventNames[i];\n }\n }\n\n return false;\n })();\n\n /**\n * Measure scrollbar width for padding body during modal show/hide\n * https://github.com/twbs/bootstrap/blob/master/js/src/modal.js\n *\n * @returns {number}\n */\n\n const measureScrollbar = () => {\n const scrollDiv = document.createElement('div');\n scrollDiv.className = swalClasses['scrollbar-measure'];\n document.body.appendChild(scrollDiv);\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;\n document.body.removeChild(scrollDiv);\n return scrollbarWidth;\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n\n const renderActions = (instance, params) => {\n const actions = getActions();\n const loader = getLoader(); // Actions (buttons) wrapper\n\n if (!params.showConfirmButton && !params.showDenyButton && !params.showCancelButton) {\n hide(actions);\n } else {\n show(actions);\n } // Custom class\n\n\n applyCustomClass(actions, params, 'actions'); // Render all the buttons\n\n renderButtons(actions, loader, params); // Loader\n\n setInnerHtml(loader, params.loaderHtml);\n applyCustomClass(loader, params, 'loader');\n };\n /**\n * @param {HTMLElement} actions\n * @param {HTMLElement} loader\n * @param {SweetAlertOptions} params\n */\n\n function renderButtons(actions, loader, params) {\n const confirmButton = getConfirmButton();\n const denyButton = getDenyButton();\n const cancelButton = getCancelButton(); // Render buttons\n\n renderButton(confirmButton, 'confirm', params);\n renderButton(denyButton, 'deny', params);\n renderButton(cancelButton, 'cancel', params);\n handleButtonsStyling(confirmButton, denyButton, cancelButton, params);\n\n if (params.reverseButtons) {\n if (params.toast) {\n actions.insertBefore(cancelButton, confirmButton);\n actions.insertBefore(denyButton, confirmButton);\n } else {\n actions.insertBefore(cancelButton, loader);\n actions.insertBefore(denyButton, loader);\n actions.insertBefore(confirmButton, loader);\n }\n }\n }\n /**\n * @param {HTMLElement} confirmButton\n * @param {HTMLElement} denyButton\n * @param {HTMLElement} cancelButton\n * @param {SweetAlertOptions} params\n */\n\n\n function handleButtonsStyling(confirmButton, denyButton, cancelButton, params) {\n if (!params.buttonsStyling) {\n removeClass([confirmButton, denyButton, cancelButton], swalClasses.styled);\n return;\n }\n\n addClass([confirmButton, denyButton, cancelButton], swalClasses.styled); // Buttons background colors\n\n if (params.confirmButtonColor) {\n confirmButton.style.backgroundColor = params.confirmButtonColor;\n addClass(confirmButton, swalClasses['default-outline']);\n }\n\n if (params.denyButtonColor) {\n denyButton.style.backgroundColor = params.denyButtonColor;\n addClass(denyButton, swalClasses['default-outline']);\n }\n\n if (params.cancelButtonColor) {\n cancelButton.style.backgroundColor = params.cancelButtonColor;\n addClass(cancelButton, swalClasses['default-outline']);\n }\n }\n /**\n * @param {HTMLElement} button\n * @param {'confirm' | 'deny' | 'cancel'} buttonType\n * @param {SweetAlertOptions} params\n */\n\n\n function renderButton(button, buttonType, params) {\n toggle(button, params[\"show\".concat(capitalizeFirstLetter(buttonType), \"Button\")], 'inline-block');\n setInnerHtml(button, params[\"\".concat(buttonType, \"ButtonText\")]); // Set caption text\n\n button.setAttribute('aria-label', params[\"\".concat(buttonType, \"ButtonAriaLabel\")]); // ARIA label\n // Add buttons custom classes\n\n button.className = swalClasses[buttonType];\n applyCustomClass(button, params, \"\".concat(buttonType, \"Button\"));\n addClass(button, params[\"\".concat(buttonType, \"ButtonClass\")]);\n }\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n\n const renderCloseButton = (instance, params) => {\n const closeButton = getCloseButton();\n setInnerHtml(closeButton, params.closeButtonHtml); // Custom class\n\n applyCustomClass(closeButton, params, 'closeButton');\n toggle(closeButton, params.showCloseButton);\n closeButton.setAttribute('aria-label', params.closeButtonAriaLabel);\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n\n const renderContainer = (instance, params) => {\n const container = getContainer();\n\n if (!container) {\n return;\n }\n\n handleBackdropParam(container, params.backdrop);\n handlePositionParam(container, params.position);\n handleGrowParam(container, params.grow); // Custom class\n\n applyCustomClass(container, params, 'container');\n };\n /**\n * @param {HTMLElement} container\n * @param {SweetAlertOptions['backdrop']} backdrop\n */\n\n function handleBackdropParam(container, backdrop) {\n if (typeof backdrop === 'string') {\n container.style.background = backdrop;\n } else if (!backdrop) {\n addClass([document.documentElement, document.body], swalClasses['no-backdrop']);\n }\n }\n /**\n * @param {HTMLElement} container\n * @param {SweetAlertOptions['position']} position\n */\n\n\n function handlePositionParam(container, position) {\n if (position in swalClasses) {\n addClass(container, swalClasses[position]);\n } else {\n warn('The \"position\" parameter is not valid, defaulting to \"center\"');\n addClass(container, swalClasses.center);\n }\n }\n /**\n * @param {HTMLElement} container\n * @param {SweetAlertOptions['grow']} grow\n */\n\n\n function handleGrowParam(container, grow) {\n if (grow && typeof grow === 'string') {\n const growClass = \"grow-\".concat(grow);\n\n if (growClass in swalClasses) {\n addClass(container, swalClasses[growClass]);\n }\n }\n }\n\n /// \n /** @type {InputClass[]} */\n\n const inputClasses = ['input', 'file', 'range', 'select', 'radio', 'checkbox', 'textarea'];\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n\n const renderInput = (instance, params) => {\n const popup = getPopup();\n const innerParams = privateProps.innerParams.get(instance);\n const rerender = !innerParams || params.input !== innerParams.input;\n inputClasses.forEach(inputClass => {\n const inputContainer = getDirectChildByClass(popup, swalClasses[inputClass]); // set attributes\n\n setAttributes(inputClass, params.inputAttributes); // set class\n\n inputContainer.className = swalClasses[inputClass];\n\n if (rerender) {\n hide(inputContainer);\n }\n });\n\n if (params.input) {\n if (rerender) {\n showInput(params);\n } // set custom class\n\n\n setCustomClass(params);\n }\n };\n /**\n * @param {SweetAlertOptions} params\n */\n\n const showInput = params => {\n if (!renderInputType[params.input]) {\n error(\"Unexpected type of input! Expected \\\"text\\\", \\\"email\\\", \\\"password\\\", \\\"number\\\", \\\"tel\\\", \\\"select\\\", \\\"radio\\\", \\\"checkbox\\\", \\\"textarea\\\", \\\"file\\\" or \\\"url\\\", got \\\"\".concat(params.input, \"\\\"\"));\n return;\n }\n\n const inputContainer = getInputContainer(params.input);\n const input = renderInputType[params.input](inputContainer, params);\n show(inputContainer); // input autofocus\n\n setTimeout(() => {\n focusInput(input);\n });\n };\n /**\n * @param {HTMLInputElement} input\n */\n\n\n const removeAttributes = input => {\n for (let i = 0; i < input.attributes.length; i++) {\n const attrName = input.attributes[i].name;\n\n if (!['type', 'value', 'style'].includes(attrName)) {\n input.removeAttribute(attrName);\n }\n }\n };\n /**\n * @param {InputClass} inputClass\n * @param {SweetAlertOptions['inputAttributes']} inputAttributes\n */\n\n\n const setAttributes = (inputClass, inputAttributes) => {\n const input = getInput(getPopup(), inputClass);\n\n if (!input) {\n return;\n }\n\n removeAttributes(input);\n\n for (const attr in inputAttributes) {\n input.setAttribute(attr, inputAttributes[attr]);\n }\n };\n /**\n * @param {SweetAlertOptions} params\n */\n\n\n const setCustomClass = params => {\n const inputContainer = getInputContainer(params.input);\n\n if (typeof params.customClass === 'object') {\n addClass(inputContainer, params.customClass.input);\n }\n };\n /**\n * @param {HTMLInputElement | HTMLTextAreaElement} input\n * @param {SweetAlertOptions} params\n */\n\n\n const setInputPlaceholder = (input, params) => {\n if (!input.placeholder || params.inputPlaceholder) {\n input.placeholder = params.inputPlaceholder;\n }\n };\n /**\n * @param {Input} input\n * @param {Input} prependTo\n * @param {SweetAlertOptions} params\n */\n\n\n const setInputLabel = (input, prependTo, params) => {\n if (params.inputLabel) {\n input.id = swalClasses.input;\n const label = document.createElement('label');\n const labelClass = swalClasses['input-label'];\n label.setAttribute('for', input.id);\n label.className = labelClass;\n\n if (typeof params.customClass === 'object') {\n addClass(label, params.customClass.inputLabel);\n }\n\n label.innerText = params.inputLabel;\n prependTo.insertAdjacentElement('beforebegin', label);\n }\n };\n /**\n * @param {SweetAlertOptions['input']} inputType\n * @returns {HTMLElement}\n */\n\n\n const getInputContainer = inputType => {\n return getDirectChildByClass(getPopup(), swalClasses[inputType] || swalClasses.input);\n };\n /**\n * @param {HTMLInputElement | HTMLOutputElement | HTMLTextAreaElement} input\n * @param {SweetAlertOptions['inputValue']} inputValue\n */\n\n\n const checkAndSetInputValue = (input, inputValue) => {\n if (['string', 'number'].includes(typeof inputValue)) {\n input.value = \"\".concat(inputValue);\n } else if (!isPromise(inputValue)) {\n warn(\"Unexpected type of inputValue! Expected \\\"string\\\", \\\"number\\\" or \\\"Promise\\\", got \\\"\".concat(typeof inputValue, \"\\\"\"));\n }\n };\n /** @type {Record Input>} */\n\n\n const renderInputType = {};\n /**\n * @param {HTMLInputElement} input\n * @param {SweetAlertOptions} params\n * @returns {HTMLInputElement}\n */\n\n renderInputType.text = renderInputType.email = renderInputType.password = renderInputType.number = renderInputType.tel = renderInputType.url = (input, params) => {\n checkAndSetInputValue(input, params.inputValue);\n setInputLabel(input, input, params);\n setInputPlaceholder(input, params);\n input.type = params.input;\n return input;\n };\n /**\n * @param {HTMLInputElement} input\n * @param {SweetAlertOptions} params\n * @returns {HTMLInputElement}\n */\n\n\n renderInputType.file = (input, params) => {\n setInputLabel(input, input, params);\n setInputPlaceholder(input, params);\n return input;\n };\n /**\n * @param {HTMLInputElement} range\n * @param {SweetAlertOptions} params\n * @returns {HTMLInputElement}\n */\n\n\n renderInputType.range = (range, params) => {\n const rangeInput = range.querySelector('input');\n const rangeOutput = range.querySelector('output');\n checkAndSetInputValue(rangeInput, params.inputValue);\n rangeInput.type = params.input;\n checkAndSetInputValue(rangeOutput, params.inputValue);\n setInputLabel(rangeInput, range, params);\n return range;\n };\n /**\n * @param {HTMLSelectElement} select\n * @param {SweetAlertOptions} params\n * @returns {HTMLSelectElement}\n */\n\n\n renderInputType.select = (select, params) => {\n select.textContent = '';\n\n if (params.inputPlaceholder) {\n const placeholder = document.createElement('option');\n setInnerHtml(placeholder, params.inputPlaceholder);\n placeholder.value = '';\n placeholder.disabled = true;\n placeholder.selected = true;\n select.appendChild(placeholder);\n }\n\n setInputLabel(select, select, params);\n return select;\n };\n /**\n * @param {HTMLInputElement} radio\n * @returns {HTMLInputElement}\n */\n\n\n renderInputType.radio = radio => {\n radio.textContent = '';\n return radio;\n };\n /**\n * @param {HTMLLabelElement} checkboxContainer\n * @param {SweetAlertOptions} params\n * @returns {HTMLInputElement}\n */\n\n\n renderInputType.checkbox = (checkboxContainer, params) => {\n const checkbox = getInput(getPopup(), 'checkbox');\n checkbox.value = '1';\n checkbox.id = swalClasses.checkbox;\n checkbox.checked = Boolean(params.inputValue);\n const label = checkboxContainer.querySelector('span');\n setInnerHtml(label, params.inputPlaceholder);\n return checkbox;\n };\n /**\n * @param {HTMLTextAreaElement} textarea\n * @param {SweetAlertOptions} params\n * @returns {HTMLTextAreaElement}\n */\n\n\n renderInputType.textarea = (textarea, params) => {\n checkAndSetInputValue(textarea, params.inputValue);\n setInputPlaceholder(textarea, params);\n setInputLabel(textarea, textarea, params);\n /**\n * @param {HTMLElement} el\n * @returns {number}\n */\n\n const getMargin = el => parseInt(window.getComputedStyle(el).marginLeft) + parseInt(window.getComputedStyle(el).marginRight); // https://github.com/sweetalert2/sweetalert2/issues/2291\n\n\n setTimeout(() => {\n // https://github.com/sweetalert2/sweetalert2/issues/1699\n if ('MutationObserver' in window) {\n const initialPopupWidth = parseInt(window.getComputedStyle(getPopup()).width);\n\n const textareaResizeHandler = () => {\n const textareaWidth = textarea.offsetWidth + getMargin(textarea);\n\n if (textareaWidth > initialPopupWidth) {\n getPopup().style.width = \"\".concat(textareaWidth, \"px\");\n } else {\n getPopup().style.width = null;\n }\n };\n\n new MutationObserver(textareaResizeHandler).observe(textarea, {\n attributes: true,\n attributeFilter: ['style']\n });\n }\n });\n return textarea;\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n\n const renderContent = (instance, params) => {\n const htmlContainer = getHtmlContainer();\n applyCustomClass(htmlContainer, params, 'htmlContainer'); // Content as HTML\n\n if (params.html) {\n parseHtmlToContainer(params.html, htmlContainer);\n show(htmlContainer, 'block');\n } // Content as plain text\n else if (params.text) {\n htmlContainer.textContent = params.text;\n show(htmlContainer, 'block');\n } // No content\n else {\n hide(htmlContainer);\n }\n\n renderInput(instance, params);\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n\n const renderFooter = (instance, params) => {\n const footer = getFooter();\n toggle(footer, params.footer);\n\n if (params.footer) {\n parseHtmlToContainer(params.footer, footer);\n } // Custom class\n\n\n applyCustomClass(footer, params, 'footer');\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n\n const renderIcon = (instance, params) => {\n const innerParams = privateProps.innerParams.get(instance);\n const icon = getIcon(); // if the given icon already rendered, apply the styling without re-rendering the icon\n\n if (innerParams && params.icon === innerParams.icon) {\n // Custom or default content\n setContent(icon, params);\n applyStyles(icon, params);\n return;\n }\n\n if (!params.icon && !params.iconHtml) {\n hide(icon);\n return;\n }\n\n if (params.icon && Object.keys(iconTypes).indexOf(params.icon) === -1) {\n error(\"Unknown icon! Expected \\\"success\\\", \\\"error\\\", \\\"warning\\\", \\\"info\\\" or \\\"question\\\", got \\\"\".concat(params.icon, \"\\\"\"));\n hide(icon);\n return;\n }\n\n show(icon); // Custom or default content\n\n setContent(icon, params);\n applyStyles(icon, params); // Animate icon\n\n addClass(icon, params.showClass.icon);\n };\n /**\n * @param {HTMLElement} icon\n * @param {SweetAlertOptions} params\n */\n\n const applyStyles = (icon, params) => {\n for (const iconType in iconTypes) {\n if (params.icon !== iconType) {\n removeClass(icon, iconTypes[iconType]);\n }\n }\n\n addClass(icon, iconTypes[params.icon]); // Icon color\n\n setColor(icon, params); // Success icon background color\n\n adjustSuccessIconBackgroundColor(); // Custom class\n\n applyCustomClass(icon, params, 'icon');\n }; // Adjust success icon background color to match the popup background color\n\n\n const adjustSuccessIconBackgroundColor = () => {\n const popup = getPopup();\n const popupBackgroundColor = window.getComputedStyle(popup).getPropertyValue('background-color');\n /** @type {NodeListOf} */\n\n const successIconParts = popup.querySelectorAll('[class^=swal2-success-circular-line], .swal2-success-fix');\n\n for (let i = 0; i < successIconParts.length; i++) {\n successIconParts[i].style.backgroundColor = popupBackgroundColor;\n }\n };\n\n const successIconHtml = \"\\n
      \\n \\n
      \\n
      \\n\";\n const errorIconHtml = \"\\n \\n \\n \\n \\n\";\n /**\n * @param {HTMLElement} icon\n * @param {SweetAlertOptions} params\n */\n\n const setContent = (icon, params) => {\n let oldContent = icon.innerHTML;\n let newContent;\n\n if (params.iconHtml) {\n newContent = iconContent(params.iconHtml);\n } else if (params.icon === 'success') {\n newContent = successIconHtml;\n oldContent = oldContent.replace(/ style=\".*?\"/g, ''); // undo adjustSuccessIconBackgroundColor()\n } else if (params.icon === 'error') {\n newContent = errorIconHtml;\n } else {\n const defaultIconHtml = {\n question: '?',\n warning: '!',\n info: 'i'\n };\n newContent = iconContent(defaultIconHtml[params.icon]);\n }\n\n if (oldContent.trim() !== newContent.trim()) {\n setInnerHtml(icon, newContent);\n }\n };\n /**\n * @param {HTMLElement} icon\n * @param {SweetAlertOptions} params\n */\n\n\n const setColor = (icon, params) => {\n if (!params.iconColor) {\n return;\n }\n\n icon.style.color = params.iconColor;\n icon.style.borderColor = params.iconColor;\n\n for (const sel of ['.swal2-success-line-tip', '.swal2-success-line-long', '.swal2-x-mark-line-left', '.swal2-x-mark-line-right']) {\n setStyle(icon, sel, 'backgroundColor', params.iconColor);\n }\n\n setStyle(icon, '.swal2-success-ring', 'borderColor', params.iconColor);\n };\n /**\n * @param {string} content\n * @returns {string}\n */\n\n\n const iconContent = content => \"
      \").concat(content, \"
      \");\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n\n const renderImage = (instance, params) => {\n const image = getImage();\n\n if (!params.imageUrl) {\n hide(image);\n return;\n }\n\n show(image, ''); // Src, alt\n\n image.setAttribute('src', params.imageUrl);\n image.setAttribute('alt', params.imageAlt); // Width, height\n\n applyNumericalStyle(image, 'width', params.imageWidth);\n applyNumericalStyle(image, 'height', params.imageHeight); // Class\n\n image.className = swalClasses.image;\n applyCustomClass(image, params, 'image');\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n\n const renderPopup = (instance, params) => {\n const container = getContainer();\n const popup = getPopup(); // Width\n // https://github.com/sweetalert2/sweetalert2/issues/2170\n\n if (params.toast) {\n applyNumericalStyle(container, 'width', params.width);\n popup.style.width = '100%';\n popup.insertBefore(getLoader(), getIcon());\n } else {\n applyNumericalStyle(popup, 'width', params.width);\n } // Padding\n\n\n applyNumericalStyle(popup, 'padding', params.padding); // Color\n\n if (params.color) {\n popup.style.color = params.color;\n } // Background\n\n\n if (params.background) {\n popup.style.background = params.background;\n }\n\n hide(getValidationMessage()); // Classes\n\n addClasses(popup, params);\n };\n /**\n * @param {HTMLElement} popup\n * @param {SweetAlertOptions} params\n */\n\n const addClasses = (popup, params) => {\n // Default Class + showClass when updating Swal.update({})\n popup.className = \"\".concat(swalClasses.popup, \" \").concat(isVisible(popup) ? params.showClass.popup : '');\n\n if (params.toast) {\n addClass([document.documentElement, document.body], swalClasses['toast-shown']);\n addClass(popup, swalClasses.toast);\n } else {\n addClass(popup, swalClasses.modal);\n } // Custom class\n\n\n applyCustomClass(popup, params, 'popup');\n\n if (typeof params.customClass === 'string') {\n addClass(popup, params.customClass);\n } // Icon class (#1842)\n\n\n if (params.icon) {\n addClass(popup, swalClasses[\"icon-\".concat(params.icon)]);\n }\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n\n const renderProgressSteps = (instance, params) => {\n const progressStepsContainer = getProgressSteps();\n\n if (!params.progressSteps || params.progressSteps.length === 0) {\n hide(progressStepsContainer);\n return;\n }\n\n show(progressStepsContainer);\n progressStepsContainer.textContent = '';\n\n if (params.currentProgressStep >= params.progressSteps.length) {\n warn('Invalid currentProgressStep parameter, it should be less than progressSteps.length ' + '(currentProgressStep like JS arrays starts from 0)');\n }\n\n params.progressSteps.forEach((step, index) => {\n const stepEl = createStepElement(step);\n progressStepsContainer.appendChild(stepEl);\n\n if (index === params.currentProgressStep) {\n addClass(stepEl, swalClasses['active-progress-step']);\n }\n\n if (index !== params.progressSteps.length - 1) {\n const lineEl = createLineElement(params);\n progressStepsContainer.appendChild(lineEl);\n }\n });\n };\n /**\n * @param {string} step\n * @returns {HTMLLIElement}\n */\n\n const createStepElement = step => {\n const stepEl = document.createElement('li');\n addClass(stepEl, swalClasses['progress-step']);\n setInnerHtml(stepEl, step);\n return stepEl;\n };\n /**\n * @param {SweetAlertOptions} params\n * @returns {HTMLLIElement}\n */\n\n\n const createLineElement = params => {\n const lineEl = document.createElement('li');\n addClass(lineEl, swalClasses['progress-step-line']);\n\n if (params.progressStepsDistance) {\n applyNumericalStyle(lineEl, 'width', params.progressStepsDistance);\n }\n\n return lineEl;\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n\n const renderTitle = (instance, params) => {\n const title = getTitle();\n toggle(title, params.title || params.titleText, 'block');\n\n if (params.title) {\n parseHtmlToContainer(params.title, title);\n }\n\n if (params.titleText) {\n title.innerText = params.titleText;\n } // Custom class\n\n\n applyCustomClass(title, params, 'title');\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n\n const render = (instance, params) => {\n renderPopup(instance, params);\n renderContainer(instance, params);\n renderProgressSteps(instance, params);\n renderIcon(instance, params);\n renderImage(instance, params);\n renderTitle(instance, params);\n renderCloseButton(instance, params);\n renderContent(instance, params);\n renderActions(instance, params);\n renderFooter(instance, params);\n\n if (typeof params.didRender === 'function') {\n params.didRender(getPopup());\n }\n };\n\n /**\n * Hides loader and shows back the button which was hidden by .showLoading()\n */\n\n function hideLoading() {\n // do nothing if popup is closed\n const innerParams = privateProps.innerParams.get(this);\n\n if (!innerParams) {\n return;\n }\n\n const domCache = privateProps.domCache.get(this);\n hide(domCache.loader);\n\n if (isToast()) {\n if (innerParams.icon) {\n show(getIcon());\n }\n } else {\n showRelatedButton(domCache);\n }\n\n removeClass([domCache.popup, domCache.actions], swalClasses.loading);\n domCache.popup.removeAttribute('aria-busy');\n domCache.popup.removeAttribute('data-loading');\n domCache.confirmButton.disabled = false;\n domCache.denyButton.disabled = false;\n domCache.cancelButton.disabled = false;\n }\n\n const showRelatedButton = domCache => {\n const buttonToReplace = domCache.popup.getElementsByClassName(domCache.loader.getAttribute('data-button-to-replace'));\n\n if (buttonToReplace.length) {\n show(buttonToReplace[0], 'inline-block');\n } else if (allButtonsAreHidden()) {\n hide(domCache.actions);\n }\n };\n\n /**\n * Gets the input DOM node, this method works with input parameter.\n * @returns {HTMLElement | null}\n */\n\n function getInput$1(instance) {\n const innerParams = privateProps.innerParams.get(instance || this);\n const domCache = privateProps.domCache.get(instance || this);\n\n if (!domCache) {\n return null;\n }\n\n return getInput(domCache.popup, innerParams.input);\n }\n\n /*\n * Global function to determine if SweetAlert2 popup is shown\n */\n\n const isVisible$1 = () => {\n return isVisible(getPopup());\n };\n /*\n * Global function to click 'Confirm' button\n */\n\n const clickConfirm = () => getConfirmButton() && getConfirmButton().click();\n /*\n * Global function to click 'Deny' button\n */\n\n const clickDeny = () => getDenyButton() && getDenyButton().click();\n /*\n * Global function to click 'Cancel' button\n */\n\n const clickCancel = () => getCancelButton() && getCancelButton().click();\n\n const DismissReason = Object.freeze({\n cancel: 'cancel',\n backdrop: 'backdrop',\n close: 'close',\n esc: 'esc',\n timer: 'timer'\n });\n\n /**\n * @param {GlobalState} globalState\n */\n\n const removeKeydownHandler = globalState => {\n if (globalState.keydownTarget && globalState.keydownHandlerAdded) {\n globalState.keydownTarget.removeEventListener('keydown', globalState.keydownHandler, {\n capture: globalState.keydownListenerCapture\n });\n globalState.keydownHandlerAdded = false;\n }\n };\n /**\n * @param {SweetAlert2} instance\n * @param {GlobalState} globalState\n * @param {SweetAlertOptions} innerParams\n * @param {*} dismissWith\n */\n\n const addKeydownHandler = (instance, globalState, innerParams, dismissWith) => {\n removeKeydownHandler(globalState);\n\n if (!innerParams.toast) {\n globalState.keydownHandler = e => keydownHandler(instance, e, dismissWith);\n\n globalState.keydownTarget = innerParams.keydownListenerCapture ? window : getPopup();\n globalState.keydownListenerCapture = innerParams.keydownListenerCapture;\n globalState.keydownTarget.addEventListener('keydown', globalState.keydownHandler, {\n capture: globalState.keydownListenerCapture\n });\n globalState.keydownHandlerAdded = true;\n }\n };\n /**\n * @param {SweetAlertOptions} innerParams\n * @param {number} index\n * @param {number} increment\n */\n\n const setFocus = (innerParams, index, increment) => {\n const focusableElements = getFocusableElements(); // search for visible elements and select the next possible match\n\n if (focusableElements.length) {\n index = index + increment; // rollover to first item\n\n if (index === focusableElements.length) {\n index = 0; // go to last item\n } else if (index === -1) {\n index = focusableElements.length - 1;\n }\n\n return focusableElements[index].focus();\n } // no visible focusable elements, focus the popup\n\n\n getPopup().focus();\n };\n const arrowKeysNextButton = ['ArrowRight', 'ArrowDown'];\n const arrowKeysPreviousButton = ['ArrowLeft', 'ArrowUp'];\n /**\n * @param {SweetAlert2} instance\n * @param {KeyboardEvent} e\n * @param {function} dismissWith\n */\n\n const keydownHandler = (instance, e, dismissWith) => {\n const innerParams = privateProps.innerParams.get(instance);\n\n if (!innerParams) {\n return; // This instance has already been destroyed\n } // Ignore keydown during IME composition\n // https://developer.mozilla.org/en-US/docs/Web/API/Document/keydown_event#ignoring_keydown_during_ime_composition\n // https://github.com/sweetalert2/sweetalert2/issues/720\n // https://github.com/sweetalert2/sweetalert2/issues/2406\n\n\n if (e.isComposing || e.keyCode === 229) {\n return;\n }\n\n if (innerParams.stopKeydownPropagation) {\n e.stopPropagation();\n } // ENTER\n\n\n if (e.key === 'Enter') {\n handleEnter(instance, e, innerParams);\n } // TAB\n else if (e.key === 'Tab') {\n handleTab(e, innerParams);\n } // ARROWS - switch focus between buttons\n else if ([...arrowKeysNextButton, ...arrowKeysPreviousButton].includes(e.key)) {\n handleArrows(e.key);\n } // ESC\n else if (e.key === 'Escape') {\n handleEsc(e, innerParams, dismissWith);\n }\n };\n /**\n * @param {SweetAlert2} instance\n * @param {KeyboardEvent} e\n * @param {SweetAlertOptions} innerParams\n */\n\n\n const handleEnter = (instance, e, innerParams) => {\n // https://github.com/sweetalert2/sweetalert2/issues/2386\n if (!callIfFunction(innerParams.allowEnterKey)) {\n return;\n }\n\n if (e.target && instance.getInput() && e.target instanceof HTMLElement && e.target.outerHTML === instance.getInput().outerHTML) {\n if (['textarea', 'file'].includes(innerParams.input)) {\n return; // do not submit\n }\n\n clickConfirm();\n e.preventDefault();\n }\n };\n /**\n * @param {KeyboardEvent} e\n * @param {SweetAlertOptions} innerParams\n */\n\n\n const handleTab = (e, innerParams) => {\n const targetElement = e.target;\n const focusableElements = getFocusableElements();\n let btnIndex = -1;\n\n for (let i = 0; i < focusableElements.length; i++) {\n if (targetElement === focusableElements[i]) {\n btnIndex = i;\n break;\n }\n } // Cycle to the next button\n\n\n if (!e.shiftKey) {\n setFocus(innerParams, btnIndex, 1);\n } // Cycle to the prev button\n else {\n setFocus(innerParams, btnIndex, -1);\n }\n\n e.stopPropagation();\n e.preventDefault();\n };\n /**\n * @param {string} key\n */\n\n\n const handleArrows = key => {\n const confirmButton = getConfirmButton();\n const denyButton = getDenyButton();\n const cancelButton = getCancelButton();\n\n if (document.activeElement instanceof HTMLElement && ![confirmButton, denyButton, cancelButton].includes(document.activeElement)) {\n return;\n }\n\n const sibling = arrowKeysNextButton.includes(key) ? 'nextElementSibling' : 'previousElementSibling';\n let buttonToFocus = document.activeElement;\n\n for (let i = 0; i < getActions().children.length; i++) {\n buttonToFocus = buttonToFocus[sibling];\n\n if (!buttonToFocus) {\n return;\n }\n\n if (buttonToFocus instanceof HTMLButtonElement && isVisible(buttonToFocus)) {\n break;\n }\n }\n\n if (buttonToFocus instanceof HTMLButtonElement) {\n buttonToFocus.focus();\n }\n };\n /**\n * @param {KeyboardEvent} e\n * @param {SweetAlertOptions} innerParams\n * @param {function} dismissWith\n */\n\n\n const handleEsc = (e, innerParams, dismissWith) => {\n if (callIfFunction(innerParams.allowEscapeKey)) {\n e.preventDefault();\n dismissWith(DismissReason.esc);\n }\n };\n\n /**\n * This module contains `WeakMap`s for each effectively-\"private property\" that a `Swal` has.\n * For example, to set the private property \"foo\" of `this` to \"bar\", you can `privateProps.foo.set(this, 'bar')`\n * This is the approach that Babel will probably take to implement private methods/fields\n * https://github.com/tc39/proposal-private-methods\n * https://github.com/babel/babel/pull/7555\n * Once we have the changes from that PR in Babel, and our core class fits reasonable in *one module*\n * then we can use that language feature.\n */\n var privateMethods = {\n swalPromiseResolve: new WeakMap(),\n swalPromiseReject: new WeakMap()\n };\n\n // Adding aria-hidden=\"true\" to elements outside of the active modal dialog ensures that\n // elements not within the active modal dialog will not be surfaced if a user opens a screen\n // reader’s list of elements (headings, form controls, landmarks, etc.) in the document.\n\n const setAriaHidden = () => {\n const bodyChildren = Array.from(document.body.children);\n bodyChildren.forEach(el => {\n if (el === getContainer() || el.contains(getContainer())) {\n return;\n }\n\n if (el.hasAttribute('aria-hidden')) {\n el.setAttribute('data-previous-aria-hidden', el.getAttribute('aria-hidden'));\n }\n\n el.setAttribute('aria-hidden', 'true');\n });\n };\n const unsetAriaHidden = () => {\n const bodyChildren = Array.from(document.body.children);\n bodyChildren.forEach(el => {\n if (el.hasAttribute('data-previous-aria-hidden')) {\n el.setAttribute('aria-hidden', el.getAttribute('data-previous-aria-hidden'));\n el.removeAttribute('data-previous-aria-hidden');\n } else {\n el.removeAttribute('aria-hidden');\n }\n });\n };\n\n /* istanbul ignore file */\n\n const iOSfix = () => {\n const iOS = // @ts-ignore\n /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream || navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1;\n\n if (iOS && !hasClass(document.body, swalClasses.iosfix)) {\n const offset = document.body.scrollTop;\n document.body.style.top = \"\".concat(offset * -1, \"px\");\n addClass(document.body, swalClasses.iosfix);\n lockBodyScroll();\n addBottomPaddingForTallPopups();\n }\n };\n /**\n * https://github.com/sweetalert2/sweetalert2/issues/1948\n */\n\n const addBottomPaddingForTallPopups = () => {\n const ua = navigator.userAgent;\n const iOS = !!ua.match(/iPad/i) || !!ua.match(/iPhone/i);\n const webkit = !!ua.match(/WebKit/i);\n const iOSSafari = iOS && webkit && !ua.match(/CriOS/i);\n\n if (iOSSafari) {\n const bottomPanelHeight = 44;\n\n if (getPopup().scrollHeight > window.innerHeight - bottomPanelHeight) {\n getContainer().style.paddingBottom = \"\".concat(bottomPanelHeight, \"px\");\n }\n }\n };\n /**\n * https://github.com/sweetalert2/sweetalert2/issues/1246\n */\n\n\n const lockBodyScroll = () => {\n const container = getContainer();\n let preventTouchMove;\n /**\n * @param {TouchEvent} e\n */\n\n container.ontouchstart = e => {\n preventTouchMove = shouldPreventTouchMove(e);\n };\n /**\n * @param {TouchEvent} e\n */\n\n\n container.ontouchmove = e => {\n if (preventTouchMove) {\n e.preventDefault();\n e.stopPropagation();\n }\n };\n };\n /**\n * @param {TouchEvent} event\n * @returns {boolean}\n */\n\n\n const shouldPreventTouchMove = event => {\n const target = event.target;\n const container = getContainer();\n\n if (isStylus(event) || isZoom(event)) {\n return false;\n }\n\n if (target === container) {\n return true;\n }\n\n if (!isScrollable(container) && target instanceof HTMLElement && target.tagName !== 'INPUT' && // #1603\n target.tagName !== 'TEXTAREA' && // #2266\n !(isScrollable(getHtmlContainer()) && // #1944\n getHtmlContainer().contains(target))) {\n return true;\n }\n\n return false;\n };\n /**\n * https://github.com/sweetalert2/sweetalert2/issues/1786\n *\n * @param {*} event\n * @returns {boolean}\n */\n\n\n const isStylus = event => {\n return event.touches && event.touches.length && event.touches[0].touchType === 'stylus';\n };\n /**\n * https://github.com/sweetalert2/sweetalert2/issues/1891\n *\n * @param {TouchEvent} event\n * @returns {boolean}\n */\n\n\n const isZoom = event => {\n return event.touches && event.touches.length > 1;\n };\n\n const undoIOSfix = () => {\n if (hasClass(document.body, swalClasses.iosfix)) {\n const offset = parseInt(document.body.style.top, 10);\n removeClass(document.body, swalClasses.iosfix);\n document.body.style.top = '';\n document.body.scrollTop = offset * -1;\n }\n };\n\n const fixScrollbar = () => {\n // for queues, do not do this more than once\n if (states.previousBodyPadding !== null) {\n return;\n } // if the body has overflow\n\n\n if (document.body.scrollHeight > window.innerHeight) {\n // add padding so the content doesn't shift after removal of scrollbar\n states.previousBodyPadding = parseInt(window.getComputedStyle(document.body).getPropertyValue('padding-right'));\n document.body.style.paddingRight = \"\".concat(states.previousBodyPadding + measureScrollbar(), \"px\");\n }\n };\n const undoScrollbar = () => {\n if (states.previousBodyPadding !== null) {\n document.body.style.paddingRight = \"\".concat(states.previousBodyPadding, \"px\");\n states.previousBodyPadding = null;\n }\n };\n\n /*\n * Instance method to close sweetAlert\n */\n\n function removePopupAndResetState(instance, container, returnFocus, didClose) {\n if (isToast()) {\n triggerDidCloseAndDispose(instance, didClose);\n } else {\n restoreActiveElement(returnFocus).then(() => triggerDidCloseAndDispose(instance, didClose));\n removeKeydownHandler(globalState);\n }\n\n const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); // workaround for #2088\n // for some reason removing the container in Safari will scroll the document to bottom\n\n if (isSafari) {\n container.setAttribute('style', 'display:none !important');\n container.removeAttribute('class');\n container.innerHTML = '';\n } else {\n container.remove();\n }\n\n if (isModal()) {\n undoScrollbar();\n undoIOSfix();\n unsetAriaHidden();\n }\n\n removeBodyClasses();\n }\n\n function removeBodyClasses() {\n removeClass([document.documentElement, document.body], [swalClasses.shown, swalClasses['height-auto'], swalClasses['no-backdrop'], swalClasses['toast-shown']]);\n }\n\n function close(resolveValue) {\n resolveValue = prepareResolveValue(resolveValue);\n const swalPromiseResolve = privateMethods.swalPromiseResolve.get(this);\n const didClose = triggerClosePopup(this);\n\n if (this.isAwaitingPromise()) {\n // A swal awaiting for a promise (after a click on Confirm or Deny) cannot be dismissed anymore #2335\n if (!resolveValue.isDismissed) {\n handleAwaitingPromise(this);\n swalPromiseResolve(resolveValue);\n }\n } else if (didClose) {\n // Resolve Swal promise\n swalPromiseResolve(resolveValue);\n }\n }\n function isAwaitingPromise() {\n return !!privateProps.awaitingPromise.get(this);\n }\n\n const triggerClosePopup = instance => {\n const popup = getPopup();\n\n if (!popup) {\n return false;\n }\n\n const innerParams = privateProps.innerParams.get(instance);\n\n if (!innerParams || hasClass(popup, innerParams.hideClass.popup)) {\n return false;\n }\n\n removeClass(popup, innerParams.showClass.popup);\n addClass(popup, innerParams.hideClass.popup);\n const backdrop = getContainer();\n removeClass(backdrop, innerParams.showClass.backdrop);\n addClass(backdrop, innerParams.hideClass.backdrop);\n handlePopupAnimation(instance, popup, innerParams);\n return true;\n };\n\n function rejectPromise(error) {\n const rejectPromise = privateMethods.swalPromiseReject.get(this);\n handleAwaitingPromise(this);\n\n if (rejectPromise) {\n // Reject Swal promise\n rejectPromise(error);\n }\n }\n const handleAwaitingPromise = instance => {\n if (instance.isAwaitingPromise()) {\n privateProps.awaitingPromise.delete(instance); // The instance might have been previously partly destroyed, we must resume the destroy process in this case #2335\n\n if (!privateProps.innerParams.get(instance)) {\n instance._destroy();\n }\n }\n };\n\n const prepareResolveValue = resolveValue => {\n // When user calls Swal.close()\n if (typeof resolveValue === 'undefined') {\n return {\n isConfirmed: false,\n isDenied: false,\n isDismissed: true\n };\n }\n\n return Object.assign({\n isConfirmed: false,\n isDenied: false,\n isDismissed: false\n }, resolveValue);\n };\n\n const handlePopupAnimation = (instance, popup, innerParams) => {\n const container = getContainer(); // If animation is supported, animate\n\n const animationIsSupported = animationEndEvent && hasCssAnimation(popup);\n\n if (typeof innerParams.willClose === 'function') {\n innerParams.willClose(popup);\n }\n\n if (animationIsSupported) {\n animatePopup(instance, popup, container, innerParams.returnFocus, innerParams.didClose);\n } else {\n // Otherwise, remove immediately\n removePopupAndResetState(instance, container, innerParams.returnFocus, innerParams.didClose);\n }\n };\n\n const animatePopup = (instance, popup, container, returnFocus, didClose) => {\n globalState.swalCloseEventFinishedCallback = removePopupAndResetState.bind(null, instance, container, returnFocus, didClose);\n popup.addEventListener(animationEndEvent, function (e) {\n if (e.target === popup) {\n globalState.swalCloseEventFinishedCallback();\n delete globalState.swalCloseEventFinishedCallback;\n }\n });\n };\n\n const triggerDidCloseAndDispose = (instance, didClose) => {\n setTimeout(() => {\n if (typeof didClose === 'function') {\n didClose.bind(instance.params)();\n }\n\n instance._destroy();\n });\n };\n\n /**\n * @param {SweetAlert2} instance\n * @param {string[]} buttons\n * @param {boolean} disabled\n */\n\n function setButtonsDisabled(instance, buttons, disabled) {\n const domCache = privateProps.domCache.get(instance);\n buttons.forEach(button => {\n domCache[button].disabled = disabled;\n });\n }\n /**\n * @param {HTMLInputElement} input\n * @param {boolean} disabled\n */\n\n\n function setInputDisabled(input, disabled) {\n if (!input) {\n return;\n }\n\n if (input.type === 'radio') {\n const radiosContainer = input.parentNode.parentNode;\n const radios = radiosContainer.querySelectorAll('input');\n\n for (let i = 0; i < radios.length; i++) {\n radios[i].disabled = disabled;\n }\n } else {\n input.disabled = disabled;\n }\n }\n\n function enableButtons() {\n setButtonsDisabled(this, ['confirmButton', 'denyButton', 'cancelButton'], false);\n }\n function disableButtons() {\n setButtonsDisabled(this, ['confirmButton', 'denyButton', 'cancelButton'], true);\n }\n function enableInput() {\n setInputDisabled(this.getInput(), false);\n }\n function disableInput() {\n setInputDisabled(this.getInput(), true);\n }\n\n function showValidationMessage(error) {\n const domCache = privateProps.domCache.get(this);\n const params = privateProps.innerParams.get(this);\n setInnerHtml(domCache.validationMessage, error);\n domCache.validationMessage.className = swalClasses['validation-message'];\n\n if (params.customClass && params.customClass.validationMessage) {\n addClass(domCache.validationMessage, params.customClass.validationMessage);\n }\n\n show(domCache.validationMessage);\n const input = this.getInput();\n\n if (input) {\n input.setAttribute('aria-invalid', true);\n input.setAttribute('aria-describedby', swalClasses['validation-message']);\n focusInput(input);\n addClass(input, swalClasses.inputerror);\n }\n } // Hide block with validation message\n\n function resetValidationMessage$1() {\n const domCache = privateProps.domCache.get(this);\n\n if (domCache.validationMessage) {\n hide(domCache.validationMessage);\n }\n\n const input = this.getInput();\n\n if (input) {\n input.removeAttribute('aria-invalid');\n input.removeAttribute('aria-describedby');\n removeClass(input, swalClasses.inputerror);\n }\n }\n\n function getProgressSteps$1() {\n const domCache = privateProps.domCache.get(this);\n return domCache.progressSteps;\n }\n\n const defaultParams = {\n title: '',\n titleText: '',\n text: '',\n html: '',\n footer: '',\n icon: undefined,\n iconColor: undefined,\n iconHtml: undefined,\n template: undefined,\n toast: false,\n showClass: {\n popup: 'swal2-show',\n backdrop: 'swal2-backdrop-show',\n icon: 'swal2-icon-show'\n },\n hideClass: {\n popup: 'swal2-hide',\n backdrop: 'swal2-backdrop-hide',\n icon: 'swal2-icon-hide'\n },\n customClass: {},\n target: 'body',\n color: undefined,\n backdrop: true,\n heightAuto: true,\n allowOutsideClick: true,\n allowEscapeKey: true,\n allowEnterKey: true,\n stopKeydownPropagation: true,\n keydownListenerCapture: false,\n showConfirmButton: true,\n showDenyButton: false,\n showCancelButton: false,\n preConfirm: undefined,\n preDeny: undefined,\n confirmButtonText: 'OK',\n confirmButtonAriaLabel: '',\n confirmButtonColor: undefined,\n denyButtonText: 'No',\n denyButtonAriaLabel: '',\n denyButtonColor: undefined,\n cancelButtonText: 'Cancel',\n cancelButtonAriaLabel: '',\n cancelButtonColor: undefined,\n buttonsStyling: true,\n reverseButtons: false,\n focusConfirm: true,\n focusDeny: false,\n focusCancel: false,\n returnFocus: true,\n showCloseButton: false,\n closeButtonHtml: '×',\n closeButtonAriaLabel: 'Close this dialog',\n loaderHtml: '',\n showLoaderOnConfirm: false,\n showLoaderOnDeny: false,\n imageUrl: undefined,\n imageWidth: undefined,\n imageHeight: undefined,\n imageAlt: '',\n timer: undefined,\n timerProgressBar: false,\n width: undefined,\n padding: undefined,\n background: undefined,\n input: undefined,\n inputPlaceholder: '',\n inputLabel: '',\n inputValue: '',\n inputOptions: {},\n inputAutoTrim: true,\n inputAttributes: {},\n inputValidator: undefined,\n returnInputValueOnDeny: false,\n validationMessage: undefined,\n grow: false,\n position: 'center',\n progressSteps: [],\n currentProgressStep: undefined,\n progressStepsDistance: undefined,\n willOpen: undefined,\n didOpen: undefined,\n didRender: undefined,\n willClose: undefined,\n didClose: undefined,\n didDestroy: undefined,\n scrollbarPadding: true\n };\n const updatableParams = ['allowEscapeKey', 'allowOutsideClick', 'background', 'buttonsStyling', 'cancelButtonAriaLabel', 'cancelButtonColor', 'cancelButtonText', 'closeButtonAriaLabel', 'closeButtonHtml', 'color', 'confirmButtonAriaLabel', 'confirmButtonColor', 'confirmButtonText', 'currentProgressStep', 'customClass', 'denyButtonAriaLabel', 'denyButtonColor', 'denyButtonText', 'didClose', 'didDestroy', 'footer', 'hideClass', 'html', 'icon', 'iconColor', 'iconHtml', 'imageAlt', 'imageHeight', 'imageUrl', 'imageWidth', 'preConfirm', 'preDeny', 'progressSteps', 'returnFocus', 'reverseButtons', 'showCancelButton', 'showCloseButton', 'showConfirmButton', 'showDenyButton', 'text', 'title', 'titleText', 'willClose'];\n const deprecatedParams = {};\n const toastIncompatibleParams = ['allowOutsideClick', 'allowEnterKey', 'backdrop', 'focusConfirm', 'focusDeny', 'focusCancel', 'returnFocus', 'heightAuto', 'keydownListenerCapture'];\n /**\n * Is valid parameter\n *\n * @param {string} paramName\n * @returns {boolean}\n */\n\n const isValidParameter = paramName => {\n return Object.prototype.hasOwnProperty.call(defaultParams, paramName);\n };\n /**\n * Is valid parameter for Swal.update() method\n *\n * @param {string} paramName\n * @returns {boolean}\n */\n\n const isUpdatableParameter = paramName => {\n return updatableParams.indexOf(paramName) !== -1;\n };\n /**\n * Is deprecated parameter\n *\n * @param {string} paramName\n * @returns {string | undefined}\n */\n\n const isDeprecatedParameter = paramName => {\n return deprecatedParams[paramName];\n };\n /**\n * @param {string} param\n */\n\n const checkIfParamIsValid = param => {\n if (!isValidParameter(param)) {\n warn(\"Unknown parameter \\\"\".concat(param, \"\\\"\"));\n }\n };\n /**\n * @param {string} param\n */\n\n\n const checkIfToastParamIsValid = param => {\n if (toastIncompatibleParams.includes(param)) {\n warn(\"The parameter \\\"\".concat(param, \"\\\" is incompatible with toasts\"));\n }\n };\n /**\n * @param {string} param\n */\n\n\n const checkIfParamIsDeprecated = param => {\n if (isDeprecatedParameter(param)) {\n warnAboutDeprecation(param, isDeprecatedParameter(param));\n }\n };\n /**\n * Show relevant warnings for given params\n *\n * @param {SweetAlertOptions} params\n */\n\n\n const showWarningsForParams = params => {\n if (!params.backdrop && params.allowOutsideClick) {\n warn('\"allowOutsideClick\" parameter requires `backdrop` parameter to be set to `true`');\n }\n\n for (const param in params) {\n checkIfParamIsValid(param);\n\n if (params.toast) {\n checkIfToastParamIsValid(param);\n }\n\n checkIfParamIsDeprecated(param);\n }\n };\n\n /**\n * Updates popup parameters.\n */\n\n function update(params) {\n const popup = getPopup();\n const innerParams = privateProps.innerParams.get(this);\n\n if (!popup || hasClass(popup, innerParams.hideClass.popup)) {\n return warn(\"You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.\");\n }\n\n const validUpdatableParams = filterValidParams(params);\n const updatedParams = Object.assign({}, innerParams, validUpdatableParams);\n render(this, updatedParams);\n privateProps.innerParams.set(this, updatedParams);\n Object.defineProperties(this, {\n params: {\n value: Object.assign({}, this.params, params),\n writable: false,\n enumerable: true\n }\n });\n }\n\n const filterValidParams = params => {\n const validUpdatableParams = {};\n Object.keys(params).forEach(param => {\n if (isUpdatableParameter(param)) {\n validUpdatableParams[param] = params[param];\n } else {\n warn(\"Invalid parameter to update: \".concat(param));\n }\n });\n return validUpdatableParams;\n };\n\n function _destroy() {\n const domCache = privateProps.domCache.get(this);\n const innerParams = privateProps.innerParams.get(this);\n\n if (!innerParams) {\n disposeWeakMaps(this); // The WeakMaps might have been partly destroyed, we must recall it to dispose any remaining WeakMaps #2335\n\n return; // This instance has already been destroyed\n } // Check if there is another Swal closing\n\n\n if (domCache.popup && globalState.swalCloseEventFinishedCallback) {\n globalState.swalCloseEventFinishedCallback();\n delete globalState.swalCloseEventFinishedCallback;\n }\n\n if (typeof innerParams.didDestroy === 'function') {\n innerParams.didDestroy();\n }\n\n disposeSwal(this);\n }\n /**\n * @param {SweetAlert2} instance\n */\n\n const disposeSwal = instance => {\n disposeWeakMaps(instance); // Unset this.params so GC will dispose it (#1569)\n // @ts-ignore\n\n delete instance.params; // Unset globalState props so GC will dispose globalState (#1569)\n\n delete globalState.keydownHandler;\n delete globalState.keydownTarget; // Unset currentInstance\n\n delete globalState.currentInstance;\n };\n /**\n * @param {SweetAlert2} instance\n */\n\n\n const disposeWeakMaps = instance => {\n // If the current instance is awaiting a promise result, we keep the privateMethods to call them once the promise result is retrieved #2335\n // @ts-ignore\n if (instance.isAwaitingPromise()) {\n unsetWeakMaps(privateProps, instance);\n privateProps.awaitingPromise.set(instance, true);\n } else {\n unsetWeakMaps(privateMethods, instance);\n unsetWeakMaps(privateProps, instance);\n }\n };\n /**\n * @param {object} obj\n * @param {SweetAlert2} instance\n */\n\n\n const unsetWeakMaps = (obj, instance) => {\n for (const i in obj) {\n obj[i].delete(instance);\n }\n };\n\n\n\n var instanceMethods = /*#__PURE__*/Object.freeze({\n hideLoading: hideLoading,\n disableLoading: hideLoading,\n getInput: getInput$1,\n close: close,\n isAwaitingPromise: isAwaitingPromise,\n rejectPromise: rejectPromise,\n handleAwaitingPromise: handleAwaitingPromise,\n closePopup: close,\n closeModal: close,\n closeToast: close,\n enableButtons: enableButtons,\n disableButtons: disableButtons,\n enableInput: enableInput,\n disableInput: disableInput,\n showValidationMessage: showValidationMessage,\n resetValidationMessage: resetValidationMessage$1,\n getProgressSteps: getProgressSteps$1,\n update: update,\n _destroy: _destroy\n });\n\n /**\n * Shows loader (spinner), this is useful with AJAX requests.\n * By default the loader be shown instead of the \"Confirm\" button.\n */\n\n const showLoading = buttonToReplace => {\n let popup = getPopup();\n\n if (!popup) {\n new Swal(); // eslint-disable-line no-new\n }\n\n popup = getPopup();\n const loader = getLoader();\n\n if (isToast()) {\n hide(getIcon());\n } else {\n replaceButton(popup, buttonToReplace);\n }\n\n show(loader);\n popup.setAttribute('data-loading', 'true');\n popup.setAttribute('aria-busy', 'true');\n popup.focus();\n };\n\n const replaceButton = (popup, buttonToReplace) => {\n const actions = getActions();\n const loader = getLoader();\n\n if (!buttonToReplace && isVisible(getConfirmButton())) {\n buttonToReplace = getConfirmButton();\n }\n\n show(actions);\n\n if (buttonToReplace) {\n hide(buttonToReplace);\n loader.setAttribute('data-button-to-replace', buttonToReplace.className);\n }\n\n loader.parentNode.insertBefore(loader, buttonToReplace);\n addClass([popup, actions], swalClasses.loading);\n };\n\n /**\n * @typedef { string | number | boolean } InputValue\n */\n\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n\n const handleInputOptionsAndValue = (instance, params) => {\n if (params.input === 'select' || params.input === 'radio') {\n handleInputOptions(instance, params);\n } else if (['text', 'email', 'number', 'tel', 'textarea'].includes(params.input) && (hasToPromiseFn(params.inputValue) || isPromise(params.inputValue))) {\n showLoading(getConfirmButton());\n handleInputValue(instance, params);\n }\n };\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} innerParams\n * @returns {string | number | File | FileList | null}\n */\n\n const getInputValue = (instance, innerParams) => {\n const input = instance.getInput();\n\n if (!input) {\n return null;\n }\n\n switch (innerParams.input) {\n case 'checkbox':\n return getCheckboxValue(input);\n\n case 'radio':\n return getRadioValue(input);\n\n case 'file':\n return getFileValue(input);\n\n default:\n return innerParams.inputAutoTrim ? input.value.trim() : input.value;\n }\n };\n /**\n * @param {HTMLInputElement} input\n * @returns {number}\n */\n\n const getCheckboxValue = input => input.checked ? 1 : 0;\n /**\n * @param {HTMLInputElement} input\n * @returns {string | null}\n */\n\n\n const getRadioValue = input => input.checked ? input.value : null;\n /**\n * @param {HTMLInputElement} input\n * @returns {FileList | File | null}\n */\n\n\n const getFileValue = input => input.files.length ? input.getAttribute('multiple') !== null ? input.files : input.files[0] : null;\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n\n\n const handleInputOptions = (instance, params) => {\n const popup = getPopup();\n /**\n * @param {Record} inputOptions\n */\n\n const processInputOptions = inputOptions => {\n populateInputOptions[params.input](popup, formatInputOptions(inputOptions), params);\n };\n\n if (hasToPromiseFn(params.inputOptions) || isPromise(params.inputOptions)) {\n showLoading(getConfirmButton());\n asPromise(params.inputOptions).then(inputOptions => {\n instance.hideLoading();\n processInputOptions(inputOptions);\n });\n } else if (typeof params.inputOptions === 'object') {\n processInputOptions(params.inputOptions);\n } else {\n error(\"Unexpected type of inputOptions! Expected object, Map or Promise, got \".concat(typeof params.inputOptions));\n }\n };\n /**\n * @param {SweetAlert2} instance\n * @param {SweetAlertOptions} params\n */\n\n\n const handleInputValue = (instance, params) => {\n const input = instance.getInput();\n hide(input);\n asPromise(params.inputValue).then(inputValue => {\n input.value = params.input === 'number' ? \"\".concat(parseFloat(inputValue) || 0) : \"\".concat(inputValue);\n show(input);\n input.focus();\n instance.hideLoading();\n }).catch(err => {\n error(\"Error in inputValue promise: \".concat(err));\n input.value = '';\n show(input);\n input.focus();\n instance.hideLoading();\n });\n };\n\n const populateInputOptions = {\n /**\n * @param {HTMLElement} popup\n * @param {Record} inputOptions\n * @param {SweetAlertOptions} params\n */\n select: (popup, inputOptions, params) => {\n const select = getDirectChildByClass(popup, swalClasses.select);\n /**\n * @param {HTMLElement} parent\n * @param {string} optionLabel\n * @param {string} optionValue\n */\n\n const renderOption = (parent, optionLabel, optionValue) => {\n const option = document.createElement('option');\n option.value = optionValue;\n setInnerHtml(option, optionLabel);\n option.selected = isSelected(optionValue, params.inputValue);\n parent.appendChild(option);\n };\n\n inputOptions.forEach(inputOption => {\n const optionValue = inputOption[0];\n const optionLabel = inputOption[1]; // spec:\n // https://www.w3.org/TR/html401/interact/forms.html#h-17.6\n // \"...all OPTGROUP elements must be specified directly within a SELECT element (i.e., groups may not be nested)...\"\n // check whether this is a \n\n if (Array.isArray(optionLabel)) {\n // if it is an array, then it is an \n const optgroup = document.createElement('optgroup');\n optgroup.label = optionValue;\n optgroup.disabled = false; // not configurable for now\n\n select.appendChild(optgroup);\n optionLabel.forEach(o => renderOption(optgroup, o[1], o[0]));\n } else {\n // case of