diff --git a/devNotes/sugarcube stuff/important for updating sugarcube.txt b/devNotes/sugarcube stuff/important for updating sugarcube.txt
index 3a232879724f823be8532a865fb7511616ebab25..f60ec8151d80de5171aa970317922943aa63559f 100644
--- a/devNotes/sugarcube stuff/important for updating sugarcube.txt	
+++ b/devNotes/sugarcube stuff/important for updating sugarcube.txt	
@@ -29,16 +29,14 @@ into this:
 
     var t=jQuery(this);
     const dataPassage = t.attr('data-passage');
-               const savedYOffset = window.pageYOffset;
-               t.is("[aria-pressed]")&&t.attr("aria-pressed","true"===t.attr("aria-pressed")?"false":"true"),e.apply(this,arguments);
-               const doJump = function(){ window.scrollTo(0, savedYOffset); }
-               if ( dataPassage && (window.lastDataPassageLink === dataPassage))
-                       doJump();
-               else if (dataPassage && dataPassage.includes('Workaround')) {
-                       doJump(); /* Horrible hack to workaround the workaround... */
-                       setTimeout(doJump, 10); setTimeout(doJump, 100); setTimeout(doJump, 300);
-               }
-               window.lastDataPassageLink = dataPassage;
-
-
+    const initialDataPassage = window && window.SugarCube && window.SugarCube.State && window.SugarCube.State.passage;
+    const savedYOffset = window.pageYOffset;
+    t.is("[aria-pressed]")&&t.attr("aria-pressed","true"===t.attr("aria-pressed")?"false":"true"),e.apply(this,arguments);
+    const doJump = function(){ window.scrollTo(0, savedYOffset); }
+    if ( dataPassage && (window.lastDataPassageLink === dataPassage || initialDataPassage === dataPassage))
+        doJump();
+    window.lastDataPassageLink = dataPassage;
+
+This uses two separate methods to detect if we are returning to the same page.  Just checking sugarcube should actually be sufficient, but
+no harm in this approach either.
 
