From c1d791092082b73fbd45c6b5c85b6c2099b3b139 Mon Sep 17 00:00:00 2001 From: Kevin Chung Date: Mon, 31 Aug 2020 12:30:56 -0400 Subject: [PATCH] Don't provide extra time config values and prevent invalid dates during setup (#1627) * Don't provide extra time config values when updating times in the Admin Panel * Prevent invalid dates during setup --- CTFd/themes/admin/templates/configs/time.html | 36 +++++++++---------- CTFd/themes/core/assets/js/pages/setup.js | 13 ++++--- CTFd/themes/core/static/js/pages/setup.dev.js | 2 +- CTFd/themes/core/static/js/pages/setup.min.js | 2 +- 4 files changed, 29 insertions(+), 24 deletions(-) diff --git a/CTFd/themes/admin/templates/configs/time.html b/CTFd/themes/admin/templates/configs/time.html index f17fe227..8cda1609 100644 --- a/CTFd/themes/admin/templates/configs/time.html +++ b/CTFd/themes/admin/templates/configs/time.html @@ -29,30 +29,30 @@
-
-
- +
-
-
@@ -76,7 +76,7 @@
-
@@ -92,30 +92,30 @@
-
-
- +
-
-
@@ -147,7 +147,7 @@
-
@@ -164,30 +164,30 @@
-
-
- +
-
-
@@ -211,7 +211,7 @@
-
diff --git a/CTFd/themes/core/assets/js/pages/setup.js b/CTFd/themes/core/assets/js/pages/setup.js index b138cc15..85c9f1f0 100644 --- a/CTFd/themes/core/assets/js/pages/setup.js +++ b/CTFd/themes/core/assets/js/pages/setup.js @@ -30,16 +30,21 @@ function switchTab(event) { } function processDateTime(datetime) { - let date_picker = $(`#${datetime}-date`); - let time_picker = $(`#${datetime}-time`); return function(_event) { + let date_picker = $(`#${datetime}-date`); + let time_picker = $(`#${datetime}-time`); let unix_time = Moment( `${date_picker.val()} ${time_picker.val()}`, "YYYY-MM-DD HH:mm" ) .utc() - .format("X"); - $(`#${datetime}-preview`).val(unix_time); + .unix(); + + if (isNaN(unix_time)) { + $(`#${datetime}-preview`).val(""); + } else { + $(`#${datetime}-preview`).val(unix_time); + } }; } diff --git a/CTFd/themes/core/static/js/pages/setup.dev.js b/CTFd/themes/core/static/js/pages/setup.dev.js index 4bf5673a..09355580 100644 --- a/CTFd/themes/core/static/js/pages/setup.dev.js +++ b/CTFd/themes/core/static/js/pages/setup.dev.js @@ -162,7 +162,7 @@ /***/ (function(module, exports, __webpack_require__) { ; -eval("\n\n__webpack_require__(/*! ./main */ \"./CTFd/themes/core/assets/js/pages/main.js\");\n\nvar _jquery = _interopRequireDefault(__webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\"));\n\nvar _momentTimezone = _interopRequireDefault(__webpack_require__(/*! moment-timezone */ \"./node_modules/moment-timezone/index.js\"));\n\nvar _CTFd = _interopRequireDefault(__webpack_require__(/*! ../CTFd */ \"./CTFd/themes/core/assets/js/CTFd.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction switchTab(event) {\n event.preventDefault(); // Handle tab validation\n\n var valid_tab = true;\n (0, _jquery.default)(event.target).closest(\"[role=tabpanel]\").find(\"input,textarea\").each(function (i, e) {\n var $e = (0, _jquery.default)(e);\n var status = e.checkValidity();\n\n if (status === false) {\n $e.removeClass(\"input-filled-valid\");\n $e.addClass(\"input-filled-invalid\");\n valid_tab = false;\n }\n });\n\n if (valid_tab == false) {\n return;\n }\n\n var href = (0, _jquery.default)(event.target).data(\"href\");\n (0, _jquery.default)(\".nav a[href=\\\"\".concat(href, \"\\\"]\")).tab(\"show\");\n}\n\nfunction processDateTime(datetime) {\n var date_picker = (0, _jquery.default)(\"#\".concat(datetime, \"-date\"));\n var time_picker = (0, _jquery.default)(\"#\".concat(datetime, \"-time\"));\n return function (_event) {\n var unix_time = (0, _momentTimezone.default)(\"\".concat(date_picker.val(), \" \").concat(time_picker.val()), \"YYYY-MM-DD HH:mm\").utc().format(\"X\");\n (0, _jquery.default)(\"#\".concat(datetime, \"-preview\")).val(unix_time);\n };\n}\n\nfunction mlcSetup(_event) {\n var params = {\n name: (0, _jquery.default)(\"#ctf_name\").val(),\n type: \"jeopardy\",\n description: (0, _jquery.default)(\"#ctf_description\").val(),\n user_mode: (0, _jquery.default)(\"#user_mode\").val(),\n event_url: window.location.origin + _CTFd.default.config.urlRoot,\n redirect_url: window.location.origin + _CTFd.default.config.urlRoot + \"/redirect\",\n integration_setup_url: window.location.origin + _CTFd.default.config.urlRoot + \"/setup/integrations\",\n start: (0, _jquery.default)(\"#start-preview\").val(),\n end: (0, _jquery.default)(\"#end-preview\").val(),\n platform: \"CTFd\",\n state: window.STATE\n };\n var ret = [];\n\n for (var p in params) {\n ret.push(encodeURIComponent(p) + \"=\" + encodeURIComponent(params[p]));\n }\n\n window.open(\"https://www.majorleaguecyber.org/events/new?\" + ret.join(\"&\"), \"_blank\");\n}\n\n(0, _jquery.default)(function () {\n (0, _jquery.default)(\".tab-next\").click(switchTab);\n (0, _jquery.default)(\"input\").on(\"keypress\", function (e) {\n // Hook Enter button\n if (e.keyCode == 13) {\n e.preventDefault();\n (0, _jquery.default)(e.target).closest(\".tab-pane\").find(\"button[data-href]\").click();\n }\n });\n (0, _jquery.default)(\"#integration-mlc\").click(mlcSetup);\n (0, _jquery.default)(\"#start-date,#start-time\").change(processDateTime(\"start\"));\n (0, _jquery.default)(\"#end-date,#end-time\").change(processDateTime(\"end\"));\n (0, _jquery.default)(\"#config-color-picker\").on(\"input\", function (_e) {\n (0, _jquery.default)(\"#config-color-input\").val((0, _jquery.default)(this).val());\n });\n (0, _jquery.default)(\"#config-color-reset\").click(function () {\n (0, _jquery.default)(\"#config-color-input\").val(\"\");\n (0, _jquery.default)(\"#config-color-picker\").val(\"\");\n });\n window.addEventListener(\"storage\", function (event) {\n if (event.key == \"integrations\" && event.newValue) {\n var integration = JSON.parse(event.newValue);\n\n if (integration[\"name\"] == \"mlc\") {\n (0, _jquery.default)(\"#integration-mlc\").text(\"Already Configured\").attr(\"disabled\", true);\n window.focus();\n localStorage.removeItem(\"integrations\");\n }\n }\n });\n (0, _jquery.default)(\"#setup-form\").submit(function (e) {\n if ((0, _jquery.default)(\"#newsletter-checkbox\").prop(\"checked\")) {\n var email = (0, _jquery.default)(e.target).find(\"input[name=email]\").val();\n\n _jquery.default.ajax({\n type: \"POST\",\n url: \"https://ctfd.us15.list-manage.com/subscribe/post-json?u=6c7fa6feeced52775aec9d015&id=dd1484208e&c=?\",\n data: {\n EMAIL: email,\n subscribe: \"Subscribe\",\n b_6c7fa6feeced52775aec9d015_dd1484208e: \"\"\n },\n dataType: \"jsonp\",\n contentType: \"application/json; charset=utf-8\"\n });\n }\n });\n});\n\n//# sourceURL=webpack:///./CTFd/themes/core/assets/js/pages/setup.js?"); +eval("\n\n__webpack_require__(/*! ./main */ \"./CTFd/themes/core/assets/js/pages/main.js\");\n\nvar _jquery = _interopRequireDefault(__webpack_require__(/*! jquery */ \"./node_modules/jquery/dist/jquery.js\"));\n\nvar _momentTimezone = _interopRequireDefault(__webpack_require__(/*! moment-timezone */ \"./node_modules/moment-timezone/index.js\"));\n\nvar _CTFd = _interopRequireDefault(__webpack_require__(/*! ../CTFd */ \"./CTFd/themes/core/assets/js/CTFd.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction switchTab(event) {\n event.preventDefault(); // Handle tab validation\n\n var valid_tab = true;\n (0, _jquery.default)(event.target).closest(\"[role=tabpanel]\").find(\"input,textarea\").each(function (i, e) {\n var $e = (0, _jquery.default)(e);\n var status = e.checkValidity();\n\n if (status === false) {\n $e.removeClass(\"input-filled-valid\");\n $e.addClass(\"input-filled-invalid\");\n valid_tab = false;\n }\n });\n\n if (valid_tab == false) {\n return;\n }\n\n var href = (0, _jquery.default)(event.target).data(\"href\");\n (0, _jquery.default)(\".nav a[href=\\\"\".concat(href, \"\\\"]\")).tab(\"show\");\n}\n\nfunction processDateTime(datetime) {\n return function (_event) {\n var date_picker = (0, _jquery.default)(\"#\".concat(datetime, \"-date\"));\n var time_picker = (0, _jquery.default)(\"#\".concat(datetime, \"-time\"));\n var unix_time = (0, _momentTimezone.default)(\"\".concat(date_picker.val(), \" \").concat(time_picker.val()), \"YYYY-MM-DD HH:mm\").utc().unix();\n\n if (isNaN(unix_time)) {\n (0, _jquery.default)(\"#\".concat(datetime, \"-preview\")).val(\"\");\n } else {\n (0, _jquery.default)(\"#\".concat(datetime, \"-preview\")).val(unix_time);\n }\n };\n}\n\nfunction mlcSetup(_event) {\n var params = {\n name: (0, _jquery.default)(\"#ctf_name\").val(),\n type: \"jeopardy\",\n description: (0, _jquery.default)(\"#ctf_description\").val(),\n user_mode: (0, _jquery.default)(\"#user_mode\").val(),\n event_url: window.location.origin + _CTFd.default.config.urlRoot,\n redirect_url: window.location.origin + _CTFd.default.config.urlRoot + \"/redirect\",\n integration_setup_url: window.location.origin + _CTFd.default.config.urlRoot + \"/setup/integrations\",\n start: (0, _jquery.default)(\"#start-preview\").val(),\n end: (0, _jquery.default)(\"#end-preview\").val(),\n platform: \"CTFd\",\n state: window.STATE\n };\n var ret = [];\n\n for (var p in params) {\n ret.push(encodeURIComponent(p) + \"=\" + encodeURIComponent(params[p]));\n }\n\n window.open(\"https://www.majorleaguecyber.org/events/new?\" + ret.join(\"&\"), \"_blank\");\n}\n\n(0, _jquery.default)(function () {\n (0, _jquery.default)(\".tab-next\").click(switchTab);\n (0, _jquery.default)(\"input\").on(\"keypress\", function (e) {\n // Hook Enter button\n if (e.keyCode == 13) {\n e.preventDefault();\n (0, _jquery.default)(e.target).closest(\".tab-pane\").find(\"button[data-href]\").click();\n }\n });\n (0, _jquery.default)(\"#integration-mlc\").click(mlcSetup);\n (0, _jquery.default)(\"#start-date,#start-time\").change(processDateTime(\"start\"));\n (0, _jquery.default)(\"#end-date,#end-time\").change(processDateTime(\"end\"));\n (0, _jquery.default)(\"#config-color-picker\").on(\"input\", function (_e) {\n (0, _jquery.default)(\"#config-color-input\").val((0, _jquery.default)(this).val());\n });\n (0, _jquery.default)(\"#config-color-reset\").click(function () {\n (0, _jquery.default)(\"#config-color-input\").val(\"\");\n (0, _jquery.default)(\"#config-color-picker\").val(\"\");\n });\n window.addEventListener(\"storage\", function (event) {\n if (event.key == \"integrations\" && event.newValue) {\n var integration = JSON.parse(event.newValue);\n\n if (integration[\"name\"] == \"mlc\") {\n (0, _jquery.default)(\"#integration-mlc\").text(\"Already Configured\").attr(\"disabled\", true);\n window.focus();\n localStorage.removeItem(\"integrations\");\n }\n }\n });\n (0, _jquery.default)(\"#setup-form\").submit(function (e) {\n if ((0, _jquery.default)(\"#newsletter-checkbox\").prop(\"checked\")) {\n var email = (0, _jquery.default)(e.target).find(\"input[name=email]\").val();\n\n _jquery.default.ajax({\n type: \"POST\",\n url: \"https://ctfd.us15.list-manage.com/subscribe/post-json?u=6c7fa6feeced52775aec9d015&id=dd1484208e&c=?\",\n data: {\n EMAIL: email,\n subscribe: \"Subscribe\",\n b_6c7fa6feeced52775aec9d015_dd1484208e: \"\"\n },\n dataType: \"jsonp\",\n contentType: \"application/json; charset=utf-8\"\n });\n }\n });\n});\n\n//# sourceURL=webpack:///./CTFd/themes/core/assets/js/pages/setup.js?"); /***/ }) diff --git a/CTFd/themes/core/static/js/pages/setup.min.js b/CTFd/themes/core/static/js/pages/setup.min.js index 9b4264a0..946a31e9 100644 --- a/CTFd/themes/core/static/js/pages/setup.min.js +++ b/CTFd/themes/core/static/js/pages/setup.min.js @@ -1 +1 @@ -!function(l){function e(e){for(var t,o,n=e[0],s=e[1],i=e[2],a=0,r=[];a".concat(e.body,"

")):o.find(".modal-body").append((0,r.default)(e.body));var n=(0,r.default)(c.format(e.button));return e.success&&(0,r.default)(n).click(function(){e.success()}),e.large&&o.find(".modal-dialog").addClass("modal-lg"),o.find(".modal-footer").append(n),(0,r.default)("main").append(o),o.modal("show"),(0,r.default)(o).on("hidden.bs.modal",function(){(0,r.default)(this).modal("dispose")}),o}function f(e){(0,r.default)("#ezq--notifications-toast-container").length||(0,r.default)("body").append((0,r.default)("
").attr({id:"ezq--notifications-toast-container"}).css({position:"fixed",bottom:"0",right:"0","min-width":"20%"}));var t=l.format(e.title,e.body),o=(0,r.default)(t);if(e.onclose&&(0,r.default)(o).find("button[data-dismiss=toast]").click(function(){e.onclose()}),e.onclick){var n=(0,r.default)(o).find(".toast-body");n.addClass("cursor-pointer"),n.click(function(){e.onclick()})}var s=!1!==e.autohide,i=!1!==e.animation,a=e.delay||1e4;return(0,r.default)("#ezq--notifications-toast-container").prepend(o),o.toast({autohide:s,delay:a,animation:i}),o.toast("show"),o}function j(e){var t=i.format(e.title),o=(0,r.default)(t);"string"==typeof e.body?o.find(".modal-body").append("

".concat(e.body,"

")):o.find(".modal-body").append((0,r.default)(e.body));var n=(0,r.default)(m),s=(0,r.default)(u);return o.find(".modal-footer").append(s),o.find(".modal-footer").append(n),(0,r.default)("main").append(o),(0,r.default)(o).on("hidden.bs.modal",function(){(0,r.default)(this).modal("dispose")}),(0,r.default)(n).click(function(){e.success()}),o.modal("show"),o}function _(e){if(e.target){var t=(0,r.default)(e.target);return t.find(".progress-bar").css("width",e.width+"%"),t}var o=a.format(e.width),n=i.format(e.title),s=(0,r.default)(n);return s.find(".modal-body").append((0,r.default)(o)),(0,r.default)("main").append(s),s.modal("show")}function h(e){var t={success:d,error:s}[e.type].format(e.body);return(0,r.default)(t)}var v={ezAlert:p,ezToast:f,ezQuery:j,ezProgressBar:_,ezBadge:h};t.default=v},"./CTFd/themes/core/assets/js/fetch.js":function(e,t,o){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,o("./node_modules/whatwg-fetch/fetch.js");var n,s=(n=o("./CTFd/themes/core/assets/js/config.js"))&&n.__esModule?n:{default:n};var i=window.fetch;t.default=function(e,t){return void 0===t&&(t={method:"GET",credentials:"same-origin",headers:{}}),e=s.default.urlRoot+e,void 0===t.headers&&(t.headers={}),t.credentials="same-origin",t.headers.Accept="application/json",t.headers["Content-Type"]="application/json",t.headers["CSRF-Token"]=s.default.csrfNonce,i(e,t)}},"./CTFd/themes/core/assets/js/pages/main.js":function(e,t,o){var n=p(o("./CTFd/themes/core/assets/js/CTFd.js")),s=p(o("./node_modules/jquery/dist/jquery.js")),i=p(o("./node_modules/moment/moment.js")),a=p(o("./node_modules/nunjucks/browser/nunjucks.js")),r=o("./node_modules/howler/dist/howler.js"),l=p(o("./CTFd/themes/core/assets/js/events.js")),d=p(o("./CTFd/themes/core/assets/js/config.js")),c=p(o("./CTFd/themes/core/assets/js/styles.js")),u=p(o("./CTFd/themes/core/assets/js/times.js")),m=p(o("./CTFd/themes/core/assets/js/helpers.js"));function p(e){return e&&e.__esModule?e:{default:e}}n.default.init(window.init),window.CTFd=n.default,window.helpers=m.default,window.$=s.default,window.Moment=i.default,window.nunjucks=a.default,window.Howl=r.Howl,(0,s.default)(function(){(0,c.default)(),(0,u.default)(),(0,l.default)(d.default.urlRoot)})},"./CTFd/themes/core/assets/js/pages/setup.js":function(e,t,o){o("./CTFd/themes/core/assets/js/pages/main.js");var i=n(o("./node_modules/jquery/dist/jquery.js")),a=n(o("./node_modules/moment-timezone/index.js")),s=n(o("./CTFd/themes/core/assets/js/CTFd.js"));function n(e){return e&&e.__esModule?e:{default:e}}function r(e){e.preventDefault();var n=!0;if((0,i.default)(e.target).closest("[role=tabpanel]").find("input,textarea").each(function(e,t){var o=(0,i.default)(t);!1===t.checkValidity()&&(o.removeClass("input-filled-valid"),o.addClass("input-filled-invalid"),n=!1)}),0!=n){var t=(0,i.default)(e.target).data("href");(0,i.default)('.nav a[href="'.concat(t,'"]')).tab("show")}}function l(o){var n=(0,i.default)("#".concat(o,"-date")),s=(0,i.default)("#".concat(o,"-time"));return function(e){var t=(0,a.default)("".concat(n.val()," ").concat(s.val()),"YYYY-MM-DD HH:mm").utc().format("X");(0,i.default)("#".concat(o,"-preview")).val(t)}}function d(e){var t={name:(0,i.default)("#ctf_name").val(),type:"jeopardy",description:(0,i.default)("#ctf_description").val(),user_mode:(0,i.default)("#user_mode").val(),event_url:window.location.origin+s.default.config.urlRoot,redirect_url:window.location.origin+s.default.config.urlRoot+"/redirect",integration_setup_url:window.location.origin+s.default.config.urlRoot+"/setup/integrations",start:(0,i.default)("#start-preview").val(),end:(0,i.default)("#end-preview").val(),platform:"CTFd",state:window.STATE},o=[];for(var n in t)o.push(encodeURIComponent(n)+"="+encodeURIComponent(t[n]));window.open("https://www.majorleaguecyber.org/events/new?"+o.join("&"),"_blank")}(0,i.default)(function(){(0,i.default)(".tab-next").click(r),(0,i.default)("input").on("keypress",function(e){13==e.keyCode&&(e.preventDefault(),(0,i.default)(e.target).closest(".tab-pane").find("button[data-href]").click())}),(0,i.default)("#integration-mlc").click(d),(0,i.default)("#start-date,#start-time").change(l("start")),(0,i.default)("#end-date,#end-time").change(l("end")),(0,i.default)("#config-color-picker").on("input",function(e){(0,i.default)("#config-color-input").val((0,i.default)(this).val())}),(0,i.default)("#config-color-reset").click(function(){(0,i.default)("#config-color-input").val(""),(0,i.default)("#config-color-picker").val("")}),window.addEventListener("storage",function(e){"integrations"==e.key&&e.newValue&&"mlc"==JSON.parse(e.newValue).name&&((0,i.default)("#integration-mlc").text("Already Configured").attr("disabled",!0),window.focus(),localStorage.removeItem("integrations"))}),(0,i.default)("#setup-form").submit(function(e){if((0,i.default)("#newsletter-checkbox").prop("checked")){var t=(0,i.default)(e.target).find("input[name=email]").val();i.default.ajax({type:"POST",url:"https://ctfd.us15.list-manage.com/subscribe/post-json?u=6c7fa6feeced52775aec9d015&id=dd1484208e&c=?",data:{EMAIL:t,subscribe:"Subscribe",b_6c7fa6feeced52775aec9d015_dd1484208e:""},dataType:"jsonp",contentType:"application/json; charset=utf-8"})}})})},"./CTFd/themes/core/assets/js/patch.js":function(e,t,o){var n,r=(n=o("./node_modules/q/q.js"))&&n.__esModule?n:{default:n},s=o("./CTFd/themes/core/assets/js/api.js");function i(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function l(e,t){return function(t){for(var e=1;e>4*s&255).toString(16)).substr(-2)}return n},t.htmlEntities=function(e){return(0,a.default)("
").text(e).html()},t.cumulativeSum=function(e){for(var t=e.concat(),o=0;o'),(0,a.default)("th.sort-col").click(function(){var e=(0,a.default)(this).parents("table").eq(0),t=e.find("tr:gt(0)").toArray().sort(function(s){return function(e,t){var o=i(e,s),n=i(t,s);return a.default.isNumeric(o)&&a.default.isNumeric(n)?o-n:o.toString().localeCompare(n)}}((0,a.default)(this).index()));this.asc=!this.asc,this.asc||(t=t.reverse());for(var o=0;o".concat(e.body,"

")):o.find(".modal-body").append((0,r.default)(e.body));var n=(0,r.default)(c.format(e.button));return e.success&&(0,r.default)(n).click(function(){e.success()}),e.large&&o.find(".modal-dialog").addClass("modal-lg"),o.find(".modal-footer").append(n),(0,r.default)("main").append(o),o.modal("show"),(0,r.default)(o).on("hidden.bs.modal",function(){(0,r.default)(this).modal("dispose")}),o}function f(e){(0,r.default)("#ezq--notifications-toast-container").length||(0,r.default)("body").append((0,r.default)("
").attr({id:"ezq--notifications-toast-container"}).css({position:"fixed",bottom:"0",right:"0","min-width":"20%"}));var t=l.format(e.title,e.body),o=(0,r.default)(t);if(e.onclose&&(0,r.default)(o).find("button[data-dismiss=toast]").click(function(){e.onclose()}),e.onclick){var n=(0,r.default)(o).find(".toast-body");n.addClass("cursor-pointer"),n.click(function(){e.onclick()})}var s=!1!==e.autohide,i=!1!==e.animation,a=e.delay||1e4;return(0,r.default)("#ezq--notifications-toast-container").prepend(o),o.toast({autohide:s,delay:a,animation:i}),o.toast("show"),o}function j(e){var t=i.format(e.title),o=(0,r.default)(t);"string"==typeof e.body?o.find(".modal-body").append("

".concat(e.body,"

")):o.find(".modal-body").append((0,r.default)(e.body));var n=(0,r.default)(m),s=(0,r.default)(u);return o.find(".modal-footer").append(s),o.find(".modal-footer").append(n),(0,r.default)("main").append(o),(0,r.default)(o).on("hidden.bs.modal",function(){(0,r.default)(this).modal("dispose")}),(0,r.default)(n).click(function(){e.success()}),o.modal("show"),o}function _(e){if(e.target){var t=(0,r.default)(e.target);return t.find(".progress-bar").css("width",e.width+"%"),t}var o=a.format(e.width),n=i.format(e.title),s=(0,r.default)(n);return s.find(".modal-body").append((0,r.default)(o)),(0,r.default)("main").append(s),s.modal("show")}function h(e){var t={success:d,error:s}[e.type].format(e.body);return(0,r.default)(t)}var v={ezAlert:p,ezToast:f,ezQuery:j,ezProgressBar:_,ezBadge:h};t.default=v},"./CTFd/themes/core/assets/js/fetch.js":function(e,t,o){Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,o("./node_modules/whatwg-fetch/fetch.js");var n,s=(n=o("./CTFd/themes/core/assets/js/config.js"))&&n.__esModule?n:{default:n};var i=window.fetch;t.default=function(e,t){return void 0===t&&(t={method:"GET",credentials:"same-origin",headers:{}}),e=s.default.urlRoot+e,void 0===t.headers&&(t.headers={}),t.credentials="same-origin",t.headers.Accept="application/json",t.headers["Content-Type"]="application/json",t.headers["CSRF-Token"]=s.default.csrfNonce,i(e,t)}},"./CTFd/themes/core/assets/js/pages/main.js":function(e,t,o){var n=p(o("./CTFd/themes/core/assets/js/CTFd.js")),s=p(o("./node_modules/jquery/dist/jquery.js")),i=p(o("./node_modules/moment/moment.js")),a=p(o("./node_modules/nunjucks/browser/nunjucks.js")),r=o("./node_modules/howler/dist/howler.js"),l=p(o("./CTFd/themes/core/assets/js/events.js")),d=p(o("./CTFd/themes/core/assets/js/config.js")),c=p(o("./CTFd/themes/core/assets/js/styles.js")),u=p(o("./CTFd/themes/core/assets/js/times.js")),m=p(o("./CTFd/themes/core/assets/js/helpers.js"));function p(e){return e&&e.__esModule?e:{default:e}}n.default.init(window.init),window.CTFd=n.default,window.helpers=m.default,window.$=s.default,window.Moment=i.default,window.nunjucks=a.default,window.Howl=r.Howl,(0,s.default)(function(){(0,c.default)(),(0,u.default)(),(0,l.default)(d.default.urlRoot)})},"./CTFd/themes/core/assets/js/pages/setup.js":function(e,t,o){o("./CTFd/themes/core/assets/js/pages/main.js");var i=n(o("./node_modules/jquery/dist/jquery.js")),a=n(o("./node_modules/moment-timezone/index.js")),s=n(o("./CTFd/themes/core/assets/js/CTFd.js"));function n(e){return e&&e.__esModule?e:{default:e}}function r(e){e.preventDefault();var n=!0;if((0,i.default)(e.target).closest("[role=tabpanel]").find("input,textarea").each(function(e,t){var o=(0,i.default)(t);!1===t.checkValidity()&&(o.removeClass("input-filled-valid"),o.addClass("input-filled-invalid"),n=!1)}),0!=n){var t=(0,i.default)(e.target).data("href");(0,i.default)('.nav a[href="'.concat(t,'"]')).tab("show")}}function l(s){return function(e){var t=(0,i.default)("#".concat(s,"-date")),o=(0,i.default)("#".concat(s,"-time")),n=(0,a.default)("".concat(t.val()," ").concat(o.val()),"YYYY-MM-DD HH:mm").utc().unix();isNaN(n)?(0,i.default)("#".concat(s,"-preview")).val(""):(0,i.default)("#".concat(s,"-preview")).val(n)}}function d(e){var t={name:(0,i.default)("#ctf_name").val(),type:"jeopardy",description:(0,i.default)("#ctf_description").val(),user_mode:(0,i.default)("#user_mode").val(),event_url:window.location.origin+s.default.config.urlRoot,redirect_url:window.location.origin+s.default.config.urlRoot+"/redirect",integration_setup_url:window.location.origin+s.default.config.urlRoot+"/setup/integrations",start:(0,i.default)("#start-preview").val(),end:(0,i.default)("#end-preview").val(),platform:"CTFd",state:window.STATE},o=[];for(var n in t)o.push(encodeURIComponent(n)+"="+encodeURIComponent(t[n]));window.open("https://www.majorleaguecyber.org/events/new?"+o.join("&"),"_blank")}(0,i.default)(function(){(0,i.default)(".tab-next").click(r),(0,i.default)("input").on("keypress",function(e){13==e.keyCode&&(e.preventDefault(),(0,i.default)(e.target).closest(".tab-pane").find("button[data-href]").click())}),(0,i.default)("#integration-mlc").click(d),(0,i.default)("#start-date,#start-time").change(l("start")),(0,i.default)("#end-date,#end-time").change(l("end")),(0,i.default)("#config-color-picker").on("input",function(e){(0,i.default)("#config-color-input").val((0,i.default)(this).val())}),(0,i.default)("#config-color-reset").click(function(){(0,i.default)("#config-color-input").val(""),(0,i.default)("#config-color-picker").val("")}),window.addEventListener("storage",function(e){"integrations"==e.key&&e.newValue&&"mlc"==JSON.parse(e.newValue).name&&((0,i.default)("#integration-mlc").text("Already Configured").attr("disabled",!0),window.focus(),localStorage.removeItem("integrations"))}),(0,i.default)("#setup-form").submit(function(e){if((0,i.default)("#newsletter-checkbox").prop("checked")){var t=(0,i.default)(e.target).find("input[name=email]").val();i.default.ajax({type:"POST",url:"https://ctfd.us15.list-manage.com/subscribe/post-json?u=6c7fa6feeced52775aec9d015&id=dd1484208e&c=?",data:{EMAIL:t,subscribe:"Subscribe",b_6c7fa6feeced52775aec9d015_dd1484208e:""},dataType:"jsonp",contentType:"application/json; charset=utf-8"})}})})},"./CTFd/themes/core/assets/js/patch.js":function(e,t,o){var n,r=(n=o("./node_modules/q/q.js"))&&n.__esModule?n:{default:n},s=o("./CTFd/themes/core/assets/js/api.js");function i(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e}function l(e,t){return function(t){for(var e=1;e>4*s&255).toString(16)).substr(-2)}return n},t.htmlEntities=function(e){return(0,a.default)("
").text(e).html()},t.cumulativeSum=function(e){for(var t=e.concat(),o=0;o'),(0,a.default)("th.sort-col").click(function(){var e=(0,a.default)(this).parents("table").eq(0),t=e.find("tr:gt(0)").toArray().sort(function(s){return function(e,t){var o=i(e,s),n=i(t,s);return a.default.isNumeric(o)&&a.default.isNumeric(n)?o-n:o.toString().localeCompare(n)}}((0,a.default)(this).index()));this.asc=!this.asc,this.asc||(t=t.reverse());for(var o=0;o