/*! For license information please see prefix-runestone.e2abc79debce15fd.bundle.js.LICENSE.txt */ (self.webpackChunkWebComponents=self.webpackChunkWebComponents||[]).push([[222],{3403:()=>{!function(e){var t=function(t,n){var o;(o=function(t,i){i=i||0,t.find("> li > a.internal, > ul, > li > ul").each((function(t,a){var s=e(a),r=a.tagName.toLowerCase(),d=s.children("li"),l=e(s.parent("li"),s.parent().parent("li"));"ul"===r&&i>=n&&d.length>0&&(l.addClass("dropdown-submenu").children("a").first().attr("tabindex",-1),s.addClass("dropdown-menu")),o(s,i+1)}))})(t)};patchTables=function(){e("table.docutils").removeClass("docutils").addClass("table").attr("border",0)},e((function(){if(e("#navbar.navbar-fixed-top").length>0){var n=e("#navbar").height(),o=function(){scrollBy(0,-n-10)};location.hash&&o(),window.addEventListener("hashchange",o)}e(".dropdown-menu").each((function(){e(this).find("ul").each((function(t,n){e(n).addClass("unstyled")}))})),e("ul.globaltoc li").length?t(e("ul.globaltoc"),1):e(".globaltoc-container").remove(),t(e("ul.localtoc"),2),e(".dropdown-menu ul").not(".dropdown-menu").each((function(){var t=e(this),n=t.parent(),o=n[0].tagName.toLowerCase(),i=t.children().detach();"ul"===o?t.replaceWith(i):"li"===o&&(n.after(i),t.remove())})),$localLi=e("ul.localtoc li"),$localLi.length>2&&$localLi.first().after('
  • '),e(".dropdown-toggle").dropdown(),patchTables(),e("div.note").addClass("alert").addClass("alert-info"),e("div.warning").addClass("alert").addClass("alert-warning"),e("tt.docutils.literal").not(".xref").each((function(t,n){e(n).parent().hasClass("reference")||e(n).replaceWith((function(){return e("").text(e(this).text())}))}))}))}(window.jQuery)},19695:()=>{var e,t=!1;function n(){t||(function(){let t=$("[data-childcomponent]");t.addClass("runestone"),t.parent().closest("div").not("section").addClass("runestone"),t.parent().closest("div").css("max-width","none"),t.each((function(e){$(this),$(this).find(".ac_code_div, .ac_output").wrapAll("
    ")})),$("section img").wrap('
    '),e=$(".runestone").not(".runestone .runestone"),$("h1").before("
    ")}(),t=!0);let n=$("body"),o="present",a="full-height",s="bottom";n.hasClass(o)?($("section *").not("h1, .presentation-title, .btn-presenter, .runestone, .runestone *, section, .pre, code").removeClass("hidden"),$("#completionButton").removeClass("hidden"),n.removeClass(o),$("."+a).removeClass(a),$("."+s).removeClass(s),localStorage.setItem("presentMode","text"),e.removeClass("hidden"),undefined.disabled=!0):($("section *").not("h1, .presentation-title, .btn-presenter, .runestone, .runestone *, section, .pre, code").addClass("hidden"),$("#completionButton").addClass("hidden"),n.addClass(o),n.addClass(a),$("html").addClass(a),$("section .runestone").addClass(a),$(".ac-caption").addClass(s),localStorage.setItem("presentMode",o),i())}function o(){return active=e.filter(".active")}function i(t){void 0===t&&(t=0);let n=o();e.length&&(n.removeClass("active"),n=$(e[t]).addClass("active"),n.removeClass("hidden"),e.not(e.filter(".active")).addClass("hidden"))}window.nextExercise=function(){let t=o(),n=e.index(t)+1;n=0&&i(n)},$(document).on("runestone:login-complete",(function(){eBookConfig.isInstructor&&($(".navbar-right").prepend(""),$(".mode-select").change(n))}))},23836:()=>{!function(e){"use strict";e.i18n=e.i18n||{},e.extend(e.i18n.fallbacks,{ab:["ru"],ace:["id"],aln:["sq"],als:["gsw","de"],an:["es"],anp:["hi"],arn:["es"],arz:["ar"],av:["ru"],ay:["es"],ba:["ru"],bar:["de"],"bat-smg":["sgs","lt"],bcc:["fa"],"be-x-old":["be-tarask"],bh:["bho"],bjn:["id"],bm:["fr"],bpy:["bn"],bqi:["fa"],bug:["id"],"cbk-zam":["es"],ce:["ru"],crh:["crh-latn"],"crh-cyrl":["ru"],csb:["pl"],cv:["ru"],"de-at":["de"],"de-ch":["de"],"de-formal":["de"],dsb:["de"],dtp:["ms"],egl:["it"],eml:["it"],ff:["fr"],fit:["fi"],"fiu-vro":["vro","et"],frc:["fr"],frp:["fr"],frr:["de"],fur:["it"],gag:["tr"],gan:["gan-hant","zh-hant","zh-hans"],"gan-hans":["zh-hans"],"gan-hant":["zh-hant","zh-hans"],gl:["pt"],glk:["fa"],gn:["es"],gsw:["de"],hif:["hif-latn"],hsb:["de"],ht:["fr"],ii:["zh-cn","zh-hans"],inh:["ru"],iu:["ike-cans"],jut:["da"],jv:["id"],kaa:["kk-latn","kk-cyrl"],kbd:["kbd-cyrl"],khw:["ur"],kiu:["tr"],kk:["kk-cyrl"],"kk-arab":["kk-cyrl"],"kk-latn":["kk-cyrl"],"kk-cn":["kk-arab","kk-cyrl"],"kk-kz":["kk-cyrl"],"kk-tr":["kk-latn","kk-cyrl"],kl:["da"],"ko-kp":["ko"],koi:["ru"],krc:["ru"],ks:["ks-arab"],ksh:["de"],ku:["ku-latn"],"ku-arab":["ckb"],kv:["ru"],lad:["es"],lb:["de"],lbe:["ru"],lez:["ru"],li:["nl"],lij:["it"],liv:["et"],lmo:["it"],ln:["fr"],ltg:["lv"],lzz:["tr"],mai:["hi"],"map-bms":["jv","id"],mg:["fr"],mhr:["ru"],min:["id"],mo:["ro"],mrj:["ru"],mwl:["pt"],myv:["ru"],mzn:["fa"],nah:["es"],nap:["it"],nds:["de"],"nds-nl":["nl"],"nl-informal":["nl"],no:["nb"],os:["ru"],pcd:["fr"],pdc:["de"],pdt:["de"],pfl:["de"],pms:["it"],pt:["pt-br"],"pt-br":["pt"],qu:["es"],qug:["qu","es"],rgn:["it"],rmy:["ro"],"roa-rup":["rup"],rue:["uk","ru"],ruq:["ruq-latn","ro"],"ruq-cyrl":["mk"],"ruq-latn":["ro"],sa:["hi"],sah:["ru"],scn:["it"],sg:["fr"],sgs:["lt"],sli:["de"],sr:["sr-ec"],srn:["nl"],stq:["de"],su:["id"],szl:["pl"],tcy:["kn"],tg:["tg-cyrl"],tt:["tt-cyrl","ru"],"tt-cyrl":["ru"],ty:["fr"],udm:["ru"],ug:["ug-arab"],uk:["ru"],vec:["it"],vep:["et"],vls:["nl"],vmf:["de"],vot:["fi"],vro:["et"],wa:["fr"],wo:["fr"],wuu:["zh-hans"],xal:["ru"],xmf:["ka"],yi:["he"],za:["zh-hans"],zea:["nl"],zh:["zh-hans"],"zh-classical":["lzh"],"zh-cn":["zh-hans"],"zh-hant":["zh-hans"],"zh-hk":["zh-hant","zh-hans"],"zh-min-nan":["nan"],"zh-mo":["zh-hk","zh-hant","zh-hans"],"zh-my":["zh-sg","zh-hans"],"zh-sg":["zh-hans"],"zh-tw":["zh-hant","zh-hans"],"zh-yue":["yue"]})}(jQuery)},35773:()=>{!function(e){"use strict";var t={pluralRules:{ak:{one:"n = 0..1"},am:{one:"i = 0 or n = 1"},ar:{zero:"n = 0",one:"n = 1",two:"n = 2",few:"n % 100 = 3..10",many:"n % 100 = 11..99"},ars:{zero:"n = 0",one:"n = 1",two:"n = 2",few:"n % 100 = 3..10",many:"n % 100 = 11..99"},as:{one:"i = 0 or n = 1"},be:{one:"n % 10 = 1 and n % 100 != 11",few:"n % 10 = 2..4 and n % 100 != 12..14",many:"n % 10 = 0 or n % 10 = 5..9 or n % 100 = 11..14"},bh:{one:"n = 0..1"},bn:{one:"i = 0 or n = 1"},br:{one:"n % 10 = 1 and n % 100 != 11,71,91",two:"n % 10 = 2 and n % 100 != 12,72,92",few:"n % 10 = 3..4,9 and n % 100 != 10..19,70..79,90..99",many:"n != 0 and n % 1000000 = 0"},bs:{one:"v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11",few:"v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14"},cs:{one:"i = 1 and v = 0",few:"i = 2..4 and v = 0",many:"v != 0"},cy:{zero:"n = 0",one:"n = 1",two:"n = 2",few:"n = 3",many:"n = 6"},da:{one:"n = 1 or t != 0 and i = 0,1"},dsb:{one:"v = 0 and i % 100 = 1 or f % 100 = 1",two:"v = 0 and i % 100 = 2 or f % 100 = 2",few:"v = 0 and i % 100 = 3..4 or f % 100 = 3..4"},fa:{one:"i = 0 or n = 1"},ff:{one:"i = 0,1"},fil:{one:"v = 0 and i = 1,2,3 or v = 0 and i % 10 != 4,6,9 or v != 0 and f % 10 != 4,6,9"},fr:{one:"i = 0,1"},ga:{one:"n = 1",two:"n = 2",few:"n = 3..6",many:"n = 7..10"},gd:{one:"n = 1,11",two:"n = 2,12",few:"n = 3..10,13..19"},gu:{one:"i = 0 or n = 1"},guw:{one:"n = 0..1"},gv:{one:"v = 0 and i % 10 = 1",two:"v = 0 and i % 10 = 2",few:"v = 0 and i % 100 = 0,20,40,60,80",many:"v != 0"},he:{one:"i = 1 and v = 0",two:"i = 2 and v = 0",many:"v = 0 and n != 0..10 and n % 10 = 0"},hi:{one:"i = 0 or n = 1"},hr:{one:"v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11",few:"v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14"},hsb:{one:"v = 0 and i % 100 = 1 or f % 100 = 1",two:"v = 0 and i % 100 = 2 or f % 100 = 2",few:"v = 0 and i % 100 = 3..4 or f % 100 = 3..4"},hy:{one:"i = 0,1"},is:{one:"t = 0 and i % 10 = 1 and i % 100 != 11 or t != 0"},iu:{one:"n = 1",two:"n = 2"},iw:{one:"i = 1 and v = 0",two:"i = 2 and v = 0",many:"v = 0 and n != 0..10 and n % 10 = 0"},kab:{one:"i = 0,1"},kn:{one:"i = 0 or n = 1"},kw:{one:"n = 1",two:"n = 2"},lag:{zero:"n = 0",one:"i = 0,1 and n != 0"},ln:{one:"n = 0..1"},lt:{one:"n % 10 = 1 and n % 100 != 11..19",few:"n % 10 = 2..9 and n % 100 != 11..19",many:"f != 0"},lv:{zero:"n % 10 = 0 or n % 100 = 11..19 or v = 2 and f % 100 = 11..19",one:"n % 10 = 1 and n % 100 != 11 or v = 2 and f % 10 = 1 and f % 100 != 11 or v != 2 and f % 10 = 1"},mg:{one:"n = 0..1"},mk:{one:"v = 0 and i % 10 = 1 or f % 10 = 1"},mo:{one:"i = 1 and v = 0",few:"v != 0 or n = 0 or n != 1 and n % 100 = 1..19"},mr:{one:"i = 0 or n = 1"},mt:{one:"n = 1",few:"n = 0 or n % 100 = 2..10",many:"n % 100 = 11..19"},naq:{one:"n = 1",two:"n = 2"},nso:{one:"n = 0..1"},pa:{one:"n = 0..1"},pl:{one:"i = 1 and v = 0",few:"v = 0 and i % 10 = 2..4 and i % 100 != 12..14",many:"v = 0 and i != 1 and i % 10 = 0..1 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 12..14"},prg:{zero:"n % 10 = 0 or n % 100 = 11..19 or v = 2 and f % 100 = 11..19",one:"n % 10 = 1 and n % 100 != 11 or v = 2 and f % 10 = 1 and f % 100 != 11 or v != 2 and f % 10 = 1"},pt:{one:"i = 0..1"},ro:{one:"i = 1 and v = 0",few:"v != 0 or n = 0 or n != 1 and n % 100 = 1..19"},ru:{one:"v = 0 and i % 10 = 1 and i % 100 != 11",few:"v = 0 and i % 10 = 2..4 and i % 100 != 12..14",many:"v = 0 and i % 10 = 0 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 11..14"},se:{one:"n = 1",two:"n = 2"},sh:{one:"v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11",few:"v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14"},shi:{one:"i = 0 or n = 1",few:"n = 2..10"},si:{one:"n = 0,1 or i = 0 and f = 1"},sk:{one:"i = 1 and v = 0",few:"i = 2..4 and v = 0",many:"v != 0"},sl:{one:"v = 0 and i % 100 = 1",two:"v = 0 and i % 100 = 2",few:"v = 0 and i % 100 = 3..4 or v != 0"},sma:{one:"n = 1",two:"n = 2"},smi:{one:"n = 1",two:"n = 2"},smj:{one:"n = 1",two:"n = 2"},smn:{one:"n = 1",two:"n = 2"},sms:{one:"n = 1",two:"n = 2"},sr:{one:"v = 0 and i % 10 = 1 and i % 100 != 11 or f % 10 = 1 and f % 100 != 11",few:"v = 0 and i % 10 = 2..4 and i % 100 != 12..14 or f % 10 = 2..4 and f % 100 != 12..14"},ti:{one:"n = 0..1"},tl:{one:"v = 0 and i = 1,2,3 or v = 0 and i % 10 != 4,6,9 or v != 0 and f % 10 != 4,6,9"},tzm:{one:"n = 0..1 or n = 11..99"},uk:{one:"v = 0 and i % 10 = 1 and i % 100 != 11",few:"v = 0 and i % 10 = 2..4 and i % 100 != 12..14",many:"v = 0 and i % 10 = 0 or v = 0 and i % 10 = 5..9 or v = 0 and i % 100 = 11..14"},wa:{one:"n = 0..1"},zu:{one:"i = 0 or n = 1"}},convertPlural:function(t,n){var o,i,a,s,r=new RegExp("\\d+=","i");if(!n||0===n.length)return"";for(a=0;a{!function(e){"use strict";var t;t=new RegExp("(?:([A-Za-zªµºÀ-ÖØ-öø-ʸʻ-ˁːˑˠ-ˤˮͰ-ͳͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-҂Ҋ-ԯԱ-Ֆՙ-՟ա-և։ः-हऻऽ-ीॉ-ौॎ-ॐक़-ॡ।-ঀংঃঅ-ঌএঐও-নপ-রলশ-হঽ-ীেৈোৌৎৗড়ঢ়য়-ৡ০-ৱ৴-৺ਃਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਾ-ੀਖ਼-ੜਫ਼੦-੯ੲ-ੴઃઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽ-ીૉોૌૐૠૡ૦-૰ૹଂଃଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽାୀେୈୋୌୗଡ଼ଢ଼ୟ-ୡ୦-୷ஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹாிுூெ-ைொ-ௌௐௗ௦-௲ఁ-ఃఅ-ఌఎ-ఐఒ-నప-హఽు-ౄౘ-ౚౠౡ౦-౯౿ಂಃಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽ-ೄೆ-ೈೊೋೕೖೞೠೡ೦-೯ೱೲംഃഅ-ഌഎ-ഐഒ-ഺഽ-ീെ-ൈൊ-ൌൎൗൟ-ൡ൦-൵൹-ൿංඃඅ-ඖක-නඳ-රලව-ෆා-ෑෘ-ෟ෦-෯ෲ-෴ก-ะาำเ-ๆ๏-๛ກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆ໐-໙ໜ-ໟༀ-༗༚-༴༶༸༾-ཇཉ-ཬཿ྅ྈ-ྌ྾-࿅࿇-࿌࿎-࿚က-ာေးျြဿ-ၗၚ-ၝၡ-ၰၵ-ႁႃႄႇ-ႌႎ-ႜ႞-ჅჇჍა-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚ፠-፼ᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙿᚁ-ᚚᚠ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱ᜵᜶ᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳាើ-ៅះៈ។-៚ៜ០-៩᠐-᠙ᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤞᤣ-ᤦᤩ-ᤫᤰᤱᤳ-ᤸ᥆-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉ᧐-᧚ᨀ-ᨖᨙᨚ᨞-ᩕᩗᩡᩣᩤᩭ-ᩲ᪀-᪉᪐-᪙᪠-᪭ᬄ-ᬳᬵᬻᬽ-ᭁᭃ-ᭋ᭐-᭪᭴-᭼ᮂ-ᮡᮦᮧ᮪ᮮ-ᯥᯧᯪ-ᯬᯮ᯲᯳᯼-ᰫᰴᰵ᰻-᱉ᱍ-᱿᳀-᳇᳓᳡ᳩ-ᳬᳮ-ᳳᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼ‎ⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎ⅏Ⅰ-ↈ⌶-⍺⎕⒜-ⓩ⚬⠀-⣿Ⰰ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯ⵰ⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞ々-〇〡-〩〮〯〱-〵〸-〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎ㆐-ㆺㇰ-㈜㈠-㉏㉠-㉻㉿-㊰㋀-㋋㋐-㋾㌀-㍶㍻-㏝㏠-㏾㐀-䶵一-鿕ꀀ-ꒌꓐ-ꘌꘐ-ꘫꙀ-ꙮꚀ-ꚝꚠ-ꛯ꛲-꛷Ꜣ-ꞇ꞉-ꞭꞰ-ꞷꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠤꠧ꠰-꠷ꡀ-ꡳꢀ-ꣃ꣎-꣙ꣲ-ꣽ꤀-ꤥ꤮-ꥆꥒ꥓꥟-ꥼꦃ-ꦲꦴꦵꦺꦻꦽ-꧍ꧏ-꧙꧞-ꧤꧦ-ꧾꨀ-ꨨꨯꨰꨳꨴꩀ-ꩂꩄ-ꩋꩍ꩐-꩙꩜-ꩻꩽ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫫꫮ-ꫵꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭥꭰ-ꯤꯦꯧꯩ-꯬꯰-꯹가-힣ힰ-ퟆퟋ-ퟻ-舘並-龎ff-stﬓ-ﬗA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]|\ud800[\udc00-\udc0b]|\ud800[\udc0d-\udc26]|\ud800[\udc28-\udc3a]|𐀼|𐀽|\ud800[\udc3f-\udc4d]|\ud800[\udc50-\udc5d]|\ud800[\udc80-\udcfa]|𐄀|𐄂|\ud800[\udd07-\udd33]|\ud800[\udd37-\udd3f]|\ud800[\uddd0-\uddfc]|\ud800[\ude80-\ude9c]|\ud800[\udea0-\uded0]|\ud800[\udf00-\udf23]|\ud800[\udf30-\udf4a]|\ud800[\udf50-\udf75]|\ud800[\udf80-\udf9d]|\ud800[\udf9f-\udfc3]|\ud800[\udfc8-\udfd5]|\ud801[\udc00-\udc9d]|\ud801[\udca0-\udca9]|\ud801[\udd00-\udd27]|\ud801[\udd30-\udd63]|𐕯|\ud801[\ude00-\udf36]|\ud801[\udf40-\udf55]|\ud801[\udf60-\udf67]|𑀀|\ud804[\udc02-\udc37]|\ud804[\udc47-\udc4d]|\ud804[\udc66-\udc6f]|\ud804[\udc82-\udcb2]|𑂷|𑂸|\ud804[\udcbb-\udcc1]|\ud804[\udcd0-\udce8]|\ud804[\udcf0-\udcf9]|\ud804[\udd03-\udd26]|𑄬|\ud804[\udd36-\udd43]|\ud804[\udd50-\udd72]|\ud804[\udd74-\udd76]|\ud804[\udd82-\uddb5]|\ud804[\uddbf-\uddc9]|𑇍|\ud804[\uddd0-\udddf]|\ud804[\udde1-\uddf4]|\ud804[\ude00-\ude11]|\ud804[\ude13-\ude2e]|𑈲|𑈳|𑈵|\ud804[\ude38-\ude3d]|\ud804[\ude80-\ude86]|𑊈|\ud804[\ude8a-\ude8d]|\ud804[\ude8f-\ude9d]|\ud804[\ude9f-\udea9]|\ud804[\udeb0-\udede]|\ud804[\udee0-\udee2]|\ud804[\udef0-\udef9]|𑌂|𑌃|\ud804[\udf05-\udf0c]|𑌏|𑌐|\ud804[\udf13-\udf28]|\ud804[\udf2a-\udf30]|𑌲|𑌳|\ud804[\udf35-\udf39]|\ud804[\udf3d-\udf3f]|\ud804[\udf41-\udf44]|𑍇|𑍈|\ud804[\udf4b-\udf4d]|𑍐|𑍗|\ud804[\udf5d-\udf63]|\ud805[\udc80-\udcb2]|𑒹|\ud805[\udcbb-\udcbe]|𑓁|\ud805[\udcc4-\udcc7]|\ud805[\udcd0-\udcd9]|\ud805[\udd80-\uddb1]|\ud805[\uddb8-\uddbb]|𑖾|\ud805[\uddc1-\udddb]|\ud805[\ude00-\ude32]|𑘻|𑘼|𑘾|\ud805[\ude41-\ude44]|\ud805[\ude50-\ude59]|\ud805[\ude80-\udeaa]|𑚬|𑚮|𑚯|𑚶|\ud805[\udec0-\udec9]|\ud805[\udf00-\udf19]|𑜠|𑜡|𑜦|\ud805[\udf30-\udf3f]|\ud806[\udca0-\udcf2]|𑣿|\ud806[\udec0-\udef8]|\ud808[\udc00-\udf99]|\ud809[\udc00-\udc6e]|\ud809[\udc70-\udc74]|\ud809[\udc80-\udd43]|\ud80c[\udc00-\udfff]|\ud80d[\udc00-\udc2e]|\ud811[\udc00-\ude46]|\ud81a[\udc00-\ude38]|\ud81a[\ude40-\ude5e]|\ud81a[\ude60-\ude69]|𖩮|𖩯|\ud81a[\uded0-\udeed]|𖫵|\ud81a[\udf00-\udf2f]|\ud81a[\udf37-\udf45]|\ud81a[\udf50-\udf59]|\ud81a[\udf5b-\udf61]|\ud81a[\udf63-\udf77]|\ud81a[\udf7d-\udf8f]|\ud81b[\udf00-\udf44]|\ud81b[\udf50-\udf7e]|\ud81b[\udf93-\udf9f]|𛀀|𛀁|\ud82f[\udc00-\udc6a]|\ud82f[\udc70-\udc7c]|\ud82f[\udc80-\udc88]|\ud82f[\udc90-\udc99]|𛲜|𛲟|\ud834[\udc00-\udcf5]|\ud834[\udd00-\udd26]|\ud834[\udd29-\udd66]|\ud834[\udd6a-\udd72]|𝆃|𝆄|\ud834[\udd8c-\udda9]|\ud834[\uddae-\udde8]|\ud834[\udf60-\udf71]|\ud835[\udc00-\udc54]|\ud835[\udc56-\udc9c]|𝒞|𝒟|𝒢|𝒥|𝒦|\ud835[\udca9-\udcac]|\ud835[\udcae-\udcb9]|𝒻|\ud835[\udcbd-\udcc3]|\ud835[\udcc5-\udd05]|\ud835[\udd07-\udd0a]|\ud835[\udd0d-\udd14]|\ud835[\udd16-\udd1c]|\ud835[\udd1e-\udd39]|\ud835[\udd3b-\udd3e]|\ud835[\udd40-\udd44]|𝕆|\ud835[\udd4a-\udd50]|\ud835[\udd52-\udea5]|\ud835[\udea8-\udeda]|\ud835[\udedc-\udf14]|\ud835[\udf16-\udf4e]|\ud835[\udf50-\udf88]|\ud835[\udf8a-\udfc2]|\ud835[\udfc4-\udfcb]|\ud836[\udc00-\uddff]|\ud836[\ude37-\ude3a]|\ud836[\ude6d-\ude74]|\ud836[\ude76-\ude83]|\ud836[\ude85-\ude8b]|\ud83c[\udd10-\udd2e]|\ud83c[\udd30-\udd69]|\ud83c[\udd70-\udd9a]|\ud83c[\udde6-\ude02]|\ud83c[\ude10-\ude3a]|\ud83c[\ude40-\ude48]|🉐|🉑|[\ud840-\ud868][\udc00-\udfff]|\ud869[\udc00-\uded6]|\ud869[\udf00-\udfff]|[\ud86a-\ud86c][\udc00-\udfff]|\ud86d[\udc00-\udf34]|\ud86d[\udf40-\udfff]|\ud86e[\udc00-\udc1d]|\ud86e[\udc20-\udfff]|[\ud86f-\ud872][\udc00-\udfff]|\ud873[\udc00-\udea1]|\ud87e[\udc00-\ude1d]|[\udb80-\udbbe][\udc00-\udfff]|\udbbf[\udc00-\udffd]|[\udbc0-\udbfe][\udc00-\udfff]|\udbff[\udc00-\udffd])|([֐־׀׃׆׈-׿߀-ߪߴߵߺ-ࠕࠚࠤࠨ࠮-ࡘ࡜-࢟‏יִײַ-ﬨשׁ-ﭏ؈؋؍؛-ي٭-ٯٱ-ەۥۦۮۯۺ-ܐܒ-ܯ݋-ޥޱ-޿ࢠ-࣢ﭐ-ﴽ﵀-﷏ﷰ-﷼﷾﷿ﹰ-﻾]|\ud802[\udc00-\udd1e]|\ud802[\udd20-\ude00]|𐨄|\ud802[\ude07-\ude0b]|\ud802[\ude10-\ude37]|\ud802[\ude3b-\ude3e]|\ud802[\ude40-\udee4]|\ud802[\udee7-\udf38]|\ud802[\udf40-\udfff]|\ud803[\udc00-\ude5f]|\ud803[\ude7f-\udfff]|\ud83a[\udc00-\udccf]|\ud83a[\udcd7-\udfff]|\ud83b[\udc00-\uddff]|\ud83b[\udf00-\udfff]|\ud83b[\udf00-\udfff]|\ud83b[\udf00-\udfff]|\ud83b[\udf00-\udfff]|\ud83b[\udf00-\udfff]|\ud83b[\udf00-\udfff]|\ud83b[\udf00-\udfff]|\ud83b[\udf00-\udfff]|\ud83b[\udf00-\udfff]|\ud83b[\udf00-\udfff]|\ud83b[\udf00-\udfff]|\ud83b[\udf00-\udfff]|\ud83b[\udf00-\udfff]|\ud83b[\ude00-\udeef]|\ud83b[\udef2-\udeff]))"),e.extend(e.i18n.parser.emitter,{bidi:function(e){var n,o=(n=e[0].match(t))?void 0===n[2]?"ltr":"rtl":null;return"ltr"===o?"‪"+e[0]+"‬":"rtl"===o?"‫"+e[0]+"‬":e[0]}})}(jQuery)},41669:e=>{"use strict";e.exports=jQuery},46905:()=>{!function(e){"use strict";var t=function(){this.language=e.i18n.languages[String.locale]||e.i18n.languages.default};t.prototype={constructor:t,emit:function(t,n){var o,i,a,s=this;switch(typeof t){case"string":case"number":o=t;break;case"object":if(i=e.map(t.slice(1),(function(e){return s.emit(e,n)})),a=t[0].toLowerCase(),"function"!=typeof s[a])throw new Error('unknown operation "'+a+'"');o=s[a](i,n);break;case"undefined":o="";break;default:throw new Error("unexpected type in AST: "+typeof t)}return o},concat:function(t){var n="";return e.each(t,(function(e,t){n+=t})),n},replace:function(e,t){var n=parseInt(e[0],10);return n{!function(e){"use strict";var t=function(t){this.options=e.extend({},e.i18n.parser.defaults,t),this.language=e.i18n.languages[String.locale]||e.i18n.languages.default,this.emitter=e.i18n.parser.emitter};t.prototype={constructor:t,simpleParse:function(e,t){return e.replace(/\$(\d+)/g,(function(e,n){var o=parseInt(n,10)-1;return void 0!==t[o]?t[o]:"$"+n}))},parse:function(t,n){return t.indexOf("{{")<0?this.simpleParse(t,n):(this.emitter.language=e.i18n.languages[e.i18n().locale]||e.i18n.languages.default,this.emitter.emit(this.ast(t),n))},ast:function(e){var t,n,o,i,a,s,r,d,l,u,c,f,m,g,h,p,v,w,b,y=0;function k(e){return function(){var t,n;for(t=0;t1?["CONCAT"].concat(e):e[0]}function L(){var e=C([f,n,E]);return null===e?null:[e[0],e[2]]}function I(){var e=C([f,n,p]);return null===e?null:[e[0],e[2]]}function T(){var e=C([m,c,g]);return null===e?null:e[1]}if(t=S("|"),n=S(":"),o=S("\\"),i=x(/^./),a=S("$"),s=x(/^\d+/),r=x(/^[^{}[\]$\\]/),d=x(/^[^{}[\]$\\|]/),k([_,x(/^[^{}[\]$\s]/)]),l=k([_,d]),u=k([_,r]),w=x(/^[ !"$&'()*,./0-9;=?@A-Z^_`a-z~\x80-\xFF+-]+/),b=function(e){return e.toString()},f=function(){var e=w();return null===e?null:b(e)},c=k([function(){var e=C([k([L,I]),$(0,B)]);return null===e?null:e[0].concat(e[1])},function(){var e=C([f,$(0,B)]);return null===e?null:[e[0]].concat(e[1])}]),m=S("{{"),g=S("}}"),h=k([T,E,function(){var e=$(1,u)();return null===e?null:e.join("")}]),p=k([T,E,function(){var e=$(1,l)();return null===e?null:e.join("")}]),null===(v=function(){var e=$(0,h)();return null===e?null:["CONCAT"].concat(e)}())||y!==e.length)throw new Error("Parse error at position "+y.toString()+" in input: "+e);return v}},e.extend(e.i18n.parser,new t)}(jQuery)},51399:()=>{!function(e){"use strict";var t=function(){this.messages={},this.sources={}};t.prototype={load:function(t,n){var o,i,a=null,s=[],r=this;if("string"==typeof t)return e.i18n.log("Loading messages from: "+t),(o=t,i=e.Deferred(),e.getJSON(o).done(i.resolve).fail((function(t,n,a){e.i18n.log("Error in loading messages from "+o+" Exception: "+a),i.resolve()})),i.promise()).done((function(e){r.set(n,e)})).promise();if(n)return r.set(n,t),e.Deferred().resolve();for(a in t)Object.prototype.hasOwnProperty.call(t,a)&&(n=a,s.push(r.load(t[a],n)));return e.when.apply(e,s)},set:function(t,n){this.messages[t]?this.messages[t]=e.extend(this.messages[t],n):this.messages[t]=n},get:function(e,t){return this.messages[e]&&this.messages[e][t]}},e.extend(e.i18n.messageStore,new t)}(jQuery)},52329:()=>{!function(e){"use strict";var t,n,o,i=Array.prototype.slice;(t=function(n){this.options=e.extend({},t.defaults,n),this.parser=this.options.parser,this.locale=this.options.locale,this.messageStore=this.options.messageStore,this.languages={}}).prototype={localize:function(t){var n,o,i,a,s,r;for(i=this.locale,a=0;i;){o=(n=i.split("-")).length;do{if(s=n.slice(0,o).join("-"),r=this.messageStore.get(s,t))return r;o--}while(o);if("en"===i)break;i=e.i18n.fallbacks[this.locale]&&e.i18n.fallbacks[this.locale][a]||this.options.fallbackLocale,e.i18n.log("Trying fallback locale for "+this.locale+": "+i+" ("+t+")"),a++}return""},destroy:function(){e.removeData(document,"i18n")},load:function(t,n){var o,i,a,s={};if(t||n||(t="i18n/"+e.i18n().locale+".json",n=e.i18n().locale),"string"==typeof t&&"json"!==t.split("?")[0].split(".").pop()){for(s[n]=t+"/"+n+".json",o=(e.i18n.fallbacks[n]||[]).concat(this.options.fallbackLocale),i=0;i{!function(e){e.idleTimer=function(t,n,o){o=e.extend({startImmediately:!0,idle:!1,enabled:!0,timeout:3e4,events:"mousemove keydown DOMMouseScroll mousewheel mousedown touchstart touchmove"},o),n=n||document;var i=function(t){"number"==typeof t&&(t=void 0);var a=e.data(t||n,"idleTimerObj");a.idle=!a.idle;var s=+new Date-a.olddate;if(a.olddate=+new Date,a.idle&&s{"use strict";function o(){return!!document.querySelector("body.pretext")}function i(e,t,n,i){var a=window.location.pathname;-1!==a.indexOf("?")&&(a=a.substring(0,a.lastIndexOf("?")));let s=o();var r={lastPageUrl:a,lastPageScrollLocation:Math.round($(window).scrollTop()),completionFlag:e,pageLoad:t,markingComplete:n,markingIncomplete:i,course:eBookConfig.course,isPtxBook:s};$(document).ajaxError((function(e,t,n,o){console.log("Request Failed for "+n.url),console.log(e)})),jQuery.ajax({url:`${eBookConfig.new_server_prefix}/logger/updatelastpage`,contentType:"application/json; charset=utf-8",dataType:"json",data:JSON.stringify(r),method:"POST",async:!0})}n.d(t,{w:()=>p}),n(67375),n(66495),n(52329),n(39161),n(46905),n(23836),n(51399),n(49276),n(35773),n(52754),n(3403),n(83057),$(document).on("runestone:login",(function(){var e;!function(){if(!window.location.href.match(/(\/index.html|toctree.html|genindex.html|navhelp.html|toc.html|assignments.html|Exercises.html)/)){var e=window.location.pathname;-1!==e.indexOf("?")&&(e=e.substring(0,e.lastIndexOf("?")));var t={lastPageUrl:e,isPtxBook:o()};jQuery.ajax({url:`${eBookConfig.new_server_prefix}/logger/getCompletionStatus`,data:t,async:!1}).done((function(e){if("None"!=e){var t,n;1==e.detail[0].completionStatus?(t="buttonConfirmCompletion",n=" Completed. Well Done!"):(t="buttonAskCompletion",n="Mark as Completed");let o=document.querySelector("#scprogresscontainer");o&&o.classList.add("ptx-runestone-container"),$("#scprogresscontainer").append('
    ")}}))}}(),void 0!==(e=$.getUrlVar("lastPosition"))&&($("body").append(''),$("html, body").animate({scrollTop:parseInt(e)},1e3)),function(){if(!window.location.href.match(/(index.html|genindex.html|navhelp.html|toc.html|assignments.html|Exercises.html|toctree.html)/)){var e,t=-$("#navLinkBgRight").outerWidth()-5;$("#completionButton").hasClass("buttonAskCompletion")?e=t+70:$("#completionButton").hasClass("buttonConfirmCompletion")&&(e=0);var n=$("#relations-next").css("right"),o=-(t+35);$("#navLinkBgRight").css("right",t).show();var a=!1;$(window).scroll((function(){$(window).scrollTop()+$(window).height()==$(document).height()?($("#navLinkBgRight").animate({right:e},200),$("#navLinkBgLeft").animate({left:"0px"},200),$("#completionButton").hasClass("buttonConfirmCompletion")&&$("#relations-next").animate({right:o},200),a=!0):a&&($("#navLinkBgRight").animate({right:t},200),$("#navLinkBgLeft").animate({left:"-65px"},200),$("#relations-next").animate({right:n}),a=!1)}));var s=0;i(s=$("#completionButton").hasClass("buttonAskCompletion")?0:1,!0,!1,!1),$("#completionButton").on("click",(function(){var a=!1,r=!1;$(this).hasClass("buttonAskCompletion")?($(this).removeClass("buttonAskCompletion").addClass("buttonConfirmCompletion").html(" Completed. Well Done!"),$("#navLinkBgRight").animate({right:0}),$("#relations-next").animate({right:o}),e=0,s=1,a=!0):$(this).hasClass("buttonConfirmCompletion")&&($(this).removeClass("buttonConfirmCompletion").addClass("buttonAskCompletion").html("Mark as Completed"),e=t+70,$("#navLinkBgRight").animate({right:e}),$("#relations-next").animate({right:n}),s=0,r=!0),i(s,!1,a,r)}))}}(),function(){if(-1!=window.location.href.toLowerCase().indexOf("toc.html")||-1!=window.location.href.toLowerCase().indexOf("index.html")||-1!=window.location.href.toLowerCase().indexOf("frontmatter")){o()||jQuery.get(`${eBookConfig.new_server_prefix}/logger/getAllCompletionStatus`,(function(e){var t;if("None"!=e){t=e.detail;var n=$("#main-content div li a");$.each(t,(function(e,t){for(var o=0;o- Completed this topic on '+t.endDate+"").children().first().hover((function(){$(this).next(".infoTextCompleted").show()}),(function(){$(this).next(".infoTextCompleted").hide()})):0==t.completionStatus&&$(n[o].parentElement).addClass("active").append('Last read this topic on '+t.endDate+"").children().first().hover((function(){$(this).next(".infoTextActive").show()}),(function(){$(this).next(".infoTextActive").hide()})))}))}}));var e={course:eBookConfig.course};jQuery.get(`${eBookConfig.new_server_prefix}/logger/getlastpage`,e,(function(e){var t;"None"!=e&&null!=(t=e.detail).lastPageChapter&&$("#continue-reading").show().html('
    You were Last Reading: '+t.lastPageChapter+(t.lastPageSubchapter?" > "+t.lastPageSubchapter:"")+' Continue Reading
    ')}))}}()})),$.extend({getUrlVars:function(){for(var e,t=[],n=window.location.search.slice(window.location.search.indexOf("?")+1).split("&"),o=0;o{t.addEventListener("click",(function(){let n=t.getAttribute("data-knowl");e.logBookEvent({event:"knowl",act:"click",div_id:n})}))})),document.querySelectorAll("details.born-hidden-knowl").forEach((t=>{t.addEventListener("toggle",(function(){if(t.open){let n=t.id;e.logBookEvent({event:"knowl",act:"open",div_id:n})}}))})),document.querySelectorAll(".sagecell_evalButton").forEach((t=>{t.addEventListener("click",(function(){let n=t.closest(".ptx-sagecell"),o=n?n.querySelector(".sagecell_input"):null,i=(o&&o.textContent,n?n.id:null);i?e.logBookEvent({event:"sage",act:"run",div_id:i}):console.warn("Could not find container or div_id for sagecell button")}))})),"undefined"==typeof eBookConfig||eBookConfig.isInstructor||document.querySelectorAll(".commentary").forEach((e=>{e.style.display="none"}))}();let e=document.getElementById("primary-navbar-sticky-wrapper");e&&(e.style.overflow="visible")})),n(19695);var s=n(98098);class r extends a.A{constructor(){super(),this.initSplice()}initSplice(){window.addEventListener("message",(async e=>{var t,n,o=this.sendingIframe(e);if(console.log(`SpliceWrapper: received message subject: ${e.data.subject} from iframe: ${o?o.id:"unknown"}`),"SPLICE.reportScoreAndState"==e.data.subject)this.handleScoreAndState(e,o);else if("SPLICE.sendEvent"==e.data.subject)this.handleSpliceEvent(e,o);else if("SPLICE.getState"==e.data.subject)await this.handleGetState(e,o);else if("https://www.myopenmath.com"===e.origin&&"string"==typeof e.data&&-1!=e.data.indexOf("lti.ext.imathas.result")){let o=JSON.parse(e.data),i=(t=o.jwt.split(".")[1].replace(/-/g,"+").replace(/_/g,"/"),n=decodeURIComponent(window.atob(t).split("").map((function(e){return"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)})).join("")),JSON.parse(n));console.log("Result received from frame "+o.frame_id+" with score "+i.score)}}))}getUniqueID(e,t){if(t){let e=t.closest("[data-component]");if(e)return e.id}let n=e.data.activity_id;return n||(t?n=t.src:(n="unknown",console.error("Could not find iframe that sent the SPLICE event"))),n}handleScoreAndState(e,t){console.log("Got SPLICE.reportScoreAndState"),console.log(e.data.activity_id),console.log(e.data.score),console.log(e.data.state);let n=this.getUniqueID(e,t);this.logBookEvent({event:e.data.subject,div_id:n,act:`score: ${e.data.score}`,score:e.data.score,percent:e.data.score,correct:1==e.data.score,answer:JSON.stringify(e.data.state)})}sendingIframe(e){for(const t of document.getElementsByTagName("iframe"))if(t.contentWindow===e.source)return t}async getSavedState(e){try{const t=await fetch("/ns/assessment/results",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({div_id:e,course:eBookConfig.course,event:"SPLICE.getState"})});if(!t.ok)throw new Error(`HTTP error! status: ${t.status}`);return await t.json()}catch(e){return console.error("Error fetching SPLICE state:",e),null}}async handleGetState(e,t){console.log("Got SPLICE.getState"),console.log(e.data.activity_id),console.log(e.data.state);let n=this.getUniqueID(e,t),o=(await this.getSavedState(n)).detail.answer;e.source.postMessage({message_id:e.data.message_id,subject:"SPLICE.getState.response",state:o},"*")}handleSpliceEvent(e,t){console.log("Got SPLICE.sendEvent"),console.log(e.data.activity_id),console.log(e.data.name);let n=this.getUniqueID(e,t);this.logBookEvent({event:e.data.subject,div_id:n,act:e.data.name||"unknown"})}checkLocalStorage(){}setLocalStorage(){}restoreAnswers(){}disableInteraction(){}}const d={activecode:()=>Promise.all([n.e(249),n.e(296),n.e(625),n.e(764),n.e(877)]).then(n.bind(n,73565)),ble:()=>n.e(817).then(n.bind(n,29817)),clickablearea:()=>Promise.all([n.e(529),n.e(198)]).then(n.bind(n,58529)),codelens:()=>Promise.all([n.e(764),n.e(412)]).then(n.bind(n,76412)),datafile:()=>n.e(580).then(n.bind(n,33580)),dragndrop:()=>Promise.all([n.e(759),n.e(621)]).then(n.bind(n,56759)),fillintheblank:()=>Promise.all([n.e(466),n.e(294)]).then(n.bind(n,64466)),groupsub:()=>Promise.all([n.e(28),n.e(616)]).then(n.bind(n,24616)),khanex:()=>n.e(340).then(n.bind(n,28340)),lp_build:()=>Promise.all([n.e(296),n.e(576)]).then(n.bind(n,77576)),matching:()=>Promise.all([n.e(566),n.e(737)]).then(n.bind(n,14566)),multiplechoice:()=>Promise.all([n.e(919),n.e(350)]).then(n.bind(n,9919)),hparsons:()=>Promise.all([n.e(249),n.e(207),n.e(486)]).then(n.bind(n,71182)),parsons:()=>n.e(39).then(n.bind(n,52420)),poll:()=>n.e(168).then(n.bind(n,11168)),quizly:()=>n.e(128).then(n.bind(n,34128)),reveal:()=>n.e(460).then(n.bind(n,67460)),selectquestion:()=>Promise.all([n.e(662),n.e(380)]).then(n.bind(n,10662)),shortanswer:()=>Promise.all([n.e(819),n.e(850)]).then(n.bind(n,48819)),showeval:()=>n.e(824).then(n.bind(n,8824)),simple_sensor:()=>n.e(126).then(n.bind(n,50126)),spreadsheet:()=>Promise.all([n.e(131),n.e(186)]).then(n.bind(n,97186)),tabbedStuff:()=>n.e(442).then(n.bind(n,76442)),timedAssessment:()=>Promise.all([n.e(249),n.e(296),n.e(625),n.e(764),n.e(877),n.e(466),n.e(759),n.e(919),n.e(566),n.e(662),n.e(529),n.e(819),n.e(420),n.e(268)]).then(n.bind(n,46424)),wavedrom:()=>Promise.all([n.e(770),n.e(640)]).then(n.bind(n,45640)),webwork:()=>n.e(680).then(n.bind(n,84680)),youtube:()=>n.e(915).then(n.bind(n,86915)),doenet:()=>Promise.resolve()},l={},u=10,c=[];let f=0;async function m(){if(0===c.length)return;if(Date.now()-fe.component_name)));const t=e.map((async e=>{try{return await d[e.component_name](),console.log(`Runestone component ${e.component_name} has been loaded`),e}catch(t){e.reject(t)}})),n=await Promise.all(t);try{n.forEach((function(e){e&&e.resolve()}))}catch(e){console.error(e)}}let g=new Promise((e=>$(document).on("runestone:pre-login-complete",e)));function h(){const e=new Set($("[data-component]").map(((e,t)=>$(t).attr("data-component"))).get());document.querySelector(".webwork-button")&&e.add("webwork");const t=[...e].map((e=>{let t;console.log(`Loading Runestone component: ${e}`);try{t=(d[e]||(()=>Promise.resolve()))()}catch(t){console.error(`Error loading ${e}:`,t)}return t.error=t=>console.error(`Error in ${e}:`,t),t}));Promise.all([g,...t]).then((function(){document.body.dataset.reactInUse||document.dispatchEvent(new CustomEvent("runestone:login-complete"))}))}async function p(e){if(l[e])return l[e];console.log(`Runestone component ${e} is being queued for import`);const t=function(e){let t=null,n=null;const o=new Promise(((e,o)=>{t=e,n=o})),i={component_name:e,resolve:t,reject:n};return c.push(i),window.setTimeout(m,u+1),o}(e);return l[e]=t,t}g.then((()=>{console.log("Runestone pre-login complete")})),$(document).ready(h);const v=document.currentScript.src;n.p=v.substring(0,v.lastIndexOf("/")+1),new r;const w={};w.runestone_import=p,w.runestone_auto_import=h,w.getSwitch=function(){const e=document.querySelector('.theme-switch input[type="checkbox"]'),t=localStorage.getItem("theme")?localStorage.getItem("theme"):null;t&&(document.documentElement.setAttribute("data-theme",t),"dark"===t&&(e.checked=!0))},w.switchTheme=function(){1==document.getElementById("checkbox").checked?(document.documentElement.setAttribute("data-theme","dark"),localStorage.setItem("theme","dark")):(document.documentElement.setAttribute("data-theme","light"),localStorage.setItem("theme","light"))},w.popupScratchAC=async function(){if(await p("activecode"),!eBookConfig.scratchDiv){window.ACFactory.createScratchActivecode();let e=eBookConfig.scratchDiv;window.componentMap[e]=ACFactory.createActiveCode($(`#${e}`)[0],eBookConfig.acDefaultLanguage),eBookConfig.isLoggedIn&&window.componentMap[e].enableSaveLoad()}setTimeout((()=>{window.ACFactory.toggleScratchActivecode()}),100)},w.renderOneComponent=s.yT,window.componentMap={},window.runestoneComponents=w},78673:(e,t,n)=>{"use strict";n.d(t,{A:()=>a});var o=n(83057),i=["parsonsMove","showeval","video","poll","view_toggle","dashboard","selectquestion","codelens","peer"];class a{constructor(e){this.component_ready_promise=new Promise((e=>this._component_ready_resolve_fn=e)),this.optional=!1,void 0===window.allComponents&&(window.allComponents=[]),window.allComponents.push(this),e&&(this.sid=e.sid,this.graderactive=e.graderactive,this.showfeedback=!0,e.timed&&(this.isTimed=!0),e.enforceDeadline&&(this.deadline=e.deadline),this.optional=this.parseBooleanAttribute(e.orig,"data-optional"),e.selector_id&&(this.selector_id=e.selector_id),void 0!==e.assessmentTaken?this.assessmentTaken=e.assessmentTaken:this.assessmentTaken=!0,void 0!==e.timedWrapper?this.timedWrapper=e.timedWrapper:location.href.indexOf("doAssignment")>=0?this.timedWrapper=$("h1#assignment_name").text():this.timedWrapper=null,$(e.orig).data("question_label")&&(this.question_label=$(e.orig).data("question_label")),this.is_toggle=e.is_toggle,this.is_select=e.is_select),this.mjelements=[];let t=this;if(this.mjReady=new Promise((function(e,n){t.mjresolver=e})),this.aQueue=new r,e&&void 0!==e.preamble){this.preamble=e.preamble;let t=document.createElement("div");t.classList.add("hidden-content"),t.classList.add("process-math"),t.innerHTML="\\("+this.preamble+"\\)",e.orig.appendChild(t),t.id="ltx_preamble",t.style.display="none",this.aQueue.preamble=t}this.jsonHeaders=new Headers({"Content-type":"application/json; charset=utf-8",Accept:"application/json"})}parseBooleanAttribute(e,t){const n=e.getAttribute(t);if(null===n)return!1;const o=n.toLowerCase();return"false"!==o&&"no"!==o}async logBookEvent(e){if(this.graderactive)return;let t;if(e.course_name=eBookConfig.course,e.clientLoginStatus=eBookConfig.isLoggedIn,e.timezoneoffset=(new Date).getTimezoneOffset()/60,this.selector_id&&(e.selector_id=this.selector_id),"number"==typeof this.percent&&(e.percent=this.percent),window.assignmentId&&(e.assignment_id=window.assignmentId),eBookConfig.isLoggedIn&&eBookConfig.useRunestoneServices&&eBookConfig.logLevel>0&&(t=this.postLogMessage(e)),!this.isTimed||eBookConfig.debug){let t=eBookConfig.isLoggedIn?"Save":"Not";console.log(`${t} logging event `+JSON.stringify(e))}return this.selector_id&&(e.div_id=this.selector_id.replace("-toggleSelectedQuestion",""),e.event="selectquestion",e.act="interaction",this.postLogMessage(e)),"function"==typeof o.X.updateProgress&&"edit"!=e.act&&0==this.optional&&o.X.updateProgress(e.div_id),-1===i.indexOf(e.event)&&this.decorateStatus(),t}async postLogMessage(e){var t;let n=new Request(`${eBookConfig.new_server_prefix}/logger/bookevent`,{method:"POST",headers:this.jsonHeaders,body:JSON.stringify(e)});try{var o=await fetch(n);if(!o.ok){if(422===o.status)throw t=await o.json(),console.log(JSON.stringify(t.detail,null,4)),new Error("Unprocessable Request");if(401==o.status)throw t=await o.json(),console.log(`Missing authentication token ${t.detail}`),new Error("Missing authentication token");throw new Error(`Failed to save the log entry\n Status: ${o.status}`)}let e=(t=await o.json()).detail,i=null;if(this.selector_id){let e=this.selector_id.replace("-toggleSelectedQuestion","");i=document.getElementById(`${e}_score`)}else i=document.getElementById(`${this.divid}_score`);i&&!this.isTimed&&e.score&&this.updateScores(i,e)}catch(e){let n="none";t&&t.detail&&(n=t.detail),eBookConfig.useRunestoneServices&&alert(`Error: Your action was not saved!\n The error was ${e}\n Status Code: ${o.status}\n Detail: ${JSON.stringify(n,null,4)}.\n Please report this error!`),console.log(`Error: ${e} Detail: ${n} Status Code: ${o.status}`)}return t}updateScores(e,t){if(!t.assigned||null===t.score)return void(document.getElementById(`${this.divid}_message`).innerHTML="Score not updated. Submissions are closed.");let n=e.getElementsByClassName("qscore")[0];n&&(n.innerHTML=t.score.toFixed(1));let o=document.getElementsByClassName("qscore"),i=document.getElementsByClassName("qmaxscore"),a=0,s=0;for(let e=0;e0){let n=new Request(`${eBookConfig.new_server_prefix}/logger/runlog`,{method:"POST",headers:this.jsonHeaders,body:JSON.stringify(e)}),o=await fetch(n);o.ok?t=await o.json():(t=await o.json(),eBookConfig.useRunestoneServices?alert(`Failed to save your code\n Status is ${o.status}\n Detail: ${JSON.stringify(t.detail,null,4)}`):console.log(`Did not save the code.\n Status: ${o.status}\n Detail: ${JSON.stringify(t.detail,null,4)}`))}return this.isTimed&&!eBookConfig.debug||console.log("running "+JSON.stringify(e)),"function"==typeof o.X.updateProgress&&0==this.optional&&o.X.updateProgress(e.div_id),t}}async checkServer(e,t=!1){let n=this;if(this.checkServerComplete=new Promise((function(e,t){n.csresolver=e})),eBookConfig.isLoggedIn&&(this.useRunestoneServices||this.graderactive)){let t={};if(t.div_id=this.divid,t.course=eBookConfig.course,t.event=e,this.graderactive&&this.deadline&&(t.deadline=this.deadline,t.rawdeadline=this.rawdeadline,t.tzoff=this.tzoff),this.sid&&(t.sid=this.sid),t.div_id&&t.course&&t.event||console.log(`A required field is missing data ${t.div_id}:${t.course}:${t.event}`),eBookConfig.practice_mode||eBookConfig.peer||!this.assessmentTaken)this.loadData({}),console.log("resolving checkServer no answer given"),this.csresolver("not taken");else{let e=new Request(`${eBookConfig.new_server_prefix}/assessment/results`,{method:"POST",body:JSON.stringify(t),headers:this.jsonHeaders});try{let n=await fetch(e);console.log(`Response from server: ${n.status}`),n.ok?(t=await n.json(),t=t.detail,console.log(`Data from server: ${JSON.stringify(t)} calling repopulateFromStorage`),this.repopulateFromStorage(t),this.attempted=!0,void 0!==t.correct?this.correct=t.correct:this.correct=null,console.log("resolving checkServer with server data"),this.csresolver("server")):(console.log(`HTTP Error getting results: ${n.statusText}`),this.checkLocalStorage(),console.log("resolving checkServer with local data"),this.csresolver("local"))}catch(e){console.log(`Error getting results: ${e}`);try{this.checkLocalStorage()}catch(e){console.log(e)}}}}else this.checkLocalStorage(),console.log("resolving checkServer with local data"),this.csresolver("local");t&&this.indicate_component_ready()}indicate_component_ready(){this.containerDiv.classList.add("runestone-component-ready"),this._component_ready_resolve_fn()}loadData(e){return null}repopulateFromStorage(e){null!==e&&"no data"!==e&&this.shouldUseServer(e)?(this.restoreAnswers(e),this.setLocalStorage(e)):this.checkLocalStorage(),this.decorateStatus()}shouldUseServer(e){if("T"===e.correct||!0===e.correct||0===localStorage.length||!0===this.graderactive||this.isTimed)return!0;let t,n=localStorage.getItem(this.localStorageKey());if(null===n)return!0;try{t=JSON.parse(n)}catch(e){return console.log(e.message),localStorage.removeItem(this.localStorageKey()),!0}if(e.answer==t.answer)return!0;let o=new Date(t.timestamp);return new Date(e.timestamp)>=o}localStorageKey(){return eBookConfig.email+":"+eBookConfig.course+":"+this.divid+"-given"}addCaption(e){if(!this.isTimed){var t=document.createElement("p");this.question_label?(this.caption=eBookConfig.useRunestoneServices?`Activity: ${this.question_label} ${this.caption} (${this.divid})`:`Activity: ${this.question_label} ${this.caption}`,$(t).html(this.caption),$(t).addClass(`${e}_caption`)):($(t).html(eBookConfig.useRunestoneServices?this.caption+" ("+this.divid+")":this.caption),$(t).addClass(`${e}_caption`),$(t).addClass(`${e}_caption_text`)),this.capDiv=t,this.containerDiv.appendChild(t)}}hasUserActivity(){return this.isAnswered}checkCurrentAnswer(){console.log("Each component should provide an implementation of checkCurrentAnswer")}async logCurrentAnswer(){console.log("Each component should provide an implementation of logCurrentAnswer")}renderFeedback(){console.log("Each component should provide an implementation of renderFeedback")}disableInteraction(){console.log("Each component should provide an implementation of disableInteraction")}toString(){return`${this.constructor.name}: ${this.divid}`}queueMathJax(e){return"undefined"==typeof MathJax?(console.log("Error -- MathJax is not loaded"),Promise.resolve(null)):MathJax.typesetPromise?void 0!==window.runestoneMathReady?window.runestoneMathReady.then((()=>this.mjresolver(this.aQueue.enqueue(e)))):this.mjresolver(this.aQueue.enqueue(e)):(console.log(`Waiting on MathJax!! ${MathJax.typesetPromise}`),setTimeout((()=>this.queueMathJax(e)),200),console.log(`Returning mjready promise: ${this.mjReady}`),this.mjReady)}decorateStatus(){if(this.isTimed||eBookConfig.peer)return;let e=$(this.containerDiv).closest("div.runestone")[0];if(!e)return;e.classList.remove("notAnswered"),e.classList.remove("isInCorrect"),e.classList.remove("isCorrect");let t=localStorage.getItem(`currentAssignmentInfo_${eBookConfig.course}`),n=[];t&&(n=JSON.parse(t).questions),n.indexOf(this.divid)>=0&&e.classList.add("isAssigned"),this.correct?e.classList.add("isCorrect"):null===this.correct||void 0===this.correct?e.classList.add("notAnswered"):e.classList.add("isInCorrect")}}class s{constructor(){this._items=[]}enqueue(e){this._items.push(e)}dequeue(){return this._items.shift()}get size(){return this._items.length}}class r extends s{constructor(){super(),this._pendingPromise=!1}enqueue(e){return new Promise(((t,n)=>{super.enqueue({component:e,resolve:t,reject:n}),this.dequeue()}))}async dequeue(){if(this._pendingPromise)return!1;let e=super.dequeue();if(!e)return!1;let t=this;try{this._pendingPromise=!0;let n=await window.runestoneMathReady.then((async function(){if(console.log(`MathJax Ready -- dequeing a typesetting run for ${e.component.id} ${t.preamble?.innerHTML}`),t.preamble){await MathJax.typesetPromise([t.preamble]);let n=document.createElement("div");return n.innerHTML=t.preamble.innerHTML,e.component.insertAdjacentElement("afterbegin",n),console.log(`MathJax typeset the preamble for ${e.component.id}`),await MathJax.typesetPromise([e.component])}return await MathJax.typesetPromise([e.component])}));this._pendingPromise=!1,e.resolve(n)}catch(t){this._pendingPromise=!1,e.reject(t)}finally{this.dequeue()}return!0}}window.RunestoneBase=a},83057:(e,t,n)=>{"use strict";n.d(t,{X:()=>i,u:()=>a});class o{constructor(e){if(this.possible=0,this.total=1,e&&"assignment_spec"in e&&(this.assignment_spec=e.assignment_spec,delete e.assignment_spec),e&&Object.keys(e).length>0)this.activities=e;else{let e={page:0};document.querySelectorAll(".runestone").forEach((function(t){e[t.firstElementChild.id]=0})),this.activities=e}if(this.calculateProgress(),window.location.pathname.match(/.*\/(index.html|toctree.html|Exercises.html|search.html)$/i)){const e=document.getElementById("scprogresscontainer");e&&(e.style.display="none")}this.renderProgress()}calculateProgress(){for(let e in this.activities)void 0!==e&&(this.possible++,this.activities[e]>0&&this.total++)}renderProgress(){let e=0;const t=document.getElementById("scprogresstotal");t&&(t.textContent=this.total);const n=document.getElementById("scprogressposs");n&&(n.textContent=this.possible);try{e=100*this.total/this.possible}catch(t){e=0}let o=document.getElementById("subchapterprogress");if(o&&"PROGRESS"!==o.tagName){const t=document.createElement("progress");t.id="subchapterprogress",t.max=100,t.value=e,t.className=o.className,o.replaceWith(t),o=t}else o&&(o.max=100,o.value=e);if(this.assignment_spec&&this.total-1>=(this.assignment_spec.activities_required||0)&&this.sendCompletedReadingScore().then((()=>{console.log("Reading score sent for page"),setTimeout((()=>{let e=document.getElementById("completionButton");e&&"mark as completed"===e.textContent.toLowerCase()&&e.click()}),500)})),!eBookConfig.isLoggedIn){const e=document.getElementById("subchapterprogress");e&&e.classList.add("loggedout")}}updateProgress(e){if(this.activities[e]++,1===this.activities[e]){this.total++;let e=100*this.total/this.possible;const t=document.getElementById("scprogresstotal");t&&(t.textContent=this.total);const n=document.getElementById("scprogressposs");n&&(n.textContent=this.possible);let o=document.getElementById("subchapterprogress");if(o&&"PROGRESS"===o.tagName&&(o.value=e),this.assignment_spec&&null!==this.assignment_spec.activities_required&&this.total>=this.assignment_spec.activities_required&&(console.log("Required activities completed"),this.sendCompletedReadingScore().then((()=>{console.log("Reading score sent")}))),100==e&&function(){const e=document.getElementById("completionButton");return e&&e.textContent&&"mark as completed"===e.textContent.toLowerCase()}()){const e=document.getElementById("completionButton");e&&"function"==typeof e.click&&e.click()}}}async sendCompletedReadingScore(){let e=new Headers({"Content-type":"application/json; charset=utf-8",Accept:"application/json"}),t={...this.assignment_spec},n=new Request(`${eBookConfig.new_server_prefix}/logger/update_reading_score`,{method:"POST",body:JSON.stringify(t),headers:e});try{let e=await fetch(n);e.ok||console.error(`Failed to send reading score! ${e.statusText}`),t=await e.json()}catch(e){console.error(`Error sending reading score ${e}`)}}}var i={};function a(e){return"string"==typeof e&&([/\$\$[\s\S]+?\$\$/,/\$[^$\n]+?\$/,/\\\[[\s\S]+?\\\]/,/\\\([\s\S]+?\\\)/].some((t=>t.test(e)))||/\\(frac|sqrt|sum|prod|int|lim|sin|cos|tan|log|ln|alpha|beta|gamma|pi|theta|sigma|Delta|cdot|times|leq|geq|neq)\b/.test(e)||/[a-zA-Z0-9]\s*[\^_]\s*\{?.+?\}?/.test(e))}document.addEventListener("runestone:login",(function(){const e=document.getElementById("profilelink");e&&e.style.removeProperty("display");const t=document.getElementById("passwordlink");t&&t.style.removeProperty("display");const n=document.getElementById("registerlink");n&&(n.style.display="none"),document.querySelectorAll("li.loginout").forEach((e=>{e.innerHTML='Log Out'}))})),document.addEventListener("runestone:logout",(function(){if(eBookConfig.useRunestoneServices){console.log("setup navbar for logged out");const e=document.getElementById("registerlink");e&&e.style.removeProperty("display");const t=document.getElementById("profilelink");t&&(t.style.display="none");const n=document.getElementById("passwordlink");n&&(n.style.display="none");const o=document.getElementById("ip_dropdown_link");o&&(o.style.display="none");const i=document.getElementById("inst_peer_link");i&&(i.style.display="none"),document.querySelectorAll("li.loginout").forEach((e=>{e.innerHTML='Login'})),document.querySelectorAll(".footer").forEach((e=>{e.innerHTML="user not logged in"}))}})),document.addEventListener("DOMContentLoaded",(function(){eBookConfig?(async function(){var e;if(eBookConfig.useRunestoneServices){let e=new Headers({"Content-type":"application/json; charset=utf-8",Accept:"application/json"}),n={timezoneoffset:(new Date).getTimezoneOffset()/60,timezone:Intl.DateTimeFormat().resolvedOptions().timeZone},o=function(){const e=`; ${document.cookie}`.split("; RS_info=");if(2===e.length)return e.pop().split(";").shift()}();var t=!1;if(o)try{let e=o.replace(/\\054/g,","),i=JSON.parse(decodeURIComponent(e));i=JSON.parse(decodeURIComponent(i)),i.timezone===n.timezone&&i.tz_offset===n.timezoneoffset&&(console.log("Timezone cookie matches, not sending timezone to server"),t=!0)}catch(e){console.error("Error parsing RS_info cookie, sending timezone to server")}if(!1===t){let t=new Request(`${eBookConfig.new_server_prefix}/logger/set_tz_offset`,{method:"POST",body:JSON.stringify(n),headers:e});try{let e=await fetch(t);e.ok||console.error(`Failed to set timezone! ${e.statusText}`),n=await e.json()}catch(e){console.error(`Error setting timezone ${e}`)}}}if(console.log(`This page served by ${eBookConfig.served_by}`),eBookConfig.isLoggedIn){if(e=`username: ${eBookConfig.username}`,!eBookConfig.isInstructor){const e=document.getElementById("ip_dropdown_link");e&&"function"==typeof e.remove&&e.remove();const t=document.getElementById("inst_peer_link");t&&"function"==typeof t.remove&&t.remove()}document.dispatchEvent(new Event("runestone:login")),function(){let e=localStorage.getItem(`currentAssignmentInfo_${eBookConfig.course}`);if(e&&eBookConfig.readings){var t,n,o,i,a,s,r,d,l,u,c=JSON.parse(e);let g=c.id,h=c.name,p=c.readingNames;(o=document.createElement("div")).textContent="Active assignment: ",(i=document.createElement("a")).textContent=h,i.href=`/assignment/student/doAssignment?assignment_id=${g}`,o.append(i),(a=document.createElement("a")).textContent=" Exit Assignment",a.href=window.location.pathname,a.addEventListener("click",(function(e){localStorage.removeItem(`currentAssignmentInfo_${eBookConfig.course}`)}));let v=window.location.pathname.split("/"),w=v[v.length-2]+"/"+v[v.length-1],b=!1,y=2;document.getElementsByTagName("body")[0].classList.contains("pretext")&&(b=!0,eBookConfig.readings=eBookConfig.readings.map((e=>e.split("/").pop())),w=w.split("/").pop(),y=1);let k=eBookConfig.readings.indexOf(w),C=eBookConfig.readings.length;if(k>0){d=eBookConfig.readings[k-1],(l=v.slice(0,v.length-y)).push(d),u=l.join("/"),s=o.cloneNode(!0);let e=document.createElement("p");e.textContent=`Page ${k+1} of ${C}, `;var f=document.createElement("a");f.href=u,f.textContent=`Back to page ${k} of ${C}: ${p[k-1]}.`,e.append(f),s.append(e)}else if(0==k){s=o.cloneNode(!0);let e=document.createElement("p");e.textContent=`Page 1 of ${C}.`,s.append(e)}else{let e=!1,t=Object.keys(componentMap);0==t.length&&(t=document.querySelectorAll("[data-component]"),t=Array.from(t).map((function(e){return e.id})));for(let n of t)if(c.questions.includes(n)){e=!0;break}d=eBookConfig.readings[0],(l=v.slice(0,v.length-y)).push(d),u=l.join("/"),s=o.cloneNode(!0);let n=document.createElement("p");n.textContent=e?"This page has activities assigned to the current assignment.":"Notice: this page is not part of the assignment.",n.append(a),s.append(n)}if(k==eBookConfig.readings.length-1){r=o;let e=document.createElement("p");e.textContent=`Page ${C} of ${C}: ${p[k]}`,r.append(e)}else if(k>=0){d=eBookConfig.readings[k+1],(l=v.slice(0,v.length-y)).push(d),u=l.join("/"),r=o;var m=document.createElement("a");m.href=u,m.textContent=`Continue to page ${k+2} of ${C}: ${p[k+1]}`;let e=document.createElement("p");e.append(m),r.append(e)}else{r=o.cloneNode(!0);let e=document.createElement("p");e.textContent="Notice: this page is not part of the assignment. To remove this warning click ";let t=a.cloneNode(!0);t.addEventListener("click",(function(e){localStorage.removeItem(`currentAssignmentInfo_${eBookConfig.course}`)})),e.append(t),r.append(e)}if((t=document.createElement("div")).className="ptx-runestone-container",s.className="runestone assignment-nav top-assignment-nav",t.append(s),(n=document.createElement("div")).className="ptx-runestone-container",r.className="runestone assignment-nav bottom-assignment-nav",n.append(r),b){let e=document.getElementById("ptx-content");e&&e.insertBefore(t,e.firstChild);let o=document.getElementById("scprogresscontainer");return void(o&&(o.style.marginBottom="20px",o.appendChild(n)))}const $=document.getElementById("main-content");$&&r&&($.insertBefore(t,$.firstChild),$.appendChild(n))}}(),-1==window.location.pathname.indexOf("/admin/grading")&&-1==window.location.pathname.indexOf("/peer/")&&function(){let e;function t(){location.href.indexOf("index.html")<0&&(console.log("Idle timer - "+location.pathname),location.href=eBookConfig.app+"/default/user/login?_next="+location.pathname+location.search)}function n(){e&&clearTimeout(e),e=setTimeout(t,9e5)}["mousemove","keydown","scroll","click","touchstart","wheel"].forEach((e=>{window.addEventListener(e,n,{passive:!0})})),n()}()}else{e="Not logged in",document.dispatchEvent(new Event("runestone:logout"));let t=document.getElementById("browsing_warning");t&&(t.innerHTML="");let n=document.getElementById("ad_warning");n&&(n.innerHTML="")}document.querySelectorAll(".loggedinuser").forEach((t=>{t.innerHTML=e})),i=new o(eBookConfig.activities),console.log("triggering runestone:pre-login-complete"),document.dispatchEvent(new Event("runestone:pre-login-complete"))}(),function(){if("undefined"!=typeof showAd&&showAd){let e=Math.floor(2*Math.random())+1,t=document.getElementById(`adcopy_${e}`),n=document.querySelectorAll(".runestone");n.length>0&&(n[Math.floor(Math.random()*n.length)].after(t),t.style.display="block")}}()):"undefined"==typeof eBookConfig&&console.log("eBookConfig is not defined. This page must not be set up for Runestone")})),window.addEventListener("load",(function(){if(document.querySelectorAll(".video-play-overlay").forEach((function(e){e.style.backgroundImage="url('{{pathto('_static/play_overlay_icon.png', 1)}}')"})),document.querySelectorAll(".dropdown input, .dropdown label").forEach((function(e){e.addEventListener("click",(function(e){e.stopPropagation()}))})),location.href.includes("mode=browsing")){let e="?mode=browsing";document.querySelectorAll("a").forEach((t=>{let n="";if(t.href.includes("books/published")&&!t.href.includes("?mode=browsing")){if(t.href.includes("#")){let e=t.href.indexOf("#");n=t.href.substring(e),t.href=t.href.substring(0,e)}t.href=t.href.includes("?")?t.href+e.replace("?","&")+n:t.href+e+n}}))}}))},98098:(e,t,n)=>{"use strict";n.d(t,{$y:()=>a,JK:()=>i,yT:()=>s});var o=n(77394);async function i(e,t,n){if(!e)return void jQuery(`#${t}`).html("

    Sorry, no source is available for preview.

    ");e=e.replace(/..\/_images/g,`${eBookConfig.app}/books/published/${eBookConfig.basecourse}/_images`),jQuery(`#${t}`).html(e),void 0===window.componentMap&&(window.componentMap={});let i=$($(`#${t} [data-component]`)[0]).data("component");await(0,o.w)(i);let a={};if(a.orig=jQuery(`#${t} [data-component]`)[0],a.orig&&(a.lang=$(a.orig).data("lang"),a.useRunestoneServices=!0,a.graderactive=!1,a.python3=!0,void 0!==n))for(let e in n)a[e]=n[e];if("undefined"==typeof component_factory)alert("Error: Missing the component factory!");else if(window.component_factory[i]||jQuery(`#${t}`).html()){let e=window.component_factory[i](a);"activecode"===i&&(n.multiGrader?window.componentMap[`${n.gradingContainer} ${e.divid}`]=e:window.componentMap[e.divid]=e)}else jQuery(`#${t}`).html(`

    Preview not available for ${i}

    `)}function a(e,t){e=e.replace(/..\/_images/g,`${eBookConfig.app}/books/published/${eBookConfig.basecourse}/_images`);let n,o,i=$($(e).find("[data-component]")[0]).data("component"),a=$(e).find("[data-component]").first().attr("id");document.getElementById(a)||(n=$("
    ",{css:{display:"none"}}).appendTo("body"),n.html(e));let s={orig:document.getElementById(a),timed:!0};if(void 0!==t)for(let e in t)s[e]=t[e];i in window.component_factory&&(o=window.component_factory[i](s));let r={};return r.question=o,r}async function s(e){let t=e.querySelector("[data-component]");if(null==t)return void console.log("Render was called for a component, but now [data-component] attribute is present. This may mean the component has already been rendered.");let n=t.dataset.component;if(await(0,o.w)(n),0==$(this).closest("[data-component=timedAssessment]").length)try{let e=t.id;window.componentMap[e]=window.component_factory[n]({orig:t,useRunestoneServices:eBookConfig.useRunestoneServices})}catch(e){console.log(`Error rendering ${n} Problem ${this.id}\n Details: ${e}`)}}}},e=>{e.O(0,[723],(()=>e(e.s=77394))),e.O()}]); //# sourceMappingURL=prefix-runestone.e2abc79debce15fd.bundle.js.map