{"version":3,"file":"app.min.js","sources":["app.min.js"],"sourcesContent":["window[\"Handlebars\"] = window[\"Handlebars\"] || {};\nwindow[\"Handlebars\"][\"templates\"] = window[\"Handlebars\"][\"templates\"] || {};\nwindow[\"Handlebars\"][\"templates\"][\"alert\"] = Handlebars.template({\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"
\\r\\n\t
\\r\\n\t\t\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"text\") || (depth0 != null ? lookupProperty(depth0,\"text\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"text\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":30},\"end\":{\"line\":3,\"column\":38}}}) : helper)))\n + \"\\r\\n\t\t×\\r\\n\t
\\r\\n
\";\n},\"useData\":true});\nwindow[\"Handlebars\"][\"templates\"][\"card\"] = Handlebars.template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"show_related_heading\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":2,\"column\":1},\"end\":{\"line\":4,\"column\":9}}})) != null ? stack1 : \"\")\n + \"\t\\r\\n\t\t
\\r\\n\t\t\t

\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"title\") || (depth0 != null ? lookupProperty(depth0,\"title\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"title\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":7,\"column\":35},\"end\":{\"line\":7,\"column\":46}}}) : helper)))\n + \"

\\r\\n\t\t\t

\\r\\n\t\t\t\t\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"description\") || (depth0 != null ? lookupProperty(depth0,\"description\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"description\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":9,\"column\":4},\"end\":{\"line\":9,\"column\":21}}}) : helper)))\n + \"\\r\\n\t\t\t

\\r\\n\t\t\t
\\r\\n\t\t
\\r\\n\\r\\n\t\t
\\r\\n\t\t\t
\\r\\n\t\t\t\t
\\r\\n\t\t\t\t\t
\\r\\n\t\t\t\t\t\t\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"professionText\") || (depth0 != null ? lookupProperty(depth0,\"professionText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"professionText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":18,\"column\":6},\"end\":{\"line\":18,\"column\":24}}}) : helper)))\n + \"\\r\\n\t\t\t\t\t
\\r\\n\t\t\t\t\t
\\r\\n\t\t\t\t\t\t\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"profession\") || (depth0 != null ? lookupProperty(depth0,\"profession\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"profession\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":21,\"column\":6},\"end\":{\"line\":21,\"column\":20}}}) : helper)))\n + \"\\r\\n\t\t\t\t\t
\\r\\n\t\t\t\t
\\r\\n\t\t\t\t
\\r\\n\t\t\t\t\t
\\r\\n\t\t\t\t\t\t\t\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"typeText\") || (depth0 != null ? lookupProperty(depth0,\"typeText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"typeText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":26,\"column\":7},\"end\":{\"line\":26,\"column\":19}}}) : helper)))\n + \"\\r\\n\t\t\t\t\t
\\r\\n\t\t\t\t\t
\\r\\n\t\t\t\t\t\t\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"type\") || (depth0 != null ? lookupProperty(depth0,\"type\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"type\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":29,\"column\":6},\"end\":{\"line\":29,\"column\":14}}}) : helper)))\n + \"\\r\\n\t\t\t\t\t
\\r\\n\t\t\t\t
\\r\\n\t\t\t
\\r\\n\t\t\t
\\r\\n\\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"is_countdown\") : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(8, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":35,\"column\":4},\"end\":{\"line\":37,\"column\":15}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"is_countdown\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(10, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":38,\"column\":4},\"end\":{\"line\":40,\"column\":12}}})) != null ? stack1 : \"\")\n + \"\t\t\t\t\t\t
\\r\\n\t\t\t\t\t\t\t\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"cityText\") || (depth0 != null ? lookupProperty(depth0,\"cityText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"cityText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":42,\"column\":7},\"end\":{\"line\":42,\"column\":19}}}) : helper)))\n + \"\\r\\n\t\t\t\t\t\t
\\r\\n\t\t\t\t\t\t
\\r\\n\t\t\t\t\t\t\t\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"city\") || (depth0 != null ? lookupProperty(depth0,\"city\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"city\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":45,\"column\":7},\"end\":{\"line\":45,\"column\":15}}}) : helper)))\n + \"\\r\\n\t\t\t\t\t\t
\\r\\n\t\t\t\t\t
\\r\\n\\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"is_countdown\") : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(12, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":49,\"column\":5},\"end\":{\"line\":51,\"column\":16}}})) != null ? stack1 : \"\")\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"is_countdown\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(14, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":52,\"column\":5},\"end\":{\"line\":54,\"column\":13}}})) != null ? stack1 : \"\")\n + \"\\r\\n\t\t\t\t\t\t
\\r\\n\t\t\t\t\t\t\t\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"dateText\") || (depth0 != null ? lookupProperty(depth0,\"dateText\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"dateText\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":57,\"column\":7},\"end\":{\"line\":57,\"column\":19}}}) : helper)))\n + \"\\r\\n\t\t\t\t\t\t
\\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"unless\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"is_countdown\") : depth0),{\"name\":\"unless\",\"hash\":{},\"fn\":container.program(16, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":59,\"column\":6},\"end\":{\"line\":63,\"column\":17}}})) != null ? stack1 : \"\")\n + \"\\r\\n\"\n + ((stack1 = lookupProperty(helpers,\"if\").call(alias1,(depth0 != null ? lookupProperty(depth0,\"is_countdown\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(18, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":65,\"column\":6},\"end\":{\"line\":69,\"column\":14}}})) != null ? stack1 : \"\")\n + \" \t\t\t
\\r\\n\\r\\n\t\t\t\\r\\n\t\t\\r\\n\\r\\n\\r\\n\t\t
\\r\\n\\r\\n\t\t\t\\r\\n\t\t
\\r\\n\t
\\r\\n\";\n},\"2\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t

\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"related_heading_text\") || (depth0 != null ? lookupProperty(depth0,\"related_heading_text\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"related_heading_text\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":63},\"end\":{\"line\":3,\"column\":89}}}) : helper)))\n + \"

\\r\\n\";\n},\"4\":function(container,depth0,helpers,partials,data) {\n return \" o-job-card--is-applied\";\n},\"6\":function(container,depth0,helpers,partials,data) {\n return \" o-job-card--alert\";\n},\"8\":function(container,depth0,helpers,partials,data) {\n return \"\t\t\t\t\t
\\r\\n\";\n},\"10\":function(container,depth0,helpers,partials,data) {\n return \"\t\t\t\t\t
\\r\\n\";\n},\"12\":function(container,depth0,helpers,partials,data) {\n return \"\t\t\t\t\t\t
\\r\\n\";\n},\"14\":function(container,depth0,helpers,partials,data) {\n return \"\t\t\t\t\t\t
\\r\\n\";\n},\"16\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t\t\t\t\t
\\r\\n\t\t\t\t\t\t\t\t\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"dateValue\") || (depth0 != null ? lookupProperty(depth0,\"dateValue\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"dateValue\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":61,\"column\":8},\"end\":{\"line\":61,\"column\":21}}}) : helper)))\n + \"\\r\\n\t\t\t\t\t\t\t
\\r\\n\";\n},\"18\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t\t\t\t\t
\\r\\n\t\t\t\t\t\t\t\t\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"dateValue\") || (depth0 != null ? lookupProperty(depth0,\"dateValue\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"dateValue\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":67,\"column\":8},\"end\":{\"line\":67,\"column\":21}}}) : helper)))\n + \"\\r\\n\t\t\t\t\t\t\t
\\r\\n\";\n},\"20\":function(container,depth0,helpers,partials,data) {\n return \" o-job-card__link--read-more-logo\";\n},\"22\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t\t\t\t\t\t\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"is_applied_text\") || (depth0 != null ? lookupProperty(depth0,\"is_applied_text\") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === \"function\" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{\"name\":\"is_applied_text\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":89,\"column\":8},\"end\":{\"line\":89,\"column\":29}}}) : helper)))\n + \"\\r\\n\";\n},\"24\":function(container,depth0,helpers,partials,data) {\n var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t\t\t\t\t\\r\\n\t\t\t\t\t\t\t\t\"\n + alias4(((helper = (helper = lookupProperty(helpers,\"apply_text\") || (depth0 != null ? lookupProperty(depth0,\"apply_text\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"apply_text\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":92,\"column\":8},\"end\":{\"line\":92,\"column\":22}}}) : helper)))\n + \"\\r\\n\t\t\t\t\t\t\t\\r\\n\";\n},\"26\":function(container,depth0,helpers,partials,data) {\n var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t\t\t
\\r\\n\t\t\t\t\t\t\\\"\\\"\\r\\n\t\t\t\t\t
\\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"each\").call(depth0 != null ? depth0 : (container.nullContext || {}),depth0,{\"name\":\"each\",\"hash\":{},\"fn\":container.program(1, data, 0),\"inverse\":container.noop,\"data\":data,\"loc\":{\"start\":{\"line\":1,\"column\":0},\"end\":{\"line\":109,\"column\":9}}})) != null ? stack1 : \"\");\n},\"useData\":true});\nwindow[\"Handlebars\"][\"templates\"][\"pagination\"] = Handlebars.template({\"1\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return ((stack1 = lookupProperty(helpers,\"if\").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,\"active\") : depth0),{\"name\":\"if\",\"hash\":{},\"fn\":container.program(2, data, 0),\"inverse\":container.program(4, data, 0),\"data\":data,\"loc\":{\"start\":{\"line\":3,\"column\":2},\"end\":{\"line\":7,\"column\":9}}})) != null ? stack1 : \"\");\n},\"2\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"title\") || (depth0 != null ? lookupProperty(depth0,\"title\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"title\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":4,\"column\":77},\"end\":{\"line\":4,\"column\":86}}}) : helper)))\n + \"\\r\\n\";\n},\"4\":function(container,depth0,helpers,partials,data) {\n var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3=\"function\", lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\t\t\t\"\n + container.escapeExpression(((helper = (helper = lookupProperty(helpers,\"title\") || (depth0 != null ? lookupProperty(depth0,\"title\") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{\"name\":\"title\",\"hash\":{},\"data\":data,\"loc\":{\"start\":{\"line\":6,\"column\":50},\"end\":{\"line\":6,\"column\":59}}}) : helper)))\n + \"\\r\\n\";\n},\"compiler\":[8,\">= 4.3.0\"],\"main\":function(container,depth0,helpers,partials,data) {\n var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) {\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return parent[propertyName];\n }\n return undefined\n };\n\n return \"\";\n},\"useData\":true});\n(function (window) {\r\n\t'use strict';\r\n\r\n\tif (!window.console) {\r\n\t\twindow.console = {\r\n\t\t\tlog: function () { },\r\n\t\t\terror: function () { }\r\n\t\t}\r\n\t}\r\n})(window);\n(function(SC) {\r\n\t'use strict';\r\n\r\n\tvar utils = {};\r\n\r\n\tutils.cookie = {\r\n\t\t/**\r\n\t\t * Get cookie\r\n\t\t * @param {any} cname\r\n\t\t */\r\n\t\tget: function(cname) {\r\n\t\t\tvar name = cname + '=';\r\n\t\t\tvar decodedCookie = decodeURIComponent(document.cookie);\r\n\t\t\tvar ca = decodedCookie.split(';');\r\n\t\t\tfor (var i = 0; i < ca.length; i++) {\r\n\t\t\t\tvar c = ca[i];\r\n\t\t\t\twhile (c.charAt(0) == ' ') {\r\n\t\t\t\t\tc = c.substring(1)\r\n\t\t\t\t}\r\n\t\t\t\tif (c.indexOf(name) == 0) {\r\n\t\t\t\t\treturn c.substring(name.length, c.length);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn '';\r\n\t\t},\r\n\t\t/**\r\n\t\t * Set cookie\r\n\t\t * @param {any} cname\r\n\t\t * @param {any} cvalue\r\n\t\t * @param {any} exdays\r\n\t\t */\r\n\t\tset: function(cname, cvalue, exdays) {\r\n\t\t\tvar d = new Date();\r\n\t\t\td.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));\r\n\t\t\tvar expires = 'expires=' + d.toUTCString();\r\n\t\t\tdocument.cookie = cname + '=' + cvalue + ';' + expires + ';path=/;secure';\r\n\t\t}\r\n\t};\r\n\r\n\tvar replaceAll = function (target, search, replacement) {\r\n\t\treturn target.split(search).join(replacement);\r\n\t};\r\n\r\n\tutils.format = {\r\n\t\t/**\r\n\t\t * Create slug/url from text\r\n\t\t * @param {any} text\r\n\t\t */\r\n\t\tslugify: function (text) {\r\n\t\t\t// !!! If this is changed the C# method Slugify must change too! !!!\r\n\r\n\t\t\tvar part1 = text.toString().toLowerCase()\r\n\t\t\t\t.replace(/\\//g, '-') // Replace spaces with separator\r\n\t\t\t\t.replace(/\\s+/g, '-'); // Replace spaces with separator\r\n\r\n\t\t\tpart1 = replaceAll(part1, 'å', 'a'); // Replace swedish characters\r\n\t\t\tpart1 = replaceAll(part1, 'ä', 'a'); // Replace swedish characters\r\n\t\t\tpart1 = replaceAll(part1, 'ö', 'o'); // Replace swedish characters\r\n\t\t\tpart1 = replaceAll(part1, 'ø', 'o'); // no/dk\r\n\t\t\tpart1 = replaceAll(part1, 'æ', 'a'); // dk\r\n\r\n\t\t\treturn part1.replace(/[^\\w\\-]+/g, '') // Remove all non-word chars\r\n\t\t\t\t.replace(/\\-\\-+/g, '-') // Replace multiple - with single -\r\n\t\t\t\t.replace(/\\_\\-+/g, '_') // Replace multiple _ with single _\r\n\t\t\t\t.replace(/^-+/, '') // Trim - from start of text\r\n\t\t\t\t.replace(/-+$/, ''); // Trim - from end of text\r\n\t\t}\r\n\t};\r\n\r\n\tutils.i18n = {\r\n\t\t//getLanguagePrefix: function() {\r\n\t\t//\tvar prefix = SC.lang.substring(0, 2);\r\n\r\n\t\t//\tif (prefix == 'no')\r\n\t\t//\t\tprefix = 'nb';\r\n\r\n\t\t//\treturn prefix;\r\n\t\t//}\r\n\r\n\t};\r\n\r\n\tutils.auth = {\r\n\t\t//isAuthenticated: function() {\r\n\t\t//\treturn false;\r\n\t\t//},\r\n\t\t//renewToken: function() {\r\n\r\n\t\t//}\r\n\r\n\t};\r\n\r\n\tutils.events = {\r\n\t\taddEvent: (function() {\r\n\t\t\tif (document.addEventListener) {\r\n\t\t\t\treturn function(el, type, fn) {\r\n\t\t\t\t\tif (el && el.nodeName || el === window) {\r\n\t\t\t\t\t\tel.addEventListener(type, fn, false)\r\n\t\t\t\t\t} else if (el && el.length) {\r\n\t\t\t\t\t\tfor (var i = 0; i < el.length; i++) {\r\n\t\t\t\t\t\t\taddEvent(el[i], type, fn)\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} else {\r\n\t\t\t\treturn function(el, type, fn) {\r\n\t\t\t\t\tif (el && el.nodeName || el === window) {\r\n\t\t\t\t\t\tel.attachEvent('on' + type, function() { return fn.call(el, window.event); })\r\n\t\t\t\t\t} else if (el && el.length) {\r\n\t\t\t\t\t\tfor (var i = 0; i < el.length; i++) {\r\n\t\t\t\t\t\t\taddEvent(el[i], type, fn)\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\r\n\tutils.slider = {\r\n\t\t/**\r\n\t\t * Init slider\r\n\t\t */\r\n\t\tinitJobOpeningsSlickSlider: function() {\r\n\r\n\t\t\tif ($('.o-job-list-slider__wrapper').length === 0) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\r\n\t\t\tvar arrowImage =\r\n\t\t\t\t'Shape'\r\n\r\n\t\t\t$('.o-job-list-slider__wrapper').not('.slick-initialized').slick({\r\n\t\t\t\tprevArrow: '',\r\n\t\t\t\tnextArrow: '',\r\n\t\t\t\tinfinite: false,\r\n\t\t\t\tcenterMode: false,\r\n\t\t\t\tslidesToShow: 4,\r\n\t\t\t\tslidesToScroll: 4,\r\n\t\t\t\tresponsive: [\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tbreakpoint: 1200,\r\n\t\t\t\t\t\tsettings: {\r\n\t\t\t\t\t\t\tslidesToShow: 3,\r\n\t\t\t\t\t\t\tslidesToScroll: 3\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tbreakpoint: 900,\r\n\t\t\t\t\t\tsettings: {\r\n\t\t\t\t\t\t\tslidesToShow: 2,\r\n\t\t\t\t\t\t\tslidesToScroll: 2\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t},\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tbreakpoint: 600,\r\n\t\t\t\t\t\tsettings: {\r\n\t\t\t\t\t\t\tslidesToShow: 1,\r\n\t\t\t\t\t\t\tslidesToScroll: 1\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\tutils.url = {\r\n\t\tgetUrlParameters: function(qs) {\r\n\t\t\tif (!qs) {\r\n\t\t\t\tqs = window.location.search;\r\n\t\t\t} else {\r\n\t\t\t\tvar index = qs.indexOf('?');\r\n\t\t\t\tif (index !== -1) {\r\n\t\t\t\t\tqs = qs.substr(index);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tqs = qs.split('+').join(' ');\r\n\r\n\t\t\tvar params = {},\r\n\t\t\t\ttokens,\r\n\t\t\t\tre = /[?&]?([^=]+)=([^&]*)/g;\r\n\r\n\t\t\twhile (tokens = re.exec(qs)) {\r\n\t\t\t\tparams[decodeURIComponent(tokens[1])] = decodeURIComponent(tokens[2]);\r\n\t\t\t}\r\n\r\n\t\t\treturn params;\r\n\t\t},\r\n\t\t/**\r\n\t\t *\tRead a urls's/string GET URL variables and return them as an associative array.\r\n\t\t */\r\n\t\tgetUrlVars: function(url) {\r\n\t\t\tvar vars = [], hash;\r\n\t\t\tif (!url) {\r\n\t\t\t\turl = window.location.href;\r\n\t\t\t}\r\n\r\n\t\t\tvar hashes = url.slice(url.indexOf('?') + 1).split('&');\r\n\t\t\tfor (var i = 0; i < hashes.length; i++) {\r\n hash = hashes[i].split('=');\r\n vars.push(hash[0]);\r\n\t\t\t\tvars[hash[0]] = hash[1];\r\n\t\t\t}\r\n\t\t\treturn vars;\r\n\t\t}\r\n\t}\r\n\r\n\tutils.image = {\r\n\t\tcropRemote: function (url, width, height) {\r\n\t\t\turl = _.trimStart(_.trimStart(url, 'http://'), 'https://');\r\n\t\t\treturn '/remote.axd/' + url + '?width=' + width + (height ? '&height=' + height : '') + '&mode=crop';\r\n\t\t}\r\n\t}\r\n\r\n\tutils.navigation = {\r\n\t\tupdate: function(newUrl) {\r\n\r\n\t\t},\r\n\t\treplace: function(newUrl) {\r\n\r\n\t\t},\r\n\t\tback: function() {\r\n\r\n\t\t}\r\n\t}\r\n\r\n\tutils.scrollTo = function ($element, delay, scrollOffset) {\r\n\t\tif (!$element.length) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tscrollOffset = scrollOffset || 0;\r\n\t\tvar offset = $element.offset().top;\r\n\t\tvar headerHeight = $('.o-navigation').height();\r\n\r\n\t\tif (window.innerWidth >= 800) {\r\n\t\t\theaderHeight = 0;\r\n\t\t}\r\n\r\n\t\t$('html,body').animate({\r\n\t\t\tscrollTop: (offset - headerHeight + scrollOffset) + 'px'\r\n\t\t}, delay || 500);\r\n\t}\r\n\r\n\t/**\r\n\t* Check if search object contains any filters\r\n\t*/\r\n\tutils.isEmptySearchObject = function (searchObject) {\r\n\t\tvar empty = false\r\n\r\n\t\tif (searchObject.locations.length === 0 &&\r\n\t\t\tsearchObject.professions.length === 0 &&\r\n\t\t\tsearchObject.keywords.length === 0 &&\r\n\t\t\tsearchObject.schemas.length === 0 &&\r\n\t\t\tsearchObject.types.length === 0 &&\r\n\t\t\tsearchObject.onlySummer !== true &&\r\n\t\t\tsearchObject.onlyInternal !== true) {\r\n\t\t\tempty = true\r\n\t\t}\r\n\t\treturn empty\r\n\t}\r\n\r\n\t/**\r\n\t* Handlebars\r\n\t*/\r\n\tutils.handlebars = {\r\n\r\n\t\t/**\r\n\t\t * Render alert with Handlebars template\r\n\t\t * @param {any} data\r\n\t\t * @param {element} container\r\n\t\t */\r\n\t\trenderAlert: function (data, container) {\r\n\t\t\t// pass data to the template\r\n\t\t\tvar theCompiledHtml = window.Handlebars.templates.alert(data)\r\n\t\t\tcontainer.append(theCompiledHtml)\r\n\r\n\t\t\tvar notification = container.find('.js-alert'),\r\n\t\t\t\tclose = notification.find('.js-alert-dismiss')\r\n\r\n\t\t\tnotification.show()\r\n\r\n\t\t\tclose.on('click', function (e) {\r\n\t\t\t\te.preventDefault()\r\n\t\t\t\tcontainer.empty()\r\n\t\t\t})\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Render jobs with Handlebars template\r\n\t\t * @param {any} data\r\n\t\t * @param {bool} renderRelatedHeading\r\n\t\t */\r\n\t\trenderCard: function (data, renderRelatedHeading) {\r\n\t\t\t/*var jobs = []\r\n\t\t\tvar showRelatedHeading = false\r\n\r\n\t\t\t// setup handlebars object\r\n\t\t\t$.each(data, function (key, job) {\r\n\t\t\t\tvar intro = job.introduction,\r\n\t\t\t\t\turlSearchBase = SC.jobOpeningsSearchUrl,\r\n\t\t\t\t\turlDetails = urlSearchBase + utils.format.slugify(job.location.city.name) + '/' + utils.format.slugify(job.title) + '/' + job.id,\r\n\t\t\t\t\tpublishedDate = moment(job.publishedDate),\r\n\t\t\t\t\tisRelated = false,\r\n\t\t\t\t\tisApplied = false,\r\n\t\t\t\t\tisAppliedText = SC.translate.appliedText,\r\n\t\t\t\t\tisCountdown = false,\r\n\t\t\t\t\tcountdownText = '',\r\n\t\t\t\t\tpublishedDateString = publishedDate.format('DD MMM YYYY');\r\n\r\n\t\t\t\t// append from description if intro to short\r\n\t\t\t\tif (intro.length < 450) {\r\n\t\t\t\t\tintro = intro.concat(' ' + job.description).substr(0, 450);\r\n\t\t\t\t\tintro = intro.substr(0, Math.min(intro.length, intro.lastIndexOf(' ')));\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (job.applied) {\r\n\t\t\t\t\tisApplied = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Format published date\r\n\t\t\t\tvar publishedAgoDays = moment().diff(publishedDate, 'day');\r\n\t\t\t\tif (publishedAgoDays === 0) {\r\n\t\t\t\t\t// Today\r\n\t\t\t\t\tpublishedDateString = SC.translate.today;\r\n\t\t\t\t} else if (publishedAgoDays === 1) {\r\n\t\t\t\t\t// Yesterday\r\n\t\t\t\t\tpublishedDateString = SC.translate.yesterday;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// check if lastDate is within 7 days\r\n\t\t\t\tif (job.lastDate != null && job.lastDate !== false) {\r\n\t\t\t\t\tvar now = moment(),\r\n\t\t\t\t\t\tlastDate = moment(job.lastDate),\r\n\t\t\t\t\t\tdiff = lastDate.diff(now, 'day');\r\n\r\n\t\t\t\t\tisCountdown = diff >= 0 && diff < 7;\r\n\r\n\t\t\t\t\tif (isCountdown) {\r\n\t\t\t\t\t\tvar baseText = SC.translate.daysLeft;\r\n\t\t\t\t\t\tif (diff === 1) { // Diff is whole number from moment\r\n\t\t\t\t\t\t\tbaseText = SC.translate.dayLeft;\r\n\t\t\t\t\t\t\tcountdownText = diff + ' ' + baseText;\r\n\t\t\t\t\t\t} else if (diff === 0) {\r\n\t\t\t\t\t\t\tcountdownText = SC.translate.lastDay;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tcountdownText = diff + ' ' + baseText;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tpublishedDateString = publishedDate.format('DD MMM');\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar jobType, dateValue, dateText = \"\";\r\n\r\n\t\t\t\tif (job.isSummer) {\r\n\t\t\t\t\tjobType = SC.translate.summerjob + \" \" + job.schema;\r\n\r\n\t\t\t\t}else{\r\n\t\t\t\t\tjobType = job.type.name + \" \" + job.schema;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (isCountdown) {\r\n\t\t\t\t\tdateValue = countdownText;\r\n\t\t\t\t\tdateText = SC.translate.finalApplicationDate;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tdateValue = publishedDateString;\r\n\t\t\t\t\tdateText = SC.translate.published;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (job.hitType === 'related' && showRelatedHeading === false && renderRelatedHeading) {\r\n\t\t\t\t\tshowRelatedHeading = true;\r\n\t\t\t\t\tisRelated = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// set default logo\r\n\t\t\t\tvar jobLogo = false;\r\n\r\n\t\t\t\tif (job.imageUrl && job.imageUrl.length) {\r\n\t\t\t\t\tjobLogo = SC.utils.image.cropRemote(job.imageUrl, 60, null); // .replace('dev-apps.', 'apps.') - to get logos on local\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// create handlebars object\r\n\t\t\t\tjobs.push({\r\n\t\t\t\t\ttitle: job.title,\r\n\t\t\t\t\tdescription: intro + '...',\r\n\t\t\t\t\tlogo: jobLogo,\r\n\t\t\t\t\tdate: publishedDateString,\r\n\t\t\t\t\tis_countdown: isCountdown,\r\n\t\t\t\t\turl: urlDetails,\r\n\t\t\t\t\tapply_text: SC.translate.applyText,\r\n\t\t\t\t\tshow_related_heading: isRelated,\r\n\t\t\t\t\trelated_heading_text: SC.translate.resultsHeadingRelated,\r\n\t\t\t\t\tis_applied: isApplied,\r\n\t\t\t\t\tis_applied_text: isAppliedText,\r\n\r\n\t\t\t\t\tprofession: job.profession.freeText ? job.profession.freeText : job.profession.name,\r\n\t\t\t\t\ttype: jobType,\r\n\t\t\t\t\tcity: job.location.city.name,\r\n\t\t\t\t\tdateValue: dateValue,\r\n\t\t\t\t\tprofessionText: SC.translate.professionText,\r\n\t\t\t\t\ttypeText: SC.translate.type,\r\n\t\t\t\t\tcityText: SC.translate.city,\r\n\t\t\t\t\tdateText: dateText,\r\n\t\t\t\t\treadMoreText: SC.translate.readMore\r\n\t\t\t\t});\r\n\t\t\t});*/\r\n\r\n\t\t\t// pass data to the template\r\n\t\t\tvar theCompiledHtml = window.Handlebars.templates.card(data);\r\n\t\t\treturn theCompiledHtml;\r\n\t\t}\r\n\t}\r\n\r\n\tSC.utils = $.extend(SC.utils || {}, utils);\r\n})(StudentConsulting);\n(function(SC) {\r\n\t'use strict';\r\n\r\n\tvar api = {\r\n\t\tjobs: {\r\n\t\t\t/**\r\n\t\t\t * Get the current job opening count\r\n\t\t\t * @param {function()} cb Callback with result \r\n\t\t\t * @param {function()} cberror Callback with error result\r\n\t\t\t */\r\n\t\t\tgetJobOpeningsCount: function (cb, cberror) {\r\n\t\t\t\t$.ajax({\r\n\t\t\t\t\turl: '/api/v1/jobopenings/count',\r\n\t\t\t\t\ttype: 'GET',\r\n\t\t\t\t\tdataType: 'json',\r\n\t\t\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\t\t\theaders: {\r\n\t\t\t\t\t\t'Accept': 'application/json',\r\n\t\t\t\t\t\t'Accept-Language': SC.lang\r\n\t\t\t\t\t},\r\n\t\t\t\t\tsuccess: cb,\r\n\t\t\t\t\terror: cberror\r\n\t\t\t\t});\r\n\t\t\t},\r\n\r\n\t\t\t/**\r\n\t\t\t* Get filtered search count\r\n\t\t\t*/\r\n\t\t\tgetFilteredJobOpeningsCount: function (searchObject, cb, cberror) {\r\n\t\t\t\t$.ajax({\r\n\t\t\t\t\turl: '/api/v1/jobopenings/filtercount',\r\n\t\t\t\t\ttype: 'POST',\r\n\t\t\t\t\tdataType: 'json',\r\n\t\t\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\t\t\theaders: {\r\n\t\t\t\t\t\t'Accept': 'application/json',\r\n\t\t\t\t\t\t'Accept-Language': SC.lang\r\n\t\t\t\t\t},\r\n\t\t\t\t\tdata: JSON.stringify(searchObject),\r\n\t\t\t\t\tsuccess: cb,\r\n\t\t\t\t\terror: cberror\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\t\tjob: {\r\n\t\t\t/**\r\n\t\t\t * Get the form data for a specific job\r\n\t\t\t * @param {number} jobId The job id\r\n\t\t\t * @param {function()} cb\r\n\t\t\t * @param {function()} cberror\r\n\t\t\t */\r\n\t\t\tgetFormData: function (jobId, cb, cberror) {\r\n\t\t\t\t$.ajax({\r\n\t\t\t\t\tmethod: 'GET',\r\n\t\t\t\t\turl: '/api/v1/jobopening/' + jobId + '/formdata',\r\n\t\t\t\t\theaders: {\r\n\t\t\t\t\t\t'Accept': 'application/json',\r\n\t\t\t\t\t\t'Accept-Language': SC.lang\r\n\t\t\t\t\t},\r\n\t\t\t\t\tsuccess: cb,\r\n\t\t\t\t\terror: cberror\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t},\r\n\t\tsearch: {\r\n\t\t\t/**\r\n\t\t\t * Post Search Filter Object\r\n\t\t\t * @param {object} searchObject The search filter object\r\n\t\t\t * @param {function()} cb\r\n\t\t\t * @param {function()} cberror\r\n\t\t\t */\r\n\t\t\tpostSearchFilterObject: function (searchObject, cb, cberror) {\r\n\t\t\t\t// post to api controller\r\n\t\t\t\t$.ajax({\r\n\t\t\t\t\turl: '/api/v1/jobopenings',\r\n\t\t\t\t\ttype: 'POST',\r\n\t\t\t\t\tdataType: 'json',\r\n\t\t\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\t\t\tdata: JSON.stringify(searchObject),\r\n\t\t\t\t\theaders: {\r\n\t\t\t\t\t\t'Accept': 'application/json',\r\n\t\t\t\t\t\t'Accept-Language': SC.lang\r\n\t\t\t\t\t},\r\n\t\t\t\t\tsuccess: cb,\r\n\t\t\t\t\terror: cberror\r\n\t\t\t\t})\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tSC.api = $.extend(SC.api || {}, api);\r\n})(StudentConsulting);\n(function(SC) {\r\n\t'use strict';\r\n\r\n\tvar api = SC.api;\r\n\r\n\t// Check for browser version\r\n\t(function() {\r\n\t\tvar doc = document.documentElement;\r\n\t\tdoc.setAttribute('data-useragent', navigator.userAgent);\r\n\t})();\r\n\t\r\n\t// ---------------------------\r\n\t// START Form initialization\r\n\r\n\t$('.o-form').each(function() {\r\n\t\t$(this).find('input[type=checkbox]').each(function () {\r\n\t\t\t/// \r\n\t\t\t/// Initializes form checkboxes by moving the hidden field to after the label\r\n\t\t\t/// to enable the checkbox to work with special styling\r\n\t\t\t/// \r\n\t\t\tvar $e = $(this),\r\n\t\t\t\tname = $e.attr('name'),\r\n\t\t\t\t$next = $e.siblings('input[type=hidden][name=\"' + name + '\"]');\r\n\r\n\t\t\tif ($next.length) {\r\n\t\t\t\t$next.parent().append($next);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t$(this).find('.js-textarea').on('keyup', function () {\r\n\t\t\t/// \r\n\t\t\t/// Initializes form textareas that should count the amonut of words entered in the textarea\r\n\t\t\t/// \r\n\t\t\tvar textarea = $(this);\r\n\t\t\tvar words = (this.value || '').match(/\\S+/g);\r\n\t\t\tif (words) {\r\n\t\t\t\twords = words.length;\r\n\t\t\t} else {\r\n\t\t\t\twords = 0;\r\n\t\t\t}\r\n\t\t\tvar limit = textarea.data('limit');\r\n\t\t\tvar counter = textarea.siblings('.o-form__textarea-count').find('span');\r\n var showAfter = textarea.data('showafter');\r\n if (showAfter) {\r\n textarea.siblings('.o-form__textarea-count').find('.o-form__count-container').toggle(words >= showAfter); \r\n //textarea.siblings('.o-form__textarea-count').find('.o-form__count-placeholder').toggle(words < showAfter);\r\n }\r\n \r\n\t\t\tif (words > limit) {\r\n\t\t\t\t// Split the string on first xx words and rejoin on spaces\r\n\t\t\t\tvar trimmed = textarea.val().split(/\\s+/, limit).join(\" \");\r\n\t\t\t\t// Add a space at the end to keep new typing making new words\r\n\t\t\t\ttextarea.val(trimmed + \" \");\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tcounter.text(words);\r\n\t\t\t}\r\n\t\t});\r\n\t});\r\n\r\n\tif ($('html').is('[data-postform]')) {\r\n\t\tvar formId = $('html').data('postform');\r\n\t\tif (formId) {\r\n\t\t\tvar $form = $('[data-form-id=' + formId + ']');\r\n\t\t\tif ($form.length) {\r\n\t\t\t\tSC.utils.scrollTo($form, 500, -40);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// -- END form initialization\r\n\r\n\t// ---------------------------\r\n\t// START Job count menu\r\n\t(function () {\r\n var count = SC.utils.cookie.get('jobOpeningsCount');\r\n if (count != '' && $.isNumeric(count)) {\r\n\t\t\t$('.js-navigation-counter').text(count).show();\r\n } else {\r\n\t\t\tapi.jobs.getJobOpeningsCount(function(count) {\r\n\t\t\t\tSC.utils.cookie.set('jobOpeningsCount', count, {expires: 0, secure: true });\r\n\t\t\t\t$('.js-navigation-counter').text(count).show();\r\n\t\t\t}, function(error) {\r\n\t\t\t\t// Error\r\n\t\t\t\tconsole.error('Unable to retrieve jobcount', error);\r\n\t\t\t});\r\n\t\t}\r\n\t})();\r\n\t// -- END Job count menu\r\n\r\n\t// ---------------------------\r\n\t// START Menu\r\n\t(function () {\r\n\t\t// Toggle mobile menu\r\n\t\tvar menuToggle = document.querySelector('.o-navigation__menu-trigger');\r\n var menu = document.querySelector('.o-navigation');\r\n var logoMenu = $('.o-navigation__logo').find('img');\r\n var hasHeroImage = $('.o-hero').css('background-image') != 'none';\r\n\r\n\t\tmenuToggle.onclick = function(e) {\r\n\t\t\te.preventDefault()\r\n\r\n\t\t\tvar classes = menu.className.split(\" \");\r\n\t\t\tvar i = classes.indexOf(\"o-navigation--expanded\");\r\n\r\n\t\t\tvar triggerClasses = menuToggle.className.split(\" \");\r\n\t\t\tvar j = triggerClasses.indexOf(\"o-navigation__menu-trigger--expanded\");\r\n\r\n\t\t\tif (i >= 0) {\r\n\t\t\t\t// Hide menu\r\n\t\t\t\tclasses.splice(i, 1)\r\n\t\t\t\tmenu.className = classes.join(\" \");\r\n\r\n\t\t\t\ttriggerClasses.splice(j, 1)\r\n menuToggle.className = triggerClasses.join(\" \");\r\n\r\n if (hasHeroImage && $(window).scrollTop() <= 50 && i == 2) {\r\n logoMenu.attr('src', '/assets/dist/logo.png')\r\n }\r\n\t\t\t} else {\r\n\t\t\t\t// Show menu\r\n\t\t\t\tclasses.push(\"o-navigation--expanded\");\r\n\t\t\t\tmenu.className = classes.join(\" \");\r\n\r\n\t\t\t\ttriggerClasses.push(\"o-navigation__menu-trigger--expanded\");\r\n menuToggle.className = triggerClasses.join(\" \");\r\n\r\n logoMenu.attr('src', '/assets/dist/logo_b.png')\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//Makes the menu go sticky on scroll\r\n\t\tvar scrollTimeout;\r\n\r\n\t\t$(window).scroll(function() {\r\n\t\t\tif (scrollTimeout) {\r\n\t\t\t\t// clear the timeout, if one is pending\r\n\t\t\t\tclearTimeout(scrollTimeout);\r\n\t\t\t\tscrollTimeout = null;\r\n\t\t\t}\r\n\t\t\tscrollTimeout = setTimeout(scrollHandler, 10);\r\n\t\t})\r\n\r\n function scrollHandler() {\r\n var showingMobileMenu = document.querySelector('.o-navigation').className.split(\" \").indexOf(\"o-navigation--expanded\") != -1;\r\n var mainMenu = $('.o-navigation');\r\n var logoMenu = $('.o-navigation__logo').find('img')\r\n var hasHeroImage = $('.o-hero').css('background-image') != 'none';\r\n\r\n\t\t\t// Check the sroll position\r\n\t\t\t//if ($(window).scrollTop() > 50 && $('.o-navigation__logo').find('img').attr('src') == \"'/assets/dist/logo.png'\") {\r\n // mainMenu.addClass('o-navigation--scrolled');\r\n // logoMenu.attr('src', '/assets/dist/logo_b.png')\r\n\t\t\t//} else {\r\n // mainMenu.removeClass('o-navigation--scrolled');\r\n // if (hasHeroImage && !showingMobileMenu) {\r\n // logoMenu.attr('src', '/assets/dist/logo.png')\r\n // }\r\n\t\t\t//}\r\n\t\t}\r\n\r\n\t\tscrollHandler();\r\n\t})();\r\n\t// -- END menu\r\n\r\n\t// ---------------------------\r\n\t// START Submenu\r\n\t(function() {\r\n\t\tif ($('.o-sub-navigation').length === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar dropdownContainer = $('.o-sub-navigation:not(.js-ignore)'),\r\n\t\t\tdropdownList = dropdownContainer.find('.o-sub-navigation__list');\r\n\r\n\t\tdropdownList.find('.o-sub-navigation__link').on('click',\r\n\t\t\tfunction(e) {\r\n\r\n\t\t\t\tvar $this = $(this);\r\n\r\n\t\t\t\tif ($this.hasClass('js-scroll') && !$this.hasClass('o-sub-navigation__link--active')) {\r\n\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\tvar $target = $($(this).attr('href'));\r\n\r\n\t\t\t\t\tif ($target.length) {\r\n\t\t\t\t\t\tvar scrollTop = $target.offset().top;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t$('html,body').animate({\r\n\t\t\t\t\t\t\tscrollTop: scrollTop + 'px'\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\tduration: 500,\r\n\t\t\t\t\t\t\tcomplete: function() {\r\n\t\t\t\t\t\t\t\twindow.location.hash = $target.attr('id');\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\tif ($this.hasClass('js-tab') && !$this.hasClass('o-sub-navigation__link--active')) {\r\n\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\tvar $this = $(this);\r\n\t\t\t\t\tvar $target = $($this.attr('href'));\r\n\r\n\t\t\t\t\t$('.o-sub-navigation__item--active').removeClass('o-sub-navigation__item--active');\r\n\t\t\t\t\t$this.parent().addClass('o-sub-navigation__item--active');\r\n\t\t\t\t\t\r\n\t\t\t\t\t$('.o-sub-navigation__link--active').removeClass('o-sub-navigation__link--active');\r\n\t\t\t\t\t$this.addClass('o-sub-navigation__link--active');\r\n\t\t\t\t\t\r\n\t\t\t\t\t$('.l-dashboard--active').removeClass('l-dashboard--active');\r\n\t\t\t\t\t$target.addClass('l-dashboard--active');\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ($this.hasClass('o-sub-navigation__link--active')) {\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\t\r\n\t\t\t\t\tdropdownList.toggleClass('o-sub-navigation__list--expanded');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t$(document).mouseup(function(e) {\r\n\t\t\t// if the target of the click isn't the container nor a descendant of the container\r\n\t\t\tif (!dropdownList.is(e.target) && dropdownList.has(e.target).length === 0) {\r\n\r\n\t\t\t\tif (dropdownList.hasClass('o-sub-navigation__list--expanded')) {\r\n\t\t\t\t\tdropdownList.removeClass('o-sub-navigation__list--expanded');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t})();\r\n\t// -- END Submenu\r\n\r\n\t// ---------------------------\r\n\t// START Sidebar navigation\r\n\t(function () {\r\n\t\tif ($('.o-sidebar-navigation').length === 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tvar dropdownContainer = $('.o-sidebar-navigation'),\r\n\t\t\tdropdownList = dropdownContainer.find('.o-sidebar-navigation__list');\r\n\r\n\t\tdropdownList.find('.o-sidebar-navigation__link--substitute').on('click',\r\n\t\t\tfunction (e) {\r\n\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\tvar $this = $(this),\r\n\t\t\t\t\t$parent = $this.parent();\r\n\r\n\r\n\t\t\t\tdropdownList.toggleClass('o-sidebar-navigation__list--expanded');\r\n\t\t\t});\r\n\r\n\t\t$(document).mouseup(function (e) {\r\n\t\t\t// if the target of the click isn't the container nor a descendant of the container\r\n\t\t\tif (!dropdownList.is(e.target) && dropdownList.has(e.target).length === 0) {\r\n\r\n\t\t\t\tif (dropdownList.hasClass('o-sidebar-navigation__list--expanded')) {\r\n\t\t\t\t\tdropdownList.removeClass('o-sidebar-navigation__list--expanded');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t})();\r\n\t// -- END Sidebar navigation\r\n\r\n\t(function () {\r\n\t\t$('.o-form__rangeslider-slider').rangeslider({\r\n\t\t\t// Feature detection the default is `true`.\r\n\t\t\t// Set this to `false` if you want to use\r\n\t\t\t// the polyfill also in Browsers which support\r\n\t\t\t// the native element.\r\n\t\t\tpolyfill: false,\r\n\r\n\t\t\t// Default CSS classes\r\n\t\t\trangeClass: 'rangeslider',\r\n\t\t\tdisabledClass: 'rangeslider--disabled',\r\n\t\t\thorizontalClass: 'rangeslider--horizontal',\r\n\t\t\tverticalClass: 'rangeslider--vertical',\r\n\t\t\tfillClass: 'rangeslider__fill',\r\n\t\t\thandleClass: 'rangeslider__handle',\r\n\r\n\t\t\tonInit: function () {\r\n\t\t\t\tvar $e = this.$element,\r\n\t\t\t\t\te = this,\r\n\t\t\t\t\tval = $e.val(),\r\n\t\t\t\t\tstart = $e.data('start'),\r\n\t\t\t\t\tlevels = $e.data('levels');\r\n\r\n\t\t\t\tconsole.log(levels);\r\n\r\n\t\t\t\tif (typeof start !== 'undefined' && start != null && start !== '') {\r\n\t\t\t\t\te.setValue(start);\r\n\t\t\t\t\tif (start == 0) {\r\n\t\t\t\t\t\te.setPosition(start);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t$e.val(start);\r\n\t\t\t\t\tval = start;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (levels) {\r\n\t\t\t\t\tfor (var l in levels) {\r\n\t\t\t\t\t\tif (levels.hasOwnProperty(l)) {\r\n\t\t\t\t\t\t\tvar ll = levels[l];\r\n\t\t\t\t\t\t\tif (ll.level == val) {\r\n\t\t\t\t\t\t\t\tval = ll.label;\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} else if (val == this.max) {\r\n\t\t\t\t\tval = this.max + '+';\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$e.siblings('.o-form__rangeslider-output').children('span').html(val);\r\n\t\t\t},\r\n\t\t\tonSlide: function () {\r\n\t\t\t\tvar $e = this.$element,\r\n\t\t\t\t\tval = $e.val(),\r\n\t\t\t\t\tlevels = $e.data('levels');\r\n\r\n\t\t\t\tif (levels) {\r\n\t\t\t\t\tfor (var key in levels) {\r\n\t\t\t\t\t\tif (levels.hasOwnProperty(key)) {\r\n\t\t\t\t\t\t\tvar level = levels[key];\r\n\t\t\t\t\t\t\tif (level.level == val) {\r\n\t\t\t\t\t\t\t\tval = level.label;\r\n\t\t\t\t\t\t\t\tbreak;\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} else if (val == this.max) {\r\n\t\t\t\t\tval = this.max + '+';\r\n\t\t\t\t}\r\n\r\n\t\t\t\t$e.siblings('.o-form__rangeslider-output').children('span').html(val);\r\n\t\t\t}\r\n\t\t});\r\n\t})();\r\n\r\n})(StudentConsulting);\n(function ($, console, SC) {\r\n\r\n var api = SC.api;\r\n\r\n\tvar filtersRetrieved = false,\r\n\t\tpageShown = false,\r\n\t\t$results = $('.js-search-results [data-results]'),\r\n\t\t$loader = $('.js-search-results [data-loader]'),\r\n\t\t$pagination = $('.js-pagination-container'),\r\n\t\tpageSize = 20;\r\n\r\n\tvar utils = {\r\n\t\tcsvToList: function(str) {\r\n\t\t\tif (str) {\r\n\t\t\t\treturn str.split(',');\r\n\t\t\t}\r\n\t\t\treturn [];\r\n\t\t}\r\n\t};\r\n\r\n\tvar data = {\r\n\t\tisSameUrl: function (url1, url2) {\r\n\t\t\tvar getQueryString = function(url) {\r\n\t\t\t\turl = url || '';\r\n\t\t\t\tvar index = url.indexOf('?');\r\n\t\t\t\tif (index !== -1) {\r\n\t\t\t\t\treturn url.substr(index);\r\n\t\t\t\t}\r\n\t\t\t\treturn null;\r\n\t\t\t};\r\n\r\n\t\t\treturn getQueryString(url1) === getQueryString(url2);\r\n\t\t},\r\n\t\tgetLanguagePrefix: function() {\r\n\t\t\tvar prefix = SC.lang.substring(0, 2);\r\n\r\n\t\t\tif (prefix == 'no') {\r\n\t\t\t\tprefix = 'nb';\r\n\t\t\t}\r\n\r\n\t\t\treturn prefix;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Returns the url that represent the current search state (searchObject)\r\n\t\t *\r\n\t\t * @returns {string} The url that represents the current search object\r\n\t\t */\r\n\t\tgetSearchUrl: function() {\r\n\t\t\tvar d = data.getSearchObject();\r\n\t\t\tvar params = [];\r\n\r\n\t\t\t//console.log(d);\r\n\r\n\t\t\t// Slugs\r\n\t\t\tvar slugs1 = _([d.professions, d.citites, d.locations])\r\n\t\t\t\t.flatten()\r\n\t\t\t\t.filter(function(item) { return !!item; })\r\n\t\t\t\t.map(function(item) {\r\n\t\t\t\t\tif (item) {\r\n\t\t\t\t\t\treturn SC.utils.format.slugify(item.name);\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn null;\r\n\t\t\t\t}).value(),\r\n slugs2 = _(d.keywords).map(function (item) { return SC.utils.format.slugify(item.substring(0, 30)); }).value(),\r\n\t\t\t\tslugs = _.flatten([slugs1, slugs2]),\r\n\t\t\t\tslug = _.join(slugs, '-');\r\n\r\n\t\t\tvar get = function(values, type) {\r\n\t\t\t\tvar vals = _(values);\r\n\t\t\t\tif (type) {\r\n\t\t\t\t\tvals = vals.filter({ type: type });\r\n\t\t\t\t}\r\n\t\t\t\tvals = vals.map(_.property('id'));\r\n\t\t\t\treturn vals.join(',');\r\n\t\t\t};\r\n\r\n\t\t\t// Professions (p)\r\n\t\t\tvar professions = get(d.professions, 'profession');\r\n\t\t\tif (professions && professions.length) {\r\n\t\t\t\tparams.push({\r\n\t\t\t\t\tname: 'p',\r\n\t\t\t\t\tvalue: professions\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// Categories (cat)\r\n\t\t\tvar categories = get(d.professions, 'category');\r\n\t\t\tif (categories && categories.length) {\r\n\t\t\t\tparams.push({\r\n\t\t\t\t\tname: 'cat',\r\n\t\t\t\t\tvalue: categories\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// Cities (cities)\r\n\t\t\tvar cities = get(d.locations, 'city');\r\n\t\t\tif (cities && cities.length) {\r\n\t\t\t\tparams.push({\r\n\t\t\t\t\tname: 'city',\r\n\t\t\t\t\tvalue: cities\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// Countries (countries)\r\n\t\t\tvar countries = get(d.locations, 'country');\r\n\t\t\tif (countries && countries.length) {\r\n\t\t\t\tparams.push({\r\n\t\t\t\t\tname: 'country',\r\n\t\t\t\t\tvalue: countries\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// County (counties)\r\n\t\t\tvar counties = get(d.locations, 'county');\r\n\t\t\tif (counties && counties.length) {\r\n\t\t\t\tparams.push({\r\n\t\t\t\t\tname: 'county',\r\n\t\t\t\t\tvalue: counties\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// Only summer (sj)\r\n\t\t\tif (d.onlySummer) {\r\n\t\t\t\tparams.push({\r\n\t\t\t\t\tname: 'sj',\r\n\t\t\t\t\tvalue: 'true'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// Only internal (i)\r\n\t\t\tif (d.onlyInternal) {\r\n\t\t\t\tparams.push({\r\n\t\t\t\t\tname: 'i',\r\n\t\t\t\t\tvalue: 'true'\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// Schemas (s)\r\n\t\t\tif (d.schemas.length) {\r\n\t\t\t\tvar schemas = _(d.schemas).join(',');\r\n\t\t\t\tparams.push({\r\n\t\t\t\t\tname: 's',\r\n\t\t\t\t\tvalue: schemas\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// Types (t)\r\n\t\t\tif (d.types.length) {\r\n\t\t\t\tvar types = _(d.types).join(',');\r\n\t\t\t\tparams.push({\r\n\t\t\t\t\tname: 't',\r\n\t\t\t\t\tvalue: types\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// Keywords (q)\r\n\t\t\tif (d.keywords.length) {\r\n\t\t\t\tvar keywords = _(d.keywords).join(',');\r\n\t\t\t\tparams.push({\r\n\t\t\t\t\tname: 'q',\r\n\t\t\t\t\tvalue: keywords\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// Other\r\n\t\t\tparams.push({\r\n\t\t\t\tname: 'page',\r\n\t\t\t\tvalue: d.page\r\n\t\t\t});\r\n\r\n\t\t\tvar parameterUrl = '';\r\n\t\t\tif (params.length > 0) {\r\n\t\t\t\tparameterUrl += '?' + _.join(_.map(params, function(param) {\r\n\t\t\t\t\treturn param.name + '=' + param.value;\r\n\t\t\t\t}), '&');\r\n\t\t\t}\r\n\r\n\t\t\tvar url = SC.jobOpeningsSearchUrl;\r\n\t\t\tif (slug && slug.length) {\r\n\t\t\t\turl += slug;\r\n\t\t\t}\r\n\r\n\t\t\treturn url + parameterUrl;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Retrieves the search object from the current filtering\r\n\t\t *\r\n\t\t * @returns {} The current search object\r\n\t\t */\r\n\t\tgetSearchObject: function () {\r\n\t\t\tvar selectedFilters = $('.js-jobopening-search-select').data('select2').data();\r\n\r\n\t\t\tvar locations = [],\r\n\t\t\t\tprofessions = [],\r\n\t\t\t\tkeywords = [],\r\n\t\t\t\ttypes = [],\r\n\t\t\t\tschemas = [],\r\n\t\t\t\tonlySummer = $('.js-summer-filter:checked').val() == \"true\",\r\n\t\t\t\tonlyInternal = $('.js-internal-filter:checked').val() == \"true\";\r\n\r\n\t\t\t$.each(selectedFilters,\r\n\t\t\t\tfunction (i, item) {\r\n\t\t\t\t\tvar id = item.id;\r\n\t\t\t\t\tvar filterType = id.substr(0, id.indexOf('_')),\r\n\t\t\t\t\t\tfilterId = id.substr(id.indexOf('_') + 1);\r\n\r\n\t\t\t\t\tif (!filterType) {\r\n\t\t\t\t\t\tfilterType = 'keyword';\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tswitch (filterType) {\r\n\t\t\t\t\t\tcase 'profession':\r\n\t\t\t\t\t\tcase 'category':\r\n\t\t\t\t\t\t\tprofessions.push({ 'type': filterType, 'id': filterId, name: item.text });\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase 'city':\r\n\t\t\t\t\t\tcase 'county':\r\n\t\t\t\t\t\tcase 'country':\r\n\t\t\t\t\t\t\tlocations.push({ 'type': filterType, 'id': filterId, name: item.text });\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tkeywords.push(filterId);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t// add selected schemas\r\n\t\t\t$('.js-schema-filter:checked').each(function () {\r\n\t\t\t\tschemas.push(this.value);\r\n\t\t\t});\r\n\r\n\t\t\t// add selected types\r\n\t\t\t$('.js-type-filter:checked').each(function () {\r\n\t\t\t\ttypes.push(this.value);\r\n\t\t\t});\r\n\r\n\t\t\t/* append to search object */\r\n\t\t\treturn {\r\n\t\t\t\tlocations: locations,\r\n\t\t\t\tschemas: schemas,\r\n\t\t\t\tkeywords: keywords,\r\n\t\t\t\ttypes: types,\r\n\t\t\t\tprofessions: professions,\r\n\t\t\t\tonlySummer: onlySummer,\r\n\t\t\t\tonlyInternal: onlyInternal,\r\n\t\t\t\tpage: 1,\r\n\t\t\t\tpageSize: pageSize\r\n\t\t\t};\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Returns the search object that is representet by the given url\r\n\t\t *\r\n\t\t * @param {string} url The search url, if none is given window.location.search is used instead\r\n\t\t * @returns {object} The search object from the given url\r\n\t\t */\r\n\t\tgetSearchObjectFromUrl: function(url) {\r\n\t\t\turl = url || window.location.search;\r\n\t\t\tvar params = SC.utils.url.getUrlParameters(url);\r\n\r\n\t\t\tvar page = params['page'] || 1,\r\n\t\t\t\tcities = utils.csvToList(params['city']),\r\n\t\t\t\tcounties = utils.csvToList(params['county']),\r\n\t\t\t\tcountries = utils.csvToList(params['country']),\r\n\t\t\t\tcategories = utils.csvToList(params['cat']),\r\n\t\t\t\tprofessions = utils.csvToList(params['p']),\r\n\t\t\t\tonlySummer = params['sj'] === 'true',\r\n\t\t\t\tonlyInternal = params['i'] === 'true',\r\n\t\t\t\tschemas = utils.csvToList(params['s']),\r\n\t\t\t\tkeywords = utils.csvToList(params['q']),\r\n\t\t\t\ttypes = utils.csvToList(params['t']);\r\n\r\n\t\t\tvar locations = [];\r\n\r\n\t\t\t// Cities\r\n\t\t\t_.forEach(cities, function(cityId) {\r\n\t\t\t\tlocations.push({\r\n\t\t\t\t\tid: cityId,\r\n\t\t\t\t\ttype: 'city'\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\t// Countries\r\n\t\t\t_.forEach(countries, function (cityId) {\r\n\t\t\t\tlocations.push({\r\n\t\t\t\t\tid: cityId,\r\n\t\t\t\t\ttype: 'country'\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\t// Counties\r\n\t\t\t_.forEach(counties, function (cityId) {\r\n\t\t\t\tlocations.push({\r\n\t\t\t\t\tid: cityId,\r\n\t\t\t\t\ttype: 'county'\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\t// Categories / Professions\r\n\t\t\tvar profs = [];\r\n\t\t\t_.forEach(categories, function(catId) {\r\n\t\t\t\tprofs.push({\r\n\t\t\t\t\tid: catId,\r\n\t\t\t\t\ttype: 'category'\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\t_.forEach(professions, function (professionId) {\r\n\t\t\t\tprofs.push({\r\n\t\t\t\t\tid: professionId,\r\n\t\t\t\t\ttype: 'profession'\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\treturn {\r\n\t\t\t\tlocations: locations,\r\n\t\t\t\tprofessions: profs,\r\n\t\t\t\tkeywords: keywords,\r\n\t\t\t\tpage: page,\r\n\t\t\t\tpageSize: pageSize,\r\n\t\t\t\tonlySummer: onlySummer,\r\n\t\t\t\tonlyInternal: onlyInternal,\r\n\t\t\t\tschemas: schemas,\r\n\t\t\t\ttypes: types\r\n\t\t\t}\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Get headings for filtered joblist\r\n\t\t */\r\n\t\tgetJoblistFilterheading: function(searchObject){\r\n\r\n\t\t\tvar heading = SC.translate.resultsHeadingDefault;\r\n\r\n\t\t\tif(searchObject.onlySummer){\r\n\t\t\t\theading = SC.translate.resultsSummerjob;\r\n\t\t\t}else if(searchObject.onlyInternal){\r\n\t\t\t\theading = SC.translate.resultsInternaljob;\r\n\t\t\t}else if(searchObject.schemas.indexOf('fulltime') !== -1 && searchObject.schemas.indexOf('parttime') === -1){\r\n\t\t\t\theading = SC.translate.resultsFulltimejob;\r\n\t\t\t}else if(searchObject.schemas.indexOf('fulltime') === -1 && searchObject.schemas.indexOf('parttime') !== -1){\r\n\t\t\t\theading = SC.translate.resultsParttimejob;\r\n\t\t\t}\r\n\r\n\t\t\treturn heading;\r\n\t\t}\r\n\t};\r\n\r\n\tvar update = {\r\n\t\t/**\r\n\t\t * Update total job count in menu\r\n\t\t *\r\n\t\t * @param {} count The new count for the menu\r\n\t\t */\r\n\t\ttotalJobCount: function (count) {\r\n\t\t\tif (count == null || count == '' || !$.isNumeric(count)) {\r\n\t\t\t\tapi.jobs.getJobOpeningsCount(function (count) {\r\n\t\t\t\t\tSC.utils.cookie.set('jobOpeningsCount', count, { expires: 0, secure: true });\r\n\t\t\t\t\t$('.js-navigation-counter').text(count).show();\r\n\t\t\t\t}, function (error) { });\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tSC.utils.cookie.set('jobOpeningsCount', count, { expires: 0, secure: true });\r\n\t\t\t\t$('.js-navigation-counter').text(count).show();\r\n\t\t\t}\t\t\t\r\n\t\t},\r\n\r\n\t\turl: function() {\r\n\t\t\tvar searchUrl = data.getSearchUrl();\r\n\t\t\tvar same = data.isSameUrl(searchUrl, window.location.search);\r\n\r\n\t\t\tif (!same) {\r\n\t\t\t\thistory.pushState({}, 'Added filters', searchUrl);\r\n\t\t\t\tactions.setSelectedSelect2Options(/*preventSearch*/ true);\r\n\t\t\t}\r\n\t\t\tactions.search();\r\n\t\t},\r\n\r\n\t\tfilters: function() {\r\n\t\t\tif (pageShown && filtersRetrieved) {\r\n\t\t\t\t// set selected options in select2\r\n\t\t\t\tactions.setSelectedSelect2Options(/*preventSearch*/ true);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tvar render = {\r\n\t\t/**\r\n\t\t* Set results count in heading\r\n\t\t*/\r\n\t\tresultCount: function(meta) {\r\n\t\t\tvar direct = $('.js-count-direct').hide(),\r\n\t\t\t\trelated = $('.js-count-related').hide(),\r\n\t\t\t\ttotal = $('.js-count-total').hide();\r\n\r\n\t\t\t// no hits\r\n\t\t\tif (meta.totalHits === 0) {\r\n\t\t\t\t$('.js-results-count').removeAttr('style');\r\n\t\t\t\t$('.js-no-hits').fadeIn();\r\n\t\t\t\treturn\r\n\t\t\t} else {\r\n\t\t\t\t$('.js-no-hits').hide();\r\n\t\t\t}\r\n\r\n\t\t\tdirect.find('.js-count').text(meta.directHits);\r\n\t\t\tif (meta.directHits == null) {\r\n\t\t\t\tdirect.find('.js-count').text(meta.totalNumberOfOpenings);\r\n\t\t\t}\r\n\t\t\tdirect.fadeIn();\r\n\r\n\t\t\tif (meta.relatedHits > 0) {\r\n\t\t\t\trelated.find('.js-count').text(meta.relatedHits);\r\n\t\t\t\trelated.fadeIn();\r\n\t\t\t}\r\n\r\n\t\t\ttotal.find('.js-count').text(meta.totalHits);\r\n\t\t\ttotal.fadeIn();\r\n\r\n\t\t\t$('.js-results-count').removeAttr('style');\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Render Job List\r\n\t\t *\r\n\t\t * @param {any} data\r\n\t\t */\r\n\t\tjobList: function(data) {\r\n\t\t\t$results.empty();\r\n\r\n\t\t\t// append compiled handlebars template\r\n\t\t\t$results.append(SC.utils.handlebars.renderCard(data, /*showRelatedHeading*/ true));\r\n\r\n\t\t\t $('.apply-btn').on ('click', function(e) {\r\n\t\t\t \te.preventDefault();\r\n\t\t\t \twindow.location.href=$(e.target).data('url');\r\n\t\t\t });\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Render job openings pagination\r\n\t\t *\r\n\t\t * @param {any} hitCount\r\n\t\t * @param {any} page\r\n\t\t * @param {any} pageSize\r\n\t\t */\r\n\t\tpagination: function(hitCount, page, pageSize) {\r\n\t\t\tvar url = window.location.pathname,\r\n\t\t\t\tpageCount = Math.ceil(hitCount / pageSize),\r\n\t\t\t\tpages = [];\r\n\r\n\t\t\tvar vars = SC.utils.url.getUrlParameters();\r\n\t\t\tvars['page'] = page;\r\n\r\n\t\t\tvar query = _.join(_.map(_.keys(vars), function (key) {\r\n\t\t\t\tif (key === 'page') {\r\n\t\t\t\t\treturn 'page=';\r\n\t\t\t\t}\r\n\t\t\t\treturn key + '=' + vars[key];\r\n\t\t\t}), '&');\r\n\r\n\t\t\tif (query) {\r\n\t\t\t\turl += '?' + query;\r\n\t\t\t}\r\n\r\n\t\t\tfor (var i = 1; i < pageCount + 1; i++) {\r\n\t\t\t\tvar active = (i == page);\r\n\t\t\t\tpages.push({ url: url + i, title: i, active: active });\r\n\t\t\t}\r\n\r\n\t\t\tif (pageCount > 1) {\r\n\t\t\t\t// pass data to the template\r\n\t\t\t\tvar compiled = window.Handlebars.templates.pagination(pages);\r\n\t\t\t\t$('.js-pagination-container').html(compiled);\r\n\t\t\t} else {\r\n\t\t\t\t$('.js-pagination-container').empty();\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tvar init = {\r\n\t\t/**\r\n\t\t * Toggles stuff in job filter\r\n\t\t */\r\n\t\ttoggleJobFilter: function () {\r\n\t\t\tif ($('.o-job-filter').length === 0) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t$('.o-job-filter__more-trigger, .o-job-filter__more-top').on('click',\r\n\t\t\t\tfunction (e) {\r\n\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\t$('.o-job-filter__more').toggleClass('o-job-filter__more--expanded');\r\n\t\t\t\t});\r\n\r\n\t\t\t$('.o-job-filter__filter-trigger, .o-job-filter__close-filter').on('click',\r\n\t\t\t\tfunction (e) {\r\n\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\t$('.o-job-filter__more').toggleClass('o-job-filter__more--expanded');\r\n\t\t\t\t});\r\n\t\t},\r\n\t\t/**\r\n\t\t * Setup Job Openings Filtering\r\n\t\t *\r\n\t\t * @param {any} formData\r\n\t\t */\r\n\t\tjobOpeningSearch: function (formData) {\r\n\t\t\tvar options = [], // select2 options\r\n\t\t\t\tlocations = {\r\n\t\t\t\t\tid: 0,\r\n\t\t\t\t\ttext: SC.translate.location,\r\n\t\t\t\t\tchildren: []\r\n\t\t\t\t},\r\n\t\t\t\tprofessions = {\r\n\t\t\t\t\tid: 1,\r\n\t\t\t\t\ttext: SC.translate.profession,\r\n\t\t\t\t\tchildren: []\r\n\t\t\t\t};\r\n\r\n\t\t\t// setup filterOptions array\r\n\t\t\t$.each(formData, function (key, value) {\r\n\t\t\t\tif (key === \"locations\") { // populate locations children array\r\n\t\t\t\t\tvalue = _.sortBy(value, _.property('name'));\r\n\t\t\t\t\t$.each(value, function (i, location) {\r\n\t\t\t\t\t\tlocations.children.push({\r\n\t\t\t\t\t\t\tid: location.type + '_' + location.id, // prefix locations with type, to make id unique\r\n\t\t\t\t\t\t\ttext: location.name\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\tif (key === \"professions\") { // populate professions children array\r\n\t\t\t\t\tvalue = _.sortBy(value, _.property('name'));\r\n\t\t\t\t\t$.each(value, function (i, profession) {\r\n\t\t\t\t\t\tprofessions.children.push({\r\n\t\t\t\t\t\t\tid: profession.type + '_' + profession.id, // prefix with 'profession' to distinguish professions from locations and keywords\r\n\t\t\t\t\t\t\ttext: profession.name\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\r\n\t\t\t// append search filters to options\r\n\t\t\toptions.push(professions);\r\n\t\t\toptions.push(locations);\r\n\r\n\t\t\t// change schema event\r\n\t\t\t$('.js-schema-filter').change(function () {\r\n\t\t\t\tupdate.url();\r\n\t\t\t});\r\n\r\n\t\t\t// change type event\r\n\t\t\t$('.js-type-filter').change(function() {\r\n\t\t\t\tupdate.url();\r\n\t\t\t});\r\n\r\n\t\t\t// change issummer event\r\n\t\t\t$('.js-summer-filter').change(function() {\r\n\t\t\t\tupdate.url();\r\n\t\t\t});\r\n\r\n\t\t\t// change internal event\r\n\t\t\t$('.js-internal-filter').change(function() {\r\n\t\t\t\tupdate.url();\r\n\t\t\t});\r\n\r\n\t\t\t// autocomplete event\r\n\t\t\tvar $select2 = $('.js-jobopening-search-select');\r\n\t\t\t$select2.select2({\r\n\t\t\t\tplaceholder: SC.translate.placeholderText,\r\n\t\t\t\tdata: options,\r\n\t\t\t\ttags: true,\r\n\t\t\t\tminimumInputLength: 2,\r\n\t\t\t\tlanguage: data.getLanguagePrefix(),\r\n matcher: function (query, data) {\r\n\r\n var term = query.term.toLowerCase();\r\n var result = _.cloneDeep(data);\r\n result.children = _.filter(result.children, function (child) {\r\n return child.text.toLowerCase().indexOf(term) !== -1;\r\n });\r\n\r\n //if there is one exact match (case insensitive) remove all other matches so that the exact match gets selected\r\n var exactMatchingChildren = _.filter(result.children, function (child) {\r\n return child.text.toLowerCase() === term;\r\n });\r\n if (exactMatchingChildren.length === 1) {\r\n result.children = exactMatchingChildren;\r\n }\r\n\r\n if (!result.children.length) {\r\n return null;\r\n }\r\n //if the term (lowercase) and the only child lefts text (also lowercase)\r\n //Set the only childs text to the search term so we get an exact match\r\n //This is done to make \"malm�\" match \"Malm�\" exactly\r\n if (result.children.length === 1 && result.children[0].text.toLowerCase() === term) {\r\n result.children[0].text = query.term;\r\n }\r\n return result;\r\n\t\t\t\t},\r\n\t\t\t\tsorter: function (input) {\r\n\t\t\t\t\tvar data = $select2.data('select2');\r\n\t\t\t\t\tvar query = data.selection.$search.val();\r\n\r\n\t\t\t\t\tvar filtered = _.filter(input,\r\n\t\t\t\t\t\tfunction (item) {\r\n\t\t\t\t\t\t\treturn typeof item.children !== 'undefined';\r\n\t\t\t\t\t\t});\r\n\r\n\r\n\t\t\t\t\t_.forEach(filtered,\r\n\t\t\t\t\t\tfunction (item) {\r\n\t\t\t\t\t\t\titem.children = _.orderBy(item.children,\r\n\t\t\t\t\t\t\t\t[\r\n\t\t\t\t\t\t\t\t\t// 1. By positionining of searchstring\r\n\t\t\t\t\t\t\t\t\tfunction (child) {\r\n\t\t\t\t\t\t\t\t\t\tif (query == null) {\r\n\t\t\t\t\t\t\t\t\t\t\treturn child.text;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\tvar sortBy = child.text.toLowerCase().indexOf(query.toLowerCase());\r\n\r\n\t\t\t\t\t\t\t\t\t\t//console.log('S 1st sort', child.text, sortBy);\r\n\t\t\t\t\t\t\t\t\t\tif (sortBy === 0) {\r\n\t\t\t\t\t\t\t\t\t\t\treturn 0;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\treturn 1;\r\n\t\t\t\t\t\t\t\t\t},\r\n\r\n\t\t\t\t\t\t\t\t\t// By text length\r\n\t\t\t\t\t\t\t\t\tfunction (child) {\r\n\t\t\t\t\t\t\t\t\t\tif (query == null) {\r\n\t\t\t\t\t\t\t\t\t\t\treturn child.text;\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\t\t\t//console.log('S 2st sort', child.text, child.text.length);\r\n\t\t\t\t\t\t\t\t\t\treturn child.text.length;\r\n\t\t\t\t\t\t\t\t\t},\r\n\r\n\t\t\t\t\t\t\t\t\t// By text\r\n\t\t\t\t\t\t\t\t\tfunction (child) {\r\n\t\t\t\t\t\t\t\t\t\t//console.log('S 3rd sort', child.text)\r\n\t\t\t\t\t\t\t\t\t\treturn child.text;\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});\r\n\r\n\t\t\t\t\treturn input;\r\n\t\t\t\t}\r\n\t\t\t})\r\n\t\t\t.on('change', function (event, obj) {\r\n\t\t\t\tif (typeof obj === 'undefined' || obj == null || !obj.preventSearch) {\r\n\t\t\t\t\tupdate.url();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * Get select options from api\r\n\t\t */\r\n\t\tselect2Options: function (doSearch) {\r\n\t\t\tif ($('.js-jobopening-search-select').length === 0) {\r\n\t\t\t\t$('.js-search-results-heading').text(SC.translate.resultsHeadingDefault);\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t$.ajax({\r\n\t\t\t\turl: '/api/v1/jobopenings/formdata',\r\n\t\t\t\ttype: 'GET',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t'Accept': 'application/json',\r\n\t\t\t\t\t'Accept-Language': SC.lang\r\n\t\t\t\t},\r\n\t\t\t\tsuccess: function(data) {\r\n\t\t\t\t\tinit.jobOpeningSearch(data);\r\n\t\t\t\t\tfiltersRetrieved = true;\r\n\t\t\t\t\tupdate.filters();\r\n\r\n if (doSearch) {\r\n actions.search();\r\n }\r\n\r\n\t\t\t\t\t$('.js-jobopening-search-select').data('select2').focus();\r\n\t\t\t\t},\r\n\t\t\t\terror: function() {\r\n\t\t\t\t\t// console.log('Job page: error fetching form data from api')\r\n\t\t\t\t\tvar alert = {\r\n\t\t\t\t\t\tstatus: 'danger',\r\n\t\t\t\t\t\ttext: SC.translate.alertErrorApi\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tvar container = $('.js-notifications-area');\r\n\t\t\t\t\tSC.utils.handlebars.renderAlert(alert, container);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\t// add pageshow event\r\n\t\t\t$(function() {\r\n\t\t\t\tpageShown = true;\r\n\t\t\t\tupdate.filters();\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\tvar actions = {\r\n\r\n\t\t/**\r\n\t\t * Set selected options from defined search object\r\n\t\t *\r\n\t\t * @param {bool} preventSearch Prevent searching when updating\r\n\t\t */\r\n\t\tsetSelectedSelect2Options: function (/*bool*/ preventSearch) {\r\n\t\t\tvar select2 = $('.js-jobopening-search-select');\r\n\t\t\tvar selectedOptions = [],\r\n\t\t\t\tsearchObj = data.getSearchObjectFromUrl();\r\n\r\n\t\t\t// console.log('Job page: setSelectedSelect2Options, searchObj:', searchObj);\r\n\r\n\t\t\t// Update select2 object\r\n\t\t\t$(searchObj.locations).each(function(i, item) {\r\n\t\t\t\tselectedOptions.push(item.type + '_' + item.id);\r\n\t\t\t});\r\n\r\n\t\t\t$(searchObj.professions).each(function(i, item) {\r\n\t\t\t\tselectedOptions.push(item.type + '_' + item.id);\r\n\t\t\t});\r\n\r\n\t\t\tif (searchObj.keywords !== null && searchObj.keywords !== '') {\r\n\t\t\t\tvar keywords = searchObj.keywords + ''; // convert to string to be able to split\r\n\t\t\t\tkeywords = keywords.split(',');\r\n\r\n\t\t\t\t$(keywords).each(function(i, item) {\r\n\t\t\t\t\tif (item !== '') {\r\n\t\t\t\t\t\titem = decodeURI(item);\r\n\r\n\t\t\t\t\t\t// if exists - set selected\r\n\t\t\t\t\t\tif (select2.find(\"option[value='\" + item + \"']\").length) {\r\n\t\t\t\t\t\t\t// console.log('option found..', item)\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t// create new\r\n\t\t\t\t\t\t\tvar queryOption = new Option(item, item, true, true); // create if not exists\r\n\t\t\t\t\t\t\tselect2.append(queryOption);\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tselectedOptions.push(item);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t// Update schemas\r\n\t\t\tvar isFulltime = _.indexOf(searchObj.schemas, 'fulltime') !== -1;\r\n\t\t\t$('#schemaFulltime').prop('checked', isFulltime);\r\n\r\n\t\t\tvar isParttime = _.indexOf(searchObj.schemas, 'parttime') !== -1;\r\n\t\t\t$('#schemaParttime').prop('checked', isParttime);\r\n\r\n\t\t\t// Update types\r\n\t\t\tvar isRecruitment = _.indexOf(searchObj.types, 'recruitment') !== -1;\r\n\t\t\t$('#typeRecruitment').prop('checked', isRecruitment);\r\n\r\n\t\t\tvar isStaffing = _.indexOf(searchObj.types, 'staffing') !== -1;\r\n\t\t\t$('#typeStaffing').prop('checked', isStaffing);\r\n\r\n\t\t\t// Summer\r\n\t\t\t$('#isSummer').attr('checked', searchObj.onlySummer);\r\n\r\n\t\t\t// Internal\r\n\t\t\t$('#isInternal').attr('checked', searchObj.onlyInternal);\r\n\r\n\t\t\tif(searchObj.onlySummer || searchObj.onlyInternal){\r\n\t\t\t\tif(!$('.o-job-filter__more').hasClass('o-job-filter__more--expanded')){\r\n\t\t\t\t\t$('.o-job-filter__more').addClass('o-job-filter__more--expanded');\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tselect2.val(selectedOptions);\r\n\t\t\tselect2.trigger('change', { preventSearch: preventSearch });\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t* Creates and post filter object\r\n\t\t*/\r\n\t\tsearch: function() {\r\n\t\t\tvar so = data.getSearchObjectFromUrl();\r\n\t\t\tactions._postSearch(so);\r\n\t\t},\r\n\r\n\t\t_activeSearch: null,\r\n\r\n\t\t/**\r\n\t\t * Post Search Filter Object\r\n\t\t */\r\n\t\t_postSearch: function (searchObject) {\r\n\t\t\t// post to api controller\r\n\r\n\t\t\t$loader.show();\r\n\t\t\t$results.hide();\r\n\t\t\t$pagination.hide();\r\n\r\n\t\t\tif (actions._activeSearch) {\r\n\t\t\t\tactions._activeSearch.abort();\r\n\t\t\t\tactions._activeSearch = null;\r\n\t\t\t}\r\n\r\n\t\t\tactions._activeSearch = $.ajax({\r\n\t\t\t\turl: '/api/v1/jobopenings',\r\n\t\t\t\ttype: 'POST',\r\n\t\t\t\tdataType: 'json',\r\n\t\t\t\tcontentType: 'application/json; charset=utf-8',\r\n\t\t\t\tdata: JSON.stringify(searchObject),\r\n\t\t\t\theaders: {\r\n\t\t\t\t\t'Accept': 'application/json',\r\n\t\t\t\t\t'Accept-Language': SC.lang\r\n\t\t\t\t},\r\n\t\t\t\tsuccess: function (response) {\r\n\t\t\t\t\tvar responsdeData = response.data;\r\n\r\n\t\t\t\t\tactions._activeSearch = null;\r\n\r\n\t\t\t\t\t$loader.hide();\r\n\t\t\t\t\t$results.show();\r\n\t\t\t\t\t$pagination.show();\r\n\r\n\t\t\t\t\t// set hit count with current search object\r\n\t\t\t\t\trender.resultCount(response.meta);\r\n\r\n\t\t\t\t\t// render pagination with current result\r\n\t\t\t\t\trender.pagination(response.meta.totalHits, searchObject.page, searchObject.pageSize);\r\n\r\n\t\t\t\t\trender.jobList(responsdeData);\r\n\r\n\t\t\t\t\t// edit heading if we have filters\r\n\t\t\t\t\tif (!SC.utils.isEmptySearchObject(searchObject)) {\r\n\r\n\t\t\t\t\t\tvar filterHeading = data.getJoblistFilterheading(searchObject);\r\n\r\n var maxTitleLength = 30;\r\n\t\t\t\t\t\tif ($('.select2-selection__choice') && $('.select2-selection__choice').length > 0 && $('.select2-selection__choice').length <= 2){\r\n filterHeading += \" - \" + $('.select2-selection__choice').map(function () {\r\n var returnedTitle = this.title;\r\n /*if (returnedTitle.length > maxTitleLength) {\r\n returnedTitle = returnedTitle.substring(0, Math.min(returnedTitle.substring(0, maxTitleLength - 3).lastIndexOf(' '), maxTitleLength - 3)) + '...';\r\n }*/\r\n return returnedTitle;\r\n\t\t\t\t\t\t\t}).get()\r\n\t\t\t\t\t\t\t.join(\" \");\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t$('.js-search-results-heading').text(filterHeading);\r\n\t\t\t\t\t\t$('.js-results-matching-text').text(SC.translate.resultsCountSuffixMatching);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tupdate.totalJobCount(response.meta.directHits);\r\n\r\n\t\t\t\t\t\t$('.js-search-results-heading').text(SC.translate.resultsHeadingDefault);\r\n\t\t\t\t\t\t$('.js-results-matching-text').text(SC.translate.resultsCountSuffixDefault);\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\terror: function (a) {\r\n\r\n\t\t\t\t\tif (a.status === 0) {\r\n\t\t\t\t\t\tconsole.log('Job page: aborted previous get');\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconsole.log('Job page: error fetching job openings from api', a);\r\n\r\n\r\n\t\t\t\t\tvar alert = {\r\n\t\t\t\t\t\tstatus: 'danger',\r\n\t\t\t\t\t\ttext: SC.translate.alertErrorApi\r\n\t\t\t\t\t}\r\n\t\t\t\t\tvar container = $('.js-notifications-area');\r\n\t\t\t\t\tSC.utils.handlebars.renderAlert(alert, container);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\t/*\r\n\t* Event fired when user go back with browser button\r\n\t*/\r\n\tvar addEvents = function () {\r\n\t\tvar addEvent = SC.utils.events.addEvent;\r\n\r\n\t\taddEvent(window, 'popstate', function (event) {\r\n\t\t\tconsole.log('popstate', event);\r\n\r\n\t\t\tactions.setSelectedSelect2Options(true);\r\n\t\t\tactions.search();\r\n\t\t});\r\n };\r\n\r\n /**\r\n\t * Init approve terms\r\n\t */\r\n var initApproveTerms = function () {\r\n $('#approve-terms-check').click(function () {\r\n if ($(this).is(':checked')) {\r\n $('#approve-terms-submit').removeAttr('disabled');\r\n }\r\n else {\r\n $('#approve-terms-submit').attr('disabled', '');\r\n }\r\n });\r\n };\r\n\r\n\t/**\r\n\t * Init Student Consulting js\r\n\t */\r\n\t$(document).ready(function () {\r\n\t\t//console.log('Job page: Initializing...');\r\n\r\n\t\tif ($('.o-job-filter').length > 0) {\r\n\t\t\taddEvents();\r\n\r\n init.select2Options(false);\r\n $loader.hide();\r\n\r\n\t\t\tSC.utils.slider.initJobOpeningsSlickSlider();\r\n\r\n\t\t\tinit.toggleJobFilter();\r\n\t\t} else {\r\n\t\t\t//console.log('Job page: Aborting init as this is not the job page');\r\n }\r\n if ($('#approve-terms-check').length > 0) {\r\n console.log('init approve terms...');\r\n initApproveTerms();\r\n }\r\n\r\n if ($('.o-hero__wrapper ').length > 0) {\r\n var count = SC.utils.cookie.get('jobOpeningsCount');\r\n if (count != '' && $.isNumeric(count)) {\r\n $('.o-job-list-slider__heading').prepend(count + \" \");\r\n } else {\r\n api.jobs.getJobOpeningsCount(function (count) {\r\n\t\t\t\t\tSC.utils.cookie.set('jobOpeningsCount', count, { expires: 0, secure: true });\r\n $('.o-job-list-slider__heading').prepend(count + \" \");\r\n }, function (error) { });\r\n }\r\n }\r\n\t});\r\n})(window.jQuery, window.console, window.StudentConsulting);\n(function ($, console, SC, slick) {\r\n\r\n\t/** search object */\r\n\tvar searchObject = {\r\n\t\tlocations: [],\r\n\t\tschemas: [],\r\n\t\tkeywords: [],\r\n\t\ttypes: [],\r\n\t\tprofessions: [],\r\n\t\tonlySummer: false,\r\n\t\tonlyInternal: false,\r\n\t\tsortOrder: 0,\r\n\t\tpage: 1,\r\n\t\tpageSize: 6\r\n\t}\r\n\r\n\t/**\r\n\t * Get functions from utils\r\n\t */\r\n\t//var slugify = SC.utils.format.slugify\r\n\tvar getUrlVars = SC.utils.url.getUrlVars\r\n\tvar postSearchObject = SC.api.search.postSearchFilterObject\r\n\tvar initSlider = SC.utils.slider.initJobOpeningsSlickSlider\r\n\t\r\n\r\n\t///**\r\n\t// * Post Search Filter Object\r\n\t// * TODO: Move to app.api.js - search \r\n\t// */\r\n\t//var postSearchFilterObject = function (searchObject, containerId) {\r\n\t//\t// post to api controller\r\n\t//\t$.ajax({\r\n\t//\t\turl: '/api/v1/jobopenings',\r\n\t//\t\ttype: 'POST',\r\n\t//\t\tdataType: 'json',\r\n\t//\t\tcontentType: 'application/json; charset=utf-8',\r\n\t//\t\tdata: JSON.stringify(searchObject),\r\n\t//\t\theaders: {\r\n\t//\t\t\t'Accept': 'application/json',\r\n\t//\t\t\t'Accept-Language': SC.lang\r\n\t//\t\t},\r\n\t//\t\tsuccess: function (response) {\r\n\t//\t\t\tvar data = response.data;\r\n\t//\t\t\t$('#' + containerId).find('.js-loader').show()\r\n\t//\t\t\trenderJobList(data, containerId)\r\n\t//\t\t}\r\n\t//\t})\r\n\t//}\r\n\r\n\t/**\r\n\t * Render jobs with Handlebars template\r\n\t * @param {any} data\r\n\t */\r\n\tvar renderJobList = function (data, containerId) {\r\n\t\tvar container = $('#' + containerId),\r\n\t\t\tfilterUrl = '',\r\n\t\t\tshowRelatedHeading = false\r\n\r\n\t\tcontainer.find('.js-loader').hide()\r\n\t\tfilterUrl = container.data('filter')\r\n\r\n\t\tif (!filterUrl) {\r\n\t\t\tfilterUrl = SC.jobOpeningsSearchUrl\r\n\t\t}\r\n\r\n\t\t// pass data to the template\r\n\t\tvar theCompiledHtml = SC.utils.handlebars.renderCard(data, showRelatedHeading)\r\n\r\n\t\t// add to page\r\n\t\tvar jobSliderContainer = container.find('.js-job-slider-container')\r\n\t\tjobSliderContainer.html(theCompiledHtml)\r\n\r\n\t\tif (jobSliderContainer.length) {\r\n\t\t\tif (jobSliderContainer.hasClass('slick-initialized')) {\r\n\t\t\t\tjobSliderContainer.slick('unslick');\r\n\t\t\t}\r\n\t\t\tjobSliderContainer.append('\"\"

' + SC.translate.showAll + '

')\r\n\t\t}\r\n\r\n\t\tinitSlider()\r\n\t}\r\n\r\n\t/**\r\n\t * Setup search object from query filters array\r\n\t * @param {any} queryFilters\r\n\t */\r\n\tvar setupSearchObjectFromFilters = function (queryFilters) {\r\n\t\t// clear existing...\r\n\t\tsearchObject.locations = []\r\n\t\tsearchObject.professions = []\r\n\r\n if (queryFilters[\"s\"]) {\r\n searchObject.schemas = [queryFilters[\"s\"]]\r\n }\r\n if (queryFilters[\"t\"]) {\r\n searchObject.types = [queryFilters[\"t\"]]\r\n }\r\n if (queryFilters[\"q\"]) {\r\n searchObject.keywords = [queryFilters[\"q\"]]\r\n }\r\n\r\n\t\t// console.log(queryFilters)\r\n\r\n\t\tif (queryFilters[\"city\"]) {\r\n\t\t\tvar locationArray = queryFilters[\"city\"].split(',')\r\n\t\t\t$(locationArray).each(function (i, item) {\r\n\t\t\t\tsearchObject.locations.push({\r\n\t\t\t\t\ttype: 'city',\r\n\t\t\t\t\tid: item\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tif (queryFilters[\"county\"]) {\r\n\t\t\tvar locationArray = queryFilters[\"county\"].split(',')\r\n\t\t\t$(locationArray).each(function (i, item) {\r\n\t\t\t\tsearchObject.locations.push({\r\n\t\t\t\t\ttype: 'county',\r\n\t\t\t\t\tid: item\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tif (queryFilters[\"country\"]) {\r\n\t\t\tvar locationArray = queryFilters[\"country\"].split(',')\r\n\t\t\t$(locationArray).each(function (i, item) {\r\n\t\t\t\tsearchObject.locations.push({\r\n\t\t\t\t\ttype: 'country',\r\n\t\t\t\t\tid: item\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t\t}\r\n\r\n\t\tif (queryFilters[\"p\"]) {\r\n\t\t\tvar professionsArray = queryFilters[\"p\"].split(',')\r\n\t\t\t$(professionsArray).each(function (i, item) {\r\n\t\t\t\tsearchObject.professions.push({\r\n\t\t\t\t\ttype: 'profession',\r\n\t\t\t\t\tid: item\r\n\t\t\t\t})\r\n\t\t\t})\r\n }\r\n\r\n if (queryFilters[\"cat\"]) {\r\n var professionsArray = queryFilters[\"cat\"].split(',')\r\n $(professionsArray).each(function (i, item) {\r\n searchObject.professions.push({\r\n type: 'category',\r\n id: item\r\n })\r\n })\r\n }\r\n\r\n\t\tif (queryFilters[\"i\"]) {\r\n\t\t\tsearchObject.onlyInternal = true\r\n\t\t}\r\n\r\n\t\tif (queryFilters[\"sj\"]) {\r\n\t\t\tsearchObject.onlySummer = true\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Setup job openings sliders\r\n\t */\r\n\tvar setupJobSliders = function () {\r\n\r\n\t\t// loop each job slider module\r\n\t\t$('.js-job-slider').each(function (i, item) {\r\n\r\n\t\t\tvar filter = $(item).data('filter')\r\n\t\t\tvar containerId = $(item).attr('id')\r\n\r\n\t\t\tif (filter) {\r\n\t\t\t\tvar queryFilters = getUrlVars(filter)\r\n\r\n\t\t\t\t// setup search object from query filters\r\n\t\t\t\tsetupSearchObjectFromFilters(queryFilters)\r\n\t\t\t}\r\n\r\n\t\t\t// post filter\r\n\t\t\tpostSearchObject(searchObject,\r\n\t\t\t\tfunction (response) {\r\n\t\t\t\t\tvar data = response.data;\r\n $('#' + containerId).find('.js-loader').show()\r\n renderJobList(data, containerId)\r\n\t\t\t\t}, function (error) {\r\n\t\t\t\t\tconsole.error('Job slider: Error posting search object: ', error)\r\n\t\t\t\t\t//var alert = {\r\n\t\t\t\t\t//\tstatus: 'danger',\r\n\t\t\t\t\t//\ttext: SC.translate.alertErrorApi\r\n\t\t\t\t\t//}\r\n\t\t\t\t\t//var container = $('.js-notifications-area')\r\n\t\t\t\t\t//SC.utils.handlebars.renderAlert(alert, container)\r\n\t\t\t})\r\n\t\t})\r\n\t}\r\n\r\n\tvar init = function () {\r\n\r\n\t\tif ($('.js-job-slider').length) {\r\n\t\t\t// console.log('Job slider: Initializing job openings slider module.')\r\n\r\n\t\t\t// setup sliders\r\n\t\t\tsetupJobSliders()\r\n\t\t}\r\n\t}\r\n\t$(document).ready(init)\r\n})(window.jQuery, window.console, window.StudentConsulting, window.slick);\n(function () {\r\n\tvar helpers = {\r\n\t\tgetModelPrefix: function(fieldName) {\r\n\t\t\treturn fieldName.substr(0, fieldName.lastIndexOf(\".\") + 1);\r\n\t\t}\r\n };\r\n\r\n $.validator.setDefaults({\r\n ignore: [':hidden:not(.force-validation)']\r\n });\r\n\r\n\t// Required if attribute validation\r\n\t$.validator.addMethod('requiredif',\r\n\t\tfunction (value, element, params) {\r\n\t\t\t// Compare element\r\n\t\t\tvar fieldName = helpers.getModelPrefix(element.name) + params['compareto'];\r\n\t\t\tvar $ce = $('[name=\"' + fieldName + '\"]');\r\n\r\n\t\t\tif ($ce.length && !$ce.is(':disabled')) {\r\n\t\t\t\t// We have an element to compare to\r\n\t\t\t\tvar targetValues = params['targetvalues'];\r\n\r\n\t\t\t\tvar values = [];\r\n\t\t\t\t$ce.each(function () {\r\n\t\t\t\t\tvar $this = $(this);\r\n\t\t\t\t\tif ($this.is('[type=checkbox]')) {\r\n\t\t\t\t\t\tif ($this.is(':checked')) {\r\n\t\t\t\t\t\t\tvalues.push(this.value);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tvalues.push(this.value);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (values.length) {\r\n\t\t\t\t\t// We have values to compare to\r\n\t\t\t\t\t//var targetValue = params['targetvalue'];\r\n\t\t\t\t\tfor (var vk in values) {\r\n\t\t\t\t\t\tif (values.hasOwnProperty(vk)) {\r\n\t\t\t\t\t\t\tvar val = values[vk];\r\n\r\n\t\t\t\t\t\t\tfor (var tvk in targetValues) {\r\n\t\t\t\t\t\t\t\tif (targetValues.hasOwnProperty(tvk)) {\r\n\t\t\t\t\t\t\t\t\tvar targetValue = targetValues[tvk];\r\n\t\t\t\t\t\t\t\t\tif (targetValue + \"\" == val + \"\") {\r\n\t\t\t\t\t\t\t\t\t\t// See if this is required\r\n\t\t\t\t\t\t\t\t\t\tif (typeof value === 'undefined' || value == null || value == '') {\r\n\t\t\t\t\t\t\t\t\t\t\treturn 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}\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\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t$.validator.unobtrusive.adapters.add('requiredif',\r\n\t\t[\r\n\t\t\t'targetvalues',\r\n\t\t\t'compareto'\r\n\t\t],\r\n\t\tfunction (options) {\r\n\t\t\tvar targetvalues = options.params['targetvalues'];\r\n\t\t\ttargetvalues = JSON.parse(targetvalues);\r\n\t\t\tif (!$.isArray(targetvalues)) {\r\n\t\t\t\ttargetvalues = [targetvalues];\r\n\t\t\t}\r\n\t\t\toptions.params['targetvalues'] = targetvalues;\r\n\r\n\t\t\toptions.rules['requiredif'] = options.params;\r\n\t\t\toptions.messages['requiredif'] = options.message;\r\n\t\t});\r\n})();\n(function(api, utils, lang, limits) {\r\n\t'use strict';\r\n\r\n\t// Ui methods for form\r\n\tvar ui = {\r\n\t\t$form: null,\r\n\t\t$loader: null,\r\n\t\t$wrapper: null,\r\n\t\tinit: function ($wrapper) {\r\n\t\t\tui.$wrapper = $wrapper;\r\n\t\t\tui.$form = $wrapper.find('form');\r\n\t\t\tui.$loader = ui.$wrapper.parents('.o-job-application').children('.js-loader');\r\n\r\n\t\t\t//console.log('Apply form: Initializing');\r\n\r\n\t\t\tvar urlParams = utils.url.getUrlVars();\r\n\t\t\tif (ui.$wrapper.is('[data-ispost]') || urlParams['apply-job'] === 'true') {\r\n\t\t\t\tutils.scrollTo(ui.$wrapper.parents('.o-job-application'));\r\n\t\t\t}\r\n\r\n\t\t\t$('[href=\"#apply-job-wrapper\"]').on('click',\r\n\t\t\t\tfunction () {\r\n\t\t\t\t\tutils.scrollTo($('#apply-job-wrapper'));\r\n\t\t\t\t});\r\n\t\t\t\r\n\t\t\tif (!ui.$form.length) {\r\n\t\t\t\tif (ui.$wrapper.length) {\r\n\t\t\t\t\tui.$wrapper.show();\r\n\t\t\t\t\tui.$loader.hide();\r\n\t\t\t\t\t//console.log('Apply form: Discontinuing initialization due to success page');\r\n\t\t\t\t} else {\r\n\t\t\t\t\t//console.log('Apply form: Aborting initialization as no form was found');\r\n\t\t\t\t}\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tui.$form.attr('enctype', 'multipart/form-data'); // Fix for file upload\r\n\r\n\t\t\t// ----------------------------------\r\n\t\t\t//Toggle sub fields to checkboxes \r\n\t\t\tui.$form.find('.js-checkbox-toggler').on('change', function () {\r\n\t\t\t\tvar controls = $(this).data('controls');\r\n\t\t\t\tvar subGroupClass = $('.' + controls);\r\n\t\t\t\tvar siblings = $(this).parents('.o-form__checkbox-row').find('.js-checkbox-toggler');\r\n\t\t\t\tvar countChecked = 0;\r\n\r\n\t\t\t\t//Check for checkboxes that control the same sub group\r\n\t\t\t\t$.each(siblings, function () {\r\n\t\t\t\t\tvar sibling = $(this);\r\n\r\n\t\t\t\t\tif ((sibling.data('controls') == controls) && sibling.is(':checked')) {\r\n\t\t\t\t\t\tcountChecked++;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif (countChecked != 0) {\r\n\t\t\t\t\tsubGroupClass.addClass('o-form__group--expanded');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tsubGroupClass.removeClass('o-form__group--expanded');\r\n\t\t\t\t\tsubGroupClass.find('input').prop('checked', false);\r\n\t\t\t\t}\r\n\t\t\t}).each(function() {\r\n\t\t\t\t$(this).triggerHandler('change');\r\n });\r\n\r\n ui.$form.find('.js-dropdown-toggler').on('change', function () {\r\n var controls = $(this).data('controls');\r\n var subGroupClass = $('.' + controls);\r\n\r\n if ($(this).val() > 0) {\r\n subGroupClass.addClass('o-form__group--expanded');\r\n }\r\n else {\r\n subGroupClass.removeClass('o-form__group--expanded');\r\n }\r\n }).each(function () {\r\n $(this).triggerHandler('change');\r\n });\r\n\r\n ui.$form.find('#SelectStudentState').on('change', function () {\r\n var $this = $(this);\r\n var isStudent = $this.siblings('#IsStudent');\r\n var studyPace = $this.siblings('#StudyPace');\r\n\r\n if ($this.val() > 0) {\r\n isStudent.val('true');\r\n studyPace.val($this.val());\r\n }\r\n else {\r\n isStudent.val('false');\r\n studyPace.val('');\r\n }\r\n });\r\n\r\n\t\t\t//Toggle sub fields to radio buttons\r\n\t\t\tui.$form.find('.js-radio-toggler,.js-datepicker').on('change', function () {\r\n\t\t\t\tvar controls = $(this).data('controls');\r\n\t\t\t\tvar subGroupClass = $('.' + controls);\r\n\r\n\t\t\t\tif ($(this).is(':checked')) {\r\n\t\t\t\t\tsubGroupClass.addClass('o-form__group--expanded');\r\n\t\t\t\t} else {\r\n\t\t\t\t\tsubGroupClass.removeClass('o-form__group--expanded');\r\n\t\t\t\t\tsubGroupClass.find('input').prop('checked', false);\r\n\t\t\t\t}\r\n }).triggerHandler('change');\r\n\r\n //Show choose experience slider\r\n ui.$form.find('#choose-experience-label').on('click', function () {\r\n $(this).hide();\r\n $('#experienceRequired').val('true');\r\n ui.$form.find('#choose-experience-slider').show();\r\n });\r\n\r\n\t\t\tvar $select2city = ui.$form.find('.js-select2-city');\r\n\t\t\t$select2city.select2({\r\n\t\t\t\t\tminimumInputLength: 2,\r\n\t\t\t\t\tselectOnClose: true,\r\n\t\t\t\t\tplaceholder: $select2city.attr('placeholder'),\r\n\t\t\t\t\tdropdownCssClass: 'o-job-application__select2',\r\n\t\t\t\t\tajax: {\r\n\t\t\t\t\t\tdelay: 250,\r\n\t\t\t\t\t\turl: '/umbraco/api/api/searchcity',\r\n\t\t\t\t\t\theaders: {\r\n\t\t\t\t\t\t\t'Accept-Language': StudentConsulting.lang\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tdata: function(params) {\r\n\t\t\t\t\t\t\tvar query = $.extend({}, params);\r\n\t\t\t\t\t\t\t$.extend(query,\r\n\t\t\t\t\t\t\t\t{\r\n\t\t\t\t\t\t\t\t\tquery: params.term,\r\n\t\t\t\t\t\t\t\t\tpage: params.page || 1\r\n\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tdelete query._type;\r\n\t\t\t\t\t\t\tdelete query.term;\r\n\t\t\t\t\t\t\treturn query;\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tprocessResults: function(data, params) {\r\n\t\t\t\t\t\t\t// Tranforms the top-level key of the response object from 'items' to 'results'\r\n\t\t\t\t\t\t\tvar res = _.map(data,\r\n\t\t\t\t\t\t\t\tfunction(item) {\r\n\t\t\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\t\t\tid: item.id,\r\n\t\t\t\t\t\t\t\t\t\ttext: item.name\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\tres = _.filter(res,\r\n\t\t\t\t\t\t\t\tfunction(item) {\r\n\t\t\t\t\t\t\t\t\treturn item.text.toLowerCase().indexOf(params.term.toLowerCase()) !== -1;\r\n\t\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\tresults: res,\r\n\t\t\t\t\t\t\t\tpagination: {\r\n\t\t\t\t\t\t\t\t\tmore: false\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\t.on('select2:select',\r\n\t\t\t\t\tfunction(e) {\r\n\t\t\t\t\t\tvar city = e.params.data;\r\n\t\t\t\t\t\tif (city) {\r\n\t\t\t\t\t\t\t$('#CityName').val(city.text);\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\t$('#CityName').val(null);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t})\r\n\t\t\t\t.on('change',\r\n\t\t\t\t\tfunction() {\r\n\t\t\t\t\t\tif (typeof ui.$form.valid !== 'undefined') {\r\n\t\t\t\t\t\t\tif (_.keys(ui.$form.data('validator').submitted).length > 0) {\r\n\t\t\t\t\t\t\t\tui.$form.valid();\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n });\r\n\r\n var $select2country = ui.$form.find('.js-select2-country');\r\n $select2country.select2({\r\n minimumInputLength: 2,\r\n selectOnClose: true,\r\n placeholder: $select2country.attr('placeholder'),\r\n dropdownCssClass: 'o-job-application__select2',\r\n ajax: {\r\n delay: 250,\r\n url: '/umbraco/api/api/searchcountry',\r\n headers: {\r\n 'Accept-Language': StudentConsulting.lang\r\n },\r\n data: function (params) {\r\n var query = $.extend({}, params);\r\n $.extend(query,\r\n {\r\n query: params.term,\r\n page: params.page || 1\r\n });\r\n\r\n delete query._type;\r\n delete query.term;\r\n return query;\r\n },\r\n processResults: function (data, params) {\r\n // Tranforms the top-level key of the response object from 'items' to 'results'\r\n var res = _.map(data,\r\n function (item) {\r\n return {\r\n id: item.id,\r\n text: item.name\r\n };\r\n });\r\n\r\n res = _.filter(res,\r\n function (item) {\r\n return item.text.toLowerCase().indexOf(params.term.toLowerCase()) !== -1;\r\n });\r\n\r\n return {\r\n results: res,\r\n pagination: {\r\n more: false\r\n }\r\n };\r\n }\r\n }\r\n })\r\n .on('select2:select',\r\n function (e) {\r\n var country = e.params.data;\r\n if (country) {\r\n $('#CountryName').val(country.text);\r\n } else {\r\n $('#CountryName').val(null);\r\n }\r\n\r\n if (country.id > 3) {\r\n $('#select2cities_container').hide();\r\n $('#freetextcities_container').show();\r\n $('#CityId').val(null);\r\n $('#cityname_value').val(null);\r\n $('#CityId').rules('add', { required: false });\r\n $('#CityFreeText').rules('add', { required: true });\r\n }\r\n else {\r\n $('#freetextcities_container').hide();\r\n $('#select2cities_container').show();\r\n $('#CityFreeText').val(null);\r\n $('#CityFreeText').rules('add', { required: false });\r\n $('#CityId').rules('add', { required: true });\r\n }\r\n })\r\n .on('change',\r\n function () {\r\n if (typeof ui.$form.valid !== 'undefined') {\r\n if (_.keys(ui.$form.data('validator').submitted).length > 0) {\r\n ui.$form.valid();\r\n }\r\n }\r\n });\r\n\t\t\t\r\n\t\t\tui.$form.find('.js-upload').on('change', function () {\r\n\t\t\t\tvar $this = $(this);\r\n\t\t\t\tvar value = $this.val();\r\n\t\t\t\tvar lastSlash = value.lastIndexOf('\\\\');\r\n\t\t\t\tvar fileName = value.substring(lastSlash + 1);\r\n\t\t\t\tvar button = $this.siblings('button');\r\n\r\n\t\t\t\tbutton.html(fileName);\r\n\t\t\t\tbutton.addClass('a-upload__button--valid');\r\n\r\n\t\t\t\tif (value == false) {\r\n\t\t\t\t\tbutton.html(button.attr('placeholder'));\r\n\r\n\t\t\t\t\tbutton.removeClass('a-upload__button--valid');\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// validate upload filesize\r\n\t\t\t\tif (window.FileReader) {\r\n\t\t\t\t\tvar totalUploadFileSizeBytes = 0;\r\n\r\n\t\t\t\t\t$('.js-upload').each( function(i, item) {\r\n\t\t\t\t\t\tif (item.files.length > 0) {\r\n\t\t\t\t\t\t\ttotalUploadFileSizeBytes += 4 * Math.ceil(item.files[0].size / 3.0); //Size of base64 encoded file\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif (totalUploadFileSizeBytes > limits.maxUploadSizeBytes) {\r\n\t\t\t\t\t\t//console.log('exceeded upload file size limit');\r\n button.addClass('form-field-invalid');\r\n\t\t\t\t\t\tbutton.removeClass('a-upload__button--valid');\r\n\r\n\t\t\t\t\t\t// clear value...\r\n this.value = '';\r\n button.text(button.attr('placeholder'));\r\n\r\n\t\t\t\t\t\t// show error msg\r\n\t\t\t\t\t\t$('.js-filesize-error').show();\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tbutton.removeClass('form-field-invalid');\r\n\t\t\t\t\t\t$('.js-filesize-error').hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t}).each(function() {\r\n\t\t\t\t$(this).triggerHandler('change');\r\n\t\t\t});\r\n\r\n\t\t\tui.$form.find('.js-datepicker').each(function () {\r\n var format = $(this).data('format');\r\n var defaultDate = $(this).data('defaultdate') || new Date();\r\n $(this).datepicker({\r\n language: lang,\r\n autoHide: true,\r\n format: format,\r\n startView: 2,\r\n date: defaultDate\r\n });\r\n });\r\n\r\n\t\t\t// Set dates for driving licenses\r\n\t\t\tui.$form.find('.js-datepicker').each(function () {\r\n\t\t\t\t// Init value\r\n\t\t\t\tvar $df = $(this);\r\n\t\t\t\tvar dp = $df.data('datepicker');\r\n\t\t\t\tif (dp && this.value) {\r\n\t\t\t\t\tdp.setDate(new Date(this.value));\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Init reset listener\r\n\t\t\t\t$df.parent().find('[type=checkbox]').on('change', function () {\r\n\t\t\t\t\tvar $e = $(this);\r\n\t\t\t\t\tif (!$e.is(':checked') && dp) {\r\n\t\t\t\t\t\t$df.val('');\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tui.$form.find('.o-form__multiselect-placeholder').on('click', function() {\r\n\t\t\t\t$('.ms-selectable').fadeToggle(200);\r\n\t\t\t});\r\n\r\n\t\t\tui.$form.find('.js-multiselect').multiSelect({\r\n\t\t\t\tafterSelect: function (values) {\r\n\t\t\t\t\tvar val = this.$element.val();\r\n\t\t\t\t\tif (val.length > 0) {\r\n\t\t\t\t\t\t$('.ms-selection__heading').show();\r\n\t\t\t\t\t}\r\n\t\t\t\t\t$('.ms-selectable').fadeOut(200);\r\n\t\t\t\t},\r\n\t\t\t\tafterDeselect: function (values) {\r\n\t\t\t\t\tvar val = this.$element.val();\r\n\t\t\t\t\tif (val.length === 0) {\r\n\t\t\t\t\t\t$('.ms-selection__heading').hide();\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\tselectionHeader: $('#forkLiftSelectionHeader')\r\n\t\t\t});\r\n\r\n\t\t\tui.loader.hide();\r\n\t\t},\r\n\t\tloader: {\r\n\t\t\tshow: function() {\r\n\t\t\t\tui.$loader.show();\r\n\t\t\t\tui.$wrapper.hide();\r\n\t\t\t},\r\n\t\t\thide: function() {\r\n\t\t\t\tui.$loader.hide();\r\n\t\t\t\tui.$wrapper.show();\r\n\t\t\t}\r\n\t\t},\r\n\t\terror: function() {\r\n\t\t\tui.$loader.hide();\r\n\t\t\tui.$form.closest('.o-job-application').hide();\r\n\t\t\t// TODO: Error handling\r\n\t\t}\r\n\t};\r\n\r\n\tui.init($('.o-job-application__wrapper'));\r\n})(StudentConsulting.api, StudentConsulting.utils, StudentConsulting.lang, StudentConsulting.limits);"],"names":["window","Handlebars","template","compiler","main","container","depth0","helpers","partials","data","helper","alias1","nullContext","alias2","hooks","helperMissing","alias3","alias4","escapeExpression","lookupProperty","parent","propertyName","Object","prototype","hasOwnProperty","call","name","hash","loc","start","line","column","end","useData","1","stack1","fn","program","inverse","noop","2","4","6","8","10","12","14","16","18","20","22","24","26","console","log","error","SC","replaceAll","target","search","replacement","split","join","utils","cookie","get","cname","ca","decodeURIComponent","document","i","length","c","charAt","substring","indexOf","set","cvalue","exdays","d","Date","expires","setTime","getTime","toUTCString","format","slugify","text","part1","toString","toLowerCase","replace","i18n","auth","events","addEvent","addEventListener","el","type","nodeName","attachEvent","event","slider","initJobOpeningsSlickSlider","arrowImage","$","not","slick","prevArrow","nextArrow","infinite","centerMode","slidesToShow","slidesToScroll","responsive","breakpoint","settings","url","getUrlParameters","qs","index","substr","location","tokens","params","re","exec","getUrlVars","vars","hashes","href","slice","push","image","cropRemote","width","height","_","trimStart","navigation","update","newUrl","back","scrollTo","$element","delay","scrollOffset","headerHeight","offset","top","innerWidth","animate","scrollTop","isEmptySearchObject","searchObject","empty","locations","professions","keywords","schemas","types","onlySummer","onlyInternal","handlebars","renderAlert","theCompiledHtml","templates","alert","notification","append","find","close","show","on","e","preventDefault","renderCard","renderRelatedHeading","card","extend","StudentConsulting","api","jobs","getJobOpeningsCount","cb","cberror","ajax","dataType","contentType","headers","Accept","Accept-Language","lang","success","getFilteredJobOpeningsCount","JSON","stringify","job","getFormData","jobId","method","postSearchFilterObject","count","scrollTimeout","menuToggle","menu","logoMenu","hasHeroImage","dropdownList","scrollHandler","querySelector","className","css","documentElement","setAttribute","navigator","userAgent","each","this","$e","attr","$next","siblings","textarea","words","value","match","limit","counter","showAfter","toggle","trimmed","val","is","formId","$form","isNumeric","secure","onclick","classes","triggerClasses","j","splice","scroll","clearTimeout","setTimeout","$target","$this","hasClass","duration","complete","removeClass","addClass","toggleClass","mouseup","has","rangeslider","polyfill","rangeClass","disabledClass","horizontalClass","verticalClass","fillClass","handleClass","onInit","levels","setValue","setPosition","l","ll","level","label","max","children","html","onSlide","key","filtersRetrieved","pageShown","$results","$loader","$pagination","str","isSameUrl","url1","url2","getQueryString","getLanguagePrefix","prefix","getSearchUrl","values","vals","filter","map","property","getSearchObject","slugs1","citites","flatten","item","slugs2","slugs","slug","categories","cities","countries","counties","parameterUrl","page","param","jobOpeningsSearchUrl","selectedFilters","id","filterType","filterId","pageSize","getSearchObjectFromUrl","profs","forEach","cityId","catId","professionId","getJoblistFilterheading","heading","translate","resultsHeadingDefault","resultsSummerjob","resultsInternaljob","resultsFulltimejob","resultsParttimejob","searchUrl","history","pushState","actions","setSelectedSelect2Options","render","meta","direct","hide","related","total","totalHits","removeAttr","fadeIn","directHits","totalNumberOfOpenings","relatedHits","hitCount","pathname","pageCount","Math","ceil","pages","query","keys","title","active","compiled","pagination","init","toggleJobFilter","jobOpeningSearch","formData","options","profession","$select2","sortBy","change","select2","placeholder","placeholderText","tags","minimumInputLength","language","matcher","term","result","cloneDeep","exactMatchingChildren","child","sorter","input","selection","$search","filtered","orderBy","obj","preventSearch","select2Options","doSearch","focus","status","alertErrorApi","selectedOptions","searchObj","isFulltime","queryOption","decodeURI","Option","isParttime","prop","isRecruitment","isStaffing","trigger","so","_postSearch","_activeSearch","abort","response","responsdeData","resultsCountSuffixDefault","filterHeading","resultsCountSuffixMatching","a","ready","click","prepend","jQuery","sortOrder","postSearchObject","initSlider","renderJobList","containerId","filterUrl","jobSliderContainer","showAll","setupSearchObjectFromFilters","queryFilters","locationArray","professionsArray","fieldName","lastIndexOf","validator","setDefaults","ignore","addMethod","element","$ce","targetValues","vk","tvk","targetValue","unobtrusive","adapters","add","targetvalues","parse","isArray","rules","messages","message","limits","ui","$wrapper","parents","urlParams","controls","subGroupClass","countChecked","sibling","triggerHandler","isStudent","studyPace","$select2city","selectOnClose","dropdownCssClass","_type","processResults","res","results","more","city","valid","submitted","$select2country","country","required","totalUploadFileSizeBytes","lastSlash","fileName","button","FileReader","files","size","maxUploadSizeBytes","defaultDate","datepicker","autoHide","startView","date","$df","dp","setDate","fadeToggle","multiSelect","afterSelect","fadeOut","afterDeselect","selectionHeader","loader","closest"],"mappings":"AAAAA,OAAmB,WAAIA,OAAmB,YAAK,GAC/CA,OAAmB,WAAa,UAAIA,OAAmB,WAAa,WAAK,GACzEA,OAAmB,WAAa,UAAS,MAAIC,WAAWC,SAAS,CAACC,SAAW,CAAC,EAAE,YAAYC,KAAO,SAASC,EAAUC,EAAOC,EAAQC,EAASC,GAC1I,IAAIC,EAAQC,EAAiB,MAAVL,EAAiBA,EAAUD,EAAUO,aAAe,GAAKC,EAAOR,EAAUS,MAAMC,cAAeC,EAAO,WAAYC,EAAOZ,EAAUa,iBAAkBC,EAAiBd,EAAUc,gBAAkB,SAASC,EAAQC,GAClO,GAAIC,OAAOC,UAAUC,eAAeC,KAAKL,EAAQC,CAAY,EAC3D,OAAOD,EAAOC,EAGpB,EAEF,MAAO,gCACHJ,EAAyJ,OAAhJP,EAAuH,OAA7GA,EAASS,EAAeZ,EAAQ,QAAQ,IAAgB,MAAVD,EAAiBa,EAAeb,EAAO,QAAQ,EAAIA,IAAmBI,EAASG,IAA2BG,EAASN,EAAOe,KAAKd,EAAO,CAACe,KAAO,SAASC,KAAO,GAAGlB,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,EAAEC,OAAS,EAAE,EAAEC,IAAM,CAACF,KAAO,EAAEC,OAAS,EAAE,CAAC,CAAC,CAAC,EAAIrB,CAAQ,EAC9T,2EACAO,EAAqJ,OAA5IP,EAAmH,OAAzGA,EAASS,EAAeZ,EAAQ,MAAM,IAAgB,MAAVD,EAAiBa,EAAeb,EAAO,MAAM,EAAIA,IAAmBI,EAASG,IAA2BG,EAASN,EAAOe,KAAKd,EAAO,CAACe,KAAO,OAAOC,KAAO,GAAGlB,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,EAAEC,OAAS,EAAE,EAAEC,IAAM,CAACF,KAAO,EAAEC,OAAS,EAAE,CAAC,CAAC,CAAC,EAAIrB,CAAQ,EACxT,wJACN,EAAEuB,QAAU,CAAA,CAAI,CAAC,EACjBjC,OAAmB,WAAa,UAAQ,KAAIC,WAAWC,SAAS,CAACgC,EAAI,SAAS7B,EAAUC,EAAOC,EAAQC,EAASC,GAC5G,IAAI0B,EAAQzB,EAAQC,EAAiB,MAAVL,EAAiBA,EAAUD,EAAUO,aAAe,GAAKC,EAAOR,EAAUS,MAAMC,cAAeC,EAAO,WAAYC,EAAOZ,EAAUa,iBAAkBC,EAAiBd,EAAUc,gBAAkB,SAASC,EAAQC,GAC1O,GAAIC,OAAOC,UAAUC,eAAeC,KAAKL,EAAQC,CAAY,EAC3D,OAAOD,EAAOC,EAGpB,EAEF,OAA4S,OAAnSc,EAAShB,EAAeZ,EAAQ,IAAI,EAAEkB,KAAKd,EAAkB,MAAVL,EAAiBa,EAAeb,EAAO,sBAAsB,EAAIA,EAAQ,CAACoB,KAAO,KAAKC,KAAO,GAAGS,GAAK/B,EAAUgC,QAAQ,EAAG5B,EAAM,CAAC,EAAE6B,QAAUjC,EAAUkC,KAAK9B,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,EAAEC,OAAS,CAAC,EAAEC,IAAM,CAACF,KAAO,EAAEC,OAAS,CAAC,CAAC,CAAC,CAAC,GAAaI,EAAS,IACxT,0BAC6R,OAA3RA,EAAShB,EAAeZ,EAAQ,IAAI,EAAEkB,KAAKd,EAAkB,MAAVL,EAAiBa,EAAeb,EAAO,YAAY,EAAIA,EAAQ,CAACoB,KAAO,KAAKC,KAAO,GAAGS,GAAK/B,EAAUgC,QAAQ,EAAG5B,EAAM,CAAC,EAAE6B,QAAUjC,EAAUkC,KAAK9B,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,EAAEC,OAAS,EAAE,EAAEC,IAAM,CAACF,KAAO,EAAEC,OAAS,EAAE,CAAC,CAAC,CAAC,GAAaI,EAAS,KACb,OAA9RA,EAAShB,EAAeZ,EAAQ,IAAI,EAAEkB,KAAKd,EAAkB,MAAVL,EAAiBa,EAAeb,EAAO,cAAc,EAAIA,EAAQ,CAACoB,KAAO,KAAKC,KAAO,GAAGS,GAAK/B,EAAUgC,QAAQ,EAAG5B,EAAM,CAAC,EAAE6B,QAAUjC,EAAUkC,KAAK9B,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,EAAEC,OAAS,EAAE,EAAEC,IAAM,CAACF,KAAO,EAAEC,OAAS,GAAG,CAAC,CAAC,CAAC,GAAaI,EAAS,IAChT,WACAlB,EAAmJ,OAA1IP,EAAiH,OAAvGA,EAASS,EAAeZ,EAAQ,KAAK,IAAgB,MAAVD,EAAiBa,EAAeb,EAAO,KAAK,EAAIA,IAAmBI,EAASG,IAA2BG,EAASN,EAAOe,KAAKd,EAAO,CAACe,KAAO,MAAMC,KAAO,GAAGlB,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,EAAEC,OAAS,GAAG,EAAEC,IAAM,CAACF,KAAO,EAAEC,OAAS,GAAG,CAAC,CAAC,CAAC,EAAIrB,CAAQ,EACvT,qFACAO,EAAuJ,OAA9IP,EAAqH,OAA3GA,EAASS,EAAeZ,EAAQ,OAAO,IAAgB,MAAVD,EAAiBa,EAAeb,EAAO,OAAO,EAAIA,IAAmBI,EAASG,IAA2BG,EAASN,EAAOe,KAAKd,EAAO,CAACe,KAAO,QAAQC,KAAO,GAAGlB,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,EAAEC,OAAS,EAAE,EAAEC,IAAM,CAACF,KAAO,EAAEC,OAAS,EAAE,CAAC,CAAC,CAAC,EAAIrB,CAAQ,EAC3T,iEACAO,EAAmK,OAA1JP,EAAiI,OAAvHA,EAASS,EAAeZ,EAAQ,aAAa,IAAgB,MAAVD,EAAiBa,EAAeb,EAAO,aAAa,EAAIA,IAAmBI,EAASG,IAA2BG,EAASN,EAAOe,KAAKd,EAAO,CAACe,KAAO,cAAcC,KAAO,GAAGlB,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,EAAEC,OAAS,CAAC,EAAEC,IAAM,CAACF,KAAO,EAAEC,OAAS,EAAE,CAAC,CAAC,CAAC,EAAIrB,CAAQ,EAC5U,iSACAO,EAAyK,OAAhKP,EAAuI,OAA7HA,EAASS,EAAeZ,EAAQ,gBAAgB,IAAgB,MAAVD,EAAiBa,EAAeb,EAAO,gBAAgB,EAAIA,IAAmBI,EAASG,IAA2BG,EAASN,EAAOe,KAAKd,EAAO,CAACe,KAAO,iBAAiBC,KAAO,GAAGlB,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,GAAGC,OAAS,CAAC,EAAEC,IAAM,CAACF,KAAO,GAAGC,OAAS,EAAE,CAAC,CAAC,CAAC,EAAIrB,CAAQ,EACvV,6FACAO,EAAiK,OAAxJP,EAA+H,OAArHA,EAASS,EAAeZ,EAAQ,YAAY,IAAgB,MAAVD,EAAiBa,EAAeb,EAAO,YAAY,EAAIA,IAAmBI,EAASG,IAA2BG,EAASN,EAAOe,KAAKd,EAAO,CAACe,KAAO,aAAaC,KAAO,GAAGlB,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,GAAGC,OAAS,CAAC,EAAEC,IAAM,CAACF,KAAO,GAAGC,OAAS,EAAE,CAAC,CAAC,CAAC,EAAIrB,CAAQ,EAC3U,oMACAO,EAA6J,OAApJP,EAA2H,OAAjHA,EAASS,EAAeZ,EAAQ,UAAU,IAAgB,MAAVD,EAAiBa,EAAeb,EAAO,UAAU,EAAIA,IAAmBI,EAASG,IAA2BG,EAASN,EAAOe,KAAKd,EAAO,CAACe,KAAO,WAAWC,KAAO,GAAGlB,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,GAAGC,OAAS,CAAC,EAAEC,IAAM,CAACF,KAAO,GAAGC,OAAS,EAAE,CAAC,CAAC,CAAC,EAAIrB,CAAQ,EACrU,+HACAO,EAAqJ,OAA5IP,EAAmH,OAAzGA,EAASS,EAAeZ,EAAQ,MAAM,IAAgB,MAAVD,EAAiBa,EAAeb,EAAO,MAAM,EAAIA,IAAmBI,EAASG,IAA2BG,EAASN,EAAOe,KAAKd,EAAO,CAACe,KAAO,OAAOC,KAAO,GAAGlB,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,GAAGC,OAAS,CAAC,EAAEC,IAAM,CAACF,KAAO,GAAGC,OAAS,EAAE,CAAC,CAAC,CAAC,EAAIrB,CAAQ,EACzT,+GACwS,OAAtSyB,EAAShB,EAAeZ,EAAQ,QAAQ,EAAEkB,KAAKd,EAAkB,MAAVL,EAAiBa,EAAeb,EAAO,cAAc,EAAIA,EAAQ,CAACoB,KAAO,SAASC,KAAO,GAAGS,GAAK/B,EAAUgC,QAAQ,EAAG5B,EAAM,CAAC,EAAE6B,QAAUjC,EAAUkC,KAAK9B,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,GAAGC,OAAS,CAAC,EAAEC,IAAM,CAACF,KAAO,GAAGC,OAAS,EAAE,CAAC,CAAC,CAAC,GAAaI,EAAS,KACvB,OAA/RA,EAAShB,EAAeZ,EAAQ,IAAI,EAAEkB,KAAKd,EAAkB,MAAVL,EAAiBa,EAAeb,EAAO,cAAc,EAAIA,EAAQ,CAACoB,KAAO,KAAKC,KAAO,GAAGS,GAAK/B,EAAUgC,QAAQ,GAAI5B,EAAM,CAAC,EAAE6B,QAAUjC,EAAUkC,KAAK9B,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,GAAGC,OAAS,CAAC,EAAEC,IAAM,CAACF,KAAO,GAAGC,OAAS,EAAE,CAAC,CAAC,CAAC,GAAaI,EAAS,IACjT,2EACAlB,EAA6J,OAApJP,EAA2H,OAAjHA,EAASS,EAAeZ,EAAQ,UAAU,IAAgB,MAAVD,EAAiBa,EAAeb,EAAO,UAAU,EAAIA,IAAmBI,EAASG,IAA2BG,EAASN,EAAOe,KAAKd,EAAO,CAACe,KAAO,WAAWC,KAAO,GAAGlB,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,GAAGC,OAAS,CAAC,EAAEC,IAAM,CAACF,KAAO,GAAGC,OAAS,EAAE,CAAC,CAAC,CAAC,EAAIrB,CAAQ,EACrU,mGACAO,EAAqJ,OAA5IP,EAAmH,OAAzGA,EAASS,EAAeZ,EAAQ,MAAM,IAAgB,MAAVD,EAAiBa,EAAeb,EAAO,MAAM,EAAIA,IAAmBI,EAASG,IAA2BG,EAASN,EAAOe,KAAKd,EAAO,CAACe,KAAO,OAAOC,KAAO,GAAGlB,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,GAAGC,OAAS,CAAC,EAAEC,IAAM,CAACF,KAAO,GAAGC,OAAS,EAAE,CAAC,CAAC,CAAC,EAAIrB,CAAQ,EACzT,sDACyS,OAAvSyB,EAAShB,EAAeZ,EAAQ,QAAQ,EAAEkB,KAAKd,EAAkB,MAAVL,EAAiBa,EAAeb,EAAO,cAAc,EAAIA,EAAQ,CAACoB,KAAO,SAASC,KAAO,GAAGS,GAAK/B,EAAUgC,QAAQ,GAAI5B,EAAM,CAAC,EAAE6B,QAAUjC,EAAUkC,KAAK9B,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,GAAGC,OAAS,CAAC,EAAEC,IAAM,CAACF,KAAO,GAAGC,OAAS,EAAE,CAAC,CAAC,CAAC,GAAaI,EAAS,KACxB,OAA/RA,EAAShB,EAAeZ,EAAQ,IAAI,EAAEkB,KAAKd,EAAkB,MAAVL,EAAiBa,EAAeb,EAAO,cAAc,EAAIA,EAAQ,CAACoB,KAAO,KAAKC,KAAO,GAAGS,GAAK/B,EAAUgC,QAAQ,GAAI5B,EAAM,CAAC,EAAE6B,QAAUjC,EAAUkC,KAAK9B,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,GAAGC,OAAS,CAAC,EAAEC,IAAM,CAACF,KAAO,GAAGC,OAAS,EAAE,CAAC,CAAC,CAAC,GAAaI,EAAS,IACjT,+EACAlB,EAA6J,OAApJP,EAA2H,OAAjHA,EAASS,EAAeZ,EAAQ,UAAU,IAAgB,MAAVD,EAAiBa,EAAeb,EAAO,UAAU,EAAIA,IAAmBI,EAASG,IAA2BG,EAASN,EAAOe,KAAKd,EAAO,CAACe,KAAO,WAAWC,KAAO,GAAGlB,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,GAAGC,OAAS,CAAC,EAAEC,IAAM,CAACF,KAAO,GAAGC,OAAS,EAAE,CAAC,CAAC,CAAC,EAAIrB,CAAQ,EACrU,8BACyS,OAAvSyB,EAAShB,EAAeZ,EAAQ,QAAQ,EAAEkB,KAAKd,EAAkB,MAAVL,EAAiBa,EAAeb,EAAO,cAAc,EAAIA,EAAQ,CAACoB,KAAO,SAASC,KAAO,GAAGS,GAAK/B,EAAUgC,QAAQ,GAAI5B,EAAM,CAAC,EAAE6B,QAAUjC,EAAUkC,KAAK9B,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,GAAGC,OAAS,CAAC,EAAEC,IAAM,CAACF,KAAO,GAAGC,OAAS,EAAE,CAAC,CAAC,CAAC,GAAaI,EAAS,IACzT,QACiS,OAA/RA,EAAShB,EAAeZ,EAAQ,IAAI,EAAEkB,KAAKd,EAAkB,MAAVL,EAAiBa,EAAeb,EAAO,cAAc,EAAIA,EAAQ,CAACoB,KAAO,KAAKC,KAAO,GAAGS,GAAK/B,EAAUgC,QAAQ,GAAI5B,EAAM,CAAC,EAAE6B,QAAUjC,EAAUkC,KAAK9B,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,GAAGC,OAAS,CAAC,EAAEC,IAAM,CAACF,KAAO,GAAGC,OAAS,EAAE,CAAC,CAAC,CAAC,GAAaI,EAAS,IACjT,yRAC0R,OAAxRA,EAAShB,EAAeZ,EAAQ,IAAI,EAAEkB,KAAKd,EAAkB,MAAVL,EAAiBa,EAAeb,EAAO,MAAM,EAAIA,EAAQ,CAACoB,KAAO,KAAKC,KAAO,GAAGS,GAAK/B,EAAUgC,QAAQ,GAAI5B,EAAM,CAAC,EAAE6B,QAAUjC,EAAUkC,KAAK9B,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,GAAGC,OAAS,EAAE,EAAEC,IAAM,CAACF,KAAO,GAAGC,OAAS,EAAE,CAAC,CAAC,CAAC,GAAaI,EAAS,IAC1S,uEACAlB,EAAqK,OAA5JP,EAAmI,OAAzHA,EAASS,EAAeZ,EAAQ,cAAc,IAAgB,MAAVD,EAAiBa,EAAeb,EAAO,cAAc,EAAIA,IAAmBI,EAASG,IAA2BG,EAASN,EAAOe,KAAKd,EAAO,CAACe,KAAO,eAAeC,KAAO,GAAGlB,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,GAAGC,OAAS,CAAC,EAAEC,IAAM,CAACF,KAAO,GAAGC,OAAS,EAAE,CAAC,CAAC,CAAC,EAAIrB,CAAQ,EACjV,0GAC+S,OAA7SyB,EAAShB,EAAeZ,EAAQ,IAAI,EAAEkB,KAAKd,EAAkB,MAAVL,EAAiBa,EAAeb,EAAO,YAAY,EAAIA,EAAQ,CAACoB,KAAO,KAAKC,KAAO,GAAGS,GAAK/B,EAAUgC,QAAQ,GAAI5B,EAAM,CAAC,EAAE6B,QAAUjC,EAAUgC,QAAQ,GAAI5B,EAAM,CAAC,EAAEA,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,GAAGC,OAAS,CAAC,EAAEC,IAAM,CAACF,KAAO,GAAGC,OAAS,EAAE,CAAC,CAAC,CAAC,GAAaI,EAAS,IAC/T,8FAC0R,OAAxRA,EAAShB,EAAeZ,EAAQ,IAAI,EAAEkB,KAAKd,EAAkB,MAAVL,EAAiBa,EAAeb,EAAO,MAAM,EAAIA,EAAQ,CAACoB,KAAO,KAAKC,KAAO,GAAGS,GAAK/B,EAAUgC,QAAQ,GAAI5B,EAAM,CAAC,EAAE6B,QAAUjC,EAAUkC,KAAK9B,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,GAAGC,OAAS,CAAC,EAAEC,IAAM,CAACF,KAAO,IAAIC,OAAS,EAAE,CAAC,CAAC,CAAC,GAAaI,EAAS,IAC1S,gEACN,EAAEK,EAAI,SAASnC,EAAUC,EAAOC,EAAQC,EAASC,GAC7C,IAAYU,EAAiBd,EAAUc,gBAAkB,SAASC,EAAQC,GACtE,GAAIC,OAAOC,UAAUC,eAAeC,KAAKL,EAAQC,CAAY,EAC3D,OAAOD,EAAOC,EAGpB,EAEF,MAAO,oEACHhB,EAAUa,iBAAwO,YAAlB,OAAnMR,EAAmJ,OAAzIA,EAASS,EAAeZ,EAAQ,sBAAsB,IAAgB,MAAVD,EAAiBa,EAAeb,EAAO,sBAAsB,EAAIA,IAAmBI,EAASL,EAAUS,MAAMC,eAA+CL,EAAOe,KAAe,MAAVnB,EAAiBA,EAAUD,EAAUO,aAAe,GAAI,CAACc,KAAO,uBAAuBC,KAAO,GAAGlB,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,EAAEC,OAAS,EAAE,EAAEC,IAAM,CAACF,KAAO,EAAEC,OAAS,EAAE,CAAC,CAAC,CAAC,EAAIrB,CAAQ,EACxc,WACN,EAAE+B,EAAI,SAASpC,EAAUC,EAAOC,EAAQC,EAASC,GAC7C,MAAO,yBACX,EAAEiC,EAAI,SAASrC,EAAUC,EAAOC,EAAQC,EAASC,GAC7C,MAAO,oBACX,EAAEkC,EAAI,SAAStC,EAAUC,EAAOC,EAAQC,EAASC,GAC7C,MAAO,sDACX,EAAEmC,GAAK,SAASvC,EAAUC,EAAOC,EAAQC,EAASC,GAC9C,MAAO,8FACX,EAAEoC,GAAK,SAASxC,EAAUC,EAAOC,EAAQC,EAASC,GAC9C,MAAO,uFACX,EAAEqC,GAAK,SAASzC,EAAUC,EAAOC,EAAQC,EAASC,GAC9C,MAAO,kGACX,EAAEsC,GAAK,SAAS1C,EAAUC,EAAOC,EAAQC,EAASC,GAC9C,IAAYU,EAAiBd,EAAUc,gBAAkB,SAASC,EAAQC,GACtE,GAAIC,OAAOC,UAAUC,eAAeC,KAAKL,EAAQC,CAAY,EAC3D,OAAOD,EAAOC,EAGpB,EAEF,MAAO,+GACHhB,EAAUa,iBAAkN,YAAlB,OAA7KR,EAA6H,OAAnHA,EAASS,EAAeZ,EAAQ,WAAW,IAAgB,MAAVD,EAAiBa,EAAeb,EAAO,WAAW,EAAIA,IAAmBI,EAASL,EAAUS,MAAMC,eAA+CL,EAAOe,KAAe,MAAVnB,EAAiBA,EAAUD,EAAUO,aAAe,GAAI,CAACc,KAAO,YAAYC,KAAO,GAAGlB,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,GAAGC,OAAS,CAAC,EAAEC,IAAM,CAACF,KAAO,GAAGC,OAAS,EAAE,CAAC,CAAC,CAAC,EAAIrB,CAAQ,EACxa,8BACN,EAAEsC,GAAK,SAAS3C,EAAUC,EAAOC,EAAQC,EAASC,GAC9C,IAAYU,EAAiBd,EAAUc,gBAAkB,SAASC,EAAQC,GACtE,GAAIC,OAAOC,UAAUC,eAAeC,KAAKL,EAAQC,CAAY,EAC3D,OAAOD,EAAOC,EAGpB,EAEF,MAAO,qIACHhB,EAAUa,iBAAkN,YAAlB,OAA7KR,EAA6H,OAAnHA,EAASS,EAAeZ,EAAQ,WAAW,IAAgB,MAAVD,EAAiBa,EAAeb,EAAO,WAAW,EAAIA,IAAmBI,EAASL,EAAUS,MAAMC,eAA+CL,EAAOe,KAAe,MAAVnB,EAAiBA,EAAUD,EAAUO,aAAe,GAAI,CAACc,KAAO,YAAYC,KAAO,GAAGlB,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,GAAGC,OAAS,CAAC,EAAEC,IAAM,CAACF,KAAO,GAAGC,OAAS,EAAE,CAAC,CAAC,CAAC,EAAIrB,CAAQ,EACxa,8BACN,EAAEuC,GAAK,SAAS5C,EAAUC,EAAOC,EAAQC,EAASC,GAC9C,MAAO,mCACX,EAAEyC,GAAK,SAAS7C,EAAUC,EAAOC,EAAQC,EAASC,GAC9C,IAAYU,EAAiBd,EAAUc,gBAAkB,SAASC,EAAQC,GACtE,GAAIC,OAAOC,UAAUC,eAAeC,KAAKL,EAAQC,CAAY,EAC3D,OAAOD,EAAOC,EAGpB,EAEF,MAAO,mBACHhB,EAAUa,iBAA8N,YAAlB,OAAzLR,EAAyI,OAA/HA,EAASS,EAAeZ,EAAQ,iBAAiB,IAAgB,MAAVD,EAAiBa,EAAeb,EAAO,iBAAiB,EAAIA,IAAmBI,EAASL,EAAUS,MAAMC,eAA+CL,EAAOe,KAAe,MAAVnB,EAAiBA,EAAUD,EAAUO,aAAe,GAAI,CAACc,KAAO,kBAAkBC,KAAO,GAAGlB,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,GAAGC,OAAS,CAAC,EAAEC,IAAM,CAACF,KAAO,GAAGC,OAAS,EAAE,CAAC,CAAC,CAAC,EAAIrB,CAAQ,EAC1b,MACN,EAAEyC,GAAK,SAAS9C,EAAUC,EAAOC,EAAQC,EAASC,GAC9C,IAAIC,EAAQC,EAAiB,MAAVL,EAAiBA,EAAUD,EAAUO,aAAe,GAAKC,EAAOR,EAAUS,MAAMC,cAAeC,EAAO,WAAYC,EAAOZ,EAAUa,iBAAkBC,EAAiBd,EAAUc,gBAAkB,SAASC,EAAQC,GAClO,GAAIC,OAAOC,UAAUC,eAAeC,KAAKL,EAAQC,CAAY,EAC3D,OAAOD,EAAOC,EAGpB,EAEF,MAAO,oEACHJ,EAAmJ,OAA1IP,EAAiH,OAAvGA,EAASS,EAAeZ,EAAQ,KAAK,IAAgB,MAAVD,EAAiBa,EAAeb,EAAO,KAAK,EAAIA,IAAmBI,EAASG,IAA2BG,EAASN,EAAOe,KAAKd,EAAO,CAACe,KAAO,MAAMC,KAAO,GAAGlB,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,GAAGC,OAAS,EAAE,EAAEC,IAAM,CAACF,KAAO,GAAGC,OAAS,EAAE,CAAC,CAAC,CAAC,EAAIrB,CAAQ,EACvT,2CACAO,EAAiK,OAAxJP,EAA+H,OAArHA,EAASS,EAAeZ,EAAQ,YAAY,IAAgB,MAAVD,EAAiBa,EAAeb,EAAO,YAAY,EAAIA,IAAmBI,EAASG,IAA2BG,EAASN,EAAOe,KAAKd,EAAO,CAACe,KAAO,aAAaC,KAAO,GAAGlB,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,GAAGC,OAAS,CAAC,EAAEC,IAAM,CAACF,KAAO,GAAGC,OAAS,EAAE,CAAC,CAAC,CAAC,EAAIrB,CAAQ,EAC3U,+BACN,EAAE0C,GAAK,SAAS/C,EAAUC,EAAOC,EAAQC,EAASC,GAC9C,IAAYU,EAAiBd,EAAUc,gBAAkB,SAASC,EAAQC,GACtE,GAAIC,OAAOC,UAAUC,eAAeC,KAAKL,EAAQC,CAAY,EAC3D,OAAOD,EAAOC,EAGpB,EAEF,MAAO,qEACHhB,EAAUa,iBAAwM,YAAlB,OAAnKR,EAAmH,OAAzGA,EAASS,EAAeZ,EAAQ,MAAM,IAAgB,MAAVD,EAAiBa,EAAeb,EAAO,MAAM,EAAIA,IAAmBI,EAASL,EAAUS,MAAMC,eAA+CL,EAAOe,KAAe,MAAVnB,EAAiBA,EAAUD,EAAUO,aAAe,GAAI,CAACc,KAAO,OAAOC,KAAO,GAAGlB,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,IAAIC,OAAS,EAAE,EAAEC,IAAM,CAACF,KAAO,IAAIC,OAAS,EAAE,CAAC,CAAC,CAAC,EAAIrB,CAAQ,EAC5Z,mCACN,EAAEP,SAAW,CAAC,EAAE,YAAYC,KAAO,SAASC,EAAUC,EAAOC,EAAQC,EAASC,GAQ5E,OAAgS,OAAvR0B,GAPsB9B,EAAUc,gBAAkB,SAASC,EAAQC,GACtE,GAAIC,OAAOC,UAAUC,eAAeC,KAAKL,EAAQC,CAAY,EAC3D,OAAOD,EAAOC,EAGpB,GAE+Bd,EAAQ,MAAM,EAAEkB,KAAe,MAAVnB,EAAiBA,EAAUD,EAAUO,aAAe,GAAIN,EAAO,CAACoB,KAAO,OAAOC,KAAO,GAAGS,GAAK/B,EAAUgC,QAAQ,EAAG5B,EAAM,CAAC,EAAE6B,QAAUjC,EAAUkC,KAAK9B,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,EAAEC,OAAS,CAAC,EAAEC,IAAM,CAACF,KAAO,IAAIC,OAAS,CAAC,CAAC,CAAC,CAAC,GAAaI,EAAS,EAClT,EAAEF,QAAU,CAAA,CAAI,CAAC,EACjBjC,OAAmB,WAAa,UAAc,WAAIC,WAAWC,SAAS,CAACgC,EAAI,SAAS7B,EAAUC,EAAOC,EAAQC,EAASC,GAClH,IAAYU,EAAiBd,EAAUc,gBAAkB,SAASC,EAAQC,GACtE,GAAIC,OAAOC,UAAUC,eAAeC,KAAKL,EAAQC,CAAY,EAC3D,OAAOD,EAAOC,EAGpB,EAEF,OAA8V,OAArVc,EAAShB,EAAeZ,EAAQ,IAAI,EAAEkB,KAAe,MAAVnB,EAAiBA,EAAUD,EAAUO,aAAe,GAAe,MAAVN,EAAiBa,EAAeb,EAAO,QAAQ,EAAIA,EAAQ,CAACoB,KAAO,KAAKC,KAAO,GAAGS,GAAK/B,EAAUgC,QAAQ,EAAG5B,EAAM,CAAC,EAAE6B,QAAUjC,EAAUgC,QAAQ,EAAG5B,EAAM,CAAC,EAAEA,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,EAAEC,OAAS,CAAC,EAAEC,IAAM,CAACF,KAAO,EAAEC,OAAS,CAAC,CAAC,CAAC,CAAC,GAAaI,EAAS,EAChX,EAAEK,EAAI,SAASnC,EAAUC,EAAOC,EAAQC,EAASC,GAC7C,IAAI0B,EAAQzB,EAAQC,EAAiB,MAAVL,EAAiBA,EAAUD,EAAUO,aAAe,GAAKC,EAAOR,EAAUS,MAAMC,cAAeC,EAAO,WAAYG,EAAiBd,EAAUc,gBAAkB,SAASC,EAAQC,GACvM,GAAIC,OAAOC,UAAUC,eAAeC,KAAKL,EAAQC,CAAY,EAC3D,OAAOD,EAAOC,EAGpB,EAEF,MAAO,yEAC2T,OAA5Tc,EAAqJ,OAA1IzB,EAAiH,OAAvGA,EAASS,EAAeZ,EAAQ,KAAK,IAAgB,MAAVD,EAAiBa,EAAeb,EAAO,KAAK,EAAIA,IAAmBI,EAASG,IAA2BG,EAASN,EAAOe,KAAKd,EAAO,CAACe,KAAO,MAAMC,KAAO,GAAGlB,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,EAAEC,OAAS,EAAE,EAAEC,IAAM,CAACF,KAAO,EAAEC,OAAS,EAAE,CAAC,CAAC,CAAC,EAAIrB,GAAoByB,EAAS,IAC9U,KACA9B,EAAUa,iBAAiK,OAA9IR,EAAqH,OAA3GA,EAASS,EAAeZ,EAAQ,OAAO,IAAgB,MAAVD,EAAiBa,EAAeb,EAAO,OAAO,EAAIA,IAAmBI,EAASG,IAA2BG,EAASN,EAAOe,KAAKd,EAAO,CAACe,KAAO,QAAQC,KAAO,GAAGlB,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,EAAEC,OAAS,EAAE,EAAEC,IAAM,CAACF,KAAO,EAAEC,OAAS,EAAE,CAAC,CAAC,CAAC,EAAIrB,CAAQ,EAC/U,UACN,EAAE+B,EAAI,SAASpC,EAAUC,EAAOC,EAAQC,EAASC,GAC7C,IAAI0B,EAAQzB,EAAQC,EAAiB,MAAVL,EAAiBA,EAAUD,EAAUO,aAAe,GAAKC,EAAOR,EAAUS,MAAMC,cAAeC,EAAO,WAAYG,EAAiBd,EAAUc,gBAAkB,SAASC,EAAQC,GACvM,GAAIC,OAAOC,UAAUC,eAAeC,KAAKL,EAAQC,CAAY,EAC3D,OAAOD,EAAOC,EAGpB,EAEF,MAAO,8CAC2T,OAA5Tc,EAAqJ,OAA1IzB,EAAiH,OAAvGA,EAASS,EAAeZ,EAAQ,KAAK,IAAgB,MAAVD,EAAiBa,EAAeb,EAAO,KAAK,EAAIA,IAAmBI,EAASG,IAA2BG,EAASN,EAAOe,KAAKd,EAAO,CAACe,KAAO,MAAMC,KAAO,GAAGlB,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,EAAEC,OAAS,EAAE,EAAEC,IAAM,CAACF,KAAO,EAAEC,OAAS,EAAE,CAAC,CAAC,CAAC,EAAIrB,GAAoByB,EAAS,IAC9U,KACA9B,EAAUa,iBAAiK,OAA9IR,EAAqH,OAA3GA,EAASS,EAAeZ,EAAQ,OAAO,IAAgB,MAAVD,EAAiBa,EAAeb,EAAO,OAAO,EAAIA,IAAmBI,EAASG,IAA2BG,EAASN,EAAOe,KAAKd,EAAO,CAACe,KAAO,QAAQC,KAAO,GAAGlB,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,EAAEC,OAAS,EAAE,EAAEC,IAAM,CAACF,KAAO,EAAEC,OAAS,EAAE,CAAC,CAAC,CAAC,EAAIrB,CAAQ,EAC/U,UACN,EAAEP,SAAW,CAAC,EAAE,YAAYC,KAAO,SAASC,EAAUC,EAAOC,EAAQC,EAASC,GAQ5E,MAAO,kCACqR,OAAtR0B,GARyB9B,EAAUc,gBAAkB,SAASC,EAAQC,GACtE,GAAIC,OAAOC,UAAUC,eAAeC,KAAKL,EAAQC,CAAY,EAC3D,OAAOD,EAAOC,EAGpB,GAG4Bd,EAAQ,MAAM,EAAEkB,KAAe,MAAVnB,EAAiBA,EAAUD,EAAUO,aAAe,GAAIN,EAAO,CAACoB,KAAO,OAAOC,KAAO,GAAGS,GAAK/B,EAAUgC,QAAQ,EAAG5B,EAAM,CAAC,EAAE6B,QAAUjC,EAAUkC,KAAK9B,KAAOA,EAAKmB,IAAM,CAACC,MAAQ,CAACC,KAAO,EAAEC,OAAS,CAAC,EAAEC,IAAM,CAACF,KAAO,EAAEC,OAAS,EAAE,CAAC,CAAC,CAAC,GAAaI,EAAS,IACxS,QACN,EAAEF,QAAU,CAAA,CAAI,CAAC,EACjB,SAAWjC,GACV,aAEKA,EAAOqD,UACXrD,EAAOqD,QAAU,CAChBC,IAAK,aACLC,MAAO,YACR,EAED,EAAEvD,MAAM,EACT,SAAUwD,GACT,aAsCiB,SAAbC,EAAuBC,EAAQC,EAAQC,GAC1C,OAAOF,EAAOG,MAAMF,CAAM,EAAEG,KAAKF,CAAW,CAC7C,CAtCA,IAAIG,EAAQ,CAEZC,OAAe,CAKdC,IAAK,SAASC,GAIb,IAHA,IAAIxC,EAAOwC,EAAQ,IAEfC,EADgBC,mBAAmBC,SAASL,MAAM,EAC/BH,MAAM,GAAG,EACvBS,EAAI,EAAGA,EAAIH,EAAGI,OAAQD,CAAC,GAAI,CAEnC,IADA,IAAIE,EAAIL,EAAGG,GACW,KAAfE,EAAEC,OAAO,CAAC,GAChBD,EAAIA,EAAEE,UAAU,CAAC,EAElB,GAAuB,GAAnBF,EAAEG,QAAQjD,CAAI,EACjB,OAAO8C,EAAEE,UAAUhD,EAAK6C,OAAQC,EAAED,MAAM,CAE1C,CACA,MAAO,EACR,EAOAK,IAAK,SAASV,EAAOW,EAAQC,GAC5B,IAAIC,EAAI,IAAIC,KAERC,GADJF,EAAEG,QAAQH,EAAEI,QAAQ,EAAc,GAATL,EAAc,GAAK,GAAK,GAAK,EACxC,WAAaC,EAAEK,YAAY,GACzCf,SAASL,OAASE,EAAQ,IAAMW,EAAS,IAAMI,EAAU,gBAC1D,CACD,CAlCa,EAwCblB,EAAMsB,OAAS,CAKdC,QAAS,SAAUC,GAGdC,EAAQD,EAAKE,SAAS,EAAEC,YAAY,EACtCC,QAAQ,MAAO,GAAG,EAClBA,QAAQ,OAAQ,GAAG,EAErBH,EAAQ/B,EAAW+B,EAAO,IAAK,GAAG,EAMlC,OALAA,EAAQ/B,EAAW+B,EAAO,IAAK,GAAG,EAClCA,EAAQ/B,EAAW+B,EAAO,IAAK,GAAG,EAClCA,EAAQ/B,EAAW+B,EAAO,IAAK,GAAG,GAClCA,EAAQ/B,EAAW+B,EAAO,IAAK,GAAG,GAErBG,QAAQ,YAAa,EAAE,EAClCA,QAAQ,SAAU,GAAG,EACrBA,QAAQ,SAAU,GAAG,EACrBA,QAAQ,MAAO,EAAE,EACjBA,QAAQ,MAAO,EAAE,CACpB,CACD,EAEA5B,EAAM6B,KAAO,GAYb7B,EAAM8B,KAAO,GAUb9B,EAAM+B,OAAS,CACdC,SACK1B,SAAS2B,iBACL,SAASC,EAAIC,EAAM9D,GACzB,GAAI6D,GAAMA,EAAGE,UAAYF,IAAOjG,OAC/BiG,EAAGD,iBAAiBE,EAAM9D,EAAI,CAAA,CAAK,OAC7B,GAAI6D,GAAMA,EAAG1B,OACnB,IAAK,IAAID,EAAI,EAAGA,EAAI2B,EAAG1B,OAAQD,CAAC,GAC/ByB,SAASE,EAAG3B,GAAI4B,EAAM9D,CAAE,CAG3B,EAEO,SAAS6D,EAAIC,EAAM9D,GACzB,GAAI6D,GAAMA,EAAGE,UAAYF,IAAOjG,OAC/BiG,EAAGG,YAAY,KAAOF,EAAM,WAAa,OAAO9D,EAAGX,KAAKwE,EAAIjG,OAAOqG,KAAK,CAAG,CAAC,OACtE,GAAIJ,GAAMA,EAAG1B,OACnB,IAAK,IAAID,EAAI,EAAGA,EAAI2B,EAAG1B,OAAQD,CAAC,GAC/ByB,SAASE,EAAG3B,GAAI4B,EAAM9D,CAAE,CAG3B,CAGH,EAGA2B,EAAMuC,OAAS,CAIdC,2BAA4B,WAE3B,IAIIC,EAJ4C,IAA5CC,EAAE,6BAA6B,EAAElC,SAIjCiC,EACH,oZAEDC,EAAE,6BAA6B,EAAEC,IAAI,oBAAoB,EAAEC,MAAM,CAChEC,UAAW,4CAA8CJ,EAAa,YACtEK,UAAW,4CAA8CL,EAAa,YACtEM,SAAU,CAAA,EACVC,WAAY,CAAA,EACZC,aAAc,EACdC,eAAgB,EAChBC,WAAY,CACX,CACCC,WAAY,KACZC,SAAU,CACTJ,aAAc,EACdC,eAAgB,CACjB,CACD,EACA,CACCE,WAAY,IACZC,SAAU,CACTJ,aAAc,EACdC,eAAgB,CACjB,CACD,EACA,CACCE,WAAY,IACZC,SAAU,CACTJ,aAAc,EACdC,eAAgB,CACjB,CACD,EAEF,CAAC,EACF,CACD,EAEAlD,EAAMsD,IAAM,CACXC,iBAAkB,SAASC,GACrBA,EAIU,CAAC,KADXC,EAAQD,EAAG5C,QAAQ,GAAG,KAEzB4C,EAAKA,EAAGE,OAAOD,CAAK,GAJrBD,EAAKvH,OAAO0H,SAAS/D,OAQtB4D,EAAKA,EAAG1D,MAAM,GAAG,EAAEC,KAAK,GAAG,EAM3B,IAfA,IAGK0D,EASJG,EADGC,EAAS,GAEZC,EAAK,wBAECF,EAASE,EAAGC,KAAKP,CAAE,GACzBK,EAAOxD,mBAAmBuD,EAAO,EAAE,GAAKvD,mBAAmBuD,EAAO,EAAE,EAGrE,OAAOC,CACR,EAIAG,WAAY,SAASV,GAOpB,IANA,IAAe1F,EAAXqG,EAAO,GAKPC,GAJCZ,EAAAA,GACErH,OAAO0H,SAASQ,MAGNC,MAAMd,EAAI1C,QAAQ,GAAG,EAAI,CAAC,EAAEd,MAAM,GAAG,EAC7CS,EAAI,EAAGA,EAAI2D,EAAO1D,OAAQD,CAAC,GACvB3C,EAAOsG,EAAO3D,GAAGT,MAAM,GAAG,EAC1BmE,EAAKI,KAAKzG,EAAK,EAAE,EAC7BqG,EAAKrG,EAAK,IAAMA,EAAK,GAEtB,OAAOqG,CACR,CACD,EAEAjE,EAAMsE,MAAQ,CACbC,WAAY,SAAUjB,EAAKkB,EAAOC,GAEjC,MAAO,gBADPnB,EAAMoB,EAAEC,UAAUD,EAAEC,UAAUrB,EAAK,SAAS,EAAG,UAAU,GAC3B,UAAYkB,GAASC,EAAS,WAAaA,EAAS,IAAM,YACzF,CACD,EAEAzE,EAAM4E,WAAa,CAClBC,OAAQ,SAASC,KAGjBlD,QAAS,SAASkD,KAGlBC,KAAM,YAGP,EAEA/E,EAAMgF,SAAW,SAAUC,EAAUC,EAAOC,GAC3C,IAMIC,EANCH,EAASzE,SAId2E,EAAeA,GAAgB,EAC3BE,EAASJ,EAASI,OAAO,EAAEC,IAC3BF,EAAe1C,EAAE,eAAe,EAAE+B,OAAO,EAEpB,KAArBxI,OAAOsJ,aACVH,EAAe,GAGhB1C,EAAE,WAAW,EAAE8C,QAAQ,CACtBC,UAAYJ,EAASD,EAAeD,EAAgB,IACrD,EAAGD,GAAS,GAAG,EAChB,EAKAlF,EAAM0F,oBAAsB,SAAUC,GACrC,IAAIC,EAAQ,CAAA,EAWZ,OAFCA,EAPqC,IAAlCD,EAAaE,UAAUrF,QACU,IAApCmF,EAAaG,YAAYtF,QACQ,IAAjCmF,EAAaI,SAASvF,QACU,IAAhCmF,EAAaK,QAAQxF,QACS,IAA9BmF,EAAaM,MAAMzF,QACS,CAAA,IAA5BmF,EAAaO,YACiB,CAAA,IAA9BP,EAAaQ,aACL,CAAA,EAEFP,CACR,EAKA5F,EAAMoG,WAAa,CAOlBC,YAAa,SAAU3J,EAAMJ,GAE5B,IAAIgK,EAAkBrK,OAAOC,WAAWqK,UAAUC,MAAM9J,CAAI,EAGxD+J,GAFJnK,EAAUoK,OAAOJ,CAAe,EAEbhK,EAAUqK,KAAK,WAAW,GAC5CC,EAAQH,EAAaE,KAAK,mBAAmB,EAE9CF,EAAaI,KAAK,EAElBD,EAAME,GAAG,QAAS,SAAUC,GAC3BA,EAAEC,eAAe,EACjB1K,EAAUsJ,MAAM,CACjB,CAAC,CACF,EAOAqB,WAAY,SAAUvK,EAAMwK,GAqH3B,OADsBjL,OAAOC,WAAWqK,UAAUY,KAAKzK,CAAI,CAE5D,CACD,EAEA+C,EAAGO,MAAQ0C,EAAE0E,OAAO3H,EAAGO,OAAS,GAAIA,CAAK,CACzC,EAAEqH,iBAAiB,EACpB,SAAU5H,GACT,aAyFAA,EAAG6H,IAAM5E,EAAE0E,OAAO3H,EAAG6H,KAAO,GAvFlB,CACTC,KAAM,CAMLC,oBAAqB,SAAUC,EAAIC,GAClChF,EAAEiF,KAAK,CACNrE,IAAK,4BACLnB,KAAM,MACNyF,SAAU,OACVC,YAAa,kCACbC,QAAS,CACRC,OAAU,mBACVC,kBAAmBvI,EAAGwI,IACvB,EACAC,QAAST,EACTjI,MAAOkI,CACR,CAAC,CACF,EAKAS,4BAA6B,SAAUxC,EAAc8B,EAAIC,GACxDhF,EAAEiF,KAAK,CACNrE,IAAK,kCACLnB,KAAM,OACNyF,SAAU,OACVC,YAAa,kCACbC,QAAS,CACRC,OAAU,mBACVC,kBAAmBvI,EAAGwI,IACvB,EACAvL,KAAM0L,KAAKC,UAAU1C,CAAY,EACjCuC,QAAST,EACTjI,MAAOkI,CACR,CAAC,CACF,CACD,EACAY,IAAK,CAOJC,YAAa,SAAUC,EAAOf,EAAIC,GACjChF,EAAEiF,KAAK,CACNc,OAAQ,MACRnF,IAAK,sBAAwBkF,EAAQ,YACrCV,QAAS,CACRC,OAAU,mBACVC,kBAAmBvI,EAAGwI,IACvB,EACAC,QAAST,EACTjI,MAAOkI,CACR,CAAC,CACF,CACD,EACA9H,OAAQ,CAOP8I,uBAAwB,SAAU/C,EAAc8B,EAAIC,GAEnDhF,EAAEiF,KAAK,CACNrE,IAAK,sBACLnB,KAAM,OACNyF,SAAU,OACVC,YAAa,kCACbnL,KAAM0L,KAAKC,UAAU1C,CAAY,EACjCmC,QAAS,CACRC,OAAU,mBACVC,kBAAmBvI,EAAGwI,IACvB,EACAC,QAAST,EACTjI,MAAOkI,CACR,CAAC,CACF,CACD,CACD,CAEmC,CACnC,EAAEL,iBAAiB,EACpB,SAAU5H,GACT,aAEA,IAwEWkJ,EAyDNC,EAtCAC,EACMC,EACAC,EACAC,EA4ETC,EAsEAA,EAhPE3B,EAAM7H,EAAG6H,IA4IN,SAAS4B,IACmB5I,SAAS6I,cAAc,eAAe,EAAEC,UAAUtJ,MAAM,GAAG,EAAEc,QAAQ,wBAAwB,EACtG8B,EAAE,eAAe,EACjBA,EAAE,qBAAqB,EAAEiE,KAAK,KAAK,EAC/BjE,EAAE,SAAS,EAAE2G,IAAI,kBAAkB,CAYhE,CAxJU/I,SAASgJ,gBACfC,aAAa,iBAAkBC,UAAUC,SAAS,EAMvD/G,EAAE,SAAS,EAAEgH,KAAK,WACjBhH,EAAEiH,IAAI,EAAEhD,KAAK,sBAAsB,EAAE+C,KAAK,WAKzC,IAAIE,EAAKlH,EAAEiH,IAAI,EACdhM,EAAOiM,EAAGC,KAAK,MAAM,EACrBC,EAAQF,EAAGG,SAAS,4BAA8BpM,EAAO,IAAI,EAE1DmM,EAAMtJ,QACTsJ,EAAMzM,OAAO,EAAEqJ,OAAOoD,CAAK,CAE7B,CAAC,EAEDpH,EAAEiH,IAAI,EAAEhD,KAAK,cAAc,EAAEG,GAAG,QAAS,WAIxC,IAAIkD,EAAWtH,EAAEiH,IAAI,EAGpBM,GADGA,GADSN,KAAKO,OAAS,IAAIC,MAAM,MAAM,GAElCF,EAAMzJ,OAEN,EAEL4J,EAAQJ,EAAStN,KAAK,OAAO,EAC7B2N,EAAUL,EAASD,SAAS,yBAAyB,EAAEpD,KAAK,MAAM,EACzD2D,EAAYN,EAAStN,KAAK,WAAW,EACrC4N,GACAN,EAASD,SAAS,yBAAyB,EAAEpD,KAAK,0BAA0B,EAAE4D,OAAgBD,GAATL,CAAkB,EAIxGG,EAARH,GAECO,EAAUR,EAASS,IAAI,EAAE3K,MAAM,MAAOsK,CAAK,EAAErK,KAAK,GAAG,EAEzDiK,EAASS,IAAID,EAAU,GAAG,GAG1BH,EAAQ7I,KAAKyI,CAAK,CAEpB,CAAC,CACF,CAAC,EAEGvH,EAAE,MAAM,EAAEgI,GAAG,iBAAiB,IAC7BC,EAASjI,EAAE,MAAM,EAAEhG,KAAK,UAAU,KAEjCkO,EAAQlI,EAAE,iBAAmBiI,EAAS,GAAG,GACnCnK,QACTf,EAAGO,MAAMgF,SAAS4F,EAAO,IAAK,CAAC,EAAE,EAWhB,KADTjC,EAAQlJ,EAAGO,MAAMC,OAAOC,IAAI,kBAAkB,IAC/BwC,EAAEmI,UAAUlC,CAAK,EACzCjG,EAAE,wBAAwB,EAAElB,KAAKmH,CAAK,EAAE9B,KAAK,EAE7CS,EAAIC,KAAKC,oBAAoB,SAASmB,GACrClJ,EAAGO,MAAMC,OAAOY,IAAI,mBAAoB8H,EAAO,CAACzH,QAAS,EAAG4J,OAAQ,CAAA,CAAK,CAAC,EAC1EpI,EAAE,wBAAwB,EAAElB,KAAKmH,CAAK,EAAE9B,KAAK,CAC9C,EAAG,SAASrH,GAEXF,QAAQE,MAAM,8BAA+BA,CAAK,CACnD,CAAC,EASEqJ,EAAavI,SAAS6I,cAAc,6BAA6B,EAC3DL,EAAOxI,SAAS6I,cAAc,eAAe,EAC7CJ,EAAWrG,EAAE,qBAAqB,EAAEiE,KAAK,KAAK,EAC9CqC,EAAuD,QAAxCtG,EAAE,SAAS,EAAE2G,IAAI,kBAAkB,EAE5DR,EAAWkC,QAAU,SAAShE,GAC7BA,EAAEC,eAAe,EAEjB,IAAIgE,EAAUlC,EAAKM,UAAUtJ,MAAM,GAAG,EAClCS,EAAIyK,EAAQpK,QAAQ,wBAAwB,EAE5CqK,EAAiBpC,EAAWO,UAAUtJ,MAAM,GAAG,EAC/CoL,EAAID,EAAerK,QAAQ,sCAAsC,EAE5D,GAALL,GAEHyK,EAAQG,OAAO5K,EAAG,CAAC,EACnBuI,EAAKM,UAAY4B,EAAQjL,KAAK,GAAG,EAEjCkL,EAAeE,OAAOD,EAAG,CAAC,EACdrC,EAAWO,UAAY6B,EAAelL,KAAK,GAAG,EAE1CiJ,GAAgBtG,EAAEzG,MAAM,EAAEwJ,UAAU,GAAK,IAAW,GAALlF,GAC/CwI,EAASc,KAAK,MAAO,uBAAuB,IAI5DmB,EAAQ3G,KAAK,wBAAwB,EACrCyE,EAAKM,UAAY4B,EAAQjL,KAAK,GAAG,EAEjCkL,EAAe5G,KAAK,sCAAsC,EAC9CwE,EAAWO,UAAY6B,EAAelL,KAAK,GAAG,EAE9CgJ,EAASc,KAAK,MAAO,yBAAyB,EAE5D,EAKAnH,EAAEzG,MAAM,EAAEmP,OAAO,WACZxC,IAEHyC,aAAazC,CAAa,EAC1BA,EAAgB,MAEjBA,EAAgB0C,WAAWpC,EAAe,EAAE,CAC7C,CAAC,EAoBDA,EAAc,EAOwB,IAAlCxG,EAAE,mBAAmB,EAAElC,UAK1ByI,EADuBvG,EAAE,mCAAmC,EAC3BiE,KAAK,yBAAyB,GAEnDA,KAAK,yBAAyB,EAAEG,GAAG,QAC/C,SAASC,GAER,IAQMtB,EAkBD8F,EA1BDC,EAAQ9I,EAAEiH,IAAI,EAEd6B,EAAMC,SAAS,WAAW,GAAK,CAACD,EAAMC,SAAS,gCAAgC,IAElF1E,EAAEC,eAAe,GAGbuE,EAFU7I,EAAEA,EAAEiH,IAAI,EAAEE,KAAK,MAAM,CAAC,GAExBrJ,UACPiF,EAAY8F,EAAQlG,OAAO,EAAEC,IAEjC5C,EAAE,WAAW,EAAE8C,QAAQ,CACtBC,UAAWA,EAAY,IACxB,EACA,CACCiG,SAAU,IACVC,SAAU,WACT1P,OAAO0H,SAAS/F,KAAO2N,EAAQ1B,KAAK,IAAI,CACzC,CACD,CAAC,GAIC2B,EAAMC,SAAS,QAAQ,GAAK,CAACD,EAAMC,SAAS,gCAAgC,IAC/E1E,EAAEC,eAAe,EAEbwE,EAAQ9I,EAAEiH,IAAI,EACd4B,EAAU7I,EAAE8I,EAAM3B,KAAK,MAAM,CAAC,EAElCnH,EAAE,iCAAiC,EAAEkJ,YAAY,gCAAgC,EACjFJ,EAAMnO,OAAO,EAAEwO,SAAS,gCAAgC,EAExDnJ,EAAE,iCAAiC,EAAEkJ,YAAY,gCAAgC,EACjFJ,EAAMK,SAAS,gCAAgC,EAE/CnJ,EAAE,sBAAsB,EAAEkJ,YAAY,qBAAqB,EAC3DL,EAAQM,SAAS,qBAAqB,GAGnCL,EAAMC,SAAS,gCAAgC,IAClD1E,EAAEC,eAAe,EAEjBiC,EAAa6C,YAAY,kCAAkC,EAE7D,CAAC,EAEFpJ,EAAEpC,QAAQ,EAAEyL,QAAQ,SAAShF,GAEvBkC,EAAayB,GAAG3D,EAAEpH,MAAM,GAA2C,IAAtCsJ,EAAa+C,IAAIjF,EAAEpH,MAAM,EAAEa,QAExDyI,EAAawC,SAAS,kCAAkC,GAC3DxC,EAAa2C,YAAY,kCAAkC,CAG9D,CAAC,GAOyC,IAAtClJ,EAAE,uBAAuB,EAAElC,UAK9ByI,EADuBvG,EAAE,uBAAuB,EACfiE,KAAK,6BAA6B,GAEvDA,KAAK,yCAAyC,EAAEG,GAAG,QAC/D,SAAUC,GACTA,EAAEC,eAAe,EAELtE,EAAEiH,IAAI,EACDtM,OAAO,EAGxB4L,EAAa6C,YAAY,sCAAsC,CAChE,CAAC,EAEFpJ,EAAEpC,QAAQ,EAAEyL,QAAQ,SAAUhF,GAExBkC,EAAayB,GAAG3D,EAAEpH,MAAM,GAA2C,IAAtCsJ,EAAa+C,IAAIjF,EAAEpH,MAAM,EAAEa,QAExDyI,EAAawC,SAAS,sCAAsC,GAC/DxC,EAAa2C,YAAY,sCAAsC,CAGlE,CAAC,GAKDlJ,EAAE,6BAA6B,EAAEuJ,YAAY,CAK5CC,SAAU,CAAA,EAGVC,WAAY,cACZC,cAAe,wBACfC,gBAAiB,0BACjBC,cAAe,wBACfC,UAAW,oBACXC,YAAa,sBAEbC,OAAQ,WACP,IAAI7C,EAAKD,KAAK1E,SAEbwF,EAAMb,EAAGa,IAAI,EACb3M,EAAQ8L,EAAGlN,KAAK,OAAO,EACvBgQ,EAAS9C,EAAGlN,KAAK,QAAQ,EAa1B,GAXA4C,QAAQC,IAAImN,CAAM,EAEG,KAAA,IAAV5O,GAAkC,MAATA,GAA2B,KAAVA,IAPhD6L,KAQFgD,SAAS7O,CAAK,EACH,GAATA,GATA6L,KAUDiD,YAAY9O,CAAK,EAEpB8L,EAAGa,IAAI3M,CAAK,EACZ2M,EAAM3M,GAGH4O,EACH,IAAK,IAAIG,KAAKH,EACTA,EAAOjP,eAAeoP,CAAC,IACtBC,EAAKJ,EAAOG,IACTE,OAAStC,IACfA,EAAMqC,EAAGE,YAIFvC,GAAOd,KAAKsD,MACtBxC,EAAMd,KAAKsD,IAAM,KAGlBrD,EAAGG,SAAS,6BAA6B,EAAEmD,SAAS,MAAM,EAAEC,KAAK1C,CAAG,CACrE,EACA2C,QAAS,WACR,IAAIxD,EAAKD,KAAK1E,SACbwF,EAAMb,EAAGa,IAAI,EACbiC,EAAS9C,EAAGlN,KAAK,QAAQ,EAE1B,GAAIgQ,GACH,IAAK,IAAIW,KAAOX,EACf,GAAIA,EAAOjP,eAAe4P,CAAG,EAAG,CAC3BN,EAAQL,EAAOW,GACnB,GAAIN,EAAMA,OAAStC,EAAK,CACvBA,EAAMsC,EAAMC,MACZ,KACD,CACD,CACD,MACUvC,GAAOd,KAAKsD,MACtBxC,EAAMd,KAAKsD,IAAM,KAGlBrD,EAAGG,SAAS,6BAA6B,EAAEmD,SAAS,MAAM,EAAEC,KAAK1C,CAAG,CACrE,CACD,CAAC,CAGF,EAAEpD,iBAAiB,EACpB,SAAW3E,EAAGpD,EAASG,GAEnB,IAAI6H,EAAM7H,EAAG6H,IAEZgG,EAAmB,CAAA,EACtBC,EAAY,CAAA,EACZC,EAAW9K,EAAE,mCAAmC,EAChD+K,EAAU/K,EAAE,kCAAkC,EAC9CgL,EAAchL,EAAE,0BAA0B,EAGvC1C,EACQ,SAAS2N,GACnB,OAAIA,EACIA,EAAI7N,MAAM,GAAG,EAEd,EACR,EAGGpD,EAAO,CACVkR,UAAW,SAAUC,EAAMC,GACL,SAAjBC,EAA0BzK,GAE7B,IAAIG,GADJH,EAAMA,GAAO,IACG1C,QAAQ,GAAG,EAC3B,MAAc,CAAC,IAAX6C,EACIH,EAAII,OAAOD,CAAK,EAEjB,IACR,CAEA,OAAOsK,EAAeF,CAAI,IAAME,EAAeD,CAAI,CACpD,EACAE,kBAAmB,WAClB,IAAIC,EAASxO,EAAGwI,KAAKtH,UAAU,EAAG,CAAC,EAMnC,OAHCsN,EADa,MAAVA,EACM,KAGHA,CACR,EAOAC,aAAc,WAoBH,SAANhO,EAAeiO,EAAQhM,GAM1B,OALIiM,EAAO1J,EAAEyJ,CAAM,GAInBC,GAFCA,EADGjM,EACIiM,EAAKC,OAAO,CAAElM,KAAMA,CAAK,CAAC,EAE3BiM,GAAKE,IAAI5J,EAAE6J,SAAS,IAAI,CAAC,GACpBxO,KAAK,GAAG,CACrB,CA1BA,IAAIiB,EAAItE,EAAK8R,gBAAgB,EACzB3K,EAAS,GAKT4K,EAAS/J,EAAE,CAAC1D,EAAE8E,YAAa9E,EAAE0N,QAAS1N,EAAE6E,UAAU,EACpD8I,QAAQ,EACRN,OAAO,SAASO,GAAQ,MAAO,CAAC,CAACA,CAAM,CAAC,EACxCN,IAAI,SAASM,GACb,OAAIA,EACInP,EAAGO,MAAMsB,OAAOC,QAAQqN,EAAKjR,IAAI,EAElC,IACR,CAAC,EAAEuM,MAAM,EACG2E,EAASnK,EAAE1D,EAAE+E,QAAQ,EAAEuI,IAAI,SAAUM,GAAQ,OAAOnP,EAAGO,MAAMsB,OAAOC,QAAQqN,EAAKjO,UAAU,EAAG,EAAE,CAAC,CAAG,CAAC,EAAEuJ,MAAM,EACzH4E,EAAQpK,EAAEiK,QAAQ,CAACF,EAAQI,EAAO,EAClCE,EAAOrK,EAAE3E,KAAK+O,EAAO,GAAG,EAYrBhJ,EAAc5F,EAAIc,EAAE8E,YAAa,YAAY,EAS7CkJ,GARAlJ,GAAeA,EAAYtF,QAC9BqD,EAAOQ,KAAK,CACX1G,KAAM,IACNuM,MAAOpE,CACR,CAAC,EAIe5F,EAAIc,EAAE8E,YAAa,UAAU,GAS1CmJ,GARAD,GAAcA,EAAWxO,QAC5BqD,EAAOQ,KAAK,CACX1G,KAAM,MACNuM,MAAO8E,CACR,CAAC,EAIW9O,EAAIc,EAAE6E,UAAW,MAAM,GAShCqJ,GARAD,GAAUA,EAAOzO,QACpBqD,EAAOQ,KAAK,CACX1G,KAAM,OACNuM,MAAO+E,CACR,CAAC,EAIc/O,EAAIc,EAAE6E,UAAW,SAAS,GAStCsJ,GARAD,GAAaA,EAAU1O,QAC1BqD,EAAOQ,KAAK,CACX1G,KAAM,UACNuM,MAAOgF,CACR,CAAC,EAIahP,EAAIc,EAAE6E,UAAW,QAAQ,GAyDpCuJ,GAxDAD,GAAYA,EAAS3O,QACxBqD,EAAOQ,KAAK,CACX1G,KAAM,SACNuM,MAAOiF,CACR,CAAC,EAIEnO,EAAEkF,YACLrC,EAAOQ,KAAK,CACX1G,KAAM,KACNuM,MAAO,MACR,CAAC,EAIElJ,EAAEmF,cACLtC,EAAOQ,KAAK,CACX1G,KAAM,IACNuM,MAAO,MACR,CAAC,EAIElJ,EAAEgF,QAAQxF,SACTwF,EAAUtB,EAAE1D,EAAEgF,OAAO,EAAEjG,KAAK,GAAG,EACnC8D,EAAOQ,KAAK,CACX1G,KAAM,IACNuM,MAAOlE,CACR,CAAC,GAIEhF,EAAEiF,MAAMzF,SACPyF,EAAQvB,EAAE1D,EAAEiF,KAAK,EAAElG,KAAK,GAAG,EAC/B8D,EAAOQ,KAAK,CACX1G,KAAM,IACNuM,MAAOjE,CACR,CAAC,GAIEjF,EAAE+E,SAASvF,SACVuF,EAAWrB,EAAE1D,EAAE+E,QAAQ,EAAEhG,KAAK,GAAG,EACrC8D,EAAOQ,KAAK,CACX1G,KAAM,IACNuM,MAAOnE,CACR,CAAC,GAIFlC,EAAOQ,KAAK,CACX1G,KAAM,OACNuM,MAAOlJ,EAAEqO,IACV,CAAC,EAEkB,IAOf/L,GANgB,EAAhBO,EAAOrD,SACV4O,GAAgB,IAAM1K,EAAE3E,KAAK2E,EAAE4J,IAAIzK,EAAQ,SAASyL,GACnD,OAAOA,EAAM3R,KAAO,IAAM2R,EAAMpF,KACjC,CAAC,EAAG,GAAG,GAGEzK,EAAG8P,sBAKb,OAJIR,GAAQA,EAAKvO,SAChB8C,GAAOyL,GAGDzL,EAAM8L,CACd,EAOAZ,gBAAiB,WAChB,IAAIgB,EAAkB9M,EAAE,8BAA8B,EAAEhG,KAAK,SAAS,EAAEA,KAAK,EAEzEmJ,EAAY,GACfC,EAAc,GACdC,EAAW,GACXE,EAAQ,GACRD,EAAU,GACVE,EAAqD,QAAxCxD,EAAE,2BAA2B,EAAE+H,IAAI,EAChDtE,EAAyD,QAA1CzD,EAAE,6BAA6B,EAAE+H,IAAI,EAsCrD,OApCA/H,EAAEgH,KAAK8F,EACN,SAAUjP,EAAGqO,GACZ,IAAIa,EAAKb,EAAKa,GACVC,EAAaD,EAAG/L,OAAO,EAAG+L,EAAG7O,QAAQ,GAAG,CAAC,EAC5C+O,EAAWF,EAAG/L,OAAO+L,EAAG7O,QAAQ,GAAG,EAAI,CAAC,EAMzC,OAAQ8O,EAJHA,GACS,WAIb,IAAK,aACL,IAAK,WACJ5J,EAAYzB,KAAK,CAAElC,KAAQuN,EAAYD,GAAME,EAAUhS,KAAMiR,EAAKpN,IAAK,CAAC,EACxE,MACD,IAAK,OACL,IAAK,SACL,IAAK,UACJqE,EAAUxB,KAAK,CAAElC,KAAQuN,EAAYD,GAAME,EAAUhS,KAAMiR,EAAKpN,IAAK,CAAC,EACtE,MACD,QACCuE,EAAS1B,KAAKsL,CAAQ,CACxB,CACD,CAAC,EAGFjN,EAAE,2BAA2B,EAAEgH,KAAK,WACnC1D,EAAQ3B,KAAKsF,KAAKO,KAAK,CACxB,CAAC,EAGDxH,EAAE,yBAAyB,EAAEgH,KAAK,WACjCzD,EAAM5B,KAAKsF,KAAKO,KAAK,CACtB,CAAC,EAGM,CACNrE,UAAWA,EACXG,QAASA,EACTD,SAAUA,EACVE,MAAOA,EACPH,YAAaA,EACbI,WAAYA,EACZC,aAAcA,EACdkJ,KAAM,EACNO,SA9OS,EA+OV,CACD,EAQAC,uBAAwB,SAASvM,GAChCA,EAAMA,GAAOrH,OAAO0H,SAAS/D,OAC7B,IAAIiE,EAASpE,EAAGO,MAAMsD,IAAIC,iBAAiBD,CAAG,EAE1C+L,EAAOxL,EAAa,MAAK,EAC5BoL,EAASjP,EAAgB6D,EAAa,IAAC,EACvCsL,EAAWnP,EAAgB6D,EAAe,MAAC,EAC3CqL,EAAYlP,EAAgB6D,EAAgB,OAAC,EAC7CmL,EAAahP,EAAgB6D,EAAY,GAAC,EAC1CiC,EAAc9F,EAAgB6D,EAAU,CAAC,EACzCqC,EAA8B,SAAjBrC,EAAW,GACxBsC,EAA+B,SAAhBtC,EAAU,EACzBmC,EAAUhG,EAAgB6D,EAAU,CAAC,EACrCkC,EAAW/F,EAAgB6D,EAAU,CAAC,EACtCoC,EAAQjG,EAAgB6D,EAAU,CAAC,EAEhCgC,EAAY,GA2BZiK,GAxBJpL,EAAEqL,QAAQd,EAAQ,SAASe,GAC1BnK,EAAUxB,KAAK,CACdoL,GAAIO,EACJ7N,KAAM,MACP,CAAC,CACF,CAAC,EAGDuC,EAAEqL,QAAQb,EAAW,SAAUc,GAC9BnK,EAAUxB,KAAK,CACdoL,GAAIO,EACJ7N,KAAM,SACP,CAAC,CACF,CAAC,EAGDuC,EAAEqL,QAAQZ,EAAU,SAAUa,GAC7BnK,EAAUxB,KAAK,CACdoL,GAAIO,EACJ7N,KAAM,QACP,CAAC,CACF,CAAC,EAGW,IAeZ,OAdAuC,EAAEqL,QAAQf,EAAY,SAASiB,GAC9BH,EAAMzL,KAAK,CACVoL,GAAIQ,EACJ9N,KAAM,UACP,CAAC,CACF,CAAC,EAEDuC,EAAEqL,QAAQjK,EAAa,SAAUoK,GAChCJ,EAAMzL,KAAK,CACVoL,GAAIS,EACJ/N,KAAM,YACP,CAAC,CACF,CAAC,EAEM,CACN0D,UAAWA,EACXC,YAAagK,EACb/J,SAAUA,EACVsJ,KAAMA,EACNO,SAvTS,GAwTT1J,WAAYA,EACZC,aAAcA,EACdH,QAASA,EACTC,MAAOA,CACR,CACD,EAKAkK,wBAAyB,SAASxK,GAEjC,IAAIyK,EAAU3Q,EAAG4Q,UAAUC,sBAY3B,OAVG3K,EAAaO,WACfkK,EAAU3Q,EAAG4Q,UAAUE,iBACf5K,EAAaQ,aACrBiK,EAAU3Q,EAAG4Q,UAAUG,mBAC8B,CAAC,IAA9C7K,EAAaK,QAAQpF,QAAQ,UAAU,GAAyD,CAAC,IAA9C+E,EAAaK,QAAQpF,QAAQ,UAAU,EAClGwP,EAAU3Q,EAAG4Q,UAAUI,mBAC8B,CAAC,IAA9C9K,EAAaK,QAAQpF,QAAQ,UAAU,GAAyD,CAAC,IAA9C+E,EAAaK,QAAQpF,QAAQ,UAAU,IAClGwP,EAAU3Q,EAAG4Q,UAAUK,oBAGjBN,CACR,CACD,EAEIvL,EAMY,SAAU8D,GACX,MAATA,GAA0B,IAATA,GAAgBjG,EAAEmI,UAAUlC,CAAK,GAOrDlJ,EAAGO,MAAMC,OAAOY,IAAI,mBAAoB8H,EAAO,CAAEzH,QAAS,EAAG4J,OAAQ,CAAA,CAAK,CAAC,EAC3EpI,EAAE,wBAAwB,EAAElB,KAAKmH,CAAK,EAAE9B,KAAK,GAP7CS,EAAIC,KAAKC,oBAAoB,SAAUmB,GACtClJ,EAAGO,MAAMC,OAAOY,IAAI,mBAAoB8H,EAAO,CAAEzH,QAAS,EAAG4J,OAAQ,CAAA,CAAK,CAAC,EAC3EpI,EAAE,wBAAwB,EAAElB,KAAKmH,CAAK,EAAE9B,KAAK,CAC9C,EAAG,SAAUrH,IAAU,CAMzB,EAjBGqF,EAmBE,WACJ,IAAI8L,EAAYjU,EAAKwR,aAAa,EACvBxR,EAAKkR,UAAU+C,EAAW1U,OAAO0H,SAAS/D,MAAM,IAG1DgR,QAAQC,UAAU,GAAI,gBAAiBF,CAAS,EAChDG,EAAQC,0BAA4C,CAAA,CAAI,GAEzDD,EAAQlR,OAAO,CAChB,EA5BGiF,EA8BM,WACJ0I,GAAaD,GAEhBwD,EAAQC,0BAA4C,CAAA,CAAI,CAE1D,EAGGC,EAIU,SAASC,GACrB,IAAIC,EAASxO,EAAE,kBAAkB,EAAEyO,KAAK,EACvCC,EAAU1O,EAAE,mBAAmB,EAAEyO,KAAK,EACtCE,EAAQ3O,EAAE,iBAAiB,EAAEyO,KAAK,EAGZ,IAAnBF,EAAKK,WACR5O,EAAE,mBAAmB,EAAE6O,WAAW,OAAO,EACzC7O,EAAE,aAAa,EAAE8O,OAAO,IAGxB9O,EAAE,aAAa,EAAEyO,KAAK,EAGvBD,EAAOvK,KAAK,WAAW,EAAEnF,KAAKyP,EAAKQ,UAAU,EACtB,MAAnBR,EAAKQ,YACRP,EAAOvK,KAAK,WAAW,EAAEnF,KAAKyP,EAAKS,qBAAqB,EAEzDR,EAAOM,OAAO,EAES,EAAnBP,EAAKU,cACRP,EAAQzK,KAAK,WAAW,EAAEnF,KAAKyP,EAAKU,WAAW,EAC/CP,EAAQI,OAAO,GAGhBH,EAAM1K,KAAK,WAAW,EAAEnF,KAAKyP,EAAKK,SAAS,EAC3CD,EAAMG,OAAO,EAEb9O,EAAE,mBAAmB,EAAE6O,WAAW,OAAO,EAC1C,EAjCGP,EAwCM,SAAStU,GACjB8Q,EAAS5H,MAAM,EAGf4H,EAAS9G,OAAOjH,EAAGO,MAAMoG,WAAWa,WAAWvK,EAA6B,CAAA,CAAI,CAAC,EAEhFgG,EAAE,YAAY,EAAEoE,GAAI,QAAS,SAASC,GACrCA,EAAEC,eAAe,EACjB/K,OAAO0H,SAASQ,KAAKzB,EAAEqE,EAAEpH,MAAM,EAAEjD,KAAK,KAAK,CAC5C,CAAC,CACH,EAlDGsU,EA2DS,SAASY,EAAUvC,EAAMO,GACpC,IAAItM,EAAMrH,OAAO0H,SAASkO,SACzBC,EAAYC,KAAKC,KAAKJ,EAAWhC,CAAQ,EACzCqC,EAAQ,GAELhO,EAAOxE,EAAGO,MAAMsD,IAAIC,iBAAiB,EAGrC2O,GAFJjO,EAAW,KAAIoL,EAEH3K,EAAE3E,KAAK2E,EAAE4J,IAAI5J,EAAEyN,KAAKlO,CAAI,EAAG,SAAUoJ,GAChD,MAAY,SAARA,EACI,QAEDA,EAAM,IAAMpJ,EAAKoJ,EACzB,CAAC,EAAG,GAAG,GAEH6E,IACH5O,GAAO,IAAM4O,GAGd,IAAK,IAAI3R,EAAI,EAAGA,EAAIuR,EAAY,EAAGvR,CAAC,GAEnC0R,EAAM5N,KAAK,CAAEf,IAAKA,EAAM/C,EAAG6R,MAAO7R,EAAG8R,OADvB9R,GAAK8O,CACiC,CAAC,EAGtC,EAAZyC,GAECQ,EAAWrW,OAAOC,WAAWqK,UAAUgM,WAAWN,CAAK,EAC3DvP,EAAE,0BAA0B,EAAEyK,KAAKmF,CAAQ,GAE3C5P,EAAE,0BAA0B,EAAEkD,MAAM,CAEtC,EAGG4M,EAAO,CAIVC,gBAAiB,WACkB,IAA9B/P,EAAE,eAAe,EAAElC,SAIvBkC,EAAE,sDAAsD,EAAEoE,GAAG,QAC5D,SAAUC,GACTA,EAAEC,eAAe,EAEjBtE,EAAE,qBAAqB,EAAEoJ,YAAY,8BAA8B,CACpE,CAAC,EAEFpJ,EAAE,4DAA4D,EAAEoE,GAAG,QAClE,SAAUC,GACTA,EAAEC,eAAe,EAEjBtE,EAAE,qBAAqB,EAAEoJ,YAAY,8BAA8B,CACpE,CAAC,EACH,EAMA4G,iBAAkB,SAAUC,GAC3B,IAAIC,EAAU,GACb/M,EAAY,CACX4J,GAAI,EACJjO,KAAM/B,EAAG4Q,UAAU1M,SACnBuJ,SAAU,EACX,EACApH,EAAc,CACb2J,GAAI,EACJjO,KAAM/B,EAAG4Q,UAAUwC,WACnB3F,SAAU,EACX,EAiDG4F,GA9CJpQ,EAAEgH,KAAKiJ,EAAU,SAAUtF,EAAKnD,GACnB,cAARmD,IACHnD,EAAQxF,EAAEqO,OAAO7I,EAAOxF,EAAE6J,SAAS,MAAM,CAAC,EAC1C7L,EAAEgH,KAAKQ,EAAO,SAAU3J,EAAGoD,GAC1BkC,EAAUqH,SAAS7I,KAAK,CACvBoL,GAAI9L,EAASxB,KAAO,IAAMwB,EAAS8L,GACnCjO,KAAMmC,EAAShG,IAChB,CAAC,CACF,CAAC,GAEU,gBAAR0P,IACHnD,EAAQxF,EAAEqO,OAAO7I,EAAOxF,EAAE6J,SAAS,MAAM,CAAC,EAC1C7L,EAAEgH,KAAKQ,EAAO,SAAU3J,EAAGsS,GAC1B/M,EAAYoH,SAAS7I,KAAK,CACzBoL,GAAIoD,EAAW1Q,KAAO,IAAM0Q,EAAWpD,GACvCjO,KAAMqR,EAAWlV,IAClB,CAAC,CACF,CAAC,EAEH,CAAC,EAGDiV,EAAQvO,KAAKyB,CAAW,EACxB8M,EAAQvO,KAAKwB,CAAS,EAGtBnD,EAAE,mBAAmB,EAAEsQ,OAAO,WAC7BnO,EAAW,CACZ,CAAC,EAGDnC,EAAE,iBAAiB,EAAEsQ,OAAO,WAC3BnO,EAAW,CACZ,CAAC,EAGDnC,EAAE,mBAAmB,EAAEsQ,OAAO,WAC7BnO,EAAW,CACZ,CAAC,EAGDnC,EAAE,qBAAqB,EAAEsQ,OAAO,WAC/BnO,EAAW,CACZ,CAAC,EAGcnC,EAAE,8BAA8B,GAC/CoQ,EAASG,QAAQ,CAChBC,YAAazT,EAAG4Q,UAAU8C,gBAC1BzW,KAAMkW,EACNQ,KAAM,CAAA,EACNC,mBAAoB,EACpBC,SAAU5W,EAAKsR,kBAAkB,EACrBuF,QAAS,SAAUrB,EAAOxV,GAEtB,IAAI8W,EAAOtB,EAAMsB,KAAK7R,YAAY,EAC9B8R,EAAS/O,EAAEgP,UAAUhX,CAAI,EAMzBiX,GALJF,EAAOvG,SAAWxI,EAAE2J,OAAOoF,EAAOvG,SAAU,SAAU0G,GAClD,MAAkD,CAAC,IAA5CA,EAAMpS,KAAKG,YAAY,EAAEf,QAAQ4S,CAAI,CAChD,CAAC,EAG2B9O,EAAE2J,OAAOoF,EAAOvG,SAAU,SAAU0G,GAC5D,OAAOA,EAAMpS,KAAKG,YAAY,IAAM6R,CACxC,CAAC,GAKD,OAJqC,IAAjCG,EAAsBnT,SACtBiT,EAAOvG,SAAWyG,GAGjBF,EAAOvG,SAAS1M,QAMU,IAA3BiT,EAAOvG,SAAS1M,QAAgBiT,EAAOvG,SAAS,GAAG1L,KAAKG,YAAY,IAAM6R,IAC1EC,EAAOvG,SAAS,GAAG1L,KAAO0Q,EAAMsB,MAE7BC,GARI,IAS3B,EACAI,OAAQ,SAAUC,GACjB,IACI5B,EADOY,EAASpW,KAAK,SAAS,EACjBqX,UAAUC,QAAQvJ,IAAI,EAEnCwJ,EAAWvP,EAAE2J,OAAOyF,EACvB,SAAUlF,GACT,OAAgC,KAAA,IAAlBA,EAAK1B,QACpB,CAAC,EAwCF,OArCAxI,EAAEqL,QAAQkE,EACT,SAAUrF,GACTA,EAAK1B,SAAWxI,EAAEwP,QAAQtF,EAAK1B,SAC9B,CAEC,SAAU0G,GACT,OAAa,MAAT1B,EACI0B,EAAMpS,KAMC,IAHFoS,EAAMpS,KAAKG,YAAY,EAAEf,QAAQsR,EAAMvQ,YAAY,CAAC,EAIzD,EAED,CACR,EAGA,SAAUiS,GACT,OAAa,MAAT1B,EACI0B,EAAMpS,KAIPoS,EAAMpS,KAAKhB,MACnB,EAGA,SAAUoT,GAET,OAAOA,EAAMpS,IACd,EACA,CACH,CAAC,EAEKsS,CACR,CACD,CAAC,EACAhN,GAAG,SAAU,SAAUxE,EAAO6R,GACX,KAAA,IAARA,GAA8B,MAAPA,GAAgBA,EAAIC,eACrDvP,EAAW,CAEb,CAAC,CACF,EAKAwP,eAAgB,SAAUC,GACwB,IAA7C5R,EAAE,8BAA8B,EAAElC,OACrCkC,EAAE,4BAA4B,EAAElB,KAAK/B,EAAG4Q,UAAUC,qBAAqB,GAIxE5N,EAAEiF,KAAK,CACNrE,IAAK,+BACLnB,KAAM,MACNyF,SAAU,OACVC,YAAa,kCACbC,QAAS,CACRC,OAAU,mBACVC,kBAAmBvI,EAAGwI,IACvB,EACAC,QAAS,SAASxL,GACjB8V,EAAKE,iBAAiBhW,CAAI,EAC1B4Q,EAAmB,CAAA,EACnBzI,EAAe,EAEIyP,GACAxD,EAAQlR,OAAO,EAGlC8C,EAAE,8BAA8B,EAAEhG,KAAK,SAAS,EAAE6X,MAAM,CACzD,EACA/U,MAAO,WAEN,IAAIgH,EAAQ,CACXgO,OAAQ,SACRhT,KAAM/B,EAAG4Q,UAAUoE,aACpB,EAEInY,EAAYoG,EAAE,wBAAwB,EAC1CjD,EAAGO,MAAMoG,WAAWC,YAAYG,EAAOlK,CAAS,CACjD,CACD,CAAC,EAGDoG,EAAE,WACD6K,EAAY,CAAA,EACZ1I,EAAe,CAChB,CAAC,EACF,CACD,EAEIiM,EAAU,CAObC,0BAA2B,SAAmBqD,GAC7C,IAAInB,EAAUvQ,EAAE,8BAA8B,EAC1CgS,EAAkB,GACrBC,EAAYjY,EAAKmT,uBAAuB,EAqCrC+E,GAhCJlS,EAAEiS,EAAU9O,SAAS,EAAE6D,KAAK,SAASnJ,EAAGqO,GACvC8F,EAAgBrQ,KAAKuK,EAAKzM,KAAO,IAAMyM,EAAKa,EAAE,CAC/C,CAAC,EAED/M,EAAEiS,EAAU7O,WAAW,EAAE4D,KAAK,SAASnJ,EAAGqO,GACzC8F,EAAgBrQ,KAAKuK,EAAKzM,KAAO,IAAMyM,EAAKa,EAAE,CAC/C,CAAC,EAE0B,OAAvBkF,EAAU5O,UAA4C,KAAvB4O,EAAU5O,WAE5CA,GAAWA,EADI4O,EAAU5O,SAAW,IAChBjG,MAAM,GAAG,EAE7B4C,EAAEqD,CAAQ,EAAE2D,KAAK,SAASnJ,EAAGqO,GAC5B,IAQMiG,EARO,KAATjG,IACHA,EAAOkG,UAAUlG,CAAI,EAGjBqE,EAAQtM,KAAK,iBAAmBiI,EAAO,IAAI,EAAEpO,SAI5CqU,EAAc,IAAIE,OAAOnG,EAAMA,EAAM,CAAA,EAAM,CAAA,CAAI,EACnDqE,EAAQvM,OAAOmO,CAAW,GAI3BH,EAAgBrQ,KAAKuK,CAAI,EAE3B,CAAC,GAI4D,CAAC,IAA9ClK,EAAE9D,QAAQ+T,EAAU3O,QAAS,UAAU,GAGpDgP,GAFJtS,EAAE,iBAAiB,EAAEuS,KAAK,UAAWL,CAAU,EAEe,CAAC,IAA9ClQ,EAAE9D,QAAQ+T,EAAU3O,QAAS,UAAU,GAIpDkP,GAHJxS,EAAE,iBAAiB,EAAEuS,KAAK,UAAWD,CAAU,EAGmB,CAAC,IAA/CtQ,EAAE9D,QAAQ+T,EAAU1O,MAAO,aAAa,GAGxDkP,GAFJzS,EAAE,kBAAkB,EAAEuS,KAAK,UAAWC,CAAa,EAES,CAAC,IAA5CxQ,EAAE9D,QAAQ+T,EAAU1O,MAAO,UAAU,GACtDvD,EAAE,eAAe,EAAEuS,KAAK,UAAWE,CAAU,EAG7CzS,EAAE,WAAW,EAAEmH,KAAK,UAAW8K,EAAUzO,UAAU,EAGnDxD,EAAE,aAAa,EAAEmH,KAAK,UAAW8K,EAAUxO,YAAY,EAEpDwO,CAAAA,EAAUzO,YAAcyO,CAAAA,EAAUxO,cAChCzD,EAAE,qBAAqB,EAAE+I,SAAS,8BAA8B,GACnE/I,EAAE,qBAAqB,EAAEmJ,SAAS,8BAA8B,EAIlEoH,EAAQxI,IAAIiK,CAAe,EAC3BzB,EAAQmC,QAAQ,SAAU,CAAEhB,cAAeA,CAAc,CAAC,CAC3D,EAKAxU,OAAQ,WACP,IAAIyV,EAAK3Y,EAAKmT,uBAAuB,EACrCiB,EAAQwE,YAAYD,CAAE,CACvB,EAEAE,cAAe,KAKfD,YAAa,SAAU3P,GAGtB8H,EAAQ5G,KAAK,EACb2G,EAAS2D,KAAK,EACdzD,EAAYyD,KAAK,EAEbL,EAAQyE,gBACXzE,EAAQyE,cAAcC,MAAM,EAC5B1E,EAAQyE,cAAgB,MAGzBzE,EAAQyE,cAAgB7S,EAAEiF,KAAK,CAC9BrE,IAAK,sBACLnB,KAAM,OACNyF,SAAU,OACVC,YAAa,kCACbnL,KAAM0L,KAAKC,UAAU1C,CAAY,EACjCmC,QAAS,CACRC,OAAU,mBACVC,kBAAmBvI,EAAGwI,IACvB,EACAC,QAAS,SAAUuN,GAClB,IAAIC,EAAgBD,EAAS/Y,KAE7BoU,EAAQyE,cAAgB,KAExB9H,EAAQ0D,KAAK,EACb3D,EAAS3G,KAAK,EACd6G,EAAY7G,KAAK,EAGjBmK,EAAmByE,EAASxE,IAAI,EAGhCD,EAAkByE,EAASxE,KAAKK,UAAW3L,EAAa0J,KAAM1J,EAAaiK,QAAQ,EAEnFoB,EAAe0E,CAAa,EAGvBjW,EAAGO,MAAM0F,oBAAoBC,CAAY,GAmB7Cd,EAAqB4Q,EAASxE,KAAKQ,UAAU,EAE7C/O,EAAE,4BAA4B,EAAElB,KAAK/B,EAAG4Q,UAAUC,qBAAqB,EACvE5N,EAAE,2BAA2B,EAAElB,KAAK/B,EAAG4Q,UAAUsF,yBAAyB,IApBtEC,EAAgBlZ,EAAKyT,wBAAwBxK,CAAY,EAGzDjD,EAAE,4BAA4B,GAA8C,EAAzCA,EAAE,4BAA4B,EAAElC,QAAckC,EAAE,4BAA4B,EAAElC,QAAU,IACzGoV,GAAiB,MAAQlT,EAAE,4BAA4B,EAAE4L,IAAI,WAKzD,OAJoB3E,KAAKyI,KAKlD,CAAC,EAAElS,IAAI,EACNH,KAAK,GAAG,GAGV2C,EAAE,4BAA4B,EAAElB,KAAKoU,CAAa,EAClDlT,EAAE,2BAA2B,EAAElB,KAAK/B,EAAG4Q,UAAUwF,0BAA0B,EAO7E,EACArW,MAAO,SAAUsW,GAEhB,IAYIxZ,EAZa,IAAbwZ,EAAEtB,OACLlV,EAAQC,IAAI,gCAAgC,GAI7CD,EAAQC,IAAI,iDAAkDuW,CAAC,EAG3DtP,EAAQ,CACXgO,OAAQ,SACRhT,KAAM/B,EAAG4Q,UAAUoE,aACpB,EACInY,EAAYoG,EAAE,wBAAwB,EAC1CjD,EAAGO,MAAMoG,WAAWC,YAAYG,EAAOlK,CAAS,EACjD,CACD,CAAC,CACF,CACD,EAiCAoG,EAAEpC,QAAQ,EAAEyV,MAAM,WAoBX,IACQpN,EAlBkB,EAA5BjG,EAAE,eAAe,EAAElC,UA5BvBwB,EAFevC,EAAGO,MAAM+B,OAAOC,UAEtB/F,OAAQ,WAAY,SAAUqG,GACtChD,EAAQC,IAAI,WAAY+C,CAAK,EAE7BwO,EAAQC,0BAA0B,CAAA,CAAI,EACtCD,EAAQlR,OAAO,CAChB,CAAC,EA0BS4S,EAAK6B,eAAe,CAAA,CAAK,EACzB5G,EAAQ0D,KAAK,EAEtB1R,EAAGO,MAAMuC,OAAOC,2BAA2B,EAE3CgQ,EAAKC,gBAAgB,GAIuB,EAAnC/P,EAAE,sBAAsB,EAAElC,SAC1BlB,EAAQC,IAAI,uBAAuB,EA7BvCmD,EAAE,sBAAsB,EAAEsT,MAAM,WACxBtT,EAAEiH,IAAI,EAAEe,GAAG,UAAU,EACrBhI,EAAE,uBAAuB,EAAE6O,WAAW,UAAU,EAGhD7O,EAAE,uBAAuB,EAAEmH,KAAK,WAAY,EAAE,CAEtD,CAAC,GA0BmC,EAAhCnH,EAAE,mBAAmB,EAAElC,SAEV,KADTmI,EAAQlJ,EAAGO,MAAMC,OAAOC,IAAI,kBAAkB,IAC/BwC,EAAEmI,UAAUlC,CAAK,EAChCjG,EAAE,6BAA6B,EAAEuT,QAAQtN,EAAQ,GAAG,EAEpDrB,EAAIC,KAAKC,oBAAoB,SAAUmB,GAClDlJ,EAAGO,MAAMC,OAAOY,IAAI,mBAAoB8H,EAAO,CAAEzH,QAAS,EAAG4J,OAAQ,CAAA,CAAK,CAAC,EAC5DpI,EAAE,6BAA6B,EAAEuT,QAAQtN,EAAQ,GAAG,CACxD,EAAG,SAAUnJ,IAAU,EAGtC,CAAC,CACD,EAAEvD,OAAOia,OAAQja,OAAOqD,QAASrD,OAAOoL,iBAAiB,EAC1D,SAAW3E,EAAGpD,EAASG,GAGtB,IAAIkG,EAAe,CAClBE,UAAW,GACXG,QAAS,GACTD,SAAU,GACVE,MAAO,GACPH,YAAa,GACbI,WAAY,CAAA,EACZC,aAAc,CAAA,EACdgQ,UAAW,EACX9G,KAAM,EACNO,SAAU,CACX,EAMI5L,EAAavE,EAAGO,MAAMsD,IAAIU,WAC1BoS,EAAmB3W,EAAG6H,IAAI1H,OAAO8I,uBACjC2N,EAAa5W,EAAGO,MAAMuC,OAAOC,2BA+B7B8T,EAAgB,SAAU5Z,EAAM6Z,GACnC,IAAIja,EAAYoG,EAAE,IAAM6T,CAAW,EAClCC,EAAY,GAWTlQ,GARJhK,EAAUqK,KAAK,YAAY,EAAEwK,KAAK,EAG7BqF,GAFLA,EAAYla,EAAUI,KAAK,QAAQ,IAGtB+C,EAAG8P,qBAIM9P,EAAGO,MAAMoG,WAAWa,WAAWvK,EAV/B,CAAA,CAUuD,GAGzE+Z,EAAqBna,EAAUqK,KAAK,0BAA0B,EAClE8P,EAAmBtJ,KAAK7G,CAAe,EAEnCmQ,EAAmBjW,SAClBiW,EAAmBhL,SAAS,mBAAmB,GAClDgL,EAAmB7T,MAAM,SAAS,EAEnC6T,EAAmB/P,OAAO,4DAA8D8P,EAAY,qEAAuE/W,EAAG4Q,UAAUqG,QAAU,UAAU,GAG7ML,EAAW,CACZ,EAMIM,EAA+B,SAAUC,GAiB5C,IAqBKC,EAoBSC,EAxDdnR,EAAaE,UAAY,GACzBF,EAAaG,YAAc,GAEjB8Q,EAAgB,IAChBjR,EAAaK,QAAU,CAAC4Q,EAAgB,IAExCA,EAAgB,IAChBjR,EAAaM,MAAQ,CAAC2Q,EAAgB,IAEtCA,EAAgB,IAChBjR,EAAaI,SAAW,CAAC6Q,EAAgB,IAK/CA,EAAmB,OAClBC,EAAgBD,EAAmB,KAAE9W,MAAM,GAAG,EAClD4C,EAAEmU,CAAa,EAAEnN,KAAK,SAAUnJ,EAAGqO,GAClCjJ,EAAaE,UAAUxB,KAAK,CAC3BlC,KAAM,OACNsN,GAAIb,CACL,CAAC,CACF,CAAC,GAGEgI,EAAqB,SACpBC,EAAgBD,EAAqB,OAAE9W,MAAM,GAAG,EACpD4C,EAAEmU,CAAa,EAAEnN,KAAK,SAAUnJ,EAAGqO,GAClCjJ,EAAaE,UAAUxB,KAAK,CAC3BlC,KAAM,SACNsN,GAAIb,CACL,CAAC,CACF,CAAC,GAGEgI,EAAsB,UACrBC,EAAgBD,EAAsB,QAAE9W,MAAM,GAAG,EACrD4C,EAAEmU,CAAa,EAAEnN,KAAK,SAAUnJ,EAAGqO,GAClCjJ,EAAaE,UAAUxB,KAAK,CAC3BlC,KAAM,UACNsN,GAAIb,CACL,CAAC,CACF,CAAC,GAGEgI,EAAgB,IACfE,EAAmBF,EAAgB,EAAE9W,MAAM,GAAG,EAClD4C,EAAEoU,CAAgB,EAAEpN,KAAK,SAAUnJ,EAAGqO,GACrCjJ,EAAaG,YAAYzB,KAAK,CAC7BlC,KAAM,aACNsN,GAAIb,CACL,CAAC,CACF,CAAC,GAGQgI,EAAkB,MACdE,EAAmBF,EAAkB,IAAE9W,MAAM,GAAG,EACpD4C,EAAEoU,CAAgB,EAAEpN,KAAK,SAAUnJ,EAAGqO,GAClCjJ,EAAaG,YAAYzB,KAAK,CAC1BlC,KAAM,WACNsN,GAAIb,CACR,CAAC,CACL,CAAC,GAGPgI,EAAgB,IACnBjR,EAAaQ,aAAe,CAAA,GAGzByQ,EAAiB,KACpBjR,EAAaO,WAAa,CAAA,EAE5B,EA+CAxD,EAAEpC,QAAQ,EAAEyV,MATD,WAENrT,EAAE,gBAAgB,EAAElC,QAhCxBkC,EAAE,gBAAgB,EAAEgH,KAAK,SAAUnJ,EAAGqO,GAErC,IAAIP,EAAS3L,EAAEkM,CAAI,EAAElS,KAAK,QAAQ,EAC9B6Z,EAAc7T,EAAEkM,CAAI,EAAE/E,KAAK,IAAI,EAE/BwE,IACCuI,EAAe5S,EAAWqK,CAAM,EAGpCsI,EAA6BC,CAAY,GAI1CR,EAAiBzQ,EAChB,SAAU8P,GACL/Y,EAAO+Y,EAAS/Y,KACLgG,EAAE,IAAM6T,CAAW,EAAE5P,KAAK,YAAY,EAAEE,KAAK,EAC7CyP,EAAc5Z,EAAM6Z,CAAW,CAC/C,EAAG,SAAU/W,GACZF,EAAQE,MAAM,4CAA6CA,CAAK,CAOlE,CAAC,CACF,CAAC,CAWF,CACsB,CACtB,EAAEvD,OAAOia,OAAQja,OAAOqD,QAASrD,OAAOoL,kBAAmBpL,OAAO2G,KAAK,EACxE,WACC,IAAIpG,EACa,SAASua,GACxB,OAAOA,EAAUrT,OAAO,EAAGqT,EAAUC,YAAY,GAAG,EAAI,CAAC,CAC1D,EAGEtU,EAAEuU,UAAUC,YAAY,CACpBC,OAAQ,CAAC,iCACb,CAAC,EAGJzU,EAAEuU,UAAUG,UAAU,aACrB,SAAUlN,EAAOmN,EAASxT,GAErBkT,EAAYva,EAAuB6a,EAAQ1Z,IAAI,EAAIkG,EAAkB,UACrEyT,EAAM5U,EAAE,UAAYqU,EAAY,IAAI,EAExC,GAAIO,EAAI9W,QAAU,CAAC8W,EAAI5M,GAAG,WAAW,EAAG,CAEvC,IAAI6M,EAAe1T,EAAqB,aAEpCsK,EAAS,GAYb,GAXAmJ,EAAI5N,KAAK,WACR,IAAI8B,EAAQ9I,EAAEiH,IAAI,EACd6B,EAAMd,GAAG,iBAAiB,GACzBc,CAAAA,EAAMd,GAAG,UAAU,GAIvByD,EAAO9J,KAAKsF,KAAKO,KAAK,CAExB,CAAC,EAEGiE,EAAO3N,OAGV,IAAK,IAAIgX,KAAMrJ,EACd,GAAIA,EAAO1Q,eAAe+Z,CAAE,EAAG,CAC9B,IAESC,EAFLhN,EAAM0D,EAAOqJ,GAEjB,IAASC,KAAOF,EACf,GAAIA,EAAa9Z,eAAega,CAAG,EAAG,CACrC,IAAIC,EAAcH,EAAaE,GAC/B,GAAIC,EAAc,IAAMjN,EAAM,KAER,KAAA,IAAVP,GAAkC,MAATA,GAA0B,IAATA,GACpD,MAAO,CAAA,CAGV,CAEF,CAGH,CAEA,MAAO,CAAA,CACR,CAAC,EAEFxH,EAAEuU,UAAUU,YAAYC,SAASC,IAAI,aACpC,CACC,eACA,aAED,SAAUjF,GACT,IAAIkF,EAAelF,EAAQ/O,OAAqB,aAChDiU,EAAe1P,KAAK2P,MAAMD,CAAY,EACjCpV,EAAEsV,QAAQF,CAAY,IAC1BA,EAAe,CAACA,IAEjBlF,EAAQ/O,OAAqB,aAAIiU,EAEjClF,EAAQqF,MAAkB,WAAIrF,EAAQ/O,OACtC+O,EAAQsF,SAAqB,WAAItF,EAAQuF,OAC1C,CAAC,CACF,EAAE,EACH,SAAenY,EAAOiI,EAAMmQ,GAC3B,aAGA,IAAIC,EAAK,CACRzN,MAAO,KACP6C,QAAS,KACT6K,SAAU,KACV9F,KAAM,SAAU8F,GACfD,EAAGC,SAAWA,EACdD,EAAGzN,MAAQ0N,EAAS3R,KAAK,MAAM,EAC/B0R,EAAG5K,QAAU4K,EAAGC,SAASC,QAAQ,oBAAoB,EAAErL,SAAS,YAAY,EAI5E,IAAIsL,EAAYxY,EAAMsD,IAAIU,WAAW,EACjCqU,CAAAA,EAAGC,SAAS5N,GAAG,eAAe,GAAgC,SAA3B8N,EAAU,cAChDxY,EAAMgF,SAASqT,EAAGC,SAASC,QAAQ,oBAAoB,CAAC,EAGzD7V,EAAE,6BAA6B,EAAEoE,GAAG,QACnC,WACC9G,EAAMgF,SAAStC,EAAE,oBAAoB,CAAC,CACvC,CAAC,EAEG2V,EAAGzN,MAAMpK,QAWd6X,EAAGzN,MAAMf,KAAK,UAAW,qBAAqB,EAI9CwO,EAAGzN,MAAMjE,KAAK,sBAAsB,EAAEG,GAAG,SAAU,WAClD,IAAI2R,EAAW/V,EAAEiH,IAAI,EAAEjN,KAAK,UAAU,EAClCgc,EAAgBhW,EAAE,IAAM+V,CAAQ,EAChC1O,EAAWrH,EAAEiH,IAAI,EAAE4O,QAAQ,uBAAuB,EAAE5R,KAAK,sBAAsB,EAC/EgS,EAAe,EAGnBjW,EAAEgH,KAAKK,EAAU,WAChB,IAAI6O,EAAUlW,EAAEiH,IAAI,EAEfiP,EAAQlc,KAAK,UAAU,GAAK+b,GAAaG,EAAQlO,GAAG,UAAU,GAClEiO,CAAY,EAEd,CAAC,EAEmB,GAAhBA,EACHD,EAAc7M,SAAS,yBAAyB,GAEhD6M,EAAc9M,YAAY,yBAAyB,EACnD8M,EAAc/R,KAAK,OAAO,EAAEsO,KAAK,UAAW,CAAA,CAAK,EAEnD,CAAC,EAAEvL,KAAK,WACPhH,EAAEiH,IAAI,EAAEkP,eAAe,QAAQ,CACvB,CAAC,EAEDR,EAAGzN,MAAMjE,KAAK,sBAAsB,EAAEG,GAAG,SAAU,WAC/C,IAAI2R,EAAW/V,EAAEiH,IAAI,EAAEjN,KAAK,UAAU,EAClCgc,EAAgBhW,EAAE,IAAM+V,CAAQ,EAEhB,EAAhB/V,EAAEiH,IAAI,EAAEc,IAAI,EACZiO,EAAc7M,SAAS,yBAAyB,EAGhD6M,EAAc9M,YAAY,yBAAyB,CAE3D,CAAC,EAAElC,KAAK,WACJhH,EAAEiH,IAAI,EAAEkP,eAAe,QAAQ,CACnC,CAAC,EAEDR,EAAGzN,MAAMjE,KAAK,qBAAqB,EAAEG,GAAG,SAAU,WAC9C,IAAI0E,EAAQ9I,EAAEiH,IAAI,EACdmP,EAAYtN,EAAMzB,SAAS,YAAY,EACvCgP,EAAYvN,EAAMzB,SAAS,YAAY,EAEzB,EAAdyB,EAAMf,IAAI,GACVqO,EAAUrO,IAAI,MAAM,EACpBsO,EAAUtO,IAAIe,EAAMf,IAAI,CAAC,IAGzBqO,EAAUrO,IAAI,OAAO,EACrBsO,EAAUtO,IAAI,EAAE,EAExB,CAAC,EAGV4N,EAAGzN,MAAMjE,KAAK,kCAAkC,EAAEG,GAAG,SAAU,WAC9D,IAAI2R,EAAW/V,EAAEiH,IAAI,EAAEjN,KAAK,UAAU,EAClCgc,EAAgBhW,EAAE,IAAM+V,CAAQ,EAEhC/V,EAAEiH,IAAI,EAAEe,GAAG,UAAU,EACxBgO,EAAc7M,SAAS,yBAAyB,GAEhD6M,EAAc9M,YAAY,yBAAyB,EACnD8M,EAAc/R,KAAK,OAAO,EAAEsO,KAAK,UAAW,CAAA,CAAK,EAE1C,CAAC,EAAE4D,eAAe,QAAQ,EAG1BR,EAAGzN,MAAMjE,KAAK,0BAA0B,EAAEG,GAAG,QAAS,WAClDpE,EAAEiH,IAAI,EAAEwH,KAAK,EACbzO,EAAE,qBAAqB,EAAE+H,IAAI,MAAM,EACnC4N,EAAGzN,MAAMjE,KAAK,2BAA2B,EAAEE,KAAK,CACpD,CAAC,GAENmS,EAAeX,EAAGzN,MAAMjE,KAAK,kBAAkB,GACtCsM,QAAQ,CACnBI,mBAAoB,EACpB4F,cAAe,CAAA,EACf/F,YAAa8F,EAAanP,KAAK,aAAa,EAC5CqP,iBAAkB,6BAClBvR,KAAM,CACLzC,MAAO,IACP5B,IAAK,8BACLwE,QAAS,CACRE,kBAAmBX,kBAAkBY,IACtC,EACAvL,KAAM,SAASmH,GACd,IAAIqO,EAAQxP,EAAE0E,OAAO,GAAIvD,CAAM,EAS/B,OARAnB,EAAE0E,OAAO8K,EACR,CACCA,MAAOrO,EAAO2P,KACdnE,KAAMxL,EAAOwL,MAAQ,CACtB,CAAC,EAEF,OAAO6C,EAAMiH,MACb,OAAOjH,EAAMsB,KACNtB,CACR,EACAkH,eAAgB,SAAS1c,EAAMmH,GAE1BwV,EAAM3U,EAAE4J,IAAI5R,EACf,SAASkS,GACR,MAAO,CACNa,GAAIb,EAAKa,GACTjO,KAAMoN,EAAKjR,IACZ,CACD,CAAC,EAOF,MAAO,CACN2b,QANK5U,EAAE2J,OAAOgL,EACd,SAASzK,GACR,MAAsE,CAAC,IAAhEA,EAAKpN,KAAKG,YAAY,EAAEf,QAAQiD,EAAO2P,KAAK7R,YAAY,CAAC,CACjE,CAAC,EAID4Q,WAAY,CACXgH,KAAM,CAAA,CACP,CACD,CACD,CACD,CACD,CAAC,EACAzS,GAAG,iBACH,SAASC,GACJyS,EAAOzS,EAAElD,OAAOnH,KAChB8c,EACH9W,EAAE,WAAW,EAAE+H,IAAI+O,EAAKhY,IAAI,EAE5BkB,EAAE,WAAW,EAAE+H,IAAI,IAAI,CAEzB,CAAC,EACD3D,GAAG,SACH,WAC+B,KAAA,IAAnBuR,EAAGzN,MAAM6O,OACuC,EAAtD/U,EAAEyN,KAAKkG,EAAGzN,MAAMlO,KAAK,WAAW,EAAEgd,SAAS,EAAElZ,QAChD6X,EAAGzN,MAAM6O,MAAM,CAGP,CAAC,GAEDE,EAAkBtB,EAAGzN,MAAMjE,KAAK,qBAAqB,GACzCsM,QAAQ,CACpBI,mBAAoB,EACpB4F,cAAe,CAAA,EACf/F,YAAayG,EAAgB9P,KAAK,aAAa,EAC/CqP,iBAAkB,6BAClBvR,KAAM,CACFzC,MAAO,IACP5B,IAAK,iCACLwE,QAAS,CACLE,kBAAmBX,kBAAkBY,IACzC,EACAvL,KAAM,SAAUmH,GACZ,IAAIqO,EAAQxP,EAAE0E,OAAO,GAAIvD,CAAM,EAS/B,OARAnB,EAAE0E,OAAO8K,EACL,CACIA,MAAOrO,EAAO2P,KACdnE,KAAMxL,EAAOwL,MAAQ,CACzB,CAAC,EAEL,OAAO6C,EAAMiH,MACb,OAAOjH,EAAMsB,KACNtB,CACX,EACAkH,eAAgB,SAAU1c,EAAMmH,GAExBwV,EAAM3U,EAAE4J,IAAI5R,EACZ,SAAUkS,GACN,MAAO,CACHa,GAAIb,EAAKa,GACTjO,KAAMoN,EAAKjR,IACf,CACJ,CAAC,EAOL,MAAO,CACH2b,QANE5U,EAAE2J,OAAOgL,EACX,SAAUzK,GACN,MAAsE,CAAC,IAAhEA,EAAKpN,KAAKG,YAAY,EAAEf,QAAQiD,EAAO2P,KAAK7R,YAAY,CAAC,CACpE,CAAC,EAID4Q,WAAY,CACRgH,KAAM,CAAA,CACV,CACJ,CACJ,CACJ,CACJ,CAAC,EACIzS,GAAG,iBACA,SAAUC,GACF6S,EAAU7S,EAAElD,OAAOnH,KACnBkd,EACAlX,EAAE,cAAc,EAAE+H,IAAImP,EAAQpY,IAAI,EAElCkB,EAAE,cAAc,EAAE+H,IAAI,IAAI,GAGb,EAAbmP,EAAQnK,IACR/M,EAAE,0BAA0B,EAAEyO,KAAK,EACnCzO,EAAE,2BAA2B,EAAEmE,KAAK,EACpCnE,EAAE,SAAS,EAAE+H,IAAI,IAAI,EACrB/H,EAAE,iBAAiB,EAAE+H,IAAI,IAAI,EAC7B/H,EAAE,SAAS,EAAEuV,MAAM,MAAO,CAAE4B,SAAU,CAAA,CAAM,CAAC,EAC7CnX,EAAE,eAAe,IAGjBA,EAAE,2BAA2B,EAAEyO,KAAK,EACpCzO,EAAE,0BAA0B,EAAEmE,KAAK,EACnCnE,EAAE,eAAe,EAAE+H,IAAI,IAAI,EAC3B/H,EAAE,eAAe,EAAEuV,MAAM,MAAO,CAAE4B,SAAU,CAAA,CAAM,CAAC,EACnDnX,EAAE,SAAS,IAPQuV,MAAM,MAAO,CAAE4B,SAAU,CAAA,CAAK,CAAC,CAS1D,CAAC,EACJ/S,GAAG,SACA,WACkC,KAAA,IAAnBuR,EAAGzN,MAAM6O,OAC0C,EAAtD/U,EAAEyN,KAAKkG,EAAGzN,MAAMlO,KAAK,WAAW,EAAEgd,SAAS,EAAElZ,QAC7C6X,EAAGzN,MAAM6O,MAAM,CAG3B,CAAC,EAElBpB,EAAGzN,MAAMjE,KAAK,YAAY,EAAEG,GAAG,SAAU,WACxC,IAiBKgT,EAjBDtO,EAAQ9I,EAAEiH,IAAI,EACdO,EAAQsB,EAAMf,IAAI,EAClBsP,EAAY7P,EAAM8M,YAAY,IAAI,EAClCgD,EAAW9P,EAAMvJ,UAAUoZ,EAAY,CAAC,EACxCE,EAASzO,EAAMzB,SAAS,QAAQ,EAEpCkQ,EAAO9M,KAAK6M,CAAQ,EACpBC,EAAOpO,SAAS,yBAAyB,EAE5B,GAAT3B,IACH+P,EAAO9M,KAAK8M,EAAOpQ,KAAK,aAAa,CAAC,EAEtCoQ,EAAOrO,YAAY,yBAAyB,GAIzC3P,OAAOie,aACNJ,EAA2B,EAE/BpX,EAAE,YAAY,EAAEgH,KAAM,SAASnJ,EAAGqO,GACT,EAApBA,EAAKuL,MAAM3Z,SACdsZ,GAA4B,EAAI/H,KAAKC,KAAKpD,EAAKuL,MAAM,GAAGC,KAAO,CAAG,EAEpE,CAAC,EAEGN,EAA2B1B,EAAOiC,oBAEnBJ,EAAOpO,SAAS,oBAAoB,EACtDoO,EAAOrO,YAAY,yBAAyB,EAG1BjC,KAAKO,MAAQ,GACb+P,EAAOzY,KAAKyY,EAAOpQ,KAAK,aAAa,CAAC,EAGxDnH,EAAE,oBAAoB,EAAEmE,KAAK,IAG7BoT,EAAOrO,YAAY,oBAAoB,EACvClJ,EAAE,oBAAoB,EAAEyO,KAAK,GAIhC,CAAC,EAAEzH,KAAK,WACPhH,EAAEiH,IAAI,EAAEkP,eAAe,QAAQ,CAChC,CAAC,EAEDR,EAAGzN,MAAMjE,KAAK,gBAAgB,EAAE+C,KAAK,WACxB,IAAIpI,EAASoB,EAAEiH,IAAI,EAAEjN,KAAK,QAAQ,EAC9B4d,EAAc5X,EAAEiH,IAAI,EAAEjN,KAAK,aAAa,GAAK,IAAIuE,KACrDyB,EAAEiH,IAAI,EAAE4Q,WAAW,CACfjH,SAAUrL,EACVuS,SAAU,CAAA,EACVlZ,OAAQA,EACRmZ,UAAW,EACXC,KAAMJ,CACV,CAAC,CACL,CAAC,EAGVjC,EAAGzN,MAAMjE,KAAK,gBAAgB,EAAE+C,KAAK,WAEpC,IAAIiR,EAAMjY,EAAEiH,IAAI,EACZiR,EAAKD,EAAIje,KAAK,YAAY,EAC1Bke,GAAMjR,KAAKO,OACd0Q,EAAGC,QAAQ,IAAI5Z,KAAK0I,KAAKO,KAAK,CAAC,EAIhCyQ,EAAItd,OAAO,EAAEsJ,KAAK,iBAAiB,EAAEG,GAAG,SAAU,WAE7C,CADKpE,EAAEiH,IAAI,EACPe,GAAG,UAAU,GAAKkQ,GACzBD,EAAIlQ,IAAI,EAAE,CAEZ,CAAC,CACF,CAAC,EAED4N,EAAGzN,MAAMjE,KAAK,kCAAkC,EAAEG,GAAG,QAAS,WAC7DpE,EAAE,gBAAgB,EAAEoY,WAAW,GAAG,CACnC,CAAC,EAEDzC,EAAGzN,MAAMjE,KAAK,iBAAiB,EAAEoU,YAAY,CAC5CC,YAAa,SAAU7M,GAEL,EADPxE,KAAK1E,SAASwF,IAAI,EACpBjK,QACPkC,EAAE,wBAAwB,EAAEmE,KAAK,EAElCnE,EAAE,gBAAgB,EAAEuY,QAAQ,GAAG,CAChC,EACAC,cAAe,SAAU/M,GAEL,IADTxE,KAAK1E,SAASwF,IAAI,EACpBjK,QACPkC,EAAE,wBAAwB,EAAEyO,KAAK,CAEnC,EACAgK,gBAAiBzY,EAAE,0BAA0B,CAC9C,CAAC,EAED2V,EAAG+C,OAAOjK,KAAK,GA/UVkH,EAAGC,SAAS9X,SACf6X,EAAGC,SAASzR,KAAK,EACjBwR,EAAG5K,QAAQ0D,KAAK,EA8UnB,EACAiK,OAAQ,CACPvU,KAAM,WACLwR,EAAG5K,QAAQ5G,KAAK,EAChBwR,EAAGC,SAASnH,KAAK,CAClB,EACAA,KAAM,WACLkH,EAAG5K,QAAQ0D,KAAK,EAChBkH,EAAGC,SAASzR,KAAK,CAClB,CACD,EACArH,MAAO,WACN6Y,EAAG5K,QAAQ0D,KAAK,EAChBkH,EAAGzN,MAAMyQ,QAAQ,oBAAoB,EAAElK,KAAK,CAE7C,CACD,EAEAkH,EAAG7F,KAAK9P,EAAE,6BAA6B,CAAC,CACxC,GAAE2E,kBAAkBC,IAAKD,kBAAkBrH,OAAOqH,kBAAkBY,KAAMZ,kBAAkB+Q,MAAM"}