1/*! For license information please see tutorial.4b5752675459006b4b6e.js.LICENSE.txt */ 2var tutorial; 3 4(function() { 5var __webpack_modules__ = { 6225: function(e) { 7function t(e) { 8let t = document.createElement("div"), n = getComputedStyle(e); 9return t.style.width = e.offsetWidth + "px", t.style.marginLeft = n.marginLeft, 10t.style.marginRight = n.marginRight, t.style.position = n.position, t.style.height = e.offsetHeight + "px", 11t.style.marginBottom = n.marginBottom, t.style.marginTop = n.marginTop, t; 12} 13e.exports = function() { 14let e = document.querySelectorAll("[data-sticky]"); 15for (let n = 0; n < e.length; n++) { 16let r = e[n], i = r.dataset.sticky ? JSON.parse(r.dataset.sticky) : {}, o = i.bottomLimit ? document.querySelector(i.bottomLimit) : null, s = i.container ? document.querySelector(i.container) : document.body, a = !i.minWidth || document.documentElement.clientWidth > i.minWidth; 17if (r.placeholder) (r.placeholder.getBoundingClientRect().top > 0 || !a) && (r.style.cssText = "", 18r.classList.remove("sticky"), r.placeholder.parentNode.insertBefore(r, r.placeholder), 19r.placeholder.remove(), r.placeholder = null); else if (r.placeholder && o) o.getBoundingClientRect().top <= r.offsetHeight ? ("fixed" == r.style.position && (r.style.top = window.pageYOffset + "px"), 20r.style.position = "absolute") : (r.style.position = "fixed", r.style.top = 0); else if (r.getBoundingClientRect().top < 0 && a) { 21if (r.style.cssText) return; 22let e, n; 23i.saveRight ? n = document.documentElement.clientWidth - r.getBoundingClientRect().right : e = r.getBoundingClientRect().left; 24let o = i.noPlaceholder ? document.createElement("div") : t(r), a = r.offsetWidth; 25r.after(o), s.appendChild(r), r.classList.add("sticky"), r.style.position = "fixed", 26r.style.top = 0, i.saveRight ? r.style.right = n + "px" : r.style.left = e + "px", 27r.style.zIndex = 101, r.style.background = "white", r.style.margin = 0, r.style.width = a + "px", 28r.placeholder = o; 29} 30} 31}; 32}, 33467: function(e, t, n) { 34let r = n(4596); 35e.exports = function() { 36window.consoleLogNative = window.console.log.bind(console), console.log = function(...e) { 37consoleLogNative(...e); 38let t = { 39type: "console-log", 40log: r(e), 41codeBoxId: window.__codeBoxId 42}; 43window.postMessage(t, "*"); 44}, window.addEventListener("message", ({source: e, data: t}) => { 45if (e != window && e == window.parent) return; 46if ("console-log" != t.type) return; 47let n = document.getElementById(t.codeBoxId); 48n && n.codeBox.consoleLog(t.log); 49}); 50}; 51}, 52773: function(e, t, n) { 53"use strict"; 54const r = new (n(8679))("en"); 55let i = console.error; 56function o(e) { 57if (!r.hasPhrase(s, e)) { 58!1 && i("No such phrase", e); 59} 60return r.t(s, ...arguments); 61} 62e.exports = o; 63const s = n(9907).lang; 64"en" !== s && r.setFallback(s, "en"), r.add = (...e) => (e = e.map(e => e.__esModule ? e.default : e), 65r.addPhrase(s, ...e)), o.i18n = r; 66}, 67820: function(e, t, n) { 68let r = n(7746), i = n(8849), o = []; 69t.iframe = function(e) { 70r.async(e, function(t, n) { 71n && (e.style.height = n + "px"); 72}); 73}, t.codeTabs = function(e) { 74function t() { 75let t = e.closest(".code-tabs"), n = (e.closest("[data-code-tabs-content]"), t.querySelector("[data-code-tabs-switches]")); 76n.firstElementChild.offsetWidth > n.offsetWidth ? t.classList.add("code-tabs_scroll") : t.classList.remove("code-tabs_scroll"); 77} 78t(), o.push(t); 79}, window.addEventListener("resize", i(function() { 80o.forEach(e => e()); 81}, 200)); 82}, 83937: function(e, t, n) { 84var r = n(2983), i = Object.prototype, o = i.hasOwnProperty, s = i.toString, a = r ? r.toStringTag : void 0; 85e.exports = function(e) { 86var t = o.call(e, a), n = e[a]; 87try { 88e[a] = void 0; 89var r = !0; 90} catch (e) {} 91var i = s.call(e); 92return r && (t ? e[a] = n : delete e[a]), i; 93}; 94}, 951113: function(e, t) { 96!function(e) { 97var t = /(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/; 98e.languages.css = { 99comment: /\/\*[\s\S]*?\*\//, 100atrule: { 101pattern: RegExp("@[\\w-](?:" + /[^;{\s"']|\s+(?!\s)/.source + "|" + t.source + ")*?" + /(?:;|(?=\s*\{))/.source), 102inside: { 103rule: /^@[\w-]+/, 104"selector-function-argument": { 105pattern: /(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]
105*\))*\))+(?=\s*\))/, 106lookbehind: !0, 107alias: "selector" 108}, 109keyword: { 110pattern: /(^|[^\w-])(?:and|not|only|or)(?![\w-])/, 111lookbehind: !0 112} 113} 114}, 115url: { 116pattern: RegExp("\\burl\\((?:" + t.source + "|" + /(?:[^\\\r\n()"']|\\[\s\S])*/.source + ")\\)", "i"), 117greedy: !0, 118inside: { 119function: /^url/i, 120punctuation: /^\(|\)$/, 121string: { 122pattern: RegExp("^" + t.source + "$"), 123alias: "url" 124} 125} 126}, 127selector: { 128pattern: RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|" + t.source + ")*(?=\\s*\\{)"), 129lookbehind: !0 130}, 131string: { 132pattern: t, 133greedy: !0 134}, 135property: { 136pattern: /(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i, 137lookbehind: !0 138}, 139important: /!important\b/i, 140function: { 141pattern: /(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i, 142lookbehind: !0 143}, 144punctuation: /[(){};:,]/ 145}, e.languages.css.atrule.inside.rest = e.languages.css; 146var n = e.languages.markup; 147n && (n.tag.addInlined("style", "css"), n.tag.addAttribute("style", "css")); 148}(Prism); 149}, 1501328: function(e, t, n) { 151let r = n(820), i = n(6970), o = n(8060); 152n(9516); 153const s = n(9907); 154let a = n(4596); 155const l = n(773), c = n(9907).lang; 156l.i18n.add("prism", n(3692)("./" + c + ".yml")), e.exports = function(e) { 157let t, n = e.querySelector("pre"), c = Array.from(n.childNodes).find(e => "CODE" === e.tagName), u = c.textContent; 158e.codeBox = this; 159let d = u; 160e.hasAttribute("data-async") && (d = `(async () => {\n${u}\n})()`), Prism.highlightElement(c); 161let p = o(n.innerHTML); 162n.insertAdjacentHTML("afterBegin", p); 163let h = JSON.parse(e.getAttribute("data-highlight")); 164h && function(e, t) { 165let n = e.innerHTML, r = n.split(/\n/); 166for (let e of t) if (void 0 !== e.end) r[e.start] = '<em class="block-highlight">' + r[e.start], 167r[e.end] += "</em>"; else { 168let t = r[e.start], n = e.cols, i = !1, o = -1, s = ""; 169for (let e = 0; e < t.length; e++) { 170if ("<" == t[e] && (i = !0), i) s += t[e]; else { 171if (o++, n.find(e => e.start == o) && (s += '<em class="inline-highlight">'), s += t[e], 172"&" == t[e]) { 173let n = [ "lt;", "gt;", "amp;", "quot;" ]; 174for (let r of n) t.slice(e + 1, e + 1 + r.length) == r && (e += r.length, s += r); 175} 176n.find(e => e.end == o + 1) && (s += "</em>"); 177} 178">" == t[e] && (i = !1); 179} 180r[e.start] = s; 181} 182e.innerHTML = r.join("\n"); 183}(c, h); 184let f, m, g, E = n.classList.contains("language-javascript"), b = n.classList.contains("language-markup"), T = +e.getAttribute("data-trusted"), v = !+e.getAttribute("data-no-strict") && E ? '"use strict";' : "", S = `globalThis.__codeBoxId = "${e.id}";`, _ = `${v}\n\n${d}`; 185d = `${v}${S}\n\n${d}`; 186let y = !0; 187if (!E && !b) return; 188let A = e.querySelector('[data-action="run"]'); 189A && (A.onclick = function() { 190return this.blur(), R(), !1; 191}); 192let w = e.querySelector('[data-action="edit"]'); 193function L() { 194let e = f.contentWindow; 195"function" == typeof e.postMessage ? e.postMessage(d, s.lookatCodeUrlBase + "/showjs") : alert("Sorry, your browser is too old"); 196} 197function I() { 198if (e.hasAttribute("data-global")) { 199m || (m = document.createElement("iframe"), m.className = "js-frame", m.style.width = 0, 200m.style.height = 0, m.style.border = "none", m.name = "js-global-frame", document.body.appendChild(m)); 201let t = document.createElement("form"); 202t.style.display = "none", t.method = "POST", t.enctype = "multipart/form-data", 203t.action = s.lookatCodeUrlBase + "/showhtml", t.target = "js-global-frame"; 204let n = e.hasAttribute("data-module") ? ' type="module"' : "", r = document.createElement("textarea"); 205r.name = "code", r.value = O(`<script${n}>\n${d}\n<\/script>`), t.appendChild(r), 206m.parentNode.insertBefore(t, m.nextSibling), t.submit(), t.remove(); 207} else if (T) { 208if (e.hasAttribute("data-autorun") || e.hasAttribute("data-module")) return void function(e) { 209let t = document.createElement("script"); 210t.type = "module", t.text = e, document.head.append(t), t.remove(); 211}(d); 212try { 213window.eval.call(window, d); 214} catch (e) { 215alert(e.constructor.name + ": " + e.message); 216} 217} else e.hasAttribute("data-refresh") && f && (f.remove(), f = null), f ? L() : (f = document.createElement("iframe"), 218f.className = "js-frame", f.src = s.lookatCodeUrlBase + "/showjs", f.style.width = 0,
219f.style.height = 0, f.style.border = "none", f.onload = function() { 220L(); 221}, document.body.appendChild(f)); 222} 223function O(e) { 224if (e.match(/^\s*<!doctype/i)) return e; 225let t = e; 226return e.match(/<body/i) || (t = `<body>\n${t}\n</body>`), t = "<!doctype html>\n" + t, 227t; 228} 229function R() { 230t && (t.remove(), t = null), E ? I() : function() { 231let t; 232if (g && e.hasAttribute("data-refresh") && (g.remove(), g = null), g || (g = e.querySelector(".code-result")), 233g) t = g.querySelector("iframe"); else { 234if (g = document.createElement("div"), g.className = "code-result code-example__result", 235t = document.createElement("iframe"), t.name = e.id, t.className = "code-result__iframe", 236"0" === e.getAttribute("data-demo-height")) g.style.display = "none"; else if (e.hasAttribute("data-demo-height")) { 237let n = +e.getAttribute("data-demo-height"); 238t.style.height = n + "px"; 239} 240g.appendChild(t), e.appendChild(g); 241} 242if (T && !t.hasCustomConsoleLog) { 243t.hasCustomConsoleLog = !0; 244let n = t.contentWindow.console.log.bind(t.contentWindow.console); 245t.contentWindow.console.log = function(...t) { 246n(...t); 247let r = a(t); 248window.postMessage({ 249type: "console-log", 250log: r, 251codeBoxId: e.id 252}, "*"); 253}; 254} 255if (T) { 256let n = t.contentDocument || t.contentWindow.document; 257n.open(), n.write(O(u)), n.close(), e.hasAttribute("data-demo-height") || r.iframe(t), 258y && e.hasAttribute("data-autorun") || i(g) || g.scrollIntoView(!1); 259} else { 260let n = document.createElement("form"); 261n.style.display = "none", n.method = "POST", n.enctype = "multipart/form-data", 262n.action = s.lookatCodeUrlBase + "/showhtml", n.target = t.name; 263let o = document.createElement("textarea"); 264o.name = "code"; 265let a = O(u); 266a.includes("console.log") && (a = a.replace(/<head>|<body>/im, "$&__LOOKATCODE_SCRIPT__")), 267o.value = a, n.appendChild(o), t.parentNode.insertBefore(n, t.nextSibling), n.submit(), 268n.remove(), y && e.hasAttribute("data-autorun") || (t.onload = function() { 269e.hasAttribute("data-demo-height") || r.iframe(t), i(g) || g.scrollIntoView(!1); 270}); 271} 272}(), y = !1; 273} 274w && (w.onclick = function() { 275return this.blur(), function() { 276let e; 277e = b ? O(u) : `<!DOCTYPE html>\n<script>\n${_}\n<\/script>`; 278let t = document.createElement("form"); 279t.action = "https://plnkr.co/edit/?p=preview", t.method = "POST", t.target = "_blank", 280document.body.appendChild(t); 281let n = document.createElement("textarea"); 282n.name = "files[index.html]", n.value = e, t.appendChild(n); 283let r = document.createElement("input"); 284r.name = "description", r.value = "Fork from " + window.location, t.appendChild(r), 285t.submit(), t.remove(); 286}(), !1; 287}), e.hasAttribute("data-autorun") && ("epub" == window.ebookType && "no-epub" == e.getAttribute("data-autorun") ? e.querySelector("iframe").remove() : setTimeout(R, 100)), 288this.consoleLog = function(n) { 289if (!t) { 290t = document.createElement("div"), t.className = "codebox__output", e.append(t); 291let n = document.createElement("div"); 292n.className = "codebox__output-label", n.innerHTML = l("prism.output"), t.append(n); 293} 294let r = document.createElement("div"); 295r.className = "codebox__output-line", r.innerHTML = n, t.append(r); 296}; 297}; 298}, 2991486: function(e, t, n) { 300var r = n(6339); 301e.exports = function() { 302return r.Date.now(); 303}; 304}, 3051495: function(e, t, n) { 306let r = n(5345), i = n(4629); 307const o = n(9907).lang, s = n(773); 308s.i18n.add("", n(3205)("./" + o + ".yml")), s.i18n.add("error.network", n(6188)("./" + o + ".yml")), 309document.addEventListener("xhrfail", function(e) { 310new r.Error(e.reason); 311}), e.exports = function(e) { 312let t = new XMLHttpRequest, n = e.method || "GET", r = e.body, o = e.url; 313t.open(n, o, !e.sync), t.method = n; 314let a = i(); 315a && !e.skipCsrf && t.setRequestHeader("X-XSRF-TOKEN", a), e.responseType && (t.responseType = e.responseType), 316"[object Object]" == {}.toString.call(r) && (t.setRequestHeader("Content-Type", "application/json;charset=UTF-8"),
317r = JSON.stringify(r)), e.noDocumentEvents || (t.addEventListener("loadstart", e => { 318t.timeStart = Date.now(); 319let n = c("xhrstart", e); 320document.dispatchEvent(n); 321}), t.addEventListener("loadend", e => { 322let t = c("xhrend", e); 323document.dispatchEvent(t); 324}), t.addEventListener("success", e => { 325let t = c("xhrsuccess", e); 326t.result = e.result, document.dispatchEvent(t); 327}), t.addEventListener("fail", e => { 328let t = c("xhrfail", e); 329t.reason = e.reason, document.dispatchEvent(t); 330})), e.raw || t.setRequestHeader("Accept", "application/json"), t.setRequestHeader("X-Requested-With", "XMLHttpRequest"); 331let l = e.normalStatuses || [ 200 ]; 332function c(e, t) { 333let n = new CustomEvent(e); 334return n.originalEvent = t, n; 335} 336function u(e, n) { 337let r = c("fail", n); 338r.reason = e, t.dispatchEvent(r); 339} 340return t.addEventListener("error", e => { 341u(s("error.network.server_connection_error"), e); 342}), t.addEventListener("timeout", e => { 343u(s("error.network.server_request_timeout"), e); 344}), t.addEventListener("abort", e => { 345u(s("error.network.request_aborted"), e); 346}), t.addEventListener("load", n => { 347if (!t.status) return void u(s("error.network.no_response"), n); 348let r = e.responseType && "text" !== e.responseType ? t.response : t.responseText; 349if ((t.getResponseHeader("Content-Type") || "").match(/^application\/json/) || e.json) try { 350r = JSON.parse(r); 351} catch (n) { 352return void u(s("error.network.invalid_format"), n); 353} 354if (!l.includes(t.status)) { 355return void u(r.info ? s("error.network.server_error_info", { 356status: t.status, 357info: r.info 358}) : s("error.network.server_error", { 359status: t.status 360}), n); 361} 362!function(e, n) { 363let r = c("success", n); 364r.result = e, t.dispatchEvent(r); 365}(r, n); 366}), setTimeout(function() { 367t.send(r); 368}), t; 369}; 370}, 3711552: function(e, t, n) { 372var r = n(9006), i = n(3667), o = n(6516), s = /^[-+]0x[0-9a-f]+$/i, a = /^0b[01]+$/i, l = /^0o[0-7]+$/i, c = parseInt; 373e.exports = function(e) { 374if ("number" == typeof e) return e; 375if (o(e)) return NaN; 376if (i(e)) { 377var t = "function" == typeof e.valueOf ? e.valueOf() : e; 378e = i(t) ? t + "" : t; 379} 380if ("string" != typeof e) return 0 === e ? e : +e; 381e = r(e); 382var n = a.test(e); 383return n || l.test(e) ? c(e.slice(2), n ? 2 : 8) : s.test(e) ? NaN : +e; 384}; 385}, 3861623: function(e, t, n) { 387let r = n(7200); 388e.exports = class { 389constructor(e) { 390this.slider = e.el, this.list = this.slider.querySelector("ul"), e.class && (this.classList = e.class.split(" ")), 391this.disabled = !1, this.init(), this.bindHandlers(); 392} 393init() { 394this.classList && this.classList.length && this.slider.classList.add(...this.classList), 395this.slider.classList.add("slider_disable-left"); 396const e = document.createElement("div"); 397e.classList.add("slider__container"), e.appendChild(this.list), this.slider.innerHTML = '<button class="slider__arrow slider__arrow_left"></button><button class="slider__arrow slider__arrow_right"></button>', 398this.slider.appendChild(e), this.innerWidth = this.countInnerWidth(), this.arrowLeft = this.slider.querySelector(".slider__arrow_left"), 399this.arrowRight = this.slider.querySelector(".slider__arrow_right"); 400} 401countInnerWidth() { 402return [ ...this.list.querySelectorAll("li") ].reduce((e, t) => { 403const n = window.getComputedStyle(t); 404return e + (t.offsetWidth + parseFloat(n.marginLeft) + parseFloat(n.marginRight)); 405}, 0); 406} 407bindHandlers() { 408this.transformX = 0, this.arrowLeft.addEventListener("click", () => { 409this.transformX -= this.list.clientWidth, this.transformX < 0 && (this.transformX = 0), 410this.render(); 411}), this.arrowRight.addEventListener("click", () => { 412this.transformX = Math.min(this.transformX + this.list.clientWidth, this.list.scrollWidth - this.list.clientWidth), 413this.render(); 414}), window.addEventListener("resize", r(() => { 415this.onResize(); 416}, 200)), this.onResize(); 417} 418onResize() { 419!this.disabled && this.innerWidth <= this.list.offsetWidth ? (this.slider.classList.add("slider_disabled"), 420this.disabled = !0, this.transformX > 0 && (this.transformX = 0, this.slider.classList.contains("slider_disable-right") && this.slider.classList.remove("slider_disable-right"), 421this.render())) : this.disabled && this.innerWidth > this.list.offsetWidth && (this.slider.classList.remove("slider_disabled"), 422this.slider.classList.contains("slider_disable-right") && this.slider.classList.remove("slider_disable-right"), 423this.disabled = !1); 424} 425render() { 426this.list.style.transform = this.transformX > 0 ? `translateX(${-this.transformX}px)` : "translateX(0)", 4270 === this.transformX ? this.slider.classList.add("slider_disable-left") : this.slider.classList.remove("slider_disable-left"), 428this.transformX == this.list.scrollWidth - this.list.clientWidth ? this.slider.classList.add("slider_disable-right") : this.slider.classList.remove("slider_disable-right"); 429} 430}; 431}, 4321983: function(e, t) { 433var n = function(e) { 434var t = /(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i, n = 0, r = {}, i = { 435manual: e.Prism && e.Prism.manual, 436disableWorkerMessageHandler: e.Prism && e.Prism.disableWorkerMessageHandler, 437util: { 438encode: function e(t) { 439return t instanceof o ? new o(t.type, e(t.content), t.alias) : Array.isArray(t) ? t.map(e) : t.replace(/&/g, "&").replace(/</g, "<").replace(/\u00a0/g, " "); 440}, 441type: function(e) { 442return Object.prototype.toString.call(e).slice(8, -1); 443}, 444objId: function(e) { 445return e.__id || Object.defineProperty(e, "__id", { 446value: ++n 447}), e.__id; 448}, 449clone: function e(t, n) { 450var r, o; 451switch (n = n || {}, i.util.type(t)) { 452case "Object": 453if (o = i.util.objId(t), n[o]) return n[o]; 454for (var s in r = {}, n[o] = r, t) t.hasOwnProperty(s) && (r[s] = e(t[s], n)); 455return r; 456 457case "Array": 458return o = i.util.objId(t), n[o] ? n[o] : (r = [], n[o] = r, t.forEach(function(t, i) { 459r[i] = e(t, n); 460}), r); 461 462default: 463return t; 464} 465}, 466getLanguage: function(e) { 467for (;e; ) { 468var n = t.exec(e.className); 469if (n) return n[1].toLowerCase(); 470e = e.parentElement; 471} 472return "none"; 473}, 474setLanguage: function(e, n) { 475e.className = e.className.replace(RegExp(t, "gi"), ""), e.classList.add("language-" + n); 476}, 477currentScript: function() { 478if ("undefined" == typeof document) return null; 479if (document.currentScript && "SCRIPT" === document.currentScript.tagName) return document.currentScript; 480try { 481throw new Error; 482} catch (r) { 483var e = (/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(r.stack) || [])[1]; 484if (e) { 485var t = document.getElementsByTagName("script"); 486for (var n in t) if (t[n].src == e) return t[n]; 487} 488return null; 489} 490}, 491isActive: function(e, t, n) { 492for (var r = "no-" + t; e; ) { 493var i = e.classList; 494if (i.contains(t)) return !0; 495if (i.contains(r)) return !1; 496e = e.parentElement; 497} 498return !!n; 499} 500}, 501languages: { 502plain: r, 503plaintext: r, 504text: r, 505txt: r, 506extend: function(e, t) { 507var n = i.util.clone(i.languages[e]);
vendor: 7,632 bytes, lines 508-753
508for (var r in t) n[r] = t[r]; 509return n; 510}, 511insertBefore: function(e, t, n, r) { 512var o = (r = r || i.languages)[e], s = {}; 513for (var a in o) if (o.hasOwnProperty(a)) { 514if (a == t) for (var l in n) n.hasOwnProperty(l) && (s[l] = n[l]); 515n.hasOwnProperty(a) || (s[a] = o[a]); 516} 517var c = r[e]; 518return r[e] = s, i.languages.DFS(i.languages, function(t, n) { 519n === c && t != e && (this[t] = s); 520}), s; 521}, 522DFS: function e(t, n, r, o) { 523o = o || {}; 524var s = i.util.objId; 525for (var a in t) if (t.hasOwnProperty(a)) { 526n.call(t, a, t[a], r || a); 527var l = t[a], c = i.util.type(l); 528"Object" !== c || o[s(l)] ? "Array" !== c || o[s(l)] || (o[s(l)] = !0, e(l, n, a, o)) : (o[s(l)] = !0, 529e(l, n, null, o)); 530} 531} 532}, 533plugins: {}, 534highlightAll: function(e, t) { 535i.highlightAllUnder(document, e, t); 536}, 537highlightAllUnder: function(e, t, n) { 538var r = { 539callback: n, 540container: e, 541selector: 'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code' 542}; 543i.hooks.run("before-highlightall", r), r.elements = Array.prototype.slice.apply(r.container.querySelectorAll(r.selector)), 544i.hooks.run("before-all-elements-highlight", r); 545for (var o, s = 0; o = r.elements[s++]; ) i.highlightElement(o, !0 === t, r.callback); 546}, 547highlightElement: function(t, n, r) { 548var o = i.util.getLanguage(t), s = i.languages[o]; 549i.util.setLanguage(t, o); 550var a = t.parentElement; 551a && "pre" === a.nodeName.toLowerCase() && i.util.setLanguage(a, o); 552var l = { 553element: t, 554language: o, 555grammar: s, 556code: t.textContent 557}; 558function c(e) { 559l.highlightedCode = e, i.hooks.run("before-insert", l), l.element.innerHTML = l.highlightedCode, 560i.hooks.run("after-highlight", l), i.hooks.run("complete", l), r && r.call(l.element); 561} 562if (i.hooks.run("before-sanity-check", l), (a = l.element.parentElement) && "pre" === a.nodeName.toLowerCase() && !a.hasAttribute("tabindex") && a.setAttribute("tabindex", "0"), 563!l.code) return i.hooks.run("complete", l), void (r && r.call(l.element)); 564if (i.hooks.run("before-highlight", l), l.grammar) if (n && e.Worker) { 565var u = new Worker(i.filename); 566u.onmessage = function(e) { 567c(e.data); 568}, u.postMessage(JSON.stringify({ 569language: l.language, 570code: l.code, 571immediateClose: !0 572})); 573} else c(i.highlight(l.code, l.grammar, l.language)); else c(i.util.encode(l.code)); 574}, 575highlight: function(e, t, n) { 576var r = { 577code: e, 578grammar: t, 579language: n 580}; 581if (i.hooks.run("before-tokenize", r), !r.grammar) throw new Error('The language "' + r.language + '" has no grammar.'); 582return r.tokens = i.tokenize(r.code, r.grammar), i.hooks.run("after-tokenize", r), 583o.stringify(i.util.encode(r.tokens), r.language); 584}, 585tokenize: function(e, t) { 586var n = t.rest; 587if (n) { 588for (var r in n) t[r] = n[r]; 589delete t.rest; 590} 591var i = new l; 592return c(i, i.head, e), a(e, i, t, i.head, 0), function(e) { 593var t = [], n = e.head.next; 594for (;n !== e.tail; ) t.push(n.value), n = n.next; 595return t; 596}(i); 597}, 598hooks: { 599all: {}, 600add: function(e, t) { 601var n = i.hooks.all; 602n[e] = n[e] || [], n[e].push(t); 603}, 604run: function(e, t) { 605var n = i.hooks.all[e]; 606if (n && n.length) for (var r, o = 0; r = n[o++]; ) r(t); 607} 608}, 609Token: o 610}; 611function o(e, t, n, r) { 612this.type = e, this.content = t, this.alias = n, this.length = 0 | (r || "").length; 613} 614function s(e, t, n, r) { 615e.lastIndex = t; 616var i = e.exec(n); 617if (i && r && i[1]) { 618var o = i[1].length; 619i.index += o, i[0] = i[0].slice(o); 620} 621return i; 622} 623function a(e, t, n, r, l, d) { 624for (var p in n) if (n.hasOwnProperty(p) && n[p]) { 625var h = n[p]; 626h = Array.isArray(h) ? h : [ h ]; 627for (var f = 0; f < h.length; ++f) { 628if (d && d.cause == p + "," + f) return; 629var m = h[f], g = m.inside, E = !!m.lookbehind, b = !!m.greedy, T = m.alias; 630if (b && !m.pattern.global) { 631var v = m.pattern.toString().match(/[imsuy]*$/)[0]; 632m.pattern = RegExp(m.pattern.source, v + "g"); 633} 634for (var S = m.pattern || m, _ = r.next, y = l; _ !== t.tail && !(d && y >= d.reach); y += _.value.length, 635_ = _.next) { 636var A = _.value; 637if (t.length > e.length) return; 638if (!(A instanceof o)) { 639var w, L = 1; 640if (b) { 641if (!(w = s(S, y, e, E)) || w.index >= e.length) break; 642var I = w.index, O = w.index + w[0].length, R = y; 643for (R += _.value.length; I >= R; ) R += (_ = _.next).value.length; 644if (y = R -= _.value.length, _.value instanceof o) continue; 645for (var N = _; N !== t.tail && (R < O || "string" == typeof N.value); N = N.next) L++, 646R += N.value.length; 647L--, A = e.slice(y, R), w.index -= y; 648} else if (!(w = s(S, 0, A, E))) continue; 649I = w.index; 650var k = w[0], C = A.slice(0, I), F = A.slice(I + k.length), x = y + A.length; 651d && x > d.reach && (d.reach = x); 652var D = _.prev; 653if (C && (D = c(t, D, C), y += C.length), u(t, D, L), _ = c(t, D, new o(p, g ? i.tokenize(k, g) : k, T, k)), 654F && c(t, _, F), L > 1) { 655var P = { 656cause: p + "," + f, 657reach: x 658}; 659a(e, t, n, _.prev, y, P), d && P.reach > d.reach && (d.reach = P.reach); 660} 661} 662} 663} 664} 665} 666function l() { 667var e = { 668value: null, 669prev: null, 670next: null 671}, t = { 672value: null, 673prev: e, 674next: null 675}; 676e.next = t, this.head = e, this.tail = t, this.length = 0; 677} 678function c(e, t, n) { 679var r = t.next, i = { 680value: n, 681prev: t, 682next: r 683}; 684return t.next = i, r.prev = i, e.length++, i; 685} 686function u(e, t, n) { 687for (var r = t.next, i = 0; i < n && r !== e.tail; i++) r = r.next; 688t.next = r, r.prev = t, e.length -= i; 689} 690if (e.Prism = i, o.stringify = function e(t, n) { 691if ("string" == typeof t) return t; 692if (Array.isArray(t)) { 693var r = ""; 694return t.forEach(function(t) { 695r += e(t, n); 696}), r; 697} 698var o = { 699type: t.type, 700content: e(t.content, n), 701tag: "span", 702classes: [ "token", t.type ], 703attributes: {}, 704language: n 705}, s = t.alias; 706s && (Array.isArray(s) ? Array.prototype.push.apply(o.classes, s) : o.classes.push(s)), 707i.hooks.run("wrap", o); 708var a = ""; 709for (var l in o.attributes) a += " " + l + '="' + (o.attributes[l] || "").replace(/"/g, """) + '"'; 710return "<" + o.tag + ' class="' + o.classes.join(" ") + '"' + a + ">" + o.content + "</" + o.tag + ">"; 711}, !e.document) return e.addEventListener ? (i.disableWorkerMessageHandler || e.addEventListener("message", function(t) { 712var n = JSON.parse(t.data), r = n.language, o = n.code, s = n.immediateClose; 713e.postMessage(i.highlight(o, i.languages[r], r)), s && e.close(); 714}, !1), i) : i; 715var d = i.util.currentScript(); 716function p() { 717i.manual || i.highlightAll(); 718} 719if (d && (i.filename = d.src, d.hasAttribute("data-manual") && (i.manual = !0)), 720!i.manual) { 721var h = document.readyState; 722"loading" === h || "interactive" === h && d && d.defer ? document.addEventListener("DOMContentLoaded", p) : window.requestAnimationFrame ? window.requestAnimationFrame(p) : window.setTimeout(p, 16); 723} 724return i; 725}("undefined" != typeof window ? window : "undefined" != typeof WorkerGlobalScope && self instanceof WorkerGlobalScope ? self : {}); 726void 0 !== e && e.exports && (e.exports = n), "undefined" != typeof global && (global.Prism = n); 727}, 7282346: function(e) { 729e.exports = e => { 730e.languages.sql = { 731comment: { 732pattern: /(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/, 733lookbehind: !0 734}, 735variable: [ { 736pattern: /@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/, 737greedy: !0 738}, /@[\w.$]+/ ], 739string: { 740pattern: /(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/, 741greedy: !0, 742lookbehind: !0 743}, 744identifier: { 745pattern: /(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/, 746greedy: !0, 747lookbehind: !0, 748inside: { 749punctuation: /^`|`$/ 750} 751}, 752function: /\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i, 753keyword: /\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CA
753SE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i, 754boolean: /\b(?:FALSE|NULL|TRUE)\b/i, 755number: /\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i, 756operator: /[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i, 757punctuation: /[;[\]()`,.]/, 758error: /^\s*ERROR/ 759}; 760}; 761}, 7622684: function(e, t, n) { 763let r, i = n(3449);
764e.exports = function(e) { 765e = e || document; 766let t = Math.max(e.body.scrollHeight, e.documentElement.scrollHeight, e.body.offsetHeight, e.documentElement.offsetHeight, e.body.clientHeight, e.documentElement.clientHeight); 767return e.documentElement.scrollWidth > e.documentElement.clientWidth && (r || (r = i()), 768t += r), t; 769}; 770}, 7712924: function(e, t, n) { 772let r = n(7200), i = n(3102); 773class o { 774constructor(e) { 775this.elem = e, this.throttleFilter = r(this.filter, 200), this.showTasksCheckbox = e.querySelector("[data-tutorial-map-show-tasks]"), 776this.showTasksCheckbox.checked = +sessionStorage.showTasksCheckbox, this.updateShowTasks(), 777this.showTasksCheckbox.onchange = this.updateShowTasks.bind(this), this.filterInput = this.elem.querySelector("[data-tutorial-map-filter]"), 778this.textInputBlock = this.elem.querySelector(".tutorial-map__filter .text-input"), 779this.filterInput.oninput = this.onFilterInput.bind(this), this.filterInput.onkeydown = this.onFilterKeydown.bind(this), 780this.elem.querySelector(".text-input__clear").onclick = () => { 781this.filterInput.value = "", this.showClearButton(!1), this.filter(""); 782}, this.chaptersCollapsed = JSON.parse(sessionStorage.tutorialMapChapters || "{}"), 783this.showChaptersCollapsed(), this.delegate(".tutorial-map__item > .tutorial-map__link", "click", e => { 784e.preventDefault(); 785let t = e.delegateTarget.getAttribute("href"); 786this.chaptersCollapsed[t] ? delete this.chaptersCollapsed[t] : this.chaptersCollapsed[t] = 1, 787sessionStorage.tutorialMapChapters = JSON.stringify(this.chaptersCollapsed), this.showChaptersCollapsed(); 788}); 789let t = this.elem.querySelector('.tutorial-map-list-three__link[href="' + location.pathname + '"]'); 790t && t.classList.add("tutorial-map-list-three__link_active"), this.filterInput.focus(); 791} 792showChaptersCollapsed() { 793let e = this.elem.querySelectorAll(".tutorial-map__item > .tutorial-map__link"); 794for (let t = 0; t < e.length; t++) { 795let n = e[t]; 796this.chaptersCollapsed[n.getAttribute("href")] ? n.parentNode.classList.add("tutorial-map__item_collapsed") : n.parentNode.classList.remove("tutorial-map__item_collapsed"); 797} 798} 799updateShowTasks() { 800this.showTasksCheckbox.checked ? this.elem.classList.add("tutorial-map_show-tasks") : this.elem.classList.remove("tutorial-map_show-tasks"), 801sessionStorage.showTasksCheckbox = this.showTasksCheckbox.checked ? "1" : "0"; 802} 803onFilterInput(e) { 804this.showClearButton(e.target.value), this.throttleFilter(e.target.value); 805} 806onFilterKeydown(e) { 80727 === e.keyCode && (this.filterInput.value = "", this.showClearButton(!1), this.filter("")); 808} 809showClearButton(e) { 810e ? this.textInputBlock.classList.add("text-input_clear-button") : this.textInputBlock.classList.remove("text-input_clear-button"); 811} 812focus() { 813this.elem.tabIndex = -1, this.elem.focus(); 814} 815filter(e) { 816e = e.toLowerCase(); 817let t = this.showTasksCheckbox.checked, n = (this.elem.querySelectorAll(".tutorial-map-list a"), 818this.elem.querySelectorAll(".tutorial-map-list-two__item")); 819function r(t) { 820return function(e, t) { 821let n = 0, r = 0; 822for (;n < e.length && r < t.length; ) e[n] === t[r] ? (n++, r++) : n++; 823return r === t.length; 824}(t.querySelector("a").innerHTML.toLowerCase(), e.replace(/\s/g, "")); 825} 826for (let e = 0; e < n.length; e++) { 827let i = n[e], o = i.querySelectorAll(".tutorial-map-list-three__item"), s = Array.prototype.reduce.call(o, function(e, n) { 828let i = !1; 829if (t) { 830let e = n.querySelectorAll(".tutorial-map-list-four__item"); 831i = Array.prototype.reduce.call(e, function(e, t) { 832let n = r(t); 833return t.hidden = !n, e || n; 834}, !1); 835} 836let o = i || r(n); 837return n.hidden = !o, e || o; 838}, !1); 839i.hidden = !(s || r(i)); 840} 841} 842} 843e.exports = o, i.delegateMixin(o.prototype); 844}, 8452983: function(e, t, n) { 846var r = n(6339).Symbol; 847e.exports = r; 848}, 8493102: function(e) { 850function t(e, t, n, r, i) { 851e.addEventListener(n, function(e) { 852let n = function(e, t) { 853let n = e.target; 854for (;n; ) { 855if (n.matches(t)) return n; 856if (n == e.currentTarget) break; 857n = n.parentElement; 858} 859return null; 860}(e, t); 861e.delegateTarget = n, n && r.call(i || this, e); 862}); 863} 864t.delegateMixin = function(e) { 865e.delegate = function(e, n, r) { 866t(this.elem, e, n, r, this); 867}; 868}, e.exports = t; 869}, 8703123: function(e, t, n) { 871n(1983), n(4312), n(1113), n(5365), n(5624), n(5723), n(4784), n(4604), n(6966), 872n(6976), n(7022), Prism.hooks.add("wrap", function(e) { 873"span" === e.tag && (e.tag = "code"); 874}); 875}, 8763205: function(e, t, n) { 877var r = { 878"./en.yml": 3979 879}; 880function i(e) { 881var t = o(e); 882return n(t); 883} 884function o(e) { 885if (!n.o(r, e)) { 886var t = new Error("Cannot find module '" + e + "'"); 887throw t.code = "MODULE_NOT_FOUND", t; 888} 889return r[e]; 890} 891i.keys = function() { 892return Object.keys(r); 893}, i.resolve = o, e.exports = i, i.id = 3205; 894}, 8953388: function(e) { 896var t = Object.prototype.toString; 897e.exports = function(e) { 898return t.call(e); 899}; 900}, 9013449: function(e) { 902e.exports = function() { 903let e = document.createElement("div"); 904if (e.style.cssText = "visibility:hidden;
904height:100px", !document.body) throw new Error("getScrollbarHeight called to early: no document.body"); 905document.body.appendChild(e); 906let t = e.offsetWidth; 907e.style.overflow = "scroll"; 908let n = document.createElement("div"); 909n.style.width = "100%", e.appendChild(n); 910let r = n.offsetWidth; 911return e.parentNode.removeChild(e), t - r; 912}; 913}, 9143667: function(e) { 915e.exports = function(e) { 916var t = typeof e; 917return null != e && ("object" == t || "function" == t); 918}; 919}, 9203692: function(e, t, n) { 921var r = { 922"./en.yml": 9374 923}; 924function i(e) { 925var t = o(e); 926return n(t); 927} 928function o(e) { 929if (!n.o(r, e)) { 930var t = new Error("Cannot find module '" + e + "'"); 931throw t.code = "MODULE_NOT_FOUND", t; 932} 933return r[e]; 934} 935i.keys = function() { 936return Object.keys(r); 937}, i.resolve = o, e.exports = i, i.id = 3692; 938}, 9393979: function(e, t, n) { 940"use strict"; 941n.r(t), t.default = { 942site: { 943privacy_policy: "privacy policy", 944terms: "terms of usage", 945banner_bottom_courses: 'Advance your skils with <a href="https://frontendmasters.com/learn/javascript/?utm_source=website&utm_medium=jsinfo&utm_campaign=jsinfo">video courses on JavaScript and Frameworks</a>.', 946banner_buttom_sponsor: 'Benefitted from the site? <a href="/sponsor">Sponsor us</a>!', 947action_required: "Action required", 948gdpr_dialog: { 949title: "This website uses cookies", 950text: 'We use browser technologies such as cookies and local storage to store your preferences. You need to accept our <a href="/privacy">Privacy Policy</a> and <a href="/terms">Terms of Use</a> for us to do so.', 951accept: "Accept", 952cancel: "Cancel" 953}, 954theme: { 955light: "Light theme", 956dark: "Dark theme", 957change: "Change theme" 958}, 959toolbar: { 960lang_switcher: { 961cta_text: '<p>We want to make this open-source project available for people all around the world.</p> <p><a href="https://javascript.info/translate">Help to translate</a> the content of this tutorial to your language!</p>\n', 962footer_text: "how much content is translated to the corresponding language", 963old_version: "Old version is published, needs backporting." 964}, 965logo: { 966normal: { 967svg: "sitetoolbar__logo_en.svg", 968width: 200 969}, 970"normal-white": { 971svg: "sitetoolbar__logo_en-white.svg" 972}, 973small: { 974svg: "sitetoolbar__logo_small_en.svg", 975width: 70 976}, 977"small-white": { 978svg: "sitetoolbar__logo_small_en-white.svg" 979} 980}, 981sections: null, 982buy_ebook_extra: "Buy", 983buy_ebook: "EPUB/PDF", 984search_placeholder: "Search on Javascript.info", 985search_button: "Search", 986public_profile: "Public profile", 987account: "Account", 988notifications: "Notifications", 989admin: "Admin", 990logout: "Logout" 991}, 992sorry_old_browser: "Sorry, Internet Explorer is not supported, please use a newer browser.", 993contact_us: "contact us", 994about_the_project: "about the project", 995ilya_kantor: "Ilya Kantor", 996comments: "Comments", 997loading: "Loading...", 998search: "Search", 999share: "Share", 1000read_before_commenting: "read this before commentingâ¦", 1001last_updated_at: "Last updated on #{date}", 1002meta: { 1003description: "Modern JavaScript Tutorial: simple, but detailed explanations with examples and tasks, including: closures, document and events, object oriented programming and more." 1004}, 1005"tablet-menu": { 1006choose_section: "Choose section", 1007search_placeholder: "Search in the tutorial", 1008search_button: "Search" 1009}, 1010comment: { 1011help: [ 'If you have suggestions what to improve - please <a href="https://github.com/javascript-tutorial/en.javascript.info/issues/new">submit a GitHub issue</a> or a pull request instead of commenting.', "If you can't understand something in the article â please elaborate.", "To insert few words of code, use the <code><code></code> tag, for several lines â wrap them in <code><pre></code> tag, for more than 10 lines â use a sandbox (<a href='https://plnkr.co/edit/?p=preview'>plnkr</a>, <a href='https://jsbin.com'>jsbin</a>, <a href='http://codepen.io'>codepen</a>â¦)" ] 1012}, 1013edit_on_github: "Edit on GitHub", 1014error: "error", 1015close: "close", 1016hide_forever: "hide permanently", 1017hide_week: "hide for 1 week", 1018hidden_forever: "This information will not show up any more.", 1019hidden_week: "This information will stay hidden for 1 week", 1020subscribe: { 1021title: "Watch for javascript.info updates", 1022text: "We do not send advertisements, only relevant stuff. You choose what to receive:", 1023agreement: 'By signing up to newsletters you agree to the <a href="#{link}" target="_blank">terms of usage</a>.', 1024button: "Subscribe", 1025button_unsubscribe: "Unsubscribe from all", 1026common_updates: "Common updates", 1027common_updates_text: "new courses, master classes, article and screencast releases", 1028your_email: "[email protected]",
1029newsletters: "newsletter,newsletters,newsletters", 1030no_selected: "Nothing selected" 1031}, 1032form: { 1033value_must_not_be_empty: "Value must not be empty.", 1034value_is_too_long: "Value is too long.", 1035value_is_too_short: "Value is too short.", 1036invalid_email: "Invalid email.", 1037invalid_value: "Invalid value.", 1038invalid_autocomplete: "Please, choose from the list", 1039invalid_date: "Invalid date, format: dd.mm.yyyyy.", 1040invalid_range: "This date is invalid here.", 1041save: "Save", 1042upload_file: "Upload file", 1043cancel: "Cancel", 1044server_error: "Request error, status code" 1045} 1046} 1047}; 1048}, 10494312: function(e, t) { 1050Prism.languages.markup = { 1051comment: { 1052pattern: /<!--(?:(?!<!--)[\s\S])*?-->/, 1053greedy: !0 1054}, 1055prolog: { 1056pattern: /<\?[\s\S]+?\?>/, 1057greedy: !0 1058}, 1059doctype: { 1060pattern: /<!DOCTYPE(?:[^>"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\]\s*)?>/i, 1061greedy: !0, 1062inside: { 1063"internal-subset": { 1064pattern: /(^[^\[]*\[)[\s\S]+(?=\]>$)/, 1065lookbehind: !0, 1066greedy: !0, 1067inside: null 1068}, 1069string: { 1070pattern: /"[^"]*"|'[^']*'/, 1071greedy: !0 1072}, 1073punctuation: /^<!|>$|[[\]]/, 1074"doctype-tag": /^DOCTYPE/i, 1075name: /[^\s<>'"]+/ 1076} 1077}, 1078cdata: { 1079pattern: /<!\[CDATA\[[\s\S]*?\]\]>/i, 1080greedy: !0 1081}, 1082tag: { 1083pattern: /<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/, 1084greedy: !0, 1085inside: { 1086tag: { 1087pattern: /^<\/?[^\s>\/]+/, 1088inside: { 1089punctuation: /^<\/?/, 1090namespace: /^[^\s>\/:]+:/ 1091} 1092}, 1093"special-attr": [], 1094"attr-value": { 1095pattern: /=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/, 1096inside: { 1097punctuation: [ { 1098pattern: /^=/, 1099alias: "attr-equals" 1100}, { 1101pattern: /^(\s*)["']|["']$/, 1102lookbehind: !0 1103} ] 1104} 1105}, 1106punctuation: /\/?>/, 1107"attr-name": { 1108pattern: /[^\s>\/]+/, 1109inside: { 1110namespace: /^[^\s>\/:]+:/ 1111} 1112} 1113} 1114}, 1115entity: [ { 1116pattern: /&[\da-z]{1,8};/i, 1117alias: "named-entity" 1118}, /&#x?[\da-f]{1,8};/i ] 1119}, Prism.languages.markup.tag.inside["attr-value"].inside.entity = Prism.languages.markup.entity, 1120Prism.languages.markup.doctype.inside["internal-subset"].inside = Prism.languages.markup, 1121Prism.hooks.add("wrap", function(e) { 1122"entity" === e.type && (e.attributes.title = e.content.replace(/&/, "&")); 1123}), Object.defineProperty(Prism.languages.markup.tag, "addInlined", { 1124value: function(e, t) { 1125var n = {}; 1126n["language-" + t] = { 1127pattern: /(^<!\[CDATA\[)[\s\S]+?(?=\]\]>$)/i, 1128lookbehind: !0, 1129inside: Prism.languages[t] 1130}, n.cdata = /^<!\[CDATA\[|\]\]>$/i; 1131var r = { 1132"included-cdata": { 1133pattern: /<!\[CDATA\[[\s\S]*?\]\]>/i, 1134inside: n 1135} 1136}; 1137r["language-" + t] = { 1138pattern: /[\s\S]+/, 1139inside: Prism.languages[t] 1140}; 1141var i = {}; 1142i[e] = { 1143pattern: RegExp(/(<__[^>]*>)(?:<!\[CDATA\[(?:[^\]]|\](?!\]>))*\]\]>|(?!<!\[CDATA\[)[\s\S])*?(?=<\/__>)/.source.replace(/__/g, function() { 1144return e; 1145}), "i"), 1146lookbehind: !0, 1147greedy: !0, 1148inside: r 1149}, Prism.languages.insertBefore("markup", "cdata", i); 1150} 1151}), Object.defineProperty(Prism.languages.markup.tag, "addAttribute", { 1152value: function(e, t) { 1153Prism.languages.markup.tag.inside["special-attr"].push({ 1154pattern: RegExp(/(^|["'\s])/.source + "(?:" + e + ")" + /\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source, "i"), 1155lookbehind: !0, 1156inside: { 1157"attr-name": /^[^\s=]+/, 1158"attr-value": { 1159pattern: /=[\s\S]+/, 1160inside: { 1161value: { 1162pattern: /(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/, 1163lookbehind: !0, 1164alias: [ t, "language-" + t ], 1165inside: Prism.languages[t] 1166}, 1167punctuation: [ { 1168pattern: /^=/, 1169alias: "attr-equals" 1170}, /"|'/ ] 1171} 1172} 1173} 1174}); 1175} 1176}), Prism.languages.html = Prism.languages.markup, Prism.languages.mathml = Prism.languages.markup, 1177Prism.languages.svg = Prism.languages.markup, Prism.languages.xml = Prism.languages.extend("markup", {}), 1178Prism.languages.ssml = Prism.languages.xml, Prism.languages.atom = Prism.languages.xml, 1179Prism.languages.rss = Prism.languages.xml; 1180}, 11814596: function(e) { 1182function t(e, n = 0) { 1183if (null == e) return "null"; 1184if ("function" == typeof e) return function(e, t = 0) { 1185if (t) return "function " + e.name; 1186(e = (e = e.toString()).split("\n")).length > 10 && (e = e.slice(0, 10).join("\n") + "\n..."); 1187return e; 1188}(e, n); 1189if (Array.isArray(e)) return function(e, n = 0) { 1190if (n > 2) return "[...]"; 1191let r = 1 == n ? 3 : 10; 1192e.length > r && (e = e.slice(0, r)).push("..."); 1193return "[" + e.map(e => t(e, n + 1)).join(", ") + "]"; 1194}(e, n); 1195if ("object" == typeof window) { 1196if (e instanceof Node) return t(e.outerHTML, n); 1197if (e instanceof Event) { 1198let r = [ Symbol.toStringTag, "type", "clientX", "clientY", "key", "code" ], i = {}; 1199for (let t of r) t in e && (i[t] = e[t]); 1200return t(i, n); 1201} 1202} 1203return "object" == typeof e ? function(e, n = 0) { 1204let r = e.constructor.name; 1205"Object" == r && e[Symbol.toStringTag] && (r = e[Symbol.toStringTag]); 1206if ("Object" != r && e.toString != Object.prototype.toString) return e.toString(); 1207let i = ""; 1208"Object" != r && (i += r + " "); 1209if (i += "{", n > 1) i += "..."; else { 1210let r = []; 1211for (let i in e) e.hasOwnProperty(i) && r.push(`${i}: ${t(e[i], n + 1)}`); 1212i += r.join(", "); 1213} 1214return i += "}", i; 1215}(e, n) : "string" == typeof e ? function(e, t = 0) { 1216let n = 1 == t ? 20 : 60; 1217e.length > n && (e = e.slice(0, e.limit - 1) + "â¦"); 1218return JSON.stringify(e); 1219}(e, n) : JSON.stringify(e); 1220} 1221e.exports = function(e) { 1222return Array.from(e).map(t).join(", "); 1223}; 1224}, 12254604: function(e, t) { 1226Prism.languages.scss = Prism.languages.extend("css", { 1227comment: { 1228pattern: /(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/, 1229lookbehind: !0 1230}, 1231atrule: { 1232pattern: /@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/, 1233inside: { 1234rule: /@[\w-]+/ 1235} 1236}, 1237url: /(?:[-a-z]+-)?url(?=\()/i, 1238selector: { 1239pattern: /(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/, 1240inside: { 1241parent: { 1242pattern: /&/, 1243alias: "important" 1244}, 1245placeholder: /%[-\w]+/, 1246variable: /\$[-\w]+|#\{\$[-\w]+\}/ 1247} 1248}, 1249property: { 1250pattern: /(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/, 1251inside: { 1252variable: /\$[-\w]+|#\{\$[-\w]+\}/ 1253} 1254} 1255}), Prism.languages.insertBefore("scss", "atrule", { 1256keyword: [ /@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i, { 1257pattern: /( )(?:from|through)(?= )/, 1258lookbehind: !0 1259} ] 1260}), Prism.languages.insertBefore("scss", "important", { 1261variable: /\$[-\w]+|#\{\$[-\w]+\}/ 1262}), Prism.languages.insertBefore("scss", "function", { 1263"module-modifier": { 1264pattern: /\b(?:as|hide|show|with)\b/i, 1265alias: "keyword" 1266}, 1267placeholder: { 1268pattern: /%[-\w]+/, 1269alias: "selector" 1270}, 1271statement: { 1272pattern: /\B!(?:default|optional)\b/i, 1273alias: "keyword" 1274}, 1275boolean: /\b(?:false|true)\b/, 1276null: { 1277pattern: /\bnull\b/, 1278alias: "keyword" 1279}, 1280operator: { 1281pattern: /(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/, 1282lookbehind: !0 1283} 1284}), Prism.languages.scss.atrule.inside.rest = Prism.languages.scss; 1285}, 12864629: function(e) { 1287e.exports = function() { 1288let e = document.cookie.match(/XSRF-TOKEN=([\w-]+)/); 1289return e ? e[1] : null; 1290}; 1291}, 12924784: function(e, t) { 1293!function(e) { 1294function t(e) { 1295return RegExp("(^(?:" + e + "):[ \t]*(?![ \t]))[^]+", "i"); 1296} 1297e.languages.http = { 1298"request-line": { 1299pattern: /^(?:CONNECT|DELETE|GET|HEAD|OPTIONS|PATCH|POST|PRI|PUT|SEARCH|TRACE)\s(?:https?:\/\/|\/)\S*\sHTTP\/[\d.]+/m, 1300inside: { 1301method: { 1302pattern: /^[A-Z]+\b/, 1303alias: "property" 1304}, 1305"request-target": { 1306pattern: /^(\s)(?:https?:\/\/|\/)\S*(?=\s)/, 1307lookbehind: !0, 1308alias: "url", 1309inside: e.languages.uri 1310}, 1311"http-version": { 1312pattern: /^(\s)HTTP\/[\d.]+/, 1313lookbehind: !0, 1314alias: "property" 1315} 1316} 1317}, 1318"response-status": { 1319pattern: /^HTTP\/[\d.]+ \d+ .+/m, 1320inside: { 1321"http-version": { 1322pattern: /^HTTP\/[\d.]+/, 1323alias: "property" 1324}, 1325"status-code": { 1326pattern: /^(\s)\d+(?=\s)/, 1327lookbehind: !0, 1328alias: "number" 1329}, 1330"reason-phrase": { 1331pattern: /^(\s).+/, 1332lookbehind: !0, 1333alias: "string" 1334} 1335} 1336}, 1337header: {
1338pattern: /^[\w-]+:.+(?:(?:\r\n?|\n)[ \t].+)*/m, 1339inside: { 1340"header-value": [ { 1341pattern: t(/Content-Security-Policy/.source), 1342lookbehind: !0, 1343alias: [ "csp", "languages-csp" ], 1344inside: e.languages.csp 1345}, { 1346pattern: t(/Public-Key-Pins(?:-Report-Only)?/.source), 1347lookbehind: !0, 1348alias: [ "hpkp", "languages-hpkp" ], 1349inside: e.languages.hpkp 1350}, { 1351pattern: t(/Strict-Transport-Security/.source), 1352lookbehind: !0, 1353alias: [ "hsts", "languages-hsts" ], 1354inside: e.languages.hsts 1355}, { 1356pattern: t(/[^:]+/.source), 1357lookbehind: !0 1358} ], 1359"header-name": { 1360pattern: /^[^:]+/, 1361alias: "keyword" 1362}, 1363punctuation: /^:/ 1364} 1365} 1366}; 1367var n, r = e.languages, i = { 1368"application/javascript": r.javascript, 1369"application/json": r.json || r.javascript, 1370"application/xml": r.xml, 1371"text/xml": r.xml, 1372"text/html": r.html, 1373"text/css": r.css, 1374"text/plain": r.plain 1375}, o = { 1376"application/json": !0, 1377"application/xml": !0 1378}; 1379function s(e) { 1380var t = e.replace(/^[a-z]+\//, ""); 1381return "(?:" + e + "|" + ("\\w+/(?:[\\w.-]+\\+)+" + t + "(?![+\\w.-])") + ")"; 1382} 1383for (var a in i) if (i[a]) { 1384n = n || {}; 1385var l = o[a] ? s(a) : a; 1386n[a.replace(/\//g, "-")] = { 1387pattern: RegExp("(" + /content-type:\s*/.source + l + /(?:(?:\r\n?|\n)[\w-].*)*(?:\r(?:\n|(?!\n))|\n)/.source + ")" + /[^ \t\w-][\s\S]*/.source, "i"), 1388lookbehind: !0, 1389inside: i[a] 1390}; 1391} 1392n && e.languages.insertBefore("http", "header", n); 1393}(Prism); 1394}, 13954890: function(e, t, n) { 1396var r = n(2983), i = n(937), o = n(3388), s = r ? r.toStringTag : void 0; 1397e.exports = function(e) { 1398return null == e ? void 0 === e ? "[object Undefined]" : "[object Null]" : s && s in Object(e) ? i(e) : o(e); 1399}; 1400}, 14015116: function(e) { 1402e.exports = function(e) { 1403return null != e && "object" == typeof e; 1404}; 1405}, 14065304: function(e) { 1407e.exports = function() { 1408function e(e, t, n, r, i, o) { 1409this.message = e, this.expected = t, this.found = n, this.offset = r, this.line = i, 1410this.column = o, this.name = "SyntaxError"; 1411} 1412return function(e, t) { 1413function n() { 1414this.constructor = e; 1415} 1416n.prototype = t.prototype, e.prototype = new n; 1417}(e, Error), { 1418SyntaxError: e, 1419parse: function(t) { 1420var n, r = arguments.length > 1 ? arguments[1] : {}, i = {}, o = { 1421start: ue 1422}, s = ue, a = i, l = "((", c = { 1423type: "literal", 1424value: "((", 1425description: '"(("' 1426}, u = "))", d = { 1427type: "literal", 1428value: "))", 1429description: '"))"' 1430}, p = null, h = function(e, t) { 1431return { 1432type: "plural", 1433forms: ve(e), 1434strict: Se(e), 1435anchor: t || "count" 1436}; 1437}, f = "|", m = { 1438type: "literal", 1439value: "|", 1440description: '"|"' 1441}, g = function(e, t) { 1442return [ e ].concat(t); 1443}, E = function(e) { 1444return [ e ]; 1445}, b = "=", T = { 1446type: "literal", 1447value: "=", 1448description: '"="' 1449}, v = /^[0-9]/, S = { 1450type: "class", 1451value: "[0-9]", 1452description: "[0-9]" 1453}, _ = " ", y = { 1454type: "literal", 1455value: " ", 1456description: '" "' 1457}, A = function(e, t) { 1458return { 1459strict: e.join(""), 1460text: t.join("") 1461}; 1462}, w = function() { 1463return { 1464text: se() 1465}; 1466}, L = "\\", I = { 1467type: "literal", 1468value: "\\", 1469description: '"\\\\"' 1470}, O = /^[\\|)(]/, R = { 1471type: "class", 1472value: "[\\\\|)(]", 1473description: "[\\\\|)(]" 1474}, N = function(e) { 1475return e; 1476}, k = void 0, C = { 1477type: "any", 1478description: "any character" 1479}, F = function() { 1480return se(); 1481}, x = ":", D = { 1482type: "literal", 1483value: ":", 1484description: '":"' 1485}, P = function(e) { 1486return e; 1487}, M = "#{", U = { 1488type: "literal", 1489value: "#{", 1490description: '"#{"' 1491}, B = "}", G = { 1492type: "literal", 1493value: "}", 1494description: '"}"' 1495}, H = function(e) { 1496return { 1497type: "variable", 1498anchor: e 1499}; 1500}, j = ".", $ = { 1501type: "literal", 1502value: ".", 1503description: '"."' 1504}, W = function() { 1505return se(); 1506}, q = /^[a-zA-Z_$]/, X = { 1507type: "class", 1508value: "[a-zA-Z_$]", 1509description: "[a-zA-Z_$]" 1510}, Y = /^[a-zA-Z0-9_$]/, z = { 1511type: "class", 1512value: "[a-zA-Z0-9_$]", 1513description: "[a-zA-Z0-9_$]" 1514}, K = function(e) { 1515return e; 1516}, V = function(e) { 1517return { 1518type: "literal", 1519text: e.join("") 1520}; 1521}, Z = /^[\\#()|]/, J = { 1522type: "class", 1523value: "[\\\\#()|]", 1524description: "[\\\\#()|]" 1525}, Q = 0, ee = 0, te = 0, ne = { 1526line: 1, 1527column: 1, 1528seenCR: !1 1529}, re = 0, ie = [], oe = 0; 1530if ("startRule" in r) { 1531if (!(r.startRule in o)) throw new Error("Can't start parsing from rule \"" + r.startRule + '".'); 1532s = o[r.startRule]; 1533} 1534function se() { 1535return t.substring(ee, Q); 1536} 1537function ae(e) { 1538return te !== e && (te > e && (te = 0, ne = { 1539line: 1, 1540column: 1, 1541seenCR: !1 1542}), function(e, n, r) { 1543var i, o; 1544for (i = n; i < r; i++) "\n" === (o = t.charAt(i)) ? (e.seenCR || e.line++, e.column = 1, 1545e.seenCR = !1) : "\r" === o || "\u2028" === o || "\u2029" === o ? (e.line++, e.column = 1, 1546e.seenCR = !0) : (e.column++, e.seenCR = !1); 1547}(ne, te, e), te = e), ne; 1548} 1549function le(e) { 1550Q < re || (Q > re && (re = Q, ie = []), ie.push(e)); 1551} 1552function ce(n, r, i) { 1553var o = ae(i), s = i < t.length ? t.charAt(i) : null; 1554return null !== r && function(e) { 1555var t = 1; 1556for (e.sort(function(e, t) { 1557return e.description < t.description ? -1 : e.description > t.description ? 1 : 0; 1558}); t < e.length; ) e[t - 1] === e[t] ? e.splice(t, 1) : t++; 1559}(r), new e(null !== n ? n : function(e, t) { 1560var n, r = new Array(e.length); 1561for (n = 0; n < e.length; n++) r[n] = e[n].description; 1562return "Expected " + (e.length > 1 ? r.slice(0, -1).join(", ") + " or " + r[e.length - 1] : r[0]) + " but " + (t ? '"' + function(e) { 1563function t(e) { 1564return e.charCodeAt(0).toString(16).toUpperCase(); 1565} 1566return e.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\x08/g, "\\b").replace(/\t/g, "\\t").replace(/\n/g, "\\n").replace(/\f/g, "\\f").replace(/\r/g, "\\r").replace(/[\x00-\x07\x0B\x0E\x0F]/g, function(e) { 1567return "\\x0" + t(e); 1568}).replace(/[\x10-\x1F\x80-\xFF]/g, function(e) { 1569return "\\x" + t(e); 1570}).replace(/[\u0180-\u0FFF]/g, function(e) { 1571return "\\u0" + t(e); 1572}).replace(/[\u1080-\uFFFF]/g, function(e) { 1573return "\\u" + t(e); 1574}); 1575}(t) + '"' : "end of input") + " found."; 1576}(r, s), r, s, i, o.line, o.column); 1577} 1578function ue() { 1579var e, t;
1580for (e = [], (t = be()) === i && (t = de()) === i && (t = me()); t !== i; ) e.push(t), 1581(t = be()) === i && (t = de()) === i && (t = me()); 1582return e; 1583} 1584function de() { 1585var e, n, r, o, s; 1586return e = Q, t.substr(Q, 2) === l ? (n = l, Q += 2) : (n = i, 0 === oe && le(c)), 1587n !== i && (r = pe()) !== i ? (t.substr(Q, 2) === u ? (o = u, Q += 2) : (o = i, 15880 === oe && le(d)), o !== i ? (s = function() { 1589var e, n, r; 1590e = Q, 58 === t.charCodeAt(Q) ? (n = x, Q++) : (n = i, 0 === oe && le(D)); 1591n !== i && (r = ge()) !== i ? (ee = e, e = n = P(r)) : (Q = e, e = a); 1592return e; 1593}(), s === i && (s = p), s !== i ? (ee = e, e = n = h(r, s)) : (Q = e, e = a)) : (Q = e, 1594e = a)) : (Q = e, e = a), e; 1595} 1596function pe() { 1597var e, n, r, o; 1598return e = Q, (n = he()) !== i ? (124 === t.charCodeAt(Q) ? (r = f, Q++) : (r = i, 15990 === oe && le(m)), r !== i && (o = pe()) !== i ? (ee = e, e = n = g(n, o)) : (Q = e, 1600e = a)) : (Q = e, e = a), e === i && (e = Q, (n = he()) !== i && (ee = e, n = E(n)), 1601e = n), e; 1602} 1603function he() { 1604var e, n, r, o, s, l; 1605if (e = Q, 61 === t.charCodeAt(Q) ? (n = b, Q++) : (n = i, 0 === oe && le(T)), n !== i) { 1606if (r = [], v.test(t.charAt(Q)) ? (o = t.charAt(Q), Q++) : (o = i, 0 === oe && le(S)), 1607o !== i) for (;o !== i; ) r.push(o), v.test(t.charAt(Q)) ? (o = t.charAt(Q), Q++) : (o = i, 16080 === oe && le(S)); else r = a; 1609if (r !== i) if (32 === t.charCodeAt(Q) ? (o = _, Q++) : (o = i, 0 === oe && le(y)), 1610o === i && (o = p), o !== i) { 1611if (s = [], (l = fe()) !== i) for (;l !== i; ) s.push(l), l = fe(); else s = a; 1612s !== i ? (ee = e, e = n = A(r, s)) : (Q = e, e = a); 1613} else Q = e, e = a; else Q = e, e = a; 1614} else Q = e, e = a; 1615if (e === i) { 1616if (e = Q, n = [], (r = fe()) !== i) for (;r !== i; ) n.push(r), r = fe(); else n = a; 1617n !== i && (ee = e, n = w()), e = n; 1618} 1619return e; 1620} 1621function fe() { 1622var e, n, r; 1623return e = Q, 92 === t.charCodeAt(Q) ? (n = L, Q++) : (n = i, 0 === oe && le(I)), 1624n !== i ? (O.test(t.charAt(Q)) ? (r = t.charAt(Q), Q++) : (r = i, 0 === oe && le(R)), 1625r !== i ? (ee = e, e = n = N(r)) : (Q = e, e = a)) : (Q = e, e = a), e === i && (e = Q, 1626n = Q, oe++, 124 === t.charCodeAt(Q) ? (r = f, Q++) : (r = i, 0 === oe && le(m)), 1627r === i && (t.substr(Q, 2) === u ? (r = u, Q += 2) : (r = i, 0 === oe && le(d))), 1628oe--, r === i ? n = k : (Q = n, n = a), n !== i ? (t.length > Q ? (r = t.charAt(Q), 1629Q++) : (r = i, 0 === oe && le(C)), r !== i ? (ee = e, e = n = F()) : (Q = e, e = a)) : (Q = e, 1630e = a)), e; 1631} 1632function me() { 1633var e, n, r, o; 1634return e = Q, t.substr(Q, 2) === M ? (n = M, Q += 2) : (n = i, 0 === oe && le(U)), 1635n !== i && (r = ge()) !== i ? (125 === t.charCodeAt(Q) ? (o = B, Q++) : (o = i, 16360 === oe && le(G)), o !== i ? (ee = e, e = n = H(r)) : (Q = e, e = a)) : (Q = e, 1637e = a), e; 1638} 1639function ge() { 1640var e, n, r, o; 1641if (e = Q, Ee() !== i) if (46 === t.charCodeAt(Q) ? (n = j, Q++) : (n = i, 0 === oe && le($)), 1642n !== i) { 1643if (r = [], (o = ge()) !== i) for (;o !== i; ) r.push(o), o = ge(); else r = a; 1644r !== i ? (ee = e, e = W()) : (Q = e, e = a); 1645} else Q = e, e = a; else Q = e, e = a; 1646return e === i && (e = Ee()), e; 1647} 1648function Ee() { 1649var e, n, r, o; 1650if (e = Q, q.test(t.charAt(Q)) ? (n = t.charAt(Q), Q++) : (n = i, 0 === oe && le(X)), 1651n !== i) { 1652for (r = [], Y.test(t.charAt(Q)) ? (o = t.charAt(Q), Q++) : (o = i, 0 === oe && le(z)); o !== i; ) r.push(o), 1653Y.test(t.charAt(Q)) ? (o = t.charAt(Q), Q++) : (o = i, 0 === oe && le(z)); 1654r !== i ? (ee = e, e = n = F()) : (Q = e, e = a); 1655} else Q = e, e = a; 1656return e; 1657} 1658function be() { 1659var e, t, n, r, o; 1660if (e = Q, t = [], n = Q, r = Q, oe++, (o = de()) === i && (o = me()), oe--, o === i ? r = k : (Q = r, 1661r = a), r !== i && (o = Te()) !== i ? (ee = n, n = r = K(o)) : (Q = n, n = a), n !== i) for (;n !== i; ) t.push(n), 1662n = Q, r = Q, oe++, (o = de()) === i && (o = me()), oe--, o === i ? r = k : (Q = r, 1663r = a), r !== i && (o = Te()) !== i ? (ee = n, n = r = K(o)) : (Q = n, n = a); else t = a; 1664return t !== i && (ee = e, t = V(t)), e = t; 1665} 1666function Te() { 1667var e, n, r; 1668return e = Q, 92 === t.charCodeAt(Q) ? (n = L, Q++) : (n = i, 0 === oe && le(I)), 1669n !== i ? (Z.test(t.charAt(Q)) ? (r = t.charAt(Q), Q++) : (r = i, 0 === oe && le(J)), 1670r !== i ? (ee = e, e = n = N(r)) : (Q = e, e = a)) : (Q = e, e = a), e === i && (t.length > Q ? (e = t.charAt(Q), 1671Q++) : (e = i, 0 === oe && le(C))), e; 1672} 1673function ve(e) { 1674for (var t = [], n = 0; n < e.length; n++) void 0 === e[n].strict && t.push(e[n].text); 1675return t; 1676} 1677function Se(e) { 1678for (var t = {}, n = 0; n < e.length; n++) void 0 !== e[n].strict && (t[e[n].strict] = e[n].text); 1679return t; 1680} 1681if ((n = s()) !== i && Q === t.length) return n; 1682throw n !== i && Q < t.length && le({ 1683type: "end", 1684description: "end of input" 1685}), ce(null, ie, re); 1686} 1687}; 1688}(); 1689}, 16905345: function(e, t, n) { 1691"use strict"; 1692n.r(t), n.d(t, { 1693Error: function() { 1694return u; 1695}, 1696Info: function() { 1697return a; 1698}, 1699Success: function() { 1700return c; 1701}, 1702Warning: function() { 1703return l; 1704}, 1705init: function() { 1706return o; 1707} 1708}); 1709let r = n(3102); 1710class i { 1711constructor(e = {}) { 1712this.notifications = [], this.verticalSpace = e.verticalSpace || 8; 1713} 1714register(e) { 1715this.notifications.unshift(e), setTimeout(() => this.recalculate(), 20); 1716} 1717unregister(e) { 1718let t = this.notifications.indexOf(e); 1719this.notifications.splice(t, 1), this.recalculate(); 1720} 1721recalculate() { 1722let e = this.verticalSpace; 1723this.notifications.forEach(t => {
1724t.top = e, e += t.height + this.verticalSpace; 1725}); 1726} 1727} 1728function o(e) { 1729window.notificationManager || (window.notificationManager = new i(e)); 1730} 1731class s { 1732constructor(e, t, n) { 1733let r = `<div class="notification notification_popup notification_${t}">\n <div class="notification__content">${e}</div>\n <button title="ÐакÑÑÑÑ" class="notification__close"></button></div>`; 1734switch (document.body.insertAdjacentHTML("beforeEnd", r), this.elem = document.body.lastElementChild, 1735n) { 1736case void 0: 1737this.timeout = this.TIMEOUT_DEFAULT; 1738break; 1739 1740case "slow": 1741this.timeout = this.TIMEOUT_SLOW; 1742break; 1743 1744case "fast": 1745this.timeout = this.TIMEOUT_FAST; 1746break; 1747 1748default: 1749this.timeout = n; 1750} 1751window.notificationManager.register(this), this.setupCloseHandler(), this.setupCloseTimeout(); 1752} 1753get TIMEOUT_DEFAULT() { 1754return 3e3; 1755} 1756get TIMEOUT_SLOW() { 1757return 5e3; 1758} 1759get TIMEOUT_FAST() { 1760return 1500; 1761} 1762close() { 1763this.elem.parentNode && (this.elem.remove(), window.notificationManager.unregister(this)); 1764} 1765setupCloseHandler() { 1766this.delegate(".notification__close", "click", () => this.close()); 1767} 1768setupCloseTimeout() { 1769this.timeout && setTimeout(() => this.close(), this.timeout); 1770} 1771get height() { 1772return this.elem.offsetHeight; 1773} 1774set top(e) { 1775this.elem.style.transform = "translateY(" + e + "px)"; 1776} 1777} 1778r.delegateMixin(s.prototype); 1779class a extends s { 1780constructor(e, t) { 1781super(e, "info", t); 1782} 1783} 1784class l extends s { 1785constructor(e, t) { 1786super(e, "warning", t); 1787} 1788} 1789class c extends s { 1790constructor(e, t) { 1791super(e, "success", t); 1792} 1793} 1794class u extends s { 1795constructor(e, t) { 1796super(e, "error", t); 1797} 1798get TIMEOUT_DEFAULT() { 1799return 5e3; 1800} 1801} 1802}, 18035365: function(e, t) { 1804!function(e) { 1805var t, n = /("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/; 1806e.languages.css.selector = { 1807pattern: e.languages.css.selector.pattern, 1808lookbehind: !0, 1809inside: t = { 1810"pseudo-element": /:(?:after|before|first-letter|first-line|selection)|::[-\w]+/, 1811"pseudo-class": /:[-\w]+/, 1812class: /\.[-\w]+/, 1813id: /#[-\w]+/, 1814attribute: { 1815pattern: RegExp("\\[(?:[^[\\]\"']|" + n.source + ")*\\]"), 1816greedy: !0, 1817inside: { 1818punctuation: /^\[|\]$/, 1819"case-sensitivity": { 1820pattern: /(\s)[si]$/i, 1821lookbehind: !0, 1822alias: "keyword" 1823}, 1824namespace: { 1825pattern: /^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/, 1826lookbehind: !0, 1827inside: { 1828punctuation: /\|$/ 1829} 1830}, 1831"attr-name": { 1832pattern: /^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/, 1833lookbehind: !0 1834}, 1835"attr-value": [ n, { 1836pattern: /(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/, 1837lookbehind: !0 1838} ], 1839operator: /[|~*^$]?=/ 1840} 1841}, 1842"n-th": [ { 1843pattern: /(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/, 1844lookbehind: !0, 1845inside: { 1846number: /[\dn]+/, 1847operator: /[+-]/ 1848} 1849}, { 1850pattern: /(\(\s*)(?:even|odd)(?=\s*\))/i, 1851lookbehind: !0 1852} ], 1853combinator: />|\+|~|\|\|/, 1854punctuation: /[(),]/ 1855} 1856}, e.languages.css.atrule.inside["selector-function-argument"].inside = t, e.languages.insertBefore("css", "property", { 1857variable: { 1858pattern: /(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i, 1859lookbehind: !0 1860} 1861}); 1862var r = { 1863pattern: /(\b\d+)(?:%|[a-z]+(?![\w-]))/, 1864lookbehind: !0 1865}, i = { 1866pattern: /(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/, 1867lookbehind: !0 1868}; 1869e.languages.insertBefore("css", "function", { 1870operator: { 1871pattern: /(\s)[+\-*\/](?=\s)/, 1872lookbehind: !0 1873}, 1874hexcode: { 1875pattern: /\B#[\da-f]{3,8}\b/i, 1876alias: "color" 1877}, 1878color: [ { 1879pattern: /(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|RebeccaPurple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])
1879/i, 1880lookbehind: !0 1881}, { 1882pattern: /\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i, 1883inside: { 1884unit: r, 1885number: i, 1886function: /[\w-]+(?=\()/, 1887punctuation: /[(),]/ 1888} 1889} ], 1890entity: /\\[\da-f]{1,8}/i, 1891unit: r, 1892number: i 1893}); 1894}(Prism); 1895}, 18965566: function(e, t, n) { 1897(document.currentScript || [].slice.call(document.getElementsByTagName("script")).pop()).setAttribute("data-manual", 1), 1898n(3123), n(2346)(Prism); 1899let r = n(1328), i = n(6700), o = n(467); 1900function s(e) { 1901if (function(e) { 1902let t = e.querySelectorAll(".code-example:not([data-prism-highlighted])"); 1903for (let e of t) new r(e), e.setAttribute("data-prism-highlighted", "1"); 1904}(e), function(e) { 1905let t = e.querySelectorAll("div.code-tabs:not([data-prism-highlighted])"); 1906for (let e of t) new i(e), e.setAttribute("data-prism-highlighted", "1"); 1907}(e), window.ebookType) for (let e of document.querySelectorAll(".line-numbers-rows")) e.remove(); 1908} 1909t.init = function() { 1910document.removeEventListener("DOMContentLoaded", Prism.highlightAll), document.addEventListener("DOMContentLoaded", function() { 1911s(document); 1912}), o(); 1913}, t.highlight = s; 1914}, 19155624: function(e, t) { 1916Prism.languages.clike = { 1917comment: [ { 1918pattern: /(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/, 1919lookbehind: !0, 1920greedy: !0 1921}, { 1922pattern: /(^|[^\\:])\/\/.*/, 1923lookbehind: !0, 1924greedy: !0 1925} ], 1926string: { 1927pattern: /(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/, 1928greedy: !0 1929}, 1930"class-name": { 1931pattern: /(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i, 1932lookbehind: !0, 1933inside: { 1934punctuation: /[.\\]/ 1935} 1936}, 1937keyword: /\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/, 1938boolean: /\b(?:false|true)\b/, 1939function: /\b\w+(?=\()/, 1940number: /\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i, 1941operator: /[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/, 1942punctuation: /[{}[\];(),.:]/ 1943}; 1944}, 19455723: function(e, t) { 1946Prism.languages.javascript = Prism.languages.extend("clike", { 1947"class-name": [ Prism.languages.clike["class-name"], { 1948pattern: /(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/, 1949lookbehind: !0 1950} ], 1951keyword: [ { 1952pattern: /((?:^|\})\s*)catch\b/, 1953lookbehind: !0 1954}, { 1955pattern: /(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/, 1956lookbehind: !0 1957} ], 1958function: /#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/, 1959number: { 1960pattern: RegExp(/(^|[^\w$])/.source + "(?:" + /NaN|Infinity/.source + "|" + /0[bB][01]+(?:_[01]+)*n?/.source + "|" + /0[oO][0-7]+(?:_[0-7]+)*n?/.source + "|" + /0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source + "|" + /\d+(?:_\d+)*n/.source + "|" + /(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source + ")" + /(?![\w$])/.source), 1961lookbehind: !0 1962}, 1963operator: /--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/ 1964}), Prism.languages.javascript["class-name"][0].pattern = /(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/, 1965Prism.languages.insertBefore("javascript", "keyword", { 1966regex: { 1967pattern: RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source + /\//.source + "(?:" + /(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source + "|" + /(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source + ")" + /(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source), 1968lookbehind: !0, 1969greedy: !0, 1970inside: { 1971"regex-source": { 1972pattern: /^(\/)[\s\S]+(?=\/[a-z]*$)/, 1973lookbehind: !0, 1974alias: "language-regex", 1975inside: Prism.languages.regex 1976}, 1977"regex-delimiter": /^\/|\/$/, 1978"regex-flags": /^[a-z]+$/ 1979} 1980}, 1981"function-variable": { 1982pattern: /#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]
1982*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/, 1983alias: "function" 1984}, 1985parameter: [ { 1986pattern: /(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/, 1987lookbehind: !0, 1988inside: Prism.languages.javascript 1989}, { 1990pattern: /(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i, 1991lookbehind: !0, 1992inside: Prism.languages.javascript 1993}, { 1994pattern: /(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/, 1995lookbehind: !0, 1996inside: Prism.languages.javascript 1997}, { 1998pattern: /((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/, 1999lookbehind: !0, 2000inside: Prism.languages.javascript 2001} ], 2002constant: /\b[A-Z](?:[A-Z_]|\dx?)*\b/ 2003}), Prism.languages.insertBefore("javascript", "string", { 2004hashbang: { 2005pattern: /^#!.*/, 2006greedy: !0, 2007alias: "comment" 2008}, 2009"template-string": { 2010pattern: /`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/, 2011greedy: !0, 2012inside: { 2013"template-punctuation": { 2014pattern: /^`|`$/, 2015alias: "string" 2016}, 2017interpolation: { 2018pattern: /((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/, 2019lookbehind: !0, 2020inside: { 2021"interpolation-punctuation": { 2022pattern: /^\$\{|\}$/, 2023alias: "punctuation" 2024}, 2025rest: Prism.languages.javascript 2026} 2027}, 2028string: /[\s\S]+/ 2029} 2030}, 2031"string-property": { 2032pattern: /((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m, 2033lookbehind: !0, 2034greedy: !0, 2035alias: "property" 2036} 2037}), Prism.languages.insertBefore("javascript", "operator", { 2038"literal-property": { 2039pattern: /((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m, 2040lookbehind: !0, 2041alias: "property" 2042} 2043}), Prism.languages.markup && (Prism.languages.markup.tag.addInlined("script", "javascript"), 2044Prism.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source, "javascript")), 2045Prism.languages.js = Prism.languages.javascript; 2046}, 20476127: function(e, t, n) { 2048let r = n(1495), i = n(3102), o = n(8944), s = n(2924), a = n(225); 2049class l { 2050constructor() { 2051this.elem = document.createElement("div"), document.body.appendChild(this.elem); 2052let e = new Modal({ 2053hasClose: !1 2054}), t = new o; 2055e.setContent(t.elem), t.start(), this.onDocumentKeyDown = this.onDocumentKeyDown.bind(this); 2056let n = r({ 2057url: "/tutorial/map/part" 2058}); 2059n.addEventListener("success", t => { 2060e.remove(), this.elem.innerHTML = '<div class="tutorial-map-overlay"></div>', this.mapElem = this.elem.firstChild, 2061this.mapElem.innerHTML = t.result + '<button class="close-button tutorial-map-overlay__close"></button>', 2062this.mapElem.addEventListener("click", e => { 2063e.target.classList.contains("tutorial-map-overlay__close") && this.remove(); 2064}), document.addEventListener("keydown", this.onDocumentKeyDown), document.body.classList.add("tutorial-map_on"), 2065this.mapElem.addEventListener("scroll", a, { 2066passive: !0 2067}), new s(this.mapElem.firstElementChild); 2068}), n.addEventListener("fail", () => e.remove()); 2069} 2070remove() { 2071this.elem.dispatchEvent(new CustomEvent("tutorial-map-remove")), this.elem.remove(), 2072document.body.classList.remove("tutorial-map_on"), document.removeEventListener("keydown", this.onDocumentKeyDown); 2073} 2074onDocumentKeyDown(e) { 207527 == e.keyCode && (e.preventDefault(), this.remove()); 2076} 2077} 2078i.delegateMixin(l.prototype), e.exports = l; 2079}, 20806188: function(e, t, n) { 2081var r = { 2082"./en.yml": 6526 2083}; 2084function i(e) { 2085var t = o(e); 2086return n(t); 2087} 2088function o(e) { 2089if (!n.o(r, e)) { 2090var t = new Error("Cannot find module '" + e + "'"); 2091throw t.code = "MODULE_NOT_FOUND", t; 2092} 2093return r[e]; 2094} 2095i.keys = function() { 2096return Object.keys(r); 2097}, i.resolve = o, e.exports = i, i.id = 6188; 2098}, 20996339: function(e, t, n) { 2100var r = n(7726), i = "object" == typeof self && self && self.Object === Object && self, o = r || i || Function("return this")(); 2101e.exports = o; 2102}, 21036516: function(e, t, n) { 2104var r = n(4890), i = n(5116); 2105e.exports = function(e) { 2106return "symbol" == typeof e || i(e) && "[object Symbol]" == r(e); 2107}; 2108}, 21096526: function(e, t, n) { 2110"use strict"; 2111n.r(t), t.default = { 2112server_connection_error: "Server connection error.", 2113server_request_timeout: "Server request timeout.", 2114request_aborted: "Request was aborted.", 2115no_response: "No response from server.", 2116server_error: "Server error (code #{status}), try again later.", 2117invalid_format: "Invalid response format." 2118}; 2119}, 21206532: function(e) { 2121"use strict"; 2122var t = {}; 2123function n(e) { 2124var n; 2125return t[e] ? e : (n = e.toLowerCase().replace("_", "-"), t[n] ? n : (n = n.split("-")[0], 2126t[n] ? n : null)); 2127} 2128var r = /c\d+$/; 2129function i(e, i) { 2130var o = n(e); 2131if (!o) return -1; 2132if (!t[o].cFn) return 0; 2133var s = String(i), a = 0; 2134if (r.test(s)) { 2135var l = s.split("c"); 2136a = +l[1], i = Math.pow(10, a) * l[0], s = String(i); 2137} 2138var c = s.indexOf(".") < 0 ? "" : s.split(".")[1], u = c.length, d = c.replace(/0+$/, "").length, p = +i, h = +s.split(".")[0], f = 0 === c.length ? 0 : +c.replace(/0+$/, ""); 2139return t[o].cFn(p, h, u, +c, f, d, a); 2140} 2141function o(e, r) { 2142var i = n(e); 2143if (!i) return -1; 2144if (!t[i].oFn) return 0; 2145var o = String(r), s = o.indexOf(".") < 0 ? "" : o.split(".")[1], a = s.length, l = s.replace(/0+$/, "").length, c = +r, u = +o.split(".")[0], d = 0 === s.length ? 0 : +s.replace(/0+$/, ""); 2146return t[i].oFn(c, u, a, +s, d, l, 0); 2147} 2148e.exports = function(e, r) { 2149var o = n(e); 2150return o ? t[o].c[i(o, r)] : null; 2151}, e.exports.indexOf = i, e.exports.forms = function(e) { 2152var r = n(e); 2153return t[r] ? t[r].c : null; 2154}, e.exports.ordinal = function(e, r) { 2155var i = n(e); 2156return t[i] ? t[i].o[o(i, r)] : null; 2157}, e.exports.ordinal.indexOf = o, e.exports.ordinal.forms = function(e) { 2158var r = n(e); 2159return t[r] ? t[r].o : null; 2160}; 2161var s = [ "zero", "one", "two", "few", "many", "other" ]; 2162function a(e) { 2163return s[e]; 2164} 2165function l(e, n) { 2166var r; 2167for (n.c = n.c ? n.c.map(a) : [ "other" ], n.o = n.o ? n.o.map(a) : [ "other" ], 2168r = 0; r < e.length; r++) t[e[r]] = n; 2169} 2170function c(e, t, n) { 2171return e <= n && n <= t && n % 1 == 0; 2172} 2173function u(e, t) { 2174return e.indexOf(t) >= 0; 2175} 2176l([ "af", "an", "asa", "bem", "bez", "bg", "brx", "ce", "cgg", "chr", "ckb", "dv", "ee", "el", "eo", "eu", "fo", "fur", "gsw", "ha", "haw", "jgo", "jmc", "kaj", "kcg", "kkj", "kl", "ks", "ksb", "ku", "ky", "lb", "lg", "mas", "mgo", "ml", "mn", "nah", "nb", "nd", "nn", "nnh", "no", "nr", "ny", "nyn", "om", "os", "pap", "ps", "rm", "rof", "rwk", "saq", "sd", "sdh", "seh", "sn", "so", "ss", "ssy", "st", "syr", "ta", "te", "teo", "tig", "tn", "tr", "ts", "ug", "uz", "ve", "vo", "vun", "wae", "xh", "xog" ], { 2177c: [ 1, 5 ], 2178cFn: function(e) { 2179return 1 === e ? 0 : 1; 2180} 2181}), l([ "ak", "bho", "guw", "ln", "mg", "nso", "pa", "ti", "wa" ], { 2182c: [ 1, 5 ], 2183cFn: function(e) { 2184return c(0, 1, e) ? 0 : 1; 2185} 2186}), l([ "am", "doi", "fa", "kn", "pcm", "zu" ], { 2187c: [ 1, 5 ], 2188cFn: function(e, t) { 2189return 0 === t || 1 === e ? 0 : 1; 2190} 2191}), l([ "ar", "ars" ], { 2192c: [ 0, 1, 2, 3, 4, 5 ], 2193cFn: function(e) { 2194var t = e % 100; 2195return 0 === e ? 0 : 1 === e ? 1 : 2 === e ? 2 : c(3, 10, t) ? 3 : c(11, 99, t) ? 4 : 5; 2196} 2197}), l([ "as", "bn" ], { 2198c: [ 1, 5 ], 2199cFn: function(e, t) { 2200return 0 === t || 1 === e ? 0 : 1; 2201}, 2202o: [ 1, 2, 3, 4, 5 ], 2203oFn: function(e) { 2204return u([ 1, 5, 7, 8, 9, 10 ], e) ? 0 : u([ 2, 3 ], e) ? 1 : 4 === e ? 2 : 6 === e ? 3 : 4; 2205} 2206}), l([ "ast", "de", "et", "fi", "fy", "gl", "ia", "io", "nl", "sw", "ur", "yi" ], { 2207c: [ 1, 5 ], 2208cFn: function(e, t, n) { 2209return 1 === t && 0 === n ? 0 : 1; 2210} 2211}), l([ "az" ], { 2212c: [ 1, 5 ], 2213cFn: function(e) { 2214return 1 === e ? 0 : 1; 2215}, 2216o: [ 1, 3, 4, 5 ], 2217oFn: function(e, t) { 2218var n = t % 10, r = t % 100, i = t % 1e3; 2219return u([ 1, 2, 5, 7, 8 ], n) || u([ 20, 50, 70, 80 ], r) ? 0 : u([ 3, 4 ], n) || u([ 100, 200, 300, 400, 500, 600, 700, 800, 900 ], i) ? 1 : 0 === t || 6 === n || u([ 40, 60, 90 ], r) ? 2 : 3; 2220} 2221}), l([ "bal" ], {
2222c: [ 1, 5 ], 2223cFn: function(e) { 2224return 1 === e ? 0 : 1; 2225}, 2226o: [ 1, 5 ], 2227oFn: function(e) { 2228return 1 === e ? 0 : 1; 2229} 2230}), l([ "be" ], { 2231c: [ 1, 3, 4, 5 ], 2232cFn: function(e) { 2233var t = e % 10, n = e % 100; 2234return 1 === t && 11 !== n ? 0 : c(2, 4, t) && !c(12, 14, n) ? 1 : 0 === t || c(5, 9, t) || c(11, 14, n) ? 2 : 3; 2235}, 2236o: [ 3, 5 ], 2237oFn: function(e) { 2238var t = e % 100; 2239return u([ 2, 3 ], e % 10) && !u([ 12, 13 ], t) ? 0 : 1; 2240} 2241}), l([ "bm", "bo", "dz", "hnj", "id", "ig", "ii", "ja", "jbo", "jv", "jw", "kde", "kea", "km", "ko", "lkt", "my", "nqo", "osa", "sah", "ses", "sg", "su", "th", "to", "tpi", "und", "wo", "yo", "yue", "zh" ], {}), 2242l([ "br" ], { 2243c: [ 1, 2, 3, 4, 5 ], 2244cFn: function(e) { 2245var t = e % 10, n = e % 100, r = e % 1e6; 2246return 1 !== t || u([ 11, 71, 91 ], n) ? 2 !== t || u([ 12, 72, 92 ], n) ? !c(3, 4, t) && 9 !== t || c(10, 19, n) || c(70, 79, n) || c(90, 99, n) ? 0 !== e && 0 === r ? 3 : 4 : 2 : 1 : 0; 2247} 2248}), l([ "bs", "hr", "sh", "sr" ], { 2249c: [ 1, 3, 5 ], 2250cFn: function(e, t, n, r) { 2251var i = t % 10, o = t % 100, s = r % 10, a = r % 100; 2252return 0 === n && 1 === i && 11 !== o || 1 === s && 11 !== a ? 0 : 0 === n && c(2, 4, i) && !c(12, 14, o) || c(2, 4, s) && !c(12, 14, a) ? 1 : 2; 2253} 2254}), l([ "ca" ], { 2255c: [ 1, 5 ], 2256cFn: function(e, t, n) { 2257return 1 === t && 0 === n ? 0 : 1; 2258}, 2259o: [ 1, 2, 3, 5 ], 2260oFn: function(e) { 2261return u([ 1, 3 ], e) ? 0 : 2 === e ? 1 : 4 === e ? 2 : 3; 2262} 2263}), l([ "ceb" ], { 2264c: [ 1, 5 ], 2265cFn: function(e, t, n, r) { 2266var i = t % 10, o = r % 10; 2267return 0 === n && u([ 1, 2, 3 ], t) || 0 === n && !u([ 4, 6, 9 ], i) || 0 !== n && !u([ 4, 6, 9 ], o) ? 0 : 1; 2268} 2269}), l([ "cs", "sk" ], { 2270c: [ 1, 3, 4, 5 ], 2271cFn: function(e, t, n) { 2272return 1 === t && 0 === n ? 0 : c(2, 4, t) && 0 === n ? 1 : 0 !== n ? 2 : 3; 2273} 2274}), l([ "cy" ], { 2275c: [ 0, 1, 2, 3, 4, 5 ], 2276cFn: function(e) { 2277return 0 === e ? 0 : 1 === e ? 1 : 2 === e ? 2 : 3 === e ? 3 : 6 === e ? 4 : 5; 2278}, 2279o: [ 0, 1, 2, 3, 4, 5 ], 2280oFn: function(e) { 2281return u([ 0, 7, 8, 9 ], e) ? 0 : 1 === e ? 1 : 2 === e ? 2 : u([ 3, 4 ], e) ? 3 : u([ 5, 6 ], e) ? 4 : 5; 2282} 2283}), l([ "da" ], { 2284c: [ 1, 5 ], 2285cFn: function(e, t, n, r, i) { 2286return 1 === e || 0 !== i && u([ 0, 1 ], t) ? 0 : 1; 2287} 2288}), l([ "dsb", "hsb" ], { 2289c: [ 1, 2, 3, 5 ], 2290cFn: function(e, t, n, r) { 2291var i = t % 100, o = r % 100; 2292return 0 === n && 1 === i || 1 === o ? 0 : 0 === n && 2 === i || 2 === o ? 1 : 0 === n && c(3, 4, i) || c(3, 4, o) ? 2 : 3; 2293} 2294}), l([ "en" ], { 2295c: [ 1, 5 ], 2296cFn: function(e, t, n) { 2297return 1 === t && 0 === n ? 0 : 1; 2298}, 2299o: [ 1, 2, 3, 5 ], 2300oFn: function(e) { 2301var t = e % 10, n = e % 100; 2302return 1 === t && 11 !== n ? 0 : 2 === t && 12 !== n ? 1 : 3 === t && 13 !== n ? 2 : 3; 2303} 2304}), l([ "es" ], { 2305c: [ 1, 4, 5 ], 2306cFn: function(e, t, n, r, i, o, s) { 2307return 1 === e ? 0 : 0 === s && 0 !== t && 0 === t % 1e6 && 0 === n || !c(0, 5, s) ? 1 : 2; 2308} 2309}), l([ "ff", "kab" ], { 2310c: [ 1, 5 ], 2311cFn: function(e, t) { 2312return u([ 0, 1 ], t) ? 0 : 1; 2313} 2314}), l([ "fil", "tl" ], { 2315c: [ 1, 5 ], 2316cFn: function(e, t, n, r) { 2317var i = t % 10, o = r % 10; 2318return 0 === n && u([ 1, 2, 3 ], t) || 0 === n && !u([ 4, 6, 9 ], i) || 0 !== n && !u([ 4, 6, 9 ], o) ? 0 : 1; 2319}, 2320o: [ 1, 5 ], 2321oFn: function(e) { 2322return 1 === e ? 0 : 1; 2323} 2324}), l([ "fr" ], { 2325c: [ 1, 4, 5 ], 2326cFn: function(e, t, n, r, i, o, s) { 2327var a = t % 1e6; 2328return u([ 0, 1 ], t) ? 0 : 0 === s && 0 !== t && 0 === a && 0 === n || !c(0, 5, s) ? 1 : 2; 2329}, 2330o: [ 1, 5 ], 2331oFn: function(e) { 2332return 1 === e ? 0 : 1; 2333} 2334}), l([ "ga" ], { 2335c: [ 1, 2, 3, 4, 5 ], 2336cFn: function(e) { 2337return 1 === e ? 0 : 2 === e ? 1 : c(3, 6, e) ? 2 : c(7, 10, e) ? 3 : 4; 2338}, 2339o: [ 1, 5 ], 2340oFn: function(e) { 2341return 1 === e ? 0 : 1; 2342} 2343}), l([ "gd" ], { 2344c: [ 1, 2, 3, 5 ], 2345cFn: function(e) { 2346return u([ 1, 11 ], e) ? 0 : u([ 2, 12 ], e) ? 1 : c(3, 10, e) || c(13, 19, e) ? 2 : 3; 2347}, 2348o: [ 1, 2, 3, 5 ], 2349oFn: function(e) { 2350return u([ 1, 11 ], e) ? 0 : u([ 2, 12 ], e) ? 1 : u([ 3, 13 ], e) ? 2 : 3; 2351} 2352}), l([ "gu", "hi" ], { 2353c: [ 1, 5 ], 2354cFn: function(e, t) { 2355return 0 === t || 1 === e ? 0 : 1; 2356}, 2357o: [ 1, 2, 3, 4, 5 ], 2358oFn: function(e) { 2359return 1 === e ? 0 : u([ 2, 3 ], e) ? 1 : 4 === e ? 2 : 6 === e ? 3 : 4; 2360} 2361}), l([ "gv" ], { 2362c: [ 1, 2, 3, 4, 5 ], 2363cFn: function(e, t, n) { 2364var r = t % 10; 2365return 0 === n && 1 === r ? 0 : 0 === n && 2 === r ? 1 : 0 === n && u([ 0, 20, 40, 60, 80 ], t % 100) ? 2 : 0 !== n ? 3 : 4; 2366} 2367}), l([ "he" ], {
2368c: [ 1, 2, 4, 5 ], 2369cFn: function(e, t, n) { 2370var r = e % 10; 2371return 1 === t && 0 === n ? 0 : 2 === t && 0 === n ? 1 : 0 !== n || c(0, 10, e) || 0 !== r ? 3 : 2; 2372} 2373}), l([ "hu" ], { 2374c: [ 1, 5 ], 2375cFn: function(e) { 2376return 1 === e ? 0 : 1; 2377}, 2378o: [ 1, 5 ], 2379oFn: function(e) { 2380return u([ 1, 5 ], e) ? 0 : 1; 2381} 2382}), l([ "hy" ], { 2383c: [ 1, 5 ], 2384cFn: function(e, t) { 2385return u([ 0, 1 ], t) ? 0 : 1; 2386}, 2387o: [ 1, 5 ], 2388oFn: function(e) { 2389return 1 === e ? 0 : 1; 2390} 2391}), l([ "is" ], { 2392c: [ 1, 5 ], 2393cFn: function(e, t, n, r, i) { 2394return 0 === i && 1 === t % 10 && 11 !== t % 100 || 0 !== i ? 0 : 1; 2395} 2396}), l([ "it" ], { 2397c: [ 1, 4, 5 ], 2398cFn: function(e, t, n, r, i, o, s) { 2399return 1 === t && 0 === n ? 0 : 0 === s && 0 !== t && 0 === t % 1e6 && 0 === n || !c(0, 5, s) ? 1 : 2; 2400}, 2401o: [ 4, 5 ], 2402oFn: function(e) { 2403return u([ 11, 8, 80, 800 ], e) ? 0 : 1; 2404} 2405}), l([ "iu", "naq", "sat", "se", "sma", "smi", "smj", "smn", "sms" ], { 2406c: [ 1, 2, 5 ], 2407cFn: function(e) { 2408return 1 === e ? 0 : 2 === e ? 1 : 2; 2409} 2410}), l([ "ka" ], { 2411c: [ 1, 5 ], 2412cFn: function(e) { 2413return 1 === e ? 0 : 1; 2414}, 2415o: [ 1, 4, 5 ], 2416oFn: function(e, t) { 2417var n = t % 100; 2418return 1 === t ? 0 : 0 === t || c(2, 20, n) || 40 === n || 60 === n || 80 === n ? 1 : 2; 2419} 2420}), l([ "kk" ], { 2421c: [ 1, 5 ], 2422cFn: function(e) { 2423return 1 === e ? 0 : 1; 2424}, 2425o: [ 4, 5 ], 2426oFn: function(e) { 2427var t = e % 10; 2428return 6 === t || 9 === t || 0 === t && 0 !== e ? 0 : 1; 2429} 2430}), l([ "ksh" ], { 2431c: [ 0, 1, 5 ], 2432cFn: function(e) { 2433return 0 === e ? 0 : 1 === e ? 1 : 2; 2434} 2435}), l([ "kw" ], { 2436c: [ 0, 1, 2, 3, 4, 5 ], 2437cFn: function(e) { 2438var t = e % 100, n = e % 1e3, r = e % 1e5, i = e % 1e6; 2439return 0 === e ? 0 : 1 === e ? 1 : u([ 2, 22, 42, 62, 82 ], t) || 0 === n && (c(1e3, 2e4, r) || 4e4 === r || 6e4 === r || 8e4 === r) || 0 !== e && 1e5 === i ? 2 : u([ 3, 23, 43, 63, 83 ], t) ? 3 : 1 !== e && u([ 1, 21, 41, 61, 81 ], t) ? 4 : 5; 2440}, 2441o: [ 1, 4, 5 ], 2442oFn: function(e) { 2443var t = e % 100; 2444return c(1, 4, e) || c(1, 4, t) || c(21, 24, t) || c(41, 44, t) || c(61, 64, t) || c(81, 84, t) ? 0 : 5 === e || 5 === t ? 1 : 2; 2445} 2446}), l([ "lag" ], { 2447c: [ 0, 1, 5 ], 2448cFn: function(e, t) { 2449return 0 === e ? 0 : u([ 0, 1 ], t) && 0 !== e ? 1 : 2; 2450} 2451}), l([ "lij" ], { 2452c: [ 1, 5 ], 2453cFn: function(e, t, n) { 2454return 1 === t && 0 === n ? 0 : 1; 2455}, 2456o: [ 4, 5 ], 2457oFn: function(e) { 2458return 11 === e || 8 === e || c(80, 89, e) || c(800, 899, e) ? 0 : 1; 2459} 2460}), l([ "lo", "ms", "vi" ], { 2461o: [ 1, 5 ], 2462oFn: function(e) { 2463return 1 === e ? 0 : 1; 2464} 2465}), l([ "lt" ], { 2466c: [ 1, 3, 4, 5 ], 2467cFn: function(e, t, n, r) { 2468var i = e % 10, o = e % 100; 2469return 1 !== i || c(11, 19, o) ? c(2, 9, i) && !c(11, 19, o) ? 1 : 0 !== r ? 2 : 3 : 0; 2470} 2471}), l([ "lv", "prg" ], { 2472c: [ 0, 1, 5 ], 2473cFn: function(e, t, n, r) { 2474var i = e % 10, o = e % 100, s = r % 100, a = r % 10; 2475return 0 === i || c(11, 19, o) || 2 === n && c(11, 19, s) ? 0 : 1 === i && 11 !== o || 2 === n && 1 === a && 11 !== s || 2 !== n && 1 === a ? 1 : 2; 2476} 2477}), l([ "mk" ], { 2478c: [ 1, 5 ], 2479cFn: function(e, t, n, r) { 2480return 0 === n && 1 === t % 10 && 11 !== t % 100 || 1 === r % 10 && 11 !== r % 100 ? 0 : 1; 2481}, 2482o: [ 1, 2, 4, 5 ], 2483oFn: function(e, t) { 2484var n = t % 10, r = t % 100; 2485return 1 === n && 11 !== r ? 0 : 2 === n && 12 !== r ? 1 : u([ 7, 8 ], n) && !u([ 17, 18 ], r) ? 2 : 3; 2486} 2487}), l([ "mo", "ro" ], { 2488c: [ 1, 3, 5 ], 2489cFn: function(e, t, n) { 2490return 1 === t && 0 === n ? 0 : 0 !== n || 0 === e || c(2, 19, e % 100) ? 1 : 2; 2491}, 2492o: [ 1, 5 ], 2493oFn: function(e) { 2494return 1 === e ? 0 : 1; 2495} 2496}), l([ "mr" ], { 2497c: [ 1, 5 ], 2498cFn: function(e) { 2499return 1 === e ? 0 : 1; 2500}, 2501o: [ 1, 2, 3, 5 ], 2502oFn: function(e) { 2503return 1 === e ? 0 : u([ 2, 3 ], e) ? 1 : 4 === e ? 2 : 3; 2504} 2505}), l([ "mt" ], { 2506c: [ 1, 3, 4, 5 ], 2507cFn: function(e) { 2508var t = e % 100; 2509return 1 === e ? 0 : 0 === e || c(2, 10, t) ? 1 : c(11, 19, t) ? 2 : 3; 2510} 2511}), l([ "ne" ], { 2512c: [ 1, 5 ], 2513cFn: function(e) { 2514return 1 === e ? 0 : 1; 2515}, 2516o: [ 1, 5 ], 2517oFn: function(e) { 2518return c(1, 4, e) ? 0 : 1; 2519} 2520}), l([ "or" ], { 2521c: [ 1, 5 ], 2522cFn: function(e) { 2523return 1 === e ? 0 : 1; 2524}, 2525o: [ 1, 2, 3, 4, 5 ], 2526oFn: function(e) { 2527return 1 === e || 5 === e || c(7, 9, e) ? 0 : u([ 2, 3 ], e) ? 1 : 4 === e ? 2 : 6 === e ? 3 : 4; 2528} 2529}), l([ "pl" ], {
2530c: [ 1, 3, 4, 5 ], 2531cFn: function(e, t, n) { 2532var r = t % 10, i = t % 100; 2533return 1 === t && 0 === n ? 0 : 0 === n && c(2, 4, r) && !c(12, 14, i) ? 1 : 0 === n && 1 !== t && c(0, 1, r) || 0 === n && c(5, 9, r) || 0 === n && c(12, 14, i) ? 2 : 3; 2534} 2535}), l([ "pt" ], { 2536c: [ 1, 4, 5 ], 2537cFn: function(e, t, n, r, i, o, s) { 2538var a = t % 1e6; 2539return c(0, 1, t) ? 0 : 0 === s && 0 !== t && 0 === a && 0 === n || !c(0, 5, s) ? 1 : 2; 2540} 2541}), l([ "pt-pt" ], { 2542c: [ 1, 4, 5 ], 2543cFn: function(e, t, n, r, i, o, s) { 2544return 1 === t && 0 === n ? 0 : 0 === s && 0 !== t && 0 === t % 1e6 && 0 === n || !c(0, 5, s) ? 1 : 2; 2545} 2546}), l([ "ru" ], { 2547c: [ 1, 3, 4, 5 ], 2548cFn: function(e, t, n) { 2549var r = t % 10, i = t % 100; 2550return 0 === n && 1 === r && 11 !== i ? 0 : 0 === n && c(2, 4, r) && !c(12, 14, i) ? 1 : 0 === n && 0 === r || 0 === n && c(5, 9, r) || 0 === n && c(11, 14, i) ? 2 : 3; 2551} 2552}), l([ "sc", "scn" ], { 2553c: [ 1, 5 ], 2554cFn: function(e, t, n) { 2555return 1 === t && 0 === n ? 0 : 1; 2556}, 2557o: [ 4, 5 ], 2558oFn: function(e) { 2559return u([ 11, 8, 80, 800 ], e) ? 0 : 1; 2560} 2561}), l([ "shi" ], { 2562c: [ 1, 3, 5 ], 2563cFn: function(e, t) { 2564return 0 === t || 1 === e ? 0 : c(2, 10, e) ? 1 : 2; 2565} 2566}), l([ "si" ], { 2567c: [ 1, 5 ], 2568cFn: function(e, t, n, r) { 2569return u([ 0, 1 ], e) || 0 === t && 1 === r ? 0 : 1; 2570} 2571}), l([ "sl" ], { 2572c: [ 1, 2, 3, 5 ], 2573cFn: function(e, t, n) { 2574var r = t % 100; 2575return 0 === n && 1 === r ? 0 : 0 === n && 2 === r ? 1 : 0 === n && c(3, 4, r) || 0 !== n ? 2 : 3; 2576} 2577}), l([ "sq" ], { 2578c: [ 1, 5 ], 2579cFn: function(e) { 2580return 1 === e ? 0 : 1; 2581}, 2582o: [ 1, 4, 5 ], 2583oFn: function(e) { 2584return 1 === e ? 0 : 4 === e % 10 && 14 !== e % 100 ? 1 : 2; 2585} 2586}), l([ "sv" ], { 2587c: [ 1, 5 ], 2588cFn: function(e, t, n) { 2589return 1 === t && 0 === n ? 0 : 1; 2590}, 2591o: [ 1, 5 ], 2592oFn: function(e) { 2593var t = e % 100; 2594return u([ 1, 2 ], e % 10) && !u([ 11, 12 ], t) ? 0 : 1; 2595} 2596}), l([ "tk" ], { 2597c: [ 1, 5 ], 2598cFn: function(e) { 2599return 1 === e ? 0 : 1; 2600}, 2601o: [ 3, 5 ], 2602oFn: function(e) { 2603return u([ 6, 9 ], e % 10) || 10 === e ? 0 : 1; 2604} 2605}), l([ "tzm" ], { 2606c: [ 1, 5 ], 2607cFn: function(e) { 2608return c(0, 1, e) || c(11, 99, e) ? 0 : 1; 2609} 2610}), l([ "uk" ], { 2611c: [ 1, 3, 4, 5 ], 2612cFn: function(e, t, n) { 2613var r = t % 10, i = t % 100; 2614return 0 === n && 1 === r && 11 !== i ? 0 : 0 === n && c(2, 4, r) && !c(12, 14, i) ? 1 : 0 === n && 0 === r || 0 === n && c(5, 9, r) || 0 === n && c(11, 14, i) ? 2 : 3; 2615}, 2616o: [ 3, 5 ], 2617oFn: function(e) { 2618return 3 === e % 10 && 13 !== e % 100 ? 0 : 1; 2619} 2620}); 2621}, 26226700: function(e, t, n) { 2623let r = n(3102), i = n(8060); 2624class o { 2625constructor(e) { 2626if (window.ebookType) return; 2627this.elem = e, this.translateX = 0, this.switchesElem = e.querySelector("[data-code-tabs-switches]"), 2628this.switchesElemItems = this.switchesElem.firstElementChild, this.arrowLeft = e.querySelector("[data-code-tabs-left]"), 2629this.arrowRight = e.querySelector("[data-code-tabs-right]"), this.arrowLeft.onclick = e => { 2630e.preventDefault(), this.translateX = Math.max(0, this.translateX - this.switchesElem.offsetWidth), 2631this.renderTranslate(); 2632}, this.arrowRight.onclick = e => { 2633e.preventDefault(), this.translateX = Math.min(this.translateX + this.switchesElem.offsetWidth, this.switchesElemItems.offsetWidth - this.switchesElem.offsetWidth), 2634this.renderTranslate(); 2635}; 2636let t = this.elem.querySelector(".code-tabs__section_current"); 2637t !== t.parentElement.firstElementChild && this.highlightTab(t), this.delegate(".code-tabs__switch", "click", this.onSwitchClick); 2638} 2639onSwitchClick(e) { 2640e.preventDefault(); 2641let t, n = e.delegateTarget.parentNode.children, r = this.elem.querySelector("[data-code-tabs-content]").children; 2642for (let i = 0; i < n.length; i++) { 2643let o = n[i], s = r[i]; 2644o === e.delegateTarget ? (t = i, s.classList.add("code-tabs__section_current"), 2645o.classList.add("code-tabs__switch_current")) : (s.classList.remove("code-tabs__section_current"), 2646o.classList.remove("code-tabs__switch_current")); 2647} 26480 === t ? this.elem.classList.add("code-tabs_result_on") : (this.elem.classList.remove("code-tabs_result_on"), 2649this.highlightTab(r[t])); 2650} 2651highlightTab(e) { 2652if (e.highlighted) return; 2653let t = e.querySelector("pre"), n = t.querySelector("code"); 2654Prism.highlightElement(n), t.insertAdjacentHTML("afterBegin", i(t.innerHTML)), e.highlighted = !0; 2655} 2656renderTranslate() { 2657this.switchesElemItems.style.transform = "translateX(-" + this.translateX + "px)", 26580 === this.translateX ? this.arrowLeft.setAttribute("disabled", "") : this.arrowLeft.removeAttribute("disabled"), 2659this.translateX === this.switchesElemItems.offsetWidth - this.switchesElem.offsetWidth ? this.arrowRight.setAttribute("disabled", "") : this.arrowRight.removeAttribute("disabled"); 2660} 2661} 2662r.delegateMixin(o.prototype), e.exports = o; 2663}, 26646966: function(e, t) { 2665Prism.languages.sql = { 2666comment: { 2667pattern: /(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/, 2668lookbehind: !0 2669}, 2670variable: [ { 2671pattern: /@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/, 2672greedy: !0 2673}, /@[\w.$]+/ ], 2674string: { 2675pattern: /(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/, 2676greedy: !0, 2677lookbehind: !0 2678}, 2679identifier: { 2680pattern: /(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/, 2681greedy: !0, 2682lookbehind: !0, 2683inside: { 2684punctuation: /^`|`$/ 2685} 2686}, 2687function: /\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i, 2688keyword: /\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CA
2688SE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i, 2689boolean: /\b(?:FALSE|NULL|TRUE)\b/i, 2690number: /\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i, 2691operator: /[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i, 2692punctuation: /[;[\]()`,.]/ 2693}; 2694}, 26956970: function(e) { 2696e.exports = function(e) { 2697let t = e.getBoundingClientRect(), n = 0; 2698if (t.top < 0) n = t.bottom; else { 2699if (!(t.bottom > window.innerHeight)) return !0; 2700n = window.innerHeight - top; 2701} 2702return n > 10; 2703}; 2704}, 27056976: function(e, t) { 2706!function(e) { 2707var t = /\b(?:abstract|assert|boolean|break|byte|case|catch|char|class|const|continue|default|do|double|else|enum|exports|extends|final|finally|float|for|goto|if|implements|import|instanceof|int|interface|long|module|native|new|non-sealed|null|open|opens|package|permits|private|protected|provides|public|record(?!\s*[(){}[\]<>=%~.:,;?+\-*/&|^])|requires|return|sealed|short|static|strictfp|super|switch|synchronized|this|throw|throws|to|transient|transitive|try|uses|var|void|volatile|while|with|yield)\b/, n = /(?:[a-z]\w*\s*\.\s*)*(?:[A-Z]\w*\s*\.\s*)*/.source, r = { 2708pattern: RegExp(/(^|[^\w.])/.source + n + /[A-Z](?:[\d_A-Z]*[a-z]\w*)?\b/.source), 2709lookbehind: !0, 2710inside: { 2711namespace: { 2712pattern: /^[a-z]\w*(?:\s*\.\s*[a-z]\w*)*(?:\s*\.)?/, 2713inside: { 2714punctuation: /\./ 2715} 2716}, 2717punctuation: /\./ 2718} 2719}; 2720e.languages.java = e.languages.extend("clike", { 2721string: { 2722pattern: /(^|[^\\])"(?:\\.|[^"\\\r\n])*"/, 2723lookbehind: !0, 2724greedy: !0 2725}, 2726"class-name": [ r, { 2727pattern: RegExp(/(^|[^\w.])/.source + n + /[A-Z]\w*(?=\s+\w+\s*[;,=()]|\s*(?:\[[\s,]*\]\s*)?::\s*new\b)/.source), 2728lookbehind: !0, 2729inside: r.inside 2730}, { 2731pattern: RegExp(/(\b(?:class|enum|extends|implements|instanceof|interface|new|record|throws)\s+)/.source + n + /[A-Z]\w*\b/.source), 2732lookbehind: !0, 2733inside: r.inside 2734} ], 2735keyword: t, 2736function: [ e.languages.clike.function, {
vendor: 2,687 bytes, lines 2737-2806
2737pattern: /(::\s*)[a-z_]\w*/, 2738lookbehind: !0 2739} ], 2740number: /\b0b[01][01_]*L?\b|\b0x(?:\.[\da-f_p+-]+|[\da-f_]+(?:\.[\da-f_p+-]+)?)\b|(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?\d[\d_]*)?[dfl]?/i, 2741operator: { 2742pattern: /(^|[^.])(?:<<=?|>>>?=?|->|--|\+\+|&&|\|\||::|[?:~]|[-+*/%&|^!=<>]=?)/m, 2743lookbehind: !0 2744}, 2745constant: /\b[A-Z][A-Z_\d]+\b/ 2746}), e.languages.insertBefore("java", "string", { 2747"triple-quoted-string": { 2748pattern: /"""[ \t]*[\r\n](?:(?:"|"")?(?:\\.|[^"\\]))*"""/, 2749greedy: !0, 2750alias: "string" 2751}, 2752char: { 2753pattern: /'(?:\\.|[^'\\\r\n]){1,6}'/, 2754greedy: !0 2755} 2756}), e.languages.insertBefore("java", "class-name", { 2757annotation: { 2758pattern: /(^|[^.])@\w+(?:\s*\.\s*\w+)*/, 2759lookbehind: !0, 2760alias: "punctuation" 2761}, 2762generics: { 2763pattern: /<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&)|<(?:[\w\s,.?]|&(?!&))*>)*>)*>)*>/, 2764inside: { 2765"class-name": r, 2766keyword: t, 2767punctuation: /[<>(),.:]/, 2768operator: /[?&|]/ 2769} 2770}, 2771import: [ { 2772pattern: RegExp(/(\bimport\s+)/.source + n + /(?:[A-Z]\w*|\*)(?=\s*;)/.source), 2773lookbehind: !0, 2774inside: { 2775namespace: r.inside.namespace, 2776punctuation: /\./, 2777operator: /\*/, 2778"class-name": /\w+/ 2779} 2780}, { 2781pattern: RegExp(/(\bimport\s+static\s+)/.source + n + /(?:\w+|\*)(?=\s*;)/.source), 2782lookbehind: !0, 2783alias: "static", 2784inside: { 2785namespace: r.inside.namespace, 2786static: /\b\w+$/, 2787punctuation: /\./, 2788operator: /\*/, 2789"class-name": /\w+/ 2790} 2791} ], 2792namespace: { 2793pattern: RegExp(/(\b(?:exports|import(?:\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\s+)(?!<keyword>)[a-z]\w*(?:\.[a-z]\w*)*\.?/.source.replace(/<keyword>/g, function() { 2794return t.source; 2795})), 2796lookbehind: !0, 2797inside: { 2798punctuation: /\./ 2799} 2800} 2801}); 2802}(Prism); 2803}, 28047022: function(e, t) { 2805!function(e) { 2806var t = "\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_
2806CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b", n = { 2807pattern: /(^(["']?)\w+\2)[ \t]+\S.*/, 2808lookbehind: !0, 2809alias: "punctuation", 2810inside: null 2811}, r = { 2812bash: n, 2813environment: { 2814pattern: RegExp("\\$" + t), 2815alias: "constant" 2816}, 2817variable: [ { 2818pattern: /\$?\(\([\s\S]+?\)\)/, 2819greedy: !0, 2820inside: { 2821variable: [ { 2822pattern: /(^\$\(\([\s\S]+)\)\)/, 2823lookbehind: !0 2824}, /^\$\(\(/ ], 2825number: /\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/, 2826operator: /--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/, 2827punctuation: /\(\(?|\)\)?|,|;/ 2828} 2829}, { 2830pattern: /\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/, 2831greedy: !0, 2832inside: { 2833variable: /^\$\(|^`|\)$|`$/ 2834} 2835}, { 2836pattern: /\$\{[^}]+\}/, 2837greedy: !0, 2838inside: { 2839operator: /:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/, 2840punctuation: /[\[\]]/, 2841environment: { 2842pattern: RegExp("(\\{)" + t), 2843lookbehind: !0, 2844alias: "constant" 2845} 2846} 2847}, /\$(?:\w+|[#?*!@$])/ ], 2848entity: /\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/ 2849}; 2850e.languages.bash = { 2851shebang: { 2852pattern: /^#!\s*\/.*/, 2853alias: "important" 2854}, 2855comment: { 2856pattern: /(^|[^"{\\$])#.*/, 2857lookbehind: !0 2858}, 2859"function-name": [ { 2860pattern: /(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/, 2861lookbehind: !0, 2862alias: "function" 2863}, { 2864pattern: /\b[\w-]+(?=\s*\(\s*\)\s*\{)/, 2865alias: "function" 2866} ], 2867"for-or-select": { 2868pattern: /(\b(?:for|select)\s+)\w+(?=\s+in\s)/, 2869alias: "variable", 2870lookbehind: !0 2871}, 2872"assign-left": { 2873pattern: /(^|[\s;|&]|[<>]\()\w+(?:\.\w+)*(?=\+?=)/, 2874inside: { 2875environment: { 2876pattern: RegExp("(^|[\\s;|&]|[<>]\\()" + t), 2877lookbehind: !0, 2878alias: "constant" 2879} 2880}, 2881alias: "variable", 2882lookbehind: !0 2883}, 2884parameter: { 2885pattern: /(^|\s)-{1,2}(?:\w+:[+-]?)?\w+(?:\.\w+)*(?=[=\s]|$)/, 2886alias: "variable", 2887lookbehind: !0 2888}, 2889string: [ { 2890pattern: /((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/, 2891lookbehind: !0, 2892greedy: !0, 2893inside: r 2894}, { 2895pattern: /((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/, 2896lookbehind: !0, 2897greedy: !0, 2898inside: { 2899bash: n 2900} 2901}, { 2902pattern: /(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/, 2903lookbehind: !0, 2904greedy: !0, 2905inside: r 2906}, { 2907pattern: /(^|[^$\\])'[^']*'/, 2908lookbehind: !0, 2909greedy: !0 2910}, { 2911pattern: /\$'(?:[^'\\]|\\[\s\S])*'/, 2912greedy: !0, 2913inside: { 2914entity: r.entity 2915} 2916} ], 2917environment: { 2918pattern: RegExp("\\$?" + t), 2919alias: "constant" 2920}, 2921variable: r.variable, 2922function: { 2923pattern: /(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/, 2924lookbehind: !0 2925}, 2926keyword: { 2927pattern: /(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/, 2928lookbehind: !0 2929}, 2930builtin: { 2931pattern: /(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/, 2932lookbehind: !0, 2933alias: "class-name" 2934}, 2935boolean: { 2936pattern: /(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/, 2937lookbehind: !0 2938}, 2939"file-descriptor": { 2940pattern: /\B&\d\b/, 2941alias: "important" 2942}, 2943operator: { 2944pattern: /\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/, 2945inside: { 2946"file-descriptor": { 2947pattern: /^\d/, 2948alias: "important" 2949} 2950} 2951}, 2952punctuation: /\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/, 2953number: { 2954pattern: /(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/, 2955lookbehind: !0 2956} 2957}, n.inside = e.languages.bash; 2958for (var i = [ "comment", "function-name", "for-or-select", "assign-left", "parameter", "string", "environment", "function", "keyword", "builtin", "boolean", "file-descriptor", "operator", "punctuation", "number" ], o = r.variable[1].inside, s = 0; s < i.length; s++) o[i[s]] = e.languages.bash[i[s]]; 2959e.languages.sh = e.languages.bash, e.languages.shell = e.languages.bash; 2960}(Prism); 2961}, 29627200: function(e, t, n) { 2963var r = n(9591), i = n(3667); 2964e.exports = function(e, t, n) { 2965var o = !0, s = !0; 2966if ("function" != typeof e) throw new TypeError("Expected a function"); 2967return i(n) && (o = "leading" in n ? !!n.leading : o, s = "trailing" in n ? !!n.trailing : s), 2968r(e, t, { 2969leading: o, 2970maxWait: t, 2971trailing: s 2972}); 2973}; 2974}, 29757726: function(e, t, n) { 2976var r = "object" == typeof n.g && n.g && n.g.Object === Object && n.g; 2977e.exports = r; 2978}, 29797746: function(e, t, n) { 2980let r = n(2684); 2981function i(e, t) { 2982try { 2983(e.contentDocument || e.contentWindow.document).body; 2984} catch (e) { 2985return; 2986} 2987let n = setTimeout(function() { 2988t(new Error("timeout")); 2989}, 500); 2990function i(e, r) { 2991clearTimeout(n), t(e, r); 2992} 2993if (!e.offsetWidth) { 2994let t = e.cloneNode(!0); 2995return t.name = "", t.style.height = "50px", t.style.position = "absolute", t.style.display = "block", 2996t.style.top = "10000px", t.onload = function() { 2997let n = r(this.contentDocument); 2998e.style.display = "block", t.remove(), i(null, n); 2999}, void document.body.appendChild(t); 3000} 3001e.style.display = "block", e.style.height = "1px"; 3002let o = r(e.contentDocument); 3003e.style.height = "", i(null, o); 3004} 3005i.async = function(e, t) { 3006setTimeout(function() { 3007i(e, t); 3008}, 0); 3009}, e.exports = i; 3010}, 30118060: function(e) { 3012e.exports = function(e) { 3013let t, n = 1 + e.split("\n").length, r = new Array(n); 3014return r = r.join("<span></span>"), t = `<span class="line-numbers-rows">${r}</span>`, 3015t; 3016}; 3017}, 30188679: function(e, t, n) { 3019"use strict"; 3020var r = n(5304), i = n(6532); 3021function o(e) { 3022return Object.prototype.toString.call(e); 3023} 3024function s(e) { 3025return "[object String]" === o(e); 3026} 3027function a(e) { 3028return !isNaN(e) && isFinite(e); 3029} 3030function l(e) { 3031return !0 === e || !1 === e; 3032} 3033function c(e) { 3034return "[object Object]" === o(e); 3035} 3036var u = Array.isArray || function(e) { 3037return "[object Array]" === o(e); 3038}, d = Array.prototype.forEach; 3039function p(e, t, n) { 3040if (null !== e) if (d && e.forEach === d) e.forEach(t, n); else if (e.length === +e.length) for (var r = 0, i = e.length; r < i; r += 1) t.call(n, e[r], r, e); else for (var o in e) Object.prototype.hasOwnProperty.call(e, o) && t.call(n, e[o
3040], o, e); 3041} 3042var h = /%[sdj%]/g; 3043function f(e) { 3044var t = 1, n = arguments, r = n.length; 3045return String(e).replace(h, function(e) { 3046if ("%%" === e) return "%"; 3047if (t >= r) return e; 3048switch (e) { 3049case "%s": 3050return String(n[t++]); 3051 3052case "%d": 3053return Number(n[t++]); 3054 3055case "%j": 3056return JSON.stringify(n[t++]); 3057 3058default: 3059return e; 3060} 3061}); 3062} 3063function m(e) { 3064var t = {}; 3065return p(e || {}, function(e, n) { 3066e && "object" == typeof e ? p(m(e), function(e, r) { 3067t[n + "." + r] = e; 3068}) : t[n] = e; 3069}), t; 3070} 3071var g = "#@$"; 3072function E(e, t) { 3073return e + g + t; 3074} 3075function b(e, t, n) { 3076var r = E(t, n), i = e._storage; 3077if (i.hasOwnProperty(r)) return r; 3078if (t === e._defaultLocale) return null; 3079var o = e._fallbacks_cache; 3080if (o.hasOwnProperty(r)) return o[r]; 3081for (var s, a = e._fallbacks[t] || [ e._defaultLocale ], l = 0, c = a.length; l < c; l++) if (s = E(a[l], n), 3082i.hasOwnProperty(s)) return o[r] = s, o[r]; 3083return o[r] = null, null; 3084} 3085function T(e, t, n) { 3086var r = i.indexOf(e, t); 3087return -1 === r ? f('[pluralizer for "%s" locale not found]', e) : void 0 === n[r] ? f('[plural form %d ("%s") not found in translation]', r, i.forms(e)[r]) : n[r]; 3088} 3089function v(e) { 3090if (!(this instanceof v)) return new v(e); 3091this._defaultLocale = e ? String(e) : "en", this._fallbacks = {}, this._fallbacks_cache = {}, 3092this._storage = {}, this._plurals_cache = {}; 3093} 3094v.prototype.addPhrase = function(e, t, n, r) { 3095var i, o = this; 3096if (l(r)) i = r ? 1 / 0 : 0; else if (a(r)) { 3097if ((i = Math.floor(r)) < 0) throw new TypeError("Invalid flatten level (should be >= 0)."); 3098} else i = 1 / 0; 3099if (c(n) && i > 0) return p(n, function(n, r) { 3100o.addPhrase(e, (t ? t + "." : "") + r, n, i - 1); 3101}), this; 3102if (s(n)) this._storage[E(e, t)] = { 3103translation: n, 3104locale: e, 3105raw: !1 3106}; else { 3107if (!(u(n) || a(n) || l(n) || 0 === i && c(n))) throw new TypeError("Invalid translation - [String|Object|Array|Number|Boolean] expected."); 3108this._storage[E(e, t)] = { 3109translation: n, 3110locale: e, 3111raw: !0 3112}; 3113} 3114return o._fallbacks_cache = {}, this; 3115}, v.prototype.setFallback = function(e, t) { 3116var n = this._defaultLocale; 3117if (n === e) throw new Error("Default locale can't have fallbacks"); 3118var r = u(t) ? t.slice() : [ t ]; 3119return r[r.length - 1] !== n && r.push(n), this._fallbacks[e] = r, this._fallbacks_cache = {}, 3120this; 3121}; 3122var S = /#\{|\(\(|\\\\/; 3123v.prototype.translate = function(e, t, n) { 3124var i, l = b(this, e, t); 3125return l ? (i = this._storage[l]).raw ? i.translation : (i.hasOwnProperty("compiled") || (i.compiled = function(e, t, n) { 3126var i, o, s, a, l, c; 3127return S.test(t) ? 1 === (i = r.parse(t)).length && "literal" === i[0].type ? i[0].text : (e._plurals_cache[n] || (e._plurals_cache[n] = new v(n)),
3128c = e._plurals_cache[n], (o = []).push([ 'var str = "", strict, strict_exec, forms, forms_exec, plrl, cache, loc, loc_plzr, anchor;' ]), 3129o.push("params = flatten(params);"), p(i, function(e) { 3130if ("literal" !== e.type) { 3131if ("variable" === e.type) return s = e.anchor, void o.push(f('str += ("undefined" === typeof (params[%j])) ? "[missed variable: %s]" : params[%j];', s, s, s)); 3132if ("plural" !== e.type) throw new Error("Unknown node type"); 3133s = e.anchor, a = {}, p(e.strict, function(t, i) { 3134var o = r.parse(t); 3135if (1 === o.length && "literal" === o[0].type) return a[i] = !1, void (e.strict[i] = o[0].text); 3136a[i] = !0, c.hasPhrase(n, t, !0) || c.addPhrase(n, t, t); 3137}), l = {}, p(e.forms, function(t, i) { 3138var o, s = r.parse(t); 3139if (1 === s.length && "literal" === s[0].type) return o = s[0].text, e.forms[i] = o, 3140void (l[o] = !1); 3141l[t] = !0, c.hasPhrase(n, t, !0) || c.addPhrase(n, t, t); 3142}), o.push(f("loc = %j;", n)), o.push(f("loc_plzr = %j;", n.split(/[-_]/)[0])), 3143o.push(f("anchor = params[%j];", s)), o.push(f("cache = this._plurals_cache[loc];")), 3144o.push(f("strict = %j;", e.strict)), o.push(f("strict_exec = %j;", a)), o.push(f("forms = %j;", e.forms)), 3145o.push(f("forms_exec = %j;", l)), o.push("if (+(anchor) != anchor) {"), o.push(f(' str += "[invalid plurals amount: %s(" + anchor + ")]";', s)), 3146o.push("} else {"), o.push(" if (strict[anchor] !== undefined) {"), o.push(" plrl = strict[anchor];"), 3147o.push(" str += strict_exec[anchor] ? cache.t(loc, plrl, params) : plrl;"), o.push(" } else {"), 3148o.push(" plrl = pluralizer(loc_plzr, +anchor, forms);"), o.push(" str += forms_exec[plrl] ? cache.t(loc, plrl, params) : plrl;"), 3149o.push(" }"), o.push("}"); 3150} else o.push(f("str += %j;", e.text)); 3151}), o.push("return str;"), new Function("params", "flatten", "pluralizer", o.join("\n"))) : t; 3152}(this, i.translation, i.locale)), "[object Function]" !== o(i.compiled) ? i.compiled : ((a(n) || s(n)) && (n = { 3153count: n, 3154value: n 3155}), i.compiled.call(this, n, m, T))) : e + ": No translation for [" + t + "]"; 3156}, v.prototype.hasPhrase = function(e, t, n) { 3157return n ? this._storage.hasOwnProperty(E(e, t)) : !!b(this, e, t); 3158}, v.prototype.getLocale = function(e, t, n) { 3159if (n) return this._storage.hasOwnProperty(E(e, t)) ? e : null; 3160var r = b(this, e, t); 3161return r ? r.split(g, 2)[0] : null; 3162}, v.prototype.t = v.prototype.translate, v.prototype.stringify = function(e) { 3163var t = this, n = {}; 3164p(this._storage, function(e, t) { 3165n[t.split(g)[1]] = !0; 3166}); 3167var r = {}; 3168p(n, function(n, i) { 3169var o = b(t, e, i); 3170if (o) { 3171var s = t._storage[o].locale; 3172r[s] || (r[s] = {}), r[s][i] = t._storage[o].translation; 3173} 3174}); 3175var i = { 3176fallback: {}, 3177locales: r 3178}, o = (t._fallbacks[e] || []).slice(0, -1); 3179return o.length && (i.fallback[e] = o), JSON.stringify(i); 3180}, v.prototype.load = function(e) { 3181var t = this; 3182return s(e) && (e = JSON.parse(e)), p(e.locales, function(e, n) { 3183p(e, function(e, r) { 3184t.addPhrase(n, r, e, 0); 3185}); 3186}), p(e.fallback, function(e, n) { 3187t.setFallback(n, e); 3188}), this; 3189}, e.exports = v; 3190}, 31918849: function(e) { 3192e.exports = function(e, t) { 3193let n, r, i = !1; 3194return function o() { 3195if (i) return n = arguments, void (r = this); 3196e.apply(this, arguments), i = !0, setTimeout(() => { 3197i = !1, n && (o.apply(r, n), n = r = null); 3198}, t); 3199}; 3200}; 3201}, 32028944: function(e) { 3203function t(e) { 3204if (e = e || {}, this.elem = e.elem, this.size = e.size || "medium", this.class = e.class ? " " + e.class : "", 3205this.elemClass = e.elemClass, "medium" != this.size && "small" != this.size && "large" != this.size) throw new Error("Unsupported size: " + this.size); 3206this.elem || (this.elem = document.createElement("div")); 3207} 3208t.prototype.start = function() { 3209this.elemClass && this.elem.classList.toggle(this.elemClass), this.elem.insertAdjacentHTML("beforeend", '<span class="spinner spinner_active spinner_' + this.size + this.class + '"><span class="spinner__dot spinner__dot_1"></span><span class="spinner__dot spinner__dot_2"></span><span class="spinner__dot spinner__dot_3"></span></span>'); 3210}, t.prototype.stop = function() { 3211let e = this.elem.querySelector(".spinner"); 3212e && (e.remove(), this.elemClass && this.elem.classList.toggle(this.elemClass)); 3213}, window.Spinner = t, e.exports = t; 3214}, 32159006: function(e, t, n) { 3216var r = n(9474), i = /^\s+/; 3217e.exports = function(e) { 3218return e ? e.slice(0, r(e) + 1).replace(i, "") : e; 3219}; 3220}, 32219374: function(e, t, n) { 3222"use strict"; 3223n.r(t), t.default = { 3224output: "OUTPUT" 3225}; 3226}, 32279474: function(e) { 3228var t = /\s/; 3229e.exports = function(e) { 3230for (var n = e.length; n-- && t.test(e.charAt(n)); ) ; 3231return n; 3232}; 3233}, 32349516: function(e) { 3235e.exports = function(e) { 3236if (!e || !e.length) return ""; 3237let t = []; 3238for (let n of e) { 3239let e = `<code class="block-highlight${n.cols ? " block-highlight_inline" : ""}" data-start="${n.start}">`; 3240if (e += "\n".repeat(n.start), n.end) e += `<code class="mask">${"\n".repeat(n.end - n.start + 1)}</code>`; else if (n.cols) for (let t = 0; t < n.cols.length; t++) { 3241let r = n.cols[t], i = 0 === t ? null : n.cols[t - 1]; 3242e += " ".repeat(i ? r.start - i.end : r.start), e += `<code class="mask-inline">${" ".repeat(r.end - r.start)}</code>`; 3243} 3244e += "</code>
3244", t.push(e); 3245} 3246return t.join(""); 3247}; 3248}, 32499591: function(e, t, n) { 3250var r = n(3667), i = n(1486), o = n(1552), s = Math.max, a = Math.min; 3251e.exports = function(e, t, n) { 3252var l, c, u, d, p, h, f = 0, m = !1, g = !1, E = !0; 3253if ("function" != typeof e) throw new TypeError("Expected a function"); 3254function b(t) { 3255var n = l, r = c; 3256return l = c = void 0, f = t, d = e.apply(r, n); 3257} 3258function T(e) { 3259var n = e - h; 3260return void 0 === h || n >= t || n < 0 || g && e - f >= u; 3261} 3262function v() { 3263var e = i(); 3264if (T(e)) return S(e); 3265p = setTimeout(v, function(e) { 3266var n = t - (e - h); 3267return g ? a(n, u - (e - f)) : n; 3268}(e)); 3269} 3270function S(e) { 3271return p = void 0, E && l ? b(e) : (l = c = void 0, d); 3272} 3273function _() { 3274var e = i(), n = T(e); 3275if (l = arguments, c = this, h = e, n) { 3276if (void 0 === p) return function(e) { 3277return f = e, p = setTimeout(v, t), m ? b(e) : d; 3278}(h); 3279if (g) return clearTimeout(p), p = setTimeout(v, t), b(h); 3280} 3281return void 0 === p && (p = setTimeout(v, t)), d; 3282} 3283return t = o(t) || 0, r(n) && (m = !!n.leading, u = (g = "maxWait" in n) ? s(o(n.maxWait) || 0, t) : u, 3284E = "trailing" in n ? !!n.trailing : E), _.cancel = function() { 3285void 0 !== p && clearTimeout(p), f = 0, l = h = c = p = void 0; 3286}, _.flush = function() { 3287return void 0 === p ? d : S(i()); 3288}, _; 3289}; 3290}, 32919907: function(e) { 3292e.exports = { 3293lang: "en", 3294localCurrency: "EUR",
3295shopCurrency: "EUR", 3296env: "production", 3297rateShopTo: void 0, 3298countryCode, 3299ordersMail: "[email protected]", 3300providers: [ { 3301name: "Github", 3302id: "github" 3303}, { 3304name: "Discord", 3305id: "discord" 3306}, { 3307name: "Facebook", 3308id: "facebook" 3309}, { 3310name: "Google", 3311id: "google" 3312} ], 3313stripeKey: "pk_live_51HXm0nFjeNqw1p5a3mjFxSeNHh8OL94IyGcp3PHbZVoNuYUYjlM57YtZMIAM1zrEd1F6WIKfFs67KbTemRdNIySo00KfWS1yhr", 3314paypalClientId: "Ac86EanyVr7jcO5a_EwTK2vg1MGguuNX27jI4oC120g8xLMuAKmayooEcpc-mODQd4Gsmm7yqA1C7NM-", 3315telegramBotId: 7532264140, 3316lookatCodeUrlBase: "https://lookatcode.com", 3317isRTL: void 0 3318}; 3319} 3320}, __webpack_module_cache__ = {}; 3321function __webpack_require__(e) { 3322var t = __webpack_module_cache__[e]; 3323if (void 0 !== t) return t.exports; 3324var n = __webpack_module_cache__[e] = { 3325exports: {} 3326}; 3327return __webpack_modules__[e].call(n.exports, n, n.exports, __webpack_require__), 3328n.exports; 3329} 3330__webpack_require__.d = function(e, t) { 3331for (var n in t) __webpack_require__.o(t, n) && !__webpack_require__.o(e, n) && Object.defineProperty(e, n, { 3332enumerable: !0, 3333get: t[n] 3334}); 3335}, __webpack_require__.g = function() { 3336if ("object" == typeof globalThis) return globalThis; 3337try { 3338return this || new Function("return this")(); 3339} catch (e) { 3340if ("object" == typeof window) return window; 3341} 3342}(), __webpack_require__.o = function(e, t) { 3343return Object.prototype.hasOwnProperty.call(e, t); 3344}, __webpack_require__.r = function(e) { 3345"undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, { 3346value: "Module" 3347}), Object.defineProperty(e, "__esModule", { 3348value: !0 3349}); 3350}; 3351var __webpack_exports__ = {}; 3352!function() { 3353const delegate = __webpack_require__(3102), prism = __webpack_require__(5566), ItemSlider = __webpack_require__(1623); 3354function init() { 3355initTaskButtons(), initFolderList(), initViewMoreButton(), initCoursesSlider(), 3356prism.init(); 3357} 3358function initTaskButtons() { 3359delegate(document, ".task__solution", "click", function(e) { 3360e.target.closest(".task").classList.toggle("task_answer_open"); 3361}), delegate(document, ".task__answer-close", "click", function(e) { 3362e.target.closest(".task").classList.toggle("task_answer_open"); 3363}), delegate(document, ".task__step-show", "click", function(e) { 3364e.target.closest(".task__step").classList.toggle("task_step_open"); 3365}); 3366} 3367function initViewMoreButton() { 3368delegate(document, "a.list-sub__more", "click", function(e) { 3369e.preventDefault(); 3370const t = e.target; 3371for (let e of t.closest(".list-sub").querySelectorAll(".list-sub__item_phone_hidden")) e.classList.remove("list-sub__item_phone_hidden"); 3372t.style.display = "none"; 3373}); 3374} 3375function initFolderList() { 3376delegate(document, ".lessons-list__lesson_level_1 > .lessons-list__link", "click", function(e) { 3377let t = e.delegateTarget, n = t.closest(".lessons-list").querySelector(".lessons-list__lesson_open"); 3378n && n !== t.parentNode && n.classList.remove("lessons-list__lesson_open"), t.parentNode.classList.toggle("lessons-list__lesson_open"), 3379e.preventDefault(); 3380}); 3381} 3382function initCoursesSlider() { 3383const e = document.querySelector("[data-courses-slider]"); 3384e && new ItemSlider({ 3385el: e, 3386class: "slider_frontpage" 3387}); 3388} 3389window.runDemo = function(button) { 3390let demoElem, parent = button; 3391for (;(parent = parent.parentElement) && (demoElem = parent.querySelector("[data-demo]"), 3392!demoElem); ) ; 3393demoElem ? eval(demoElem.textContent) : alert("Error, no demo element"); 3394}, init(); 3395}(), function() { 3396let e = __webpack_require__(6127), t = __webpack_require__(2924), n = __webpack_require__(3102); 3397function r() { 3398/[&?]map\b/.test(location.href) || window.history.replaceState(null, null, ~location.href.indexOf("?") ? location.href + "&map" : location.href + "?map"), 3399(new e).elem.addEventListener("tutorial-map-remove", () => { 3400window.history.replaceState(null, null, location.href.replace(/[&?]map\b/, "")); 3401}); 3402} 3403!function() { 3404n(document, '[data-action="tutorial-map"]', "click", e => { 34051 === e.which && (e.preventDefault(), r()); 3406}); 3407let e = document.querySelector(".tutorial-map"); 3408e ? new t(e) : /[&?]map\b/.test(location.href) && r(); 3409}(); 3410}(), tutorial = __webpack_exports__; 3411})(); 3412//# sourceMappingURL=tutorial.4b5752675459006b4b6e.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.