3 lines
73 KiB
JavaScript
Executable File
3 lines
73 KiB
JavaScript
Executable File
/*! For license information please see prefix-runestone.a4a209ed3a55c515.bundle.js.LICENSE.txt */
|
||
(self.webpackChunkWebComponents=self.webpackChunkWebComponents||[]).push([[222],{3403:()=>{!function(e){var n=function(n,t){var o;(o=function(n,i){i=i||0,n.find("> li > a.internal, > ul, > li > ul").each((function(n,s){var a=e(s),r=s.tagName.toLowerCase(),d=a.children("li"),l=e(a.parent("li"),a.parent().parent("li"));"ul"===r&&i>=t&&d.length>0&&(l.addClass("dropdown-submenu").children("a").first().attr("tabindex",-1),a.addClass("dropdown-menu")),o(a,i+1)}))})(n)};patchTables=function(){e("table.docutils").removeClass("docutils").addClass("table").attr("border",0)},e((function(){if(e("#navbar.navbar-fixed-top").length>0){var t=e("#navbar").height(),o=function(){scrollBy(0,-t-10)};location.hash&&o(),window.addEventListener("hashchange",o)}e(".dropdown-menu").each((function(){e(this).find("ul").each((function(n,t){e(t).addClass("unstyled")}))})),e("ul.globaltoc li").length?n(e("ul.globaltoc"),1):e(".globaltoc-container").remove(),n(e("ul.localtoc"),2),e(".dropdown-menu ul").not(".dropdown-menu").each((function(){var n=e(this),t=n.parent(),o=t[0].tagName.toLowerCase(),i=n.children().detach();"ul"===o?n.replaceWith(i):"li"===o&&(t.after(i),n.remove())})),$localLi=e("ul.localtoc li"),$localLi.length>2&&$localLi.first().after('<li class="divider"></li>'),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(n,t){e(t).parent().hasClass("reference")||e(t).replaceWith((function(){return e("<code />").text(e(this).text())}))}))}))}(window.jQuery)},19695:()=>{var e,n=!1;function t(){n||(function(){let n=$("[data-childcomponent]");n.addClass("runestone"),n.parent().closest("div").not("section").addClass("runestone"),n.parent().closest("div").css("max-width","none"),n.each((function(e){$(this),$(this).find(".ac_code_div, .ac_output").wrapAll("<div class='ac-block' style='width: 100%;'></div>")})),$("section img").wrap('<div class="runestone">'),e=$(".runestone").not(".runestone .runestone"),$("h1").before("<div class='presentation-title'> <button class='prev-exercise btn-presenter btn-grey-outline' onclick='prevExercise()'>Back</button> <button class='next-exercise btn-presenter btn-grey-solid' onclick='nextExercise()'>Next</button> </div>")}(),n=!0);let t=$("body"),o="present",s="full-height",a="bottom";t.hasClass(o)?($("section *").not("h1, .presentation-title, .btn-presenter, .runestone, .runestone *, section, .pre, code").removeClass("hidden"),$("#completionButton").removeClass("hidden"),t.removeClass(o),$("."+s).removeClass(s),$("."+a).removeClass(a),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"),t.addClass(o),t.addClass(s),$("html").addClass(s),$("section .runestone").addClass(s),$(".ac-caption").addClass(a),localStorage.setItem("presentMode",o),i())}function o(){return active=e.filter(".active")}function i(n){void 0===n&&(n=0);let t=o();e.length&&(t.removeClass("active"),t=$(e[n]).addClass("active"),t.removeClass("hidden"),e.not(e.filter(".active")).addClass("hidden"))}window.nextExercise=function(){let n=o(),t=e.index(n)+1;t<e.length&&i(t)},window.prevExercise=function(){let n=o(),t=e.index(n)-1;t>=0&&i(t)},$(document).on("runestone:login-complete",(function(){eBookConfig.isInstructor&&($(".navbar-right").prepend("<li class='dropdown view-toggle'> <label>View: <select class='mode-select'> <option value='text'>Textbook</option> <option value='present'>Code Presenter</option> </select> </label> </li>"),$(".mode-select").change(t))}))},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 n={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(n,t){var o,i,s,a,r=new RegExp("\\d+=","i");if(!t||0===t.length)return"";for(s=0;s<t.length;s++)if(a=t[s],r.test(a)){if(parseInt(a.slice(0,a.indexOf("=")),10)===n)return a.slice(a.indexOf("=")+1);t[s]=void 0}return t=e.map(t,(function(e){if(void 0!==e)return e})),(o=this.pluralRules[e.i18n().locale])?(i=this.getPluralForm(n,o),t[i=Math.min(i,t.length-1)]):1===n?t[0]:t[1]},getPluralForm:function(e,n){var t,o=["zero","one","two","few","many","other"],i=0;for(t=0;t<o.length;t++)if(n[o[t]]){if(pluralRuleParser(n[o[t]],e))return i;i++}return i},convertNumber:function(n,t){var o,i,s,a,r,d;if(a=this.digitTransformTable(e.i18n().locale),r=String(n),d="",!a)return n;if(t){if(parseFloat(n,10)===n)return n;for(i in o=[],a)o[a[i]]=i;a=o}for(s=0;s<r.length;s++)a[r[s]]?d+=a[r[s]]:d+=r[s];return t?parseFloat(d,10):d},convertGrammar:function(e,n){return e},gender:function(e,n){if(!n||0===n.length)return"";for(;n.length<2;)n.push(n[n.length-1]);return"male"===e?n[0]:"female"===e?n[1]:3===n.length?n[2]:n[0]},digitTransformTable:function(e){var n={ar:"٠١٢٣٤٥٦٧٨٩",fa:"۰۱۲۳۴۵۶۷۸۹",ml:"൦൧൨൩൪൫൬൭൮൯",kn:"೦೧೨೩೪೫೬೭೮೯",lo:"໐໑໒໓໔໕໖໗໘໙",or:"୦୧୨୩୪୫୬୭୮୯",kh:"០១២៣៤៥៦៧៨៩",pa:"੦੧੨੩੪੫੬੭੮੯",gu:"૦૧૨૩૪૫૬૭૮૯",hi:"०१२३४५६७८९",my:"၀၁၂၃၄၅၆၇၈၉",ta:"௦௧௨௩௪௫௬௭௮௯",te:"౦౧౨౩౪౫౬౭౮౯",th:"๐๑๒๓๔๕๖๗๘๙",bo:"༠༡༢༣༤༥༦༧༨༩"};return!!n[e]&&n[e].split("")}};e.extend(e.i18n.languages,{default:n})}(jQuery)},39161:()=>{!function(e){"use strict";var n;n=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 t,o=(t=e[0].match(n))?void 0===t[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 n=function(){this.language=e.i18n.languages[String.locale]||e.i18n.languages.default};n.prototype={constructor:n,emit:function(n,t){var o,i,s,a=this;switch(typeof n){case"string":case"number":o=n;break;case"object":if(i=e.map(n.slice(1),(function(e){return a.emit(e,t)})),s=n[0].toLowerCase(),"function"!=typeof a[s])throw new Error('unknown operation "'+s+'"');o=a[s](i,t);break;case"undefined":o="";break;default:throw new Error("unexpected type in AST: "+typeof n)}return o},concat:function(n){var t="";return e.each(n,(function(e,n){t+=n})),t},replace:function(e,n){var t=parseInt(e[0],10);return t<n.length?n[t]:"$"+(t+1)},plural:function(e){var n=parseFloat(this.language.convertNumber(e[0],10)),t=e.slice(1);return t.length?this.language.convertPlural(n,t):""},gender:function(e){var n=e[0],t=e.slice(1);return this.language.gender(n,t)},grammar:function(e){var n=e[0],t=e[1];return t&&n&&this.language.convertGrammar(t,n)}},e.extend(e.i18n.parser.emitter,new n)}(jQuery)},49276:()=>{!function(e){"use strict";var n=function(n){this.options=e.extend({},e.i18n.parser.defaults,n),this.language=e.i18n.languages[String.locale]||e.i18n.languages.default,this.emitter=e.i18n.parser.emitter};n.prototype={constructor:n,simpleParse:function(e,n){return e.replace(/\$(\d+)/g,(function(e,t){var o=parseInt(t,10)-1;return void 0!==n[o]?n[o]:"$"+t}))},parse:function(n,t){return n.indexOf("{{")<0?this.simpleParse(n,t):(this.emitter.language=e.i18n.languages[e.i18n().locale]||e.i18n.languages.default,this.emitter.emit(this.ast(n),t))},ast:function(e){var n,t,o,i,s,a,r,d,l,u,c,f,p,m,g,h,v,y,b,w=0;function k(e){return function(){var n,t;for(n=0;n<e.length;n++)if(null!==(t=e[n]()))return t;return null}}function C(e){var n,t,o=w,i=[];for(n=0;n<e.length;n++){if(null===(t=e[n]()))return w=o,null;i.push(t)}return i}function x(e,n){return function(){for(var t=w,o=[],i=n();null!==i;)o.push(i),i=n();return o.length<e?(w=t,null):o}}function S(n){var t=n.length;return function(){var o=null;return e.slice(w,w+t)===n&&(o=n,w+=t),o}}function $(n){return function(){var t=e.slice(w).match(n);return null===t?null:(w+=t[0].length,t[0])}}function _(){var e=C([o,i]);return null===e?null:e[1]}function E(){var e=C([s,a]);return null===e?null:["REPLACE",parseInt(e[1],10)-1]}function B(){var e,t=C([n,x(0,h)]);return null===t?null:(e=t[1]).length>1?["CONCAT"].concat(e):e[0]}function L(){var e=C([f,t,E]);return null===e?null:[e[0],e[2]]}function T(){var e=C([f,t,h]);return null===e?null:[e[0],e[2]]}function I(){var e=C([p,c,m]);return null===e?null:e[1]}if(n=S("|"),t=S(":"),o=S("\\"),i=$(/^./),s=S("$"),a=$(/^\d+/),r=$(/^[^{}[\]$\\]/),d=$(/^[^{}[\]$\\|]/),k([_,$(/^[^{}[\]$\s]/)]),l=k([_,d]),u=k([_,r]),y=$(/^[ !"$&'()*,./0-9;=?@A-Z^_`a-z~\x80-\xFF+-]+/),b=function(e){return e.toString()},f=function(){var e=y();return null===e?null:b(e)},c=k([function(){var e=C([k([L,T]),x(0,B)]);return null===e?null:e[0].concat(e[1])},function(){var e=C([f,x(0,B)]);return null===e?null:[e[0]].concat(e[1])}]),p=S("{{"),m=S("}}"),g=k([I,E,function(){var e=x(1,u)();return null===e?null:e.join("")}]),h=k([I,E,function(){var e=x(1,l)();return null===e?null:e.join("")}]),null===(v=function(){var e=x(0,g)();return null===e?null:["CONCAT"].concat(e)}())||w!==e.length)throw new Error("Parse error at position "+w.toString()+" in input: "+e);return v}},e.extend(e.i18n.parser,new n)}(jQuery)},51399:()=>{!function(e){"use strict";var n=function(){this.messages={},this.sources={}};n.prototype={load:function(n,t){var o,i,s=null,a=[],r=this;if("string"==typeof n)return e.i18n.log("Loading messages from: "+n),(o=n,i=e.Deferred(),e.getJSON(o).done(i.resolve).fail((function(n,t,s){e.i18n.log("Error in loading messages from "+o+" Exception: "+s),i.resolve()})),i.promise()).done((function(e){r.set(t,e)})).promise();if(t)return r.set(t,n),e.Deferred().resolve();for(s in n)Object.prototype.hasOwnProperty.call(n,s)&&(t=s,a.push(r.load(n[s],t)));return e.when.apply(e,a)},set:function(n,t){this.messages[n]?this.messages[n]=e.extend(this.messages[n],t):this.messages[n]=t},get:function(e,n){return this.messages[e]&&this.messages[e][n]}},e.extend(e.i18n.messageStore,new n)}(jQuery)},52329:()=>{!function(e){"use strict";var n,t,o,i=Array.prototype.slice;(n=function(t){this.options=e.extend({},n.defaults,t),this.parser=this.options.parser,this.locale=this.options.locale,this.messageStore=this.options.messageStore,this.languages={}}).prototype={localize:function(n){var t,o,i,s,a,r;for(i=this.locale,s=0;i;){o=(t=i.split("-")).length;do{if(a=t.slice(0,o).join("-"),r=this.messageStore.get(a,n))return r;o--}while(o);if("en"===i)break;i=e.i18n.fallbacks[this.locale]&&e.i18n.fallbacks[this.locale][s]||this.options.fallbackLocale,e.i18n.log("Trying fallback locale for "+this.locale+": "+i+" ("+n+")"),s++}return""},destroy:function(){e.removeData(document,"i18n")},load:function(n,t){var o,i,s,a={};if(n||t||(n="i18n/"+e.i18n().locale+".json",t=e.i18n().locale),"string"==typeof n&&"json"!==n.split("?")[0].split(".").pop()){for(a[t]=n+"/"+t+".json",o=(e.i18n.fallbacks[t]||[]).concat(this.options.fallbackLocale),i=0;i<o.length;i++)a[s=o[i]]=n+"/"+s+".json";return this.load(a)}return this.messageStore.load(n,t)},parse:function(n,t){var o=this.localize(n);return this.parser.language=e.i18n.languages[e.i18n().locale]||e.i18n.languages.default,""===o&&(o=n),this.parser.parse(o,t)}},e.i18n=function(t,o){var s,a=e.data(document,"i18n"),r="object"==typeof t&&t;return r&&r.locale&&a&&a.locale!==r.locale&&(a.locale=r.locale),a||(a=new n(r),e.data(document,"i18n",a)),"string"==typeof t?(s=void 0!==o?i.call(arguments,1):[],a.parse(t,s)):a},e.fn.i18n=function(){var t=e.data(document,"i18n");return t||(t=new n,e.data(document,"i18n",t)),this.each((function(){var n,o,i,s,a=e(this),r=a.data("i18n");r?(n=r.indexOf("["),o=r.indexOf("]"),-1!==n&&-1!==o&&n<o?(i=r.slice(n+1,o),s=r.slice(o+1),"html"===i?a.html(t.parse(s)):a.attr(i,t.parse(s))):a.text(t.parse(r))):a.find("[data-i18n]").i18n()}))},e.i18n.languages={},e.i18n.messageStore=e.i18n.messageStore||{},e.i18n.parser={parse:function(e,n){return e.replace(/\$(\d+)/g,(function(e,t){var o=parseInt(t,10)-1;return void 0!==n[o]?n[o]:"$"+t}))},emitter:{}},e.i18n.fallbacks={},e.i18n.debug=!1,e.i18n.log=function(){window.console&&e.i18n.debug&&window.console.log.apply(window.console,arguments)},n.defaults={locale:(o=e("html").attr("lang"),o||(o=void 0!==typeof window.navigator&&((t=window.navigator).language||t.userLanguage)||""),o),fallbackLocale:"en",parser:e.i18n.parser,messageStore:e.i18n.messageStore},e.i18n.constructor=n}(jQuery)},66495:()=>{!function(e){e.idleTimer=function(n,t,o){o=e.extend({startImmediately:!0,idle:!1,enabled:!0,timeout:3e4,events:"mousemove keydown DOMMouseScroll mousewheel mousedown touchstart touchmove"},o),t=t||document;var i=function(n){"number"==typeof n&&(n=void 0);var s=e.data(n||t,"idleTimerObj");s.idle=!s.idle;var a=+new Date-s.olddate;if(s.olddate=+new Date,s.idle&&a<o.timeout)return s.idle=!1,clearTimeout(e.idleTimer.tId),void(o.enabled&&(e.idleTimer.tId=setTimeout(i,o.timeout)));var r=jQuery.Event(e.data(t,"idleTimer",s.idle?"idle":"active")+".idleTimer");e(t).trigger(r)},s=e.data(t,"idleTimerObj")||{};if(s.olddate=s.olddate||+new Date,"number"==typeof n)o.timeout=n;else{if("destroy"===n)return function(n){var t=e.data(n,"idleTimerObj")||{};t.enabled=!1,clearTimeout(t.tId),e(n).off(".idleTimer")}(t),this;if("getElapsedTime"===n)return+new Date-s.olddate}e(t).on(e.trim((o.events+" ").split(" ").join(".idleTimer ")),(function(){var n=e.data(this,"idleTimerObj");clearTimeout(n.tId),n.enabled&&(n.idle&&i(this),n.tId=setTimeout(i,n.timeout))})),s.idle=o.idle,s.enabled=o.enabled,s.timeout=o.timeout,o.startImmediately&&(s.tId=setTimeout(i,s.timeout)),e.data(t,"idleTimer","active"),e.data(t,"idleTimerObj",s)},e.fn.idleTimer=function(n,t){return t||(t={}),this[0]&&e.idleTimer(n,this[0],t),this}}(jQuery)},77394:(e,n,t)=>{"use strict";function o(){return!!document.querySelector("body.pretext")}function i(e,n,t,i){var s=window.location.pathname;-1!==s.indexOf("?")&&(s=s.substring(0,s.lastIndexOf("?")));let a=o();var r={lastPageUrl:s,lastPageScrollLocation:Math.round($(window).scrollTop()),completionFlag:e,pageLoad:n,markingComplete:t,markingIncomplete:i,course:eBookConfig.course,isPtxBook:a};$(document).ajaxError((function(e,n,t,o){console.log("Request Failed for "+t.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})}t.d(n,{w:()=>h}),t(67375),t(66495),t(52329),t(39161),t(46905),t(23836),t(51399),t(49276),t(35773),t(52754),t(3403),t(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 n={lastPageUrl:e,isPtxBook:o()};jQuery.ajax({url:`${eBookConfig.new_server_prefix}/logger/getCompletionStatus`,data:n,async:!1}).done((function(e){if("None"!=e){var n,t;1==e.detail[0].completionStatus?(n="buttonConfirmCompletion",t="<i class='glyphicon glyphicon-ok'></i> Completed. Well Done!"):(n="buttonAskCompletion",t="Mark as Completed");let o=document.querySelector("#scprogresscontainer");o&&o.classList.add("ptx-runestone-container"),$("#scprogresscontainer").append('<div style="text-align:center"><button class="btn btn-lg '+n+'" id="completionButton">'+t+"</button></div>")}}))}}(),void 0!==(e=$.getUrlVar("lastPosition"))&&($("body").append('<img src="../_static/last-point.png" style="position:absolute; padding-top:55px; left: 10px; top: '+parseInt(e)+'px;"/>'),$("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,n=-$("#navLinkBgRight").outerWidth()-5;$("#completionButton").hasClass("buttonAskCompletion")?e=n+70:$("#completionButton").hasClass("buttonConfirmCompletion")&&(e=0);var t=$("#relations-next").css("right"),o=-(n+35);$("#navLinkBgRight").css("right",n).show();var s=!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),s=!0):s&&($("#navLinkBgRight").animate({right:n},200),$("#navLinkBgLeft").animate({left:"-65px"},200),$("#relations-next").animate({right:t}),s=!1)}));var a=0;i(a=$("#completionButton").hasClass("buttonAskCompletion")?0:1,!0,!1,!1),$("#completionButton").on("click",(function(){var s=!1,r=!1;$(this).hasClass("buttonAskCompletion")?($(this).removeClass("buttonAskCompletion").addClass("buttonConfirmCompletion").html("<i class='glyphicon glyphicon-ok'></i> Completed. Well Done!"),$("#navLinkBgRight").animate({right:0}),$("#relations-next").animate({right:o}),e=0,a=1,s=!0):$(this).hasClass("buttonConfirmCompletion")&&($(this).removeClass("buttonConfirmCompletion").addClass("buttonAskCompletion").html("Mark as Completed"),e=n+70,$("#navLinkBgRight").animate({right:e}),$("#relations-next").animate({right:t}),a=0,r=!0),i(a,!1,s,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 n;if("None"!=e){n=e.detail;var t=$("#main-content div li a");$.each(n,(function(e,n){for(var o=0;o<t.length;o++)-1!=t[o].href.indexOf(n.chapterName+"/"+n.subChapterName)&&(1==n.completionStatus?$(t[o].parentElement).addClass("completed").append('<span class="infoTextCompleted">- Completed this topic on '+n.endDate+"</span>").children().first().hover((function(){$(this).next(".infoTextCompleted").show()}),(function(){$(this).next(".infoTextCompleted").hide()})):0==n.completionStatus&&$(t[o].parentElement).addClass("active").append('<span class="infoTextActive">Last read this topic on '+n.endDate+"</span>").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 n;"None"!=e&&null!=(n=e.detail).lastPageChapter&&$("#continue-reading").show().html('<div id="jump-to-chapter" class="alert alert-info" ><strong>You were Last Reading:</strong> '+n.lastPageChapter+(n.lastPageSubchapter?" > "+n.lastPageSubchapter:"")+' <a href="'+n.lastPageUrl+"?lastPosition="+n.lastPageScrollLocation+'">Continue Reading</a></div>')}))}}()})),$.extend({getUrlVars:function(){for(var e,n=[],t=window.location.search.slice(window.location.search.indexOf("?")+1).split("&"),o=0;o<t.length;o++)e=t[o].split("="),n.push(e[0]),n[e[0]]=e[1];return n},getUrlVar:function(e){return $.getUrlVars()[e]}});var s=t(78673);window.addEventListener("load",(function(){console.log("setting up pretext"),function(){let e=new s.A;document.querySelectorAll("[data-knowl]").forEach((n=>{n.addEventListener("click",(function(){let t=n.getAttribute("data-knowl");e.logBookEvent({event:"knowl",act:"click",div_id:t})}))})),document.querySelectorAll("details.born-hidden-knowl").forEach((n=>{n.addEventListener("toggle",(function(){if(n.open){let t=n.id;e.logBookEvent({event:"knowl",act:"open",div_id:t})}}))})),document.querySelectorAll(".sagecell_evalButton").forEach((n=>{n.addEventListener("click",(function(){let t=n.closest(".ptx-sagecell"),o=t?t.querySelector(".sagecell_input"):null,i=(o&&o.textContent,t?t.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")})),t(19695);var a=t(98098);class r extends s.A{constructor(){super(),this.initSplice()}initSplice(){window.addEventListener("message",(async e=>{var n,t,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=(n=o.jwt.split(".")[1].replace(/-/g,"+").replace(/_/g,"/"),t=decodeURIComponent(window.atob(n).split("").map((function(e){return"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)})).join("")),JSON.parse(t));console.log("Result received from frame "+o.frame_id+" with score "+i.score)}}))}getUniqueID(e,n){if(n){let e=n.closest("[data-component]");if(e)return e.id}let t=e.data.activity_id;return t||(n?t=n.src:(t="unknown",console.error("Could not find iframe that sent the SPLICE event"))),t}handleScoreAndState(e,n){console.log("Got SPLICE.reportScoreAndState"),console.log(e.data.activity_id),console.log(e.data.score),console.log(e.data.state);let t=this.getUniqueID(e,n);this.logBookEvent({event:e.data.subject,div_id:t,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 n of document.getElementsByTagName("iframe"))if(n.contentWindow===e.source)return n}async getSavedState(e){try{const n=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(!n.ok)throw new Error(`HTTP error! status: ${n.status}`);return await n.json()}catch(e){return console.error("Error fetching SPLICE state:",e),null}}async handleGetState(e,n){console.log("Got SPLICE.getState"),console.log(e.data.activity_id),console.log(e.data.state);let t=this.getUniqueID(e,n),o=(await this.getSavedState(t)).detail.answer;e.source.postMessage({message_id:e.data.message_id,subject:"SPLICE.getState.response",state:o},"*")}handleSpliceEvent(e,n){console.log("Got SPLICE.sendEvent"),console.log(e.data.activity_id),console.log(e.data.name);let t=this.getUniqueID(e,n);this.logBookEvent({event:e.data.subject,div_id:t,act:e.data.name||"unknown"})}checkLocalStorage(){}setLocalStorage(){}restoreAnswers(){}disableInteraction(){}}const d={activecode:()=>Promise.all([t.e(249),t.e(296),t.e(625),t.e(764),t.e(877)]).then(t.bind(t,73565)),ble:()=>t.e(817).then(t.bind(t,29817)),clickablearea:()=>Promise.all([t.e(529),t.e(198)]).then(t.bind(t,58529)),codelens:()=>Promise.all([t.e(764),t.e(412)]).then(t.bind(t,76412)),datafile:()=>t.e(580).then(t.bind(t,33580)),dragndrop:()=>Promise.all([t.e(759),t.e(621)]).then(t.bind(t,56759)),fillintheblank:()=>Promise.all([t.e(466),t.e(294)]).then(t.bind(t,64466)),groupsub:()=>Promise.all([t.e(28),t.e(616)]).then(t.bind(t,24616)),khanex:()=>t.e(340).then(t.bind(t,28340)),lp_build:()=>Promise.all([t.e(296),t.e(576)]).then(t.bind(t,77576)),matching:()=>Promise.all([t.e(566),t.e(737)]).then(t.bind(t,14566)),multiplechoice:()=>Promise.all([t.e(919),t.e(350)]).then(t.bind(t,9919)),hparsons:()=>Promise.all([t.e(249),t.e(207),t.e(486)]).then(t.bind(t,71182)),parsons:()=>t.e(39).then(t.bind(t,52420)),poll:()=>t.e(168).then(t.bind(t,11168)),quizly:()=>t.e(128).then(t.bind(t,34128)),reveal:()=>t.e(460).then(t.bind(t,67460)),selectquestion:()=>Promise.all([t.e(662),t.e(380)]).then(t.bind(t,10662)),shortanswer:()=>Promise.all([t.e(819),t.e(850)]).then(t.bind(t,48819)),showeval:()=>t.e(824).then(t.bind(t,8824)),simple_sensor:()=>t.e(126).then(t.bind(t,50126)),spreadsheet:()=>Promise.all([t.e(131),t.e(186)]).then(t.bind(t,97186)),tabbedStuff:()=>t.e(442).then(t.bind(t,76442)),timedAssessment:()=>Promise.all([t.e(249),t.e(296),t.e(625),t.e(764),t.e(877),t.e(466),t.e(759),t.e(919),t.e(566),t.e(662),t.e(529),t.e(819),t.e(420),t.e(268)]).then(t.bind(t,46424)),wavedrom:()=>Promise.all([t.e(770),t.e(640)]).then(t.bind(t,45640)),webwork:()=>t.e(680).then(t.bind(t,84680)),youtube:()=>t.e(915).then(t.bind(t,86915)),doenet:()=>Promise.resolve()},l={},u=10,c=[];let f=0;async function p(){if(0===c.length)return;if(Date.now()-f<u)return void window.setTimeout(p,u+1);f=Date.now();const e=[...c];c.length=0,console.log("Webpack is starting the loading process for the following Runestone modules",e.map((e=>e.component_name)));const n=e.map((async e=>{try{return await d[e.component_name](),console.log(`Runestone component ${e.component_name} has been loaded`),e}catch(n){e.reject(n)}})),t=await Promise.all(n);try{t.forEach((function(e){e&&e.resolve()}))}catch(e){console.error(e)}}let m=new Promise((e=>$(document).on("runestone:pre-login-complete",e)));function g(){const e=new Set($("[data-component]").map(((e,n)=>$(n).attr("data-component"))).get());document.querySelector(".webwork-button")&&e.add("webwork");const n=[...e].map((e=>{let n;console.log(`Loading Runestone component: ${e}`);try{n=(d[e]||(()=>Promise.resolve()))()}catch(n){console.error(`Error loading ${e}:`,n)}return n.error=n=>console.error(`Error in ${e}:`,n),n}));Promise.all([m,...n]).then((function(){document.body.dataset.reactInUse||document.dispatchEvent(new CustomEvent("runestone:login-complete"))}))}async function h(e){if(l[e])return l[e];console.log(`Runestone component ${e} is being queued for import`);const n=function(e){let n=null,t=null;const o=new Promise(((e,o)=>{n=e,t=o})),i={component_name:e,resolve:n,reject:t};return c.push(i),window.setTimeout(p,u+1),o}(e);return l[e]=n,n}m.then((()=>{console.log("Runestone pre-login complete")})),$(document).ready(g);const v=document.currentScript.src;t.p=v.substring(0,v.lastIndexOf("/")+1),new r;const y={};y.runestone_import=h,y.runestone_auto_import=g,y.getSwitch=function(){const e=document.querySelector('.theme-switch input[type="checkbox"]'),n=localStorage.getItem("theme")?localStorage.getItem("theme"):null;n&&(document.documentElement.setAttribute("data-theme",n),"dark"===n&&(e.checked=!0))},y.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"))},y.popupScratchAC=async function(){if(await h("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)},y.renderOneComponent=a.yT,window.componentMap={},window.runestoneComponents=y},78673:(e,n,t)=>{"use strict";t.d(n,{A:()=>s});var o=t(83057),i=["parsonsMove","showeval","video","poll","view_toggle","dashboard","selectquestion","codelens","peer"];class s{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 n=this;if(this.mjReady=new Promise((function(e,t){n.mjresolver=e})),this.aQueue=new r,e&&void 0!==e.preamble){this.preamble=e.preamble;let n=document.createElement("div");n.classList.add("hidden-content"),n.classList.add("process-math"),n.innerHTML="\\("+this.preamble+"\\)",e.orig.appendChild(n),n.id="ltx_preamble",n.style.display="none",this.aQueue.preamble=n}this.jsonHeaders=new Headers({"Content-type":"application/json; charset=utf-8",Accept:"application/json"})}parseBooleanAttribute(e,n){const t=e.getAttribute(n);if(null===t)return!1;const o=t.toLowerCase();return"false"!==o&&"no"!==o}async logBookEvent(e){if(this.graderactive)return;let n;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&&(n=this.postLogMessage(e)),!this.isTimed||eBookConfig.debug){let n=eBookConfig.isLoggedIn?"Save":"Not";console.log(`${n} 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(),n}async postLogMessage(e){var n;let t=new Request(`${eBookConfig.new_server_prefix}/logger/bookevent`,{method:"POST",headers:this.jsonHeaders,body:JSON.stringify(e)});try{var o=await fetch(t);if(!o.ok){if(422===o.status)throw n=await o.json(),console.log(JSON.stringify(n.detail,null,4)),new Error("Unprocessable Request");if(401==o.status)throw n=await o.json(),console.log(`Missing authentication token ${n.detail}`),new Error("Missing authentication token");throw new Error(`Failed to save the log entry\n Status: ${o.status}`)}let e=(n=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 t="none";n&&n.detail&&(t=n.detail),eBookConfig.useRunestoneServices&&alert(`Error: Your action was not saved!\n The error was ${e}\n Status Code: ${o.status}\n Detail: ${JSON.stringify(t,null,4)}.\n Please report this error!`),console.log(`Error: ${e} Detail: ${t} Status Code: ${o.status}`)}return n}updateScores(e,n){if(!n.assigned||null===n.score)return void(document.getElementById(`${this.divid}_message`).innerHTML="Score not updated. Submissions are closed.");let t=e.getElementsByClassName("qscore")[0];t&&(t.innerHTML=n.score.toFixed(1));let o=document.getElementsByClassName("qscore"),i=document.getElementsByClassName("qmaxscore"),s=0,a=0;for(let e=0;e<o.length;e++)s+=parseFloat(o[e].innerHTML),a+=parseFloat(i[e].innerHTML);let r=document.getElementById("total_score");r&&(r.innerHTML=s.toFixed(1));let d=document.getElementById("total_max");d&&(d.innerHTML=a);let l=document.getElementById("total_percent");l&&(l.innerHTML=(s/a*100).toFixed(2))}async logRunEvent(e){let n="done";if(!this.graderactive){if(e.course=eBookConfig.course,e.clientLoginStatus=eBookConfig.isLoggedIn,e.timezoneoffset=(new Date).getTimezoneOffset()/60,(this.forceSave||"to_save"in e==0)&&(e.save_code="True"),void 0!==e.errinfo&&(e.errinfo=e.errinfo.toString()),eBookConfig.isLoggedIn&&eBookConfig.useRunestoneServices&&eBookConfig.logLevel>0){let t=new Request(`${eBookConfig.new_server_prefix}/logger/runlog`,{method:"POST",headers:this.jsonHeaders,body:JSON.stringify(e)}),o=await fetch(t);o.ok?n=await o.json():(n=await o.json(),eBookConfig.useRunestoneServices?alert(`Failed to save your code\n Status is ${o.status}\n Detail: ${JSON.stringify(n.detail,null,4)}`):console.log(`Did not save the code.\n Status: ${o.status}\n Detail: ${JSON.stringify(n.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),n}}async checkServer(e,n=!1){let t=this;if(this.checkServerComplete=new Promise((function(e,n){t.csresolver=e})),eBookConfig.isLoggedIn&&(this.useRunestoneServices||this.graderactive)){let n={};if(n.div_id=this.divid,n.course=eBookConfig.course,n.event=e,this.graderactive&&this.deadline&&(n.deadline=this.deadline,n.rawdeadline=this.rawdeadline,n.tzoff=this.tzoff),this.sid&&(n.sid=this.sid),n.div_id&&n.course&&n.event||console.log(`A required field is missing data ${n.div_id}:${n.course}:${n.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(n),headers:this.jsonHeaders});try{let t=await fetch(e);console.log(`Response from server: ${t.status}`),t.ok?(n=await t.json(),n=n.detail,console.log(`Data from server: ${JSON.stringify(n)} calling repopulateFromStorage`),this.repopulateFromStorage(n),this.attempted=!0,void 0!==n.correct?this.correct=n.correct:this.correct=null,console.log("resolving checkServer with server data"),this.csresolver("server")):(console.log(`HTTP Error getting results: ${t.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");n&&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 n,t=localStorage.getItem(this.localStorageKey());if(null===t)return!0;try{n=JSON.parse(t)}catch(e){return console.log(e.message),localStorage.removeItem(this.localStorageKey()),!0}if(e.answer==n.answer)return!0;let o=new Date(n.timestamp);return new Date(e.timestamp)>=o}localStorageKey(){return eBookConfig.email+":"+eBookConfig.course+":"+this.divid+"-given"}addCaption(e){if(!this.isTimed){var n=document.createElement("p");this.question_label?(this.caption=eBookConfig.useRunestoneServices?`Activity: ${this.question_label} ${this.caption} <span class="runestone_caption_divid">(${this.divid})</span>`:`Activity: ${this.question_label} ${this.caption}`,$(n).html(this.caption),$(n).addClass(`${e}_caption`)):($(n).html(eBookConfig.useRunestoneServices?this.caption+" ("+this.divid+")":this.caption),$(n).addClass(`${e}_caption`),$(n).addClass(`${e}_caption_text`)),this.capDiv=n,this.containerDiv.appendChild(n)}}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 n=localStorage.getItem(`currentAssignmentInfo_${eBookConfig.course}`),t=[];n&&(t=JSON.parse(n).questions),t.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 a{constructor(){this._items=[]}enqueue(e){this._items.push(e)}dequeue(){return this._items.shift()}get size(){return this._items.length}}class r extends a{constructor(){super(),this._pendingPromise=!1}enqueue(e){return new Promise(((n,t)=>{super.enqueue({component:e,resolve:n,reject:t}),this.dequeue()}))}async dequeue(){if(this._pendingPromise)return!1;let e=super.dequeue();if(!e)return!1;let n=this;try{this._pendingPromise=!0;let t=await window.runestoneMathReady.then((async function(){if(console.log(`MathJax Ready -- dequeing a typesetting run for ${e.component.id} ${n.preamble?.innerHTML}`),n.preamble){await MathJax.typesetPromise([n.preamble]);let t=document.createElement("div");return t.innerHTML=n.preamble.innerHTML,e.component.insertAdjacentElement("afterbegin",t),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(t)}catch(n){this._pendingPromise=!1,e.reject(n)}finally{this.dequeue()}return!0}}window.RunestoneBase=s},83057:(e,n,t)=>{"use strict";t.d(n,{X:()=>s,u:()=>d});var o=new(t(78673).A);class i{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(n){e[n.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 n=document.getElementById("scprogresstotal");n&&(n.textContent=this.total);const t=document.getElementById("scprogressposs");t&&(t.textContent=this.possible);try{e=100*this.total/this.possible}catch(n){e=0}let o=document.getElementById("subchapterprogress");if(o&&"PROGRESS"!==o.tagName){const n=document.createElement("progress");n.id="subchapterprogress",n.max=100,n.value=e,n.className=o.className,o.replaceWith(n),o=n}else o&&(o.max=100,o.value=e);if(this.assignment_spec){let e=this.total,n=this.assignment_spec.activities_required||1;null===this.assignment_spec.activities_required&&(this.assignment_spec.activities_required=this.possible),e>=n&&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)}))}if(!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 n=document.getElementById("scprogresstotal");n&&(n.textContent=this.total);const t=document.getElementById("scprogressposs");t&&(t.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"}),n={...this.assignment_spec},t=new Request(`${eBookConfig.new_server_prefix}/logger/update_reading_score`,{method:"POST",body:JSON.stringify(n),headers:e});try{let e=await fetch(t);e.ok||console.error(`Failed to send reading score! ${e.statusText}`),n=await e.json()}catch(e){console.error(`Error sending reading score ${e}`)}}}var s={};let a=-1;function r(e,n,t,o=!1){const i=document.createElement("div");i.className=`studyclues-message ${n}`,o?i.innerHTML=t:i.textContent=t,e.appendChild(i),e.scrollTop=e.scrollHeight}function d(e){return"string"==typeof e&&([/\$\$[\s\S]+?\$\$/,/\$[^$\n]+?\$/,/\\\[[\s\S]+?\\\]/,/\\\([\s\S]+?\\\)/].some((n=>n.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 n=document.getElementById("passwordlink");n&&n.style.removeProperty("display");const t=document.getElementById("registerlink");t&&(t.style.display="none"),document.querySelectorAll("li.loginout").forEach((e=>{e.innerHTML='<a href="'+eBookConfig.app+'/default/user/logout">Log Out</a>'}))})),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 n=document.getElementById("profilelink");n&&(n.style.display="none");const t=document.getElementById("passwordlink");t&&(t.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='<a href="'+eBookConfig.app+'/default/user/login">Login</a>'})),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"}),t={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 n=!1;if(o)try{let e=o.replace(/\\054/g,","),i=JSON.parse(decodeURIComponent(e));i=JSON.parse(decodeURIComponent(i)),i.timezone===t.timezone&&i.tz_offset===t.timezoneoffset&&(console.log("Timezone cookie matches, not sending timezone to server"),n=!0)}catch(e){console.error("Error parsing RS_info cookie, sending timezone to server")}if(!1===n){let n=new Request(`${eBookConfig.new_server_prefix}/logger/set_tz_offset`,{method:"POST",body:JSON.stringify(t),headers:e});try{let e=await fetch(n);e.ok||console.error(`Failed to set timezone! ${e.statusText}`),t=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 n=document.getElementById("inst_peer_link");n&&"function"==typeof n.remove&&n.remove()}document.dispatchEvent(new Event("runestone:login")),function(){let e=localStorage.getItem(`currentAssignmentInfo_${eBookConfig.course}`);if(e&&eBookConfig.readings){var n,t,o,i,s,a,r,d,l,u,c=JSON.parse(e);let m=c.id,g=c.name,h=c.readingNames;(o=document.createElement("div")).textContent="Active assignment: ",(i=document.createElement("a")).textContent=g,i.href=`/assignment/student/doAssignment?assignment_id=${m}`,o.append(i),(s=document.createElement("a")).textContent=" Exit Assignment",s.href=window.location.pathname,s.addEventListener("click",(function(e){localStorage.removeItem(`currentAssignmentInfo_${eBookConfig.course}`)}));let v=window.location.pathname.split("/"),y=v[v.length-2]+"/"+v[v.length-1],b=!1,w=2;document.getElementsByTagName("body")[0].classList.contains("pretext")&&(b=!0,eBookConfig.readings=eBookConfig.readings.map((e=>e.split("/").pop())),y=y.split("/").pop(),w=1);let k=eBookConfig.readings.indexOf(y),C=eBookConfig.readings.length;if(k>0){d=eBookConfig.readings[k-1],(l=v.slice(0,v.length-w)).push(d),u=l.join("/"),a=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}: ${h[k-1]}.`,e.append(f),a.append(e)}else if(0==k){a=o.cloneNode(!0);let e=document.createElement("p");e.textContent=`Page 1 of ${C}.`,a.append(e)}else{let e=!1,n=Object.keys(componentMap);0==n.length&&(n=document.querySelectorAll("[data-component]"),n=Array.from(n).map((function(e){return e.id})));for(let t of n)if(c.questions.includes(t)){e=!0;break}d=eBookConfig.readings[0],(l=v.slice(0,v.length-w)).push(d),u=l.join("/"),a=o.cloneNode(!0);let t=document.createElement("p");t.textContent=e?"This page has activities assigned to the current assignment.":"Notice: this page is not part of the assignment.",t.append(s),a.append(t)}if(k==eBookConfig.readings.length-1){r=o;let e=document.createElement("p");e.textContent=`Page ${C} of ${C}: ${h[k]}`,r.append(e)}else if(k>=0){d=eBookConfig.readings[k+1],(l=v.slice(0,v.length-w)).push(d),u=l.join("/"),r=o;var p=document.createElement("a");p.href=u,p.textContent=`Continue to page ${k+2} of ${C}: ${h[k+1]}`;let e=document.createElement("p");e.append(p),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 n=s.cloneNode(!0);n.addEventListener("click",(function(e){localStorage.removeItem(`currentAssignmentInfo_${eBookConfig.course}`)})),e.append(n),r.append(e)}if((n=document.createElement("div")).className="ptx-runestone-container",a.className="runestone assignment-nav top-assignment-nav",n.append(a),(t=document.createElement("div")).className="ptx-runestone-container",r.className="runestone assignment-nav bottom-assignment-nav",t.append(r),b){let e=document.getElementById("ptx-content");e&&e.insertBefore(n,e.firstChild);let o=document.getElementById("scprogresscontainer");return void(o&&(o.style.marginBottom="20px",o.appendChild(t)))}const x=document.getElementById("main-content");x&&r&&(x.insertBefore(n,x.firstChild),x.appendChild(t))}}(),function(){if(!location.pathname.includes("/ns/books/"))return!1;const e=window.location.hostname;return"localhost"===e?["csawesome2","py4e-int","thinkcspy","PTXSB"].includes(eBookConfig.basecourse):"runestone.academy"===e&&["SI201-W26-MW","SI201-W26-TTh","DukeCS101SP26","mcd-csa-schoology","mcd-csa-canvas"].includes(eBookConfig.course)}()&&function(){if(document.getElementById("studyclues-fab"))return;const e=document.createElement("style");e.textContent='\n #studyclues-fab {\n position: fixed;\n right: 24px;\n bottom: 24px;\n z-index: 9999;\n border: none;\n border-radius: 9999px;\n padding: 12px 18px;\n font-size: 14px;\n font-weight: 600;\n cursor: pointer;\n color: #fff;\n background: #2563eb;\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);\n }\n\n #studyclues-chat {\n position: fixed;\n right: 24px;\n bottom: 78px;\n z-index: 9999;\n width: min(420px, calc(100vw - 32px));\n height: min(520px, calc(100vh - 120px));\n background: #fff;\n border: 1px solid #d1d5db;\n border-radius: 12px;\n box-shadow: 0 14px 36px rgba(0, 0, 0, 0.25);\n display: none;\n flex-direction: column;\n overflow: hidden;\n }\n\n #studyclues-chat.open {\n display: flex;\n }\n\n .studyclues-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 12px;\n border-bottom: 1px solid #e5e7eb;\n font-weight: 600;\n background: #f9fafb;\n }\n\n .studyclues-close {\n border: none;\n background: transparent;\n cursor: pointer;\n font-size: 16px;\n line-height: 1;\n }\n\n .studyclues-coach-toggle {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n font-weight: 500;\n color: #4b5563;\n }\n\n .studyclues-coach-toggle input[type="checkbox"] {\n appearance: none;\n -webkit-appearance: none;\n width: 32px;\n height: 18px;\n border-radius: 9999px;\n background: #d1d5db;\n cursor: pointer;\n position: relative;\n transition: background 0.2s;\n flex-shrink: 0;\n }\n\n .studyclues-coach-toggle input[type="checkbox"]::after {\n content: "";\n position: absolute;\n top: 2px;\n left: 2px;\n width: 14px;\n height: 14px;\n border-radius: 50%;\n background: #fff;\n transition: transform 0.2s;\n }\n\n .studyclues-coach-toggle input[type="checkbox"]:checked {\n background: #2563eb;\n }\n\n .studyclues-coach-toggle input[type="checkbox"]:checked::after {\n transform: translateX(14px);\n }\n\n .studyclues-messages {\n flex: 1;\n overflow-y: auto;\n padding: 12px;\n display: flex;\n flex-direction: column;\n gap: 10px;\n background: #f8fafc;\n }\n\n .studyclues-message {\n max-width: 85%;\n padding: 10px 12px;\n border-radius: 10px;\n white-space: pre-wrap;\n word-break: break-word;\n font-size: 14px;\n line-height: 1.4;\n }\n\n .studyclues-message.user {\n margin-left: auto;\n background: #dbeafe;\n border: 1px solid #bfdbfe;\n }\n\n .studyclues-message.assistant {\n margin-right: auto;\n background: #fff;\n border: 1px solid #e5e7eb;\n }\n\n .studyclues-message.studyclues-loading {\n color: #6b7280;\n font-style: italic;\n }\n\n .studyclues-spinner {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n }\n\n .studyclues-spinner-dot {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: #6b7280;\n opacity: 0.35;\n animation: studyclues-dot-pulse 1s infinite ease-in-out;\n }\n\n .studyclues-spinner-dot:nth-child(2) {\n animation-delay: 0.15s;\n }\n\n .studyclues-spinner-dot:nth-child(3) {\n animation-delay: 0.3s;\n }\n\n @keyframes studyclues-dot-pulse {\n 0%,\n 80%,\n 100% {\n opacity: 0.35;\n transform: scale(1);\n }\n 40% {\n opacity: 1;\n transform: scale(1.2);\n }\n }\n\n .studyclues-inputbar {\n display: flex;\n gap: 8px;\n padding: 10px;\n border-top: 1px solid #e5e7eb;\n background: #fff;\n }\n\n .studyclues-inputbar input {\n flex: 1;\n min-width: 0;\n border: 1px solid #d1d5db;\n border-radius: 8px;\n padding: 8px 10px;\n font-size: 14px;\n }\n\n .studyclues-inputbar button {\n border: none;\n border-radius: 8px;\n padding: 8px 12px;\n cursor: pointer;\n color: #fff;\n background: #2563eb;\n font-weight: 600;\n }\n ',document.head.appendChild(e);const n=document.createElement("button");n.id="studyclues-fab",n.textContent="StudyClues Chat";const t=document.createElement("div");t.id="studyclues-chat",t.innerHTML='\n <div class="studyclues-header">\n <span>StudyClues</span>\n <label class="studyclues-coach-toggle">\n <input type="checkbox" id="studyclues-coach-mode" checked />\n Coach Mode\n </label>\n <button class="studyclues-close" aria-label="Close chat">✕</button>\n </div>\n <div class="studyclues-messages"></div>\n <div class="studyclues-inputbar">\n <input type="text" placeholder="Ask a question about this course..." />\n <button type="button">Send</button>\n </div>\n ',document.body.appendChild(n),document.body.appendChild(t);const i=t.querySelector(".studyclues-close"),s=t.querySelector(".studyclues-messages"),d=t.querySelector(".studyclues-inputbar input"),l=t.querySelector(".studyclues-inputbar button"),u=t.querySelector("#studyclues-coach-mode");let c=u.checked;u.addEventListener("change",(()=>{c=u.checked}));const f=()=>{t.classList.toggle("open"),t.classList.contains("open")&&d.focus()},p=async()=>{let e=d.value.trim();if(!e)return;var n="this page";if(document.querySelector("body.pretext")){let e=document.querySelector("section.section"),t=e.querySelector("span.title").innerText;n=`${e.querySelector("span.codenumber").innerText} ${t}`}else{let e=document.querySelector("span.section-number");e&&(n=e.parentElement.innerText.trim())}-1===a&&(e=`Regarding section "${n}": ${e}`),o.logBookEvent({event:"studyclues_query",act:`query: ${e}`,div_id:`${n}`}),r(s,"user",e),d.value="",l.disabled=!0;const t=document.createElement("div");t.className="studyclues-message assistant studyclues-loading",t.innerHTML='Thinking <span class="studyclues-spinner"><span class="studyclues-spinner-dot"></span><span class="studyclues-spinner-dot"></span><span class="studyclues-spinner-dot"></span></span>',s.appendChild(t),s.scrollTop=s.scrollHeight;try{const n=await fetch("/assignment/student/studyclues_query",{method:"POST",headers:{"Content-Type":"application/json",Accept:"application/json"},body:JSON.stringify({query:e,conversation_id:a,coachMode:c})});if(!n.ok)throw new Error(`Request failed with status ${n.status}`);const t=await n.json(),o=t?.detail||{},i=o?.response||{},d=i?.llm_response,l=i?.references||{};"number"==typeof o.conversation_id&&(a=o.conversation_id);const u=(d||"No response available from StudyClues.").replace(/\[([^\]]+)\]\(([^)]+)\)/g,((e,n,t)=>{const o=l[t]?.content_url;return o?`<a href="${o}" target="_blank" rel="noopener noreferrer">(${n})</a>`:e}));r(s,"assistant",u,!0)}catch(e){r(s,"assistant","Sorry, StudyClues is unavailable right now. Please try again."),console.error("StudyClues chat error:",e)}finally{t.remove(),l.disabled=!1,d.focus()}};n.addEventListener("click",f),i.addEventListener("click",f),l.addEventListener("click",p),d.addEventListener("keydown",(e=>{"Enter"===e.key&&(e.preventDefault(),p())}))}(),-1==window.location.pathname.indexOf("/admin/grading")&&-1==window.location.pathname.indexOf("/peer/")&&function(){let e;function n(){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 t(){e&&clearTimeout(e),e=setTimeout(n,9e5)}["mousemove","keydown","scroll","click","touchstart","wheel"].forEach((e=>{window.addEventListener(e,t,{passive:!0})})),t()}()}else{e="Not logged in",document.dispatchEvent(new Event("runestone:logout"));let n=document.getElementById("browsing_warning");n&&(n.innerHTML="<p class='navbar_message'>Saving and Logging are Disabled</p>");let t=document.getElementById("ad_warning");t&&(t.innerHTML="<p class='navbar_message'>🚫 Log-in to Remove <a href='/runestone/default/ads'>Ads!</a> 🚫 </p>")}document.querySelectorAll(".loggedinuser").forEach((n=>{n.innerHTML=e})),s=new i(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,n=document.getElementById(`adcopy_${e}`),t=document.querySelectorAll(".runestone");t.length>0&&(t[Math.floor(Math.random()*t.length)].after(n),n.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((n=>{let t="";if(n.href.includes("books/published")&&!n.href.includes("?mode=browsing")){if(n.href.includes("#")){let e=n.href.indexOf("#");t=n.href.substring(e),n.href=n.href.substring(0,e)}n.href=n.href.includes("?")?n.href+e.replace("?","&")+t:n.href+e+t}}))}}))},98098:(e,n,t)=>{"use strict";t.d(n,{$y:()=>s,JK:()=>i,yT:()=>a});var o=t(77394);async function i(e,n,t){if(!e)return void jQuery(`#${n}`).html("<p>Sorry, no source is available for preview.</p>");e=e.replace(/..\/_images/g,`${eBookConfig.app}/books/published/${eBookConfig.basecourse}/_images`),jQuery(`#${n}`).html(e),void 0===window.componentMap&&(window.componentMap={});let i=$($(`#${n} [data-component]`)[0]).data("component");await(0,o.w)(i);let s={};if(s.orig=jQuery(`#${n} [data-component]`)[0],s.orig&&(s.lang=$(s.orig).data("lang"),s.useRunestoneServices=!0,s.graderactive=!1,s.python3=!0,void 0!==t))for(let e in t)s[e]=t[e];if("undefined"==typeof component_factory)alert("Error: Missing the component factory!");else if(window.component_factory[i]||jQuery(`#${n}`).html()){let e=window.component_factory[i](s);"activecode"===i&&(t.multiGrader?window.componentMap[`${t.gradingContainer} ${e.divid}`]=e:window.componentMap[e.divid]=e)}else jQuery(`#${n}`).html(`<p>Preview not available for ${i}</p>`)}function s(e,n){e=e.replace(/..\/_images/g,`${eBookConfig.app}/books/published/${eBookConfig.basecourse}/_images`);let t,o,i=$($(e).find("[data-component]")[0]).data("component"),s=$(e).find("[data-component]").first().attr("id");document.getElementById(s)||(t=$("<div/>",{css:{display:"none"}}).appendTo("body"),t.html(e));let a={orig:document.getElementById(s),timed:!0};if(void 0!==n)for(let e in n)a[e]=n[e];i in window.component_factory&&(o=window.component_factory[i](a));let r={};return r.question=o,r}async function a(e){let n=e.querySelector("[data-component]");if(null==n)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 t=n.dataset.component;if(await(0,o.w)(t),0==$(this).closest("[data-component=timedAssessment]").length)try{let e=n.id;window.componentMap[e]=window.component_factory[t]({orig:n,useRunestoneServices:eBookConfig.useRunestoneServices})}catch(e){console.log(`Error rendering ${t} Problem ${this.id}\n Details: ${e}`)}}}},e=>{e.O(0,[723],(()=>e(e.s=77394))),e.O()}]);
|
||
//# sourceMappingURL=prefix-runestone.a4a209ed3a55c515.bundle.js.map
|