diff --git a/devNotes/sugarcube stuff/stuffedanon's sugarcube header b/devNotes/sugarcube stuff/stuffedanon's sugarcube header
index 7b2220405618010a392de163d87b2c93df79341a..25017cf00a53428e9cc5a372ac8a4861717bd46b 100644
--- a/devNotes/sugarcube stuff/stuffedanon's sugarcube header	
+++ b/devNotes/sugarcube stuff/stuffedanon's sugarcube header	
@@ -115,17 +115,14 @@ var saveAs=saveAs||navigator.msSaveBlob&&navigator.msSaveBlob.bind(navigator)||f
 	<script id="script-sugarcube" type="text/javascript">
 	/*! SugarCube JS */
 	if(document.documentElement.getAttribute("data-init")==="loading"){!function(window,document,jQuery,undefined){"use strict";function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _toConsumableArray(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t<e.length;t++)r[t]=e[t];return r}return Array.from(e)}var _createClass=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),_slicedToArray=function(){function e(e,t){var r=[],a=!0,n=!1,i=undefined;try{for(var o,s=e[Symbol.iterator]();!(a=(o=s.next()).done)&&(r.push(o.value),!t||r.length!==t);a=!0);}catch(e){n=!0,i=e}finally{try{!a&&s.return&&s.return()}finally{if(n)throw i}}return r}return function(t,r){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},errorPrologRegExp=/^(?:(?:uncaught\s+(?:exception:\s+)?)?error:\s+)+/i,Alert=function(){function e(e,t,r,a){var n="fatal"===e,i="Apologies! "+(n?"A fatal":"An")+" error has occurred.";i+=n?" Aborting.":" You may be able to continue, but some parts may not work properly.",null==t&&null==r||(i+="\n\nError",null!=t&&(i+=" ["+t+"]"),i+=null!=r?": "+r.replace(errorPrologRegExp,"")+".":": unknown error."),"object"===(void 0===a?"undefined":_typeof(a))&&a.stack&&(i+="\n\nStack Trace:\n"+a.stack),window.alert(i)}function t(t,r,a){e(null,t,r,a)}function r(t,r,a){e("fatal",t,r,a)}return function(e){window.onerror=function(a,n,i,o,s){"complete"===document.readyState?t(null,a,s):(r(null,a,s),window.onerror=e,"function"==typeof window.onerror&&window.onerror.apply(this,arguments))}}(window.onerror),Object.freeze(Object.defineProperties({},{error:{value:t},fatal:{value:r}}))}(),Patterns=function(){var e=function(){var e=new Map([[" ","\\u0020"],["\f","\\f"],["\n","\\n"],["\r","\\r"],["\t","\\t"],["\v","\\v"],[" ","\\u00a0"],[" ","\\u1680"],["᠎","\\u180e"],[" ","\\u2000"],[" ","\\u2001"],[" ","\\u2002"],[" ","\\u2003"],[" ","\\u2004"],[" ","\\u2005"],[" ","\\u2006"],[" ","\\u2007"],[" ","\\u2008"],[" ","\\u2009"],[" ","\\u200a"],["\u2028","\\u2028"],["\u2029","\\u2029"],[" ","\\u202f"],[" ","\\u205f"],[" ","\\u3000"],["\ufeff","\\ufeff"]]),t=/\s/,r="";return e.forEach(function(e,a){t.test(a)||(r+=e)}),r?"[\\s"+r+"]":"\\s"}(),t="[0-9A-Z_a-z\\-\\u00c0-\\u00d6\\u00d8-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]",r=t.replace("\\-",""),a="("+t+"+)\\(([^\\)\\|\\n]+)\\):",n="("+t+"+):([^;\\|\\n]+);",i="((?:\\."+t+"+)+);",o="((?:#"+t+"+)+);",s=a+"|"+n+"|"+i+"|"+o;return Object.freeze({space:e,spaceNoTerminator:"[\\u0020\\f\\t\\v\\u00a0\\u1680\\u180e\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]",lineTerminator:"[\\n\\r\\u2028\\u2029]",anyLetter:t,anyLetterStrict:r,identifierFirstChar:"[$A-Z_a-z]",identifier:"[$A-Z_a-z][$0-9A-Z_a-z]*",variableSigil:"[$_]",variable:"[$_][$A-Z_a-z][$0-9A-Z_a-z]*",macroName:"[A-Za-z][\\w-]*|[=-]",cssImage:"\\[[<>]?[Ii][Mm][Gg]\\[(?:\\s|\\S)*?\\]\\]+",inlineCss:s,url:"(?:file|https?|mailto|ftp|javascript|irc|news|data):[^\\s'\"]+"})}();!function(){function e(e,t){var n=String(e);switch(t){case"start":return n&&r.test(n)?n.replace(r,""):n;case"end":return n&&a.test(n)?n.replace(a,""):n;default:throw new Error('_trimFrom called with incorrect where parameter value: "'+t+'"')}}function t(e,t){var r=Number.parseInt(e,10)||0;if(r<1)return"";var a=void 0===t?"":String(t);for(""===a&&(a=" ");a.length<r;){var n=a.length,i=r-n;a+=n>i?a.slice(0,i):a}return a.length>r&&(a=a.slice(0,r)),a}var r=/^[\s\u00A0\uFEFF][\s\u00A0\uFEFF]*/,a=/[\s\u00A0\uFEFF][\s\u00A0\uFEFF]*$/;Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.includes called on null or undefined");if(0===arguments.length)return!1;var e=this.length>>>0;if(0===e)return!1;var t=arguments[0],r=Number(arguments[1])||0;for(r<0&&(r=Math.max(0,e+r));r<e;++r){var a=this[r];if(t===a||t!==t&&a!==a)return!0}return!1}}),String.prototype.padStart||Object.defineProperty(String.prototype,"padStart",{configurable:!0,writable:!0,value:function(e,r){if(null==this)throw new TypeError("String.prototype.padStart called on null or undefined");var a=String(this),n=a.length,i=Number.parseInt(e,10);return i<=n?a:t(i-n,r)+a}}),String.prototype.padEnd||Object.defineProperty(String.prototype,"padEnd",{configurable:!0,writable:!0,value:function(e,r){if(null==this)throw new TypeError("String.prototype.padEnd called on null or undefined");var a=String(this),n=a.length,i=Number.parseInt(e,10);return i<=n?a:a+t(i-n,r)}}),String.prototype.trimStart||Object.defineProperty(String.prototype,"trimStart",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.trimStart called on null or undefined");return e(this,"start")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.trimLeft called on null or undefined");return e(this,"start")}}),String.prototype.trimEnd||Object.defineProperty(String.prototype,"trimEnd",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.trimEnd called on null or undefined");return e(this,"end")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.trimRight called on null or undefined");return e(this,"end")}})}(),function(){function _random(){var e=void 0,t=void 0;switch(arguments.length){case 0:throw new Error("_random called with insufficient parameters");case 1:e=0,t=arguments[0];break;default:e=arguments[0],t=arguments[1]}if(e>t){var r=[t,e];e=r[0],t=r[1]}return Math.floor(_nativeMathRandom()*(t-e+1))+e}function _randomIndex(e,t){var r=void 0,a=void 0;switch(t.length){case 1:r=0,a=e-1;break;case 2:r=0,a=Math.trunc(t[1]);break;default:r=Math.trunc(t[1]),a=Math.trunc(t[2])}return Number.isNaN(r)?r=0:!Number.isFinite(r)||r>=e?r=e-1:r<0&&(r=e+r)<0&&(r=0),Number.isNaN(a)?a=0:!Number.isFinite(a)||a>=e?a=e-1:a<0&&(a=e+a)<0&&(a=e-1),_random(r,a)}function _getCodePointStartAndEnd(e,t){var r=e.charCodeAt(t);if(Number.isNaN(r))return{char:"",start:-1,end:-1};if(r<55296||r>57343)return{char:e.charAt(t),start:t,end:t};if(r>=55296&&r<=56319){var a=t+1;if(a>=e.length)throw new Error("high surrogate without trailing low surrogate");var n=e.charCodeAt(a);if(n<56320||n>57343)throw new Error("high surrogate without trailing low surrogate");return{char:e.charAt(t)+e.charAt(a),start:t,end:a}}if(0===t)throw new Error("low surrogate without leading high surrogate");var i=t-1,o=e.charCodeAt(i);if(o<55296||o>56319)throw new Error("low surrogate without leading high surrogate");return{char:e.charAt(i)+e.charAt(t),start:i,end:t}}var _nativeMathRandom=Math.random;Object.defineProperty(Array,"random",{configurable:!0,writable:!0,value:function(e){if(null==e||"object"!==(void 0===e?"undefined":_typeof(e))||!Object.prototype.hasOwnProperty.call(e,"length"))throw new TypeError("Array.random array parameter must be an array or array-lke object");var t=e.length>>>0;if(0!==t){return e[0===arguments.length?_random(0,t-1):_randomIndex(t,Array.prototype.slice.call(arguments,1))]}}}),Object.defineProperty(Array.prototype,"concatUnique",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.concatUnique called on null or undefined");var e=Array.from(this);if(0===arguments.length)return e;var t=Array.prototype.reduce.call(arguments,function(e,t){return e.concat(t)},[]),r=t.length;if(0===r)return e;for(var a=Array.prototype.indexOf,n=Array.prototype.push,i=0;i<r;++i){var o=t[i];-1===a.call(e,o)&&n.call(e,o)}return e}}),Object.defineProperty(Array.prototype,"count",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.count called on null or undefined");for(var e=Array.prototype.indexOf,t=arguments[0],r=Number(arguments[1])||0,a=0;-1!==(r=e.call(this,t,r));)++a,++r;return a}}),Object.defineProperty(Array.prototype,"delete",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.delete called on null or undefined");if(0===arguments.length)return[];if(0==this.length>>>0)return[];for(var e=Array.prototype.indexOf,t=Array.prototype.push,r=Array.prototype.splice,a=Array.prototype.concat.apply([],arguments),n=[],i=0,o=a.length;i<o;++i)for(var s=a[i],u=0;-1!==(u=e.call(this,s,u));)t.apply(n,r.call(this,u,1));return n}}),Object.defineProperty(Array.prototype,"deleteAt",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.deleteAt called on null or undefined");if(0===arguments.length)return[];var e=this.length>>>0;if(0===e)return[];for(var t=Array.prototype.splice,r=[].concat(_toConsumableArray(new Set(Array.prototype.concat.apply([],arguments).map(function(t){return t<0?Math.max(0,e+t):t})).values())),a=[].concat(_toConsumableArray(r)).sort(function(e,t){return t-e}),n=[],i=0,o=r.length;i<o;++i)n[i]=this[r[i]];for(var s=0,u=a.length;s<u;++s)t.call(this,a[s],1);return n}}),Object.defineProperty(Array.prototype,"flatten",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.flatten called on null or undefined");return Array.prototype.reduce.call(this,function(e,t){return e.concat(Array.isArray(t)?t.flatten():t)},[])}}),Object.defineProperty(Array.prototype,"includesAll",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.includesAll called on null or undefined");if(1===arguments.length)return Array.isArray(arguments[0])?Array.prototype.includesAll.apply(this,arguments[0]):Array.prototype.includes.apply(this,arguments);for(var e=0,t=arguments.length;e<t;++e)if(!Array.prototype.some.call(this,function(e){return e===this.val||e!==e&&this.val!==this.val},{val:arguments[e]}))return!1;return!0}}),Object.defineProperty(Array.prototype,"includesAny",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.includesAny called on null or undefined");if(1===arguments.length)return Array.isArray(arguments[0])?Array.prototype.includesAny.apply(this,arguments[0]):Array.prototype.includes.apply(this,arguments);for(var e=0,t=arguments.length;e<t;++e)if(Array.prototype.some.call(this,function(e){return e===this.val||e!==e&&this.val!==this.val},{val:arguments[e]}))return!0;return!1}}),Object.defineProperty(Array.prototype,"pluck",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.pluck called on null or undefined");var e=this.length>>>0;if(0!==e){var t=0===arguments.length?_random(0,e-1):_randomIndex(e,[].concat(Array.prototype.slice.call(arguments)));return Array.prototype.splice.call(this,t,1)[0]}}}),Object.defineProperty(Array.prototype,"pluckMany",{configurable:!0,writable:!0,value:function(e){if(null==this)throw new TypeError("Array.prototype.pluckMany called on null or undefined");var t=this.length>>>0;if(0===t)return[];var r=Math.trunc(e);if(!Number.isInteger(r))throw new Error("Array.prototype.pluckMany want parameter must be an integer");if(r<1)return[];r>t&&(r=t);var a=Array.prototype.splice,n=[],i=t-1;do{n.push(a.call(this,_random(0,i--),1)[0])}while(n.length<r);return n}}),Object.defineProperty(Array.prototype,"pushUnique",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.pushUnique called on null or undefined");var e=arguments.length;if(0===e)return this.length>>>0;for(var t=Array.prototype.indexOf,r=Array.prototype.push,a=0;a<e;++a){var n=arguments[a];-1===t.call(this,n)&&r.call(this,n)}return this.length>>>0}}),Object.defineProperty(Array.prototype,"random",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.random called on null or undefined");var e=this.length>>>0;if(0!==e){return this[0===arguments.length?_random(0,e-1):_randomIndex(e,[].concat(Array.prototype.slice.call(arguments)))]}}}),Object.defineProperty(Array.prototype,"randomMany",{configurable:!0,writable:!0,value:function(e){if(null==this)throw new TypeError("Array.prototype.randomMany called on null or undefined");var t=this.length>>>0;if(0===t)return[];var r=Math.trunc(e);if(!Number.isInteger(r))throw new Error("Array.prototype.randomMany want parameter must be an integer");if(r<1)return[];r>t&&(r=t);var a=new Map,n=[],i=t-1;do{var o=void 0;do{o=_random(0,i)}while(a.has(o));a.set(o,!0),n.push(this[o])}while(n.length<r);return n}}),Object.defineProperty(Array.prototype,"shuffle",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.shuffle called on null or undefined");var e=this.length>>>0;if(0===e)return this;for(var t=e-1;t>0;--t){var r=Math.floor(_nativeMathRandom()*(t+1));if(t!==r){var a=this[t];this[t]=this[r],this[r]=a}}return this}}),Object.defineProperty(Array.prototype,"unshiftUnique",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.unshiftUnique called on null or undefined");var e=arguments.length;if(0===e)return this.length>>>0;for(var t=Array.prototype.indexOf,r=Array.prototype.unshift,a=0;a<e;++a){var n=arguments[a];-1===t.call(this,n)&&r.call(this,n)}return this.length>>>0}}),Object.defineProperty(Function.prototype,"partial",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Function.prototype.partial called on null or undefined");var e=Array.prototype.slice,t=this,r=e.call(arguments,0);return function(){for(var a=[],n=0,i=0;i<r.length;++i)a.push(r[i]===undefined?arguments[n++]:r[i]);return t.apply(this,a.concat(e.call(arguments,n)))}}}),Object.defineProperty(Math,"clamp",{configurable:!0,writable:!0,value:function(e,t,r){var a=Number(e);return Number.isNaN(a)?NaN:a.clamp(t,r)}}),Object.defineProperty(Math,"easeInOut",{configurable:!0,writable:!0,value:function(e){return 1-(Math.cos(Number(e)*Math.PI)+1)/2}}),Object.defineProperty(Number.prototype,"clamp",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Number.prototype.clamp called on null or undefined");if(2!==arguments.length)throw new Error("Number.prototype.clamp called with an incorrect number of parameters");var e=Number(arguments[0]),t=Number(arguments[1]);if(e>t){var r=[t,e];e=r[0],t=r[1]}return Math.min(Math.max(this,e),t)}}),RegExp.escape||function(){var e=/[\\^$*+?.()|[\]{}]/g,t=new RegExp(e.source);Object.defineProperty(RegExp,"escape",{configurable:!0,writable:!0,value:function(r){var a=String(r);return a&&t.test(a)?a.replace(e,"\\$&"):a}})}(),function(){var e=/{(\d+)(?:,([+-]?\d+))?}/g,t=new RegExp(e.source);Object.defineProperty(String,"format",{configurable:!0,writable:!0,value:function(r){function a(e,t,r){if(!t)return e;var a=Math.abs(t)-e.length;if(a<1)return e;var n=String(r).repeat(a);return t<0?e+n:n+e}if(arguments.length<2)return 0===arguments.length?"":r;var n=2===arguments.length&&Array.isArray(arguments[1])?[].concat(_toConsumableArray(arguments[1])):Array.prototype.slice.call(arguments,1);return 0===n.length?r:t.test(r)?(e.lastIndex=0,r.replace(e,function(e,t,r){var i=n[t];if(null==i)return"";for(;"function"==typeof i;)i=i();switch(void 0===i?"undefined":_typeof(i)){case"string":break;case"object":i=JSON.stringify(i);break;default:i=String(i)}return a(i,r?Number.parseInt(r,10):0," ")})):r}})}(),Object.defineProperty(String.prototype,"contains",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.contains called on null or undefined");return-1!==String.prototype.indexOf.apply(this,arguments)}}),Object.defineProperty(String.prototype,"count",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.count called on null or undefined");var e=String(arguments[0]||"");if(""===e)return 0;for(var t=String.prototype.indexOf,r=e.length,a=Number(arguments[1])||0,n=0;-1!==(a=t.call(this,e,a));)++n,a+=r;return n}}),Object.defineProperty(String.prototype,"splice",{configurable:!0,writable:!0,value:function(e,t,r){if(null==this)throw new TypeError("String.prototype.splice called on null or undefined");var a=this.length>>>0;if(0===a)return"";var n=Number(e);Number.isSafeInteger(n)?n<0&&(n+=a)<0&&(n=0):n=0,n>a&&(n=a);var i=Number(t);(!Number.isSafeInteger(i)||i<0)&&(i=0);var o=this.slice(0,n);return void 0!==r&&(o+=r),n+i<a&&(o+=this.slice(n+i)),o}}),Object.defineProperty(String.prototype,"splitOrEmpty",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.splitOrEmpty called on null or undefined");return""===String(this)?[]:String.prototype.split.apply(this,arguments)}}),Object.defineProperty(String.prototype,"toLocaleUpperFirst",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.toLocaleUpperFirst called on null or undefined");var e=String(this),t=_getCodePointStartAndEnd(e,0),r=t.char,a=t.end;return-1===a?"":r.toLocaleUpperCase()+e.slice(a+1)}}),Object.defineProperty(String.prototype,"toUpperFirst",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.toUpperFirst called on null or undefined");var e=String(this),t=_getCodePointStartAndEnd(e,0),r=t.char,a=t.end;return-1===a?"":r.toUpperCase()+e.slice(a+1)}}),Object.defineProperty(Date.prototype,"toJSON",{configurable:!0,writable:!0,value:function(){return["(revive:date)",this.toISOString()]}}),Object.defineProperty(Function.prototype,"toJSON",{configurable:!0,writable:!0,value:function(){return["(revive:eval)","("+this.toString()+")"]}}),Object.defineProperty(Map.prototype,"toJSON",{configurable:!0,writable:!0,value:function(){return["(revive:map)",[].concat(_toConsumableArray(this))]}}),Object.defineProperty(RegExp.prototype,"toJSON",{configurable:!0,writable:!0,value:function(){return["(revive:eval)",this.toString()]}}),Object.defineProperty(Set.prototype,"toJSON",{configurable:!0,writable:!0,value:function(){return["(revive:set)",[].concat(_toConsumableArray(this))]}}),Object.defineProperty(JSON,"reviveWrapper",{configurable:!0,writable:!0,value:function(e,t){if("string"!=typeof e)throw new TypeError("JSON.reviveWrapper code parameter must be a string");return["(revive:eval)",[e,t]]}}),Object.defineProperty(JSON,"_real_parse",{value:JSON.parse}),Object.defineProperty(JSON,"parse",{configurable:!0,writable:!0,value:function value(text,reviver){return JSON._real_parse(text,function(key,val){var value=val;if(Array.isArray(value)&&2===value.length)switch(value[0]){case"(revive:set)":value=new Set(value[1]);break;case"(revive:map)":value=new Map(value[1]);break;case"(revive:date)":value=new Date(value[1]);break;case"(revive:eval)":try{if(Array.isArray(value[1])){var $ReviveData$=value[1][1];value=eval(value[1][0])}else value=eval(value[1])}catch(e){}}else if("string"==typeof value&&"@@revive@@"===value.slice(0,10))try{value=eval(value.slice(10))}catch(e){}if("function"==typeof reviver)try{value=reviver(key,value)}catch(e){}return value})}}),Object.defineProperty(Array.prototype,"contains",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.contains called on null or undefined");return Array.prototype.includes.apply(this,arguments)}}),Object.defineProperty(Array.prototype,"containsAll",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.containsAll called on null or undefined");return Array.prototype.includesAll.apply(this,arguments)}}),Object.defineProperty(Array.prototype,"containsAny",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.containsAny called on null or undefined");return Array.prototype.includesAny.apply(this,arguments)}}),Object.defineProperty(String.prototype,"readBracketedList",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.readBracketedList called on null or undefined");for(var e=new RegExp("(?:\\[\\[((?:\\s|\\S)*?)\\]\\])|([^\"'\\s]\\S*)","gm"),t=[],r=void 0;null!==(r=e.exec(this));)r[1]?t.push(r[1]):r[2]&&t.push(r[2]);return t}})}();var Browser=function(){var e=navigator.userAgent.toLowerCase(),t=e.includes("windows phone"),r=Object.freeze({Android:!t&&e.includes("android"),BlackBerry:/blackberry|bb10/.test(e),iOS:!t&&/ip(?:hone|ad|od)/.test(e),Windows:t||e.includes("iemobile"),any:function(){return r.Android||r.BlackBerry||r.iOS||r.Windows}}),a=!r.Windows&&!/khtml|trident|edge/.test(e)&&e.includes("gecko"),n=!e.includes("opera")&&/msie|trident/.test(e),i=n?function(){var t=/(?:msie\s+|rv:)(\d+\.\d)/.exec(e);return t?Number(t[1]):0}():null,o=e.includes("opera")||e.includes(" opr/"),s=o?function(){var t=new RegExp((/khtml|chrome/.test(e)?"opr":"version")+"\\/(\\d+\\.\\d+)"),r=t.exec(e);return r?Number(r[1]):0}():null;return Object.freeze({userAgent:e,isMobile:r,isGecko:a,isIE:n,ieVersion:i,isOpera:o,operaVersion:s})}(),Has=function(){var e=function(){try{return"function"==typeof document.createElement("audio").canPlayType}catch(e){}return!1}(),t=function(){try{return"Blob"in window&&"File"in window&&"FileList"in window&&"FileReader"in window&&!Browser.isMobile.any()&&(!Browser.isOpera||Browser.operaVersion>=15)}catch(e){}return!1}(),r=function(){try{return"geolocation"in navigator&&"function"==typeof navigator.geolocation.getCurrentPosition&&"function"==typeof navigator.geolocation.watchPosition}catch(e){}return!1}(),a=function(){try{return"MutationObserver"in window&&"function"==typeof window.MutationObserver}catch(e){}return!1}(),n=function(){try{return"performance"in window&&"function"==typeof window.performance.now}catch(e){}return!1}();return Object.freeze({audio:e,fileAPI:t,geolocation:r,mutationObserver:a,performance:n})}(),_ref3=function(){function e(t){if("object"!==(void 0===t?"undefined":_typeof(t))||null===t)return t;if(t instanceof String)return String(t);if(t instanceof Number)return Number(t);if(t instanceof Boolean)return Boolean(t);if("function"==typeof t.clone)return t.clone(!0);if(t.nodeType&&"function"==typeof t.cloneNode)return t.cloneNode(!0);var r=void 0;return t instanceof Array?r=new Array(t.length):t instanceof Date?r=new Date(t.getTime()):t instanceof Map?(r=new Map,t.forEach(function(t,a){return r.set(a,e(t))})):t instanceof RegExp?r=new RegExp(t):t instanceof Set?(r=new Set,t.forEach(function(t){return r.add(e(t))})):r=Object.create(Object.getPrototypeOf(t)),Object.keys(t).forEach(function(a){return r[a]=e(t[a])}),r}function t(e){for(var t=document.createDocumentFragment(),r=document.createElement("p"),a=void 0;null!==(a=e.firstChild);){if(a.nodeType===Node.ELEMENT_NODE){switch(a.nodeName.toUpperCase()){case"BR":if(null!==a.nextSibling&&a.nextSibling.nodeType===Node.ELEMENT_NODE&&"BR"===a.nextSibling.nodeName.toUpperCase()){e.removeChild(a.nextSibling),e.removeChild(a),t.appendChild(r),r=document.createElement("p");continue}if(!r.hasChildNodes()){e.removeChild(a);continue}break;case"ADDRESS":case"ARTICLE":case"ASIDE":case"BLOCKQUOTE":case"CENTER":case"DIV":case"DL":case"FIGURE":case"FOOTER":case"FORM":case"H1":case"H2":case"H3":case"H4":case"H5":case"H6":case"HEADER":case"HR":case"MAIN":case"NAV":case"OL":case"P":case"PRE":case"SECTION":case"TABLE":case"UL":r.hasChildNodes()&&(t.appendChild(r),r=document.createElement("p")),t.appendChild(a);continue}}r.appendChild(a)}r.hasChildNodes()&&t.appendChild(r),e.appendChild(t)}function r(){try{return document.activeElement||null}catch(e){return null}}function a(e,t,r){var a="object"===(void 0===e?"undefined":_typeof(e))?e:document.getElementById(e);if(null==a)return null;var n=Array.isArray(t)?t:[t];jQuery(a).empty();for(var i=0,o=n.length;i<o;++i)if(Story.has(n[i]))return new Wikifier(a,Story.get(n[i]).processText().trim()),a;if(null!=r){var s=String(r).trim();""!==s&&new Wikifier(a,s)}return a}function n(e,t,r){var a=jQuery(document.createElement("div")),n=jQuery(document.createElement("button")),i=jQuery(document.createElement("pre")),o=L10n.get("errorTitle")+": "+(t||"unknown error");return n.addClass("error-toggle").ariaClick({label:L10n.get("errorToggle")},function(){n.hasClass("enabled")?(n.removeClass("enabled"),i.attr({"aria-hidden":!0,hidden:"hidden"})):(n.addClass("enabled"),i.removeAttr("aria-hidden hidden"))}).appendTo(a),jQuery(document.createElement("span")).addClass("error").text(o).appendTo(a),jQuery(document.createElement("code")).text(r).appendTo(i),i.addClass("error-source").attr({"aria-hidden":!0,hidden:"hidden"}).appendTo(a),a.addClass("error-view").appendTo(e),console.warn(o+"\n\t"+r.replace(/\n/g,"\n\t")),!1}function i(e,t){var r=i;switch(void 0===e?"undefined":_typeof(e)){case"number":if(Number.isNaN(e))return t;break;case"object":if(null===e)return t;if(Array.isArray(e))return e.map(function(e){return r(e,t)}).join(", ");if(e instanceof Set)return[].concat(_toConsumableArray(e)).map(function(e){return r(e,t)}).join(", ");if(e instanceof Map){return"{ "+[].concat(_toConsumableArray(e)).map(function(e){var a=_slicedToArray(e,2),n=a[0],i=a[1];return r(n,t)+" → "+r(i,t)}).join(", ")+" }"}return e instanceof Date?e.toLocaleString():"function"==typeof e.toString?e.toString():Object.prototype.toString.call(e);case"function":case"undefined":return t}return String(e)}return Object.freeze(Object.defineProperties({},{clone:{value:e},convertBreaks:{value:t},safeActiveElement:{value:r},setPageElement:{value:a},throwError:{value:n},toStringOrDefault:{value:i}}))}(),clone=_ref3.clone,convertBreaks=_ref3.convertBreaks,safeActiveElement=_ref3.safeActiveElement,setPageElement=_ref3.setPageElement,throwError=_ref3.throwError,toStringOrDefault=_ref3.toStringOrDefault;!function(){function e(e){13!==e.which&&32!==e.which||(e.preventDefault(),jQuery(safeActiveElement()||this).trigger("click"))}function t(e){return function(){
-    var t=jQuery(this);
-    const dataPassage = t.attr('data-passage');
+		var t=jQuery(this);
+		const dataPassage = t.attr('data-passage');
+		const initialDataPassage = window && window.SugarCube && window.SugarCube.State && window.SugarCube.State.passage;
 		const savedYOffset = window.pageYOffset;
 		t.is("[aria-pressed]")&&t.attr("aria-pressed","true"===t.attr("aria-pressed")?"false":"true"),e.apply(this,arguments);
 		const doJump = function(){ window.scrollTo(0, savedYOffset); }
-		if ( dataPassage && (window.lastDataPassageLink === dataPassage))
+		if ( dataPassage && (window.lastDataPassageLink === dataPassage || initialDataPassage === dataPassage))
 			doJump();
-		else if (dataPassage && dataPassage.includes('Workaround')) {
-			doJump(); /* Horrible hack to workaround the workaround... */
-			setTimeout(doJump, 10); setTimeout(doJump, 100); setTimeout(doJump, 300);
-		}
 		window.lastDataPassageLink = dataPassage;
   }}function r(e){return t(function(){jQuery(this).off(".aria-clickable").removeAttr("tabindex aria-controls aria-pressed").not("a,button").removeAttr("role").end().filter("button").prop("disabled",!0),e.apply(this,arguments)})}jQuery.fn.extend({ariaClick:function(a,n){if(0===this.length||0===arguments.length)return this;var i=a,o=n;return null==o&&(o=i,i=undefined),i=jQuery.extend({namespace:undefined,one:!1,selector:undefined,data:undefined,controls:undefined,pressed:undefined,label:undefined},i),"string"!=typeof i.namespace?i.namespace="":"."!==i.namespace[0]&&(i.namespace="."+i.namespace),"boolean"==typeof i.pressed&&(i.pressed=i.pressed?"true":"false"),this.filter("button").prop("type","button"),this.not("a,button").attr("role","button"),this.attr("tabindex",0),null!=i.controls&&this.attr("aria-controls",i.controls),null!=i.pressed&&this.attr("aria-pressed",i.pressed),null!=i.label&&this.attr({"aria-label":i.label,title:i.label}),this.not("button").on("keypress.aria-clickable"+i.namespace,i.selector,e),this.on("click.aria-clickable"+i.namespace,i.selector,i.data,i.one?r(o):t(o)),this}})}(),function(){jQuery.extend({wikiWithOptions:function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),a=1;a<t;a++)r[a-1]=arguments[a];if(0!==r.length){var n=document.createDocumentFragment();r.forEach(function(t){return new Wikifier(n,t,e)});var i=[].concat(_toConsumableArray(n.querySelectorAll(".error"))).map(function(e){return e.textContent.replace(errorPrologRegExp,"")});if(i.length>0)throw new Error(i.join("; "))}},wiki:function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];this.wikiWithOptions.apply(this,[undefined].concat(t))}}),jQuery.fn.extend({wikiWithOptions:function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),a=1;a<t;a++)r[a-1]=arguments[a];if(0===this.length||0===r.length)return this;var n=document.createDocumentFragment();return r.forEach(function(t){return new Wikifier(n,t,e)}),this.append(n),this},wiki:function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return this.wikiWithOptions.apply(this,[undefined].concat(t))}})}();var Util=function(){function e(e){return Object.freeze(Object.assign(Object.create(null),e))}function t(e){return Object.prototype.toString.call(e).slice(8,-1)}function r(e){var t=void 0;switch(void 0===e?"undefined":_typeof(e)){case"number":t=e;break;case"string":t=Number(e);break;default:return!1}return!Number.isNaN(t)&&Number.isFinite(t)}function a(e){return"boolean"==typeof e||"string"==typeof e&&("true"===e||"false"===e)}function n(e){return String(e).trim().replace(/[^\w\s\u2013\u2014-]+/g,"").replace(/[_\s\u2013\u2014-]+/g,"-").toLocaleLowerCase()}function i(e){if(null==e)return"";var t=String(e);return t&&p.test(t)?t.replace(f,function(e){return g[e]}):t}function o(e){if(null==e)return"";var t=String(e);return t&&v.test(t)?t.replace(m,function(e){return y[e.toLowerCase()]}):t}function s(e,t){var r=String(e),a=Math.trunc(t),n=r.charCodeAt(a);if(Number.isNaN(n))return{char:"",start:-1,end:-1};var i={char:r.charAt(a),start:a,end:a};if(n<55296||n>57343)return i;if(n>=55296&&n<=56319){var o=a+1;if(o>=r.length)return i;var s=r.charCodeAt(o);return s<56320||s>57343?i:(i.char=i.char+r.charAt(o),i.end=o,i)}if(0===a)return i;var u=a-1,l=r.charCodeAt(u);return l<55296||l>56319?i:(i.char=r.charAt(u)+i.char,i.start=u,i)}function u(){return b.now()}function l(e){var t=w.exec(String(e));if(null===t)throw new SyntaxError('invalid time value syntax: "'+e+'"');var r=Number(t[1]);if(1===t[2].length&&(r*=1e3),Number.isNaN(r)||!Number.isFinite(r))throw new RangeError('invalid time value: "'+e+'"');return r}function c(e){if("number"!=typeof e||Number.isNaN(e)||!Number.isFinite(e)){var r=void 0;switch(void 0===e?"undefined":_typeof(e)){case"string":r='"'+e+'"';break;case"number":r=String(e);break;default:r=t(e)}throw new Error("invalid milliseconds: "+r)}return e+"ms"}function d(e){if(!e.includes("-"))switch(e){case"bgcolor":return"backgroundColor";case"float":return"cssFloat";default:return e}return("-ms-"===e.slice(0,4)?e.slice(1):e).split("-").map(function(e,t){return 0===t?e:e.toUpperFirst()}).join("")}function h(e){var t=document.createElement("a"),r=Object.create(null);t.href=e,t.search&&t.search.replace(/^\?/,"").splitOrEmpty(/(?:&(?:amp;)?|;)/).forEach(function(e){var t=e.split("="),a=_slicedToArray(t,2),n=a[0],i=a[1];r[n]=i});var a=t.host&&"/"!==t.pathname[0]?"/"+t.pathname:t.pathname;return{href:t.href,protocol:t.protocol,host:t.host,hostname:t.hostname,port:t.port,path:""+a+t.search,pathname:a,query:t.search,search:t.search,queries:r,searches:r,hash:t.hash}}var f=/[&<>"'`]/g,p=new RegExp(f.source),g=Object.freeze({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","`":"&#96;"}),m=/&(?:amp|#38|#x26|lt|#60|#x3c|gt|#62|#x3e|quot|#34|#x22|apos|#39|#x27|#96|#x60);/gi,v=new RegExp(m.source,"i"),y=Object.freeze({"&amp;":"&","&#38;":"&","&#x26;":"&","&lt;":"<","&#60;":"<","&#x3c;":"<","&gt;":">","&#62;":">","&#x3e;":">","&quot;":'"',"&#34;":'"',"&#x22;":'"',"&apos;":"'","&#39;":"'","&#x27;":"'","&#96;":"`","&#x60;":"`"}),b=Has.performance?performance:Date,w=/^([+-]?(?:\d*\.)?\d+)([Mm]?[Ss])$/;return Object.freeze(Object.defineProperties({},{toEnum:{value:e},toStringTag:{value:t},isNumeric:{value:r},isBoolean:{value:a},slugify:{value:n},escape:{value:i},unescape:{value:o},charAndPosAt:{value:s},fromCssTime:{value:l},toCssTime:{value:c},fromCssProperty:{value:d},parseUrl:{value:h},now:{value:u},random:{value:Math.random},entityEncode:{value:i},entityDecode:{value:o},
 evalExpression:{value:function(){return Scripting.evalJavaScript.apply(Scripting,arguments)}},evalStatements:{value:function(){return Scripting.evalJavaScript.apply(Scripting,arguments)}}}))}(),SimpleAudio=function(){function e(){return g}function t(e){g=!!e,l("mute",g)}function r(){return f}function a(e){f=Math.clamp(e,.2,5),l("rate",f)}function n(){return p}function i(e){p=Math.clamp(e,0,1),l("volume",p)}function o(){l("stop")}function s(e,t){if("function"!=typeof t)throw new Error("callback parameter must be a function");h.set(e,t)}function u(e){h.delete(e)}function l(e,t){h.forEach(function(r){return r(e,t)})}function c(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return new(Function.prototype.bind.apply(m,[null].concat(t)))}function d(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return new(Function.prototype.bind.apply(v,[null].concat(t)))}var h=new Map,f=1,p=1,g=!1,m=function(){function e(t){if(_classCallCheck(this,e),Array.isArray(t))this._create(t);else{if(!(t instanceof e))throw new Error("sources parameter must be an array of either URLs or source objects");this._copy(t)}}return _createClass(e,[{key:"_create",value:function(t){if(!Array.isArray(t)||0===t.length)throw new Error("sources parameter must be an array of either URLs or source objects");var r=/^data:\s*audio\/([^;,]+)\s*[;,]/i,a=/\.([^.\/\\]+)$/,n=e.getType,i=[],o=document.createElement("audio");if(t.forEach(function(e){var t=null;switch(void 0===e?"undefined":_typeof(e)){case"string":var s=void 0;if("data:"===e.slice(0,5)){if(null===(s=r.exec(e)))throw new Error("source data URI missing media type")}else if(null===(s=a.exec(Util.parseUrl(e).pathname)))throw new Error("source URL missing file extension");var u=n(s[1]);null!==u&&(t={src:e,type:u});break;case"object":if(null===e)throw new Error("source object cannot be null");if(!e.hasOwnProperty("src"))throw new Error('source object missing required "src" property');if(!e.hasOwnProperty("format"))throw new Error('source object missing required "format" property');var l=n(e.format);null!==l&&(t={src:e.src,type:l});break;default:throw new Error("invalid source value (type: "+(void 0===e?"undefined":_typeof(e))+")")}if(null!==t){var c=document.createElement("source");c.src=t.src,c.type=Browser.isOpera?t.type.replace(/;.*$/,""):t.type,o.appendChild(c),i.push(t)}}),!o.hasChildNodes())if(Browser.isIE)o.src=undefined;else{var s=document.createElement("source");s.src=undefined,s.type=undefined,o.appendChild(s)}this._finalize(o,i,clone(t))}},{key:"_copy",value:function(t){if(!(t instanceof e))throw new Error("original parameter must be an instance of AudioWrapper");this._finalize(t.audio.cloneNode(!0),clone(t.sources),clone(t.originalSources))}},{key:"_finalize",value:function(e,t,r){var a=this;Object.defineProperties(this,{audio:{configurable:!0,value:e},sources:{configurable:!0,value:Object.freeze(t)},originalSources:{configurable:!0,value:Object.freeze(r)},_error:{writable:!0,value:!1},_faderId:{writable:!0,value:null},_mute:{writable:!0,value:!1},_rate:{writable:!0,value:1},_volume:{writable:!0,value:1}}),jQuery(this.audio).on("loadstart",function(){return a._error=!1}).on("error",function(){return a._error=!0}).find("source:last-of-type").on("error",function(){return a._trigger("error")}),SimpleAudio.subscribe(this,function(e){if(!a.audio)return void SimpleAudio.unsubscribe(a);switch(e){case"mute":a._updateAudioMute();break;case"rate":a._updateAudioRate();break;case"stop":a.stop();break;case"volume":a._updateAudioVolume()}}),this.load()}},{key:"_trigger",value:function(e){jQuery(this.audio).triggerHandler(e)}},{key:"clone",value:function(){return new e(this)}},{key:"destroy",value:function(){SimpleAudio.unsubscribe(this);var e=this.audio;if(e){for(this.fadeStop(),this.stop(),jQuery(e).off();e.hasChildNodes();)e.removeChild(e.firstChild);e.load(),this._error=!0,delete this.audio,delete this.sources,delete this.originalSources}}},{key:"_updateAudioMute",value:function(){this.audio&&(this.audio.muted=this._mute||SimpleAudio.mute)}},{key:"_updateAudioRate",value:function(){this.audio&&(this.audio.playbackRate=this._rate*SimpleAudio.rate)}},{key:"_updateAudioVolume",value:function(){this.audio&&(this.audio.volume=this._volume*SimpleAudio.volume)}},{key:"hasSource",value:function(){return this.sources.length>0}},{key:"hasNoData",value:function(){return!this.audio||this.audio.readyState===HTMLMediaElement.HAVE_NOTHING}},{key:"hasMetadata",value:function(){return!!this.audio&&this.audio.readyState>=HTMLMediaElement.HAVE_METADATA}},{key:"hasSomeData",value:function(){return!!this.audio&&this.audio.readyState>=HTMLMediaElement.HAVE_CURRENT_DATA}},{key:"hasData",value:function(){return!!this.audio&&this.audio.readyState===HTMLMediaElement.HAVE_ENOUGH_DATA}},{key:"isFailed",value:function(){return this._error}},{key:"isLoading",value:function(){return!!this.audio&&this.audio.networkState===HTMLMediaElement.NETWORK_LOADING}},{key:"isPlaying",value:function(){return!!this.audio&&!(this.audio.ended||this.audio.paused||!this.hasSomeData())}},{key:"isPaused",value:function(){return!!this.audio&&(this.audio.paused&&(this.audio.duration===1/0||this.audio.currentTime>0)&&!this.audio.ended)}},{key:"isEnded",value:function(){return!this.audio||this.audio.ended}},{key:"isFading",value:function(){return null!==this._faderId}},{key:"isMuted",value:function(){return this._mute}},{key:"isLooped",value:function(){return!!this.audio&&this.audio.loop}},{key:"load",value:function(){this.audio&&("auto"!==this.audio.preload&&(this.audio.preload="auto"),this.isLoading()||this.audio.load())}},{key:"play",value:function(){this.audio&&this.audio.play()}},{key:"pause",value:function(){this.audio&&this.audio.pause()}},{key:"stop",value:function(){this.audio&&(this.pause(),this.time=0,this._trigger(":stop"))}},{key:"fadeWithDuration",value:function(e,t,r){var a=this;if(this.audio){this.fadeStop();var n=Math.clamp(null==r?this.volume:r,0,1),i=Math.clamp(t,0,1);n!==i&&(this.volume=n,jQuery(this.audio).off("timeupdate.AudioWrapper:fadeWithDuration").one("timeupdate.AudioWrapper:fadeWithDuration",function(){var t=void 0,r=void 0;n<i?(t=n,r=i):(t=i,r=n);var o=Number(e);o<1&&(o=1);var s=(i-n)/(o/.025);a._faderId=setInterval(function(){if(!a.isPlaying())return void a.fadeStop();a.volume=Math.clamp(a.volume+s,t,r),0===a.volume&&a.pause(),a.volume===i&&(a.fadeStop(),a._trigger(":fade"))},25)}),this.play())}}},{key:"fade",value:function(e,t){this.fadeWithDuration(5,e,t)}},{key:"fadeIn",value:function(){this.fade(1)}},{key:"fadeOut",value:function(){this.fade(0)}},{key:"fadeStop",value:function(){null!==this._faderId&&(clearInterval(this._faderId),this._faderId=null)}},{key:"on",value:function(t,r){if(this.audio){if("function"!=typeof r)throw new Error("listener parameter must be a function");var a=e._events,n=t.trim().splitOrEmpty(/\s+/).map(function(e){var t=e.split(".",1)[0];if(!a.hasOwnProperty(t))throw new Error('unknown event "'+t+'"; valid: '+Object.keys(a).join(", "));return e.replace(t,a[t])+".AudioWrapperEvent"}).join(" ");if(""===n)throw new Error('invalid eventNames parameter "'+t+'"');return jQuery(this.audio).on(n,r),this}}},{key:"one",value:function(t,r){if(this.audio){if("function"!=typeof r)throw new Error("listener parameter must be a function");var a=e._events,n=t.trim().splitOrEmpty(/\s+/).map(function(e){var t=e.split(".",1)[0];if(!a.hasOwnProperty(t))throw new Error('unknown event "'+t+'"; valid: '+Object.keys(a).join(", "));return e.replace(t,a[t])+".AudioWrapperEvent"}).join(" ");if(""===n)throw new Error('invalid eventNames parameter "'+t+'"');return jQuery(this.audio).one(n,r),this}}},{key:"off",value:function(t,r){if(this.audio){if(r&&"function"!=typeof r)throw new Error("listener parameter must be a function");if(!t)return jQuery(this.audio).off(".AudioWrapperEvent",r);var a=e._events,n=t.trim().splitOrEmpty(/\s+/).map(function(e){var t=e.split(".",1)[0];if(t){if(!a.hasOwnProperty(t))throw new Error('unknown event "'+t+'"; valid: '+Object.keys(a).join(", "));return e.replace(t,a[t])+".AudioWrapperEvent"}return e+".AudioWrapperEvent"}).join(" ");if(""===n)throw new Error('invalid eventNames parameter "'+t+'"');return jQuery(this.audio).off(n,r),this}}},{key:"duration",get:function(){return this.audio?this.audio.duration:NaN}},{key:"ended",get:function(){return!this.audio||this.audio.ended}},{key:"loop",get:function(){return!!this.audio&&this.audio.loop},set:function(e){this.audio&&(this.audio.loop=!!e)}},{key:"mute",get:function(){return this._mute},set:function(e){this._mute=!!e,this._updateAudioMute()}},{key:"paused",get:function(){return!!this.audio&&this.audio.paused}},{key:"rate",get:function(){return this._rate},set:function(e){this._rate=Math.clamp(e,.2,5),this._updateAudioRate()}},{key:"remaining",get:function(){return this.audio?this.audio.duration-this.audio.currentTime:NaN}},{key:"time",get:function(){return this.audio?this.audio.currentTime:NaN},set:function(e){var t=this;if(this.audio)try{this.audio.currentTime=e}catch(r){jQuery(this.audio).off("loadedmetadata.AudioWrapper:time").one("loadedmetadata.AudioWrapper:time",function(){return t.audio.currentTime=e})}}},{key:"volume",get:function(){return this._volume},set:function(e){this._volume=Math.clamp(e,0,1),this._updateAudioVolume()}}],[{key:"_verifyType",value:function(t){if(!t||!Has.audio)return null;var r=e._types;if(!r.hasOwnProperty(t)){var a=document.createElement("audio");r[t]=""!==a.canPlayType(t).replace(/^no$/i,"")}return r[t]?t:null}},{key:"getType",value:function(t){if(!t||!Has.audio)return null;var r=e.formats,a=t.toLowerCase(),n=r.hasOwnProperty(a)?r[a]:"audio/"+a;return e._verifyType(n)}},{key:"canPlayFormat",value:function(t){return null!==e.getType(t)}},{key:"canPlayType",value:function(t){return null!==e._verifyType(t)}}]),e}();Object.defineProperties(m,{formats:{value:{aac:"audio/aac",caf:"audio/x-caf","x-caf":"audio/x-caf",mp3:'audio/mpeg; codecs="mp3"',mpeg:'audio/mpeg; codecs="mp3"',m4a:"audio/mp4",mp4:"audio/mp4","x-m4a":"audio/mp4","x-mp4":"audio/mp4",oga:"audio/ogg",ogg:"audio/ogg",opus:'audio/ogg; codecs="opus"',wav:"audio/wav",wave:"audio/wav",weba:"audio/webm",webm:"audio/webm"}},_types:{value:{}},_events:{value:Object.freeze({canplay:"canplaythrough",end:"ended",error:"error",fade:":fade",pause:"pause",play:"playing",rate:"ratechange",seek:"seeked",stop:":stop",volume:"volumechange"})}});var v=function(){function e(t){var r=this;_classCallCheck(this,e),Object.defineProperties(this,{tracks:{configurable:!0,value:[]},queue:{configurable:!0,value:[]},current:{writable:!0,value:null},_rate:{writable:!0,value:1},_volume:{writable:!0,value:1},_mute:{writable:!0,value:!1},_loop:{writable:!0,value:!1},_shuffle:{writable:!0,value:!1}}),Array.isArray(t)?t.forEach(function(e){return r.add(e)}):t instanceof e&&t.tracks.forEach(function(e){return r.add(e)})}return _createClass(e,[{key:"add",value:function(e){var t=this;if(null==e||"object"!==(void 0===e?"undefined":_typeof(e)))throw new Error("track parameter must be an object");var r=void 0,a=void 0,n=void 0,i=void 0;if(e instanceof m)r=!0,a=e.clone(),n=e.volume,i=e.rate;else{if(!e.hasOwnProperty("track"))throw new Error('track object missing required "track" property');if(!(e.track instanceof m))throw new Error('track object\'s "track" property must be an AudioWrapper object');r=e.hasOwnProperty("copy")&&e.copy,a=r?e.track.clone():e.track,n=e.hasOwnProperty("volume")?e.volume:e.track.volume,i=e.hasOwnProperty("rate")?e.rate:e.track.rate}a.stop(),a.loop=!1,a.mute=!1,a.volume=n,a.rate=i,a.on("end.AudioListEvent",function(){return t._onEnd()}),this.tracks.push({copy:r,track:a,volume:n,rate:i})}},{key:"destroy",value:function(){this.stop(),this.tracks.filter(function(e){return e.copy}).forEach(function(e){return e.track.destroy()}),delete this.tracks,delete this.queue}},{key:"isPlaying",value:function(){return null!==this.current&&this.current.track.isPlaying()}},{key:"isEnded",value:function(){return 0===this.queue.length&&(null===this.current||this.current.track.isEnded())}},{key:"isPaused",value:function(){return null===this.current||this.current.track.isPaused()}},{key:"isMuted",value:function(){return this._mute}},{key:"isLooped",value:function(){return this._loop}},{key:"isShuffled",value:function(){return this._shuffle}},{key:"play",value:function(){(null!==this.current&&!this.current.track.isEnded()||(0===this.queue.length&&this._buildList(),this._next()))&&this.current.track.play()}},{key:"pause",value:function(){null!==this.current&&this.current.track.pause()}},{key:"stop",value:function(){null!==this.current&&(this.current.track.stop(),this.current=null),this.queue.splice(0)}},{key:"skip",value:function(){this._next()?this.current.track.play():this._loop&&this.play()}},{key:"fadeWithDuration",value:function(e,t,r){if(0===this.queue.length&&this._buildList(),null!==this.current&&!this.current.track.isEnded()||this._next()){var a=Math.clamp(t,0,1)*this.current.volume,n=void 0;null!=r&&(n=Math.clamp(r,0,1)*this.current.volume),this.current.track.fadeWithDuration(e,a,n),this._volume=t}}},{key:"fade",value:function(e,t){this.fadeWithDuration(5,e,t)}},{key:"fadeIn",value:function(){this.fade(1)}},{key:"fadeOut",value:function(){this.fade(0)}},{key:"_next",value:function(){return null!==this.current&&this.current.track.stop(),0===this.queue.length?(this.current=null,!1):(this.current=this.queue.shift(),!this.current.track.hasSource()||this.current.track.isFailed()?this._next():(this.current.track.mute=this._mute,this.current.track.rate=this.rate*this.current.rate,this.current.track.volume=this.volume*this.current.volume,!0))}},{key:"_onEnd",value:function(){if(0===this.queue.length){if(!this._loop)return;this._buildList()}this._next()&&this.current.track.play()}},{key:"_buildList",value:function(){var e;this.queue.splice(0),(e=this.queue).push.apply(e,_toConsumableArray(this.tracks)),0!==this.queue.length&&this._shuffle&&(this.queue.shuffle(),this.queue.length>1&&this.queue[0]===this.current&&this.queue.push(this.queue.shift()))}},{key:"duration",get:function(){return this.tracks.map(function(e){return e.track.duration}).reduce(function(e,t){return e+t},0)}},{key:"loop",get:function(){return this._loop},set:function(e){this._loop=!!e}},{key:"mute",get:function(){return this._mute},set:function(e){this._mute=!!e,null!==this.current&&(this.current.track.mute=this._mute)}},{key:"rate",get:function(){return this._rate},set:function(e){this._rate=Math.clamp(e,.2,5),null!==this.current&&(this.current.track.rate=this.rate*this.current.rate)}},{key:"remaining",get:function(){var e=this.queue.map(function(e){return e.track.duration}).reduce(function(e,t){return e+t},0);return null!==this.current&&(e+=this.current.track.remaining),e}},{key:"shuffle",get:function(){return this._shuffle},set:function(e){this._shuffle=!!e}},{key:"time",get:function(){return this.duration-this.remaining}},{key:"volume",get:function(){return this._volume},set:function(e){this._volume=Math.clamp(e,0,1),null!==this.current&&(this.current.track.volume=this.volume*this.current.volume)}}]),e}();return Object.freeze(Object.defineProperties({},{mute:{get:e,set:t},rate:{get:r,set:a},volume:{get:n,set:i},stop:{value:o},subscribe:{value:s},unsubscribe:{value:u},publish:{value:l},create:{value:c},createList:{value:d}}))}(),SimpleStore=function(){function e(e,a){if(r)return r.create(e,a);for(var n=0;n<t.length;++n)if(t[n].init(e,a))return r=t[n],r.create(e,a);throw new Error("no valid storage adapters found")}var t=[],r=null;return Object.freeze(Object.defineProperties({},{adapters:{value:t},create:{value:e}}))}();SimpleStore.adapters.push(function(){function e(){function e(e){try{var t=window[e],r="_sc_"+String(Date.now());t.setItem(r,r);var a=t.getItem(r)===r;return t.removeItem(r),a}catch(e){}return!1}return r=e("localStorage")&&e("sessionStorage")}function t(e,t){if(!r)throw new Error("adapter not initialized");return new a(e,t)}var r=!1,a=function(){function e(t,r){_classCallCheck(this,e);var a=t+".",n=null,i=null;r?(n=window.localStorage,i="localStorage"):(n=window.sessionStorage,i="sessionStorage"),Object.defineProperties(this,{_engine:{value:n},_prefix:{value:a},_prefixRe:{value:new RegExp("^"+RegExp.escape(a))},name:{value:i},id:{value:t},persistent:{value:!!r}})}return _createClass(e,[{key:"size",value:function(){return this.keys().length}},{key:"keys",value:function(){for(var e=[],t=0;t<this._engine.length;++t){var r=this._engine.key(t);this._prefixRe.test(r)&&e.push(r.replace(this._prefixRe,""))}return e}},{key:"has",value:function(e){return!("string"!=typeof e||!e)&&this._engine.hasOwnProperty(this._prefix+e)}},{key:"get",value:function(t){if("string"!=typeof t||!t)return null;var r=this._engine.getItem(this._prefix+t);return null==r?null:e._deserialize(r)}},{key:"set",value:function(t,r){if("string"!=typeof t||!t)return!1;try{this._engine.setItem(this._prefix+t,e._serialize(r))}catch(e){throw/quota[_\s]?(?:exceeded|reached)/i.test(e.name)&&(e.message=this.name+" quota exceeded"),e}return!0}},{key:"delete",value:function(e){return!("string"!=typeof e||!e)&&(this._engine.removeItem(this._prefix+e),!0)}},{key:"clear",value:function(){for(var e=this.keys(),t=0,r=e.length;t<r;++t)this.delete(e[t]);return!0}},{key:"length",get:function(){return this.keys().length}}],[{key:"_serialize",value:function(e)
diff --git a/devTools/spell_check.txt b/devTools/spell_check.txt
index 382e0999b0faf9d5fa5f470542d0a147f9478dbe..d4dfe74ad55eca7e256bb52d25e80e48f452a8ab 100644
--- a/devTools/spell_check.txt
+++ b/devTools/spell_check.txt
@@ -565,6 +565,7 @@ s/\bbeteen\b/between/g
 s/\bbetwen\b/between/g
 s/\bbeween\b/between/g
 s/\bbewteen\b/between/g
+s/\bbeyound\b/beyond/g
 s/\bbigining\b/beginning/g
 s/\bbiginning\b/beginning/g
 s/\bbilateraly\b/bilaterally/g
@@ -1935,6 +1936,7 @@ s/\binctroduced\b/introduced/g
 s/\bincuding\b/including/g
 s/\bincunabla\b/incunabula/g
 s/\bindefinately\b/indefinitely/g
+s/\bindefinatly\b/indefinitely/g
 s/\bindefineable\b/undefinable/g
 s/\bindefinitly\b/indefinitely/g
 s/\bindentical\b/identical/g
@@ -2558,6 +2560,8 @@ s/\bovershaddowed\b/overshadowed/g
 s/\boverthere\b/over there/g
 s/\boverwelming\b/overwhelming/g
 s/\boverwheliming\b/overwhelming/g
+s/\boveride\b/override/g
+s/\boverides\b/overrides/g
 s/\bowrk\b/work/g
 s/\bowudl\b/would/g
 s/\boxigen\b/oxygen/g
@@ -3155,6 +3159,7 @@ s/\brepentent\b/repentant/g
 s/\brepeteadly\b/repeatedly/g
 s/\brepetion\b/repetition/g
 s/\brepid\b/rapid/g
+s/\brapdily\b/rapidily/g
 s/\breponse\b/response/g
 s/\breponsible\b/responsible/g
 s/\breportadly\b/reportedly/g
diff --git a/devTools/tweeGo/storyFormats/sugarcube-2/header.html b/devTools/tweeGo/storyFormats/sugarcube-2/header.html
index 7b2220405618010a392de163d87b2c93df79341a..25017cf00a53428e9cc5a372ac8a4861717bd46b 100644
--- a/devTools/tweeGo/storyFormats/sugarcube-2/header.html
+++ b/devTools/tweeGo/storyFormats/sugarcube-2/header.html
@@ -115,17 +115,14 @@ var saveAs=saveAs||navigator.msSaveBlob&&navigator.msSaveBlob.bind(navigator)||f
 	<script id="script-sugarcube" type="text/javascript">
 	/*! SugarCube JS */
 	if(document.documentElement.getAttribute("data-init")==="loading"){!function(window,document,jQuery,undefined){"use strict";function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _toConsumableArray(e){if(Array.isArray(e)){for(var t=0,r=Array(e.length);t<e.length;t++)r[t]=e[t];return r}return Array.from(e)}var _createClass=function(){function e(e,t){for(var r=0;r<t.length;r++){var a=t[r];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,r,a){return r&&e(t.prototype,r),a&&e(t,a),t}}(),_slicedToArray=function(){function e(e,t){var r=[],a=!0,n=!1,i=undefined;try{for(var o,s=e[Symbol.iterator]();!(a=(o=s.next()).done)&&(r.push(o.value),!t||r.length!==t);a=!0);}catch(e){n=!0,i=e}finally{try{!a&&s.return&&s.return()}finally{if(n)throw i}}return r}return function(t,r){if(Array.isArray(t))return t;if(Symbol.iterator in Object(t))return e(t,r);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},errorPrologRegExp=/^(?:(?:uncaught\s+(?:exception:\s+)?)?error:\s+)+/i,Alert=function(){function e(e,t,r,a){var n="fatal"===e,i="Apologies! "+(n?"A fatal":"An")+" error has occurred.";i+=n?" Aborting.":" You may be able to continue, but some parts may not work properly.",null==t&&null==r||(i+="\n\nError",null!=t&&(i+=" ["+t+"]"),i+=null!=r?": "+r.replace(errorPrologRegExp,"")+".":": unknown error."),"object"===(void 0===a?"undefined":_typeof(a))&&a.stack&&(i+="\n\nStack Trace:\n"+a.stack),window.alert(i)}function t(t,r,a){e(null,t,r,a)}function r(t,r,a){e("fatal",t,r,a)}return function(e){window.onerror=function(a,n,i,o,s){"complete"===document.readyState?t(null,a,s):(r(null,a,s),window.onerror=e,"function"==typeof window.onerror&&window.onerror.apply(this,arguments))}}(window.onerror),Object.freeze(Object.defineProperties({},{error:{value:t},fatal:{value:r}}))}(),Patterns=function(){var e=function(){var e=new Map([[" ","\\u0020"],["\f","\\f"],["\n","\\n"],["\r","\\r"],["\t","\\t"],["\v","\\v"],[" ","\\u00a0"],[" ","\\u1680"],["᠎","\\u180e"],[" ","\\u2000"],[" ","\\u2001"],[" ","\\u2002"],[" ","\\u2003"],[" ","\\u2004"],[" ","\\u2005"],[" ","\\u2006"],[" ","\\u2007"],[" ","\\u2008"],[" ","\\u2009"],[" ","\\u200a"],["\u2028","\\u2028"],["\u2029","\\u2029"],[" ","\\u202f"],[" ","\\u205f"],[" ","\\u3000"],["\ufeff","\\ufeff"]]),t=/\s/,r="";return e.forEach(function(e,a){t.test(a)||(r+=e)}),r?"[\\s"+r+"]":"\\s"}(),t="[0-9A-Z_a-z\\-\\u00c0-\\u00d6\\u00d8-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]",r=t.replace("\\-",""),a="("+t+"+)\\(([^\\)\\|\\n]+)\\):",n="("+t+"+):([^;\\|\\n]+);",i="((?:\\."+t+"+)+);",o="((?:#"+t+"+)+);",s=a+"|"+n+"|"+i+"|"+o;return Object.freeze({space:e,spaceNoTerminator:"[\\u0020\\f\\t\\v\\u00a0\\u1680\\u180e\\u2000-\\u200a\\u202f\\u205f\\u3000\\ufeff]",lineTerminator:"[\\n\\r\\u2028\\u2029]",anyLetter:t,anyLetterStrict:r,identifierFirstChar:"[$A-Z_a-z]",identifier:"[$A-Z_a-z][$0-9A-Z_a-z]*",variableSigil:"[$_]",variable:"[$_][$A-Z_a-z][$0-9A-Z_a-z]*",macroName:"[A-Za-z][\\w-]*|[=-]",cssImage:"\\[[<>]?[Ii][Mm][Gg]\\[(?:\\s|\\S)*?\\]\\]+",inlineCss:s,url:"(?:file|https?|mailto|ftp|javascript|irc|news|data):[^\\s'\"]+"})}();!function(){function e(e,t){var n=String(e);switch(t){case"start":return n&&r.test(n)?n.replace(r,""):n;case"end":return n&&a.test(n)?n.replace(a,""):n;default:throw new Error('_trimFrom called with incorrect where parameter value: "'+t+'"')}}function t(e,t){var r=Number.parseInt(e,10)||0;if(r<1)return"";var a=void 0===t?"":String(t);for(""===a&&(a=" ");a.length<r;){var n=a.length,i=r-n;a+=n>i?a.slice(0,i):a}return a.length>r&&(a=a.slice(0,r)),a}var r=/^[\s\u00A0\uFEFF][\s\u00A0\uFEFF]*/,a=/[\s\u00A0\uFEFF][\s\u00A0\uFEFF]*$/;Array.prototype.includes||Object.defineProperty(Array.prototype,"includes",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.includes called on null or undefined");if(0===arguments.length)return!1;var e=this.length>>>0;if(0===e)return!1;var t=arguments[0],r=Number(arguments[1])||0;for(r<0&&(r=Math.max(0,e+r));r<e;++r){var a=this[r];if(t===a||t!==t&&a!==a)return!0}return!1}}),String.prototype.padStart||Object.defineProperty(String.prototype,"padStart",{configurable:!0,writable:!0,value:function(e,r){if(null==this)throw new TypeError("String.prototype.padStart called on null or undefined");var a=String(this),n=a.length,i=Number.parseInt(e,10);return i<=n?a:t(i-n,r)+a}}),String.prototype.padEnd||Object.defineProperty(String.prototype,"padEnd",{configurable:!0,writable:!0,value:function(e,r){if(null==this)throw new TypeError("String.prototype.padEnd called on null or undefined");var a=String(this),n=a.length,i=Number.parseInt(e,10);return i<=n?a:a+t(i-n,r)}}),String.prototype.trimStart||Object.defineProperty(String.prototype,"trimStart",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.trimStart called on null or undefined");return e(this,"start")}}),String.prototype.trimLeft||Object.defineProperty(String.prototype,"trimLeft",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.trimLeft called on null or undefined");return e(this,"start")}}),String.prototype.trimEnd||Object.defineProperty(String.prototype,"trimEnd",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.trimEnd called on null or undefined");return e(this,"end")}}),String.prototype.trimRight||Object.defineProperty(String.prototype,"trimRight",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.trimRight called on null or undefined");return e(this,"end")}})}(),function(){function _random(){var e=void 0,t=void 0;switch(arguments.length){case 0:throw new Error("_random called with insufficient parameters");case 1:e=0,t=arguments[0];break;default:e=arguments[0],t=arguments[1]}if(e>t){var r=[t,e];e=r[0],t=r[1]}return Math.floor(_nativeMathRandom()*(t-e+1))+e}function _randomIndex(e,t){var r=void 0,a=void 0;switch(t.length){case 1:r=0,a=e-1;break;case 2:r=0,a=Math.trunc(t[1]);break;default:r=Math.trunc(t[1]),a=Math.trunc(t[2])}return Number.isNaN(r)?r=0:!Number.isFinite(r)||r>=e?r=e-1:r<0&&(r=e+r)<0&&(r=0),Number.isNaN(a)?a=0:!Number.isFinite(a)||a>=e?a=e-1:a<0&&(a=e+a)<0&&(a=e-1),_random(r,a)}function _getCodePointStartAndEnd(e,t){var r=e.charCodeAt(t);if(Number.isNaN(r))return{char:"",start:-1,end:-1};if(r<55296||r>57343)return{char:e.charAt(t),start:t,end:t};if(r>=55296&&r<=56319){var a=t+1;if(a>=e.length)throw new Error("high surrogate without trailing low surrogate");var n=e.charCodeAt(a);if(n<56320||n>57343)throw new Error("high surrogate without trailing low surrogate");return{char:e.charAt(t)+e.charAt(a),start:t,end:a}}if(0===t)throw new Error("low surrogate without leading high surrogate");var i=t-1,o=e.charCodeAt(i);if(o<55296||o>56319)throw new Error("low surrogate without leading high surrogate");return{char:e.charAt(i)+e.charAt(t),start:i,end:t}}var _nativeMathRandom=Math.random;Object.defineProperty(Array,"random",{configurable:!0,writable:!0,value:function(e){if(null==e||"object"!==(void 0===e?"undefined":_typeof(e))||!Object.prototype.hasOwnProperty.call(e,"length"))throw new TypeError("Array.random array parameter must be an array or array-lke object");var t=e.length>>>0;if(0!==t){return e[0===arguments.length?_random(0,t-1):_randomIndex(t,Array.prototype.slice.call(arguments,1))]}}}),Object.defineProperty(Array.prototype,"concatUnique",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.concatUnique called on null or undefined");var e=Array.from(this);if(0===arguments.length)return e;var t=Array.prototype.reduce.call(arguments,function(e,t){return e.concat(t)},[]),r=t.length;if(0===r)return e;for(var a=Array.prototype.indexOf,n=Array.prototype.push,i=0;i<r;++i){var o=t[i];-1===a.call(e,o)&&n.call(e,o)}return e}}),Object.defineProperty(Array.prototype,"count",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.count called on null or undefined");for(var e=Array.prototype.indexOf,t=arguments[0],r=Number(arguments[1])||0,a=0;-1!==(r=e.call(this,t,r));)++a,++r;return a}}),Object.defineProperty(Array.prototype,"delete",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.delete called on null or undefined");if(0===arguments.length)return[];if(0==this.length>>>0)return[];for(var e=Array.prototype.indexOf,t=Array.prototype.push,r=Array.prototype.splice,a=Array.prototype.concat.apply([],arguments),n=[],i=0,o=a.length;i<o;++i)for(var s=a[i],u=0;-1!==(u=e.call(this,s,u));)t.apply(n,r.call(this,u,1));return n}}),Object.defineProperty(Array.prototype,"deleteAt",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.deleteAt called on null or undefined");if(0===arguments.length)return[];var e=this.length>>>0;if(0===e)return[];for(var t=Array.prototype.splice,r=[].concat(_toConsumableArray(new Set(Array.prototype.concat.apply([],arguments).map(function(t){return t<0?Math.max(0,e+t):t})).values())),a=[].concat(_toConsumableArray(r)).sort(function(e,t){return t-e}),n=[],i=0,o=r.length;i<o;++i)n[i]=this[r[i]];for(var s=0,u=a.length;s<u;++s)t.call(this,a[s],1);return n}}),Object.defineProperty(Array.prototype,"flatten",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.flatten called on null or undefined");return Array.prototype.reduce.call(this,function(e,t){return e.concat(Array.isArray(t)?t.flatten():t)},[])}}),Object.defineProperty(Array.prototype,"includesAll",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.includesAll called on null or undefined");if(1===arguments.length)return Array.isArray(arguments[0])?Array.prototype.includesAll.apply(this,arguments[0]):Array.prototype.includes.apply(this,arguments);for(var e=0,t=arguments.length;e<t;++e)if(!Array.prototype.some.call(this,function(e){return e===this.val||e!==e&&this.val!==this.val},{val:arguments[e]}))return!1;return!0}}),Object.defineProperty(Array.prototype,"includesAny",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.includesAny called on null or undefined");if(1===arguments.length)return Array.isArray(arguments[0])?Array.prototype.includesAny.apply(this,arguments[0]):Array.prototype.includes.apply(this,arguments);for(var e=0,t=arguments.length;e<t;++e)if(Array.prototype.some.call(this,function(e){return e===this.val||e!==e&&this.val!==this.val},{val:arguments[e]}))return!0;return!1}}),Object.defineProperty(Array.prototype,"pluck",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.pluck called on null or undefined");var e=this.length>>>0;if(0!==e){var t=0===arguments.length?_random(0,e-1):_randomIndex(e,[].concat(Array.prototype.slice.call(arguments)));return Array.prototype.splice.call(this,t,1)[0]}}}),Object.defineProperty(Array.prototype,"pluckMany",{configurable:!0,writable:!0,value:function(e){if(null==this)throw new TypeError("Array.prototype.pluckMany called on null or undefined");var t=this.length>>>0;if(0===t)return[];var r=Math.trunc(e);if(!Number.isInteger(r))throw new Error("Array.prototype.pluckMany want parameter must be an integer");if(r<1)return[];r>t&&(r=t);var a=Array.prototype.splice,n=[],i=t-1;do{n.push(a.call(this,_random(0,i--),1)[0])}while(n.length<r);return n}}),Object.defineProperty(Array.prototype,"pushUnique",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.pushUnique called on null or undefined");var e=arguments.length;if(0===e)return this.length>>>0;for(var t=Array.prototype.indexOf,r=Array.prototype.push,a=0;a<e;++a){var n=arguments[a];-1===t.call(this,n)&&r.call(this,n)}return this.length>>>0}}),Object.defineProperty(Array.prototype,"random",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.random called on null or undefined");var e=this.length>>>0;if(0!==e){return this[0===arguments.length?_random(0,e-1):_randomIndex(e,[].concat(Array.prototype.slice.call(arguments)))]}}}),Object.defineProperty(Array.prototype,"randomMany",{configurable:!0,writable:!0,value:function(e){if(null==this)throw new TypeError("Array.prototype.randomMany called on null or undefined");var t=this.length>>>0;if(0===t)return[];var r=Math.trunc(e);if(!Number.isInteger(r))throw new Error("Array.prototype.randomMany want parameter must be an integer");if(r<1)return[];r>t&&(r=t);var a=new Map,n=[],i=t-1;do{var o=void 0;do{o=_random(0,i)}while(a.has(o));a.set(o,!0),n.push(this[o])}while(n.length<r);return n}}),Object.defineProperty(Array.prototype,"shuffle",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.shuffle called on null or undefined");var e=this.length>>>0;if(0===e)return this;for(var t=e-1;t>0;--t){var r=Math.floor(_nativeMathRandom()*(t+1));if(t!==r){var a=this[t];this[t]=this[r],this[r]=a}}return this}}),Object.defineProperty(Array.prototype,"unshiftUnique",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.unshiftUnique called on null or undefined");var e=arguments.length;if(0===e)return this.length>>>0;for(var t=Array.prototype.indexOf,r=Array.prototype.unshift,a=0;a<e;++a){var n=arguments[a];-1===t.call(this,n)&&r.call(this,n)}return this.length>>>0}}),Object.defineProperty(Function.prototype,"partial",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Function.prototype.partial called on null or undefined");var e=Array.prototype.slice,t=this,r=e.call(arguments,0);return function(){for(var a=[],n=0,i=0;i<r.length;++i)a.push(r[i]===undefined?arguments[n++]:r[i]);return t.apply(this,a.concat(e.call(arguments,n)))}}}),Object.defineProperty(Math,"clamp",{configurable:!0,writable:!0,value:function(e,t,r){var a=Number(e);return Number.isNaN(a)?NaN:a.clamp(t,r)}}),Object.defineProperty(Math,"easeInOut",{configurable:!0,writable:!0,value:function(e){return 1-(Math.cos(Number(e)*Math.PI)+1)/2}}),Object.defineProperty(Number.prototype,"clamp",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Number.prototype.clamp called on null or undefined");if(2!==arguments.length)throw new Error("Number.prototype.clamp called with an incorrect number of parameters");var e=Number(arguments[0]),t=Number(arguments[1]);if(e>t){var r=[t,e];e=r[0],t=r[1]}return Math.min(Math.max(this,e),t)}}),RegExp.escape||function(){var e=/[\\^$*+?.()|[\]{}]/g,t=new RegExp(e.source);Object.defineProperty(RegExp,"escape",{configurable:!0,writable:!0,value:function(r){var a=String(r);return a&&t.test(a)?a.replace(e,"\\$&"):a}})}(),function(){var e=/{(\d+)(?:,([+-]?\d+))?}/g,t=new RegExp(e.source);Object.defineProperty(String,"format",{configurable:!0,writable:!0,value:function(r){function a(e,t,r){if(!t)return e;var a=Math.abs(t)-e.length;if(a<1)return e;var n=String(r).repeat(a);return t<0?e+n:n+e}if(arguments.length<2)return 0===arguments.length?"":r;var n=2===arguments.length&&Array.isArray(arguments[1])?[].concat(_toConsumableArray(arguments[1])):Array.prototype.slice.call(arguments,1);return 0===n.length?r:t.test(r)?(e.lastIndex=0,r.replace(e,function(e,t,r){var i=n[t];if(null==i)return"";for(;"function"==typeof i;)i=i();switch(void 0===i?"undefined":_typeof(i)){case"string":break;case"object":i=JSON.stringify(i);break;default:i=String(i)}return a(i,r?Number.parseInt(r,10):0," ")})):r}})}(),Object.defineProperty(String.prototype,"contains",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.contains called on null or undefined");return-1!==String.prototype.indexOf.apply(this,arguments)}}),Object.defineProperty(String.prototype,"count",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.count called on null or undefined");var e=String(arguments[0]||"");if(""===e)return 0;for(var t=String.prototype.indexOf,r=e.length,a=Number(arguments[1])||0,n=0;-1!==(a=t.call(this,e,a));)++n,a+=r;return n}}),Object.defineProperty(String.prototype,"splice",{configurable:!0,writable:!0,value:function(e,t,r){if(null==this)throw new TypeError("String.prototype.splice called on null or undefined");var a=this.length>>>0;if(0===a)return"";var n=Number(e);Number.isSafeInteger(n)?n<0&&(n+=a)<0&&(n=0):n=0,n>a&&(n=a);var i=Number(t);(!Number.isSafeInteger(i)||i<0)&&(i=0);var o=this.slice(0,n);return void 0!==r&&(o+=r),n+i<a&&(o+=this.slice(n+i)),o}}),Object.defineProperty(String.prototype,"splitOrEmpty",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.splitOrEmpty called on null or undefined");return""===String(this)?[]:String.prototype.split.apply(this,arguments)}}),Object.defineProperty(String.prototype,"toLocaleUpperFirst",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.toLocaleUpperFirst called on null or undefined");var e=String(this),t=_getCodePointStartAndEnd(e,0),r=t.char,a=t.end;return-1===a?"":r.toLocaleUpperCase()+e.slice(a+1)}}),Object.defineProperty(String.prototype,"toUpperFirst",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.toUpperFirst called on null or undefined");var e=String(this),t=_getCodePointStartAndEnd(e,0),r=t.char,a=t.end;return-1===a?"":r.toUpperCase()+e.slice(a+1)}}),Object.defineProperty(Date.prototype,"toJSON",{configurable:!0,writable:!0,value:function(){return["(revive:date)",this.toISOString()]}}),Object.defineProperty(Function.prototype,"toJSON",{configurable:!0,writable:!0,value:function(){return["(revive:eval)","("+this.toString()+")"]}}),Object.defineProperty(Map.prototype,"toJSON",{configurable:!0,writable:!0,value:function(){return["(revive:map)",[].concat(_toConsumableArray(this))]}}),Object.defineProperty(RegExp.prototype,"toJSON",{configurable:!0,writable:!0,value:function(){return["(revive:eval)",this.toString()]}}),Object.defineProperty(Set.prototype,"toJSON",{configurable:!0,writable:!0,value:function(){return["(revive:set)",[].concat(_toConsumableArray(this))]}}),Object.defineProperty(JSON,"reviveWrapper",{configurable:!0,writable:!0,value:function(e,t){if("string"!=typeof e)throw new TypeError("JSON.reviveWrapper code parameter must be a string");return["(revive:eval)",[e,t]]}}),Object.defineProperty(JSON,"_real_parse",{value:JSON.parse}),Object.defineProperty(JSON,"parse",{configurable:!0,writable:!0,value:function value(text,reviver){return JSON._real_parse(text,function(key,val){var value=val;if(Array.isArray(value)&&2===value.length)switch(value[0]){case"(revive:set)":value=new Set(value[1]);break;case"(revive:map)":value=new Map(value[1]);break;case"(revive:date)":value=new Date(value[1]);break;case"(revive:eval)":try{if(Array.isArray(value[1])){var $ReviveData$=value[1][1];value=eval(value[1][0])}else value=eval(value[1])}catch(e){}}else if("string"==typeof value&&"@@revive@@"===value.slice(0,10))try{value=eval(value.slice(10))}catch(e){}if("function"==typeof reviver)try{value=reviver(key,value)}catch(e){}return value})}}),Object.defineProperty(Array.prototype,"contains",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.contains called on null or undefined");return Array.prototype.includes.apply(this,arguments)}}),Object.defineProperty(Array.prototype,"containsAll",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.containsAll called on null or undefined");return Array.prototype.includesAll.apply(this,arguments)}}),Object.defineProperty(Array.prototype,"containsAny",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("Array.prototype.containsAny called on null or undefined");return Array.prototype.includesAny.apply(this,arguments)}}),Object.defineProperty(String.prototype,"readBracketedList",{configurable:!0,writable:!0,value:function(){if(null==this)throw new TypeError("String.prototype.readBracketedList called on null or undefined");for(var e=new RegExp("(?:\\[\\[((?:\\s|\\S)*?)\\]\\])|([^\"'\\s]\\S*)","gm"),t=[],r=void 0;null!==(r=e.exec(this));)r[1]?t.push(r[1]):r[2]&&t.push(r[2]);return t}})}();var Browser=function(){var e=navigator.userAgent.toLowerCase(),t=e.includes("windows phone"),r=Object.freeze({Android:!t&&e.includes("android"),BlackBerry:/blackberry|bb10/.test(e),iOS:!t&&/ip(?:hone|ad|od)/.test(e),Windows:t||e.includes("iemobile"),any:function(){return r.Android||r.BlackBerry||r.iOS||r.Windows}}),a=!r.Windows&&!/khtml|trident|edge/.test(e)&&e.includes("gecko"),n=!e.includes("opera")&&/msie|trident/.test(e),i=n?function(){var t=/(?:msie\s+|rv:)(\d+\.\d)/.exec(e);return t?Number(t[1]):0}():null,o=e.includes("opera")||e.includes(" opr/"),s=o?function(){var t=new RegExp((/khtml|chrome/.test(e)?"opr":"version")+"\\/(\\d+\\.\\d+)"),r=t.exec(e);return r?Number(r[1]):0}():null;return Object.freeze({userAgent:e,isMobile:r,isGecko:a,isIE:n,ieVersion:i,isOpera:o,operaVersion:s})}(),Has=function(){var e=function(){try{return"function"==typeof document.createElement("audio").canPlayType}catch(e){}return!1}(),t=function(){try{return"Blob"in window&&"File"in window&&"FileList"in window&&"FileReader"in window&&!Browser.isMobile.any()&&(!Browser.isOpera||Browser.operaVersion>=15)}catch(e){}return!1}(),r=function(){try{return"geolocation"in navigator&&"function"==typeof navigator.geolocation.getCurrentPosition&&"function"==typeof navigator.geolocation.watchPosition}catch(e){}return!1}(),a=function(){try{return"MutationObserver"in window&&"function"==typeof window.MutationObserver}catch(e){}return!1}(),n=function(){try{return"performance"in window&&"function"==typeof window.performance.now}catch(e){}return!1}();return Object.freeze({audio:e,fileAPI:t,geolocation:r,mutationObserver:a,performance:n})}(),_ref3=function(){function e(t){if("object"!==(void 0===t?"undefined":_typeof(t))||null===t)return t;if(t instanceof String)return String(t);if(t instanceof Number)return Number(t);if(t instanceof Boolean)return Boolean(t);if("function"==typeof t.clone)return t.clone(!0);if(t.nodeType&&"function"==typeof t.cloneNode)return t.cloneNode(!0);var r=void 0;return t instanceof Array?r=new Array(t.length):t instanceof Date?r=new Date(t.getTime()):t instanceof Map?(r=new Map,t.forEach(function(t,a){return r.set(a,e(t))})):t instanceof RegExp?r=new RegExp(t):t instanceof Set?(r=new Set,t.forEach(function(t){return r.add(e(t))})):r=Object.create(Object.getPrototypeOf(t)),Object.keys(t).forEach(function(a){return r[a]=e(t[a])}),r}function t(e){for(var t=document.createDocumentFragment(),r=document.createElement("p"),a=void 0;null!==(a=e.firstChild);){if(a.nodeType===Node.ELEMENT_NODE){switch(a.nodeName.toUpperCase()){case"BR":if(null!==a.nextSibling&&a.nextSibling.nodeType===Node.ELEMENT_NODE&&"BR"===a.nextSibling.nodeName.toUpperCase()){e.removeChild(a.nextSibling),e.removeChild(a),t.appendChild(r),r=document.createElement("p");continue}if(!r.hasChildNodes()){e.removeChild(a);continue}break;case"ADDRESS":case"ARTICLE":case"ASIDE":case"BLOCKQUOTE":case"CENTER":case"DIV":case"DL":case"FIGURE":case"FOOTER":case"FORM":case"H1":case"H2":case"H3":case"H4":case"H5":case"H6":case"HEADER":case"HR":case"MAIN":case"NAV":case"OL":case"P":case"PRE":case"SECTION":case"TABLE":case"UL":r.hasChildNodes()&&(t.appendChild(r),r=document.createElement("p")),t.appendChild(a);continue}}r.appendChild(a)}r.hasChildNodes()&&t.appendChild(r),e.appendChild(t)}function r(){try{return document.activeElement||null}catch(e){return null}}function a(e,t,r){var a="object"===(void 0===e?"undefined":_typeof(e))?e:document.getElementById(e);if(null==a)return null;var n=Array.isArray(t)?t:[t];jQuery(a).empty();for(var i=0,o=n.length;i<o;++i)if(Story.has(n[i]))return new Wikifier(a,Story.get(n[i]).processText().trim()),a;if(null!=r){var s=String(r).trim();""!==s&&new Wikifier(a,s)}return a}function n(e,t,r){var a=jQuery(document.createElement("div")),n=jQuery(document.createElement("button")),i=jQuery(document.createElement("pre")),o=L10n.get("errorTitle")+": "+(t||"unknown error");return n.addClass("error-toggle").ariaClick({label:L10n.get("errorToggle")},function(){n.hasClass("enabled")?(n.removeClass("enabled"),i.attr({"aria-hidden":!0,hidden:"hidden"})):(n.addClass("enabled"),i.removeAttr("aria-hidden hidden"))}).appendTo(a),jQuery(document.createElement("span")).addClass("error").text(o).appendTo(a),jQuery(document.createElement("code")).text(r).appendTo(i),i.addClass("error-source").attr({"aria-hidden":!0,hidden:"hidden"}).appendTo(a),a.addClass("error-view").appendTo(e),console.warn(o+"\n\t"+r.replace(/\n/g,"\n\t")),!1}function i(e,t){var r=i;switch(void 0===e?"undefined":_typeof(e)){case"number":if(Number.isNaN(e))return t;break;case"object":if(null===e)return t;if(Array.isArray(e))return e.map(function(e){return r(e,t)}).join(", ");if(e instanceof Set)return[].concat(_toConsumableArray(e)).map(function(e){return r(e,t)}).join(", ");if(e instanceof Map){return"{ "+[].concat(_toConsumableArray(e)).map(function(e){var a=_slicedToArray(e,2),n=a[0],i=a[1];return r(n,t)+" → "+r(i,t)}).join(", ")+" }"}return e instanceof Date?e.toLocaleString():"function"==typeof e.toString?e.toString():Object.prototype.toString.call(e);case"function":case"undefined":return t}return String(e)}return Object.freeze(Object.defineProperties({},{clone:{value:e},convertBreaks:{value:t},safeActiveElement:{value:r},setPageElement:{value:a},throwError:{value:n},toStringOrDefault:{value:i}}))}(),clone=_ref3.clone,convertBreaks=_ref3.convertBreaks,safeActiveElement=_ref3.safeActiveElement,setPageElement=_ref3.setPageElement,throwError=_ref3.throwError,toStringOrDefault=_ref3.toStringOrDefault;!function(){function e(e){13!==e.which&&32!==e.which||(e.preventDefault(),jQuery(safeActiveElement()||this).trigger("click"))}function t(e){return function(){
-    var t=jQuery(this);
-    const dataPassage = t.attr('data-passage');
+		var t=jQuery(this);
+		const dataPassage = t.attr('data-passage');
+		const initialDataPassage = window && window.SugarCube && window.SugarCube.State && window.SugarCube.State.passage;
 		const savedYOffset = window.pageYOffset;
 		t.is("[aria-pressed]")&&t.attr("aria-pressed","true"===t.attr("aria-pressed")?"false":"true"),e.apply(this,arguments);
 		const doJump = function(){ window.scrollTo(0, savedYOffset); }
-		if ( dataPassage && (window.lastDataPassageLink === dataPassage))
+		if ( dataPassage && (window.lastDataPassageLink === dataPassage || initialDataPassage === dataPassage))
 			doJump();
-		else if (dataPassage && dataPassage.includes('Workaround')) {
-			doJump(); /* Horrible hack to workaround the workaround... */
-			setTimeout(doJump, 10); setTimeout(doJump, 100); setTimeout(doJump, 300);
-		}
 		window.lastDataPassageLink = dataPassage;
   }}function r(e){return t(function(){jQuery(this).off(".aria-clickable").removeAttr("tabindex aria-controls aria-pressed").not("a,button").removeAttr("role").end().filter("button").prop("disabled",!0),e.apply(this,arguments)})}jQuery.fn.extend({ariaClick:function(a,n){if(0===this.length||0===arguments.length)return this;var i=a,o=n;return null==o&&(o=i,i=undefined),i=jQuery.extend({namespace:undefined,one:!1,selector:undefined,data:undefined,controls:undefined,pressed:undefined,label:undefined},i),"string"!=typeof i.namespace?i.namespace="":"."!==i.namespace[0]&&(i.namespace="."+i.namespace),"boolean"==typeof i.pressed&&(i.pressed=i.pressed?"true":"false"),this.filter("button").prop("type","button"),this.not("a,button").attr("role","button"),this.attr("tabindex",0),null!=i.controls&&this.attr("aria-controls",i.controls),null!=i.pressed&&this.attr("aria-pressed",i.pressed),null!=i.label&&this.attr({"aria-label":i.label,title:i.label}),this.not("button").on("keypress.aria-clickable"+i.namespace,i.selector,e),this.on("click.aria-clickable"+i.namespace,i.selector,i.data,i.one?r(o):t(o)),this}})}(),function(){jQuery.extend({wikiWithOptions:function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),a=1;a<t;a++)r[a-1]=arguments[a];if(0!==r.length){var n=document.createDocumentFragment();r.forEach(function(t){return new Wikifier(n,t,e)});var i=[].concat(_toConsumableArray(n.querySelectorAll(".error"))).map(function(e){return e.textContent.replace(errorPrologRegExp,"")});if(i.length>0)throw new Error(i.join("; "))}},wiki:function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];this.wikiWithOptions.apply(this,[undefined].concat(t))}}),jQuery.fn.extend({wikiWithOptions:function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),a=1;a<t;a++)r[a-1]=arguments[a];if(0===this.length||0===r.length)return this;var n=document.createDocumentFragment();return r.forEach(function(t){return new Wikifier(n,t,e)}),this.append(n),this},wiki:function(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return this.wikiWithOptions.apply(this,[undefined].concat(t))}})}();var Util=function(){function e(e){return Object.freeze(Object.assign(Object.create(null),e))}function t(e){return Object.prototype.toString.call(e).slice(8,-1)}function r(e){var t=void 0;switch(void 0===e?"undefined":_typeof(e)){case"number":t=e;break;case"string":t=Number(e);break;default:return!1}return!Number.isNaN(t)&&Number.isFinite(t)}function a(e){return"boolean"==typeof e||"string"==typeof e&&("true"===e||"false"===e)}function n(e){return String(e).trim().replace(/[^\w\s\u2013\u2014-]+/g,"").replace(/[_\s\u2013\u2014-]+/g,"-").toLocaleLowerCase()}function i(e){if(null==e)return"";var t=String(e);return t&&p.test(t)?t.replace(f,function(e){return g[e]}):t}function o(e){if(null==e)return"";var t=String(e);return t&&v.test(t)?t.replace(m,function(e){return y[e.toLowerCase()]}):t}function s(e,t){var r=String(e),a=Math.trunc(t),n=r.charCodeAt(a);if(Number.isNaN(n))return{char:"",start:-1,end:-1};var i={char:r.charAt(a),start:a,end:a};if(n<55296||n>57343)return i;if(n>=55296&&n<=56319){var o=a+1;if(o>=r.length)return i;var s=r.charCodeAt(o);return s<56320||s>57343?i:(i.char=i.char+r.charAt(o),i.end=o,i)}if(0===a)return i;var u=a-1,l=r.charCodeAt(u);return l<55296||l>56319?i:(i.char=r.charAt(u)+i.char,i.start=u,i)}function u(){return b.now()}function l(e){var t=w.exec(String(e));if(null===t)throw new SyntaxError('invalid time value syntax: "'+e+'"');var r=Number(t[1]);if(1===t[2].length&&(r*=1e3),Number.isNaN(r)||!Number.isFinite(r))throw new RangeError('invalid time value: "'+e+'"');return r}function c(e){if("number"!=typeof e||Number.isNaN(e)||!Number.isFinite(e)){var r=void 0;switch(void 0===e?"undefined":_typeof(e)){case"string":r='"'+e+'"';break;case"number":r=String(e);break;default:r=t(e)}throw new Error("invalid milliseconds: "+r)}return e+"ms"}function d(e){if(!e.includes("-"))switch(e){case"bgcolor":return"backgroundColor";case"float":return"cssFloat";default:return e}return("-ms-"===e.slice(0,4)?e.slice(1):e).split("-").map(function(e,t){return 0===t?e:e.toUpperFirst()}).join("")}function h(e){var t=document.createElement("a"),r=Object.create(null);t.href=e,t.search&&t.search.replace(/^\?/,"").splitOrEmpty(/(?:&(?:amp;)?|;)/).forEach(function(e){var t=e.split("="),a=_slicedToArray(t,2),n=a[0],i=a[1];r[n]=i});var a=t.host&&"/"!==t.pathname[0]?"/"+t.pathname:t.pathname;return{href:t.href,protocol:t.protocol,host:t.host,hostname:t.hostname,port:t.port,path:""+a+t.search,pathname:a,query:t.search,search:t.search,queries:r,searches:r,hash:t.hash}}var f=/[&<>"'`]/g,p=new RegExp(f.source),g=Object.freeze({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","`":"&#96;"}),m=/&(?:amp|#38|#x26|lt|#60|#x3c|gt|#62|#x3e|quot|#34|#x22|apos|#39|#x27|#96|#x60);/gi,v=new RegExp(m.source,"i"),y=Object.freeze({"&amp;":"&","&#38;":"&","&#x26;":"&","&lt;":"<","&#60;":"<","&#x3c;":"<","&gt;":">","&#62;":">","&#x3e;":">","&quot;":'"',"&#34;":'"',"&#x22;":'"',"&apos;":"'","&#39;":"'","&#x27;":"'","&#96;":"`","&#x60;":"`"}),b=Has.performance?performance:Date,w=/^([+-]?(?:\d*\.)?\d+)([Mm]?[Ss])$/;return Object.freeze(Object.defineProperties({},{toEnum:{value:e},toStringTag:{value:t},isNumeric:{value:r},isBoolean:{value:a},slugify:{value:n},escape:{value:i},unescape:{value:o},charAndPosAt:{value:s},fromCssTime:{value:l},toCssTime:{value:c},fromCssProperty:{value:d},parseUrl:{value:h},now:{value:u},random:{value:Math.random},entityEncode:{value:i},entityDecode:{value:o},
 evalExpression:{value:function(){return Scripting.evalJavaScript.apply(Scripting,arguments)}},evalStatements:{value:function(){return Scripting.evalJavaScript.apply(Scripting,arguments)}}}))}(),SimpleAudio=function(){function e(){return g}function t(e){g=!!e,l("mute",g)}function r(){return f}function a(e){f=Math.clamp(e,.2,5),l("rate",f)}function n(){return p}function i(e){p=Math.clamp(e,0,1),l("volume",p)}function o(){l("stop")}function s(e,t){if("function"!=typeof t)throw new Error("callback parameter must be a function");h.set(e,t)}function u(e){h.delete(e)}function l(e,t){h.forEach(function(r){return r(e,t)})}function c(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return new(Function.prototype.bind.apply(m,[null].concat(t)))}function d(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return new(Function.prototype.bind.apply(v,[null].concat(t)))}var h=new Map,f=1,p=1,g=!1,m=function(){function e(t){if(_classCallCheck(this,e),Array.isArray(t))this._create(t);else{if(!(t instanceof e))throw new Error("sources parameter must be an array of either URLs or source objects");this._copy(t)}}return _createClass(e,[{key:"_create",value:function(t){if(!Array.isArray(t)||0===t.length)throw new Error("sources parameter must be an array of either URLs or source objects");var r=/^data:\s*audio\/([^;,]+)\s*[;,]/i,a=/\.([^.\/\\]+)$/,n=e.getType,i=[],o=document.createElement("audio");if(t.forEach(function(e){var t=null;switch(void 0===e?"undefined":_typeof(e)){case"string":var s=void 0;if("data:"===e.slice(0,5)){if(null===(s=r.exec(e)))throw new Error("source data URI missing media type")}else if(null===(s=a.exec(Util.parseUrl(e).pathname)))throw new Error("source URL missing file extension");var u=n(s[1]);null!==u&&(t={src:e,type:u});break;case"object":if(null===e)throw new Error("source object cannot be null");if(!e.hasOwnProperty("src"))throw new Error('source object missing required "src" property');if(!e.hasOwnProperty("format"))throw new Error('source object missing required "format" property');var l=n(e.format);null!==l&&(t={src:e.src,type:l});break;default:throw new Error("invalid source value (type: "+(void 0===e?"undefined":_typeof(e))+")")}if(null!==t){var c=document.createElement("source");c.src=t.src,c.type=Browser.isOpera?t.type.replace(/;.*$/,""):t.type,o.appendChild(c),i.push(t)}}),!o.hasChildNodes())if(Browser.isIE)o.src=undefined;else{var s=document.createElement("source");s.src=undefined,s.type=undefined,o.appendChild(s)}this._finalize(o,i,clone(t))}},{key:"_copy",value:function(t){if(!(t instanceof e))throw new Error("original parameter must be an instance of AudioWrapper");this._finalize(t.audio.cloneNode(!0),clone(t.sources),clone(t.originalSources))}},{key:"_finalize",value:function(e,t,r){var a=this;Object.defineProperties(this,{audio:{configurable:!0,value:e},sources:{configurable:!0,value:Object.freeze(t)},originalSources:{configurable:!0,value:Object.freeze(r)},_error:{writable:!0,value:!1},_faderId:{writable:!0,value:null},_mute:{writable:!0,value:!1},_rate:{writable:!0,value:1},_volume:{writable:!0,value:1}}),jQuery(this.audio).on("loadstart",function(){return a._error=!1}).on("error",function(){return a._error=!0}).find("source:last-of-type").on("error",function(){return a._trigger("error")}),SimpleAudio.subscribe(this,function(e){if(!a.audio)return void SimpleAudio.unsubscribe(a);switch(e){case"mute":a._updateAudioMute();break;case"rate":a._updateAudioRate();break;case"stop":a.stop();break;case"volume":a._updateAudioVolume()}}),this.load()}},{key:"_trigger",value:function(e){jQuery(this.audio).triggerHandler(e)}},{key:"clone",value:function(){return new e(this)}},{key:"destroy",value:function(){SimpleAudio.unsubscribe(this);var e=this.audio;if(e){for(this.fadeStop(),this.stop(),jQuery(e).off();e.hasChildNodes();)e.removeChild(e.firstChild);e.load(),this._error=!0,delete this.audio,delete this.sources,delete this.originalSources}}},{key:"_updateAudioMute",value:function(){this.audio&&(this.audio.muted=this._mute||SimpleAudio.mute)}},{key:"_updateAudioRate",value:function(){this.audio&&(this.audio.playbackRate=this._rate*SimpleAudio.rate)}},{key:"_updateAudioVolume",value:function(){this.audio&&(this.audio.volume=this._volume*SimpleAudio.volume)}},{key:"hasSource",value:function(){return this.sources.length>0}},{key:"hasNoData",value:function(){return!this.audio||this.audio.readyState===HTMLMediaElement.HAVE_NOTHING}},{key:"hasMetadata",value:function(){return!!this.audio&&this.audio.readyState>=HTMLMediaElement.HAVE_METADATA}},{key:"hasSomeData",value:function(){return!!this.audio&&this.audio.readyState>=HTMLMediaElement.HAVE_CURRENT_DATA}},{key:"hasData",value:function(){return!!this.audio&&this.audio.readyState===HTMLMediaElement.HAVE_ENOUGH_DATA}},{key:"isFailed",value:function(){return this._error}},{key:"isLoading",value:function(){return!!this.audio&&this.audio.networkState===HTMLMediaElement.NETWORK_LOADING}},{key:"isPlaying",value:function(){return!!this.audio&&!(this.audio.ended||this.audio.paused||!this.hasSomeData())}},{key:"isPaused",value:function(){return!!this.audio&&(this.audio.paused&&(this.audio.duration===1/0||this.audio.currentTime>0)&&!this.audio.ended)}},{key:"isEnded",value:function(){return!this.audio||this.audio.ended}},{key:"isFading",value:function(){return null!==this._faderId}},{key:"isMuted",value:function(){return this._mute}},{key:"isLooped",value:function(){return!!this.audio&&this.audio.loop}},{key:"load",value:function(){this.audio&&("auto"!==this.audio.preload&&(this.audio.preload="auto"),this.isLoading()||this.audio.load())}},{key:"play",value:function(){this.audio&&this.audio.play()}},{key:"pause",value:function(){this.audio&&this.audio.pause()}},{key:"stop",value:function(){this.audio&&(this.pause(),this.time=0,this._trigger(":stop"))}},{key:"fadeWithDuration",value:function(e,t,r){var a=this;if(this.audio){this.fadeStop();var n=Math.clamp(null==r?this.volume:r,0,1),i=Math.clamp(t,0,1);n!==i&&(this.volume=n,jQuery(this.audio).off("timeupdate.AudioWrapper:fadeWithDuration").one("timeupdate.AudioWrapper:fadeWithDuration",function(){var t=void 0,r=void 0;n<i?(t=n,r=i):(t=i,r=n);var o=Number(e);o<1&&(o=1);var s=(i-n)/(o/.025);a._faderId=setInterval(function(){if(!a.isPlaying())return void a.fadeStop();a.volume=Math.clamp(a.volume+s,t,r),0===a.volume&&a.pause(),a.volume===i&&(a.fadeStop(),a._trigger(":fade"))},25)}),this.play())}}},{key:"fade",value:function(e,t){this.fadeWithDuration(5,e,t)}},{key:"fadeIn",value:function(){this.fade(1)}},{key:"fadeOut",value:function(){this.fade(0)}},{key:"fadeStop",value:function(){null!==this._faderId&&(clearInterval(this._faderId),this._faderId=null)}},{key:"on",value:function(t,r){if(this.audio){if("function"!=typeof r)throw new Error("listener parameter must be a function");var a=e._events,n=t.trim().splitOrEmpty(/\s+/).map(function(e){var t=e.split(".",1)[0];if(!a.hasOwnProperty(t))throw new Error('unknown event "'+t+'"; valid: '+Object.keys(a).join(", "));return e.replace(t,a[t])+".AudioWrapperEvent"}).join(" ");if(""===n)throw new Error('invalid eventNames parameter "'+t+'"');return jQuery(this.audio).on(n,r),this}}},{key:"one",value:function(t,r){if(this.audio){if("function"!=typeof r)throw new Error("listener parameter must be a function");var a=e._events,n=t.trim().splitOrEmpty(/\s+/).map(function(e){var t=e.split(".",1)[0];if(!a.hasOwnProperty(t))throw new Error('unknown event "'+t+'"; valid: '+Object.keys(a).join(", "));return e.replace(t,a[t])+".AudioWrapperEvent"}).join(" ");if(""===n)throw new Error('invalid eventNames parameter "'+t+'"');return jQuery(this.audio).one(n,r),this}}},{key:"off",value:function(t,r){if(this.audio){if(r&&"function"!=typeof r)throw new Error("listener parameter must be a function");if(!t)return jQuery(this.audio).off(".AudioWrapperEvent",r);var a=e._events,n=t.trim().splitOrEmpty(/\s+/).map(function(e){var t=e.split(".",1)[0];if(t){if(!a.hasOwnProperty(t))throw new Error('unknown event "'+t+'"; valid: '+Object.keys(a).join(", "));return e.replace(t,a[t])+".AudioWrapperEvent"}return e+".AudioWrapperEvent"}).join(" ");if(""===n)throw new Error('invalid eventNames parameter "'+t+'"');return jQuery(this.audio).off(n,r),this}}},{key:"duration",get:function(){return this.audio?this.audio.duration:NaN}},{key:"ended",get:function(){return!this.audio||this.audio.ended}},{key:"loop",get:function(){return!!this.audio&&this.audio.loop},set:function(e){this.audio&&(this.audio.loop=!!e)}},{key:"mute",get:function(){return this._mute},set:function(e){this._mute=!!e,this._updateAudioMute()}},{key:"paused",get:function(){return!!this.audio&&this.audio.paused}},{key:"rate",get:function(){return this._rate},set:function(e){this._rate=Math.clamp(e,.2,5),this._updateAudioRate()}},{key:"remaining",get:function(){return this.audio?this.audio.duration-this.audio.currentTime:NaN}},{key:"time",get:function(){return this.audio?this.audio.currentTime:NaN},set:function(e){var t=this;if(this.audio)try{this.audio.currentTime=e}catch(r){jQuery(this.audio).off("loadedmetadata.AudioWrapper:time").one("loadedmetadata.AudioWrapper:time",function(){return t.audio.currentTime=e})}}},{key:"volume",get:function(){return this._volume},set:function(e){this._volume=Math.clamp(e,0,1),this._updateAudioVolume()}}],[{key:"_verifyType",value:function(t){if(!t||!Has.audio)return null;var r=e._types;if(!r.hasOwnProperty(t)){var a=document.createElement("audio");r[t]=""!==a.canPlayType(t).replace(/^no$/i,"")}return r[t]?t:null}},{key:"getType",value:function(t){if(!t||!Has.audio)return null;var r=e.formats,a=t.toLowerCase(),n=r.hasOwnProperty(a)?r[a]:"audio/"+a;return e._verifyType(n)}},{key:"canPlayFormat",value:function(t){return null!==e.getType(t)}},{key:"canPlayType",value:function(t){return null!==e._verifyType(t)}}]),e}();Object.defineProperties(m,{formats:{value:{aac:"audio/aac",caf:"audio/x-caf","x-caf":"audio/x-caf",mp3:'audio/mpeg; codecs="mp3"',mpeg:'audio/mpeg; codecs="mp3"',m4a:"audio/mp4",mp4:"audio/mp4","x-m4a":"audio/mp4","x-mp4":"audio/mp4",oga:"audio/ogg",ogg:"audio/ogg",opus:'audio/ogg; codecs="opus"',wav:"audio/wav",wave:"audio/wav",weba:"audio/webm",webm:"audio/webm"}},_types:{value:{}},_events:{value:Object.freeze({canplay:"canplaythrough",end:"ended",error:"error",fade:":fade",pause:"pause",play:"playing",rate:"ratechange",seek:"seeked",stop:":stop",volume:"volumechange"})}});var v=function(){function e(t){var r=this;_classCallCheck(this,e),Object.defineProperties(this,{tracks:{configurable:!0,value:[]},queue:{configurable:!0,value:[]},current:{writable:!0,value:null},_rate:{writable:!0,value:1},_volume:{writable:!0,value:1},_mute:{writable:!0,value:!1},_loop:{writable:!0,value:!1},_shuffle:{writable:!0,value:!1}}),Array.isArray(t)?t.forEach(function(e){return r.add(e)}):t instanceof e&&t.tracks.forEach(function(e){return r.add(e)})}return _createClass(e,[{key:"add",value:function(e){var t=this;if(null==e||"object"!==(void 0===e?"undefined":_typeof(e)))throw new Error("track parameter must be an object");var r=void 0,a=void 0,n=void 0,i=void 0;if(e instanceof m)r=!0,a=e.clone(),n=e.volume,i=e.rate;else{if(!e.hasOwnProperty("track"))throw new Error('track object missing required "track" property');if(!(e.track instanceof m))throw new Error('track object\'s "track" property must be an AudioWrapper object');r=e.hasOwnProperty("copy")&&e.copy,a=r?e.track.clone():e.track,n=e.hasOwnProperty("volume")?e.volume:e.track.volume,i=e.hasOwnProperty("rate")?e.rate:e.track.rate}a.stop(),a.loop=!1,a.mute=!1,a.volume=n,a.rate=i,a.on("end.AudioListEvent",function(){return t._onEnd()}),this.tracks.push({copy:r,track:a,volume:n,rate:i})}},{key:"destroy",value:function(){this.stop(),this.tracks.filter(function(e){return e.copy}).forEach(function(e){return e.track.destroy()}),delete this.tracks,delete this.queue}},{key:"isPlaying",value:function(){return null!==this.current&&this.current.track.isPlaying()}},{key:"isEnded",value:function(){return 0===this.queue.length&&(null===this.current||this.current.track.isEnded())}},{key:"isPaused",value:function(){return null===this.current||this.current.track.isPaused()}},{key:"isMuted",value:function(){return this._mute}},{key:"isLooped",value:function(){return this._loop}},{key:"isShuffled",value:function(){return this._shuffle}},{key:"play",value:function(){(null!==this.current&&!this.current.track.isEnded()||(0===this.queue.length&&this._buildList(),this._next()))&&this.current.track.play()}},{key:"pause",value:function(){null!==this.current&&this.current.track.pause()}},{key:"stop",value:function(){null!==this.current&&(this.current.track.stop(),this.current=null),this.queue.splice(0)}},{key:"skip",value:function(){this._next()?this.current.track.play():this._loop&&this.play()}},{key:"fadeWithDuration",value:function(e,t,r){if(0===this.queue.length&&this._buildList(),null!==this.current&&!this.current.track.isEnded()||this._next()){var a=Math.clamp(t,0,1)*this.current.volume,n=void 0;null!=r&&(n=Math.clamp(r,0,1)*this.current.volume),this.current.track.fadeWithDuration(e,a,n),this._volume=t}}},{key:"fade",value:function(e,t){this.fadeWithDuration(5,e,t)}},{key:"fadeIn",value:function(){this.fade(1)}},{key:"fadeOut",value:function(){this.fade(0)}},{key:"_next",value:function(){return null!==this.current&&this.current.track.stop(),0===this.queue.length?(this.current=null,!1):(this.current=this.queue.shift(),!this.current.track.hasSource()||this.current.track.isFailed()?this._next():(this.current.track.mute=this._mute,this.current.track.rate=this.rate*this.current.rate,this.current.track.volume=this.volume*this.current.volume,!0))}},{key:"_onEnd",value:function(){if(0===this.queue.length){if(!this._loop)return;this._buildList()}this._next()&&this.current.track.play()}},{key:"_buildList",value:function(){var e;this.queue.splice(0),(e=this.queue).push.apply(e,_toConsumableArray(this.tracks)),0!==this.queue.length&&this._shuffle&&(this.queue.shuffle(),this.queue.length>1&&this.queue[0]===this.current&&this.queue.push(this.queue.shift()))}},{key:"duration",get:function(){return this.tracks.map(function(e){return e.track.duration}).reduce(function(e,t){return e+t},0)}},{key:"loop",get:function(){return this._loop},set:function(e){this._loop=!!e}},{key:"mute",get:function(){return this._mute},set:function(e){this._mute=!!e,null!==this.current&&(this.current.track.mute=this._mute)}},{key:"rate",get:function(){return this._rate},set:function(e){this._rate=Math.clamp(e,.2,5),null!==this.current&&(this.current.track.rate=this.rate*this.current.rate)}},{key:"remaining",get:function(){var e=this.queue.map(function(e){return e.track.duration}).reduce(function(e,t){return e+t},0);return null!==this.current&&(e+=this.current.track.remaining),e}},{key:"shuffle",get:function(){return this._shuffle},set:function(e){this._shuffle=!!e}},{key:"time",get:function(){return this.duration-this.remaining}},{key:"volume",get:function(){return this._volume},set:function(e){this._volume=Math.clamp(e,0,1),null!==this.current&&(this.current.track.volume=this.volume*this.current.volume)}}]),e}();return Object.freeze(Object.defineProperties({},{mute:{get:e,set:t},rate:{get:r,set:a},volume:{get:n,set:i},stop:{value:o},subscribe:{value:s},unsubscribe:{value:u},publish:{value:l},create:{value:c},createList:{value:d}}))}(),SimpleStore=function(){function e(e,a){if(r)return r.create(e,a);for(var n=0;n<t.length;++n)if(t[n].init(e,a))return r=t[n],r.create(e,a);throw new Error("no valid storage adapters found")}var t=[],r=null;return Object.freeze(Object.defineProperties({},{adapters:{value:t},create:{value:e}}))}();SimpleStore.adapters.push(function(){function e(){function e(e){try{var t=window[e],r="_sc_"+String(Date.now());t.setItem(r,r);var a=t.getItem(r)===r;return t.removeItem(r),a}catch(e){}return!1}return r=e("localStorage")&&e("sessionStorage")}function t(e,t){if(!r)throw new Error("adapter not initialized");return new a(e,t)}var r=!1,a=function(){function e(t,r){_classCallCheck(this,e);var a=t+".",n=null,i=null;r?(n=window.localStorage,i="localStorage"):(n=window.sessionStorage,i="sessionStorage"),Object.defineProperties(this,{_engine:{value:n},_prefix:{value:a},_prefixRe:{value:new RegExp("^"+RegExp.escape(a))},name:{value:i},id:{value:t},persistent:{value:!!r}})}return _createClass(e,[{key:"size",value:function(){return this.keys().length}},{key:"keys",value:function(){for(var e=[],t=0;t<this._engine.length;++t){var r=this._engine.key(t);this._prefixRe.test(r)&&e.push(r.replace(this._prefixRe,""))}return e}},{key:"has",value:function(e){return!("string"!=typeof e||!e)&&this._engine.hasOwnProperty(this._prefix+e)}},{key:"get",value:function(t){if("string"!=typeof t||!t)return null;var r=this._engine.getItem(this._prefix+t);return null==r?null:e._deserialize(r)}},{key:"set",value:function(t,r){if("string"!=typeof t||!t)return!1;try{this._engine.setItem(this._prefix+t,e._serialize(r))}catch(e){throw/quota[_\s]?(?:exceeded|reached)/i.test(e.name)&&(e.message=this.name+" quota exceeded"),e}return!0}},{key:"delete",value:function(e){return!("string"!=typeof e||!e)&&(this._engine.removeItem(this._prefix+e),!0)}},{key:"clear",value:function(){for(var e=this.keys(),t=0,r=e.length;t<r;++t)this.delete(e[t]);return!0}},{key:"length",get:function(){return this.keys().length}}],[{key:"_serialize",value:function(e)
diff --git a/fixSpellingMistakes b/fixSpellingMistakes
index 5e1d4e20b74034b96c2881e8d865e00afdb3ce95..01893e9145d233751e217f36e4f62d62ba27f36d 100755
--- a/fixSpellingMistakes
+++ b/fixSpellingMistakes
@@ -5,5 +5,5 @@ if [ ! -d ".git" ]; then
 	exit 0
 fi
 
-git ls-files  -z src/*.tw | xargs -0 sed -i -f devTools/spell_check.txt
+git ls-files  -z src/*.tw | grep -z -v .min.tw | grep -z -v setupVars.tw | xargs -0 sed -i -f devTools/spell_check.txt
 
diff --git a/src/events/intro/introSummary.tw b/src/events/intro/introSummary.tw
index 990eb5b6323f4552e6874eefe6941090ddef595c..599d9a18a85ca5ee4424c31a6db98211c024feee 100644
--- a/src/events/intro/introSummary.tw
+++ b/src/events/intro/introSummary.tw
@@ -466,9 +466,9 @@ __''Player Character''__
 	<br>You are a $PCCreationSex.
 	<br>Change to
 		<<if $PCCreationSex != "masculine ''Master''">>
-			[[masculine Master|Intro Summary][$PC.title = 1, $PCCreationSex = "masculine ''Master''"]] 
+			[[masculine Master|Intro Summary][$PC.title = 1, $PCCreationSex = "masculine ''Master''"]]
 		<<elseif $PCCreationSex != "feminine ''Mistress''">>
-			[[feminine Mistress|Intro Summary][$PC.title = 0, $PCCreationSex = "feminine ''Mistress''"]] 
+			[[feminine Mistress|Intro Summary][$PC.title = 0, $PCCreationSex = "feminine ''Mistress''"]]
 		<</if>>
 
 	<br>Everyone calls you ''<<PlayerName>>.''
@@ -489,7 +489,7 @@ __''Player Character''__
 	<</if>>
 
 	<br>
-	You are <<textbox "$PC.actualAge" $PC.actualAge "Intro Summary">> years old which is 
+	You are <<textbox "$PC.actualAge" $PC.actualAge "Intro Summary">> years old which is
 	<<if $PC.actualAge >= 65>>
 		''old''.
 	<<elseif $PC.actualAge >= 50>>
@@ -500,7 +500,7 @@ __''Player Character''__
 		''surprisingly young''.
 	<</if>>
 	<<set $PC.physicalAge = $PC.actualAge, $PC.visualAge = $PC.actualAge>>
-	
+
 	Your birthday was <<textbox "$PC.birthWeek" $PC.birthWeek "Intro Summary">> weeks ago.
 
 	<<if $playerAging == 2>>
@@ -529,7 +529,7 @@ __''Player Character''__
 	Your nationality (//Capitalize it//) is <<textbox "$PC.nationality" $PC.nationality "Intro Summary">>,
 	race is <<textbox "$PC.race" $PC.race "Intro Summary">>
 	and skin tone is <<textbox "$PC.skin" $PC.skin "Intro Summary">>.
-	
+
 <br>__Race:__
 		[[White|Intro Summary][$PC.race = "white"]] |
 		[[Asian|Intro Summary][$PC.race = "asian"]] |
@@ -543,7 +543,7 @@ __''Player Character''__
 		[[Pacific Islander|Intro Summary][$PC.race = "pacific islander"]] |
 		[[Malay|Intro Summary][$PC.race = "malay"]] |
 		[[Mixed Race|Intro Summary][$PC.race = "mixed race"]]
-		
+
 <br>__Skin tone:__
 		[[White|Intro Summary][$PC.skin = "white"]] |
 		[[Fair|Intro Summary][$PC.skin = "fair"]] |
@@ -555,16 +555,16 @@ __''Player Character''__
 		[[Brown|Intro Summary][$PC.skin = "brown"]] |
 		[[Pale|Intro Summary][$PC.skin = "pale"]] |
 		[[Extremely Pale|Intro Summary][$PC.skin = "extremely pale"]]
-	
+
 	<<switch $PC.markings>>
 		<<case "freckles">>
-			<<set _PCCreationFreckels = "has light freckling">>
+			<<set _PCCreationFreckles = "has light freckling">>
 		<<case "heavily freckled">>
-			<<set _PCCreationFreckels = "has heavy freckling">>
+			<<set _PCCreationFreckles = "has heavy freckling">>
 		<<default>>
-			<<set _PCCreationFreckels = "is clear of blemishes">>
+			<<set _PCCreationFreckles = "is clear of blemishes">>
 	<</switch>>
-	<br>Your body ''_PCCreationFreckels''.
+	<br>Your body ''_PCCreationFreckles''.
 		[[None|Intro Summary][$PC.markings = "none"]] |
 		[[Light|Intro Summary][$PC.markings = "freckles"]] |
 		[[Heavy|Intro Summary][$PC.markings = "heavily freckled"]]
@@ -578,7 +578,7 @@ __''Player Character''__
 
 	and you consume it when  ''<<if $PC.refreshmentType == 0>>Smoked<<elseif $PC.refreshmentType == 1>>Drunk<<elseif $PC.refreshmentType == 2>>Eaten<<elseif $PC.refreshmentType == 3>>Snorted<<elseif $PC.refreshmentType == 4>>Injected<<elseif $PC.refreshmentType == 5>>Popped<<else>>Orally Dissolved<</if>>''.
 	[[Smoked|Intro Summary][$PC.refreshmentType = 0]] | [[Drank|Intro Summary][$PC.refreshmentType = 1]] | [[Eaten|Intro Summary][$PC.refreshmentType = 2]] | [[Snorted|Intro Summary][$PC.refreshmentType = 3]] | [[Injected|Intro Summary][$PC.refreshmentType = 4]] | [[Popped|Intro Summary][$PC.refreshmentType = 5]] | [[Orally Dissolved|Intro Summary][$PC.refreshmentType = 6]]
-	
+
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
 	<<if $PC.refreshmentType == 0>>//"Smoke" must fit into the following sentence: "I smoked a $PC.refreshment" to fit events properly
 	<<elseif $PC.refreshmentType == 5>>//"Popped" must fit into the following sentence: "I shook the bottle of $PC.refreshment" to fit events properly
@@ -611,7 +611,7 @@ __''Player Character''__
 	<</switch>>
 	<br>
 	Before you came to the free cities, you were ''_PCCreationCareer'' and it is rumoured that you acquired your arcology through ''$PC.rumor''.
-	
+
 	<br>__Past career:__
 	<<if $PC.career != "arcology owner">>
 		[[member of the idle wealthy|Intro Summary][$PC.career = "wealth"]] |
@@ -626,14 +626,14 @@ __''Player Character''__
 		[[servant|Intro Summary][$PC.career = "servant"]] |
 		[[gang leader|Intro Summary][$PC.career = "gang"]]
 	<</if>>
-	
+
 	<br>__rumor:__
 	[[wealth|Intro Summary][$PC.rumor = "wealth"]] |
 	[[hard work|Intro Summary][$PC.rumor = "diligence"]] |
 	[[force|Intro Summary][$PC.rumor = "force"]] |
 	[[social engineering|Intro Summary][$PC.rumor = "social engineering"]] |
 	[[blind luck|Intro Summary][$PC.rumor = "luck"]]
-	
+
 	<br>
 	You have a
 	<<if $PC.vagina == 1 && $PC.dick == 1>>
@@ -646,7 +646,7 @@ __''Player Character''__
 		''vagina''. Sex scene variations; most difficult reputation maintenance.
 		[[Switch to penis|Intro Summary][$PC.dick = 1, $PC.vagina = 0, $PC.preg = 0, $PC.pregType = 0]] | [[Add a penis|Intro Summary][$PC.dick = 1]]
 	<</if>>
-	
+
 	<<if $PC.vagina == 1>>
 		<br>
 		You are
@@ -665,12 +665,12 @@ __''Player Character''__
 			[[Not pregnant|Intro Summary][$PC.preg = 0, $PC.pregType = 0]]
 			| [[Ready to drop|Intro Summary][$PC.preg = 40]]
 		<</if>>
-	
+
 		<<if $PC.births > 0>>
 			<br>You have given birth to ''$PC.births'' babies.
 		<</if>>
-	
-		<br>Your hormones 
+
+		<br>Your hormones
 		<<if $PC.pregMood == 1>>
 			influence you to be ''caring and motherly''. Sex scene alterations; slaves will trust you more, but may try to take advantage of your mercy.
 			[[Change to no change|Intro Summary][$PC.pregMood = 0]] | [[Change to aggressive|Intro Summary][$PC.pregMood = 2]]
@@ -697,16 +697,16 @@ __''Player Character''__
 			<<set _PCCreationBoobSize = "massive H cups">>
 		<<default>>
 			<<set _PCCreationBoobSize = "average DD cups">>
-	<</switch>> 
-		
+	<</switch>>
+
 	<<if $PC.boobsImplant>>
 		<<set _PCCreationBreast = "fake">>
 	<<else>>
 		<<set _PCCreationBreast = "all natural">>
-	<</if>> 	
-			
+	<</if>>
+
 	<<if $PC.boobs > 0>>
-		Your breasts are ''_PCCreationBoobSize'' 
+		Your breasts are ''_PCCreationBoobSize''
 		and ''_PCCreationBreast''.
 		<<if $PC.boobsBonus == 0>>
 			[[Go bigger|Intro Summary][$PC.boobsBonus = 2, $PC.boobsImplant = 0]] | [[Get implants|Intro Summary][$PC.boobsBonus = 2, $PC.boobsImplant = 1]] | [[Go smaller|Intro Summary][$PC.boobsBonus = -1, $PC.boobsImplant = 0]]
@@ -735,7 +735,7 @@ __''Player Character''__
 	and everyone that matters calls you <<PlayerName>>.
 
 	<br>
-	You are $PC.actualAge  years old which is 
+	You are $PC.actualAge  years old which is
 	<<if $PC.actualAge >= 65>>
 		''old''.
 	<<elseif $PC.actualAge >= 50>>
@@ -743,9 +743,9 @@ __''Player Character''__
 	<<elseif $PC.actualAge >= 35>>
 		''entering middle age''.
 	<<else>>
-		''surprisingly young'' 
+		''surprisingly young''
 	<</if>>
-	
+
 	Your birthday will be in $PC.birthWeek weeks
 	<<if $playerAging == 2>>
 		and you ''age naturally''.
@@ -777,7 +777,7 @@ __''Player Character''__
 
 	and you consume it when  ''<<if $PC.refreshmentType == 0>>Smoked<<elseif $PC.refreshmentType == 1>>Drunk<<elseif $PC.refreshmentType == 2>>Eaten<<elseif $PC.refreshmentType == 3>>Snorted<<elseif $PC.refreshmentType == 4>>Injected<<elseif $PC.refreshmentType == 5>>Popped<<else>>Orally Dissolved<</if>>''.
 	[[Smoked|Intro Summary][$PC.refreshmentType = 0]] | [[Drank|Intro Summary][$PC.refreshmentType = 1]] | [[Eaten|Intro Summary][$PC.refreshmentType = 2]] | [[Snorted|Intro Summary][$PC.refreshmentType = 3]] | [[Injected|Intro Summary][$PC.refreshmentType = 4]] | [[Popped|Intro Summary][$PC.refreshmentType = 5]] | [[Orally Dissolved|Intro Summary][$PC.refreshmentType = 6]]
-	
+
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
 	<<if $PC.refreshmentType == 0>>//"Smoke" must fit into the following sentence: "I smoked a $PC.refreshment" to fit events properly
 	<<elseif $PC.refreshmentType == 5>>//"Popped" must fit into the following sentence: "I shook the bottle of $PC.refreshment" to fit events properly
@@ -810,7 +810,7 @@ __''Player Character''__
 	<<case "gang">>
 		Prior to being an arcology owner, you were the leader of a ruthless gang.
 	<</switch>>
-	
+
 	Word in the arcology is you acquired it through
 	<<switch $PC.rumor>>
 	<<case "wealth">>
@@ -904,7 +904,7 @@ __''Player Character''__
 
 <br><br>__''Image display''__
 <br>
-Currently 
+Currently
 <<if $seeImages == 1>>
 	''enabled.'' [[Disable|Intro Summary][$seeImages = 0]]
 	<br>&nbsp;&nbsp;&nbsp;&nbsp;
diff --git a/src/gui/Encyclopedia/encyclopedia.tw b/src/gui/Encyclopedia/encyclopedia.tw
index 814f4dd6720deed0552f92407e464c605a664e62..501f85bc236f4b1af8542cdda88fdc2a8427963d 100644
--- a/src/gui/Encyclopedia/encyclopedia.tw
+++ b/src/gui/Encyclopedia/encyclopedia.tw
@@ -424,7 +424,7 @@ __Standard Bioreactors__ are slaves who are permanently attached to the arcology
 <<case "Fuckdolls">>
 //Basis of the Kombinezon-B bodysuit is a durable advanced material. Bodysuit protects, temperature-regulates, cleans, and restrains inhabitant. Material is of such strength that inhabitant is well protected, and of such thickness that inhabitant cannot feel any touch.
 <br><br>
-Bodysuit is plumbed for nutrition, drug application, and waste removal. Inhabitant's digestive tract should be reoriented to cannulae of complex ?-2 for nutrition intake at left ribcage and waste removal at front abdomen. Drug application is by direct bloodstream. Bodysuit includes monitoring systems to maintain vital signs of inhabitant.
+Bodysuit is plumbed for nutrition, drug application, and waste removal. Inhabitant's digestive tract should be reoriented to cannulae of complex ?-2 for nutrition intake at left rib cage and waste removal at front abdomen. Drug application is by direct bloodstream. Bodysuit includes monitoring systems to maintain vital signs of inhabitant.
 <br><br>
 For use, bodysuit possesses apertures at anus, mouth, and where appropriate, vagina. No provision for silencing is made, so surgical muting is recommended before application of bodysuit. Closure of jaws remains somewhat possible, so surgical dentition reduction is recommended before application of bodysuit. No other apertures are discernible to inhabitant. Inhabitant's only source of stimulation is penetration.
 <br><br>
@@ -942,7 +942,7 @@ Slaves' ''testicles'' are necessary for erection and provide a small amount of n
 
 
 <<case "Vaginas">>
-Slaves' ''vaginas'' are a valuable commodity. Like [[anuses|Encyclopedia][$encyclopedia = "Anuses"]], they appear in four degrees of tightness: virgin and three increasing levels of looseness. Tighter vaginas improve performance at sexual assignments, but most methods of learning [[vaginal skill|Encyclopedia][$encyclopedia = "Anal Skill"]] tend to loosen anuses. Assigning a virgin to sex work will result in a one-time bonus to performance but may anger her; alternatively, a chastity belt can be used to preserve virginity during sexual assignments. A virgin vagina applies a large cost multiplier for slave purchase or sale. Vaginas can be loosened by events, strenuous sex work, or plug accessories; they can be tightened with rest from strenuous sex work, personal attention, or the autosurgery, though such surgery can reduce [[vaginal skill|Encyclopedia][$encyclopedia = "Vaginal Skill"]]. 
+Slaves' ''vaginas'' are a valuable commodity. Like [[anuses|Encyclopedia][$encyclopedia = "Anuses"]], they appear in four degrees of tightness: virgin and three increasing levels of looseness. Tighter vaginas improve performance at sexual assignments, but most methods of learning [[vaginal skill|Encyclopedia][$encyclopedia = "Anal Skill"]] tend to loosen anuses. Assigning a virgin to sex work will result in a one-time bonus to performance but may anger her; alternatively, a chastity belt can be used to preserve virginity during sexual assignments. A virgin vagina applies a large cost multiplier for slave purchase or sale. Vaginas can be loosened by events, strenuous sex work, or plug accessories; they can be tightened with rest from strenuous sex work, personal attention, or the autosurgery, though such surgery can reduce [[vaginal skill|Encyclopedia][$encyclopedia = "Vaginal Skill"]].
 <br><br>
 [[Clit?|Encyclopedia][$encyclopedia = "Clits"]]
 
@@ -957,15 +957,15 @@ Slaves' ''weight'' contributes to beauty. The middle three values (thin, average
 
 <<case "Hormones (XX)">>
 ''XX Hormones'' are female hormones, either from hormone treatments or from [[ovaries|Encyclopedia][$encyclopedia = "Ovaries"]]. A hidden hormonal score is calculated for each slave:
- 
+
 &nbsp;&nbsp;normal XX hormones provide +1
 &nbsp;&nbsp;heavy XX hormones provide +2
 &nbsp;&nbsp;[[Ovaries|Encyclopedia][$encyclopedia = "Ovaries"]] provide +1
 &nbsp;&nbsp;[[Testicles|Encyclopedia][$encyclopedia = "Testicles"]] provide -1
 <br><br>
-At a total of +1 with no ovaries present, XY attraction will increase, dicks will shrink, testicles will shrink, deep voices will be raised, small breasts and buttocks will grow, ugly faces will soften, huge clits will shrink, and extreme musculature will soften. 
+At a total of +1 with no ovaries present, XY attraction will increase, dicks will shrink, testicles will shrink, deep voices will be raised, small breasts and buttocks will grow, ugly faces will soften, huge clits will shrink, and extreme musculature will soften.
 <br><br>
-At +2, all these effects become more likely and more extreme, and [[devotion|Encyclopedia][$encyclopedia = "Devotion"]] and [[trust|Encyclopedia][$encyclopedia = "Trust"]] can both increase. 
+At +2, all these effects become more likely and more extreme, and [[devotion|Encyclopedia][$encyclopedia = "Devotion"]] and [[trust|Encyclopedia][$encyclopedia = "Trust"]] can both increase.
 <br><br>
 Artificial hormonal effects can be accelerated by installing the second [[upgrade|Encyclopedia][$encyclopedia = "What the Upgrades Do"]] to the kitchen, which will also stop slave's assets from shrinking due to natural hormonal effects.
 
@@ -978,9 +978,9 @@ Artificial hormonal effects can be accelerated by installing the second [[upgrad
 &nbsp;&nbsp;[[Ovaries|Encyclopedia][$encyclopedia = "Ovaries"]] provide +1
 &nbsp;&nbsp;[[Testicles|Encyclopedia][$encyclopedia = "Testicles"]] provide -1
 <br><br>
- At a total of -1, XY attraction will increase, large breasts and buttocks will shrink, and clits will grow. 
+ At a total of -1, XY attraction will increase, large breasts and buttocks will shrink, and clits will grow.
 <br><br>
-At +2, all these effects become more likely and more extreme, [[devotion|Encyclopedia][$encyclopedia = "Devotion"]] can decrease, dicks and testicles will grow, voices will deepen, and faces will become uglier. 
+At +2, all these effects become more likely and more extreme, [[devotion|Encyclopedia][$encyclopedia = "Devotion"]] can decrease, dicks and testicles will grow, voices will deepen, and faces will become uglier.
 <br><br>
 Artificial hormonal effects can be accelerated by installing the second [[upgrade|Encyclopedia][$encyclopedia = "What the Upgrades Do"]] to the kitchen, which will also stop slave's assets from shrinking due to natural hormonal effects.
 /**********
@@ -1035,29 +1035,29 @@ Choose a more particular entry below:
 
 
 <<case "Boob Fetishists">>
-''Boob Fetishists'' like breasts. 
+''Boob Fetishists'' like breasts.
 <br><br>
-The fetish can be created by appropriate smart clit piercing settings, serving the Head Girl, relationships, and being milked. 
+The fetish can be created by appropriate smart clit piercing settings, serving the Head Girl, relationships, and being milked.
 <br><br>
-It can be advanced by appropriate smart clit piercing settings, high [[devotion|Encyclopedia][$encyclopedia = "Devotion"]] and [[trust|Encyclopedia][$encyclopedia = "Trust"]], and being milked. 
+It can be advanced by appropriate smart clit piercing settings, high [[devotion|Encyclopedia][$encyclopedia = "Devotion"]] and [[trust|Encyclopedia][$encyclopedia = "Trust"]], and being milked.
 <br><br>
 The fetish will increase XX attraction. Boob Fetishists enjoy cowbell collars, breast surgery, and being milked. Milkmaids can become boob fetishists naturally.
 
 
 <<case "Buttsluts">>
-''Buttsluts'' fetishize anal sex - mostly on the receiving end, though they'll enjoy other anal play. 
+''Buttsluts'' fetishize anal sex - mostly on the receiving end, though they'll enjoy other anal play.
 <br><br>
-The fetish can be created by appropriate smart clit piercing settings, serving the Head Girl, relationships, anally focused fucktoy service, service in a [[Dairy|Encyclopedia][$encyclopedia = "Dairy"]] upgraded with reciprocating dildos, the dildo drug dispenser upgrade, anal accessories, and being a painal queen. 
+The fetish can be created by appropriate smart clit piercing settings, serving the Head Girl, relationships, anally focused fucktoy service, service in a [[Dairy|Encyclopedia][$encyclopedia = "Dairy"]] upgraded with reciprocating dildos, the dildo drug dispenser upgrade, anal accessories, and being a painal queen.
 <br><br>
-It can be advanced by appropriate smart clit piercing settings, high [[devotion|Encyclopedia][$encyclopedia = "Devotion"]] and [[trust|Encyclopedia][$encyclopedia = "Trust"]], the dildo drug dispenser upgrade, and being a painal queen. 
+It can be advanced by appropriate smart clit piercing settings, high [[devotion|Encyclopedia][$encyclopedia = "Devotion"]] and [[trust|Encyclopedia][$encyclopedia = "Trust"]], the dildo drug dispenser upgrade, and being a painal queen.
 <br><br>
 Buttsluttery will soften the 'hates anal' flaw into 'painal queen,' the 'hates penetration' flaw into 'strugglefuck queen,' and the 'repressed' flaw into 'perverted,' or remove these flaws if a quirk is already present. Buttsluts with vaginas enjoy wearing chastity belts, and all buttsluts enjoy buttock enhancement and anal rejuvenation surgeries. Buttsluts do not mind a lack of hormonal feminization. The fetish will increase XY attraction.
 
 
 <<case "Cumsluts">>
-''Cumsluts'' fetishize oral sex and ejaculate. 
+''Cumsluts'' fetishize oral sex and ejaculate.
 <br><br>
-The fetish can be created by appropriate smart clit piercing settings, serving the Head Girl, relationships, orally focused fucktoy service, the phallic food dispenser upgrade, cum diets, and being a gagfuck queen. 
+The fetish can be created by appropriate smart clit piercing settings, serving the Head Girl, relationships, orally focused fucktoy service, the phallic food dispenser upgrade, cum diets, and being a gagfuck queen.
 <br><br>
 It can be advanced by appropriate smart clit piercing settings, high [[devotion|Encyclopedia][$encyclopedia = "Devotion"]] and [[trust|Encyclopedia][$encyclopedia = "Trust"]], the phallic food dispenser upgrade, cum diets, and being a gagfuck queen.
 <br><br>
@@ -1065,61 +1065,61 @@ Cumsluttery will soften the 'hates oral' flaw into 'gagfuck queen,' the 'hates w
 
 
 <<case "Doms">>
-''Doms'' fetishize dominance. 
+''Doms'' fetishize dominance.
 <br><br>
-The fetish can be created by appropriate smart clit piercing settings, serving the Head Girl, relationships, unfocused fucktoy service, and being confident or cutting. 
+The fetish can be created by appropriate smart clit piercing settings, serving the Head Girl, relationships, unfocused fucktoy service, and being confident or cutting.
 <br><br>
-It can be advanced by appropriate smart clit piercing settings, high [[devotion|Encyclopedia][$encyclopedia = "Devotion"]] and [[trust|Encyclopedia][$encyclopedia = "Trust"]], being confident, and being cutting. 
+It can be advanced by appropriate smart clit piercing settings, high [[devotion|Encyclopedia][$encyclopedia = "Devotion"]] and [[trust|Encyclopedia][$encyclopedia = "Trust"]], being confident, and being cutting.
 <br><br>
 Dominance will remove the apathetic flaw if a quirk is already present. Doms do not mind a lack of hormonal feminization. The fetish will increase XX attraction. Stewardesses and Nurses do better when dominant; the Head Girl, Madams, Schoolteachers, Stewardesses, and Nurses can become Doms naturally.
 
 
 <<case "Humiliation Fetishists">>
-''Humiliation Fetishists'' like exhibitionism. 
+''Humiliation Fetishists'' like exhibitionism.
 <br><br>
-The fetish can be created by appropriate smart clit piercing settings, serving the Head Girl, relationships, or being sinful, a tease, or perverted. 
+The fetish can be created by appropriate smart clit piercing settings, serving the Head Girl, relationships, or being sinful, a tease, or perverted.
 <br><br>
-It can be advanced by appropriate smart clit piercing settings, high [[devotion|Encyclopedia][$encyclopedia = "Devotion"]] and [[trust|Encyclopedia][$encyclopedia = "Trust"]], being sinful, being a tease, and being perverted. 
+It can be advanced by appropriate smart clit piercing settings, high [[devotion|Encyclopedia][$encyclopedia = "Devotion"]] and [[trust|Encyclopedia][$encyclopedia = "Trust"]], being sinful, being a tease, and being perverted.
 <br><br>
 A humiliation fetish will soften the 'bitchy' flaw into 'cutting' and the 'shamefast' flaw into 'tease,' or remove these flaws if a quirk is already present. The fetish will increase XY attraction. Humiliation fetishists enjoy nudity, and like revealing clothing at a lower devotion than other slaves. DJs can become humiliation fetishists naturally.
 
 
 <<case "Masochists">>
-''Masochists'' fetishize abuse and pain aimed at themselves. 
+''Masochists'' fetishize abuse and pain aimed at themselves.
 <br><br>
-The fetish can be created by appropriate smart clit piercing settings, serving the Head Girl, relationships, uncomfortable clothing, being funny, and being a strugglefuck queen. 
+The fetish can be created by appropriate smart clit piercing settings, serving the Head Girl, relationships, uncomfortable clothing, being funny, and being a strugglefuck queen.
 <br><br>
-It can be advanced by appropriate smart clit piercing settings, high [[devotion|Encyclopedia][$encyclopedia = "Devotion"]] and [[trust|Encyclopedia][$encyclopedia = "Trust"]], being funny, and being a strugglefuck queen. 
+It can be advanced by appropriate smart clit piercing settings, high [[devotion|Encyclopedia][$encyclopedia = "Devotion"]] and [[trust|Encyclopedia][$encyclopedia = "Trust"]], being funny, and being a strugglefuck queen.
 <br><br>
 Masochism will soften the liberated flaw into advocate or remove this flaw if a quirk is already present. Masochists can be abused without causing deleterious flaws.
 
 
 <<case "Pregnancy Fetishists">>
-''Pregnancy Fetishists'' like being impregnated, sex with pregnant slaves, and getting others pregnant. (It is not necessary that the slave actually be able to do any of these things; such is life.) 
+''Pregnancy Fetishists'' like being impregnated, sex with pregnant slaves, and getting others pregnant. (It is not necessary that the slave actually be able to do any of these things; such is life.)
 <br><br>
-The fetish can be created by appropriate smart clit piercing settings, serving the Head Girl, relationships, having sex while pregnant, adoring men, being a tease, and being romantic. 
+The fetish can be created by appropriate smart clit piercing settings, serving the Head Girl, relationships, having sex while pregnant, adoring men, being a tease, and being romantic.
 <br><br>
-It can be advanced by appropriate smart clit piercing settings, high [[devotion|Encyclopedia][$encyclopedia = "Devotion"]] and [[trust|Encyclopedia][$encyclopedia = "Trust"]], adoring men, being a tease, and being romantic. 
+It can be advanced by appropriate smart clit piercing settings, high [[devotion|Encyclopedia][$encyclopedia = "Devotion"]] and [[trust|Encyclopedia][$encyclopedia = "Trust"]], adoring men, being a tease, and being romantic.
 <br><br>
 The fetish will increase XY attraction. Pregnancy fetishists greatly enjoy all kinds of impregnation, and love or hate fertility surgeries depending on what's being changed.
 
 
 <<case "Sadists">>
-''Sadists'' fetishize abuse and pain aimed at others. 
+''Sadists'' fetishize abuse and pain aimed at others.
 <br><br>
-The fetish can be created by appropriate smart clit piercing settings, serving the Head Girl, and relationships. 
+The fetish can be created by appropriate smart clit piercing settings, serving the Head Girl, and relationships.
 <br><br>
-It can be advanced by appropriate smart clit piercing settings, and high [[devotion|Encyclopedia][$encyclopedia = "Devotion"]] and [[trust|Encyclopedia][$encyclopedia = "Trust"]]. 
+It can be advanced by appropriate smart clit piercing settings, and high [[devotion|Encyclopedia][$encyclopedia = "Devotion"]] and [[trust|Encyclopedia][$encyclopedia = "Trust"]].
 <br><br>
 Sadists do not mind a lack of hormonal feminization. The fetish will increase XX attraction. Wardenesses do better when sadistic, and can become sadists naturally.
 
 
 <<case "Submissives">>
-''Submissives'' fetishize submission. 
+''Submissives'' fetishize submission.
 <br><br>
-The fetish can be created by appropriate smart clit piercing settings, serving the Head Girl, relationships, unfocused fucktoy service, crawling due to damaged tendons, being caring, being an advocate, and being insecure. 
+The fetish can be created by appropriate smart clit piercing settings, serving the Head Girl, relationships, unfocused fucktoy service, crawling due to damaged tendons, being caring, being an advocate, and being insecure.
 <br><br>
-It can be advanced by appropriate smart clit piercing settings, high [[devotion|Encyclopedia][$encyclopedia = "Devotion"]] and [[trust|Encyclopedia][$encyclopedia = "Trust"]], being caring, being an advocate, and being insecure. 
+It can be advanced by appropriate smart clit piercing settings, high [[devotion|Encyclopedia][$encyclopedia = "Devotion"]] and [[trust|Encyclopedia][$encyclopedia = "Trust"]], being caring, being an advocate, and being insecure.
 <br><br>
 Submissiveness will soften the 'arrogant' flaw into 'confident,' the 'apathetic' flaw into 'caring,' and the 'idealistic' flaw into 'romantic,' or remove these flaws if a quirk is already present. The fetish will increase XY attraction. It improves performance at the servant assignment and working in the Servants' Quarters. Attendants do better when submissive, and can become submissives naturally.
 /**********
@@ -1130,7 +1130,7 @@ SLAVE BEHAVIORAL QUIRKS
 
 
 <<case "Quirks">>
-''Quirks'' are positive slave qualities. They increase slaves' value and performance at sexual assignments, and each quirk also has other, differing effects. Each quirk is associated with a corresponding [[flaw|Encyclopedia][$encyclopedia = "Flaws"]], and slave can have two quirks (a sexual quirk and a behavioral quirk), just like flaws. Quirks may appear randomly, but the most reliable way to give slaves quirks is to soften flaws. 
+''Quirks'' are positive slave qualities. They increase slaves' value and performance at sexual assignments, and each quirk also has other, differing effects. Each quirk is associated with a corresponding [[flaw|Encyclopedia][$encyclopedia = "Flaws"]], and slave can have two quirks (a sexual quirk and a behavioral quirk), just like flaws. Quirks may appear randomly, but the most reliable way to give slaves quirks is to soften flaws.
 <br><br>
 The [[head girl|Encyclopedia][$encyclopedia = "Head Girl"]] can be ordered to soften flaws, and the player character can soften flaws with personal attention. Flaws can also be naturally softened into quirks by fetishes.
 
@@ -1237,7 +1237,7 @@ SLAVE BEHAVIORAL FLAWS
 
 
 <<case "Flaws">>
-''Flaws'' are negative slave qualities. They decrease slaves' value and performance at sexual assignments, and each flaw also has other, differing effects. Each flaw is associated with a corresponding [[quirk|Encyclopedia][$encyclopedia = "Quirks"]], and slave can have two flaws (a sexual flaw and a behavioral flaw), just like quirks. New slaves will often have flaws, and tough experiences can also cause them to appear. 
+''Flaws'' are negative slave qualities. They decrease slaves' value and performance at sexual assignments, and each flaw also has other, differing effects. Each flaw is associated with a corresponding [[quirk|Encyclopedia][$encyclopedia = "Quirks"]], and slave can have two flaws (a sexual flaw and a behavioral flaw), just like quirks. New slaves will often have flaws, and tough experiences can also cause them to appear.
 <br><br>
 The [[head girl|Encyclopedia][$encyclopedia = "Head Girl"]] can be ordered to soften or remove flaws, and the player character can soften or remove flaws with personal attention. Flaws can also be naturally softened or removed by fetishes, and can resolve on their own if a slave is happy.
 
@@ -1344,63 +1344,63 @@ SLAVE PARAPHILIAS
 
 
 <<case "Abusiveness">>
-''Abusiveness'' is a paraphilia, an intense form of sexual [[flaw|Encyclopedia][$encyclopedia = "Flaws"]] that cannot be softened. 
+''Abusiveness'' is a paraphilia, an intense form of sexual [[flaw|Encyclopedia][$encyclopedia = "Flaws"]] that cannot be softened.
 <br><br>
 [[Doms|Encyclopedia][$encyclopedia = "Doms"]] serving as [[head girl|Encyclopedia][$encyclopedia = "Head Girl"]] may become abusive if allowed to punish slaves by molesting them. They can be satisfied by work as the head girl or [[wardeness|Encyclopedia][$encyclopedia = "Wardeness"]]. Abusive head girls are more effective when allowed or encouraged to punish slaves severely.
 
 
 
 <<case "Anal Addicts">>
-''Anal addiction'' is a paraphilia, an intense form of sexual [[flaw|Encyclopedia][$encyclopedia = "Flaws"]] that cannot be softened. 
+''Anal addiction'' is a paraphilia, an intense form of sexual [[flaw|Encyclopedia][$encyclopedia = "Flaws"]] that cannot be softened.
 <br><br>
 [[Buttsluts|Encyclopedia][$encyclopedia = "Buttsluts"]] whose only available hole for receptive intercourse is the anus may become anal addicts. They can be satisfied by huge buttplugs, the sodomizing drug applicator kitchen upgrade, or by work that involves frequent anal sex. Anal addicts perform well on assignments involving anal sex.
 
 
 
 <<case "Attention Whores">>
-''Attention Whores'' suffer from a paraphilia, an intense form of sexual [[flaw|Encyclopedia][$encyclopedia = "Flaws"]] that cannot be softened. 
+''Attention Whores'' suffer from a paraphilia, an intense form of sexual [[flaw|Encyclopedia][$encyclopedia = "Flaws"]] that cannot be softened.
 <br><br>
 [[Humiliation Fetishists|Encyclopedia][$encyclopedia = "Humiliation Fetishists"]] on public sexual assignments may become Attention Whores. They can be satisfied by total nudity or by work that involves frequent public sex. Attention whores do very well at [[public service|Encyclopedia][$encyclopedia = "Public Service"]].
 
 
 
 <<case "Breast Obsession">>
-''Pectomania,'' also known as breast growth obsession, is a paraphilia, an intense form of sexual [[flaw|Encyclopedia][$encyclopedia = "Flaws"]] that cannot be softened. 
+''Pectomania,'' also known as breast growth obsession, is a paraphilia, an intense form of sexual [[flaw|Encyclopedia][$encyclopedia = "Flaws"]] that cannot be softened.
 <br><br>
 [[Boob fetishists|Encyclopedia][$encyclopedia = "Boob Fetishists"]] may become obsessed with breast expansion as their breasts grow. They can be satisfied by breast injections or work as a cow, and will temporarily accept getting neither if their health is low.
 
 
 
 <<case "Breeding Obsession">>
-''Breeding obsession'' is a paraphilia, an intense form of sexual [[flaw|Encyclopedia][$encyclopedia = "Flaws"]] that cannot be softened. 
+''Breeding obsession'' is a paraphilia, an intense form of sexual [[flaw|Encyclopedia][$encyclopedia = "Flaws"]] that cannot be softened.
 <br><br>
 [[Pregnancy Fetishists|Encyclopedia][$encyclopedia = "Pregnancy Fetishists"]] who are repeatedly bred or are serving in an industrialized [[Dairy|Encyclopedia][$encyclopedia = "Dairy"]] may develop breeding obsessions. They can be satisfied by pregnancy, or constant vaginal sex with their owner. Slaves with breeding obsessions will not suffer negative mental effects from serving in an industrialized dairy that keeps them pregnant.
 
 
 
 <<case "Cum Addicts">>
-''Cum addiction'' is a paraphilia, an intense form of sexual [[flaw|Encyclopedia][$encyclopedia = "Flaws"]] that cannot be softened. 
+''Cum addiction'' is a paraphilia, an intense form of sexual [[flaw|Encyclopedia][$encyclopedia = "Flaws"]] that cannot be softened.
 <br><br>
 [[Cumsluts|Encyclopedia][$encyclopedia = "Cumsluts"]] who eat out of phallic feeders or are fed cum may become cum addicts. They can be satisfied by cum diets, the phallic feeder kitchen upgrade, or by sex work that involves frequent fellatio. Cum addicts are perform well on assignments involving oral sex.
 
 
 
 <<case "Maliciousness">>
-Sexual ''maliciousness'' is a paraphilia, an intense form of sexual [[flaw|Encyclopedia][$encyclopedia = "Flaws"]] that cannot be softened. 
+Sexual ''maliciousness'' is a paraphilia, an intense form of sexual [[flaw|Encyclopedia][$encyclopedia = "Flaws"]] that cannot be softened.
 <br><br>
 [[Sadists|Encyclopedia][$encyclopedia = "Sadists"]] serving as [[wardeness|Encyclopedia][$encyclopedia = "Wardeness"]] may become sexually malicious. They can be satisfied by work as the [[head girl|Encyclopedia][$encyclopedia = "Head Girl"]] or wardeness. Sexually malicious wardenesses break slaves very quickly but damage their sex drives doing so.
 
 
 
 <<case "Self Hatred">>
-Sexual ''self hatred'' is a paraphilia, an intense form of sexual [[flaw|Encyclopedia][$encyclopedia = "Flaws"]] that cannot be softened. 
+Sexual ''self hatred'' is a paraphilia, an intense form of sexual [[flaw|Encyclopedia][$encyclopedia = "Flaws"]] that cannot be softened.
 <br><br>
-Self hating slaves can be satisfied by work in an industrialized dairy, in an arcade, or in a glory hole, and will not suffer negative mental effects for doing so.  [[Masochists|Encyclopedia][$encyclopedia = "Masochists"]] serving in those places have a chance to become self hating, and even extremely low [[trust|Encyclopedia][$encyclopedia = "trust"]] may cause the paraphilia. 
+Self hating slaves can be satisfied by work in an industrialized dairy, in an arcade, or in a glory hole, and will not suffer negative mental effects for doing so.  [[Masochists|Encyclopedia][$encyclopedia = "Masochists"]] serving in those places have a chance to become self hating, and even extremely low [[trust|Encyclopedia][$encyclopedia = "trust"]] may cause the paraphilia.
 
 
 
 <<case "Self Neglect">>
-Sexual ''self neglect'' is a paraphilia, an intense form of sexual [[flaw|Encyclopedia][$encyclopedia = "Flaws"]] that cannot be softened. 
+Sexual ''self neglect'' is a paraphilia, an intense form of sexual [[flaw|Encyclopedia][$encyclopedia = "Flaws"]] that cannot be softened.
 <br><br>
 [[Submissives|Encyclopedia][$encyclopedia = "Submissives"]] serving on public sexual assignment may become sexually self neglectful. Such slaves can be satisfied by most kinds of sex work. Slaves willing to neglect their own pleasure do very well at [[whoring|Encyclopedia][$encyclopedia = "Whoring"]].
 
@@ -1495,7 +1495,7 @@ I would say that it is a pleasure to serve, but you are no doubt intelligent eno
 <<case "The Wardrobe">>
 // The Wardrobe is a dressing area for all of your slaves, and a place where unused outfits are stored.  Tailoring is available to make sure outfits fit each slave to your specifications.  Here, players make choices about how slaves will appear in their dress, or lack of it.  Choose outfits wisely to correspond to the culture that your citizens approve of, and your reputation will increase more quickly.  Items that stretch or constrict such as plugs or corsets will eventually have a lasting impact on slaves anatomy.//
 <br><br>
-The wardrobe has two functions: First, individual slaves can be selected and then dressed in the wardrobe with anything from the basic clothing or shoes to the more exotic plugs and corsets.  Secondly, players can access the wardrobe directly from the penthouse, and unlock collections of new outfits with ¤. 
+The wardrobe has two functions: First, individual slaves can be selected and then dressed in the wardrobe with anything from the basic clothing or shoes to the more exotic plugs and corsets.  Secondly, players can access the wardrobe directly from the penthouse, and unlock collections of new outfits with ¤.
 
 
 <<case "The Auto Salon">>
@@ -2617,7 +2617,7 @@ __I do not give credit without explicit permission to do so.__ If you have contr
 <br>''Faraen'' for a full vector art variant.
 <br>''anon'' for more hair vectors for the external art.
 <br>''Vas'' for massive JS work.
-<br>''deepmurk'' for a massive expansion in conjuction with Nox to the original embedded vector art. Also more hairs and clothes.
+<br>''deepmurk'' for a massive expansion in conjunction with Nox to the original embedded vector art. Also more hairs and clothes.
 <br>''Bane70'' optimized huge swaths of code with notable professionalism.
 <br>''Circle Tritagonist'' provided several new collars and outfits.
 <br>''Qotsafan'' submitted bugfixes.
@@ -2757,7 +2757,7 @@ The normal boy will undergo puberty and become potent between the ages of 12 and
 A specialized group of slavers focusing entirely on capturing girls that have not had their first period. Disliked in many arcologies, they only appear before those they feel they can trust as being sympathetic to their views.
 
 <<case "Precocious Puberty">>
-While most girls will grow fertile around $fertilityAge and most boys will become virile around $potencyAge, the mass prevalence of male and female hormones in the Free Cities can have extreme effects on a developing slave's puberty. Hormone injections and hormonal based drugs can lead to early puberty or even delay it indefinatly, something some trainers use to their advantage in keeping their male slaves soft and feminine.
+While most girls will grow fertile around $fertilityAge and most boys will become virile around $potencyAge, the mass prevalence of male and female hormones in the Free Cities can have extreme effects on a developing slave's puberty. Hormone injections and hormonal based drugs can lead to early puberty or even delay it indefinitely, something some trainers use to their advantage in keeping their male slaves soft and feminine.
 
 <<case "Belly Implants">>
 A fillable implant inserted into a slave's uterus following tube tying to prevent ovulation. Can safely be filled with 200cc each week to simulate a growing pregnancy. However, if kept at a full term size (or higher), the slave's body may adjust to the implant causing issues upon removal. Also to note, a slave that lacks a uterus to hold the implant can still be implanted; invasive surgery will be preformed to create a pocket to safely hold the implant without damage to the slave's internals.
@@ -2784,7 +2784,7 @@ If you are looking for a slave qualified for a specific role, look no further th
 Not all drugs are applied directly to your slavegirl. In this case, gestation accelerants and deccelerants are passed through the mother into her unborn children to control the rate of fetal growth. While slightly unhealthy for the mother, gestation slowing drugs are relatively harmless, though an unwilling mother may become more distraut when she realizes her pregnancy will last even longer. Due to the extended duration of the pregnancy, the mother's body may become accustomed to being so round, leading towards a sagging middle once birth occurs. On the other hand, gestation hastening drugs are extremely dangerous to the mother. It is strongly recommended to keep her under the observation and care of an experienced doctor or nurse. Failure to do so will cause her body to struggle to keep up with the rate of growth of her children, harming her physical and mental health, as well as potentially bursting her uterus later in her pregnancy. Labor suppresants are exactly that; they prevent the mother from entering labor, thus allowing the child to grow longer than a normal pregnancy. Excessive use may lead to health complications, especially during childbirth, though going even further may result in the slave's body suddenly entering labor and rapidly birthing her children, often without giving the slave time to prepare or even get undressed.
 
 <<case "The Incubation Facility">>
-A facility used to rapdily age children kept within its aging tanks using a combination of growth hormones, accelerants, stem cells and other chemicals; slaves that come out of it are rarely healthy. Requires a massive amount of electricity to run, though once powered contains a battery backup to last at least a day. Can be upgraded to combat malnutrition and thinness caused by a body growing far beyound any natural rate. Hormones can also be added to encourage puberty and even sex organ development. Growth control systems include cost saving overides, though enabling them may result in bloated, sex crazed slaves barely capable to moving.
+A facility used to rapidily age children kept within its aging tanks using a combination of growth hormones, accelerants, stem cells and other chemicals; slaves that come out of it are rarely healthy. Requires a massive amount of electricity to run, though once powered contains a battery backup to last at least a day. Can be upgraded to combat malnutrition and thinness caused by a body growing far beyond any natural rate. Hormones can also be added to encourage puberty and even sex organ development. Growth control systems include cost saving overrides, though enabling them may result in bloated, sex crazed slaves barely capable to moving.
 
 <<case "Organic Mesh Breast Implant">>
 A specialized organic implant produced from the dispensary designed to be implanted into to a slave's natural breast tissue to maintain a slave's breast shape no matter how big her breasts may grow. An expensive and risky procudure  proportional to the size of the breasts the mesh will be implanted into. Should health become an issue, the slave in surgery may undergo an emergency mastectomy. Furthermore, once implanted, the mesh can not be safely removed from the breast. However, total breast removal will rid the slave of the implant; consider strongly when and if you want to implant the mesh before doing so. They are exceedingly difficult to identify once bound to the breast tissue, and combined with their natural shape, are often overlooked.
@@ -2922,7 +2922,7 @@ Error: bad title.
 | [[Schoolteacher|Encyclopedia][$encyclopedia = "Schoolteacher"]]
 | [[Stewardess|Encyclopedia][$encyclopedia = "Stewardess"]]
 | [[Wardeness|Encyclopedia][$encyclopedia = "Wardeness"]]
-	
+
 <br><br>
 //Assignments//<br>
 [[Attending Classes|Encyclopedia][$encyclopedia = "Attending Classes"]]
@@ -2964,7 +2964,7 @@ Error: bad title.
 | [[Waist|Encyclopedia][$encyclopedia = "Waist"]]
 | [[Weight|Encyclopedia][$encyclopedia = "Weight"]]
 <br><br>
-//Hormones:// 
+//Hormones://
 [[XX|Encyclopedia][$encyclopedia = "Hormones (XX)"]]
 | [[XY|Encyclopedia][$encyclopedia = "Hormones (XY)"]]
 <</if>>
@@ -3051,7 +3051,7 @@ Error: bad title.
 <br><br>
 //Sexual [[Flaws|Encyclopedia][$encyclopedia = "Flaws"]]://
 <br>
-//Standard flaws:// 
+//Standard flaws://
 [[Apathetic|Encyclopedia][$encyclopedia = "Apathetic"]]
 | [[Crude|Encyclopedia][$encyclopedia = "Crude"]]
 | [[Hates anal|Encyclopedia][$encyclopedia = "Hates anal"]]
@@ -3063,7 +3063,7 @@ Error: bad title.
 | [[Shamefast|Encyclopedia][$encyclopedia = "Shamefast"]]
 
  <br>
-//Paraphilias:// 
+//Paraphilias://
 [[Abusiveness|Encyclopedia][$encyclopedia = "Abusiveness"]]
 | [[Anal Addicts|Encyclopedia][$encyclopedia = "Anal Addicts"]]
 | [[Attention Whores|Encyclopedia][$encyclopedia = "Attention Whores"]]
@@ -3101,7 +3101,7 @@ Error: bad title.
  | [[The Remote Surgery|Encyclopedia][$encyclopedia = "The Remote Surgery"]]
  | [[The Pharmaceutical Fab.|Encyclopedia][$encyclopedia = "The Pharmaceutical Fab."]]
 <br>
-Behind the Arcology: 
+Behind the Arcology:
 [[Security Drones|Encyclopedia][$encyclopedia = "Security Drones"]]
  | [[Water Filtration|Encyclopedia][$encyclopedia = "Water Filtration"]]
  | [[Slave Nutrition|Encyclopedia][$encyclopedia = "Slave Nutrition"]]
@@ -3172,7 +3172,7 @@ Behind the Arcology:
 <br><br>
 //Lore://
 <br>
-The Free Cities today: 
+The Free Cities today:
 [[Money|Encyclopedia][$encyclopedia = "Money"]]
  | [[Disease in the Free Cities|Encyclopedia][$encyclopedia = "Disease in the Free Cities"]]
  | [[Free Cities Justice|Encyclopedia][$encyclopedia = "Free Cities Justice"]]
@@ -3182,9 +3182,9 @@ The Free Cities today:
  | [[The Ejaculate Market|Encyclopedia][$encyclopedia = "The Ejaculate Market"]]
  | [[Gingering|Encyclopedia][$encyclopedia = "Gingering"]]
  | [[Dyes|Encyclopedia][$encyclopedia = "Dyes"]]
- 
+
 <br>
-Free Cities culture tomorrow: 
+Free Cities culture tomorrow:
 [[The New Rome|Encyclopedia][$encyclopedia = "The New Rome"]]
  | [[Naked, Barefoot, and Pregnant|Encyclopedia][$encyclopedia = "Naked, Barefoot, and Pregnant"]]
  | [[The Top|Encyclopedia][$encyclopedia = "The Top"]]
@@ -3195,7 +3195,7 @@ Free Cities culture tomorrow:
  | [[Slavery and the Physical Ideal|Encyclopedia][$encyclopedia = "Slavery and the Physical Ideal"]]
  | [[Faith in the Free Cities|Encyclopedia][$encyclopedia = "Faith in the Free Cities"]]
 <br>
-Interviews: 
+Interviews:
 [[Slave Whore, Arcology K-2|Encyclopedia][$encyclopedia = "Slave Whore, Arcology K-2"]]
   | [[Slave Acolyte, Arcology V-7|Encyclopedia][$encyclopedia = "Slave Acolyte, Arcology V-7"]]
 <<if $seeExtreme != 0>>
diff --git a/src/js/fresult.tw b/src/js/fresult.tw
index 4eeb8a9e3c4cee5d054e4935798a991e99c380f6..861a46cca1c87be0491256c77e88ee1212a79438 100644
--- a/src/js/fresult.tw
+++ b/src/js/fresult.tw
@@ -2,7 +2,7 @@
 
 // this is a port of the FResult widget
 // it has been broken up into several functions, because it grew too long
-// it has been wrapped in a closure so as not to polute the global namespace
+// it has been wrapped in a closure so as not to pollute the global namespace
 // and so that nested functions are only evaluated once
 
 window.FResult = (function() {
diff --git a/src/pregmod/SecForceEX/SpecialForceUpgradeDec.tw b/src/pregmod/SecForceEX/SpecialForceUpgradeDec.tw
index b44f91ca68354a1f8ab6612b21bdab9df836c933..985fffd4110916fad44cc0352535b2332e78ef75 100644
--- a/src/pregmod/SecForceEX/SpecialForceUpgradeDec.tw
+++ b/src/pregmod/SecForceEX/SpecialForceUpgradeDec.tw
@@ -74,7 +74,7 @@
 	<<if $SupportFacilityUpgrade == 3>>
 		a quantum teleportation system provides a massive
 	<<elseif $SupportFacilityUpgrade == 2>>
-		a rapid tube system provides a noticable
+		a rapid tube system provides a noticeable
 	<<elseif $SupportFacilityUpgrade == 1>>
 		specialized pathways provides a minor
 	<<else>>
diff --git a/src/uncategorized/slaveInteract.tw b/src/uncategorized/slaveInteract.tw
index 6fa4f11c1f256d18f97672b14e380d430503993a..2bd3909ad6467e84c027ffef71d8364605aa6170 100644
--- a/src/uncategorized/slaveInteract.tw
+++ b/src/uncategorized/slaveInteract.tw
@@ -211,7 +211,7 @@
 			<<set $relation = 0>>
 			<<for $i = 0; $i < _SL; $i++>>
 				<<if ($activeSlave.ID == $slaves[$i].father || $activeSlave.ID == $slaves[$i].mother) && !isSlaveAvailable($slaves[$i])>>
-					<<set $relation++>>	
+					<<set $relation++>>
 				<</if>>
 			<</for>>
 			<<if $relation == $activeSlave.daughters>>
@@ -251,7 +251,7 @@
 					| <<link "Fuck her with her sister">><<replace "#miniscene">><<set $partner = "sister">><<include "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
 				<<else>>
 					| <<link "Fuck her with one of her sisters">><<replace "#miniscene">><<set $partner = "sister">><<include "FRelation">><br>&nbsp;&nbsp;&nbsp;&nbsp;<</replace>><</link>>
-				<</if>>	
+				<</if>>
 			<</if>>
 		<</if>>
 		/*
@@ -529,7 +529,7 @@
 	<</if>>/* CLOSES FUCKDOLL CHECK */
 
 	<<set _numFacilities = $brothel+$club+$dairy+$servantsQuarters+$masterSuite+$spa+$clinic+$schoolroom+$cellblock+$arcade+$HGSuite>>
-	
+
 	<<if _numFacilities > 0>>
 
 	<br>Transfer to:
@@ -596,7 +596,7 @@
 		<<set _dairySeed = $bioreactorsXY+$bioreactorsXX+$bioreactorsHerm+$bioreactorsBarren>>
 		<<if $dairy <= $dairySlaves+_dairySeed>>
 			Dairy
-		<<elseif((($activeSlave.indentureRestrictions > 0) && ($dairyRestraintsSetting > 1)) || (($activeSlave.indentureRestrictions > 1) && ($dairyRestraintsSetting > 0)) || ($activeSlave.breedingMark == 1 && $dairyRestriantsSettings > 0) || (($dairyPregSetting > 0) && (($activeSlave.bellyImplant != -1) || ($activeSlave.broodmother > 0))))>>
+		<<elseif((($activeSlave.indentureRestrictions > 0) && ($dairyRestraintsSetting > 1)) || (($activeSlave.indentureRestrictions > 1) && ($dairyRestraintsSetting > 0)) || ($activeSlave.breedingMark == 1 && $dairyRestraintsSetting > 0) || (($dairyPregSetting > 0) && (($activeSlave.bellyImplant != -1) || ($activeSlave.broodmother > 0))))>>
 			Dairy
 		<<elseif (($activeSlave.lactation > 0) || ($activeSlave.balls > 0)) || (($dairyFeedersUpgrade == 1) && ($dairyFeedersSetting > 0) && ($dairySlimMaintainUpgrade == 0))>>
 			 [[Dairy|Assign][$assignTo = "Dairy", $i = -1]] /* $i = -1 tells Assign to use $activeSlave as-is */
@@ -622,7 +622,7 @@
 	<br>Clothes: ''<span id="clothes">$activeSlave.clothes</span>.''
 	| <<link "Let her choose">><<set $activeSlave.clothes = "choosing her own clothes",$activeSlave.choosesOwnClothes = 1>><<replace "#clothes">>$activeSlave.clothes<</replace>><</link>>
 
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;//Nice:// 
+	<br>&nbsp;&nbsp;&nbsp;&nbsp;//Nice://
 	 <<link "Bangles">><<set $activeSlave.clothes = "slutty jewelry",$activeSlave.choosesOwnClothes = 0>><<replace "#clothes">>$activeSlave.clothes<</replace>><</link>>
 	| <<link "Bodysuit">><<set $activeSlave.clothes = "a comfortable bodysuit",$activeSlave.choosesOwnClothes = 0>><<replace "#clothes">>$activeSlave.clothes<</replace>><</link>>
 	| <<link "Cheerleader outfit">><<set $activeSlave.clothes = "a cheerleader outfit",$activeSlave.choosesOwnClothes = 0>><<replace "#clothes">><<print $activeSlave.clothes>><</replace>><</link>>
@@ -692,7 +692,7 @@
 		| //FS// <<link "Western clothing">><<set $activeSlave.clothes = "Western clothing",$activeSlave.choosesOwnClothes = 0>><<replace "#clothes">>$activeSlave.clothes<</replace>><</link>>
 	<</if>>
 
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;//Harsh:// 
+	<br>&nbsp;&nbsp;&nbsp;&nbsp;//Harsh://
 	 <<link "Go naked">><<set $activeSlave.clothes = "no clothing", $activeSlave.choosesOwnClothes = 0>><<replace "#clothes">>$activeSlave.clothes<</replace>><</link>>
 	<<if isItemAccessible("chains")>>
 		| //FS// <<link "Chains">><<set $activeSlave.clothes = "chains",$activeSlave.choosesOwnClothes = 0>><<replace "#clothes">>$activeSlave.clothes<</replace>><</link>>
@@ -705,7 +705,7 @@
 
 	<br>Collar: ''<span id="collar">$activeSlave.collar</span>.''
 	<<link "None">><<set $activeSlave.collar = "none">><<replace "#collar">>$activeSlave.collar<</replace>><</link>>
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;//Nice:// 
+	<br>&nbsp;&nbsp;&nbsp;&nbsp;//Nice://
 	<<link "Stylish leather">><<set $activeSlave.collar = "stylish leather">><<replace "#collar">>$activeSlave.collar<</replace>><</link>>
 	| <<link "Satin choker">><<set $activeSlave.collar = "satin choker">><<replace "#collar">>$activeSlave.collar<</replace>><</link>>
 	| <<link "Silken ribbon">><<set $activeSlave.collar = "silk ribbon">><<replace "#collar">>$activeSlave.collar<</replace>><</link>>
@@ -721,7 +721,7 @@
 	<<if isItemAccessible("ancient Egyptian")>>
 		| //FS// <<link "Ancient Egyptian">><<set $activeSlave.collar = "ancient Egyptian">><<replace "#collar">>$activeSlave.collar<</replace>><</link>>
 	<</if>>
-	<br>&nbsp;&nbsp;&nbsp;&nbsp;//Harsh:// 
+	<br>&nbsp;&nbsp;&nbsp;&nbsp;//Harsh://
 	<<link "Tight steel">><<set $activeSlave.collar = "tight steel">><<replace "#collar">>$activeSlave.collar<</replace>><</link>>
 	<<if ($seeAge != 0)>>
 		| <<link "Cruel retirement counter">><<set $activeSlave.collar = "cruel retirement counter">><<replace "#collar">>$activeSlave.collar<</replace>><</link>>
@@ -1039,8 +1039,8 @@ Aphrodisiacs: <span id="aphrodisiacs"><strong><<if $activeSlave.aphrodisiacs > 1
 			<<SetBellySize $activeSlave>>
 		<</if>>
 	<<elseif $activeSlave.broodmotherOnHold == 1>>
-		//Her pregnancy implant is turned off<<if $activeSlave.broodmotherCountDown > 0>>; she is expected to be completely emptied of her remaining brood in $activeSlave.broodmotherCountDown week<<if $activeSlave.broodmotherCountDown > 1>>s<</if>><<else>>.<</if>>// 
-		[[Turn on implant|Slave Interact][$activeSlave.broodmotherOnHold = 0, $activeSlave.broodmotherCountDown = 0]] 
+		//Her pregnancy implant is turned off<<if $activeSlave.broodmotherCountDown > 0>>; she is expected to be completely emptied of her remaining brood in $activeSlave.broodmotherCountDown week<<if $activeSlave.broodmotherCountDown > 1>>s<</if>><<else>>.<</if>>//
+		[[Turn on implant|Slave Interact][$activeSlave.broodmotherOnHold = 0, $activeSlave.broodmotherCountDown = 0]]
 	<<elseif $activeSlave.preg >= -1>>
 	Contraception: <span id="fertility"><strong><<if $activeSlave.preg == -1>><<print "using contraceptives">><<elseif $activeSlave.pregWeek < 0>><<print "postpartum">><<elseif $activeSlave.preg == 0>><<print "fertile">><<elseif $activeSlave.preg < 4>><<print "may be pregnant">><<else>><<print $activeSlave.preg>><<print " weeks pregnant">><</if>></strong></span>.
 		<<if ($activeSlave.preg == 0)>>
@@ -1060,10 +1060,10 @@ Aphrodisiacs: <span id="aphrodisiacs"><strong><<if $activeSlave.aphrodisiacs > 1
 			| [[Give her a cesarean section|csec]]
 		<<elseif ($activeSlave.broodmother > 0)>>
 			<<if $activeSlave.broodmotherOnHold != 1>>
-				[[Turn off implant|Slave Interact][$activeSlave.broodmotherOnHold = 1, $activeSlave.broodmotherCountDown = 38-WombMinPreg($activeSlave)]] 
+				[[Turn off implant|Slave Interact][$activeSlave.broodmotherOnHold = 1, $activeSlave.broodmotherCountDown = 38-WombMinPreg($activeSlave)]]
 			<</if>>
 			<<if ($activeSlave.preg > 37)>>
-				| [[Induce mass childbirth|BirthStorm]]  
+				| [[Induce mass childbirth|BirthStorm]]
 			<</if>>
 		<<elseif ($activeSlave.preg > 35)>>
 			[[Give her a cesarean section|csec]]
@@ -1085,8 +1085,8 @@ Aphrodisiacs: <span id="aphrodisiacs"><strong><<if $activeSlave.aphrodisiacs > 1
 			<<SetBellySize $activeSlave>>
 		<</if>>
 	<<elseif $activeSlave.broodmotherOnHold == 1>>
-		//Its pregnancy implant is turned off; it expected to be completely emptied of its remaining brood in $activeSlave.broodmotherCountDown week<<if $activeSlave.broodmotherCountDown > 1>>s<</if>>// 
-		[[Turn on implant|Slave Interact][$activeSlave.broodmotherOnHold = 0, $activeSlave.broodmotherCountDown = 0]] 
+		//Its pregnancy implant is turned off; it expected to be completely emptied of its remaining brood in $activeSlave.broodmotherCountDown week<<if $activeSlave.broodmotherCountDown > 1>>s<</if>>//
+		[[Turn on implant|Slave Interact][$activeSlave.broodmotherOnHold = 0, $activeSlave.broodmotherCountDown = 0]]
 	<<elseif ($activeSlave.preg >= -1)>>
 		__Contraception__: <span id="fertility"><strong><<if $activeSlave.preg == -1>><<print "using contraceptives">><<elseif $activeSlave.pregWeek < 0>><<print "postpartum">><<elseif $activeSlave.preg == 0>><<print "fertile">><<elseif $activeSlave.preg < 4>><<print "may be pregnant">><<else>><<print $activeSlave.preg>><<print " weeks pregnant">><</if>></strong></span>.
 		<<if ($activeSlave.preg == 0)>>
@@ -1104,10 +1104,10 @@ Aphrodisiacs: <span id="aphrodisiacs"><strong><<if $activeSlave.aphrodisiacs > 1
 			| [[Give it a cesarean section|csec]]
 		<<elseif ($activeSlave.broodmother > 0)>>
 			<<if $activeSlave.broodmotherOnHold != 1>>
-				[[Turn off implant|Slave Interact][$activeSlave.broodmotherOnHold = 1, $activeSlave.broodmotherCountDown = 38-WombMinPreg($activeSlave)]] 
+				[[Turn off implant|Slave Interact][$activeSlave.broodmotherOnHold = 1, $activeSlave.broodmotherCountDown = 38-WombMinPreg($activeSlave)]]
 			<</if>>
 			<<if ($activeSlave.preg > 37)>>
-				| [[Induce mass childbirth|BirthStorm]]  
+				| [[Induce mass childbirth|BirthStorm]]
 			<</if>>
 		<<elseif ($activeSlave.preg > 35)>>
 			[[Give it a cesarean section|csec]]
@@ -1368,7 +1368,7 @@ Hormones: <strong><span id="hormones">
 	<<if $activeSlave.accent > 0 && $activeSlave.accent < 4>>| <<link "Accent elimination">><<set $activeSlave.speechRules = "accent elimination">><<replace "#speechRules">>$activeSlave.speechRules<</replace>><</link>>
 	<<elseif $activeSlave.accent > 3>>| <<link "Language lessons">><<set $activeSlave.speechRules = "language lessons">><<replace "#speechRules">>$activeSlave.speechRules<</replace>><</link>>
 	<</if>>
-<</if>> 
+<</if>>
 
 <br>
 Relationship rules: ''<span id="relationshipRules">$activeSlave.relationshipRules</span>.''
@@ -1382,12 +1382,12 @@ Relationship rules: ''<span id="relationshipRules">$activeSlave.relationshipRule
 		The media hub is not releasing highlights of her sex life. [[Release|Slave Interact][$activeSlave.pornFameSpending = 0]]
 	<<else>>
 		<<if $activeSlave.prestige < 3>>
-			The media hub is releasing 
-			<<if $activeSlave.pornFameSpending  < 500>> 
-				minimal 
-			<</if>> highlights of her sex life. 
+			The media hub is releasing
+			<<if $activeSlave.pornFameSpending  < 500>>
+				minimal
+			<</if>> highlights of her sex life.
 			<<if $activeSlave.pornFameSpending == 0>>
-				[[Begin publicizing?|Slave Interact][$activeSlave.pornFameSpending += 1000]]  
+				[[Begin publicizing?|Slave Interact][$activeSlave.pornFameSpending += 1000]]
 				//Will cost <<print cashFormat(1000)>> weekly.//
 			<<else>>
 				<<print cashFormat($activeSlave.pornFameSpending)>> weekly is spent to publicize them.
@@ -1431,7 +1431,7 @@ Relationship rules: ''<span id="relationshipRules">$activeSlave.relationshipRule
 <</if>>
 
 /*| [[Upload her|Upload Slave]]*/
-| [[Export this slave|Export Slave]] 
+| [[Export this slave|Export Slave]]
 <<if $cheatMode>>
 	| [[Import a slave|Import Slave]]
 <</if>>
diff --git a/src/uncategorized/slaveSummary.tw b/src/uncategorized/slaveSummary.tw
index 34c7638ce6e245331f084673595f781254796c03..dff36a042b07a77f41f03c1ca037bc0bd8b257ab 100644
--- a/src/uncategorized/slaveSummary.tw
+++ b/src/uncategorized/slaveSummary.tw
@@ -313,7 +313,7 @@
 	<<elseif (_Slave.indentureRestrictions > 1) && ($dairyRestraintsSetting > 0)>>
 		<br>//_Slave.slaveName's indenture allows only free range milking.//
 		<<continue>>
-	<<elseif _Slave.breedingMark == 1 && $dairyRestriantsSettings > 0>>
+	<<elseif _Slave.breedingMark == 1 && $dairyRestraintsSetting > 0>>
 		<br>//_Slave.slaveName may only be a free range cow//
 		<<continue>>
 	<<elseif ($dairyPregSetting > 0) && ((_Slave.bellyImplant != -1) || (_Slave.broodmother != 0))>>
@@ -641,7 +641,7 @@ will
 		<<set _dairySeed = $bioreactorsXY+$bioreactorsXX+$bioreactorsHerm+$bioreactorsBarren>>
 		<<if $dairy <= $dairySlaves+_dairySeed>>
 			Dairy
-		<<elseif (((_Slave.indentureRestrictions > 0) && ($dairyRestraintsSetting > 1)) || ((_Slave.indentureRestrictions > 1) && ($dairyRestraintsSetting > 0)) || (_Slave.breedingMark == 1 && $dairyRestriantsSettings > 0) || (($dairyPregSetting > 0) && ((_Slave.bellyImplant != -1) || (_Slave.broodmother > 0))))>>
+		<<elseif (((_Slave.indentureRestrictions > 0) && ($dairyRestraintsSetting > 1)) || ((_Slave.indentureRestrictions > 1) && ($dairyRestraintsSetting > 0)) || (_Slave.breedingMark == 1 && $dairyRestraintsSetting > 0) || (($dairyPregSetting > 0) && ((_Slave.bellyImplant != -1) || (_Slave.broodmother > 0))))>>
 			Dairy
 		<<elseif ((_Slave.lactation > 0) || (_Slave.balls > 0)) || (($dairyFeedersUpgrade == 1) && ($dairyFeedersSetting > 0) && ($dairySlimMaintainUpgrade == 0))>>
 			 [[Dairy|Assign][$assignTo = "Dairy", $i = _ssi]] /* $i = -1 tells Assign to use _Slave as-is */
diff --git a/src/utility/raWidgets.tw b/src/utility/raWidgets.tw
index d095fa01e3d72a8691b8a8e01dd3fe0a1c6a7d04..085bed1d81bf21391fe09f8d0c2ed910863c819d 100644
--- a/src/utility/raWidgets.tw
+++ b/src/utility/raWidgets.tw
@@ -2339,7 +2339,7 @@ Your brand design is ''$brandDesign.''
 		''fixed.''
 	<<else>>
 		''no default setting.''
-		
+
 	<</if>>
 
 	<br>
@@ -2970,7 +2970,7 @@ Your brand design is ''$brandDesign.''
 	<<switch _currentRule.setAssignment>>
 	<<case "no default setting">>
 		<<run delete _currentRule.setAssignment>>
-	
+
 	<<case "rest" "please you">>
 		/% slaves always qualify for this assignment %/
 
@@ -3026,7 +3026,7 @@ Your brand design is ''$brandDesign.''
 	<<case "work in the dairy">>
 		<<if ($dairy > $dairySlaves+$bioreactorsXY+$bioreactorsXX+$bioreactorsHerm+$bioreactorsBarren)>>
 			<<if ($args[0].indentureRestrictions > 0) && ($dairyRestraintsSetting > 1)>>
-			<<elseif (($args[0].indentureRestrictions > 1) && ($dairyRestraintsSetting > 0)) || ($args[0].breedingMark == 1 && $dairyRestriantsSettings > 0) || (($dairyPregSetting > 0) && (($args[0].bellyImplant != -1) || ($args[0].broodmother != 0)))>>
+			<<elseif (($args[0].indentureRestrictions > 1) && ($dairyRestraintsSetting > 0)) || ($args[0].breedingMark == 1 && $dairyRestraintsSetting > 0) || (($dairyPregSetting > 0) && (($args[0].bellyImplant != -1) || ($args[0].broodmother != 0)))>>
 			<<else>>
 				<<if ($args[0].lactation > 0 || (($dairySlimMaintainUpgrade == 0 || $dairySlimMaintain == 0) && ($args[0].boobs > 300 || $args[0].dick == 0 || $dairyImplantsSetting == 1) && $dairyImplantsSetting != 2)) || ($args[0].balls > 0)>>
 					<<if ($args[0].devotion > 20) || (($args[0].devotion >= -50) && ($args[0].trust < -20)) || ($args[0].trust < -50) || ($args[0].amp == 1) || ($dairyRestraintsUpgrade == 1)>>